From f19816aeb91a5d31cb07fc7fb0f4419e2aad90be Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 29 Oct 2010 21:38:26 +0100 Subject: [PATCH 01/27] Add number of ms it takes to complete UseCircuitCode packet handling to log for diagnostics --- OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index cb298fdad0..161e8c2bbf 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -615,8 +615,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP // UseCircuitCode handling if (packet.Type == PacketType.UseCircuitCode) - { - m_log.Debug("[LLUDPSERVER]: Handling UseCircuitCode packet from " + buffer.RemoteEndPoint); + { object[] array = new object[] { buffer, packet }; if (m_asyncPacketHandling) @@ -827,9 +826,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP private void HandleUseCircuitCode(object o) { + DateTime startTime = DateTime.Now; object[] array = (object[])o; UDPPacketBuffer buffer = (UDPPacketBuffer)array[0]; UseCircuitCodePacket packet = (UseCircuitCodePacket)array[1]; + + m_log.DebugFormat("[LLUDPSERVER]: Handling UseCircuitCode request from {0}", buffer.RemoteEndPoint); IPEndPoint remoteEndPoint = (IPEndPoint)buffer.RemoteEndPoint; @@ -838,6 +840,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Acknowledge the UseCircuitCode packet SendAckImmediate(remoteEndPoint, packet.Header.Sequence); + + m_log.DebugFormat( + "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms", + buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds); } private void SendAckImmediate(IPEndPoint remoteEndpoint, uint sequenceNumber) From bcd784b3167d3be18ad803e89ae0e4afa74da068 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 29 Oct 2010 21:49:26 +0100 Subject: [PATCH 02/27] for now, comment out some older or redundant log debug lines to make diagnostics easier --- .../ServiceConnectorsOut/GridUser/ActivityDetector.cs | 4 ++-- .../ServiceConnectorsOut/Presence/PresenceDetector.cs | 4 ++-- OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs | 2 +- OpenSim/Services/PresenceService/PresenceService.cs | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/ActivityDetector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/ActivityDetector.cs index a64f785d6d..65438456b9 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/ActivityDetector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/ActivityDetector.cs @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * @@ -65,7 +65,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.GridUser public void OnMakeRootAgent(ScenePresence sp) { - m_log.DebugFormat("[ACTIVITY DETECTOR]: Detected root presence {0} in {1}", sp.UUID, sp.Scene.RegionInfo.RegionName); +// m_log.DebugFormat("[ACTIVITY DETECTOR]: Detected root presence {0} in {1}", sp.UUID, sp.Scene.RegionInfo.RegionName); m_GridUserService.SetLastPosition(sp.UUID.ToString(), UUID.Zero, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat); } diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs index 62b8278b22..fa5b8737b3 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * @@ -71,7 +71,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence public void OnMakeRootAgent(ScenePresence sp) { - m_log.DebugFormat("[PRESENCE DETECTOR]: Detected root presence {0} in {1}", sp.UUID, sp.Scene.RegionInfo.RegionName); +// m_log.DebugFormat("[PRESENCE DETECTOR]: Detected root presence {0} in {1}", sp.UUID, sp.Scene.RegionInfo.RegionName); m_PresenceService.ReportAgent(sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID); } diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index a182eeae7d..3e478b06c9 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs @@ -324,7 +324,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap if (threadrunning) return; threadrunning = true; - m_log.Debug("[WORLD MAP]: Starting remote MapItem request thread"); +// m_log.Debug("[WORLD MAP]: Starting remote MapItem request thread"); Watchdog.StartThread(process, "MapItemRequestThread", ThreadPriority.BelowNormal, true); } diff --git a/OpenSim/Services/PresenceService/PresenceService.cs b/OpenSim/Services/PresenceService/PresenceService.cs index 976153fd56..09c31c321b 100644 --- a/OpenSim/Services/PresenceService/PresenceService.cs +++ b/OpenSim/Services/PresenceService/PresenceService.cs @@ -88,7 +88,7 @@ namespace OpenSim.Services.PresenceService public bool ReportAgent(UUID sessionID, UUID regionID) { - m_log.DebugFormat("[PRESENCE SERVICE]: ReportAgent with session {0} in region {1}", sessionID, regionID); +// m_log.DebugFormat("[PRESENCE SERVICE]: ReportAgent with session {0} in region {1}", sessionID, regionID); try { PresenceData pdata = m_Database.Get(sessionID); From 25e19ba7e9ff4a080728178babe4fb1ef33b8d5d Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 29 Oct 2010 23:03:11 +0100 Subject: [PATCH 03/27] add timing report to CompleteScenePresence for diagnostic purposes --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 13d99643bf..03aa8cfe18 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -1085,7 +1085,11 @@ namespace OpenSim.Region.Framework.Scenes /// public void CompleteMovement(IClientAPI client) { - //m_log.Debug("[SCENE PRESENCE]: CompleteMovement"); + DateTime startTime = DateTime.Now; + + m_log.DebugFormat( + "[SCENE PRESENCE]: Completing movement of {0} into region {1}", + client.Name, Scene.RegionInfo.RegionName); Vector3 look = Velocity; if ((look.X == 0) && (look.Y == 0) && (look.Z == 0)) @@ -1134,6 +1138,9 @@ namespace OpenSim.Region.Framework.Scenes friendsModule.SendFriendsOnlineIfNeeded(ControllingClient); } + m_log.DebugFormat( + "[SCENE PRESENCE]: Completing movement of {0} into region {1} took {2}ms", + client.Name, Scene.RegionInfo.RegionName, (DateTime.Now - startTime).Milliseconds); } /// From e66ec432afccb90ae400041e2428b26ad108d373 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 29 Oct 2010 23:45:10 +0100 Subject: [PATCH 04/27] Rationalize the logging messages from the merged appearance branch, commenting out most of them as per Mic --- OpenSim/Framework/AvatarAppearance.cs | 35 ++++++-------- OpenSim/Framework/Capabilities/Caps.cs | 4 +- .../AvatarFactory/AvatarFactoryModule.cs | 47 +++++++------------ .../Region/Framework/Scenes/ScenePresence.cs | 10 ++-- 4 files changed, 39 insertions(+), 57 deletions(-) diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index a4bb7654e2..9494410a45 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -329,9 +329,8 @@ namespace OpenSim.Framework public AvatarAppearance(UUID owner) { -// DEBUG ON - m_log.WarnFormat("[AVATAR APPEARANCE] create empty appearance for {0}",owner); -// DEBUG OFF +// m_log.WarnFormat("[AVATAR APPEARANCE]: create empty appearance for {0}",owner); + m_serial = 1; m_owner = owner; @@ -345,9 +344,8 @@ namespace OpenSim.Framework public AvatarAppearance(UUID avatarID, OSDMap map) { -// DEBUG ON - m_log.WarnFormat("[AVATAR APPEARANCE] create appearance for {0} from OSDMap",avatarID); -// DEBUG OFF +// m_log.WarnFormat("[AVATAR APPEARANCE]: create appearance for {0} from OSDMap",avatarID); + m_owner = avatarID; Unpack(map); SetHeight(); @@ -355,9 +353,8 @@ namespace OpenSim.Framework public AvatarAppearance(UUID avatarID, AvatarWearable[] wearables, Primitive.TextureEntry textureEntry, byte[] visualParams) { -// DEBUG ON - m_log.WarnFormat("[AVATAR APPEARANCE] create initialized appearance for {0}",avatarID); -// DEBUG OFF +// m_log.WarnFormat("[AVATAR APPEARANCE] create initialized appearance for {0}",avatarID); + m_serial = 1; m_owner = avatarID; @@ -383,9 +380,8 @@ namespace OpenSim.Framework public AvatarAppearance(AvatarAppearance appearance) { -// DEBUG ON - m_log.WarnFormat("[AVATAR APPEARANCE] create from an existing appearance"); -// DEBUG OFF +// m_log.WarnFormat("[AVATAR APPEARANCE] create from an existing appearance"); + if (appearance == null) { m_serial = 1; @@ -479,10 +475,9 @@ namespace OpenSim.Framework } changed = true; -// DEBUG ON - if (newface != null) - m_log.WarnFormat("[AVATAR APPEARANCE] index {0}, new texture id {1}",i,newface.TextureID); -// DEBUG OFF + +// if (newface != null) +// m_log.WarnFormat("[AVATAR APPEARANCE]: index {0}, new texture id {1}",i,newface.TextureID); } m_texture = textureEntry; @@ -742,7 +737,7 @@ namespace OpenSim.Framework } else { - m_log.Warn("[AVATARAPPEARANCE] failed to unpack wearables"); + m_log.Warn("[AVATAR APPEARANCE]: failed to unpack wearables"); } // Avatar Textures @@ -760,7 +755,7 @@ namespace OpenSim.Framework } else { - m_log.Warn("[AVATARAPPEARANCE] failed to unpack textures"); + m_log.Warn("[AVATAR APPEARANCE]: failed to unpack textures"); } // Visual Parameters @@ -772,7 +767,7 @@ namespace OpenSim.Framework } else { - m_log.Warn("[AVATARAPPEARANCE] failed to unpack visual parameters"); + m_log.Warn("[AVATAR APPEARANCE]: failed to unpack visual parameters"); } // Attachments @@ -786,7 +781,7 @@ namespace OpenSim.Framework } catch (Exception e) { - m_log.ErrorFormat("[AVATARAPPEARANCE] unpack failed badly: {0}",e.Message); + m_log.ErrorFormat("[AVATAR APPEARANCE]: unpack failed badly: {0}{1}", e.Message, e.StackTrace); } } diff --git a/OpenSim/Framework/Capabilities/Caps.cs b/OpenSim/Framework/Capabilities/Caps.cs index 872de9a082..7b0e053c26 100644 --- a/OpenSim/Framework/Capabilities/Caps.cs +++ b/OpenSim/Framework/Capabilities/Caps.cs @@ -988,9 +988,7 @@ namespace OpenSim.Framework.Capabilities public void BakedTextureUploaded(UUID assetID, byte[] data) { -// DEBUG ON - m_log.WarnFormat("[CAPS]: Received baked texture {0}", assetID.ToString()); -// DEBUG OFF +// m_log.WarnFormat("[CAPS]: Received baked texture {0}", assetID.ToString()); AssetBase asset; asset = new AssetBase(assetID, "Baked Texture", (sbyte)AssetType.Texture, m_agentID.ToString()); asset.Data = data; diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index bfbbcf84f1..e2755c8c6f 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -117,7 +117,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory ScenePresence sp = m_scene.GetScenePresence(client.AgentId); if (sp == null) { - m_log.WarnFormat("[AVFACTORY] SetAppearance unable to find presence for {0}",client.AgentId); + m_log.WarnFormat("[AVATAR FACTORY MODULE]: SetAppearance unable to find presence for {0}", client.AgentId); return false; } @@ -147,14 +147,12 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory /// public void SetAppearance(IClientAPI client, Primitive.TextureEntry textureEntry, byte[] visualParams) { -// DEBUG ON - m_log.WarnFormat("[AVFACTORY] SetAppearance for {0}",client.AgentId); -// DEBUG OFF +// m_log.WarnFormat("[AVATAR FACTORY MODULE]: SetAppearance for {0}",client.AgentId); ScenePresence sp = m_scene.GetScenePresence(client.AgentId); if (sp == null) { - m_log.WarnFormat("[AVFACTORY] SetAppearance unable to find presence for {0}",client.AgentId); + m_log.WarnFormat("[AVATAR FACTORY MODULE]: SetAppearance unable to find presence for {0}",client.AgentId); return; } @@ -212,8 +210,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory { if (m_scene.AssetService.Get(textureID.ToString()) == null) { - m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}", - textureID,idx,client.Name); + m_log.WarnFormat("[AVATAR FACTORY MODULE]: Missing baked texture {0} ({1}) for avatar {2}", + textureID, idx, client.Name); return false; } return true; @@ -223,9 +221,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory public void QueueAppearanceSend(UUID agentid) { -// DEBUG ON - m_log.WarnFormat("[AVFACTORY] Queue appearance send for {0}",agentid); -// DEBUG OFF +// m_log.WarnFormat("[AVATAR FACTORY MODULE]: Queue appearance send for {0}",agentid); // 100 nanoseconds (ticks) we should wait long timestamp = DateTime.Now.Ticks + Convert.ToInt64(m_sendtime * 10000000); @@ -238,9 +234,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory public void QueueAppearanceSave(UUID agentid) { -// DEBUG ON - m_log.WarnFormat("[AVFACTORY] Queue appearance save for {0}",agentid); -// DEBUG OFF +// m_log.WarnFormat("[AVATAR FACTORY MODULE]: Queue appearance save for {0}",agentid); // 100 nanoseconds (ticks) we should wait long timestamp = DateTime.Now.Ticks + Convert.ToInt64(m_savetime * 10000000); @@ -256,13 +250,11 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory ScenePresence sp = m_scene.GetScenePresence(agentid); if (sp == null) { - m_log.WarnFormat("[AVFACTORY] Agent {0} no longer in the scene",agentid); + m_log.WarnFormat("[AVATAR FACTORY MODULE]: Agent {0} no longer in the scene", agentid); return; } -// DEBUG ON - m_log.WarnFormat("[AVFACTORY] Handle appearance send for {0}",agentid); -// DEBUG OFF +// m_log.WarnFormat("[AVATAR FACTORY MODULE]: Handle appearance send for {0}", agentid); // Send the appearance to everyone in the scene sp.SendAppearanceToAllOtherAgents(); @@ -288,7 +280,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory ScenePresence sp = m_scene.GetScenePresence(agentid); if (sp == null) { - m_log.WarnFormat("[AVFACTORY] Agent {0} no longer in the scene",agentid); + m_log.WarnFormat("[AVATAR FACTORY MODULE]: Agent {0} no longer in the scene", agentid); return; } @@ -339,13 +331,12 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory ScenePresence sp = m_scene.GetScenePresence(client.AgentId); if (sp == null) { - m_log.WarnFormat("[AVFACTORY] SendWearables unable to find presence for {0}",client.AgentId); + m_log.WarnFormat("[AVATAR FACTORY MODULE]: SendWearables unable to find presence for {0}", client.AgentId); return; } - -// DEBUG ON - m_log.WarnFormat("[AVFACTORY]: Received request for wearables of {0}", client.AgentId); -// DEBUG OFF + +// m_log.WarnFormat("[AVATAR FACTORY MODULE]: Received request for wearables of {0}", client.AgentId); + client.SendWearables(sp.Appearance.Wearables,sp.Appearance.Serial++); } @@ -359,13 +350,11 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory ScenePresence sp = m_scene.GetScenePresence(client.AgentId); if (sp == null) { - m_log.WarnFormat("[AVFACTORY] AvatarIsWearing unable to find presence for {0}",client.AgentId); + m_log.WarnFormat("[AVATAR FACTORY MODULE]: AvatarIsWearing unable to find presence for {0}", client.AgentId); return; } -// DEBUG ON - m_log.WarnFormat("[AVFACTORY]: AvatarIsWearing called for {0}",client.AgentId); -// DEBUG OFF +// m_log.WarnFormat("[AVATAR FACTORY MODULE]: AvatarIsWearing called for {0}",client.AgentId); AvatarAppearance avatAppearance = new AvatarAppearance(sp.Appearance); @@ -409,7 +398,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory else { m_log.ErrorFormat( - "[AVFACTORY]: Can't find inventory item {0} for {1}, setting to default", + "[AVATAR FACTORY MODULE]: Can't find inventory item {0} for {1}, setting to default", appearance.Wearables[i].ItemID, (WearableType)i); appearance.Wearables[i].ItemID = UUID.Zero; @@ -420,7 +409,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory } else { - m_log.WarnFormat("[AVFACTORY]: user {0} has no inventory, appearance isn't going to work", userID); + m_log.WarnFormat("[AVATAR FACTORY MODULE]: user {0} has no inventory, appearance isn't going to work", userID); } } } diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 1fc3ed6122..29cf0e5d6c 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -2393,13 +2393,13 @@ namespace OpenSim.Region.Framework.Scenes if (LocalId == remoteAvatar.LocalId) { - m_log.WarnFormat("[SP] An agent is attempting to send data to itself; {0}",UUID); + m_log.WarnFormat("[SCENEPRESENCE]: An agent is attempting to send data to itself; {0}", UUID); return; } if (IsChildAgent) { - m_log.WarnFormat("[SCENEPRESENCE] A child agent is attempting to send out avatar data"); + m_log.WarnFormat("[SCENEPRESENCE]: A child agent is attempting to send out avatar data; {0}", UUID); return; } @@ -2482,14 +2482,14 @@ namespace OpenSim.Region.Framework.Scenes { if (m_scene.AvatarFactory.ValidateBakedTextureCache(m_controllingClient)) { - m_log.WarnFormat("[SP] baked textures are in the ache for {0}",Name); +// m_log.WarnFormat("[SCENEPRESENCE]: baked textures are in the cache for {0}", Name); m_controllingClient.SendAppearance( m_appearance.Owner,m_appearance.VisualParams,m_appearance.Texture.GetBytes()); } } else { - m_log.WarnFormat("[SP] AvatarFactory not set"); + m_log.WarnFormat("[SCENEPRESENCE]: AvatarFactory not set for {0}", Name); } SendInitialFullUpdateToAllClients(); @@ -2501,7 +2501,7 @@ namespace OpenSim.Region.Framework.Scenes public void SendAppearanceToAllOtherAgents() { // DEBUG ON - m_log.WarnFormat("[SP] Send appearance from {0} to all other agents",m_uuid); +// m_log.WarnFormat("[SCENEPRESENCE]: Send appearance from {0} to all other agents", m_uuid); // DEBUG OFF m_perfMonMS = Util.EnvironmentTickCount(); From 09705514ff7068f1c1b32a979cde1ae3654d9065 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 29 Oct 2010 23:52:25 +0100 Subject: [PATCH 05/27] tweak a few more scene presence logging messages for consistency --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 29cf0e5d6c..52e74621dd 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -2384,7 +2384,7 @@ namespace OpenSim.Region.Framework.Scenes if (remoteAvatar == null) return; - IClientAPI cl=remoteAvatar.ControllingClient; + IClientAPI cl = remoteAvatar.ControllingClient; if (cl == null) return; @@ -2393,7 +2393,7 @@ namespace OpenSim.Region.Framework.Scenes if (LocalId == remoteAvatar.LocalId) { - m_log.WarnFormat("[SCENEPRESENCE]: An agent is attempting to send data to itself; {0}", UUID); + m_log.WarnFormat("[SCENEPRESENCE]: An agent is attempting to send avatar data to itself; {0}", UUID); return; } @@ -2524,7 +2524,7 @@ namespace OpenSim.Region.Framework.Scenes { if (LocalId == avatar.LocalId) { - m_log.WarnFormat("[SP] An agent is attempting to send data to itself; {0}",UUID); + m_log.WarnFormat("[SCENE PRESENCE]: An agent is attempting to send appearance data to itself; {0}", UUID); return; } From 818ed2032aa4e6c0a9ede3598d64f0c7960135c4 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sat, 30 Oct 2010 00:41:36 +0100 Subject: [PATCH 06/27] READ CAREFULLY!!! This is a BROKEN commit. It is UNTESTED and INCOMPLETE. It contains a major interface version bump and will NOT work with earlier grid services. This is preliminary work that will lead to layers support. Rest appearance services are commented out completely, they will have to be adapted by someone who actually uses them. Remote admin is working, but has no layers support. There is no layers support in the database. Login likely won't work. You have been warned. --- .../RemoteController/RemoteAdminPlugin.cs | 18 +- .../Rest/Inventory/RestAppearanceServices.cs | 5 +- OpenSim/Framework/AgentCircuitData.cs | 51 ---- OpenSim/Framework/AvatarAppearance.cs | 241 +----------------- OpenSim/Framework/AvatarWearable.cs | 157 ++++++++++-- OpenSim/Framework/ChildAgentDataUpdate.cs | 10 +- OpenSim/Framework/Servers/VersionInfo.cs | 2 +- .../ClientStack/LindenUDP/LLClientView.cs | 21 +- .../AvatarFactory/AvatarFactoryModule.cs | 15 +- .../SimianAvatarServiceConnector.cs | 53 ++-- OpenSim/Services/Interfaces/IAvatarService.cs | 128 ++++++---- 11 files changed, 280 insertions(+), 421 deletions(-) diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 1829c8d47e..72ac3039d1 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -1510,11 +1510,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController for (int i=0; i 0)) - { - OSDArray wears = new OSDArray(Appearance.Wearables.Length * 2); - foreach (AvatarWearable awear in Appearance.Wearables) - { - wears.Add(OSD.FromUUID(awear.ItemID)); - wears.Add(OSD.FromUUID(awear.AssetID)); - //System.Console.WriteLine("XXX ItemID=" + awear.ItemID + " assetID=" + awear.AssetID); - } - args["wearables"] = wears; - } - - //System.Console.WriteLine("XXX Before packing Attachments"); - List attachments = Appearance.GetAttachments(); - if ((attachments != null) && (attachments.Count > 0)) - { - OSDArray attachs = new OSDArray(attachments.Count); - foreach (AvatarAttachment attach in attachments) - { - attachs.Add(attach.Pack()); - //System.Console.WriteLine("XXX att.pt=" + kvp.Key + "; itemID=" + kvp.Value[0] + "; assetID=" + kvp.Value[1]); - } - args["attachments"] = attachs; - } - } - - if (Appearance != null) - { OSDMap appmap = Appearance.Pack(); args["packed_appearance"] = appmap; } @@ -346,28 +317,6 @@ namespace OpenSim.Framework if (args["appearance_serial"] != null) Appearance.Serial = args["appearance_serial"].AsInteger(); - if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array) - { - OSDArray wears = (OSDArray)(args["wearables"]); - for (int i = 0; i < wears.Count / 2; i++) - { - AvatarWearable awear = new AvatarWearable(wears[i*2].AsUUID(),wears[(i*2)+1].AsUUID()); - Appearance.SetWearable(i,awear); - } - } - - if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) - { - OSDArray attachs = (OSDArray)(args["attachments"]); - foreach (OSD o in attachs) - { - if (o.Type == OSDType.Map) - { - Appearance.AppendAttachment(new AvatarAttachment((OSDMap)o)); - } - } - } - if (args.ContainsKey("packed_appearance") && (args["packed_appearance"].Type == OSDType.Map)) { Appearance.Unpack((OSDMap)args["packed_appearance"]); diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index a4bb7654e2..f378e9681d 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -35,104 +35,6 @@ using log4net; namespace OpenSim.Framework { - // A special dictionary for avatar appearance - public struct LayerItem - { - public UUID ItemID; - public UUID AssetID; - - public LayerItem(UUID itemID, UUID assetID) - { - ItemID = itemID; - AssetID = assetID; - } - } - - public class Layer - { - protected int m_layerType; - protected Dictionary m_items = new Dictionary(); - protected List m_ids = new List(); - - public Layer(int type) - { - m_layerType = type; - } - - public int LayerType - { - get { return m_layerType; } - } - - public int Count - { - get { return m_ids.Count; } - } - - public void Add(UUID itemID, UUID assetID) - { - if (m_items.ContainsKey(itemID)) - return; - if (m_ids.Count >= 5) - return; - - m_ids.Add(itemID); - m_items[itemID] = assetID; - } - - public void Wear(UUID itemID, UUID assetID) - { - Clear(); - Add(itemID, assetID); - } - - public void Clear() - { - m_ids.Clear(); - m_items.Clear(); - } - - public void RemoveItem(UUID itemID) - { - if (m_items.ContainsKey(itemID)) - { - m_ids.Remove(itemID); - m_items.Remove(itemID); - } - } - - public void RemoveAsset(UUID assetID) - { - UUID itemID = UUID.Zero; - - foreach (KeyValuePair kvp in m_items) - { - if (kvp.Value == assetID) - { - itemID = kvp.Key; - break; - } - } - - if (itemID != UUID.Zero) - { - m_ids.Remove(itemID); - m_items.Remove(itemID); - } - } - - public LayerItem this [int idx] - { - get - { - if (idx >= m_ids.Count || idx < 0) - return new LayerItem(UUID.Zero, UUID.Zero); - - return new LayerItem(m_ids[idx], m_items[m_ids[idx]]); - } - } - } - /// /// Contains the Avatar's Appearance and methods to manipulate the appearance. /// @@ -184,136 +86,6 @@ namespace OpenSim.Framework set { m_wearables = value; } } - public virtual UUID BodyItem { - get { return m_wearables[AvatarWearable.BODY].ItemID; } - set { m_wearables[AvatarWearable.BODY].ItemID = value; } - } - - public virtual UUID BodyAsset { - get { return m_wearables[AvatarWearable.BODY].AssetID; } - set { m_wearables[AvatarWearable.BODY].AssetID = value; } - } - - public virtual UUID SkinItem { - get { return m_wearables[AvatarWearable.SKIN].ItemID; } - set { m_wearables[AvatarWearable.SKIN].ItemID = value; } - } - - public virtual UUID SkinAsset { - get { return m_wearables[AvatarWearable.SKIN].AssetID; } - set { m_wearables[AvatarWearable.SKIN].AssetID = value; } - } - - public virtual UUID HairItem { - get { return m_wearables[AvatarWearable.HAIR].ItemID; } - set { m_wearables[AvatarWearable.HAIR].ItemID = value; } - } - - public virtual UUID HairAsset { - get { return m_wearables[AvatarWearable.HAIR].AssetID; } - set { m_wearables[AvatarWearable.HAIR].AssetID = value; } - } - - public virtual UUID EyesItem { - get { return m_wearables[AvatarWearable.EYES].ItemID; } - set { m_wearables[AvatarWearable.EYES].ItemID = value; } - } - - public virtual UUID EyesAsset { - get { return m_wearables[AvatarWearable.EYES].AssetID; } - set { m_wearables[AvatarWearable.EYES].AssetID = value; } - } - - public virtual UUID ShirtItem { - get { return m_wearables[AvatarWearable.SHIRT].ItemID; } - set { m_wearables[AvatarWearable.SHIRT].ItemID = value; } - } - - public virtual UUID ShirtAsset { - get { return m_wearables[AvatarWearable.SHIRT].AssetID; } - set { m_wearables[AvatarWearable.SHIRT].AssetID = value; } - } - - public virtual UUID PantsItem { - get { return m_wearables[AvatarWearable.PANTS].ItemID; } - set { m_wearables[AvatarWearable.PANTS].ItemID = value; } - } - - public virtual UUID PantsAsset { - get { return m_wearables[AvatarWearable.PANTS].AssetID; } - set { m_wearables[AvatarWearable.PANTS].AssetID = value; } - } - - public virtual UUID ShoesItem { - get { return m_wearables[AvatarWearable.SHOES].ItemID; } - set { m_wearables[AvatarWearable.SHOES].ItemID = value; } - } - - public virtual UUID ShoesAsset { - get { return m_wearables[AvatarWearable.SHOES].AssetID; } - set { m_wearables[AvatarWearable.SHOES].AssetID = value; } - } - - public virtual UUID SocksItem { - get { return m_wearables[AvatarWearable.SOCKS].ItemID; } - set { m_wearables[AvatarWearable.SOCKS].ItemID = value; } - } - - public virtual UUID SocksAsset { - get { return m_wearables[AvatarWearable.SOCKS].AssetID; } - set { m_wearables[AvatarWearable.SOCKS].AssetID = value; } - } - - public virtual UUID JacketItem { - get { return m_wearables[AvatarWearable.JACKET].ItemID; } - set { m_wearables[AvatarWearable.JACKET].ItemID = value; } - } - - public virtual UUID JacketAsset { - get { return m_wearables[AvatarWearable.JACKET].AssetID; } - set { m_wearables[AvatarWearable.JACKET].AssetID = value; } - } - - public virtual UUID GlovesItem { - get { return m_wearables[AvatarWearable.GLOVES].ItemID; } - set { m_wearables[AvatarWearable.GLOVES].ItemID = value; } - } - - public virtual UUID GlovesAsset { - get { return m_wearables[AvatarWearable.GLOVES].AssetID; } - set { m_wearables[AvatarWearable.GLOVES].AssetID = value; } - } - - public virtual UUID UnderShirtItem { - get { return m_wearables[AvatarWearable.UNDERSHIRT].ItemID; } - set { m_wearables[AvatarWearable.UNDERSHIRT].ItemID = value; } - } - - public virtual UUID UnderShirtAsset { - get { return m_wearables[AvatarWearable.UNDERSHIRT].AssetID; } - set { m_wearables[AvatarWearable.UNDERSHIRT].AssetID = value; } - } - - public virtual UUID UnderPantsItem { - get { return m_wearables[AvatarWearable.UNDERPANTS].ItemID; } - set { m_wearables[AvatarWearable.UNDERPANTS].ItemID = value; } - } - - public virtual UUID UnderPantsAsset { - get { return m_wearables[AvatarWearable.UNDERPANTS].AssetID; } - set { m_wearables[AvatarWearable.UNDERPANTS].AssetID = value; } - } - - public virtual UUID SkirtItem { - get { return m_wearables[AvatarWearable.SKIRT].ItemID; } - set { m_wearables[AvatarWearable.SKIRT].ItemID = value; } - } - - public virtual UUID SkirtAsset { - get { return m_wearables[AvatarWearable.SKIRT].AssetID; } - set { m_wearables[AvatarWearable.SKIRT].AssetID = value; } - } - public virtual float AvatarHeight { get { return m_avatarHeight; } @@ -407,7 +179,7 @@ namespace OpenSim.Framework m_wearables = null; if (appearance.Wearables != null) { - m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; //should be 13 of these + m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; //should be 15 of these for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) SetWearable(i,appearance.Wearables[i]); } @@ -552,7 +324,9 @@ namespace OpenSim.Framework // DEBUG ON // m_log.WarnFormat("[AVATARAPPEARANCE] set wearable {0} --> {1}:{2}",wearableId,wearable.ItemID,wearable.AssetID); // DEBUG OFF - m_wearables[wearableId] = new AvatarWearable(wearable.ItemID,wearable.AssetID); + m_wearables[wearableId].Clear(); + for (int i = 0 ; i < wearable.Count ; i++) + m_wearables[wearableId].Add(wearable[i].ItemID, wearable[i].AssetID); } @@ -568,7 +342,10 @@ namespace OpenSim.Framework s += String.Format("Texture: {0} --> {1}\n",i,m_texture.FaceTextures[i].TextureID); foreach (AvatarWearable awear in m_wearables) - s += String.Format("Wearable: item={0}, asset={1}\n",awear.ItemID,awear.AssetID); + { + for ( int i = 0 ; i < awear.Count ; i++ ) + s += String.Format("Wearable: item={0}, asset={1}\n",awear[i].ItemID,awear[i].AssetID); + } s += "Visual Params: "; for (uint j = 0; j < AvatarAppearance.VISUALPARAM_COUNT; j++) @@ -738,7 +515,7 @@ namespace OpenSim.Framework { OSDArray wears = (OSDArray)(data["wearables"]); for (int i = 0; i < wears.Count; i++) - m_wearables[i] = new AvatarWearable((OSDMap)wears[i]); + m_wearables[i] = new AvatarWearable((OSDArray)wears[i]); } else { diff --git a/OpenSim/Framework/AvatarWearable.cs b/OpenSim/Framework/AvatarWearable.cs index 87098bf6d0..631971f4e2 100644 --- a/OpenSim/Framework/AvatarWearable.cs +++ b/OpenSim/Framework/AvatarWearable.cs @@ -26,11 +26,24 @@ */ using System; +using System.Collections.Generic; using OpenMetaverse; using OpenMetaverse.StructuredData; namespace OpenSim.Framework { + public struct WearableItem + { + public UUID ItemID; + public UUID AssetID; + + public WearableItem(UUID itemID, UUID assetID) + { + ItemID = itemID; + AssetID = assetID; + } + } + public class AvatarWearable { // these are guessed at by the list here - @@ -49,8 +62,10 @@ namespace OpenSim.Framework public static readonly int UNDERSHIRT = 10; public static readonly int UNDERPANTS = 11; public static readonly int SKIRT = 12; + public static readonly int ALPHA = 13; + public static readonly int TATTOO = 15; - public static readonly int MAX_WEARABLES = 13; + public static readonly int MAX_WEARABLES = 15; public static readonly UUID DEFAULT_BODY_ITEM = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9"); public static readonly UUID DEFAULT_BODY_ASSET = new UUID("66c41e39-38f9-f75a-024e-585989bfab73"); @@ -67,68 +82,158 @@ namespace OpenSim.Framework public static readonly UUID DEFAULT_PANTS_ITEM = new UUID("77c41e39-38f9-f75a-0000-5859892f1111"); public static readonly UUID DEFAULT_PANTS_ASSET = new UUID("00000000-38f9-1111-024e-222222111120"); - public UUID AssetID; - public UUID ItemID; + public static readonly UUID DEFAULT_ALPHA_ITEM = new UUID("bfb9923c-4838-4d2d-bf07-608c5b1165c8"); + public static readonly UUID DEFAULT_ALPHA_ASSET = new UUID("1578a2b1-5179-4b53-b618-fe00ca5a5594"); + + public static readonly UUID DEFAULT_TATTOO_ITEM = new UUID("c47e22bd-3021-4ba4-82aa-2b5cb34d35e1"); + public static readonly UUID DEFAULT_TATTOO_ASSET = new UUID("00000000-0000-2222-3333-100000001007"); + + + protected Dictionary m_items = new Dictionary(); + protected List m_ids = new List(); public AvatarWearable() { } - public AvatarWearable(UUID itemId, UUID assetId) + public AvatarWearable(UUID itemID, UUID assetID) { - AssetID = assetId; - ItemID = itemId; + Wear(itemID, assetID); } - public AvatarWearable(OSDMap args) + public AvatarWearable(OSDArray args) { Unpack(args); } - public OSDMap Pack() + public OSD Pack() { - OSDMap weardata = new OSDMap(); - weardata["item"] = OSD.FromUUID(ItemID); - weardata["asset"] = OSD.FromUUID(AssetID); + OSDArray wearlist = new OSDArray(); - return weardata; + foreach (UUID id in m_ids) + { + OSDMap weardata = new OSDMap(); + weardata["item"] = OSD.FromUUID(id); + weardata["asset"] = OSD.FromUUID(m_items[id]); + wearlist.Add(weardata); + } + + return wearlist; } - public void Unpack(OSDMap args) + public void Unpack(OSDArray args) { - ItemID = (args["item"] != null) ? args["item"].AsUUID() : UUID.Zero; - AssetID = (args["asset"] != null) ? args["asset"].AsUUID() : UUID.Zero; + Clear(); + + foreach (OSDMap weardata in args) + { + Add(weardata["item"].AsUUID(), weardata["asset"].AsUUID()); + } + } + + public int Count + { + get { return m_ids.Count; } + } + + public void Add(UUID itemID, UUID assetID) + { + if (itemID == UUID.Zero) + return; + if (m_items.ContainsKey(itemID)) + { + m_items[itemID] = assetID; + return; + } + if (m_ids.Count >= 5) + return; + + m_ids.Add(itemID); + m_items[itemID] = assetID; + } + + public void Wear(UUID itemID, UUID assetID) + { + Clear(); + Add(itemID, assetID); + } + + public void Clear() + { + m_ids.Clear(); + m_items.Clear(); + } + + public void RemoveItem(UUID itemID) + { + if (m_items.ContainsKey(itemID)) + { + m_ids.Remove(itemID); + m_items.Remove(itemID); + } + } + + public void RemoveAsset(UUID assetID) + { + UUID itemID = UUID.Zero; + + foreach (KeyValuePair kvp in m_items) + { + if (kvp.Value == assetID) + { + itemID = kvp.Key; + break; + } + } + + if (itemID != UUID.Zero) + { + m_ids.Remove(itemID); + m_items.Remove(itemID); + } + } + + public WearableItem this [int idx] + { + get + { + if (idx >= m_ids.Count || idx < 0) + return new WearableItem(UUID.Zero, UUID.Zero); + + return new WearableItem(m_ids[idx], m_items[m_ids[idx]]); + } } public static AvatarWearable[] DefaultWearables { get { - AvatarWearable[] defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 13 of these + AvatarWearable[] defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 15 of these for (int i = 0; i < MAX_WEARABLES; i++) { defaultWearables[i] = new AvatarWearable(); } // Body - defaultWearables[0].ItemID = DEFAULT_BODY_ITEM; - defaultWearables[0].AssetID = DEFAULT_BODY_ASSET; + defaultWearables[BODY].Add(DEFAULT_BODY_ITEM, DEFAULT_BODY_ASSET); // Hair - defaultWearables[2].ItemID = DEFAULT_HAIR_ITEM; - defaultWearables[2].AssetID = DEFAULT_HAIR_ASSET; + defaultWearables[HAIR].Add(DEFAULT_HAIR_ITEM, DEFAULT_HAIR_ASSET); // Skin - defaultWearables[1].ItemID = DEFAULT_SKIN_ITEM; - defaultWearables[1].AssetID = DEFAULT_SKIN_ASSET; + defaultWearables[SKIN].Add(DEFAULT_SKIN_ITEM, DEFAULT_SKIN_ASSET); // Shirt - defaultWearables[4].ItemID = DEFAULT_SHIRT_ITEM; - defaultWearables[4].AssetID = DEFAULT_SHIRT_ASSET; + defaultWearables[SHIRT].Add(DEFAULT_SHIRT_ITEM, DEFAULT_SHIRT_ASSET); // Pants - defaultWearables[5].ItemID = DEFAULT_PANTS_ITEM; - defaultWearables[5].AssetID = DEFAULT_PANTS_ASSET; + defaultWearables[PANTS].Add(DEFAULT_PANTS_ITEM, DEFAULT_PANTS_ASSET); + + // Alpha + defaultWearables[ALPHA].Add(DEFAULT_ALPHA_ITEM, DEFAULT_ALPHA_ASSET); + + // Tattoo + defaultWearables[TATTOO].Add(DEFAULT_TATTOO_ITEM, DEFAULT_TATTOO_ASSET); return defaultWearables; } diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index 66487f72e0..ddfaaed4b0 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs @@ -414,12 +414,10 @@ namespace OpenSim.Framework // We might not pass this in all cases... if ((Appearance.Wearables != null) && (Appearance.Wearables.Length > 0)) { - OSDArray wears = new OSDArray(Appearance.Wearables.Length * 2); + OSDArray wears = new OSDArray(Appearance.Wearables.Length); foreach (AvatarWearable awear in Appearance.Wearables) - { - wears.Add(OSD.FromUUID(awear.ItemID)); - wears.Add(OSD.FromUUID(awear.AssetID)); - } + wears.Add(awear.Pack()); + args["wearables"] = wears; } @@ -592,7 +590,7 @@ namespace OpenSim.Framework OSDArray wears = (OSDArray)(args["wearables"]); for (int i = 0; i < wears.Count / 2; i++) { - AvatarWearable awear = new AvatarWearable(wears[i*2].AsUUID(),wears[(i*2)+1].AsUUID()); + AvatarWearable awear = new AvatarWearable((OSDArray)wears[i]); Appearance.SetWearable(i,awear); } } diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs index c88e0d18ed..c9d4c93d49 100644 --- a/OpenSim/Framework/Servers/VersionInfo.cs +++ b/OpenSim/Framework/Servers/VersionInfo.cs @@ -69,6 +69,6 @@ namespace OpenSim /// of the code that is too old. /// /// - public readonly static int MajorInterfaceVersion = 6; + public readonly static int MajorInterfaceVersion = 7; } } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 14f923dd1f..d7458b7bce 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -3387,20 +3387,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP aw.AgentData.SerialNum = (uint)serial; aw.AgentData.SessionID = m_sessionId; + int count = 0; + for (int i = 0; i < wearables.Length; i++) + count += wearables[i].Count; + // TODO: don't create new blocks if recycling an old packet - aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13]; + aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[count]; AgentWearablesUpdatePacket.WearableDataBlock awb; + int idx = 0; for (int i = 0; i < wearables.Length; i++) { - awb = new AgentWearablesUpdatePacket.WearableDataBlock(); - awb.WearableType = (byte)i; - awb.AssetID = wearables[i].AssetID; - awb.ItemID = wearables[i].ItemID; - aw.WearableData[i] = awb; + for (int j = 0; j < wearables[i].Count; j++) + { + awb = new AgentWearablesUpdatePacket.WearableDataBlock(); + awb.WearableType = (byte)i; + awb.AssetID = wearables[i][j].AssetID; + awb.ItemID = wearables[i][j].ItemID; + aw.WearableData[idx] = awb; + idx++; // m_log.DebugFormat( // "[APPEARANCE]: Sending wearable item/asset {0} {1} (index {2}) for {3}", // awb.ItemID, awb.AssetID, i, Name); + } } OutPacket(aw, ThrottleOutPacketType.Task); diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index bfbbcf84f1..4d27ea43b7 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -393,27 +393,22 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory { for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) { - if (appearance.Wearables[i].ItemID == UUID.Zero) + for (int j = 0 ; j < appearance.Wearables[j].Count ; j ++ ) { - appearance.Wearables[i].AssetID = UUID.Zero; - } - else - { - InventoryItemBase baseItem = new InventoryItemBase(appearance.Wearables[i].ItemID, userID); + InventoryItemBase baseItem = new InventoryItemBase(appearance.Wearables[i][j].ItemID, userID); baseItem = invService.GetItem(baseItem); if (baseItem != null) { - appearance.Wearables[i].AssetID = baseItem.AssetID; + appearance.Wearables[i].Add(appearance.Wearables[i][j].ItemID, baseItem.AssetID); } else { m_log.ErrorFormat( "[AVFACTORY]: Can't find inventory item {0} for {1}, setting to default", - appearance.Wearables[i].ItemID, (WearableType)i); + appearance.Wearables[i][j].ItemID, (WearableType)i); - appearance.Wearables[i].ItemID = UUID.Zero; - appearance.Wearables[i].AssetID = UUID.Zero; + appearance.Wearables[i].RemoveItem(appearance.Wearables[i][j].ItemID); } } } diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs index ea9b4b430d..7a28c2b737 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs @@ -265,32 +265,33 @@ namespace OpenSim.Services.Connectors.SimianGrid map["Height"] = OSD.FromReal(appearance.AvatarHeight); - map["ShapeItem"] = OSD.FromUUID(appearance.BodyItem); - map["ShapeAsset"] = OSD.FromUUID(appearance.BodyAsset); - map["SkinItem"] = OSD.FromUUID(appearance.SkinItem); - map["SkinAsset"] = OSD.FromUUID(appearance.SkinAsset); - map["HairItem"] = OSD.FromUUID(appearance.HairItem); - map["HairAsset"] = OSD.FromUUID(appearance.HairAsset); - map["EyesItem"] = OSD.FromUUID(appearance.EyesItem); - map["EyesAsset"] = OSD.FromUUID(appearance.EyesAsset); - map["ShirtItem"] = OSD.FromUUID(appearance.ShirtItem); - map["ShirtAsset"] = OSD.FromUUID(appearance.ShirtAsset); - map["PantsItem"] = OSD.FromUUID(appearance.PantsItem); - map["PantsAsset"] = OSD.FromUUID(appearance.PantsAsset); - map["ShoesItem"] = OSD.FromUUID(appearance.ShoesItem); - map["ShoesAsset"] = OSD.FromUUID(appearance.ShoesAsset); - map["SocksItem"] = OSD.FromUUID(appearance.SocksItem); - map["SocksAsset"] = OSD.FromUUID(appearance.SocksAsset); - map["JacketItem"] = OSD.FromUUID(appearance.JacketItem); - map["JacketAsset"] = OSD.FromUUID(appearance.JacketAsset); - map["GlovesItem"] = OSD.FromUUID(appearance.GlovesItem); - map["GlovesAsset"] = OSD.FromUUID(appearance.GlovesAsset); - map["UndershirtItem"] = OSD.FromUUID(appearance.UnderShirtItem); - map["UndershirtAsset"] = OSD.FromUUID(appearance.UnderShirtAsset); - map["UnderpantsItem"] = OSD.FromUUID(appearance.UnderPantsItem); - map["UnderpantsAsset"] = OSD.FromUUID(appearance.UnderPantsAsset); - map["SkirtItem"] = OSD.FromUUID(appearance.SkirtItem); - map["SkirtAsset"] = OSD.FromUUID(appearance.SkirtAsset); + map["BodyItem"] = appearance.Wearables[AvatarWearable.BODY][0].ItemID.ToString(); + map["EyesItem"] = appearance.Wearables[AvatarWearable.EYES][0].ItemID.ToString(); + map["GlovesItem"] = appearance.Wearables[AvatarWearable.GLOVES][0].ItemID.ToString(); + map["HairItem"] = appearance.Wearables[AvatarWearable.HAIR][0].ItemID.ToString(); + map["JacketItem"] = appearance.Wearables[AvatarWearable.JACKET][0].ItemID.ToString(); + map["PantsItem"] = appearance.Wearables[AvatarWearable.PANTS][0].ItemID.ToString(); + map["ShirtItem"] = appearance.Wearables[AvatarWearable.SHIRT][0].ItemID.ToString(); + map["ShoesItem"] = appearance.Wearables[AvatarWearable.SHOES][0].ItemID.ToString(); + map["SkinItem"] = appearance.Wearables[AvatarWearable.SKIN][0].ItemID.ToString(); + map["SkirtItem"] = appearance.Wearables[AvatarWearable.SKIRT][0].ItemID.ToString(); + map["SocksItem"] = appearance.Wearables[AvatarWearable.SOCKS][0].ItemID.ToString(); + map["UnderPantsItem"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].ItemID.ToString(); + map["UnderShirtItem"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].ItemID.ToString(); + map["BodyAsset"] = appearance.Wearables[AvatarWearable.BODY][0].AssetID.ToString(); + map["EyesAsset"] = appearance.Wearables[AvatarWearable.EYES][0].AssetID.ToString(); + map["GlovesAsset"] = appearance.Wearables[AvatarWearable.GLOVES][0].AssetID.ToString(); + map["HairAsset"] = appearance.Wearables[AvatarWearable.HAIR][0].AssetID.ToString(); + map["JacketAsset"] = appearance.Wearables[AvatarWearable.JACKET][0].AssetID.ToString(); + map["PantsAsset"] = appearance.Wearables[AvatarWearable.PANTS][0].AssetID.ToString(); + map["ShirtAsset"] = appearance.Wearables[AvatarWearable.SHIRT][0].AssetID.ToString(); + map["ShoesAsset"] = appearance.Wearables[AvatarWearable.SHOES][0].AssetID.ToString(); + map["SkinAsset"] = appearance.Wearables[AvatarWearable.SKIN][0].AssetID.ToString(); + map["SkirtAsset"] = appearance.Wearables[AvatarWearable.SKIRT][0].AssetID.ToString(); + map["SocksAsset"] = appearance.Wearables[AvatarWearable.SOCKS][0].AssetID.ToString(); + map["UnderPantsAsset"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].AssetID.ToString(); + map["UnderShirtAsset"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].AssetID.ToString(); + OSDMap items = new OSDMap(); foreach (KeyValuePair kvp in avatar.Data) diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index eaa653439e..a029fbc619 100644 --- a/OpenSim/Services/Interfaces/IAvatarService.cs +++ b/OpenSim/Services/Interfaces/IAvatarService.cs @@ -149,33 +149,33 @@ namespace OpenSim.Services.Interfaces Data["Serial"] = appearance.Serial.ToString(); // Wearables Data["AvatarHeight"] = appearance.AvatarHeight.ToString(); - Data["BodyItem"] = appearance.BodyItem.ToString(); - Data["EyesItem"] = appearance.EyesItem.ToString(); - Data["GlovesItem"] = appearance.GlovesItem.ToString(); - Data["HairItem"] = appearance.HairItem.ToString(); - Data["JacketItem"] = appearance.JacketItem.ToString(); - Data["PantsItem"] = appearance.PantsItem.ToString(); - Data["ShirtItem"] = appearance.ShirtItem.ToString(); - Data["ShoesItem"] = appearance.ShoesItem.ToString(); - Data["SkinItem"] = appearance.SkinItem.ToString(); - Data["SkirtItem"] = appearance.SkirtItem.ToString(); - Data["SocksItem"] = appearance.SocksItem.ToString(); - Data["UnderPantsItem"] = appearance.UnderPantsItem.ToString(); - Data["UnderShirtItem"] = appearance.UnderShirtItem.ToString(); + Data["BodyItem"] = appearance.Wearables[AvatarWearable.BODY][0].ItemID.ToString(); + Data["EyesItem"] = appearance.Wearables[AvatarWearable.EYES][0].ItemID.ToString(); + Data["GlovesItem"] = appearance.Wearables[AvatarWearable.GLOVES][0].ItemID.ToString(); + Data["HairItem"] = appearance.Wearables[AvatarWearable.HAIR][0].ItemID.ToString(); + Data["JacketItem"] = appearance.Wearables[AvatarWearable.JACKET][0].ItemID.ToString(); + Data["PantsItem"] = appearance.Wearables[AvatarWearable.PANTS][0].ItemID.ToString(); + Data["ShirtItem"] = appearance.Wearables[AvatarWearable.SHIRT][0].ItemID.ToString(); + Data["ShoesItem"] = appearance.Wearables[AvatarWearable.SHOES][0].ItemID.ToString(); + Data["SkinItem"] = appearance.Wearables[AvatarWearable.SKIN][0].ItemID.ToString(); + Data["SkirtItem"] = appearance.Wearables[AvatarWearable.SKIRT][0].ItemID.ToString(); + Data["SocksItem"] = appearance.Wearables[AvatarWearable.SOCKS][0].ItemID.ToString(); + Data["UnderPantsItem"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].ItemID.ToString(); + Data["UnderShirtItem"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].ItemID.ToString(); - Data["BodyAsset"] = appearance.BodyAsset.ToString(); - Data["EyesAsset"] = appearance.EyesAsset.ToString(); - Data["GlovesAsset"] = appearance.GlovesAsset.ToString(); - Data["HairAsset"] = appearance.HairAsset.ToString(); - Data["JacketAsset"] = appearance.JacketAsset.ToString(); - Data["PantsAsset"] = appearance.PantsAsset.ToString(); - Data["ShirtAsset"] = appearance.ShirtAsset.ToString(); - Data["ShoesAsset"] = appearance.ShoesAsset.ToString(); - Data["SkinAsset"] = appearance.SkinAsset.ToString(); - Data["SkirtAsset"] = appearance.SkirtAsset.ToString(); - Data["SocksAsset"] = appearance.SocksAsset.ToString(); - Data["UnderPantsAsset"] = appearance.UnderPantsAsset.ToString(); - Data["UnderShirtAsset"] = appearance.UnderShirtAsset.ToString(); + Data["BodyAsset"] = appearance.Wearables[AvatarWearable.BODY][0].AssetID.ToString(); + Data["EyesAsset"] = appearance.Wearables[AvatarWearable.EYES][0].AssetID.ToString(); + Data["GlovesAsset"] = appearance.Wearables[AvatarWearable.GLOVES][0].AssetID.ToString(); + Data["HairAsset"] = appearance.Wearables[AvatarWearable.HAIR][0].AssetID.ToString(); + Data["JacketAsset"] = appearance.Wearables[AvatarWearable.JACKET][0].AssetID.ToString(); + Data["PantsAsset"] = appearance.Wearables[AvatarWearable.PANTS][0].AssetID.ToString(); + Data["ShirtAsset"] = appearance.Wearables[AvatarWearable.SHIRT][0].AssetID.ToString(); + Data["ShoesAsset"] = appearance.Wearables[AvatarWearable.SHOES][0].AssetID.ToString(); + Data["SkinAsset"] = appearance.Wearables[AvatarWearable.SKIN][0].AssetID.ToString(); + Data["SkirtAsset"] = appearance.Wearables[AvatarWearable.SKIRT][0].AssetID.ToString(); + Data["SocksAsset"] = appearance.Wearables[AvatarWearable.SOCKS][0].AssetID.ToString(); + Data["UnderPantsAsset"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].AssetID.ToString(); + Data["UnderShirtAsset"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].AssetID.ToString(); // Attachments List attachments = appearance.GetAttachments(); @@ -193,33 +193,57 @@ namespace OpenSim.Services.Interfaces appearance.Serial = Int32.Parse(Data["Serial"]); // Wearables - appearance.BodyItem = UUID.Parse(Data["BodyItem"]); - appearance.EyesItem = UUID.Parse(Data["EyesItem"]); - appearance.GlovesItem = UUID.Parse(Data["GlovesItem"]); - appearance.HairItem = UUID.Parse(Data["HairItem"]); - appearance.JacketItem = UUID.Parse(Data["JacketItem"]); - appearance.PantsItem = UUID.Parse(Data["PantsItem"]); - appearance.ShirtItem = UUID.Parse(Data["ShirtItem"]); - appearance.ShoesItem = UUID.Parse(Data["ShoesItem"]); - appearance.SkinItem = UUID.Parse(Data["SkinItem"]); - appearance.SkirtItem = UUID.Parse(Data["SkirtItem"]); - appearance.SocksItem = UUID.Parse(Data["SocksItem"]); - appearance.UnderPantsItem = UUID.Parse(Data["UnderPantsItem"]); - appearance.UnderShirtItem = UUID.Parse(Data["UnderShirtItem"]); + appearance.Wearables[AvatarWearable.BODY].Wear( + UUID.Parse(Data["BodyItem"]), + UUID.Parse(Data["BodyAsset"])); - appearance.BodyAsset = UUID.Parse(Data["BodyAsset"]); - appearance.EyesAsset = UUID.Parse(Data["EyesAsset"]); - appearance.GlovesAsset = UUID.Parse(Data["GlovesAsset"]); - appearance.HairAsset = UUID.Parse(Data["HairAsset"]); - appearance.JacketAsset = UUID.Parse(Data["JacketAsset"]); - appearance.PantsAsset = UUID.Parse(Data["PantsAsset"]); - appearance.ShirtAsset = UUID.Parse(Data["ShirtAsset"]); - appearance.ShoesAsset = UUID.Parse(Data["ShoesAsset"]); - appearance.SkinAsset = UUID.Parse(Data["SkinAsset"]); - appearance.SkirtAsset = UUID.Parse(Data["SkirtAsset"]); - appearance.SocksAsset = UUID.Parse(Data["SocksAsset"]); - appearance.UnderPantsAsset = UUID.Parse(Data["UnderPantsAsset"]); - appearance.UnderShirtAsset = UUID.Parse(Data["UnderShirtAsset"]); + appearance.Wearables[AvatarWearable.SKIN].Wear( + UUID.Parse(Data["SkinItem"]), + UUID.Parse(Data["SkinAsset"])); + + appearance.Wearables[AvatarWearable.HAIR].Wear( + UUID.Parse(Data["HairItem"]), + UUID.Parse(Data["HairAsset"])); + + appearance.Wearables[AvatarWearable.EYES].Wear( + UUID.Parse(Data["EyesItem"]), + UUID.Parse(Data["EyesAsset"])); + + appearance.Wearables[AvatarWearable.SHIRT].Wear( + UUID.Parse(Data["ShirtItem"]), + UUID.Parse(Data["ShirtAsset"])); + + appearance.Wearables[AvatarWearable.PANTS].Wear( + UUID.Parse(Data["PantsItem"]), + UUID.Parse(Data["PantsAsset"])); + + appearance.Wearables[AvatarWearable.SHOES].Wear( + UUID.Parse(Data["ShoesItem"]), + UUID.Parse(Data["ShoesAsset"])); + + appearance.Wearables[AvatarWearable.SOCKS].Wear( + UUID.Parse(Data["SocksItem"]), + UUID.Parse(Data["SocksAsset"])); + + appearance.Wearables[AvatarWearable.JACKET].Wear( + UUID.Parse(Data["JacketItem"]), + UUID.Parse(Data["JacketAsset"])); + + appearance.Wearables[AvatarWearable.GLOVES].Wear( + UUID.Parse(Data["GlovesItem"]), + UUID.Parse(Data["GlovesAsset"])); + + appearance.Wearables[AvatarWearable.UNDERSHIRT].Wear( + UUID.Parse(Data["UnderShirtItem"]), + UUID.Parse(Data["UnderShirtAsset"])); + + appearance.Wearables[AvatarWearable.UNDERPANTS].Wear( + UUID.Parse(Data["UnderPantsItem"]), + UUID.Parse(Data["UnderPantsAsset"])); + + appearance.Wearables[AvatarWearable.SKIRT].Wear( + UUID.Parse(Data["SkirtItem"]), + UUID.Parse(Data["SkirtAsset"])); // Attachments Dictionary attchs = new Dictionary(); From ade71c9ed7ce45b4acb1456df457fe94ad46bd23 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 30 Oct 2010 01:32:56 +0100 Subject: [PATCH 07/27] Change level of some logging messages, turning some info into arguably more appropriate debug to reduce console spam when log level is info --- .../EntityTransfer/EntityTransferModule.cs | 11 ++-- .../Simulation/SimulationServiceConnector.cs | 56 +++++++++---------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 38fff1cab3..485e05ab1c 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -193,10 +193,11 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer GridRegion finalDestination = GetFinalDestination(reg); if (finalDestination == null) { - m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Final destination is having problems. Unable to teleport agent."); + m_log.WarnFormat("[ENTITY TRANSFER MODULE]: Final destination is having problems. Unable to teleport agent."); sp.ControllingClient.SendTeleportFailed("Problem at destination"); return; } + m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Final destination is x={0} y={1} uuid={2}", finalDestination.RegionLocX / Constants.RegionSize, finalDestination.RegionLocY / Constants.RegionSize, finalDestination.RegionID); @@ -240,7 +241,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer } catch (Exception e) { - m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Exception on teleport: {0}\n{1}", e.Message, e.StackTrace); + m_log.WarnFormat("[ENTITY TRANSFER MODULE]: Exception on teleport: {0}\n{1}", e.Message, e.StackTrace); sp.ControllingClient.SendTeleportFailed("Internal error"); } } @@ -421,7 +422,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer m_log.DebugFormat( "[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, sp.UUID); - if (eq != null) { eq.TeleportFinishEvent(destinationHandle, 13, endPoint, @@ -581,6 +581,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer client.SendTeleportFailed("Your home region could not be found."); return; } + m_log.DebugFormat("[ENTITY TRANSFER MODULE]: User's home region is {0} {1} ({2}-{3})", regionInfo.RegionName, regionInfo.RegionID, regionInfo.RegionLocX / Constants.RegionSize, regionInfo.RegionLocY / Constants.RegionSize); @@ -1188,7 +1189,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer Utils.LongToUInts(reg.RegionHandle, out x, out y); x = x / Constants.RegionSize; y = y / Constants.RegionSize; - m_log.Info("[ENTITY TRANSFER MODULE]: Starting to inform client about neighbour " + x + ", " + y + "(" + endPoint.ToString() + ")"); + m_log.Debug("[ENTITY TRANSFER MODULE]: Starting to inform client about neighbour " + x + ", " + y + "(" + endPoint.ToString() + ")"); string capsPath = "http://" + reg.ExternalHostName + ":" + reg.HttpPort + "/CAPS/" + a.CapsPath + "0000/"; @@ -1224,7 +1225,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer // TODO: make Event Queue disablable! } - m_log.Info("[ENTITY TRANSFER MODULE]: Completed inform client about neighbour " + endPoint.ToString()); + m_log.Debug("[ENTITY TRANSFER MODULE]: Completed inform client about neighbour " + endPoint.ToString()); } diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index a5f748f0c4..502fc824e0 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * @@ -117,7 +117,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (Exception e) { - m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent create. Reason: " + e.Message); + m_log.Error("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent create. Reason: " + e.Message); reason = e.Message; return false; } @@ -158,13 +158,13 @@ namespace OpenSim.Services.Connectors.Simulation AgentCreateRequest.ContentLength = buffer.Length; //Count bytes to send os = AgentCreateRequest.GetRequestStream(); os.Write(buffer, 0, strBuffer.Length); //Send it - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Posted CreateAgent request to remote sim {0}, region {1}, x={2} y={3}", + m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: Posted CreateAgent request to remote sim {0}, region {1}, x={2} y={3}", uri, destination.RegionName, destination.RegionLocX, destination.RegionLocY); } //catch (WebException ex) catch { - //m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on ChildAgentUpdate {0}", ex.Message); + //m_log.ErrorFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on ChildAgentUpdate {0}", ex.Message); reason = "cannot contact remote region"; return false; } @@ -191,19 +191,19 @@ namespace OpenSim.Services.Connectors.Simulation webResponse = AgentCreateRequest.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on DoCreateChildAgentCall post"); + m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Null reply on DoCreateChildAgentCall post"); } else { sr = new StreamReader(webResponse.GetResponseStream()); response = sr.ReadToEnd().Trim(); - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: DoCreateChildAgentCall reply was {0} ", response); + m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: DoCreateChildAgentCall reply was {0} ", response); } } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of DoCreateChildAgentCall {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of DoCreateChildAgentCall {0}", ex.Message); reason = "Destination did not reply"; return string.Empty; } @@ -231,7 +231,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (NullReferenceException e) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of DoCreateChildAgentCall {0}", e.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of DoCreateChildAgentCall {0}", e.Message); // check for old style response if (response.ToLower().StartsWith("true")) @@ -251,7 +251,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (Exception e) { - m_log.Debug("[REMOTE SIMULATION CONNECTOR]: PackAgentCircuitData failed with exception: " + e.Message); + m_log.Warn("[REMOTE SIMULATION CONNECTOR]: PackAgentCircuitData failed with exception: " + e.Message); return null; } // Add the input arguments @@ -284,7 +284,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (Exception e) { - m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent update. Reason: " + e.Message); + m_log.Warn("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent update. Reason: " + e.Message); return false; } //Console.WriteLine(" >>> DoAgentUpdateCall <<< " + uri); @@ -303,7 +303,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (Exception e) { - m_log.Debug("[REMOTE SIMULATION CONNECTOR]: PackUpdateMessage failed with exception: " + e.Message); + m_log.Warn("[REMOTE SIMULATION CONNECTOR]: PackUpdateMessage failed with exception: " + e.Message); } // Add the input arguments args["destination_x"] = OSD.FromString(destination.RegionLocX.ToString()); @@ -332,12 +332,12 @@ namespace OpenSim.Services.Connectors.Simulation ChildUpdateRequest.ContentLength = buffer.Length; //Count bytes to send os = ChildUpdateRequest.GetRequestStream(); os.Write(buffer, 0, strBuffer.Length); //Send it - //m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Posted AgentUpdate request to remote sim {0}", uri); + //m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: Posted AgentUpdate request to remote sim {0}", uri); } catch (WebException ex) //catch { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on AgentUpdate {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on AgentUpdate {0}", ex.Message); return false; } @@ -348,7 +348,7 @@ namespace OpenSim.Services.Connectors.Simulation } // Let's wait for the response - //m_log.Info("[REMOTE SIMULATION CONNECTOR]: Waiting for a reply after ChildAgentUpdate"); + //m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Waiting for a reply after ChildAgentUpdate"); WebResponse webResponse = null; StreamReader sr = null; @@ -357,19 +357,19 @@ namespace OpenSim.Services.Connectors.Simulation webResponse = ChildUpdateRequest.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on ChilAgentUpdate post"); + m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Null reply on ChilAgentUpdate post"); } sr = new StreamReader(webResponse.GetResponseStream()); //reply = sr.ReadToEnd().Trim(); sr.ReadToEnd().Trim(); sr.Close(); - //m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: ChilAgentUpdate reply was {0} ", reply); + //m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: ChilAgentUpdate reply was {0} ", reply); } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of ChilAgentUpdate from {0}: {1}", uri, ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of ChilAgentUpdate from {0}: {1}", uri, ex.Message); // ignore, really } finally @@ -401,7 +401,7 @@ namespace OpenSim.Services.Connectors.Simulation webResponse = (HttpWebResponse)request.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on agent get "); + m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Null reply on agent get "); } sr = new StreamReader(webResponse.GetResponseStream()); @@ -412,7 +412,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of agent get {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of agent get {0}", ex.Message); // ignore, really return false; } @@ -453,7 +453,7 @@ namespace OpenSim.Services.Connectors.Simulation WebResponse webResponse = request.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on ReleaseAgent"); + m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Null reply on ReleaseAgent"); } sr = new StreamReader(webResponse.GetResponseStream()); @@ -465,7 +465,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of ReleaseAgent {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of ReleaseAgent {0}", ex.Message); return false; } finally @@ -486,7 +486,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (Exception e) { - m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent close. Reason: " + e.Message); + m_log.Warn("[REMOTE SIMULATION CONNECTOR]: Unable to resolve external endpoint on agent close. Reason: " + e.Message); return false; } @@ -502,7 +502,7 @@ namespace OpenSim.Services.Connectors.Simulation WebResponse webResponse = request.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on agent delete "); + m_log.Debug("[REMOTE SIMULATION CONNECTOR]: Null reply on agent delete "); } sr = new StreamReader(webResponse.GetResponseStream()); @@ -514,7 +514,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of agent delete from {0}: {1}", destination.RegionName, ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of agent delete from {0}: {1}", destination.RegionName, ex.Message); return false; } finally @@ -579,11 +579,11 @@ namespace OpenSim.Services.Connectors.Simulation ObjectCreateRequest.ContentLength = buffer.Length; //Count bytes to send os = ObjectCreateRequest.GetRequestStream(); os.Write(buffer, 0, strBuffer.Length); //Send it - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Posted CreateObject request to remote sim {0}", uri); + m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: Posted CreateObject request to remote sim {0}", uri); } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on CreateObject {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: Bad send on CreateObject {0}", ex.Message); return false; } finally @@ -601,7 +601,7 @@ namespace OpenSim.Services.Connectors.Simulation WebResponse webResponse = ObjectCreateRequest.GetResponse(); if (webResponse == null) { - m_log.Info("[REMOTE SIMULATION CONNECTOR]: Null reply on CreateObject post"); + m_log.Warn("[REMOTE SIMULATION CONNECTOR]: Null reply on CreateObject post"); return false; } @@ -613,7 +613,7 @@ namespace OpenSim.Services.Connectors.Simulation } catch (WebException ex) { - m_log.InfoFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of CreateObject {0}", ex.Message); + m_log.WarnFormat("[REMOTE SIMULATION CONNECTOR]: exception on reply of CreateObject {0}", ex.Message); return false; } finally From 343c89465891234be94da33719dcbdd903993a42 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 30 Oct 2010 01:35:12 +0100 Subject: [PATCH 08/27] Set async_packet_handling = true by default Setting this to true avoids a 500ms or so client freeze when the LLUDP server thread is taken up with processing a UseCircuitCode packet synchronously. Extensive testing on Wright Plaza appeared to show no bad effects and this seems to reduce login lag considerably. Of course, a lot of login lag is still coming from other sources. --- OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 2 +- bin/OpenSimDefaults.ini | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 161e8c2bbf..821f679c9d 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -183,7 +183,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP IConfig config = configSource.Configs["ClientStack.LindenUDP"]; if (config != null) { - m_asyncPacketHandling = config.GetBoolean("async_packet_handling", false); + m_asyncPacketHandling = config.GetBoolean("async_packet_handling", true); m_recvBufferSize = config.GetInt("client_socket_rcvbuf_size", 0); sceneThrottleBps = config.GetInt("scene_throttle_max_bps", 0); diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 5ced7d586a..de7c44ccf4 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -328,8 +328,9 @@ ; already separated from packet handling with a queue, so this will only ; affect whether networking internals such as packet decoding and ; acknowledgement accounting are done synchronously or asynchronously + ; Default is true. ; - ;async_packet_handling = false + ;async_packet_handling = true ; The client socket receive buffer size determines how many ; incoming requests we can process; the default on .NET is 8192 From ff7da2082d4d44b34c3ef312d5ec5e88c94931e1 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sat, 30 Oct 2010 02:25:25 +0100 Subject: [PATCH 09/27] This commit fixes all the appearance related null refs. Still can't log in, client displays a blank error box. --- OpenSim/Framework/AvatarAppearance.cs | 9 +- OpenSim/Framework/AvatarWearable.cs | 2 +- .../Services/AvatarService/AvatarService.cs | 11 ++- OpenSim/Services/Interfaces/IAvatarService.cs | 95 +++++++++++-------- 4 files changed, 69 insertions(+), 48 deletions(-) diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index ee60622b26..1e003f7862 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -111,6 +111,10 @@ namespace OpenSim.Framework SetDefaultParams(); SetHeight(); + m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; + for (int i = 0 ; i < AvatarWearable.MAX_WEARABLES ; i++ ) + m_wearables[i] = new AvatarWearable(); + m_attachments = new Dictionary>(); } @@ -172,10 +176,11 @@ namespace OpenSim.Framework m_serial = appearance.Serial; m_owner = appearance.Owner; - m_wearables = null; + m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; + for (int i = 0 ; i < AvatarWearable.MAX_WEARABLES ; i++ ) + m_wearables[i] = new AvatarWearable(); if (appearance.Wearables != null) { - m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; //should be 15 of these for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) SetWearable(i,appearance.Wearables[i]); } diff --git a/OpenSim/Framework/AvatarWearable.cs b/OpenSim/Framework/AvatarWearable.cs index 631971f4e2..0a02dcfc46 100644 --- a/OpenSim/Framework/AvatarWearable.cs +++ b/OpenSim/Framework/AvatarWearable.cs @@ -63,7 +63,7 @@ namespace OpenSim.Framework public static readonly int UNDERPANTS = 11; public static readonly int SKIRT = 12; public static readonly int ALPHA = 13; - public static readonly int TATTOO = 15; + public static readonly int TATTOO = 14; public static readonly int MAX_WEARABLES = 15; diff --git a/OpenSim/Services/AvatarService/AvatarService.cs b/OpenSim/Services/AvatarService/AvatarService.cs index a8ad4130e5..53ca7c868b 100644 --- a/OpenSim/Services/AvatarService/AvatarService.cs +++ b/OpenSim/Services/AvatarService/AvatarService.cs @@ -51,8 +51,6 @@ namespace OpenSim.Services.AvatarService m_log.Debug("[AVATAR SERVICE]: Starting avatar service"); } - // Get|SetAppearance should preserve existing semantics - // until AvatarData can be removed completely public AvatarAppearance GetAppearance(UUID principalID) { AvatarData avatar = GetAvatar(principalID); @@ -68,12 +66,15 @@ namespace OpenSim.Services.AvatarService public AvatarData GetAvatar(UUID principalID) { AvatarBaseData[] av = m_Database.Get("PrincipalID", principalID.ToString()); - if (av.Length == 0) - return null; - AvatarData ret = new AvatarData(); ret.Data = new Dictionary(); + if (av.Length == 0) + { + ret.AvatarType = 1; // SL avatar + return ret; + } + foreach (AvatarBaseData b in av) { if (b.Data["Name"] == "AvatarType") diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index a029fbc619..186871a299 100644 --- a/OpenSim/Services/Interfaces/IAvatarService.cs +++ b/OpenSim/Services/Interfaces/IAvatarService.cs @@ -190,60 +190,75 @@ namespace OpenSim.Services.Interfaces AvatarAppearance appearance = new AvatarAppearance(owner); try { - appearance.Serial = Int32.Parse(Data["Serial"]); + if (Data.ContainsKey("Serial")) + appearance.Serial = Int32.Parse(Data["Serial"]); // Wearables - appearance.Wearables[AvatarWearable.BODY].Wear( - UUID.Parse(Data["BodyItem"]), - UUID.Parse(Data["BodyAsset"])); + if (Data.ContainsKey("BodyItem")) + appearance.Wearables[AvatarWearable.BODY].Wear( + UUID.Parse(Data["BodyItem"]), + UUID.Parse(Data["BodyAsset"])); - appearance.Wearables[AvatarWearable.SKIN].Wear( - UUID.Parse(Data["SkinItem"]), - UUID.Parse(Data["SkinAsset"])); + if (Data.ContainsKey("SkinItem")) + appearance.Wearables[AvatarWearable.SKIN].Wear( + UUID.Parse(Data["SkinItem"]), + UUID.Parse(Data["SkinAsset"])); - appearance.Wearables[AvatarWearable.HAIR].Wear( - UUID.Parse(Data["HairItem"]), - UUID.Parse(Data["HairAsset"])); + if (Data.ContainsKey("HairItem")) + appearance.Wearables[AvatarWearable.HAIR].Wear( + UUID.Parse(Data["HairItem"]), + UUID.Parse(Data["HairAsset"])); - appearance.Wearables[AvatarWearable.EYES].Wear( - UUID.Parse(Data["EyesItem"]), - UUID.Parse(Data["EyesAsset"])); + if (Data.ContainsKey("EyesItem")) + appearance.Wearables[AvatarWearable.EYES].Wear( + UUID.Parse(Data["EyesItem"]), + UUID.Parse(Data["EyesAsset"])); - appearance.Wearables[AvatarWearable.SHIRT].Wear( - UUID.Parse(Data["ShirtItem"]), - UUID.Parse(Data["ShirtAsset"])); + if (Data.ContainsKey("ShirtItem")) + appearance.Wearables[AvatarWearable.SHIRT].Wear( + UUID.Parse(Data["ShirtItem"]), + UUID.Parse(Data["ShirtAsset"])); - appearance.Wearables[AvatarWearable.PANTS].Wear( - UUID.Parse(Data["PantsItem"]), - UUID.Parse(Data["PantsAsset"])); + if (Data.ContainsKey("PantsItem")) + appearance.Wearables[AvatarWearable.PANTS].Wear( + UUID.Parse(Data["PantsItem"]), + UUID.Parse(Data["PantsAsset"])); - appearance.Wearables[AvatarWearable.SHOES].Wear( - UUID.Parse(Data["ShoesItem"]), - UUID.Parse(Data["ShoesAsset"])); + if (Data.ContainsKey("ShoesItem")) + appearance.Wearables[AvatarWearable.SHOES].Wear( + UUID.Parse(Data["ShoesItem"]), + UUID.Parse(Data["ShoesAsset"])); - appearance.Wearables[AvatarWearable.SOCKS].Wear( - UUID.Parse(Data["SocksItem"]), - UUID.Parse(Data["SocksAsset"])); + if (Data.ContainsKey("SocksItem")) + appearance.Wearables[AvatarWearable.SOCKS].Wear( + UUID.Parse(Data["SocksItem"]), + UUID.Parse(Data["SocksAsset"])); - appearance.Wearables[AvatarWearable.JACKET].Wear( - UUID.Parse(Data["JacketItem"]), - UUID.Parse(Data["JacketAsset"])); + if (Data.ContainsKey("JacketItem")) + appearance.Wearables[AvatarWearable.JACKET].Wear( + UUID.Parse(Data["JacketItem"]), + UUID.Parse(Data["JacketAsset"])); - appearance.Wearables[AvatarWearable.GLOVES].Wear( - UUID.Parse(Data["GlovesItem"]), - UUID.Parse(Data["GlovesAsset"])); + if (Data.ContainsKey("GlovesItem")) + appearance.Wearables[AvatarWearable.GLOVES].Wear( + UUID.Parse(Data["GlovesItem"]), + UUID.Parse(Data["GlovesAsset"])); - appearance.Wearables[AvatarWearable.UNDERSHIRT].Wear( - UUID.Parse(Data["UnderShirtItem"]), - UUID.Parse(Data["UnderShirtAsset"])); + if (Data.ContainsKey("UnderShirtItem")) + appearance.Wearables[AvatarWearable.UNDERSHIRT].Wear( + UUID.Parse(Data["UnderShirtItem"]), + UUID.Parse(Data["UnderShirtAsset"])); - appearance.Wearables[AvatarWearable.UNDERPANTS].Wear( - UUID.Parse(Data["UnderPantsItem"]), - UUID.Parse(Data["UnderPantsAsset"])); + if (Data.ContainsKey("UnderPantsItem")) + appearance.Wearables[AvatarWearable.UNDERPANTS].Wear( + UUID.Parse(Data["UnderPantsItem"]), + UUID.Parse(Data["UnderPantsAsset"])); + + if (Data.ContainsKey("SkirtItem")) + appearance.Wearables[AvatarWearable.SKIRT].Wear( + UUID.Parse(Data["SkirtItem"]), + UUID.Parse(Data["SkirtAsset"])); - appearance.Wearables[AvatarWearable.SKIRT].Wear( - UUID.Parse(Data["SkirtItem"]), - UUID.Parse(Data["SkirtAsset"])); // Attachments Dictionary attchs = new Dictionary(); From 63bdfb1e28a9cc13cd94b98f598320e7da25d24f Mon Sep 17 00:00:00 2001 From: Marck Date: Fri, 29 Oct 2010 11:01:50 +0200 Subject: [PATCH 10/27] Clarify comment for configuration option Check4096 and show the default value. --- bin/Robust.HG.ini.example | 4 +++- bin/config-include/StandaloneCommon.ini.example | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example index b81642a179..e1627c0534 100644 --- a/bin/Robust.HG.ini.example +++ b/bin/Robust.HG.ini.example @@ -64,7 +64,9 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 LocalServiceModule = "OpenSim.Services.GridService.dll:GridService" ; Realm = "regions" ; AllowDuplicateNames = "True" - ; Check4096 = "False" + + ;; Perform distance check for the creation of a linked region + ; Check4096 = "True" ;; Next, we can specify properties of regions, including default and fallback regions ;; The syntax is: Region_ = "" diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example index 2f021d52cd..1fcf043ea2 100644 --- a/bin/config-include/StandaloneCommon.ini.example +++ b/bin/config-include/StandaloneCommon.ini.example @@ -53,8 +53,8 @@ ;;--- For MySql region storage (alternative) ;StorageProvider = "OpenSim.Data.MySQL.dll:MySqlRegionData" - ; If HG, do you want this check on the distance to be performed? - ; Check4096 = "False" + ;; With hypergrid, perform distance check for the creation of a linked region + ; Check4096 = true ;; Next, we can specify properties of regions, including default and fallback regions ;; The syntax is: Region_ = "" From 45220a6954129a5cb7e162761008b51cb8cc01e4 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 30 Oct 2010 03:01:40 +0100 Subject: [PATCH 11/27] minor: remove some old commented out code --- .../Archiver/InventoryArchiveWriteRequest.cs | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs index 9080e1c92f..d81703a827 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs @@ -173,28 +173,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver InventoryCollection contents = m_scene.InventoryService.GetFolderContent(inventoryFolder.Owner, inventoryFolder.ID); - //List childFolders = inventoryFolder.RequestListOfFolderImpls(); - //List items = inventoryFolder.RequestListOfItems(); - - /* - Dictionary identicalFolderNames = new Dictionary(); - - foreach (InventoryFolderImpl folder in inventories) - { - if (!identicalFolderNames.ContainsKey(folder.Name)) - identicalFolderNames[folder.Name] = 0; - else - identicalFolderNames[folder.Name] = identicalFolderNames[folder.Name]++; - - int folderNameNumber = identicalFolderName[folder.Name]; - - SaveInvDir( - folder, - string.Format( - "{0}{1}{2}/", - path, ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR, folderNameNumber)); - } - */ foreach (InventoryFolderBase childFolder in contents.Folders) { From adef6b04cb3e333df66bf2393eec9d25b2380dfd Mon Sep 17 00:00:00 2001 From: Melanie Date: Sat, 30 Oct 2010 02:52:59 +0100 Subject: [PATCH 12/27] Logins work now, but avatars are green ugly gnomes. --- OpenSim/Framework/AgentCircuitData.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index cd30c3dfef..7b14ac78f7 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs @@ -212,8 +212,6 @@ namespace OpenSim.Framework args["mac"] = OSD.FromString(Mac); args["id0"] = OSD.FromString(Id0); - // Eventually this code should be deprecated, use full appearance - // packing in packed_appearance if (Appearance != null) { args["appearance_serial"] = OSD.FromInteger(Appearance.Serial); From d0895a4a3ae8a60764db4ada43c194fddc90ddf4 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sat, 30 Oct 2010 03:28:59 +0100 Subject: [PATCH 13/27] On first login, Ruth is back now. Strangely, inventory items are created for tattoo and alpha layers. Any change of appearance in the sim makes the green gnome reappear on next login. Progress of sorts. --- OpenSim/Framework/AvatarAppearance.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 1e003f7862..f0d83359ec 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -111,10 +111,6 @@ namespace OpenSim.Framework SetDefaultParams(); SetHeight(); - m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; - for (int i = 0 ; i < AvatarWearable.MAX_WEARABLES ; i++ ) - m_wearables[i] = new AvatarWearable(); - m_attachments = new Dictionary>(); } From 4a24bf74d93924b688fcd5246218083108c93c01 Mon Sep 17 00:00:00 2001 From: "Teravus Ovares (Dan Olivares)" Date: Sat, 30 Oct 2010 02:06:43 -0400 Subject: [PATCH 14/27] * Thank you lkalif for fixing the {array[array[]]} json OSD serialization issue. * This is libOMV SVN revision 3463. --- bin/OpenMetaverse.Rendering.Meshmerizer.dll | Bin 20480 -> 20480 bytes bin/OpenMetaverse.StructuredData.XML | 158 +- bin/OpenMetaverse.StructuredData.dll | Bin 102400 -> 102400 bytes bin/OpenMetaverse.XML | 34576 +++++++++--------- bin/OpenMetaverse.dll | Bin 1716224 -> 1716224 bytes bin/OpenMetaverseTypes.XML | 2626 +- bin/OpenMetaverseTypes.dll | Bin 114688 -> 114688 bytes 7 files changed, 18680 insertions(+), 18680 deletions(-) diff --git a/bin/OpenMetaverse.Rendering.Meshmerizer.dll b/bin/OpenMetaverse.Rendering.Meshmerizer.dll index f89ac5a5950c580299df4193487ec869eaaeedad..6139a9d5d94158f6eb12cc1e0c4c757d86ce7c99 100755 GIT binary patch delta 46 zcmV+}0MY+|paFoO0g#9TtgXwji&rE9sROg*Bt!=g+2#^jxi))Diy{CY`hIh?vp6is EBgt43O8@`> delta 46 zcmV+}0MY+|paFoO0g#9Te3- + + + Deserializes binary LLSD + + Serialized data + OSD containting deserialized data + + + + Deserializes binary LLSD + + Stream to read the data from + OSD containting deserialized data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -133,85 +212,6 @@ - - - Deserializes binary LLSD - - Serialized data - OSD containting deserialized data - - - - Deserializes binary LLSD - - Stream to read the data from - OSD containting deserialized data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll index 33b19caea064b5f777238e15d53245f96751277b..e3b729c6ee2bcf7b067665142f5155b0e84d2bc2 100644 GIT binary patch literal 102400 zcmeFad4Lqf`8QtGJ=1gTH9O19p3HKOGqc0OA}-(oDjs-&Cx{2geKyX32g@!?RJ;(u z7~@Gi(Rg1`V~lrD6I3upO}sGiOz=q5M2*4s^E_4E)3bn@-}ilgf4r{?U0t82o_gx3 zs;ADb?m6VxHNq4^_;7vmjSvsuPJg4>{dT7t!4=5|E5yB_XZt)L4}P}Kk+bI%niu8m zS^238nx{=&xX@nQeA0~O{E~&ua~3x5d)N`p3+(ALa^>aW{#x|-u|gayO>y0AzdP7T zZHqAaL}XBiDN=}LMP1#c{oS|=5oLOn(whjRKmR?7aM0<`6r;~#z!;9E>l^b7gWO}t z2f1GuOe%G*mZGeb^8HY=5Xgc17X&`QMMC5j&p2%{@Wm(Sd`&6p?XV%rlw7`$p9TW! z1|2yMi*Wb+jYf6l@-yb!U}RmPGxHI@=MQ{)d*Bb=A4=ed68ND6ekg$-O5leQ_@M-T zD1jeJ;D-|Up#**?f&Yg}U=gjW@keV@L-@tPw+r$9^Foxa9GT^NIlYZkN{Dc}x6u*6 zsyyA-Fgw`;0@lNdz#b4nM8G|&?^u}o()B56g>3fE-z!Ve)pc+lg%tUpm%mh~p6*p;04jCC5w}YXSDd zH4qnsiY%_dxQ61gl2a7}Z58-&K@R~X1X9GNgbA^nu{kR-i6y6gPjs9Y-e(^ezfxgjX;|16zK`!Gp z+bk$-6>@N{wGx0RI0x1Oq9zfQ-n=`y^63mV7v&EA>f1u zhk<3Y_%dYT#xMjsf@a;2Pk*9^4BU zmf{pmlFAhuTP~)89pJ%Kval*QoQigk2UFRmJeUd>7U=MI!!muS#NA;s12%mMkjlX5 zyJ3euvM;jbIk-Evd|Ydjl^oPsW+nUPM#GmIl{wT(4$cj;lE>u+XZE&|Gb!+-TpN73 z*31wqxiHt;O6DhxMcWWC34z+-Eu~B^BZYPV)5iZ0nRahB@x7dMeK0UexBWvhwhn4r z9cahCWb>$3dr(3{tGx{6dp_8MVaU*3y$mB-2WrTzyC{3J-2#;c8g-pW+?PmuBB3RZ zY#l?n?}glt!Zsk9?x0aYq||;O94ncfG?v=$d|b%vR+?W9^Wk~>z5dU9q?I%V!ev|$L= zNORja-z2zCJr|ip4x_40IMk^{HjDo~b==zK2>p(th&y&V0!ooyT)iHHNwy9h;)Nqx z`)asj$?bop+AP{)vN?x=tZ4S3p-C?+Z>`c*t}DE!wT^9VWSgXhN7mAbYX~kYIW~8A z<`gS=d=54}Be$QG>};E*M3ebjI}y8Mt&N7#%HIiBljbU|+~>G*p%e8pAL0IO_4|Kk zanPK^5Qii0^rvfqEZ;Fhw(Zvcvj1vyi(8eg>DcI2HxbpB{zG265GfTYO|HDelQonJ0&QEpJ@GW&z z+Sd0}rLXJ}Q;=^ff5^|bg^gs`W5!$_-yLrW#f$WeH~2f#o6)vicdF~)yVIOXX_og) z^Sk5Cr+5|reY^t2tLz!?|7;$)T%$eH{GNHN?iug9b)CP{`k-f=)OIt|JT?uB>6;7C zEVOqcdGmP@3cej3>#DH zLAe8Is2-fd)cUyG9+|oB3>#DHndmbo(F}V4&#;j#o>`C5ckXXS7|HmzW;BJhtfi;D zMh6v*r?O(LKJgyJVGa?EhnwjUa6}bJyc0_{U;9G{^i%`pJe6KJV#w}ZIHojozab?P zoT)=?FZ0aSDGCngprkxODJ+kzz_Alq1uHQz97tA8j#%|=&V0*LmlT!P89UCRlB%Yf z!;0g>&TMSZx7wIHm&RQ8e`aG?k9|k~IH;{j>F&(0)%4$;3&wfQJn}o`q$x*(b7h$t zBk4}%lFocTo?f4+^^|-v+!k_^@RVK4tBLf@nL00LnmQ?G9^z&F6UJbg^Xv`X=r7~c z8qajnIcJv4aIiPMqJrFHxz<`9hd7K4roggXm6<_nSZhF-*Bw@`oWX0N5DdYcv-fv+ zJ77w_Y?Z?xcMxh2xss3bKv)I##1yv>bO* zy0{ZtCqU#j(|%1`86;6*sQ{%$2O7VRH?5HQo}~6Mu=L?hEGhvMA&;-LPC#N&qc9XH zhpiMArdGtV+kgV;ZH7Gzo|Z@+IapMv$9~aLBQ*gmM&1S`b%e@${>Kg&sDo37B82Nn z@>&E%7d2AjKnz>4Nxp*MXj;O8fAyK(#SlZy_kjzvBa-&y@+cKt{OxQ;A(G#V03gq*B$=mn-L*cVSrH=;R{{+y4x+<+ zl83o0sF}-+ki#5|gXl0%FGh~03Ku+%(+yRhYhfeRQ9i{gY8GtV{ zA?mZylZJ1AiVYDXIgjI{_5i6`ruM|m-V4sRm#YER(cog8A&`|`|3mFFb2-1r5;)__8rQtjufp!vJjfOAf6 z65RQt{zkD+Rw3A#L&qk@;kpXfF`!Zl0bj?cu_S@S6u@kS*_%k^*uMwJaqS-hzfqq$ z5*Cs=3Qk!tHJF)dDWJCsI2r-vp;S8u;8-BqSrv!G3wu-Xj^coKDZnEt<};!`C16ix z_)Sj+Ki4NrnYrwJAdA|5Y9zB?(vv-)*#jQ-U^Eyn>`M_tZ>_CXL|TM@)Vda81-p2HWt9V0hc?HoYKy&f zHioHiHkc@*g3TE5vS7B-Q0kV)hxh{4kjH}AD%{G7i9!MN3aIEXuNQrSbgiWHFF^W| zxqN2d7>*0N@w{yp+-ab0e;kgH8i+XDx1{lqj{MY}z`qOmhb#Xe_~&zXf`Bvt zatE!$S)H=#0ieJa;4k2bffb3DW#R!NXxEY$${{zRU}9ofP_YetE8s+U0ujm$yBQK; zHT^=U7Uc=x)JbKulIw(qSgI2|T@)EyFbn}D z_)h-waA6|Kb4(tFRh@*b7NaIzQZn+&vVp2h zYqZK^1Lf7_YyhghE20&s?+9pI-xaF9t5khIh5D{i^&O2yQQuKr-;s0;wKrAQr^r3- zQFT4eh!>`yObSz}45z`K(nAdops}S6@u+V%QYV24<515SROzi!kbLy*uo=j~3NAGd z;#`1ciry;nMra^+6p=Rs_4R5lAVe}LLa-aTpBi^lGr-OBRPfL`XCKH;Kz3m|t585V z%^~fXxCgps!Oc%L#Ul3ENGcpKQV6pG_8bECT(}mSL>jvK#A<_$*jYEhirBuP0(Z@0 zabJMzC%9Nlrt$KSA=l^8l!{p9q=iwV@;S>bQ(JElB7`7L~F|5=Q+#&&P zuq|I;9bk5m%n9+bH`46mbW*2)D;qFtCM3$`@)~BlvJpy(Ng_N=lwmd| z4b0|OUPRj&)HnFVomg+xb04BQh0_o(k&EOjQAm1E#XcRhur(kS8nGX^x5c_XgDN90 zhJ<9KuoQs<^3>MisSfs2+e&CZwVzt;r#4cj{bb+u+D|szp#9W78nvHnu}S;MetT;_ znNu>P0aa!)%wSurn-tUfMMKr$)G{bE0_h4pb@4;zp|~!=^%kzV=rS<35}1OB6LH~1 zEioR~F}T_%!7=Pkh{$5@H4S&wLt+lYK=q@l(`?_h$Xubr)q+%WXGa=#7ev_0;b2Kh zgJ#RXV175~&(+vc9?Xw%K((@Om&me zA)c^C+Am^J#2;y2Srir5>h?o<@SmQ>Dv^h|WGsG*vh5X+Oapfw3wD)(Y`JFr;v39S z!%=^=FZClzA4_IhXGhwjNYoXlY5zg#>pWF!Mbxx`R^U$A4PsIZV^%S9R_Y8EZt+?@ z(ta-l6=O!)uit@Sj2>z^Tog>CSimbdkUEnE2YBHeX`f7j-I$T~gLWX8#yMW&JAyIR zlB!ILwA0RmYOu5q5NW4FHa#;<6QC6BDx{4(b-4CfAY_Mn0QbA8l|*jHAA(}{gr&{~ z*=euSh-H{3PpNZ2Vd0V2SD}t$!Th<19}U{)Qa~{-Ps0>rW~SD#)~OcCq}rL_eF!J3 zH7X%bNFWHVA9mlSSp9{{A1A2%Kwqf>palC znHw13^`8(gm<=DAby!AXufh~){i1>TG8UO=gF%tRJargKY9#+U-P!t%RFVJH)PPDNcVxNSbFC^(Y0Kj!-&eoS&@59`=YrQ(rPX_8u~Xue;ylK+VfXI z*Ki63i#fwyaQQJnq;LVe-86g#yaQ)ywL|7-Bv^Wg-jJ2gHej@;k=VWv4688VkP5DG zplPp#H+2!5@OERX#bdb|b5lPCi^bNcs7QnM$l|yssoV<~6KP)q!#zExz$6vVDTqhX zzO-m2p44IlhIx%mbc)-D>6jJJ^M}ERgt(WuaScAG*cUu{j%}o1)#^EeH$G+$JB)9- zX{h+zG$UkG7#&Fr&jZ>pviD;>x>-(qu(NZqIaVF5P9E8M7~Dav&2amut>5dQ`Y01| zKp)irPy34s>8;^y2uGz*_(B;8%Z^{>Sc^3h^@DbX|D(SE@A*NtF$^sk#_BS!O?>>4eidrx-a}j z7q)(U2^vYTO`I6gE69Y^bFeu!A9kZ!trMe~V;s>l1`&1=V+#~=2JaW)H@c4O8Jh?_ zVmmReN5e|rh!Ks% zv4=p#77drM>@Zq{bD>B7KOx^na*$FHdkLES1e3Mq<yW!EOn(yGi3N0S2NM?YMLRSq>W4^i> zWAWxyWI*}(@O#P<9h}-LxXvuQ!*rh;po_xOGW1zjqR24fk+sk+dkXf^($+U%Ift7$ zs{=FG$1bH5qlB~pwY(PK-m%(H#u3lwp^Bn;#zOVD2i+R?%~#=$K4CjOa;yhwllkwo z8RTk%xVhX*aA)K;!5y3XElJBg3AZKpu&XO9Gu#r-zqDgrX=d!`IuW`KBwgv@N+gp* z7fpi&?+bID(Z7>@4)5bsDw4|PEV#$#FtT82frAF|Axvm{tOsv^pGVw?GzL)`H2aBU z@Wh;wC=2oyZ#@=%x4OcEysR&GQr?^#iD1#!lQt0+xr9JS>r3+#Cl=}Zg3IFS+nK{- zC`VsZaI$lB9upf@xyTONqIn&y(o)b_JxdRlK1oM_*aH`4r@WE>E8Mr>!W>W3AtG61 zJB=LlBpucePMf?Poedeu#fo4gXF8ra>~VH9))Bjr%X<_!(BF$-tv4+EwStNWdB#G?H27QjY%9Sj7R?f0a-ViF!92F{V2bDPmW}vn2iL`fAm_~A>$~JgLgJ*}Tgwzhv zb#K&!)CLi@6tO|%Q`@h2NT`%l`>*w4Y6m^?Q2FoHcIV^9@n6_of5+~2^V*&7yY0@W zcG61iu9T?lu9T?lP7!xhRNrcM9$6SARC#P?cROb4VRu@A9ot?0A=npp)IMc`oyr8g zbPO3rs;h@J(mpe$=*kxDpHXu%bt_SZsUG4e!#v8T?2_vY4{_rqIF!RCf|5{7R>?9o zBTtKWV9+-@5p~jzb<_OW6mLL3w(nB?I_#^VuFrOj-KUMctHjvNp33O%;(J-Y>6kyw z=b?DgQFJ?@S=NRcsA?4>Peq@*lZH{658X;I{#T)fFoIlguhUM{GhvKj(M)e^b0mO= z=#>FHL&rJDaLyk{meV?%rdC)D>RCYR%kKII;?#5a6paRY5;jn+XBQ&OGlyUf^`xHW zn2yv;sK?ZSSSs}>jVH#Nle@IN&I8NiZvW;E&fU-p)1Ybnou1D*r(mJwW{@Wwb)Xqc zS^F=bOkf23A|A0emxu6fS#5~kmc*QxAGz&{JE*yl89RhiuzQARY2pVli|Y_vyXpJh zxMvOuHmNh9nG=J(weP54vP^r&1(RXz-7AJ*hp6C>b3W{%H_`Lho;5ur5Dc`Mp_W&ia&3c*7Rbn7j)YX2scTTcVKY&< z7WaseUxyG5wyy&LPm1VP1_3lCIq@}nxThS%C&?^i`}lr=9e3Ur;B5sXZmgb@j1KnW zmNAl1`+CyE;^TvL_6-18%)$1j?#Rkt53!2a(rD%HE}{x6|FDZF!W4?2o|o|npwuKH zp#OsY#~^+BQ)d))B2mqZ0hbT&U|=pu&L~OF=#kt>B;C-7P+y5bU!cKZA7~h5A)l;p z4}T;p`1Hp>BR)5-&a~+Lm3_b&32@Hs^*ZC2?px^qYr?da`T#4UKzV@maJi={H86?A zRN^%hh%=So{4PexFA+1uk(i_%CB}-GVyc*r(=jtRREYh=7;&&T0wJoLR%kk_r_`d- z=|)5H@eT&>z!Wh13wKWdt)3TZ12%mQzj|wwmi7+ypDy(X_!>0tzg+5(9_kk^^(gq# zbB&G#xVJ<$VQOxqZbE`MkV_|!dnrU>DeOTc>;WkP zdq9A>Dgt}BY@~n={HJn{iJVXQ(En>6Mo{hRc6~pBFFC!tK!l%Dv0;hkE8I*zO#gg^ zTgZnY*;l|4G~A8u*jLz!%Iro}_)@nK4NC=I;db&Zaedff@D=VL+NrMZH26|?A#Un! zvIZI-AA!c$+KP5js)l_hB4lN{T5RhTMzL07$qW8)>H_c^`NIcdYK*8j{Zx$&n+u6( z-veA8$D@UVaHQjMJR7?gg#4Lc<-N_8T)_SXD0F@@(bgvzzudkLaMSJ>U%1xV%Bw}d zz8|y{)&@8rgUA1v3x-zD8G3sc72<%HUp>NO6)pP#u)bjqd?Wlu5E}-_UHCQUdD?ZN z;x1vr;_*D~IuW~1eF~5Ad88DgmGVg?Y1qF+ES=8?@@eE(muBt9(4<-v9we=P;$|~u z#c}ST3+EmJr5QzGhqJBTj2_`;6y220=w5C{*Ft2bwc6a)3;T~owHfG~3$<|Pa_F2- zK%_1PmnzPXjpb9=JzasrHG9z%!LT0!ITnoLjLU&^oZ|ABuiCGL;tY+F>Q8jeBY||N z=GWl&iU*0R3(spg0X$=+<1tax)zCY-$XW-)!m9AO+${THa65$`)`hR0Wwy(T{iH7Y zb{RW}KBTDTV4H9sLS;|3YuGS3D*M8txMN~L_7n5RV^(Gl94E21FW8o3wW0H5=z_u# ze996I1V4t@I2tsOcD(r1$***w1mdw^CX1se!OP2W#6=afFQkgZr;3D5W3d1Xkue-n zi3X7Gja}WG?~uwj>ulMNBONE-`YCQ&<@;Vy@wj7i_lnq4j?MW6az;-zqg~Vi3@B6b zs7)I-HkraLRb31UPXgG#p#%a!RirAw-T<0uKLs~iT|#;qB#cEHVYG=0`oO@-Lvi!k zko^qkVU=9W=S`0#S@v%c{zk8X+sTT&QHI9kQ;B12L3>KUF!4+}nNiQA>239zHKNy4 zZd=Pl=0=rI`p&~d69lM%cDX#Wmrw?y-ALuVtk5uorE z?0c!h)H}C};%>|}D^F7{q2q^g<=Ph>{SgY)v~jk?vY(~g8kYSW?s(eH#B>*Ra+du( z(S~XO1B9V%CQ`D5^a4l`9g`;3R=SINOE+Zd`zTp&?|F&q%XiBICWHd<-_f!OkU4#L!nY1pQ@2qaxXF`vqP{peSa zc_VcTgz5hJC2;W})m5Oi)Z?`3YVt($>mbWp%m`tYS|jx`;w<)&5*DcEfghb(WdX9W zZ*16qq&v=VnJJ7O7S7YD>dcj)fd%b4gbvKSrNw2(;6w*R;Y>7IS}64=^5T3So$m52 z9)>g!DQrhU#_d(Up{eoduA#5DH=`(`IFi<$fJdd17#)G%NZpFGbzl7&35_VdsVF=~ zRyXQ(*BtoJWvr|^!u=+Wh9M|CVg^1gV2xvbMopOnof$awqDMHn0wZ!tTQMF*J`On~1 zwTp7HD0xzR4VZNDH6*SIaijFD7@z2kQbBq4Xk$5a57gMu!qD0b`$h=Rr1DT=(%3L^ zk5O8n_u>n=%|LPe67pMs=s&ap}WB zA4F>Y+le@bBEDN93q>eX@0E~XOfvO;2?>TIQy&lst7shSh2#YwDP*G0d=T|Xe_czU z!zR}GCa`y%0oX#{hj|h@6fS|&O(dqLSMzf%41Kt**12 z2pAJ|1R^or6M+gsMOf)Xc*>1Hq%Lwi5xA^arL&y~PrDI_)J2Xb0+%F5ILC?bj2nSS zUF3Koa5-~?bDapkbt4d|iyTh`t_6;8o)h7BZUiEAk>iO#b)+(Vz7t`i8-Yk&7@(-fS z)D*g>J|)T^O_@cM&xoSsaLZ18PLu7|&8+ ztb@}{B&LUX#4Jwdi?(c~FafflnW{(B$_~a4Nn4 z$wT7#;VF#fJPq|sXpNSjS)&FTV~K^iOm>hji<#{EP|l#S-mu5Q%e&QSMKJCCKuH@* zD3954Q?*G)1{FCG)$seZ;-s#Ji9Gu9NM|gW?GVXhf2BC7(3z7w_BKTvM#RHR+ra2# z@I;N+!S>K>OB&^jCB71| zglzO7;TT>L!Gw&&VzylrTUHcXro`fTJH(dv5Q{>S+4-jJV{Hl92@+d@bN?0U;nc1m zmeGzo#%}fgjg6xx76@O1;7PMWrAg=hD^!}8iX+WRCry*H!nIo7bqXpvL=%Z{HlYDZ z5OZ9-+Gg4?FsvAsczG0H9-P8-c#I`59hp5il)?mrPiJhR+F(1(HAbysd&pG)xxHW; zRXZU)aZp2!n%IPB@5kabb%=s7X;&qLH)Bv8;aC-RDypc4u|rTDR8!to6FzixYT2)f zND+7vY}m-Xr?fJ=Yxc!F0mjw<)j>ErV0$sqkWoYOJh72Fna#*kFpYhqELw$9t|}>I z%zq>-(GahR=C9TJuZC!o%}1zrEesqv+T$t5f0MC#xLHPXCORKI0{7i$Z2A#0Ga#bY zx+^GSXt0*iMczc5t(X10UycQKz**x`+EtWxndslD*0^}=8dp)$_59*WdVSZWki+w_ zKSFF_J)CYLG2KXE%53oqUQPtw3vY$&cIamC%W~na%N!Yha%B*S>DKl#)^}a*M8Jwk zCrTuy8>xrgM33Fn2c^MQWbkV32EzQ#U{k3MMMlfR2p&2oSLCgP?T2^Fiw|n@bRB&m z#i`Wt%>u{468BE1g^y~g&u|`Ubl^!%*u0@16!O^t_|$L0IL#AYoG9{l*+SDz}V=D7O<>l*%i1$HZ%8g z|Dx!bkkV>65mj`%*PJ zAhHW0sIxkr7&DE0&j1~T3Y>)wG)zq@s?l*P>>+&$zRqw9JO;zb=CPfO%uWu)Hudeq zMV~@t4+y9v{_^P^P5^sysa{aB8`kYhuh(BZ<;QEC=wf_Ggl>g6csfadk@|${8t*DH zE%gzh^He+&Pwgfnrv)tO!%LB}CjvbuqN5+9sBLuI2uU5+!)b{rFrecapv1&Zx)~j$ zS&PJ;{?FmbM)Gq=>RU)^sfkDae$+KY(Yab)$ztxuhZ@1pg0DrSkq{yB&$#h)&~+pa zAM?ovX&JDy7$~s|-59V){_e>! zxYHkYIw}8#dScRfGx_7Hn(Mimfv9rvy%j1jqkuE*;m(`b`xg{eCuwhVFoAPI+b7%> z{WP~%-|UHGvUtz_czhlyJh;rP3rtG3S`#;4l__UGK4%%81ZdPxs}g*Qq<-k8bY59k zHf9X)*x*D~P4^L_As=;wx+V>?8BZy-^p1z|eh=GYvYC%I&?kEEc@(nXq3@~?b(#PM zoS+p8Kbxj+!W;^@^k-&MUXl397*`dUPhtq_giKE#e$gt_d-)xXusT_x&Xybtg)vWw zs&|rTF$JAikUD^&-WSK);_XRr>es}}g1yz(d9mo`k*N}QOkMe@W`Ep+`0mt!L42EO z-*&P!B{BbN)H+WC+n+BIpKyr}7KzWe#2Z{<@;KI8my~*6ohj`rT%P>%PQ(lhnX-}p zgG)JHYoBZ$nsmHftu@;V%(UrXql4@(^>?>W@~=A5R4m0{*TclraihKdgpW6>Fy{oz zjtys$G8{aQqrRra;%A9y%!Hh0-SnLHFyxK?oOZ#MO=n8NMq%gnuHjUcE#p@&0x2^f>xy?$mzBP~2Y(m!ohiId9o8n} z;pOr22JM?wP1E~>t~*jnqFNU45TwiX$`ee?ou1quRIWA99#>pg)auJJp}&anwtpBa0e!-ZF9O zmiz4~s?XD1CpsYC5IuaWfKDQLLKSt=_Wk=LIwt!!ZOi4*nmfOY(+}%IgWQQHR5KfD zbUX>+w1}kn1_S<35WRJ+f_x=Gm=@3^wBrfHqWk0e{yTmDE#2#B5@)4HV*YY5x`0Fq zb37}JX;xhMsGsR{>XqlSG^>e0VLhvfcm4))&;@N!x2Nb<7(kZz2zfimZH}T~>Dy3Y zjRP(=3t{NlNm+vs(iJyS74xO1>E`Qv1~&|&=sR#W26@~AbyOGxVcnSi`;X^CgSIt7a(cnYDJzGbf?;Q5vl!6|@ffFpQ{pqV~+uOrac ze{>2?LExhXlm}fDLGY?#CSS5c)d)RJk0(3UMMH_^5a{rz91u|KU`>u;t zCYtHT1K_D;s3K7#QIW`(oUC(-mm}hA>g%FaMaE=@4#uY&;>}d<>+re+mlN5xl0&{^ zU(JYDrkt{Ai}vzxkf~~pcr+ew zCcG{h_i&JHYK}xS5ocRn7fpCL$QU(8ZL~Jd#g*1SjAqtHn7oxA)6MdBF z&R^nYa)zG2L`-KYlk08bU`rOUvNcBUPU@Boi=SU~a@TC)!vfvtlM&jeLIeD!kP~X8 zT2$O76&hSM3*(mxbz;OlF?fzK69XLm86A%yz2xM!N~2yyPjC;8X(k68kAQ|91#}=F zv7>-a1k~*)pl{n?qk{$sd>TrR7H(RU=@uNz4>=KuPwT)<0!L`|;D+r5OJ|N%WV2{% zq;DQ`(ZyHIcCrrzX*6==khS0gv-rp{GnNLD!M4?T6QKIC9By zahk(XAhEpyU#ZboeaVtX?<{hGX&n14__O#r8J4LQKK-nz0m|p2P(P9Wt&WbBe?kq7 z2{kl!(2$tLhh=Gm!Gh$Q`u#)2&KW_#_RlHo&mH4z)G6%CpI|@ua|~9 z$>NL@_EfOGWPbp&7_qC@Op`loP{u&Ejd*99agpQ-cNBLy$=L zjS7?($qf|Vpml&s*zJXr~X7K{)6YkLMPFs>>z9Ptm) zyGm9p0;FB3p%9(Mhs@mn74f-gy3+lKnf}uCY5`Zzul@s#MWarKYv4PPeDz&zB&5D; zn7ZLRF@%Pz+ivQHcd$U@Z&+Y1S16#Y=)UZ~yg#7%f2r>e>igMr?`zC2um^%K(g9cN z`;Gd3m%iUmcVv$GJJ>Y8)2-gt#?RPvjDWT&IO@GHqKqu1a6gGYvPV3;!r3FCO6w8(uF6$ zQigYo<^<^IdDOS*WK;p0Na`?DL(3s}OwNy#Q|R&egM!@BTJY^5K8jwnNsDy3+(OL61Zj zgp1Q4?fYb}^x-B#?@^>?+ze=cAg|NXhBZs*(2E z7)&4l%V0|j*Lf1#LWx~ubkIF@I8}Ww1>B-g8t}LEX)hK78UJ~rs7X6XK%_@8`+RfE zaH|>j<(OP+GR4{Q*f6UZ_ijy29f9=bV1OdIdlLu#b|!ZVv^?6kr$4Ve6I0!i*jx4)9_|Cd^w(3_Cx(UlC=sO!&sF=!2kNkImH){;!vkCp zJ<^5NMO|3!g;d8|s4|Wgre9hFbMFI6ZHu^ZWcUOtwTQd;q@8CboKy(_zFA} znS*5v!fAZ|R=x#AzWQ&IH#dzMQu4l)Z()(IVTbYz%d@0G$&&7A{mD%R&L=ln_XK3@ z>&@dCD2*&+s6~*=gS8OWsk$7_ba;4$1Rj%L;N8#ViKDP4qL4@sjcB^{HF#RzpGmD_ zjSjl2Z>^mGsV%%b9A_*evgaGGWFi~`ZJh3@NhP+>=n?!E63luJLEbR&h#Jd?mO2(u z;zNS@<*=@B#>(G8cO5nvVUcQSrH&)HFgT8J{B{6+lN+*-dMXb>njv~ul792hNt5I@ z-yOiGf)ep~JW)6SICUbNFiL0&0d3SQs8~`>o(#QB8G6^~pnFYfDk5d^T%M495&`@q z2ZLz>_?txPoLU-CFM;GEA>wI zZYFD|Hw!7m2`^k}CCp@15!IT#i=fVQxk}`oTPnAAQEvM*jxqOmCAifCYt3ZJ1MAFW zvj^5gCl73ZQXbf7_V%DAvzW;D)k|e+uFi0)2a;YMNP2l7>E(f>mj^;G4|4RPM3i2z z%Xd&Wsp(YHs8<5%yVX6uHd%X;@+Q_Mt4^Az{IzR)JKnmr6RH0;#dMT6{W%dACfnVZ z3zMx5f9=|Z$&>@?0Gb_84^ZoX1^_p?#Nm8lQq-IbVRp9qm z$7ypd%mStJT`ICeorzIlwo5A+Oqk2?#Msm5Aeub~{PArDAMZF0yHnIvxB;}e{*gApXsnJw);N;IzktI#0r*fJuT#DyoYybk63*)#u3wxJq#xml@?K%s zNPU0_cx_t>FD1uQf1~L-FMT?(=Y|mgXM{Yok)Y|lI+H*0a4^ZC%|Hsf5`$Un)CcF_)|D|`vO3D;3>|Wg(F~k~>Fh!DQQ0A@@*{OIxB^ zZhhPMQn~Xw$80BfUgzH1NuJlakD}Fi^MM6tF&~uPVU!*%pLd=fZQPY+WL_t2-IeBK zUMFqdfmV{<0ie0%M(JT+Fxo|%ygN^iHuHL>N85Ql(>qAfO46e(Ju8jg#LSE#V1JYYMtl5jUZzd4 zTB`9iz`*P2moq84rqQ~~)HCZuS|6BW@zjooJ`%?^z;bDV=lv+jLMGUs7q{{*}J}Ti?Id z_y6eoHhuqw?kKQvR7Me9Mhwab3|Ga17b6K#-?0nwgLP}vL7^0`z`$1mzAR5zCdxXEjHqQWHJA$giZTADh5okDZ?xueJQ>b;?{>NlWRorSVRYz(ct_?z^ zW!kGr5a-3@-@iJ#sAILj8ETa(>1Em%f;YPl20c8dB|{2uHp{9F)=)RHN*!jgj+tgX z6tdy1fqw{-cwBR6F zss!B_KzVTgWu8gN|2~EDsU(392Vfr==#y&B?>#cUPtSb z;7y&>8DLxB1Ims=ZFH!A^-}8{>fgN728X(psJu^e74k!W`qa33b*aX1(&7g!DnWC} zOf*+M5TNwn_n>Gyk#_J-9!D%#u9xLp!u`<52`#WZp_s-7xmUJe@K|hA_2!4)fVfo*3wa zRgB&{A|^e=lico_tBgkO!X#3J`uZGf;#k;(kLx>Z_<5X)7*>FXsA}>Q4bcqRmm+#v z^^L<2w`AO+F21xURQ;TN86u(Y<$lm6D@woQ^u*}MsV7zQ14T^WM^kwiQ^fqIZgr}? z<_Sob{(5p_QX|oqQ;p)im173G#*bcxIZ$yJj#vuFnmWmZ}-X)YYK{Du9Nv-TG{g$YDLDZKS zf=5Ug6T&w@CmEsRW&Z|ZBU5ibN`67qlN2H#FX5IActdnYzut-S$CMuGMxt35qDv&N z;@@0@|94`~ka}N{`Z)yiJPZv^O}bRasTz#MAG%1R6Qy|`K2K*;Kblt4!z{kTLd{aG z5uSmZ<4`ZCz>lB50JhOw`)Xx-!Ixw??+|<>ILIa-3 z!(QqdqQo&6a3-h>shoa-JLOMN%{G~)H@ql6utto*#Lnd*0SJA>R*OJNN!$gA-$df?L4H=Z*CfrY;`m|9r_+E>S zrYs%9F9~tdJq5hQvI*nMykoI~q1Q{fV9-8AGp;PI8eCLpnSJsfqfba1%c$g2*B0v~ zb)E8a4USiSuDk2WpD%BvSX|@jdtwv^j-E6ZO;0NPzp=4!i^5<5d^URB4u} zmk5O$NErQw0x7f;-fs)%bp|FZDU=>&osuy77f`c|OAMVye@H+}!nC~1a#7*dy`W>-2KWE`AY7~Ngh3`0+R==Z;5XU{p zzoRMo?SIsP`yyyQ@G`W_etXZiPhw^+czMj5*JeWKti@Ndjef|1Qt!k?74a1=`qiS1 zARKh1mHdc<7SiP||wwfdi z!e{+0@pz0VXZ2cyZw=nsi!`Z=6aRF5jNDC!TP;ql+pDfxoXhSN z?B2odW9 zqPiu}Vu>SKsN61Xp%S~6-N)ftVo0tzS0VPw5q$!?g&dXbDt3R%l$YUJ;^M(1|9W;m zWcSKe%H7@U{<@Vy-)ddd%M!66RL;Ax+cAXb7qI^Wc0XfE`A{mKhgkF7hZ4^d?El#? z^54MjE$rUS?&Iw4)=r^aBgnmK1eNyR*l&y^N}AnWN0JWLu)l1SQT>$YhxYfB7{cxt zxX%l6EphNDiZzwp^G9`nrrH9z)F!GhrVU36aoYNxjQr>bF(Py83878p1m*+y&GF&* zJ>wYG-Pa)IvHUx-jX*1~@iR-D3@MHDJQJL&ne%9L0zrgb4m3c_)#w&R3pDyAqeb*% z@QC*`Pza;yC7j+LG`gI_-qvUxhy7inYZ(ct;;rXARRZ}T~ zO`+vLexL?$R^ewGPe#xA8h8k;X7r}$V00OyEn+33YZ$#H)-t+<(VxZ77~R9@FJe8T zUom=H+{x&1M(>FG7;R+qu6T^m?-{)({>Xa1#yNUlU?UM)zr*Ms;wb7!#V#4@H9r-{ z88L*O3p7A{snId$)fF<4hrXCP_&JQwct&4|6UgSw{b7Hz&2ez^<{@ww!ygrAnMc9B z#GHgOzX?22+|Tas+1+BE0LoTyO7SJTb-t6}Z}t&ov~MQdLw$4MPG-tfxR!O9HBKDe zeU0@f+^9kBdiLMS?mg_@&+bF)J^^<^_e+6saNlS5Gj?TgE+|#(HV0?O3Ee~39mDS7 z?9OEORCdo{_X>7zXZK-tpJ(@7cK^+8RfweZW4A3tsq7g#ACw8~&SbZP-HX`0iQR|U zeTm(z?0&;;b(rD~Vt03T4`p{MyGz+!%kE9={+itv+5LcB86gP?c89WiNQAVS!tNq= z&xAWfTo%DE!eBJ|Iox^Wx4}KVd@gG6?DD&eA!1#{`*81P_XT#h!Y$UwA?DHDmqy9` z8N1iBdo#OtuzNqd53w6Hi1RV_Kg;e5?5?+n{wn+5Wp^vPw=(^o?Eea`C6d*5!tGy8 zwwJB`1v;@I?CuGQ6#KKQDA%+9?&@dFsOS|V%iJwC)fW}}$7aGkj@?4+Wcbfv_h+#) zd_%_1`Xsg+T24ZCl%JE)B) zbJ@L(-A~wU8%Fd~*?o7|-SB62C3g|KzhL((cJ~@i^fTFghTV$Yh;jtGm$LghyXUo^ zP!$!Av-=fXr*^Wvmiv$H9>(q-?2cpi-RN>ZM$=x@aS1cw-@o=Q=s(%F(be$w+9vDh?k6mA?_>YN?B2?hC)ocqyU((_ncY{| zT@M~7r?1uafrKsWZiXwxmiqlslJC}2`}#XvqLAiW>Msb8OTFBd`ZesolHHrwRh*Bo z|M;L3e`~x6?mrtTFJ=?Pt!yGWwM}<{-nZ#qxVa{hHj>@FnjVFJ-=>E_e{|60p_sfe zvpEzK+j4`-VsdcnUBQ^#huy`kXOzd}IdCm;#V&KJFdN?G(yH;z0)H!OmzxtHXQD#E zIlcuzQ#9)EoeVTbqYDsbh?6zC8DWN4s?k#j!?OjAUh08}qFYV;^jgLo8UJ%v3D)F?&|QD_rTlQ>7C zSAcqp=QP>^loVfR^gd9t=#L#KlJW^qAF-Ix3h{-10e)cVYK??-3eYA-D@6!D65LnZ z*hcYIh?q42i2h8ry6auEK~A-9rr*urunqDI>rOu1OPm|zh1P@gTT1-5q5OA{$(0AZ zq5S0%^iB!-M+y461O)$`A+XegCI?RT zpqYU$1)Ch@!M`Z5jd!FdgB$#(229C@#ORDbNU}jNIzLb$xzZW^1SxPeYlJp09^kUR zMBEmsG+M=F-*LVO$|cLWo^cA zF%jF7ghrI@ZnTS9-Z@w+#+Sv7kz#k+azfZFpiyF#M$3S97d5n~M|u~QjWzZV<271W zc95~BSfA1oMk^_ol~)=^h~K#=ZX79IaZ$lIieCz#ykAy+uW__EV2p})Yk8A#j5toC z$DzwaajQn}mH*0^Bqr{wIKL@>!k8=?#}ZmAsw?g_ju-DAsL;TQ-x()}_s1zTyyEx9 ziDL0V3LQ}Ksxd{}q|q@IU1F;EOrzx$Zy8g?l!J-$5)rH{7}La=F4}5L7guW3Qn|vI zAs*FeeC4OcO!1mV^AU!pg@-69=Ob*k=+9`axU+JrF-I((pmcd2Xs-BLqmO{*iJJ~r zVd1K+#(YtBghGRW7KleR+Pms2W1(nAAyVE?tTN0+;!KT}Rz=LbXg^wo{kW>eTr8eE zMxkF;HJPW1>3D2M@m{YQWG)p`CK0+sd{Z^V>=ajO)GIo~>=F-XlmS{Uh8?Ro_loXj zc8dchD|BRZPmE8iG@2XT-#klf)My#d*`f?vkd(rzXr*zkSmmOEah~|ZMRDVNaqscO zsm8xmVhn9_iIu^_svk60iQ_anvHDS<85&VvcY#=-kzIW<&?y>qR4>5#yi22%2wN@A z)`(#i2j`Z`XY^}zy933 z*hObpUz?Y>=t3*tyIdohU0lzs*-)$~B!`j_q?h~81lvHirFU~xXnAeKKY98_3FXm5CXbR8+;{B-#<$-=Fww$EUnKc`H4~nO! zDYUxg1>Zv=i-tu~R@c1hdsuuuTcJy9y2PX6>Uj#?&gk5Q3O!l#w(n7Kr$&FM5&kE| z?s*EkMEoQW@;@yuc2R}@8L?iYEj7LTzZ0*xsL8((FD$BfTWSXQpA}f!-9q&}c2t zTjFVrUIhA!cvYjsunPY>;vAOP%KbT)gC> zIsSi&k6pA)d?A8Ms3eH3i)r5anWi1uf?t|njp4`JroLN;->(O)o4_F z8_+b34vH@j--vk{O^%-ov{<8g@yoHbxlE&_;1u#qjm`$AkQXpgtx?L$R2VeF%0@on zqO1K<)xka*Iay z#Ve#Gv!|(e4l`mZ^B3BfToQ zNFy^r=t+%Yj9NPtXJ1BVYSfmfkX3SE7l-k>F)G_MqIF|bj?swLjn(o{jcDCiEsxWP z){QYaU8B}oLi06x$@jTGCKqe8XYE%&%NVJej>$7r7~5b>UgV-5i5ht&qZJ6-=I%f9`%L0oAy(8*5RLLrXDM_c z^lX%MD+#R>mvPv^8vTsJ9ypuBShGg?7^4lLcWMV%P4Y>FS zXtc0yU!ZR^T3&Y`kaZ5_VS`*-cNkE)M%ULJ1yrNa{dJRp8Z_EiHx;O_MqBD;0qvp? zTX~agWps)7pl$)e+BN#Tu3+_+qg`~mm6Qj#Xt~ua$Ghk(tB;)MqVui3a*B)ATK(i~ zjb#1lR)4ujql)^US_9;18YSwlvIfd-jr!DIXAP3)xaj9rO0Lxi=Z1}4-Q+?S6|8o7ii=LSM#wG~Ew@I>l`cBV8YNe|=zME;d5MeGT6@TKF8Zmpr(Ex% ztE|1`?Jl~`8ZGa0(a)_h@(~vmjJ@SkF1o|oM?UYO`>lQD%PxAv8Y|y)QKhk;e9uKs zS^LY6UG%(lfc%$>UbYUD-?->aYn%*R=# z3!ErNZPVhioTL$H zHbYL;h%}oaPt%Arn<3BAh%}oaFHndzn<3XQQnR%g@^;Nhn$473H6qPs%9@Ldn$48E zYebsOl+!gL&1T9~8j)r*(F$=MX3BjSQ67F0m?;m}oRo)Ia*jrn`YgFjBT8?UJX0gmWtLp45v4FoUZxPI zFiT#^h*G#FFiYO5IZ5Vh`GH1MO0(rZHKO{PE!FaOgP>BHEu*{`-XN%yX3J)cDD~O$ zSdA#}v*k$|kuJ04T!mPd*>V9R(&e_mY`IKxk}h-PeHu}j&5;jlL@CUXn=~SsbL1-u zvCKL0RYoN9-oPCBwTm7M%#}y}lY~T|^W}<5RUJ|43*>5zD7^*p5{;-N z7RVCm`$@7i|N2-9^s?7RrCCc--6A zGIF^}fn?gUhS9sBaKkA;eKe|RSOC;tqkav4z|TMo(J0&SI?!m1c58SSXu3wD8@2`( z$$~=iz=lr)dAUNPqYze*Yh3h2V2Qj%qeS%}umxnuM@r(su>rZ>9KAL%(3Bj5B&mu4_mE)oGM%90QbLqm;qPgO7IcJ?pf!g$PdAdeax69>^7^%8l zE-%!G>UO!jNTb~vP7W@YS8Fu7;nZNayh9JsX)-YNbBx_wIuhNKi{Z`4FG@>UQtK>Zz(G!kU@?nkW3CAk=j7Ic? zW0ibSBYMKIO1`NPJ>gg-|H|mC(D)`w?;jeS-b7*FX!LN?SN>J9>}slqw?hBousV%~ z_a@GiM$>z5q&#S}iqRJu-N&5b8iBvJLN7B4YV;MODvcVGB(qkdQH+{3n#?GrQ75BT zjef>x4~?E?G)|*Wl6`!uPn9kZUv=-TZR!LivD39nG%=*T|}Cm7ez@>>}B$ z(JKi1vD}x@%HVDde-8dc9;eahh7W?5$gOVJ--DOR>~$n%WpH%E7s1Qq6$)|tyFy;) zqLalH@|Q09Qd}vYchNR+m3+rVA-PU|?IIESnY@8FM5&LgkXOrJF}ehEeShd0`Gkwg zLf6XQxhNL8PX69S^`YzKt1cSgzd`;*qpzC#gx1S%T$BpkC>w5|99y(YU^!1N}*( zS$&rR{ZpfreNP4|zfozuzVDafZrNX>-}K!k?vbN3daG|p-YXB+Xj|V3`3pHmqo#gK zaYE~47scd#a;Zim`b`MkFVE2E=zbH#1M;UDE$Me~=mB|yMn47TFXcTNJ<#v9;DhoR zjb7;|LJ!F|H2R|7Ht}ousYdnv`vo7CWjCoj9NYis(8KZojegvJ8%~Rz!)S$guK&j1 z4MEVa+( zm*=0i>JtTg-|xA<-~4_v`O}o5tM8SP^Si%u?>+b2bI&>V-gEEF><@iKziPknT=c6t zc#p~BiRM@JJ@WQGM5V7$U(>%Ryw&Kh=>-y^H*v5>^{3?Rd!cVG{$<&t`hNTErNzfW zkLu^_x1UR%`b%jc#K_R2xuY*hxk3I5+Va``GMG0B##`QC zOs%QgwNzt)XG^_JD6|Qt1JF|EPfB}bWk%L(LDQwZ`gws+CeK>AX`kq-zerb4y;i62 zPdJq=cl;|)2MH_%weWQ?~(lQt#)RA`pASWMp?oi`5e%2}&ZNxxJ2PH3s4(ifwvgbwC@ z!4o=|$@=+4DPy$pze)OGDgPBoKPK?&p7hg_er_6Q%A4Hpn=+pHHRq82r{7dhMlb@Lt|b-v^{5 zp+kRii@T)^;q+yuvo#}sV{6{|=w#F0zDzCc;&qXCjbzfsZ%iI>uWU`Ok${m2+w$4A zV`SykC@;-@A|*4k7<^7JUeDZlEJl(i}Af#i*Y5a4pFLA!A`)=;0j6OD`XJc z=um%wI6{Z|0b&cSY7zGTt%`A*R&~z&$Ahh^2@ov+-)Q4k&2Pl5`-|p389Z05n*Wc0 z7tMbbWteW1bcecj{`ycWb|p`O0(T>=h{kLLhLN&XwR64-HOii)QF0q4w^3bJw+;9k z>PXF$VeIEzsdX;!mxaz%#N4MDiF{Dtalo&Ho&>|C7+8sC9qfxSSdvSCOV+^{9GN)B1Aa zv1`LQer3gR^_Hf&73p0KGzh|$I+MXR_wHX-SodJ;#S?#8`Vy0+0vIK zttxkdhcdubODikm)S%tU@;30WP2FbgYJL&v@#Y^_9vwl)|Z<7RUKAtX?4|2)+4C3&-&Nq#;SeRkDIT-=X5zPz0jrhs$R8g{zbsY zmJO?Y*1~0!QVZbodgZciP`D83Mr*^etyP`CTwc`;xC`ZXEK4G{e_1u)$g*^mwhk=& zOyy2>qfi)Gmalpg{6uur`r@)}6;Dd9pM=amR`rbf%Ci0H8TDRIZ*4KLM!j`JzI4|m9;=0tcsR@k#@gdMU91}=4w&dh}O-m*Ql4RuGVNo`>tsHg70PPYQURC z+J~jqokHQLU_$z%tzD6*?+D5q7R)_T=6)&jMPS|^xkvC13;uDzKWt-G&0pz%O7Ks? zldSZI^k20;6?sZ>L;As1_$cdp%YGOMsYgIRq@QU0Y2;Zc|E!dMLDDbSb-#o1^VD;- zXU>`DiRZ(I zWbkEcSsS$7TGX~?4tZEVN5j^x1$_FU$*piuioLrq_!4677xtm#uU=`;}-vdrqz9 zXHOR3?r7NGBtElAFio0~mlc|yNm+y3mHv&AyHPM3HDfPVYI^uVf!l;b!iXk3Sk|b2 z+Vb;i`ii^C#vu8KP6>sSKHTyC2=)Bgs+82FJm*9S=S4fL>*^XMy+~lQ!1JOheMiT6 z6)DY`E2Ya?&a21^wY*TfPSQ7M>d(!ZKH;#9VY=0~61Lv~_?c*4TFl!NNb_c?wNp6X z2_N|7XdLj7XcF+T=sv)2M91`h>3AwSq5r1indnY^yyH87e+L+sblgrq0!$K^TX2f^ zcLE;)+$UxBNtu0`W%lW>0*(oOOz>lZ9~1n9eiXSA`tJokA@Cc3jnZ_|UT zx5Ya3cFb$tI=yeknFvSnig>s zCw8xfkIEPw)jK6kEuyF0hPv;b|KDTx3pK*m)cr#3evHwNfWK(|!kYVWX4C|DLmksx z72FSM?~mLsBYVHjg691~`F>Dqt9e+cJ&yFM;8S7+&%$cXt9U_by(GEM!h)`<_^Dt* z(xX?TMZZO!pGBGWs#m0SzeOGMTkJ)ZMQyCY%=P|AE$}~z)uQ~unrDPUmBoI&A{;(% z(DLhB&kTN8ouxZEvaV@KrDTaBVB#M{7F)?*!ynb4)S22|Na_ zo($e0Hxpk3{cZSk)mHT|U@z7#L3~rz*8#6o-vZpFo(3FL{{*;4{R?19eIIZHzi%B> zdC5Jf&ejoiojM0_Ty4;0>IR&Cm#G`o)qpqC>ToMP4R~0M0N##IT9@JQ5w@i6Qu_gq zs)K-^R@VUDqpkz|thyfXel-sG*XrGXUsN}M{+IDdY#(_2AmG>VIcy(3?|m5Xo9d&0 zPpLlvd>ZF2KKQ)50H0Hz1bjh#3h>|5F~FD9J%B&P*@aL26z2p!+=P7q@D)V#ec0ms z4WM6t2{5RS16JvW0jm-7#`l%$#{lQ*Cjjg8Hvt>;x4_i`&AuU)cJ%Bgr8v$?Dw*cO% zKMZ(Se-!X`eJ9|Z`Uv1%`cr^M^GhG$6+Y6r(nmUjLSc_kNP)s)b$<9!)vV6fU#M+X%k_P=@9{6M z{PWl+1^%5tUs;cSR1FAxkHB~}F%trh2s|$Ed4W30+(v<&0^=YOmI3e(ez~cg+7pQBbyueO@<8z6*OW>CUJ||GkBfdf4MFMvT92a<(z%L7YPM~^| zloxoBz+D2z1>Pm_%L1PhsOC#~ffotfC2+wx=b+sn_JYsUYS=8kLjZgD3OwJco(Me` zdMWga(5oSTMNLJ0#rYNe6(6s-zv7D(|FhzMRm3XaRJo{fW##(H(aO(OK2rI3<(XC2 zR^3|l(W*bMda&xDs)wr{t@=jQ53A;c&kWax7lfCG+r!=A&Ed<%i9F57r3RI z7an$$-vxMQfVoEn{-war3w%i6!vdcWcw6kNa3H4q$6~ByFt19wqUPU`+jSNxZ##>* z^UnNA8NO>t(vx{OI+ta(l-HKyL@tUiUco2lZw$O%*mDNk-C0MPgLNB%N+s(y1CG>P z4rnNQ%Z${00(gU&y#&r$$X3=YWGh!MB+nm~^g{x_zwl5Rva{^xzc+O&$zj*PxQFrg+_XB=H;7HxgNRQP0F<@W`Tb#4x%SfLgY08bUG3tvC z|13n=`K>Bt_=j(M!e@*v{DlC6&?A0#X&7)hJ_~HA6^M>lY9%zw!nc~70k{epW~p}U z5-faA%6!oIBZ0R--z>~?gdc>?Y5Yd$n~}a1dZ%$my%FgTL-(}$V?YbD;6kK70%&1o zT8#8}1%4maiQnxK_;2_Osij_2OOg8nKyZuCgKB&NfiR?7fe8w%(94mo)GGn2^eVux z?f{&x&j-xv3jnXxZwGvz?gYF|uLJzJ?gIRjz8LVcx*PCw`clB-dK2JR^%lUdVLfiC zM|BV2V|oYR-|NfK`s08WA}2cmU)1je{DHm-_?L7a(*G{-7dnpg%X$FtmpTFXE4>@= z6`cfpRqq9SP4n~Tzt$N*W%1MJ+R6c1)+nIQIsoXm#sJH#YXQrxLx2J6U4TJr0x)E~ z2e86=FJPthe!wd0CcrR0pJ%CvbqnAe>qFozYTbr(HK0~C)*mAs6Ig3~1eh}fo@IR$ z_%j90weA3Z9-xJ9U-?tO%dC$9UT%FH@Cxe){K#MWaMq|k>np=Zz9jI6z5x8n75;Mp zEq^7T-ya4n_s;^ zz&ig~fM@#|scZ1h2Yid45xWKcHv=y6GorTyKPR+Ez16=E@G}2mK;;hs{(=8(fLHpL z0{)?Y8Q?BN;})rYe;MGQKMOeI&jaqk=lmC`tMU2%MJk04lq^zd|Mh?){&B#p|J{Ij z|N8*<`)>q1=>GuVHU66cuk$YlyxzYOaNNHN@ZJ6nz#IJM1HR9H0pN}Pw*!8_-wAlL ze;wcl{ax_lF?j2@s#e(6+f{Q#cSTFp?cq;`KNmh8{)h1M;r|G~HL@adLFDSl!N_>z zFCq^`9*z7eQZ?t3b6%ShtDaZAyE&B1eNXiR)qh?6x7FXOe!f~qFN}6Y zZ;sv(JraFBdSC22vG2#$)U2<$wC0MMp_)w1him?{=4&<2)%?1qp?0t~T|3gK@a;M` zUZvE})UAL&SGNQHAN6U#Unq#6=I?ywtgB z38b+E9w3T&Dk>%3q&_Wl&Q_nnH&Q6b>$CEHnT@}~#$RFMN3|(`zjIWLx9mtPn6NBsH`FQhSDy25$hSz1%`NYAz z+L+A0BbQ05jfsPatm?_f^NCC1>A@6Ui0>U6NvLk7F3-kCMu6SYvwmwFbdj2&8D+}! zX7(o1YHK!wn)xyEGzcD4XEqym-?sE$ofya$GP@3rWU~20cEf0TKzUzwwW{u6PoDQ> zSDUgK+z=ngXR>3${U*aQ+3z|ykQm7)(Npw%Fe$0avq`k$NWyfI7}IlMoyhHp_@L>y zNCN`ckjW0m^Av?k7B57s&16!Ec$&#>NO-rY2ofox%-8rawS!;ShbP7)A@A8FA8V88 zIG9HYyz?QV5{5W>YD*TZU?h_R>;Z~)rALPo**LnahI0d%Y%1BWdd713#IQ1QRhvdr z`Q$)6mtUVqC3dqp*0BpUugj!TkUogzRQJYYEQQ!gN!nFJ3mAFHWQr+2nw?Sq#6Y zVJOO_i7_F+HJ;2e)8&L(#D4PGwQm$c1$%sPJK>S3Q<3uBo`4ml)n=HD*ooR`>;*3a zdsQ>lP7URT`?6B5PY4TQk1;446Hlcw2l@sw!^4SmKBvrU4&UyWO7!g;&Eyk_NWghM3(P18~E%wu<(`plHwJEjQq*`rStv0b%n_8<) zuGOa3X47kP__FD>+4S0MdTlnnHk%&4EL3!`tzBK5$V>OAmxY88*^V@XCb;79lDDaZ z?-9JA;1zgxdO!3)b$8~*(gWKQIrtSN>2=WIe%ip=#O`F;E(TI|N_42NPi@Ym6UOy} zcWR!3hg2IgNUYC{(n&bZlSAE|Gp^61i*xMaCW}N&N=TWc?fcA&-P*;8yh8>_n+8%O zfCrtDI4Gor5}tO=9=9fvc1@&M6OTeoq@^aFcFo?5_&TRE-8qMY?wn1gJ4Y(rIjPv4 zvl;Ks*#wel%vJH!S~2w=cwm@&etFx*M0$6Aj~W!Y*)OS7ZqUphm%!px@oSqJO%Eo9 zOujJ~tP2v}_n~+ySA;-IoWM+(P4VnrcnLU@R1soyG-pbBS(<1p^?`*_?rkz(nNA zrwFqJ`b(h|A$t#Gra01+`hB#lCIA6UE7tQuGqA3(tGE|-l=eH4zkz~*N){e zHLXuz1#Om8q-(U2ZZQ$Z(rk*XO^IQwYNszSeNI;@!Ij2TRE>w7qB$-;Wd-jt=a4Bu z8xkc*R`1!H9JzcCMzLokK9EowlCW8HT@qlH?jI}f99FMJBAXNW1DWjJ-pnPLoH*7Z zgzYSu*PF3(;5R1;Q@m}VLwvK_D#E$4V2RC{^@*W4X0x2LI=W&wk`M%M~x%P1rf^2!euBtT0l*6^%09ZFO)4E++%G4k}q7Y4_jlVAp=AR%dp1PRs)| zObNGuvzeUAZ*CaHUUYH>{hnk^;S&#JrpqbRDiOD1^Y)r!yIBkuiMpi7RDyPjOl4+H zp4k;*{a!pqPPVD)7Mg}nXP~CZhSJNXa++*(FIB2=4g+R*r>Q6=>(xr9mc!4K5}U$- zIQ33M&=th=luu9wO}HhtCK7u)(}M-KW3-pUJsHato-Clc(`&O>xF%rwh1H%j`@mf( zv+Uvu8c_vAQ@CMFsU7J=ZXiCADB$tUOvUdWA*;=!!~Iw|^9V{H<=ZHbv9PnTnm{DSQh9Alq^hms%s>dOkqcD@BX$YhU_i9!mNR| zyVFA%thEVp8xxP4CVIsvaz;5otObIESo8sMB*0L;Cu&l;n zcG6qhMuGTXA#|ZeOk605`Or{sx8OD%4}vA^KoTpk9nUM4(=J^PemH)x52KaGbkjG8 z0MH)QZBzzj_9waRrNhiaievPnB8RZ_MTEz<29 zc0ypquYD;_6bOOs$za!nfx>3n`$!b8Hi#?~=!!6b(giV*kXg%-7)<_FZ2c(R#x$n&PEJ^qZLZ&sA zExfGH*h#E~AnYVIx@j!n5VJu-_FY>M*}~uE#DP>2n5zCionb~6Xkc$Yw)tw0<#NM*~AteNdG#N6V<(YBIhiKHokuz$pM z3+e5d15SX=p5Y)4hTD1!<8%NfhO{n~!KBA`M4p}YcBJ>F!4vgC)-%Y)#LA%fdN^dY zV|%x)-NH14>nt`}h zftOy+$DKLD7NYdX5@@q`8GJ(~+Xl3gGSB4&%yMO823^#kjayMbtx($#j80_JG?mVr z=LJ&FWLeNoY{+JYoiGy9PM?`B2!Jorb-@-=A_k&to042goeAlpV9-H6?JhFubk0pL zmm-C(xfv@Y!_xs~d3ZOLqB0|WaL9=L!z&b)fM&r`v_E!G`%Ngi5VSHO6PrbM_D8gz zx@=rGQ{6eL-j;M~OfqmXV3r$V^z;%2$ZX|UfubQ8P@_+a8hMiP^kBvOnrODZEvD3i{aID|M?u9B3=Gz;J< zc=wz!HB+^WlFgzZ!nuf<@5yG;a)!pbC8${tA&Kpoj9Ho&UZ$$(T7$63RsX@nphS;N z)9(AMsuv7s7Ntc+W>L=8BK!Qg*?Y!pGcA)RG)&^_Qx$NW;0#6VxX}zH;5}z*LpR;P$2{=Q;PqnPTbDv*Dax;N+{$)T$iM z&Pd#pDA2%6f;GB5lT7wFUaPe|^%M+y&VQTf^-oa5%m61UWX~igB6ecu>=`h7I+{}B zKxjszK>kb?f$V9`0eREg0y1qipOUSf6R?H+nb<=1v}_@7dbW@`6I=G-+*E@omN}go zNapkkV6tZ#dMUxJ2ItIao9{N0>9qN_BAg(9>RI>%mW}cBtYoHW;RN-kXZ-{fO`pJX z7mfz933uUOBV0SM5fml1h}^?q`5HG{K-tkqtgaB!cPZtXiyZ>D_*3-ITj=EG>e)`s z-f4L%2Hd_jdzN4)C^?(ycc!V=3F%E~$L{g*yJ^+$xxWIfOKdhz@rR zNjn0pOn8mq7KGsTGmc?m&Ivo546?YohA^^o7jYQzlK5`)pr7I!RB6WjcoR#-2M6Vj zSX?=q8xu)%g63m=X~wGzKOA=x;K?E?Gk_?Ki5}q!6izONWwcyzWpPOqGP94LIs7>2 zOXkPaUMLF>tJU89Bao(?25^#6_DO+C4jz>DP20e`+G?9kPXh5P&}!bA$POoSIRrD{ zf^DRWbD44SI^_;x>9FI5*+>$1Q48a45E2gEo=C+HN-F1)v-O3=kky||ffqLyTC}`P ztwBhSgTv^99E}T+^@z+TQ@IPTUAdus!@8~&tCnt9v9e|9ij|#hOFLT6YgyXfzP5Au z$`vgumv^io+I%RB{iIG!M+S6-Xosw!KoMu znMx8Kl|y(ec5@?{9Iwg2w=l_Dp#vESY_sZ)-VJiI%p6Q}&mr{?`MQ+0z9SD&;oK=R zut(x`jFCx(xWS<@Nn`nh(S=&)zyVIe<0%QHk)j7MVc(Li^O=XP7NUBe@=l|O(xVhBrC88jY28*v%ddo$(@u}hnReOSrE19ryq zYG|UQ3{lpsVkCrYAEFryJZRCoX~FVUV%+4 znt9lf;~}Gcje!a*ESI2A$DH@0j*O#u^H!A$0?s7>IyIL>QI@%8fU_1%RUqqL0LIJa z%%HhCOzkLo5v`KIeTi9}*ABB{@$Q_+))5;=!j@Vu4q6%1lQ_3%=mDycjj)yC;)G|O zVZ<_>;1Mtf943fs%O*~WqpkB+*mT+ICfl!@A$B{1W2S=FNesGp*6Hk7*WGPQ7$+fi zOr04U@meqtLlI-PKZ$6PTPoS(3m;wd;Zb-hgaq6327o)}5-7LKS??(!tgL5l^} zwxSIJn~ZByGkCL>DJm?V0=I(3jL#r!jE`l!^R{^xUtxPdDw^%_E>4KwWbD|+U`kKW zgBTIW=^DF^Tc&Z$WohgYad3)ivR1&f4QbdPJaBUCcjv%a6h~&r1T4TQB>S=g)&z(P zuVM*o)gdhiT!6u{EuD7Ot;+Ti6u8ZSi9Z4)x zATqeZHO_fz(NXP%{e68cYF*EQH5YdDp$d;EJJXr;*l=bvXS(2gvY=xI60Nf%5ubrX z+w4g6&p=}N>_`mEKw`!0NDR(EV&&{eBxWFS-t0&W%|K$+>`36s`}B&@K1&)n0Ffyh ziiRukJf*T9SdaB)_zwNEA4RRfUCO6{a#TYspJt_pttFBxCNfJMXf2UlF_Bqn0q*zD z(4AT80X`fs1Cd#3LK_yoUi&WY&Mb8SA4`~l$SjospJ|wZNXP7k7$1n3fk=FoM9!Ou zNdGK}teT0)z$}Th&qQQ!mP9&WOJZiYGhsiCr5O{0$(e*0o%#HSvL9Fm+gB=(vL{;3 zMmxB*PK{wf=*(J0(+Ag6YK?O>hc?S4HzyZ*J5$DS6!iYsy|SdtL^GywN`a1**+AUqvwsEq`{8Z{zRU;!go_x0Vam9 z9>mA>c;80qu1(?tH@VI6&1zE|>%Z;f1<|4uKN>14m9F%Toc(TpAjea4Ln?z+23E)R zLY>QpP0193R1E|Wrdhqo<=@xFsG?~>b=4Xzd0Yj8WfWUdalV!}qjg7=%H9l_%#@(Ef;0LapK@!QKBv)_iuz7Jg;OBsc*Wnj{)A)xEj^LXu1{L;J z_`?VJfKLJ9mx6%rM=A|WR*m6pBmVWM^+*i?lTpJ+jUt~l6KXHY^`kE9if|q$Aolup!Fo4L*N)6w?&RKer(xkA8qu^z76(ZFa9#> z0AK?sj!ADCgnkxzl+4NTy$M|6hO8|o%H7C=96J;nB)35@h&G~Cw9z+vzDwI6pVZT- z+8}P^6zR{@hXVbOqr<9_wn57p!k3BkL%JE!J=&d`Lw)3k?ZzK|k~L(kC8bo@=!(%- z6&i(wapYBK5ItZG6&OX0Bue&+{ET&~D7m8^Bi4=7Zpn{h1QPhxkrk+AI8*^6B~{6K zM(S#D*ChQVm!;OCLbU2p^5AO)MS2GG<$UT-4)_uLqgFaL;N{O~fR{hoj#^bb+LV^J z3~L<(CIQM``&MU7=6DT%_1*_hQa@Fm>HT!MMke$^Q`KE27BEIH)wuzEPRcma8WHja zbbJCmUmSnNUMVNXP8)0r=yBszEx2QWHa>Do7++;UcX$x0oDzam5*ia7+y(dwqE@JK z3!an3%G^;fHiR#GX-AsQ)6hduAI_1^ZVy3 zzy)0#+cx}h@K+<9lahN-BM*_R#&9fyL*c(>{4EEha_k1S4ZOFY56iIL*d&vR%hOwI zej7l4jZj^U7KaO}MQ7@k-Uyll;LK4D_TF&SEOiZ^R8+eBoD3D!iREU)so`%KcBn@H*gk|zZq+y_um4&?N;mFusMLUdIqD&`Pub+jt%fRofmY+%o)p}X>DnCbS8VG zsqAugw2GJdr#3fvNA>k{I?P}uutQi(ztqOKGh(QO`)9MW zXTa5jY^K`{PEFBkMcfOU{bN5?Hl%ODyT$u?ryYidXb;|fL}?(2`6svLcY130a&}9T z`#ZTe?kLYzs&0+njs|)CNHPDe@0{7=JJNB=&uk&3rHi$n!A`C(O4qihvhMwTwe894 ztdrAPXFN(J?6r;JHP0J0{=e(~!}a?nw#FzTgPvTePdA(XKH0wOL%gv?GrIci8^yvB zaJ!m3Z49G5$8Olble<9xiL!bL7EdfHqky(=*8aE zgpR#oJN zO>1#GPfl{QxDy{4H}K~O$`-?8=z)`?Z>}dShHouCUZbDnn${efdXL)B#!1R(x;C5` ziZQ}Nh4>vn$l{q<@uh+kt)}X!dlWVWE4?Gs;1qiNn zIr>?Q1~tJP^~4*ALQhZe>kd}BmFjp9z6GaRoU zy#8)CU_G!0BX2H2c?Cvo<@F<;xx**UTZ|{8hqQmLqm5RhQ@$&eD!URtnx?{QK*wB| z!li&p_dbBCFTGCX+!K(CQlmzcX?xW{+bPvZ4yl!e>t2=m*_-MDOf{UXgn*U9)Q$ zM31Nq4khXzuf4IXsWSqZQl9i+tWRwJwHh5#kYak3$;maPu4o$<{r7=chZV`Evu(UJk;%?OQZYo%xlO4t36+P*j z>0(3zVvg#YcJ-E0I+M-vr09hYpjXZ`rTRM2wl^?E18Gq2z&*+>m6`ClzP=A__rF`Fbqg{)r?*Z;X1ZHcXs7ba;0PZ&a%(Z zC}UmJBQqM_jgxvO7kKXNT~n5t#ygX)bHKM(iMyaZ6>G@>(RkYXJHR(X;OkMBuGC0! zDz{o%l76GqJ<%#0{bBAXMwpX|-p27cb*heMz}U!$pE|`7@3L)jFX?xR+nKrF#YfS4 z%c)Z=lH{eQO3x$1Q>Mi`;?$nq>W%0prR-d!(*urW%%;CnSq;aHe%)Qzo4Jn{B6-~e ze&{5$l8YcWghKzwK+B}XP1o%8d@@CDnS`(U$$fTb2KDC2xnAp5OX(e^>wRfm{I=rP zKh(GNr=RG$ZP$%oSb0&;VHN!RHCJ9XZ^d&r1V#X2gIy^nQfJq=|fU(Ukiv{D>re^D(ciUS+i?Ye-oel!f0?%qsp`V!z@qC#IA&s4V;-<5h}3 zn229XY*N;0WkF)+D(fxETCA$PyORocb5d8@74O~zqgGa~FsSw;7ROtC8HOCl1jbrf z@(h~i_+ck;Yng(?P};I$agg96g3_oP=Wqt=%K*ay>&u9VrH~H@&A}TK4V3_`kn#a* zRmXZk8<|M691~EXB>sl2@;YHMHZ1(?6TYn2aJ5hzzm<5@I2;=WWgQy^WnC8=Mdy5` z-WVT;?C#(xy*Pv#PU6-exi|!VgdHTt4;NDGYcK{H;FrJR?88evmDY+xd{D*)=$)oA z0^pY}sf+-A0@S230)RuR7C?xgf}oP1iXco7A(%r@O%NrB5tPTqCkWn)NCRLwl@%{b z_!5M1!iJ*@LJi7JRUqF%E^(0MG^ki_MT0-K6HjAII<_+ae2t3rRx*PL;M6s*t1QFW_HIB^%5m>0;Vsn85uQyc)W8g5>5_OW~ikS97W^_rc zG;{nGH@7L`=634n0%$`o#L4bgQd@2zH3&gjbxd7J6`C8nD0bz1jECJ?p;1#d)*eJ2 zL}1bPM4(wB7>o~f?n?W)jT$q4dn8b;_1Ow&^W0W0Pii{biB#Yf?W{nVs%neLHP+eq z(RA@I4U}!PA-0sV51L0LwiFt(krKKMo!QFa8~=!oZ6)Ro8DBtja0lcI4&)`ekxT}m z&A>&+KZfzql`{NyfY=q#D7Y>D_A@jJ>t+#IklhZ}2Lq;oAf4b9aDo^&nDjP_3LkAi z0jMYv{w2&_qUu0!7ybrWeizDz@K*`GqT@#d-Yq;HLpE%i=z9g;C-4D*4+?xp;BkfdPTEl30rVB9^KUSSc_pu!w3=6EH*MQKE*w4G=iRSJ1d+q0a_VWSz`JnxL$bKF- zK6U(7a-gfBuD4R=yR7oCzZ~StWoVBueYZ*9O_eytG#=E6`Z7OYD8vzcM5b!II_Ut- zf2EED%@e#gKx`3?HoO`tS`qOJW|D_yT9Imq8+d!(uR_UsJ56ngbw@~Q{848yAPxqv zHHx{L0(32G&^*!L5;iCb{RC3R3ym`=tOSh}@P!g*w+Jx?G?RKbWv2m~RFI@PX@ypK z1v|~9%J}V6?@pVi@!QEty(|{QYhhxCq0l#p@k-~%Z#S<&wi5)NQj`gWl%ZUtDUYCe zRN%px2#>INuom7b%!6EzR&4x92ufRQnQi(2kyf#J1X0s!T|lAaT(~Xv6^+Ad*ZY^i z!4d?^AvCxd^9a)06$FlXlJ@oOYBS2tH~3eOZLXbZr3Z3OkduV%@QcGLAo&0u4IChM||yi7>o4 z6rTT2oPi!85v~ou@`Ax|Fc=9!)W^a=mIVU7AV%SEC;)C@JHZGjR8&MKAZsij@q#&U zVqqu{2nMZSh0lkcVGSZZAOh;-1mGDLpBM6LZY$6Vif&Pu(8iCr%s>=eK zaj=NNh{O^BtcxObb#++aN1*G{?=g%C3a3y4Yc?hi$#6qOICk|uju@7HK2~f9)WF|h z@)XhI3AL&xGf*uI$KAeis20q_Ji=hc=$T)JIt7K+8fK)UyQ-;s&Ja_hX-k{s67}AV2vE1#eUih&ps>)u`-EHj8=%8nO+ielFs4< ziy{XVZHhQadcx=eF~6}wKGs`qzP;WG*>s{yARr7Lm0|q7m>pDoY~ql4Ohg0aXnEog zP!mK4>k8GHu$-U{L>HJXV|0P3b5nhwGTLO)7UIk#7SQy??$G1As zKbit7RhQ6fcX}9Who9ye5+$v=x_ZtJe1!qSsUpF_gulix!gVtngIZVD7^p^GtR4T* z9;6o~iC_?8Bt5FH3&E`B#^y$_x+;&gKrw@501+PuQ~R(`CXTy>U^zhmpfXfoi#4G9 z<*{}o#C25$k@6Fi69foC1XToKSR=gX$HK%`0Qe$k2@OHrZ=$8NyLy6!Ftq^xV?-{% z5Exe&94wdD*4a9YitSR22q>Bf zUYw45!S4I9DD&R}j?8ewY&3M)d@EHzP1TpspV-v?^y1$nmnWIu*2(uquPJJ2l0J=Ou2?emSd@oHDeitNfilyezXar^6p*a?H zD2&xtLzC2Q=wb+uss=1lv zobe~V4J`g=^@(pA#*VQvEJJ2%z(@!?U-=GPW#oa0qmnDqiGLE!FzM$D>FC6FZH-|H zg*nRh>a#`}zY7SBzgf7xSKxgD9}xJUz=s4Lha1qr8dU~W;I3Dl5uJEZG?`CK#zH)T z;d6pzSVaQouF~w80?Rd7Cf5agG@^)^KgMq_DJ!gES;?|kKAdezBQ<4tu!t-)?kHouvO5;A_XaKvTAlj_<1JK*V3zY_ z(Sk8w07I!fQQ)mQP%fTDoQTY!aLlrbW*`nK2Vl`iYq=^o6zheqSwXFW*w`uI5n z)|vdNFMQoi;k#Dw^_7_eIX(Vo&3gQXlJ8yde(7wp^To1LeCcdc!*FgOlT9W2n;I^| zSJvRWTrOy9ZsEVC2KyUuE=VUv@eMVpriQKfY3k$vzB)#J&FF&uRjcAF2Uecf+Od2^ zqNTm#4Bcy0^H&E!319hQe#xHE$}6uYH2+=Cbc6F&{2cL=b93<9BH8sR{6r_dCRMmi zB$@~Dvw{5Y*9$=_>Xtp7`t3?Ut74yJB3cJ1xGM|L(L_ zAaR-M!6k~zR2RPbsRx%Scsk8X6`R!tr1{@N{vW-@$Ybe$Z?_Scj+KY3VAlg`P-UQc z147n3yW@!lzrBY4El{k*E6+Ty&LQ8uEF}fhXZ^3BNe!Odvz*D4o|ZEFQVH{K1p?%d zfkN0Cb)E9-(K;`9^GwM7J`uLlfWH=4y<7G&ly$#ygJoK99_#)ooYyp>JbT0Q-K>P; zQ;?VWstEB8c=;wb+g#V4Gvl|rfgPoAu z2+ob!gWWjM$C;Dxo)TWR*m!d^kSg@s`2fQk!_x|p(^j;_%fY4(rP6ZcBxmpV;ta~R z6Vhk@dEX(0UNk^6iltmyPlRw9oR+|837nR|X$hQ`z-bAbmcVHVoR+|837nR||8Ei) z(W(l4z7?MaIsM;h37nR|X$hQ`z-bAbmcVHVoR+|837nR|X$hQ`z-bAbmcaj;68OI< CdRBV? literal 102400 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�TYPA%c4#a}4oLC@E5n7U7d=95Za~Gej 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 QFe8B(3Cu{~|4j+}Uv+15H2?qr diff --git a/bin/OpenMetaverse.XML b/bin/OpenMetaverse.XML index f5bda4b4b9..6e57fed0d7 100644 --- a/bin/OpenMetaverse.XML +++ b/bin/OpenMetaverse.XML @@ -4,653 +4,3348 @@ OpenMetaverse - + +

= + + + Number of times we've received an unknown CAPS exception in series. + + + For exponential backoff on error. + + - Singleton logging class for the entire library + Add a custom decoder callback + + The key of the field to decode + The custom decode handler + + + + Remove a custom decoder callback + + The key of the field to decode + The custom decode handler + + + + Creates a formatted string containing the values of a Packet + + The Packet + A formatted string of values of the nested items in the Packet object + + + + Decode an IMessage object into a beautifully formatted string + + The IMessage object + Recursion level (used for indenting) + A formatted string containing the names and values of the source object + + + + A custom decoder callback + + The key of the object + the data to decode + A string represending the fieldData + + + + Access to the data server which allows searching for land, events, people, etc - - log4net logging engine + + The event subscribers. null if no subcribers - + + Raises the EventInfoReply event + An EventInfoReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirEventsReply event + An DirEventsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the PlacesReply event + A PlacesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirPlacesReply event + A DirPlacesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirClassifiedsReply event + A DirClassifiedsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirGroupsReply event + A DirGroupsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirPeopleReply event + A DirPeopleReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirLandReply event + A DirLandReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + + Constructs a new instance of the DirectoryManager class + + An instance of GridClient + + + + Query the data server for a list of classified ads containing the specified string. + Defaults to searching for classified placed in any category, and includes PG, Adult and Mature + results. + + Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for + A UUID to correlate the results when the event is raised + + + + Query the data server for a list of classified ads which contain specified keywords (Overload) + + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for + The category to search + A set of flags which can be ORed to modify query options + such as classified maturity rating. + A UUID to correlate the results when the event is raised + + Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature + + UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); + + + + Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + + + + + Starts search for places (Overloaded) + + The event is raised when a response is received from the simulator + + Search text + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + + + Queries the dataserver for parcels of land which are flagged to be shown in search + + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for separated by a space character + A set of flags which can be ORed to modify query options + such as classified maturity rating. + The category to search + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult + + UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); + + + + Additional information on the results can be obtained by using the ParcelManager.InfoRequest method + + + + + Starts a search for land sales using the directory + + The event is raised when a response is received from the simulator + + What type of land to search for. Auction, + estate, mainland, "first land", etc + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. + + + + Starts a search for land sales using the directory + + The event is raised when a response is received from the simulator + + What type of land to search for. Auction, + estate, mainland, "first land", etc + Maximum price to search for + Maximum area to search for + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. + + + + Send a request to the data server for land sales listings + + + Flags sent to specify query options + + Available flags: + Specify the parcel rating with one or more of the following: + IncludePG IncludeMature IncludeAdult + + Specify the field to pre sort the results with ONLY ONE of the following: + PerMeterSort NameSort AreaSort PricesSort + + Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order + SortAsc + + Specify additional filters to limit the results with one or both of the following: + LimitByPrice LimitByArea + + Flags can be combined by separating them with the | (pipe) character + + Additional details can be found in + + What type of land to search for. Auction, + Estate or Mainland + Maximum price to search for when the + DirFindFlags.LimitByPrice flag is specified in findFlags + Maximum area to search for when the + DirFindFlags.LimitByArea flag is specified in findFlags + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + The event will be raised with the response from the simulator + + There is no way to determine how many results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each reply. + + Any land set for sale to either anybody or specific to the connected agent will be included in the + results if the land is included in the query + + + // request all mainland, any maturity rating that is larger than 512 sq.m + StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); + + + + + Search for Groups + + The name or portion of the name of the group you wish to search for + Start from the match number + + + + + Search for Groups + + The name or portion of the name of the group you wish to search for + Start from the match number + Search flags + + + + + Search the People directory for other avatars + + The name or portion of the name of the avatar you wish to search for + + + + + + Search Places for parcels of land you personally own + + + + + Searches Places for land owned by the specified group + + ID of the group you want to recieve land list for (You must be a member of the group) + Transaction (Query) ID which can be associated with results from your request. + + + + Search the Places directory for parcels that are listed in search and contain the specified keywords + + A string containing the keywords to search for + Transaction (Query) ID which can be associated with results from your request. + + + + Search Places - All Options + + One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. + One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer + A string containing a list of keywords to search for separated by a space character + String Simulator Name to search in + LLUID of group you want to recieve results for + Transaction (Query) ID which can be associated with results from your request. + Transaction (Query) ID which can be associated with results from your request. + + + + Search All Events with specifid searchText in all categories, includes PG, Mature and Adult + + A string containing a list of keywords to search for separated by a space character + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + UUID of query to correlate results in callback. + + + + Search Events + + A string containing a list of keywords to search for separated by a space character + One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult + from the Enum + + Multiple flags can be combined by separating the flags with the | (pipe) character + "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled + For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + EventCategory event is listed under. + UUID of query to correlate results in callback. + + + Requests Event Details + ID of Event returned from the method + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Classified Ad categories + + + Classified is listed in the Any category + + + Classified is shopping related + + + Classified is + + + + + + + + + + + + + + + + + + + + + + + + Event Categories + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. + + Flags can be combined using the | (pipe) character, not all flags are available in all queries + + + + Query the People database + + + + + + + + + Query the Groups database + + + Query the Events database + + + Query the land holdings database for land owned by the currently connected agent + + + + + + Query the land holdings database for land which is owned by a Group + + + Specifies the query should pre sort the results based upon traffic + when searching the Places database + + + + + + + + + + + + + + + Specifies the query should pre sort the results in an ascending order when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the Name field when searching the land sales database. + This flag is only used when searching the land sales database + + + When set, only parcels less than the specified Price will be included when searching the land sales database. + This flag is only used when searching the land sales database + + + When set, only parcels greater than the specified Size will be included when searching the land sales database. + This flag is only used when searching the land sales database + + + + + + + + + Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + + + + + Land types to search dataserver for + + + + Search Auction, Mainland and Estate + + + Land which is currently up for auction + + + Parcels which are on the mainland (Linden owned) continents + + + Parcels which are on privately owned simulators + + + + The content rating of the event + + + + Event is PG + + + Event is Mature + + + Event is Adult + + + + Classified Ad Options + + There appear to be two formats the flags are packed in. + This set of flags is for the newer style + + + + + + + + + + + + + + + + + + + Classified ad query options + + + + Include all ads in results + + + Include PG ads in results + + + Include Mature ads in results + + + Include Adult ads in results + + + + The For Sale flag in PlacesReplyData + + + + Parcel is not listed for sale + + + Parcel is For Sale + + + + A classified ad on the grid + + + + UUID for this ad, useful for looking up detailed + information about it + + + The title of this classified ad + + + Flags that show certain options applied to the classified + + + Creation date of the ad + + + Expiration date of the ad + + + Price that was paid for this ad + + + Print the struct data as a string + A string containing the field name, and field value + + + + A parcel retrieved from the dataserver such as results from the + "For-Sale" listings or "Places" Search + + + + The unique dataserver parcel ID + This id is used to obtain additional information from the entry + by using the method + + + A string containing the name of the parcel + + + The size of the parcel + This field is not returned for Places searches + + + The price of the parcel + This field is not returned for Places searches + + + If True, this parcel is flagged to be auctioned + + + If true, this parcel is currently set for sale + + + Parcel traffic + + + Print the struct data as a string + A string containing the field name, and field value + + + + An Avatar returned from the dataserver + + + + Online status of agent + This field appears to be obsolete and always returns false + + + The agents first name + + + The agents last name + + + The agents + + + Print the struct data as a string + A string containing the field name, and field value + + + + Response to a "Groups" Search + + + + The Group ID + + + The name of the group + + + The current number of members + + + Print the struct data as a string + A string containing the field name, and field value + + + + Parcel information returned from a request + + Represents one of the following: + A parcel of land on the grid that has its Show In Search flag set + A parcel of land owned by the agent making the request + A parcel of land owned by a group the agent making the request is a member of + + + In a request for Group Land, the First record will contain an empty record + + Note: This is not the same as searching the land for sale data source + + + + The ID of the Agent of Group that owns the parcel + + + The name + + + The description + + + The Size of the parcel + + + The billable Size of the parcel, for mainland + parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller + than the ActualArea. For Estate land this will always be 0 + + + Indicates the ForSale status of the parcel + + + The Gridwide X position + + + The Gridwide Y position + + + The Z position of the parcel, or 0 if no landing point set + + + The name of the Region the parcel is located in + + + The Asset ID of the parcels Snapshot texture + + + The calculated visitor traffic + + + The billing product SKU + Known values are: + + 023Mainland / Full Region + 024Estate / Full Region + 027Estate / Openspace + 029Estate / Homestead + 129Mainland / Homestead (Linden Owned) + + + + + No longer used, will always be 0 + + + Get a SL URL for the parcel + A string, containing a standard SLURL + + + Print the struct data as a string + A string containing the field name, and field value + + + + An "Event" Listing summary + + + + The ID of the event creator + + + The name of the event + + + The events ID + + + A string containing the short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) + + + The events maturity rating + + + Print the struct data as a string + A string containing the field name, and field value + + + + The details of an "Event" + + + + The events ID + + + The ID of the event creator + + + The name of the event + + + The category + + + The events description + + + The short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) UTC adjusted + + + The length of the event in minutes + + + 0 if no cover charge applies + + + The cover charge amount in L$ if applicable + + + The name of the region where the event is being held + + + The gridwide location of the event + + + The maturity rating + + + Get a SL URL for the parcel where the event is hosted + A string, containing a standard SLURL + + + Print the struct data as a string + A string containing the field name, and field value + + + Contains the Event data returned from the data server from an EventInfoRequest + + + Construct a new instance of the EventInfoReplyEventArgs class + A single EventInfo object containing the details of an event + + + + A single EventInfo object containing the details of an event + + + + Contains the "Event" detail data returned from the data server + + + Construct a new instance of the DirEventsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Events" returned by the search query + + + The ID returned by + + + A list of "Events" returned by the data server + + + Contains the "Event" list data returned from the data server + + + Construct a new instance of PlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Places" returned by the data server query + + + The ID returned by + + + A list of "Places" returned by the data server + + + Contains the places data returned from the data server + + + Construct a new instance of the DirPlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing land data returned by the data server + + + The ID returned by + + + A list containing Places data returned by the data server + + + Contains the classified data returned from the data server + + + Construct a new instance of the DirClassifiedsReplyEventArgs class + A list of classified ad data returned from the data server + + + A list containing Classified Ads returned by the data server + + + Contains the group data returned from the data server + + + Construct a new instance of the DirGroupsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of groups data returned by the data server + + + The ID returned by + + + A list containing Groups data returned by the data server + + + Contains the people data returned from the data server + + + Construct a new instance of the DirPeopleReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of people data returned by the data server + + + The ID returned by + + + A list containing People data returned by the data server + + + Contains the land sales data returned from the data server + + + Construct a new instance of the DirLandReplyEventArgs class + A list of parcels for sale returned by the data server + + + A list containing land forsale data returned by the data server + + + + Sent to the client to indicate a teleport request has completed + + + + + Interface requirements for Messaging system + + + + The of the agent + + + + + + The simulators handle the agent teleported to + + + A Uri which contains a list of Capabilities the simulator supports + + + Indicates the level of access required + to access the simulator, or the content rating, or the simulators + map status + + + The IP Address of the simulator + + + The UDP Port the simulator will listen for UDP traffic on + + + Status flags indicating the state of the Agent upon arrival, Flying, etc. + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent to the client which indicates a teleport request has failed + and contains some information on why it failed + + + + + + + A string key of the reason the teleport failed e.g. CouldntTPCloser + Which could be used to look up a value in a dictionary or enum + + + The of the Agent + + + A string human readable message containing the reason + An example: Could not teleport closer to destination + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Contains a list of prim owner information for a specific parcel in a simulator + + + A Simulator will always return at least 1 entry + If agent does not have proper permission the OwnerID will be UUID.Zero + If agent does not have proper permission OR there are no primitives on parcel + the DataBlocksExtended map will not be sent from the simulator + + + + An Array of objects + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Prim ownership information for a specified owner on a single parcel + + + + The of the prim owner, + UUID.Zero if agent has no permission to view prim owner information + + + The total number of prims + + + True if the OwnerID is a + + + True if the owner is online + This is no longer used by the LL Simulators + + + The date the most recent prim was rezzed + + + + The details of a single parcel in a region, also contains some regionwide globals + + + + Simulator-local ID of this parcel + + + Maximum corner of the axis-aligned bounding box for this + parcel + + + Minimum corner of the axis-aligned bounding box for this + parcel + + + Total parcel land area + + + + + + Key of authorized buyer + + + Bitmap describing land layout in 4x4m squares across the + entire region + + + + + + Date land was claimed + + + Appears to always be zero + + + Parcel Description + + + + + + + + + Total number of primitives owned by the parcel group on + this parcel + + + Whether the land is deeded to a group or not + + + + + + Maximum number of primitives this parcel supports + + + The Asset UUID of the Texture which when applied to a + primitive will display the media + + + A URL which points to any Quicktime supported media type + + + A byte, if 0x1 viewer should auto scale media to fit object + + + URL For Music Stream + + + Parcel Name + + + Autoreturn value in minutes for others' objects + + + + + + Total number of other primitives on this parcel + + + UUID of the owner of this parcel + + + Total number of primitives owned by the parcel owner on + this parcel + + + + + + How long is pass valid for + + + Price for a temporary pass + + + + + + + + + + + + + + + True if the region denies access to age unverified users + + + + + + This field is no longer used + + + The result of a request for parcel properties + + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it + + + + Number of primitives your avatar is currently + selecting and sitting on in this parcel + + + + + + + + A number which increments by 1, starting at 0 for each ParcelProperties request. + Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. + a Negative number indicates the action in has occurred. + + + + Maximum primitives across the entire simulator + + + Total primitives across the entire simulator + + + + + + Key of parcel snapshot + + + Parcel ownership status + + + Total number of primitives on this parcel + + + + + + + + + A description of the media + + + An Integer which represents the height of the media + + + An integer which represents the width of the media + + + A boolean, if true the viewer should loop the media + + + A string which contains the mime type of the media + + + true to obscure (hide) media url + + + true to obscure (hide) music url + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + A message sent from the viewer to the simulator to updated a specific parcels settings + + + The of the agent authorized to purchase this + parcel of land or a NULL if the sale is authorized to anyone + + + true to enable auto scaling of the parcel media + + + The category of this parcel used when search is enabled to restrict + search results + + + A string containing the description to set + + + The of the which allows for additional + powers and restrictions. + + + The which specifies how avatars which teleport + to this parcel are handled + + + The LocalID of the parcel to update settings on + + + A string containing the description of the media which can be played + to visitors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + Base class used for the RemoteParcelRequest message + + + + A message sent from the viewer to the simulator to request information + on a remote parcel + + + + Local sim position of the parcel we are looking up + + + Region handle of the parcel we are looking up + + + Region of the parcel we are looking up + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer in response to a + which will contain parcel information + + + + The grid-wide unique parcel ID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing a request for a remote parcel from a viewer, or a response + from the simulator to that request + + + + The request or response details block + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to an agent which contains + the groups the agent is in + + + + The Agent receiving the message + + + An array containing information + for each the agent is a member of + + + An array containing information + for each the agent is a member of + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Group Details specific to the agent + + + true of the agent accepts group notices + + + The agents tier contribution to the group + + + The Groups + + + The of the groups insignia + + + The name of the group + + + The aggregate permissions the agent has in the group for all roles the agent + is assigned + + + An optional block containing additional agent specific information + + + true of the agent allows this group to be + listed in their profile + + + + A message sent from the viewer to the simulator which + specifies the language and permissions for others to detect + the language specified + + + + A string containng the default language + to use for the agent + + + true of others are allowed to + know the language setting + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + An EventQueue message sent from the simulator to an agent when the agent + leaves a group + + + + + An Array containing the AgentID and GroupID + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + An object containing the Agents UUID, and the Groups UUID + + + The ID of the Agent leaving the group + + + The GroupID the Agent is leaving + + + Base class for Asset uploads/results via Capabilities + + + + The request state + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the viewer to the simulator to request a temporary upload capability + which allows an asset to be uploaded + + + + The Capability URL sent by the simulator to upload the baked texture to + + + + A message sent from the simulator that will inform the agent the upload is complete, + and the UUID of the uploaded asset + + + + The uploaded texture asset ID + + + + A message sent from the viewer to the simulator to request a temporary + capability URI which is used to upload an agents baked appearance textures + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator which indicates the minimum version required for + using voice chat + + + + Major Version Required + + + Minor version required + + + The name of the region sending the version requrements + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer containing the + voice server URI + + + + The Parcel ID which the voice server URI applies + + + The name of the region + + + A uri containing the server/channel information + which the viewer can utilize to participate in voice conversations + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + + + + + + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent by the viewer to the simulator to request a temporary + capability for a script contained with in a Tasks inventory to be updated + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer to indicate + a Tasks scripts status. + + + + The Asset ID of the script + + + True of the script is compiled/ran using the mono interpreter, false indicates it + uses the older less efficient lsl2 interprter + + + The Task containing the scripts + + + true of the script is in a running state + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing the request/response used for updating a gesture + contained with an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message request/response which is used to update a notecard contained within + a tasks inventory + + + + The of the Task containing the notecard asset to update + + + The notecard assets contained in the tasks inventory + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability + which is used to update an asset in an agents inventory + + + + + The Notecard AssetID to replace + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing the request/response used for updating a notecard + contained with an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer which indicates + an error occurred while attempting to update a script in an agents or tasks + inventory + + + + true of the script was successfully compiled by the simulator + + + A string containing the error which occured while trying + to update the script + + + A new AssetID assigned to the script + + + + A message sent from the viewer to the simulator + requesting the update of an existing script contained + within a tasks inventory + + + + if true, set the script mode to running + + + The scripts InventoryItem ItemID to update + + + A lowercase string containing either "mono" or "lsl2" which + specifies the script is compiled and ran on the mono runtime, or the older + lsl runtime + + + The tasks which contains the script to update + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing either the request or response used in updating a script inside + a tasks inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Response from the simulator to notify the viewer the upload is completed, and + the UUID of the script asset and its compiled status + + + + The uploaded texture asset ID + + + true of the script was compiled successfully + + + + A message sent from a viewer to the simulator requesting a temporary uploader capability + used to update a script contained in an agents inventory + + + + The existing asset if of the script in the agents inventory to replace + + + The language of the script + Defaults to lsl version 2, "mono" might be another possible option + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing either the request or response used in updating a script inside + an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Base class for Map Layers via Capabilities + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent by an agent to the capabilities server to request map layers + + + + + A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates + + + + An array containing LayerData items + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + An object containing map location details + + + + The Asset ID of the regions tile overlay + + + The grid location of the southern border of the map tile + + + The grid location of the western border of the map tile + + + The grid location of the eastern border of the map tile + + + The grid location of the northern border of the map tile + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + New as of 1.23 RC1, no details yet. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + A string containing the method used + + + + A request sent from an agent to the Simulator to begin a new conference. + Contains a list of Agents which will be included in the conference + + + + An array containing the of the agents invited to this conference + + + The conferences Session ID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A moderation request sent from a conference moderator + Contains an agent and an optional action to take + + + + The Session ID + + + + + + A list containing Key/Value pairs, known valid values: + key: text value: true/false - allow/disallow specified agents ability to use text in session + key: voice value: true/false - allow/disallow specified agents ability to use voice in session + + "text" or "voice" + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the agent to the simulator which tells the + simulator we've accepted a conference invitation + + + + The conference SessionID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Key of sender + + + Name of sender + + + Key of destination avatar + + + ID of originating estate + + + Key of originating region + + + Coordinates in originating region + + + Instant message type + + + Group IM session toggle + + + Key of IM session, for Group Messages, the groups UUID + + + Timestamp of the instant message + + + Instant message text + + + Whether this message is held for offline avatars + + + Context specific packed data + + + Is this invitation for voice group/conference chat + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent from the simulator to the viewer. + + When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including + a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate + this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" + + During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are + excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with + the string "ENTER" or "LEAVE" respectively. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + An EventQueue message sent when the agent is forcibly removed from a chatterbox session + + + + + A string containing the reason the agent was removed + + + + + The ChatterBoxSession's SessionID + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the viewer to the simulator which + specifies that the user has changed current URL + of the specific media on a prim face + + + + + New URL + + + + + Prim UUID where navigation occured + + + + + Face index + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Base class used for the ObjectMedia message + + + + Message used to retrive prim media data + + + + + Prim UUID + + + + + Requested operation, either GET or UPDATE + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message used to update prim media data + + + + + Prim UUID + + + + + Array of media entries indexed by face number + + + + + Media version string + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message used to update prim media data + + + + + Prim UUID + + + + + Array of media entries indexed by face number + + + + + Requested operation, either GET or UPDATE + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message for setting or getting per face MediaEntry + + + + The request or response details block + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Details about object resource usage + + + Object UUID + + + Object name + + + Indicates if object is group owned + + + Locatio of the object + + + Object owner + + + Resource usage, keys are resource names, values are resource usage for that specific resource + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + serialized data + Instance containg deserialized data + + + Details about parcel resource usage + + + Parcel UUID + + + Parcel local ID + + + Parcel name + + + Indicates if parcel is group owned + + + Parcel owner + + + Array of containing per object resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + serialized data + Instance containg deserialized data + + + Resource usage base class, both agent and parcel resource + usage contains summary information + + + Summary of available resources, keys are resource names, + values are resource usage for that specific resource + + + Summary resource usage, keys are resource names, + values are resource usage for that specific resource + + + + Serializes object + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + Agent resource usage + + + Per attachment point object resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + serialized data + Instance containg deserialized data + + + + Detects which class handles deserialization of this message + + An containing the data + Object capable of decoding this message + + + Request message for parcel resource usage + + + UUID of the parel to request resource usage info + + + + Serializes object + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + Response message for parcel resource usage + + + URL where parcel resource usage details can be retrieved + + + URL where parcel resource usage summary can be retrieved + + + + Serializes object + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + + Detects which class handles deserialization of this message + + An containing the data + Object capable of decoding this message + + + Parcel resource usage + + + Array of containing per percal resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Type of gesture step + + + + + Base class for gesture steps + + + + + Retururns what kind of gesture step this is + + + + + Describes animation step of a gesture + + + + + If true, this step represents start of animation, otherwise animation stop + + + + + Animation asset + + + + + Animation inventory name + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + Sound asset + + + + + Sound inventory name + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + Text to output in chat + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + If true in this step we wait for all animations to finish + + + + + If true gesture player should wait for the specified amount of time + + + + + Time in seconds to wait if WaitForAnimation is false + + + + + Returns what kind of gesture step this is + + + + + Describes the final step of a gesture + + + + + Returns what kind of gesture step this is + + + + + Represents a sequence of animations, sounds, and chat actions + + + + + Base class for all Asset types + + + + A byte array containing the raw asset data + + + True if the asset it only stored on the server temporarily + + + A unique ID + + + + Construct a new Asset object + + + + + Construct a new Asset object + + A unique specific to this asset + A byte array containing the raw asset data + + + + Regenerates the AssetData byte array from the properties + of the derived class. + + + + + Decodes the AssetData, placing it in appropriate properties of the derived + class. + + True if the asset decoding succeeded, otherwise false + + + The assets unique ID + + + + The "type" of asset, Notecard, Animation, etc + + + + + Keyboard key that triggers the gestyre + + + + + Modifier to the trigger key + + + + + String that triggers playing of the gesture sequence + + + + + Text that replaces trigger in chat once gesture is triggered + + + + + Sequence of gesture steps + + + + + Constructs guesture asset + + + + + Constructs guesture asset + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encodes gesture asset suitable for uplaod + + + + + Decodes gesture assset into play sequence + + true if the asset data was decoded successfully + + + + Returns asset type + + + + + Archives assets + + + + + Archive assets + + + + + Archive the assets given to this archiver to the given archive. + + + + + + Write an assets metadata file to the given archive + + + + + + Write asset data files to the given archive + + + + + + Constants for the archiving module + + + + + The location of the archive control file + + + + + Path for the assets held in an archive + + + + + Path for the prims file + + + + + Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. + + + + + Path for region settings. + + + + + The character the separates the uuid from extension information in an archived asset filename + + + + + Extensions used for asset types in the archive + + + + + Capabilities is the name of the bi-directional HTTP REST protocol + used to communicate non real-time transactions such as teleporting or + group messaging + + + + Reference to the simulator this system is connected to + + Default constructor + + - + - Send a log message to the logging engine + Request the URI of a named capability - The log message - The severity of the log entry + Name of the capability to request + The URI of the requested capability, or String.Empty if + the capability does not exist - + - Send a log message to the logging engine + Process any incoming events, check to see if we have a message created for the event, - The log message - The severity of the log entry - Instance of the client + + - + + Capabilities URI this system was initialized with + + + Whether the capabilities event queue is connected and + listening for incoming events + + - Send a log message to the logging engine + Triggered when an event is received via the EventQueueGet + capability - The log message - The severity of the log entry - Exception that was raised + Event name + Decoded event data + The simulator that generated the event - + - Send a log message to the logging engine - - The log message - The severity of the log entry - Instance of the client - Exception that was raised - - - - If the library is compiled with DEBUG defined, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine - - The message to log at the DEBUG level to the - current logging engine - - - - If the library is compiled with DEBUG defined and - GridClient.Settings.DEBUG is true, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine - - The message to log at the DEBUG level to the - current logging engine - Instance of the client - - - Triggered whenever a message is logged. If this is left - null, log messages will go to the console - - - - Callback used for client apps to receive log messages from - the library - - Data being logged - The severity of the log entry from - - - - This is used to get a list of audio devices that can be used for capture (input) of voice. - - - - - - This is used to get a list of audio devices that can be used for render (playback) of voice. + Throttles the network traffic for various different traffic types. + Access this class through GridClient.Throttle - + - This command is used to select the render device. - - The name of the device as returned by the Aux.GetRenderDevices command. - - - - This command is used to select the capture device. - - The name of the device as returned by the Aux.GetCaptureDevices command. - - - - This command is used to start the audio capture process which will cause - AuxAudioProperty Events to be raised. These events can be used to display a - microphone VU meter for the currently selected capture device. This command - should not be issued if the user is on a call. - - (unused but required) - - - - - This command is used to stop the audio capture process. - - - - - - This command is used to set the mic volume while in the audio tuning process. - Once an acceptable mic level is attained, the application must issue a - connector set mic volume command to have that level be used while on voice - calls. - - the microphone volume (-100 to 100 inclusive) - - - - - This command is used to set the speaker volume while in the audio tuning - process. Once an acceptable speaker level is attained, the application must - issue a connector set speaker volume command to have that level be used while - on voice calls. - - the speaker volume (-100 to 100 inclusive) - - - - - This is used to initialize and stop the Connector as a whole. The Connector - Create call must be completed successfully before any other requests are made - (typically during application initialization). The shutdown should be called - when the application is shutting down to gracefully release resources - - A string value indicting the Application name - URL for the management server - LoggingSettings - - - - - - Shutdown Connector -- Should be called when the application is shutting down - to gracefully release resources - - Handle returned from successful Connector ‘create’ request - - - - Mute or unmute the microphone - - Handle returned from successful Connector ‘create’ request - true (mute) or false (unmute) - - - - Mute or unmute the speaker - - Handle returned from successful Connector ‘create’ request - true (mute) or false (unmute) - - - - Set microphone volume - - Handle returned from successful Connector ‘create’ request - The level of the audio, a number between -100 and 100 where - 0 represents ‘normal’ speaking volume - - - - Set local speaker volume - - Handle returned from successful Connector ‘create’ request - The level of the audio, a number between -100 and 100 where - 0 represents ‘normal’ speaking volume - - - - Starts a thread that keeps the daemon running - - - - - - - Stops the daemon and the thread keeping it running + Default constructor, uses a default high total of 1500 KBps (1536000) - + - + Constructor that decodes an existing AgentThrottle packet in to + individual values - - - + Reference to the throttle data in an AgentThrottle + packet + Offset position to start reading at in the + throttle data + This is generally not needed in clients as the server will + never send a throttle packet to the client - + - Create a Session - Sessions typically represent a connection to a media session with one or more - participants. This is used to generate an ‘outbound’ call to another user or - channel. The specifics depend on the media types involved. A session handle is - required to control the local user functions within the session (or remote - users if the current account has rights to do so). Currently creating a - session automatically connects to the audio media, there is no need to call - Session.Connect at this time, this is reserved for future use. - - Handle returned from successful Connector ‘create’ request - This is the URI of the terminating point of the session (ie who/what is being called) - This is the display name of the entity being called (user or channel) - Only needs to be supplied when the target URI is password protected - This indicates the format of the password as passed in. This can either be - “ClearText” or “SHA1UserName”. If this element does not exist, it is assumed to be “ClearText”. If it is - “SHA1UserName”, the password as passed in is the SHA1 hash of the password and username concatenated together, - then base64 encoded, with the final “=” character stripped off. - - - - - - - Used to accept a call - - SessionHandle such as received from SessionNewEvent - "default" - - - - - This command is used to start the audio render process, which will then play - the passed in file through the selected audio render device. This command - should not be issued if the user is on a call. - - The fully qualified path to the sound file. - True if the file is to be played continuously and false if it is should be played once. - - - - - This command is used to stop the audio render process. - - The fully qualified path to the sound file issued in the start render command. - - - - - This is used to ‘end’ an established session (i.e. hang-up or disconnect). - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - - - - - Set the combined speaking and listening position in 3D space. - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - Speaking position - Listening position - - - - - Set User Volume for a particular user. Does not affect how other users hear that user. - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - - The level of the audio, a number between -100 and 100 where 0 represents ‘normal’ speaking volume - - - - - Start up the Voice service. + Send an AgentThrottle packet to the current server using the + current values - + - Handle miscellaneous request status - - - - ///If something goes wrong, we log it. - - - - Cleanup oject resources + Send an AgentThrottle packet to the specified server using the + current values - + - Request voice cap when changing regions + Convert the current throttle values to a byte array that can be put + in an AgentThrottle packet + Byte array containing all the throttle values - - - Handle a change in session state - + + Maximum bits per second for resending unacknowledged packets - - - Close a voice session - - + + Maximum bits per second for LayerData terrain - - - Locate a Session context from its handle - - Creates the session context if it does not exist. + + Maximum bits per second for LayerData wind data - - - Handle completion of main voice cap request. - - - - + + Maximum bits per second for LayerData clouds - - - Daemon has started so connect to it. - + + Unknown, includes object data - - - The daemon TCP connection is open. - + + Maximum bits per second for textures - - - Handle creation of the Connector. - + + Maximum bits per second for downloaded assets - - - Handle response to audio output device query - - - - - Handle response to audio input device query - - - - - Set voice channel for new parcel - - - - - - Request info from a parcel capability Uri. - - - - - - Receive parcel voice cap - - - - - - - - Tell Vivox where we are standing - - This has to be called when we move or turn. - - - - Start and stop updating out position. - - - - - - This is used to login a specific user account(s). It may only be called after - Connector initialization has completed successfully - - Handle returned from successful Connector ‘create’ request - User's account name - User's account password - Values may be “AutoAnswer” or “VerifyAnswer” - "" - This is an integer that specifies how often - the daemon will send participant property events while in a channel. If this is not set - the default will be “on state change”, which means that the events will be sent when - the participant starts talking, stops talking, is muted, is unmuted. - The valid values are: - 0 – Never - 5 – 10 times per second - 10 – 5 times per second - 50 – 1 time per second - 100 – on participant state change (this is the default) - false - - - - - This is used to logout a user session. It should only be called with a valid AccountHandle. - - Handle returned from successful Connector ‘login’ request - - - - - Event for most mundane request reposnses. - - - - Response to Connector.Create request - - - Response to Aux.GetCaptureDevices request - - - Response to Aux.GetRenderDevices request - - - Audio Properties Events are sent after audio capture is started. - These events are used to display a microphone VU meter - - - Response to Account.Login request - - - This event message is sent whenever the login state of the - particular Account has transitioned from one value to another - - - - List of audio input devices - - - - - List of audio output devices - - - - - Set audio test mode - - - - Enable logging - - - The folder where any logs will be created - - - This will be prepended to beginning of each log file - - - The suffix or extension to be appended to each log file - - - - 0: NONE - No logging - 1: ERROR - Log errors only - 2: WARNING - Log errors and warnings - 3: INFO - Log errors, warnings and info - 4: DEBUG - Log errors, warnings, info and debug - - - - - Constructor for default logging settings - - - - Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter - - - Positional vector of the users position - - - Velocity vector of the position - - - At Orientation (X axis) of the position - - - Up Orientation (Y axis) of the position - - - Left Orientation (Z axis) of the position - - - - The type of bump-mapping applied to a face - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The level of shininess applied to a face - - - - - - - - - - - - - - - - - The texture mapping style used for a face - - - - - - - - - - - - - - - - - Flags in the TextureEntry block that describe which properties are - set - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + Maximum bits per second the entire connection, divided up + between invidiual streams using default multipliers Particle system specific enumerators, flags and methods. - - - - - - - - - @@ -773,6 +3468,9 @@ Signed eight bit value to unpack Unpacked floating point value + + + Current version of the media data for the prim @@ -783,384 +3481,15 @@ Array of media entries indexed by face number + + + + + + Uses basic heuristics to estimate the primitive shape - - - Texture animation mode - - - - Disable texture animation - - - Enable texture animation - - - Loop when animating textures - - - Animate in reverse direction - - - Animate forward then reverse - - - Slide texture smoothly instead of frame-stepping - - - Rotate texture instead of using frames - - - Scale texture instead of using frames - - - - A single textured face. Don't instantiate this class yourself, use the - methods in TextureEntry - - - - - Contains the definition for individual faces - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - In the future this will specify whether a webpage is - attached to this face - - - - - - - Represents all of the texturable faces for an object - - Grid objects have infinite faces, with each face - using the properties of the default face unless set otherwise. So if - you have a TextureEntry with a default texture uuid of X, and face 18 - has a texture UUID of Y, every face would be textured with X except for - face 18 that uses Y. In practice however, primitives utilize a maximum - of nine faces - - - - - - - - - - Constructor that takes a default texture UUID - - Texture UUID to use as the default texture - - - - Constructor that takes a TextureEntryFace for the - default face - - Face to use as the default face - - - - Constructor that creates the TextureEntry class from a byte array - - Byte array containing the TextureEntry field - Starting position of the TextureEntry field in - the byte array - Length of the TextureEntry field, in bytes - - - - This will either create a new face if a custom face for the given - index is not defined, or return the custom face for that index if - it already exists - - The index number of the face to create or - retrieve - A TextureEntryFace containing all the properties for that - face - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Controls the texture animation of a particular prim - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Complete structure for the particle system - - - - Particle Flags - There appears to be more data packed in to this area - for many particle systems. It doesn't appear to be flag values - and serialization breaks unless there is a flag for every - possible bit so it is left as an unsigned integer - - - pattern of particles - - - A representing the maximimum age (in seconds) particle will be displayed - Maximum value is 30 seconds - - - A representing the number of seconds, - from when the particle source comes into view, - or the particle system's creation, that the object will emits particles; - after this time period no more particles are emitted - - - A in radians that specifies where particles will not be created - - - A in radians that specifies where particles will be created - - - A representing the number of seconds between burts. - - - A representing the number of meters - around the center of the source where particles will be created. - - - A representing in seconds, the minimum speed between bursts of new particles - being emitted - - - A representing in seconds the maximum speed of new particles being emitted. - - - A representing the maximum number of particles emitted per burst - - - A which represents the velocity (speed) from the source which particles are emitted - - - A which represents the Acceleration from the source which particles are emitted - - - The Key of the texture displayed on the particle - - - The Key of the specified target object or avatar particles will follow - - - Flags of particle from - - - Max Age particle system will emit particles for - - - The the particle has at the beginning of its lifecycle - - - The the particle has at the ending of its lifecycle - - - A that represents the starting X size of the particle - Minimum value is 0, maximum value is 4 - - - A that represents the starting Y size of the particle - Minimum value is 0, maximum value is 4 - - - A that represents the ending X size of the particle - Minimum value is 0, maximum value is 4 - - - A that represents the ending Y size of the particle - Minimum value is 0, maximum value is 4 - - - - Decodes a byte[] array into a ParticleSystem Object - - ParticleSystem object - Start position for BitPacker - - - - Generate byte[] array from particle data - - Byte array - - - - Particle source pattern - - - - None - - - Drop particles from source position with no force - - - "Explode" particles in all directions - - - Particles shoot across a 2D area - - - Particles shoot across a 3D Cone - - - Inverse of AngleCone (shoot particles everywhere except the 3D cone defined - - - - Particle Data Flags - - - - None - - - Interpolate color and alpha from start to end - - - Interpolate scale from start to end - - - Bounce particles off particle sources Z height - - - velocity of particles is dampened toward the simulators wind - - - Particles follow the source - - - Particles point towards the direction of source's velocity - - - Target of the particles - - - Particles are sent in a straight line - - - Particles emit a glow - - - used for point/grab/touch - - - - Particle Flags Enum - - - - None - - - Acceleration and velocity for particles are - relative to the object rotation - - - Particles use new 'correct' angle parameters - Parameters used to construct a visual representation of a primitive @@ -1448,6 +3777,5821 @@ that has been partially filled by an ObjectPropertiesFamily packet + + + Complete structure for the particle system + + + + Particle Flags + There appears to be more data packed in to this area + for many particle systems. It doesn't appear to be flag values + and serialization breaks unless there is a flag for every + possible bit so it is left as an unsigned integer + + + pattern of particles + + + A representing the maximimum age (in seconds) particle will be displayed + Maximum value is 30 seconds + + + A representing the number of seconds, + from when the particle source comes into view, + or the particle system's creation, that the object will emits particles; + after this time period no more particles are emitted + + + A in radians that specifies where particles will not be created + + + A in radians that specifies where particles will be created + + + A representing the number of seconds between burts. + + + A representing the number of meters + around the center of the source where particles will be created. + + + A representing in seconds, the minimum speed between bursts of new particles + being emitted + + + A representing in seconds the maximum speed of new particles being emitted. + + + A representing the maximum number of particles emitted per burst + + + A which represents the velocity (speed) from the source which particles are emitted + + + A which represents the Acceleration from the source which particles are emitted + + + The Key of the texture displayed on the particle + + + The Key of the specified target object or avatar particles will follow + + + Flags of particle from + + + Max Age particle system will emit particles for + + + The the particle has at the beginning of its lifecycle + + + The the particle has at the ending of its lifecycle + + + A that represents the starting X size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the starting Y size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the ending X size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the ending Y size of the particle + Minimum value is 0, maximum value is 4 + + + + Decodes a byte[] array into a ParticleSystem Object + + ParticleSystem object + Start position for BitPacker + + + + Generate byte[] array from particle data + + Byte array + + + + Particle source pattern + + + + None + + + Drop particles from source position with no force + + + "Explode" particles in all directions + + + Particles shoot across a 2D area + + + Particles shoot across a 3D Cone + + + Inverse of AngleCone (shoot particles everywhere except the 3D cone defined + + + + Particle Data Flags + + + + None + + + Interpolate color and alpha from start to end + + + Interpolate scale from start to end + + + Bounce particles off particle sources Z height + + + velocity of particles is dampened toward the simulators wind + + + Particles follow the source + + + Particles point towards the direction of source's velocity + + + Target of the particles + + + Particles are sent in a straight line + + + Particles emit a glow + + + used for point/grab/touch + + + + Particle Flags Enum + + + + None + + + Acceleration and velocity for particles are + relative to the object rotation + + + Particles use new 'correct' angle parameters + + + + Texture animation mode + + + + Disable texture animation + + + Enable texture animation + + + Loop when animating textures + + + Animate in reverse direction + + + Animate forward then reverse + + + Slide texture smoothly instead of frame-stepping + + + Rotate texture instead of using frames + + + Scale texture instead of using frames + + + + A single textured face. Don't instantiate this class yourself, use the + methods in TextureEntry + + + + + Contains the definition for individual faces + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In the future this will specify whether a webpage is + attached to this face + + + + + + + Represents all of the texturable faces for an object + + Grid objects have infinite faces, with each face + using the properties of the default face unless set otherwise. So if + you have a TextureEntry with a default texture uuid of X, and face 18 + has a texture UUID of Y, every face would be textured with X except for + face 18 that uses Y. In practice however, primitives utilize a maximum + of nine faces + + + + + + + + + + Constructor that takes a default texture UUID + + Texture UUID to use as the default texture + + + + Constructor that takes a TextureEntryFace for the + default face + + Face to use as the default face + + + + Constructor that creates the TextureEntry class from a byte array + + Byte array containing the TextureEntry field + Starting position of the TextureEntry field in + the byte array + Length of the TextureEntry field, in bytes + + + + This will either create a new face if a custom face for the given + index is not defined, or return the custom face for that index if + it already exists + + The index number of the face to create or + retrieve + A TextureEntryFace containing all the properties for that + face + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Controls the texture animation of a particular prim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A Wrapper around openjpeg to encode and decode images to and from byte arrays + + + + TGA Header size + + + OpenJPEG is not threadsafe, so this object is used to lock + during calls into unmanaged code + + + + Encode a object into a byte array + + The object to encode + true to enable lossless conversion, only useful for small images ie: sculptmaps + A byte array containing the encoded Image object + + + + Encode a object into a byte array + + The object to encode + a byte array of the encoded image + + + + Decode JPEG2000 data to an and + + + JPEG2000 encoded data + ManagedImage object to decode to + Image object to decode to + True if the decode succeeds, otherwise false + + + + + + + + + + + + + + + + + + + + + Encode a object into a byte array + + The source object to encode + true to enable lossless decoding + A byte array containing the source Bitmap object + + + + Defines the beginning and ending file positions of a layer in an + LRCP-progression JPEG2000 file + + + + + This structure is used to marshal both encoded and decoded images. + MUST MATCH THE STRUCT IN dotnet.h! + + + + + Information about a single packet in a JPEG2000 stream + + + + Packet start position + + + Packet header end position + + + Packet end position + + + + Represents an that represents an avatars body ie: Hair, Etc. + + + + + Represents a Wearable Asset, Clothing, Hair, Skin, Etc + + + + A string containing the name of the asset + + + A string containing a short description of the asset + + + The Assets WearableType + + + The For-Sale status of the object + + + An Integer representing the purchase price of the asset + + + The of the assets creator + + + The of the assets current owner + + + The of the assets prior owner + + + The of the Group this asset is set to + + + True if the asset is owned by a + + + The Permissions mask of the asset + + + A Dictionary containing Key/Value pairs of the objects parameters + + + A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures + + + Initializes a new instance of an AssetWearable object + + + Initializes a new instance of an AssetWearable object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + Decode an assets byte encoded data to a string + + true if the asset data was decoded successfully + + + + Encode the assets string represantion into a format consumable by the asset server + + + + Initializes a new instance of an AssetBodyPart object + + + Initializes a new instance of an AssetBodyPart object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Permission request flags, asked when a script wants to control an Avatar + + + + Placeholder for empty values, shouldn't ever see this + + + Script wants ability to take money from you + + + Script wants to take camera controls for you + + + Script wants to remap avatars controls + + + Script wants to trigger avatar animations + This function is not implemented on the grid + + + Script wants to attach or detach the prim or primset to your avatar + + + Script wants permission to release ownership + This function is not implemented on the grid + The concept of "public" objects does not exist anymore. + + + Script wants ability to link/delink with other prims + + + Script wants permission to change joints + This function is not implemented on the grid + + + Script wants permissions to change permissions + This function is not implemented on the grid + + + Script wants to track avatars camera position and rotation + + + Script wants to control your camera + + + + Special commands used in Instant Messages + + + + Indicates a regular IM from another agent + + + Simple notification box with an OK button + + + You've been invited to join a group. + + + Inventory offer + + + Accepted inventory offer + + + Declined inventory offer + + + Group vote + + + An object is offering its inventory + + + Accept an inventory offer from an object + + + Decline an inventory offer from an object + + + Unknown + + + Start a session, or add users to a session + + + Start a session, but don't prune offline users + + + Start a session with your group + + + Start a session without a calling card (finder or objects) + + + Send a message to a session + + + Leave a session + + + Indicates that the IM is from an object + + + Sent an IM to a busy user, this is the auto response + + + Shows the message in the console and chat history + + + Send a teleport lure + + + Response sent to the agent which inititiated a teleport invitation + + + Response sent to the agent which inititiated a teleport invitation + + + Only useful if you have Linden permissions + + + A placeholder type for future expansion, currently not + used + + + IM to tell the user to go to an URL + + + IM for help + + + IM sent automatically on call for help, sends a lure + to each Helper reached + + + Like an IM but won't go to email + + + IM from a group officer to all group members + + + Unknown + + + Unknown + + + Accept a group invitation + + + Decline a group invitation + + + Unknown + + + An avatar is offering you friendship + + + An avatar has accepted your friendship offer + + + An avatar has declined your friendship offer + + + Indicates that a user has started typing + + + Indicates that a user has stopped typing + + + + Flag in Instant Messages, whether the IM should be delivered to + offline avatars as well + + + + Only deliver to online avatars + + + If the avatar is offline the message will be held until + they login next, and possibly forwarded to their e-mail account + + + + Conversion type to denote Chat Packet types in an easier-to-understand format + + + + Whisper (5m radius) + + + Normal chat (10/20m radius), what the official viewer typically sends + + + Shouting! (100m radius) + + + Event message when an Avatar has begun to type + + + Event message when an Avatar has stopped typing + + + Send the message to the debug channel + + + Event message when an object uses llOwnerSay + + + Special value to support llRegionSay, never sent to the client + + + + Identifies the source of a chat message + + + + Chat from the grid or simulator + + + Chat from another avatar + + + Chat from an object + + + + + + + + + + + + + + + + + + Effect type used in ViewerEffect packets + + + + + + + + + + + + + + + + + + + + + + + + + Project a beam from a source to a destination, such as + the one used when editing an object + + + + + + + + + + + + Create a swirl of particles around an object + + + + + + + + + Cause an avatar to look at an object + + + Cause an avatar to point at an object + + + + The action an avatar is doing when looking at something, used in + ViewerEffect packets for the LookAt effect + + + + + + + + + + + + + + + + + + + + + + Deprecated + + + + + + + + + + + + + + + + The action an avatar is doing when pointing at something, used in + ViewerEffect packets for the PointAt effect + + + + + + + + + + + + + + + + + Money transaction types + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Flags sent when a script takes or releases a control + + NOTE: (need to verify) These might be a subset of the ControlFlags enum in Movement, + + + No Flags set + + + Forward (W or up Arrow) + + + Back (S or down arrow) + + + Move left (shift+A or left arrow) + + + Move right (shift+D or right arrow) + + + Up (E or PgUp) + + + Down (C or PgDown) + + + Rotate left (A or left arrow) + + + Rotate right (D or right arrow) + + + Left Mouse Button + + + Left Mouse button in MouseLook + + + + Currently only used to hide your group title + + + + No flags set + + + Hide your group title + + + + Action state of the avatar, which can currently be typing and + editing + + + + + + + + + + + + + + Current teleport status + + + + Unknown status + + + Teleport initialized + + + Teleport in progress + + + Teleport failed + + + Teleport completed + + + Teleport cancelled + + + + + + + + No flags set, or teleport failed + + + Set when newbie leaves help island for first time + + + + + + Via Lure + + + Via Landmark + + + Via Location + + + Via Home + + + Via Telehub + + + Via Login + + + Linden Summoned + + + Linden Forced me + + + + + + Agent Teleported Home via Script + + + + + + + + + + + + forced to new location for example when avatar is banned or ejected + + + Teleport Finished via a Lure + + + Finished, Sim Changed + + + Finished, Same Sim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Instant Message + + + + Key of sender + + + Name of sender + + + Key of destination avatar + + + ID of originating estate + + + Key of originating region + + + Coordinates in originating region + + + Instant message type + + + Group IM session toggle + + + Key of IM session, for Group Messages, the groups UUID + + + Timestamp of the instant message + + + Instant message text + + + Whether this message is held for offline avatars + + + Context specific packed data + + + Print the struct data as a string + A string containing the field name, and field value + + + + Manager class for our own avatar + + + + The event subscribers. null if no subcribers + + + Raises the ChatFromSimulator event + A ChatEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ScriptDialog event + A SctriptDialogEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ScriptQuestion event + A ScriptQuestionEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the LoadURL event + A LoadUrlEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the MoneyBalance event + A BalanceEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the MoneyBalanceReply event + A MoneyBalanceReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the IM event + A InstantMessageEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the TeleportProgress event + A TeleportEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AgentDataReply event + A AgentDataReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AnimationsChanged event + A AnimationsChangedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the MeanCollision event + A MeanCollisionEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the RegionCrossed event + A RegionCrossedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupChatJoined event + A GroupChatJoinedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AlertMessage event + A AlertMessageEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ScriptControlChange event + A ScriptControlEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the CameraConstraint event + A CameraConstraintEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ScriptSensorReply event + A ScriptSensorReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AvatarSitResponse event + A AvatarSitResponseEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ChatSessionMemberAdded event + A ChatSessionMemberAddedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ChatSessionMemberLeft event + A ChatSessionMemberLeftEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Reference to the GridClient instance + + + Used for movement and camera tracking + + + Currently playing animations for the agent. Can be used to + check the current movement status such as walking, hovering, aiming, + etc. by checking against system animations found in the Animations class + + + Dictionary containing current Group Chat sessions and members + + + + Constructor, setup callbacks for packets related to our avatar + + A reference to the Class + + + + Send a text message from the Agent to the Simulator + + A containing the message + The channel to send the message on, 0 is the public channel. Channels above 0 + can be used however only scripts listening on the specified channel will see the message + Denotes the type of message being sent, shout, whisper, etc. + + + + Request any instant messages sent while the client was offline to be resent. + + + + + Send an Instant Message to another Avatar + + The recipients + A containing the message to send + + + + Send an Instant Message to an existing group chat or conference chat + + The recipients + A containing the message to send + IM session ID (to differentiate between IM windows) + + + + Send an Instant Message + + The name this IM will show up as being from + Key of Avatar + Text message being sent + IM session ID (to differentiate between IM windows) + IDs of sessions for a conference + + + + Send an Instant Message + + The name this IM will show up as being from + Key of Avatar + Text message being sent + IM session ID (to differentiate between IM windows) + Type of instant message to send + Whether to IM offline avatars as well + Senders Position + RegionID Sender is In + Packed binary data that is specific to + the dialog type + + + + Send an Instant Message to a group + + of the group to send message to + Text Message being sent. + + + + Send an Instant Message to a group the agent is a member of + + The name this IM will show up as being from + of the group to send message to + Text message being sent + + + + Send a request to join a group chat session + + of Group to leave + + + + Exit a group chat session. This will stop further Group chat messages + from being sent until session is rejoined. + + of Group chat session to leave + + + + Reply to script dialog questions. + + Channel initial request came on + Index of button you're "clicking" + Label of button you're "clicking" + of Object that sent the dialog request + + + + + Accept invite for to a chatterbox session + + of session to accept invite to + + + + Start a friends conference + + List of UUIDs to start a conference with + the temportary session ID returned in the callback> + + + + Start a particle stream between an agent and an object + + Key of the source agent + Key of the target object + + The type from the enum + A unique for this effect + + + + Start a particle stream between an agent and an object + + Key of the source agent + Key of the target object + A representing the beams offset from the source + A which sets the avatars lookat animation + of the Effect + + + + Create a particle beam between an avatar and an primitive + + The ID of source avatar + The ID of the target primitive + global offset + A object containing the combined red, green, blue and alpha + color values of particle beam + a float representing the duration the parcicle beam will last + A Unique ID for the beam + + + + + Create a particle swirl around a target position using a packet + + global offset + A object containing the combined red, green, blue and alpha + color values of particle beam + a float representing the duration the parcicle beam will last + A Unique ID for the beam + + + + Sends a request to sit on the specified object + + of the object to sit on + Sit at offset + + + + Follows a call to to actually sit on the object + + + + Stands up from sitting on a prim or the ground + true of AgentUpdate was sent + + + + Does a "ground sit" at the avatar's current position + + + + + Starts or stops flying + + True to start flying, false to stop flying + + + + Starts or stops crouching + + True to start crouching, false to stop crouching + + + + Starts a jump (begin holding the jump key) + + + + + Use the autopilot sim function to move the avatar to a new + position. Uses double precision to get precise movements + + The z value is currently not handled properly by the simulator + Global X coordinate to move to + Global Y coordinate to move to + Z coordinate to move to + + + + Use the autopilot sim function to move the avatar to a new position + + The z value is currently not handled properly by the simulator + Integer value for the global X coordinate to move to + Integer value for the global Y coordinate to move to + Floating-point value for the Z coordinate to move to + + + + Use the autopilot sim function to move the avatar to a new position + + The z value is currently not handled properly by the simulator + Integer value for the local X coordinate to move to + Integer value for the local Y coordinate to move to + Floating-point value for the Z coordinate to move to + + + Macro to cancel autopilot sim function + Not certain if this is how it is really done + true if control flags were set and AgentUpdate was sent to the simulator + + + + Grabs an object + + an unsigned integer of the objects ID within the simulator + + + + + Overload: Grab a simulated object + + an unsigned integer of the objects ID within the simulator + + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space + + + + Drag an object + + of the object to drag + Drag target in region coordinates + + + + Overload: Drag an object + + of the object to drag + Drag target in region coordinates + + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space + + + + Release a grabbed object + + The Objects Simulator Local ID + + + + + + + Release a grabbed object + + The Objects Simulator Local ID + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space + + + + Touches an object + + an unsigned integer of the objects ID within the simulator + + + + + Request the current L$ balance + + + + + Give Money to destination Avatar + + UUID of the Target Avatar + Amount in L$ + + + + Give Money to destination Avatar + + UUID of the Target Avatar + Amount in L$ + Description that will show up in the + recipients transaction history + + + + Give L$ to an object + + object to give money to + amount of L$ to give + name of object + + + + Give L$ to a group + + group to give money to + amount of L$ to give + + + + Give L$ to a group + + group to give money to + amount of L$ to give + description of transaction + + + + Pay texture/animation upload fee + + + + + Pay texture/animation upload fee + + description of the transaction + + + + Give Money to destination Object or Avatar + + UUID of the Target Object/Avatar + Amount in L$ + Reason (Optional normally) + The type of transaction + Transaction flags, mostly for identifying group + transactions + + + + Plays a gesture + + Asset of the gesture + + + + Mark gesture active + + Inventory of the gesture + Asset of the gesture + + + + Mark gesture inactive + + Inventory of the gesture + + + + Send an AgentAnimation packet that toggles a single animation on + + The of the animation to start playing + Whether to ensure delivery of this packet or not + + + + Send an AgentAnimation packet that toggles a single animation off + + The of a + currently playing animation to stop playing + Whether to ensure delivery of this packet or not + + + + Send an AgentAnimation packet that will toggle animations on or off + + A list of animation s, and whether to + turn that animation on or off + Whether to ensure delivery of this packet or not + + + + Teleports agent to their stored home location + + true on successful teleport to home location + + + + Teleport agent to a landmark + + of the landmark to teleport agent to + true on success, false on failure + + + + Attempt to look up a simulator name and teleport to the discovered + destination + + Region name to look up + Position to teleport to + True if the lookup and teleport were successful, otherwise + false + + + + Attempt to look up a simulator name and teleport to the discovered + destination + + Region name to look up + Position to teleport to + Target to look at + True if the lookup and teleport were successful, otherwise + false + + + + Teleport agent to another region + + handle of region to teleport agent to + position in destination sim to teleport to + true on success, false on failure + This call is blocking + + + + Teleport agent to another region + + handle of region to teleport agent to + position in destination sim to teleport to + direction in destination sim agent will look at + true on success, false on failure + This call is blocking + + + + Request teleport to a another simulator + + handle of region to teleport agent to + position in destination sim to teleport to + + + + Request teleport to a another simulator + + handle of region to teleport agent to + position in destination sim to teleport to + direction in destination sim agent will look at + + + + Teleport agent to a landmark + + of the landmark to teleport agent to + + + + Send a teleport lure to another avatar with default "Join me in ..." invitation message + + target avatars to lure + + + + Send a teleport lure to another avatar with custom invitation message + + target avatars to lure + custom message to send with invitation + + + + Respond to a teleport lure by either accepting it and initiating + the teleport, or denying it + + of the avatar sending the lure + IM session of the incoming lure request + true to accept the lure, false to decline it + + + + Update agent profile + + struct containing updated + profile information + + + + Update agents profile interests + + selection of interests from struct + + + + Set the height and the width of the client window. This is used + by the server to build a virtual camera frustum for our avatar + + New height of the viewer window + New width of the viewer window + + + + Request the list of muted objects and avatars for this agent + + + + + Sets home location to agents current position + + will fire an AlertMessage () with + success or failure message + + + + Move an agent in to a simulator. This packet is the last packet + needed to complete the transition in to a new simulator + + Object + + + + Reply to script permissions request + + Object + of the itemID requesting permissions + of the taskID requesting permissions + list of permissions to allow + + + + Respond to a group invitation by either accepting or denying it + + UUID of the group (sent in the AgentID field of the invite message) + IM Session ID from the group invitation message + Accept the group invitation or deny it + + + + Requests script detection of objects and avatars + + name of the object/avatar to search for + UUID of the object or avatar to search for + Type of search from ScriptSensorTypeFlags + range of scan (96 max?) + the arc in radians to search within + an user generated ID to correlate replies with + Simulator to perform search in + + + + Create or update profile pick + + UUID of the pick to update, or random UUID to create a new pick + Is this a top pick? (typically false) + UUID of the parcel (UUID.Zero for the current parcel) + Name of the pick + Global position of the pick landmark + UUID of the image displayed with the pick + Long description of the pick + + + + Delete profile pick + + UUID of the pick to delete + + + + Create or update profile Classified + + UUID of the classified to update, or random UUID to create a new classified + Defines what catagory the classified is in + UUID of the image displayed with the classified + Price that the classified will cost to place for a week + Global position of the classified landmark + Name of the classified + Long description of the classified + if true, auto renew classified after expiration + + + + Create or update profile Classified + + UUID of the classified to update, or random UUID to create a new classified + Defines what catagory the classified is in + UUID of the image displayed with the classified + Price that the classified will cost to place for a week + Name of the classified + Long description of the classified + if true, auto renew classified after expiration + + + + Delete a classified ad + + The classified ads ID + + + + Fetches resource usage by agents attachmetns + + Called when the requested information is collected + + + + Take an incoming ImprovedInstantMessage packet, auto-parse, and if + OnInstantMessage is defined call that with the appropriate arguments + + The sender + The EventArgs object containing the packet data + + + + Take an incoming Chat packet, auto-parse, and if OnChat is defined call + that with the appropriate arguments. + + The sender + The EventArgs object containing the packet data + + + + Used for parsing llDialogs + + The sender + The EventArgs object containing the packet data + + + + Used for parsing llRequestPermissions dialogs + + The sender + The EventArgs object containing the packet data + + + + Handles Script Control changes when Script with permissions releases or takes a control + + The sender + The EventArgs object containing the packet data + + + + Used for parsing llLoadURL Dialogs + + The sender + The EventArgs object containing the packet data + + + + Update client's Position, LookAt and region handle from incoming packet + + The sender + The EventArgs object containing the packet data + This occurs when after an avatar moves into a new sim + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Process TeleportFailed message sent via EventQueue, informs agent its last teleport has failed and why. + + The Message Key + An IMessage object Deserialized from the recieved message event + The simulator originating the event message + + + + Process TeleportFinish from Event Queue and pass it onto our TeleportHandler + + The message system key for this event + IMessage object containing decoded data from OSD + The simulator originating the event message + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + This packet is now being sent via the EventQueue + + + + Group Chat event handler + + The capability Key + IMessage object containing decoded data from OSD + + + + + Response from request to join a group chat + + + IMessage object containing decoded data from OSD + + + + + Someone joined or left group chat + + + IMessage object containing decoded data from OSD + + + + + Handle a group chat Invitation + + Caps Key + IMessage object containing decoded data from OSD + Originating Simulator + + + + Moderate a chat session + + the of the session to moderate, for group chats this will be the groups UUID + the of the avatar to moderate + Either "voice" to moderate users voice, or "text" to moderate users text session + true to moderate (silence user), false to allow avatar to speak + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when a scripted object or agent within range sends a public message + + + Raised when a scripted object sends a dialog box containing possible + options an agent can respond to + + + Raised when an object requests a change in the permissions an agent has permitted + + + Raised when a script requests an agent open the specified URL + + + Raised when an agents currency balance is updated + + + Raised when a transaction occurs involving currency such as a land purchase + + + Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from + private messaging to friendship offers. The Dialog field defines what type of message has arrived + + + Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times + for each teleport indicating the progress of the request + + + Raised when a simulator sends agent specific information for our avatar. + + + Raised when our agents animation playlist changes + + + Raised when an object or avatar forcefully collides with our agent + + + Raised when our agent crosses a region border into another region + + + Raised when our agent succeeds or fails to join a group chat session + + + Raised when a simulator sends an urgent message usually indication the recent failure of + another action we have attempted to take such as an attempt to enter a parcel where we are denied access + + + Raised when a script attempts to take or release specified controls for our agent + + + Raised when the simulator detects our agent is trying to view something + beyond its limits + + + Raised when a script sensor reply is received from a simulator + + + Raised in response to a request + + + Raised when an avatar enters a group chat session we are participating in + + + Raised when an agent exits a group chat session we are participating in + + + Your (client) avatars + "client", "agent", and "avatar" all represent the same thing + + + Temporary assigned to this session, used for + verifying our identity in packets + + + Shared secret that is never sent over the wire + + + Your (client) avatar ID, local to the current region/sim + + + Where the avatar started at login. Can be "last", "home" + or a login + + + The access level of this agent, usually M or PG + + + The CollisionPlane of Agent + + + An representing the velocity of our agent + + + An representing the acceleration of our agent + + + A which specifies the angular speed, and axis about which an Avatar is rotating. + + + Position avatar client will goto when login to 'home' or during + teleport request to 'home' region. + + + LookAt point saved/restored with HomePosition + + + Avatar First Name (i.e. Philip) + + + Avatar Last Name (i.e. Linden) + + + Avatar Full Name (i.e. Philip Linden) + + + Gets the health of the agent + + + Gets the current balance of the agent + + + Gets the local ID of the prim the agent is sitting on, + zero if the avatar is not currently sitting + + + Gets the of the agents active group. + + + Gets the Agents powers in the currently active group + + + Current status message for teleporting + + + Current position of the agent as a relative offset from + the simulator, or the parent object if we are sitting on something + + + Current rotation of the agent as a relative rotation from + the simulator, or the parent object if we are sitting on something + + + Current position of the agent in the simulator + + + + A representing the agents current rotation + + + + Returns the global grid position of the avatar + + + + Called once attachment resource usage information has been collected + + Indicates if operation was successfull + Attachment resource usage information + + + + Used to specify movement actions for your agent + + + + Empty flag + + + Move Forward (SL Keybinding: W/Up Arrow) + + + Move Backward (SL Keybinding: S/Down Arrow) + + + Move Left (SL Keybinding: Shift-(A/Left Arrow)) + + + Move Right (SL Keybinding: Shift-(D/Right Arrow)) + + + Not Flying: Jump/Flying: Move Up (SL Keybinding: E) + + + Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) + + + Unused + + + Unused + + + Unused + + + Unused + + + ORed with AGENT_CONTROL_AT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_UP_* if the keyboard is being used + + + Fly + + + + + + Finish our current animation + + + Stand up from the ground or a prim seat + + + Sit on the ground at our current location + + + Whether mouselook is currently enabled + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + + + + + + + Set when the avatar is idled or set to away. Note that the away animation is + activated separately from setting this flag + + + + + + + + + + + + + + + + Agent movement and camera control + + Agent movement is controlled by setting specific + After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags + This is most easily accomplished by setting one or more of the AgentMovement properties + + Movement of an avatar is always based on a compass direction, for example AtPos will move the + agent from West to East or forward on the X Axis, AtNeg will of course move agent from + East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis + The Z axis is Up, finer grained control of movements can be done using the Nudge properties + + + + Agent camera controls + + + Currently only used for hiding your group title + + + Action state of the avatar, which can currently be + typing and editing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Timer for sending AgentUpdate packets + + + Default constructor + + + + Send an AgentUpdate with the camera set at the current agent + position and pointing towards the heading specified + + Camera rotation in radians + Whether to send the AgentUpdate reliable + or not + + + + Rotates the avatar body and camera toward a target position. + This will also anchor the camera position on the avatar + + Region coordinates to turn toward + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + Whether to require server acknowledgement + of this packet + + + + Send new AgentUpdate packet to update our current camera + position and rotation + + Whether to require server acknowledgement + of this packet + Simulator to send the update to + + + + Builds an AgentUpdate packet entirely from parameters. This + will not touch the state of Self.Movement or + Self.Movement.Camera in any way + + + + + + + + + + + + + + + Move agent positive along the X axis + + + Move agent negative along the X axis + + + Move agent positive along the Y axis + + + Move agent negative along the Y axis + + + Move agent positive along the Z axis + + + Move agent negative along the Z axis + + + + + + + + + + + + + + + + + + + + + + + + Causes simulator to make agent fly + + + Stop movement + + + Finish animation + + + Stand up from a sit + + + Tells simulator to sit agent on ground + + + Place agent into mouselook mode + + + Nudge agent positive along the X axis + + + Nudge agent negative along the X axis + + + Nudge agent positive along the Y axis + + + Nudge agent negative along the Y axis + + + Nudge agent positive along the Z axis + + + Nudge agent negative along the Z axis + + + + + + + + + Tell simulator to mark agent as away + + + + + + + + + + + + + + + + Returns "always run" value, or changes it by sending a SetAlwaysRunPacket + + + + The current value of the agent control flags + + + Gets or sets the interval in milliseconds at which + AgentUpdate packets are sent to the current simulator. Setting + this to a non-zero value will also enable the packet sending if + it was previously off, and setting it to zero will disable + + + Gets or sets whether AgentUpdate packets are sent to + the current simulator + + + Reset movement controls every time we send an update + + + + Camera controls for the agent, mostly a thin wrapper around + CoordinateFrame. This class is only responsible for state + tracking and math, it does not send any packets + + + + + + + The camera is a local frame of reference inside of + the larger grid space. This is where the math happens + + + + Default constructor + + + + + + + + + + + + + + + + + + + + + + Construct a new instance of the ChatEventArgs object + + Sim from which the message originates + The message sent + The audible level of the message + The type of message sent: whisper, shout, etc + The source type of the message sender + The name of the agent or object sending the message + The ID of the agent or object sending the message + The ID of the object owner, or the agent ID sending the message + The position of the agent or object sending the message + + + Get the simulator sending the message + + + Get the message sent + + + Get the audible level of the message + + + Get the type of message sent: whisper, shout, etc + + + Get the source type of the message sender + + + Get the name of the agent or object sending the message + + + Get the ID of the agent or object sending the message + + + Get the ID of the object owner, or the agent ID sending the message + + + Get the position of the agent or object sending the message + + + Contains the data sent when a primitive opens a dialog with this agent + + + + Construct a new instance of the ScriptDialogEventArgs + + The dialog message + The name of the object that sent the dialog request + The ID of the image to be displayed + The ID of the primitive sending the dialog + The first name of the senders owner + The last name of the senders owner + The communication channel the dialog was sent on + The string labels containing the options presented in this dialog + + + Get the dialog message + + + Get the name of the object that sent the dialog request + + + Get the ID of the image to be displayed + + + Get the ID of the primitive sending the dialog + + + Get the first name of the senders owner + + + Get the last name of the senders owner + + + Get the communication channel the dialog was sent on, responses + should also send responses on this same channel + + + Get the string labels containing the options presented in this dialog + + + Contains the data sent when a primitive requests debit or other permissions + requesting a YES or NO answer + + + + Construct a new instance of the ScriptQuestionEventArgs + + The simulator containing the object sending the request + The ID of the script making the request + The ID of the primitive containing the script making the request + The name of the primitive making the request + The name of the owner of the object making the request + The permissions being requested + + + Get the simulator containing the object sending the request + + + Get the ID of the script making the request + + + Get the ID of the primitive containing the script making the request + + + Get the name of the primitive making the request + + + Get the name of the owner of the object making the request + + + Get the permissions being requested + + + Contains the data sent when a primitive sends a request + to an agent to open the specified URL + + + + Construct a new instance of the LoadUrlEventArgs + + The name of the object sending the request + The ID of the object sending the request + The ID of the owner of the object sending the request + True if the object is owned by a group + The message sent with the request + The URL the object sent + + + Get the name of the object sending the request + + + Get the ID of the object sending the request + + + Get the ID of the owner of the object sending the request + + + True if the object is owned by a group + + + Get the message sent with the request + + + Get the URL the object sent + + + The date received from an ImprovedInstantMessage + + + + Construct a new instance of the InstantMessageEventArgs object + + the InstantMessage object + the simulator where the InstantMessage origniated + + + Get the InstantMessage object + + + Get the simulator where the InstantMessage origniated + + + Contains the currency balance + + + + Construct a new BalanceEventArgs object + + The currenct balance + + + + Get the currenct balance + + + + Contains the transaction summary when an item is purchased, + money is given, or land is purchased + + + + Construct a new instance of the MoneyBalanceReplyEventArgs object + + The ID of the transaction + True of the transaction was successful + The current currency balance + The meters credited + The meters comitted + A brief description of the transaction + + + Get the ID of the transaction + + + True of the transaction was successful + + + Get the remaining currency balance + + + Get the meters credited + + + Get the meters comitted + + + Get the description of the transaction + + + Data sent from the simulator containing information about your agent and active group information + + + + Construct a new instance of the AgentDataReplyEventArgs object + + The agents first name + The agents last name + The agents active group ID + The group title of the agents active group + The combined group powers the agent has in the active group + The name of the group the agent has currently active + + + Get the agents first name + + + Get the agents last name + + + Get the active group ID of your agent + + + Get the active groups title of your agent + + + Get the combined group powers of your agent + + + Get the active group name of your agent + + + Data sent by the simulator to indicate the active/changed animations + applied to your agent + + + + Construct a new instance of the AnimationsChangedEventArgs class + + The dictionary that contains the changed animations + + + Get the dictionary that contains the changed animations + + + + Data sent from a simulator indicating a collision with your agent + + + + + Construct a new instance of the MeanCollisionEventArgs class + + The type of collision that occurred + The ID of the agent or object that perpetrated the agression + The ID of the Victim + The strength of the collision + The Time the collision occurred + + + Get the Type of collision + + + Get the ID of the agent or object that collided with your agent + + + Get the ID of the agent that was attacked + + + A value indicating the strength of the collision + + + Get the time the collision occurred + + + Data sent to your agent when it crosses region boundaries + + + + Construct a new instance of the RegionCrossedEventArgs class + + The simulator your agent just left + The simulator your agent is now in + + + Get the simulator your agent just left + + + Get the simulator your agent is now in + + + Data sent from the simulator when your agent joins a group chat session + + + + Construct a new instance of the GroupChatJoinedEventArgs class + + The ID of the session + The name of the session + A temporary session id used for establishing new sessions + True of your agent successfully joined the session + + + Get the ID of the group chat session + + + Get the name of the session + + + Get the temporary session ID used for establishing new sessions + + + True if your agent successfully joined the session + + + Data sent by the simulator containing urgent messages + + + + Construct a new instance of the AlertMessageEventArgs class + + The alert message + + + Get the alert message + + + Data sent by a script requesting to take or release specified controls to your agent + + + + Construct a new instance of the ScriptControlEventArgs class + + The controls the script is attempting to take or release to the agent + True if the script is passing controls back to the agent + True if the script is requesting controls be released to the script + + + Get the controls the script is attempting to take or release to the agent + + + True if the script is passing controls back to the agent + + + True if the script is requesting controls be released to the script + + + + Data sent from the simulator to an agent to indicate its view limits + + + + + Construct a new instance of the CameraConstraintEventArgs class + + The collision plane + + + Get the collision plane + + + + Data containing script sensor requests which allow an agent to know the specific details + of a primitive sending script sensor requests + + + + + Construct a new instance of the ScriptSensorReplyEventArgs + + The ID of the primitive sending the sensor + The ID of the group associated with the primitive + The name of the primitive sending the sensor + The ID of the primitive sending the sensor + The ID of the owner of the primitive sending the sensor + The position of the primitive sending the sensor + The range the primitive specified to scan + The rotation of the primitive sending the sensor + The type of sensor the primitive sent + The velocity of the primitive sending the sensor + + + Get the ID of the primitive sending the sensor + + + Get the ID of the group associated with the primitive + + + Get the name of the primitive sending the sensor + + + Get the ID of the primitive sending the sensor + + + Get the ID of the owner of the primitive sending the sensor + + + Get the position of the primitive sending the sensor + + + Get the range the primitive specified to scan + + + Get the rotation of the primitive sending the sensor + + + Get the type of sensor the primitive sent + + + Get the velocity of the primitive sending the sensor + + + Contains the response data returned from the simulator in response to a + + + Construct a new instance of the AvatarSitResponseEventArgs object + + + Get the ID of the primitive the agent will be sitting on + + + True if the simulator Autopilot functions were involved + + + Get the camera offset of the agent when seated + + + Get the camera eye offset of the agent when seated + + + True of the agent will be in mouselook mode when seated + + + Get the position of the agent when seated + + + Get the rotation of the agent when seated + + + Data sent when an agent joins a chat session your agent is currently participating in + + + + Construct a new instance of the ChatSessionMemberAddedEventArgs object + + The ID of the chat session + The ID of the agent joining + + + Get the ID of the chat session + + + Get the ID of the agent that joined + + + Data sent when an agent exits a chat session your agent is currently participating in + + + + Construct a new instance of the ChatSessionMemberLeftEventArgs object + + The ID of the chat session + The ID of the Agent that left + + + Get the ID of the chat session + + + Get the ID of the agent that left + + + + Return a decoded capabilities message as a strongly typed object + + A string containing the name of the capabilities message key + An to decode + A strongly typed object containing the decoded information from the capabilities message, or null + if no existing Message object exists for the specified event + + + + Represents a string of characters encoded with specific formatting properties + + + + A text string containing main text of the notecard + + + List of s embedded on the notecard + + + Construct an Asset of type Notecard + + + + Construct an Asset object of type Notecard + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encode the raw contents of a string with the specific Linden Text properties + + + + + Decode the raw asset data including the Linden Text properties + + true if the AssetData was successfully decoded + + + Override the base classes AssetType + + + + Class for controlling various system settings. + + Some values are readonly because they affect things that + happen when the GridClient object is initialized, so changing them at + runtime won't do any good. Non-readonly values may affect things that + happen at login or dynamically + + + Main grid login server + + + Beta grid login server + + + + InventoryManager requests inventory information on login, + GridClient initializes an Inventory store for main inventory. + + + + + InventoryManager requests library information on login, + GridClient initializes an Inventory store for the library. + + + + Number of milliseconds between sending pings to each sim + + + Number of milliseconds between sending camera updates + + + Number of milliseconds between updating the current + positions of moving, non-accelerating and non-colliding objects + + + Millisecond interval between ticks, where all ACKs are + sent out and the age of unACKed packets is checked + + + The initial size of the packet inbox, where packets are + stored before processing + + + Maximum size of packet that we want to send over the wire + + + The maximum value of a packet sequence number before it + rolls over back to one + + + The maximum size of the sequence number archive, used to + check for resent and/or duplicate packets + + + The relative directory where external resources are kept + + + Login server to connect to + + + IP Address the client will bind to + + + Use XML-RPC Login or LLSD Login, default is XML-RPC Login + + + Number of milliseconds before an asset transfer will time + out + + + Number of milliseconds before a teleport attempt will time + out + + + Number of milliseconds before NetworkManager.Logout() will + time out + + + Number of milliseconds before a CAPS call will time out + Setting this too low will cause web requests time out and + possibly retry repeatedly + + + Number of milliseconds for xml-rpc to timeout + + + Milliseconds before a packet is assumed lost and resent + + + Milliseconds without receiving a packet before the + connection to a simulator is assumed lost + + + Milliseconds to wait for a simulator info request through + the grid interface + + + Maximum number of queued ACKs to be sent before SendAcks() + is forced + + + Network stats queue length (seconds) + + + Enable/disable storing terrain heightmaps in the + TerrainManager + + + Enable/disable sending periodic camera updates + + + Enable/disable automatically setting agent appearance at + login and after sim crossing + + + Enable/disable automatically setting the bandwidth throttle + after connecting to each simulator + The default throttle uses the equivalent of the maximum + bandwidth setting in the official client. If you do not set a + throttle your connection will by default be throttled well below + the minimum values and you may experience connection problems + + + Enable/disable the sending of pings to monitor lag and + packet loss + + + Should we connect to multiple sims? This will allow + viewing in to neighboring simulators and sim crossings + (Experimental) + + + If true, all object update packets will be decoded in to + native objects. If false, only updates for our own agent will be + decoded. Registering an event handler will force objects for that + type to always be decoded. If this is disabled the object tracking + will have missing or partial prim and avatar information + + + If true, when a cached object check is received from the + server the full object info will automatically be requested + + + Whether to establish connections to HTTP capabilities + servers for simulators + + + Whether to decode sim stats + + + The capabilities servers are currently designed to + periodically return a 502 error which signals for the client to + re-establish a connection. Set this to true to log those 502 errors + + + If true, any reference received for a folder or item + the library is not aware of will automatically be fetched + + + If true, and SEND_AGENT_UPDATES is true, + AgentUpdate packets will continuously be sent out to give the bot + smoother movement and autopiloting + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectAvatars. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectPrimitives. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, position and velocity will periodically be + interpolated (extrapolated, technically) for objects and + avatars that are being tracked by the library. This is + necessary to increase the accuracy of speed and position + estimates for simulated objects + + + + If true, utilization statistics will be tracked. There is a minor penalty + in CPU time for enabling this option. + + + + If true, parcel details will be stored in the + Simulator.Parcels dictionary as they are received + + + + If true, an incoming parcel properties reply will automatically send + a request for the parcel access list + + + + + if true, an incoming parcel properties reply will automatically send + a request for the traffic count. + + + + + If true, images, and other assets downloaded from the server + will be cached in a local directory + + + + Path to store cached texture data + + + Maximum size cached files are allowed to take on disk (bytes) + + + Default color used for viewer particle effects + + + Maximum number of times to resend a failed packet + + + Throttle outgoing packet rate + + + UUID of a texture used by some viewers to indentify type of client used + + + + Download textures using GetTexture capability when available + + + + The maximum number of concurrent texture downloads allowed + Increasing this number will not necessarily increase texture retrieval times due to + simulator throttles + + + + The Refresh timer inteval is used to set the delay between checks for stalled texture downloads + + This is a static variable which applies to all instances + + + + Textures taking longer than this value will be flagged as timed out and removed from the pipeline + + + + + Get or set the minimum log level to output to the console by default + + If the library is not compiled with DEBUG defined and this level is set to DEBUG + You will get no output on the console. This behavior can be overriden by creating + a logger configuration file for log4net + + + + Attach avatar names to log messages + + + Log packet retransmission info + + + Constructor + Reference to a GridClient object + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Cost of uploading an asset + Read-only since this value is dynamically fetched at login + + + + NetworkManager is responsible for managing the network layer of + OpenMetaverse. It tracks all the server connections, serializes + outgoing traffic and deserializes incoming traffic, and provides + instances of delegates for network-related events. + + + Login Routines + + + + The event subscribers, null of no subscribers + + + Raises the PacketSent Event + A PacketSentEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the LoggedOut Event + A LoggedOutEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimConnecting Event + A SimConnectingEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimConnected Event + A SimConnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimDisconnected Event + A SimDisconnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the Disconnected Event + A DisconnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimChanged Event + A SimChangedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the EventQueueRunning Event + A EventQueueRunningEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + All of the simulators we are currently connected to + + + Handlers for incoming capability events + + + Handlers for incoming packets + + + Incoming packets that are awaiting handling + + + Outgoing packets that are awaiting handling + + + + Default constructor + + Reference to the GridClient object + + + + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type to trigger events for + Callback to fire when a packet of this type + is received + + + + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type to trigger events for + Callback to fire when a packet of this type + is received + True if the callback should be ran + asynchronously. Only set this to false (synchronous for callbacks + that will always complete quickly) + If any callback for a packet type is marked as + asynchronous, all callbacks for that packet type will be fired + asynchronously + + + + Unregister an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type this callback is registered with + Callback to stop firing events for + + + + Register a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event to register a handler for + Callback to fire when a CAPS event is received + + + + Unregister a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event this callback is + registered with + Callback to stop firing events for + + + + Send a packet to the simulator the avatar is currently occupying + + Packet to send + + + + Send a packet to a specified simulator + + Packet to send + Simulator to send the packet to + + + + Connect to a simulator + + IP address to connect to + Port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null + + + + Connect to a simulator + + IP address and port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null + + + + Initiate a blocking logout request. This will return when the logout + handshake has completed or when Settings.LOGOUT_TIMEOUT + has expired and the network layer is manually shut down + + + + + Initiate the logout process. Check if logout succeeded with the + OnLogoutReply event, and if this does not fire the + Shutdown() function needs to be manually called + + + + + Close a connection to the given simulator + + + + + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + + Type of shutdown + + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + + Type of shutdown + Shutdown message + + + + Searches through the list of currently connected simulators to find + one attached to the given IPEndPoint + + IPEndPoint of the Simulator to search for + A Simulator reference on success, otherwise null + + + + Fire an event when an event queue connects for capabilities + + Simulator the event queue is attached to + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + The event subscribers, null of no subscribers + + + Raises the LoginProgress Event + A LoginProgressEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Seed CAPS URL returned from the login server + + + A list of packets obtained during the login process which + networkmanager will log but not process + + + + Generate sane default values for a login request + + Account first name + Account last name + Account password + Client application name + Client application version + A populated struct containing + sane defaults + + + + Simplified login that takes the most common and required fields + + Account first name + Account last name + Account password + Client application name + Client application version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Simplified login that takes the most common fields along with a + starting location URI, and can accept an MD5 string instead of a + plaintext password + + Account first name + Account last name + Account password or MD5 hash of the password + such as $1$1682a1e45e9f957dcdf0bb56eb43319c + Client application name + Starting location URI that can be built with + StartLocation() + Client application version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Login that takes a struct of all the values that will be passed to + the login server + + The values that will be passed to the login + server, all fields must be set even if they are String.Empty + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Build a start location URI for passing to the Login function + + Name of the simulator to start in + X coordinate to start at + Y coordinate to start at + Z coordinate to start at + String with a URI that can be used to login to a specified + location + + + + Handles response from XML-RPC login replies + + + + + Handle response from LLSD login replies + + + + + + + + Get current OS + + Either "Win" or "Linux" + + + + Get clients default Mac Address + + A string containing the first found Mac Address + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Unique identifier associated with our connections to + simulators + + + The simulator that the logged in avatar is currently + occupying + + + Shows whether the network layer is logged in to the + grid or not + + + Number of packets in the incoming queue + + + Number of packets in the outgoing queue + + + Raised when the simulator sends us data containing + ... + + + Called when a reply is received from the login server, the + login sequence will block until this event returns + + + Current state of logging in + + + Upon login failure, contains a short string key for the + type of login error that occurred + + + The raw XML-RPC reply from the login server, exactly as it + was received (minus the HTTP header) + + + During login this contains a descriptive version of + LoginStatusCode. After a successful login this will contain the + message of the day, and after a failed login a descriptive error + message will be returned + + + + Explains why a simulator or the grid disconnected from us + + + + The client requested the logout or simulator disconnect + + + The server notified us that it is disconnecting + + + Either a socket was closed or network traffic timed out + + + The last active simulator shut down + + + + Holds a simulator reference and a decoded packet, these structs are put in + the packet inbox for event handling + + + + Reference to the simulator that this packet came from + + + Packet that needs to be processed + + + + Holds a simulator reference and a serialized packet, these structs are put in + the packet outbox for sending + + + + Reference to the simulator this packet is destined for + + + Packet that needs to be sent + + + Sequence number of the wrapped packet + + + Number of times this packet has been resent + + + Environment.TickCount when this packet was last sent over the wire + + + + + + + + + + + + + + Type of return to use when returning objects from a parcel + + + + + + + Return objects owned by parcel owner + + + Return objects set to group + + + Return objects not owned by parcel owner or set to group + + + Return a specific list of objects on parcel + + + Return objects that are marked for-sale + + + + Blacklist/Whitelist flags used in parcels Access List + + + + Agent is denied access + + + Agent is granted access + + + + The result of a request for parcel properties + + + + No matches were found for the request + + + Request matched a single parcel + + + Request matched multiple parcels + + + + Flags used in the ParcelAccessListRequest packet to specify whether + we want the access list (whitelist), ban list (blacklist), or both + + + + Request the access list + + + Request the ban list + + + Request both White and Black lists + + + + Sequence ID in ParcelPropertiesReply packets (sent when avatar + tries to cross a parcel border) + + + + Parcel is currently selected + + + Parcel restricted to a group the avatar is not a + member of + + + Avatar is banned from the parcel + + + Parcel is restricted to an access list that the + avatar is not on + + + Response to hovering over a parcel + + + + The tool to use when modifying terrain levels + + + + Level the terrain + + + Raise the terrain + + + Lower the terrain + + + Smooth the terrain + + + Add random noise to the terrain + + + Revert terrain to simulator default + + + + The tool size to use when changing terrain levels + + + + Small + + + Medium + + + Large + + + + Reasons agent is denied access to a parcel on the simulator + + + + Agent is not denied, access is granted + + + Agent is not a member of the group set for the parcel, or which owns the parcel + + + Agent is not on the parcels specific allow list + + + Agent is on the parcels ban list + + + Unknown + + + Agent is not age verified and parcel settings deny access to non age verified avatars + + + + Parcel overlay type. This is used primarily for highlighting and + coloring which is why it is a single integer instead of a set of + flags + + These values seem to be poorly thought out. The first three + bits represent a single value, not flags. For example Auction (0x05) is + not a combination of OwnedByOther (0x01) and ForSale(0x04). However, + the BorderWest and BorderSouth values are bit flags that get attached + to the value stored in the first three bits. Bits four, five, and six + are unused + + + Public land + + + Land is owned by another avatar + + + Land is owned by a group + + + Land is owned by the current avatar + + + Land is for sale + + + Land is being auctioned + + + To the west of this area is a parcel border + + + To the south of this area is a parcel border + + + + Various parcel properties + + + + No flags set + + + Allow avatars to fly (a client-side only restriction) + + + Allow foreign scripts to run + + + This parcel is for sale + + + Allow avatars to create a landmark on this parcel + + + Allows all avatars to edit the terrain on this parcel + + + Avatars have health and can take damage on this parcel. + If set, avatars can be killed and sent home here + + + Foreign avatars can create objects here + + + All objects on this parcel can be purchased + + + Access is restricted to a group + + + Access is restricted to a whitelist + + + Ban blacklist is enabled + + + Unknown + + + List this parcel in the search directory + + + Allow personally owned parcels to be deeded to group + + + If Deeded, owner contributes required tier to group parcel is deeded to + + + Restrict sounds originating on this parcel to the + parcel boundaries + + + Objects on this parcel are sold when the land is + purchsaed + + + Allow this parcel to be published on the web + + + The information for this parcel is mature content + + + The media URL is an HTML page + + + The media URL is a raw HTML string + + + Restrict foreign object pushes + + + Ban all non identified/transacted avatars + + + Allow group-owned scripts to run + + + Allow object creation by group members or group + objects + + + Allow all objects to enter this parcel + + + Only allow group and owner objects to enter this parcel + + + Voice Enabled on this parcel + + + Use Estate Voice channel for Voice on this parcel + + + Deny Age Unverified Users + + + + Parcel ownership status + + + + Placeholder + + + Parcel is leased (owned) by an avatar or group + + + Parcel is in process of being leased (purchased) by an avatar or group + + + Parcel has been abandoned back to Governor Linden + + + + Category parcel is listed in under search + + + + No assigned category + + + Linden Infohub or public area + + + Adult themed area + + + Arts and Culture + + + Business + + + Educational + + + Gaming + + + Hangout or Club + + + Newcomer friendly + + + Parks and Nature + + + Residential + + + Shopping + + + Not Used? + + + Other + + + Not an actual category, only used for queries + + + + Type of teleport landing for a parcel + + + + Unset, simulator default + + + Specific landing point set for this parcel + + + No landing point set, direct teleports enabled for + this parcel + + + + Parcel Media Command used in ParcelMediaCommandMessage + + + + Stop the media stream and go back to the first frame + + + Pause the media stream (stop playing but stay on current frame) + + + Start the current media stream playing and stop when the end is reached + + + Start the current media stream playing, + loop to the beginning when the end is reached and continue to play + + + Specifies the texture to replace with video + If passing the key of a texture, it must be explicitly typecast as a key, + not just passed within double quotes. + + + Specifies the movie URL (254 characters max) + + + Specifies the time index at which to begin playing + + + Specifies a single agent to apply the media command to + + + Unloads the stream. While the stop command sets the texture to the first frame of the movie, + unload resets it to the real texture that the movie was replacing. + + + Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties + (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. + + + Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). + Use "text/html" for HTML. + + + Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). + This might still not be working + + + Sets a description for the media being displayed (1.19.1 RC0 and later only). + + + + Some information about a parcel of land returned from a DirectoryManager search + + + + Global Key of record + + + Parcel Owners + + + Name field of parcel, limited to 128 characters + + + Description field of parcel, limited to 256 characters + + + Total Square meters of parcel + + + Total area billable as Tier, for group owned land this will be 10% less than ActualArea + + + True of parcel is in Mature simulator + + + Grid global X position of parcel + + + Grid global Y position of parcel + + + Grid global Z position of parcel (not used) + + + Name of simulator parcel is located in + + + Texture of parcels display picture + + + Float representing calculated traffic based on time spent on parcel by avatars + + + Sale price of parcel (not used) + + + Auction ID of parcel + + + + Parcel Media Information + + + + A byte, if 0x1 viewer should auto scale media to fit object + + + A boolean, if true the viewer should loop the media + + + The Asset UUID of the Texture which when applied to a + primitive will display the media + + + A URL which points to any Quicktime supported media type + + + A description of the media + + + An Integer which represents the height of the media + + + An integer which represents the width of the media + + + A string which contains the mime type of the media + + + + Parcel of land, a portion of virtual real estate in a simulator + + + + The total number of contiguous 4x4 meter blocks your agent owns within this parcel + + + The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own + + + Deprecated, Value appears to always be 0 + + + Simulator-local ID of this parcel + + + UUID of the owner of this parcel + + + Whether the land is deeded to a group or not + + + + + + Date land was claimed + + + Appears to always be zero + + + This field is no longer used + + + Minimum corner of the axis-aligned bounding box for this + parcel + + + Maximum corner of the axis-aligned bounding box for this + parcel + + + Bitmap describing land layout in 4x4m squares across the + entire region + + + Total parcel land area + + + + + + Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used + + + Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel + owned by the agent or group that owns this parcel + + + Maximum number of primitives this parcel supports + + + Total number of primitives on this parcel + + + For group-owned parcels this indicates the total number of prims deeded to the group, + for parcels owned by an individual this inicates the number of prims owned by the individual + + + Total number of primitives owned by the parcel group on + this parcel, or for parcels owned by an individual with a group set the + total number of prims set to that group. + + + Total number of prims owned by other avatars that are not set to group, or not the parcel owner + + + A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect + the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed + + + Autoreturn value in minutes for others' objects + + + + + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it + + + Parcel Name + + + Parcel Description + + + URL For Music Stream + + + + + + Price for a temporary pass + + + How long is pass valid for + + + + + + Key of authorized buyer + + + Key of parcel snapshot + + + The landing point location + + + The landing point LookAt + + + The type of landing enforced from the enum + + + + + + + + + + + + Access list of who is whitelisted on this + parcel + + + Access list of who is blacklisted on this + parcel + + + TRUE of region denies access to age unverified users + + + true to obscure (hide) media url + + + true to obscure (hide) music url + + + A struct containing media details + + + + Displays a parcel object in string format + + string containing key=value pairs of a parcel object + + + + Defalt constructor + + Local ID of this parcel + + + + Update the simulator with any local changes to this Parcel object + + Simulator to send updates to + Whether we want the simulator to confirm + the update with a reply packet or not + + + + Set Autoreturn time + + Simulator to send the update to + + + + Parcel (subdivided simulator lots) subsystem + + + + The event subscribers. null if no subcribers + + + Raises the ParcelDwellReply event + A ParcelDwellReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelInfoReply event + A ParcelInfoReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelProperties event + A ParcelPropertiesEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelAccessListReply event + A ParcelAccessListReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelObjectOwnersReply event + A ParcelObjectOwnersReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the SimParcelsDownloaded event + A SimParcelsDownloadedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ForceSelectObjectsReply event + A ForceSelectObjectsReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelMediaUpdateReply event + A ParcelMediaUpdateReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelMediaCommand event + A ParcelMediaCommandEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + + Default constructor + + A reference to the GridClient object + + + + Request basic information for a single parcel + + Simulator-local ID of the parcel + + + + Request properties of a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + multiple simultaneous requests + + + + Request the access list for a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelAccessList reply, useful for distinguishing between + multiple simultaneous requests + + + + + Request properties of parcels using a bounding box selection + + Simulator containing the parcel + Northern boundary of the parcel selection + Eastern boundary of the parcel selection + Southern boundary of the parcel selection + Western boundary of the parcel selection + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + different types of parcel property requests + A boolean that is returned with the + ParcelProperties reply, useful for snapping focus to a single + parcel + + + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + + Simulator to request parcels from (must be connected) + + + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + + Simulator to request parcels from (must be connected) + If TRUE, will force a full refresh + Number of milliseconds to pause in between each request + + + + Request the dwell value for a parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + + + + Send a request to Purchase a parcel of land + + The Simulator the parcel is located in + The parcels region specific local ID + true if this parcel is being purchased by a group + The groups + true to remove tier contribution if purchase is successful + The parcels size + The purchase price of the parcel + + + + + Reclaim a parcel of land + + The simulator the parcel is in + The parcels region specific local ID + + + + Deed a parcel to a group + + The simulator the parcel is in + The parcels region specific local ID + The groups + + + + Request prim owners of a parcel of land. + + Simulator parcel is in + The parcels region specific local ID + + + + Return objects from a parcel + + Simulator parcel is in + The parcels region specific local ID + the type of objects to return, + A list containing object owners s to return + + + + Subdivide (split) a parcel + + + + + + + + + + Join two parcels of land creating a single parcel + + + + + + + + + + Get a parcels LocalID + + Simulator parcel is in + Vector3 position in simulator (Z not used) + 0 on failure, or parcel LocalID on success. + A call to Parcels.RequestAllSimParcels is required to populate map and + dictionary. + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + Height at which the terraform operation is acting at + + + + Sends a request to the simulator to return a list of objects owned by specific owners + + Simulator local ID of parcel + Owners, Others, Etc + List containing keys of avatars objects to select; + if List is null will return Objects of type selectType + Response data is returned in the event + + + + Eject and optionally ban a user from a parcel + + target key of avatar to eject + true to also ban target + + + + Freeze or unfreeze an avatar over your land + + target key to freeze + true to freeze, false to unfreeze + + + + Abandon a parcel of land + + Simulator parcel is in + Simulator local ID of parcel + + + + Requests the UUID of the parcel in a remote region at a specified location + + Location of the parcel in the remote region + Remote region handle + Remote region UUID + If successful UUID of the remote parcel, UUID.Zero otherwise + + + + Retrieves information on resources used by the parcel + + UUID of the parcel + Should per object resource usage be requested + Callback invoked when the request is complete + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a Parcel Update request + + + Raised when the parcel your agent is located sends a ParcelMediaCommand + + + + Parcel Accesslist + + + + Agents + + + + + + Flags for specific entry in white/black lists + + + + Owners of primitives on parcel + + + + Prim Owners + + + True of owner is group + + + Total count of prims owned by OwnerID + + + true of OwnerID is currently online and is not a group + + + The date of the most recent prim left by OwnerID + + + + Called once parcel resource usage information has been collected + + Indicates if operation was successfull + Parcel resource usage information + + + Contains a parcels dwell data returned from the simulator in response to an + + + + Construct a new instance of the ParcelDwellReplyEventArgs class + + The global ID of the parcel + The simulator specific ID of the parcel + The calculated dwell for the parcel + + + Get the global ID of the parcel + + + Get the simulator specific ID of the parcel + + + Get the calculated dwell + + + Contains basic parcel information data returned from the + simulator in response to an request + + + + Construct a new instance of the ParcelInfoReplyEventArgs class + + The object containing basic parcel info + + + Get the object containing basic parcel info + + + Contains basic parcel information data returned from the simulator in response to an request + + + + Construct a new instance of the ParcelPropertiesEventArgs class + + The object containing the details + The object containing the details + The result of the request + The number of primitieves your agent is + currently selecting and or sitting on in this parcel + The user assigned ID used to correlate a request with + these results + TODO: + + + Get the simulator the parcel is located in + + + Get the object containing the details + If Result is NoData, this object will not contain valid data + + + Get the result of the request + + + Get the number of primitieves your agent is + currently selecting and or sitting on in this parcel + + + Get the user assigned ID used to correlate a request with + these results + + + TODO: + + + Contains blacklist and whitelist data returned from the simulator in response to an request + + + + Construct a new instance of the ParcelAccessListReplyEventArgs class + + The simulator the parcel is located in + The user assigned ID used to correlate a request with + these results + The simulator specific ID of the parcel + TODO: + The list containing the white/blacklisted agents for the parcel + + + Get the simulator the parcel is located in + + + Get the user assigned ID used to correlate a request with + these results + + + Get the simulator specific ID of the parcel + + + TODO: + + + Get the list containing the white/blacklisted agents for the parcel + + + Contains blacklist and whitelist data returned from the + simulator in response to an request + + + + Construct a new instance of the ParcelObjectOwnersReplyEventArgs class + + The simulator the parcel is located in + The list containing prim ownership counts + + + Get the simulator the parcel is located in + + + Get the list containing prim ownership counts + + + Contains the data returned when all parcel data has been retrieved from a simulator + + + + Construct a new instance of the SimParcelsDownloadedEventArgs class + + The simulator the parcel data was retrieved from + The dictionary containing the parcel data + The multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + Get the simulator the parcel data was retrieved from + + + A dictionary containing the parcel data where the key correlates to the ParcelMap entry + + + Get the multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + Contains the data returned when a request + + + + Construct a new instance of the ForceSelectObjectsReplyEventArgs class + + The simulator the parcel data was retrieved from + The list of primitive IDs + true if the list is clean and contains the information + only for a given request + + + Get the simulator the parcel data was retrieved from + + + Get the list of primitive IDs + + + true if the list is clean and contains the information + only for a given request + + + Contains data when the media data for a parcel the avatar is on changes + + + + Construct a new instance of the ParcelMediaUpdateReplyEventArgs class + + the simulator the parcel media data was updated in + The updated media information + + + Get the simulator the parcel media data was updated in + + + Get the updated media information + + + Contains the media command for a parcel the agent is currently on + + + + Construct a new instance of the ParcelMediaCommandEventArgs class + + The simulator the parcel media command was issued in + + + The media command that was sent + + + + Get the simulator the parcel media command was issued in + + + + + + + + + Get the media command that was sent + + + + @@ -1652,683 +9796,4533 @@ The key The value - + - Holds group information for Avatars such as those you might find in a profile + Avatar group management - - true of Avatar accepts group notices + + Key of Group Member - - Groups Key + + Total land contribution - - Texture Key for groups insignia + + Online status information - - Name of the group + + Abilities that the Group Member has - - Powers avatar has in the group + + Current group title - - Avatars Currently selected title + + Is a group owner - - true of Avatar has chosen to list this in their profile - - + - Contains an animation currently being played by an agent + Role manager for a group - - The ID of the animation asset + + Key of the group - - A number to indicate start order of currently playing animations - On Linden Grids this number is unique per region, with OpenSim it is per client + + Key of Role - + + Name of Role + + + Group Title associated with Role + + + Description of Role + + + Abilities Associated with Role + + + Returns the role's title + The role's title + + + + Class to represent Group Title + + + + Key of the group + + + ID of the role title belongs to + + + Group Title + + + Whether title is Active + + + Returns group title + + + + Represents a group on the grid + + + + Key of Group + + + Key of Group Insignia + + + Key of Group Founder + + + Key of Group Role for Owners + + + Name of Group + + + Text of Group Charter + + + Title of "everyone" role + + + Is the group open for enrolement to everyone + + + Will group show up in search + + - + + + + + + + + Is the group Mature + + + Cost of group membership + + + + + + + + + The total number of current members this group has + + + The number of roles this group has configured + + + Show this group in agent's profile + + + Returns the name of the group + A string containing the name of the group + + - Holds group information on an individual profile pick + A group Vote - + + Key of Avatar who created Vote + + + Text of the Vote proposal + + + Total number of votes + + - Retrieve friend status notifications, and retrieve avatar names and - profiles + A group proposal - - The event subscribers, null of no subscribers + + The Text of the proposal - - Raises the AvatarAnimation Event - An AvatarAnimationEventArgs object containing - the data sent from the simulator + + The minimum number of members that must vote before proposal passes or failes - - Thread sync lock object + + The required ration of yes/no votes required for vote to pass + The three options are Simple Majority, 2/3 Majority, and Unanimous + TODO: this should be an enum - - The event subscribers, null of no subscribers + + The duration in days votes are accepted - - Raises the AvatarAppearance Event - A AvatarAppearanceEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the UUIDNameReply Event - A UUIDNameReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarInterestsReply Event - A AvatarInterestsReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarPropertiesReply Event - A AvatarPropertiesReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarGroupsReply Event - A AvatarGroupsReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarPickerReply Event - A AvatarPickerReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ViewerEffectPointAt Event - A ViewerEffectPointAtEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ViewerEffectLookAt Event - A ViewerEffectLookAtEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ViewerEffect Event - A ViewerEffectEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarPicksReply Event - A AvatarPicksReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the PickInfoReply Event - A PickInfoReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarClassifiedReply Event - A AvatarClassifiedReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ClassifiedInfoReply Event - A ClassifiedInfoReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - + - Represents other avatars - - - - - Tracks the specified avatar on your map - Avatar ID to track - - - - Request a single avatar name - - The avatar key to retrieve a name for - - - - Request a list of avatar names - - The avatar keys to retrieve names for - - - - Start a request for Avatar Properties - - - - - - Search for an avatar (first name, last name) - - The name to search for - An ID to associate with this query - - - - Start a request for Avatar Picks - - UUID of the avatar - - - - Start a request for Avatar Classifieds - - UUID of the avatar - - - - Start a request for details of a specific profile pick - - UUID of the avatar - UUID of the profile pick - - - - Start a request for details of a specific profile classified - - UUID of the avatar - UUID of the profile classified - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Crossed region handler for message that comes across the EventQueue. Sent to an agent - when the agent crosses a sim border into a new region. - - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - an agents animation playlist - - - Raised when the simulator sends us data containing - the appearance information for an agent - - - Raised when the simulator sends us data containing - agent names/id values - - - Raised when the simulator sends us data containing - the interests listed in an agents profile - - - Raised when the simulator sends us data containing - profile property information for an agent - - - Raised when the simulator sends us data containing - the group membership an agent is a member of - - - Raised when the simulator sends us data containing - name/id pair - - - Raised when the simulator sends us data containing - the objects and effect when an agent is pointing at - - - Raised when the simulator sends us data containing - the objects and effect when an agent is looking at - - - Raised when the simulator sends us data containing - an agents viewer effect information - - - Raised when the simulator sends us data containing - the top picks from an agents profile - - - Raised when the simulator sends us data containing - the Pick details - - - Raised when the simulator sends us data containing - the classified ads an agent has placed - - - Raised when the simulator sends us data containing - the details of a classified ad - - - Provides data for the event - The event occurs when the simulator sends - the animation playlist for an agent - - The following code example uses the and - properties to display the animation playlist of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; - - private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) - { - // create a dictionary of "known" animations from the Animations class using System.Reflection - Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); - Type type = typeof(Animations); - System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); - foreach (System.Reflection.FieldInfo field in fields) - { - systemAnimations.Add((UUID)field.GetValue(type), field.Name); - } - // find out which animations being played are known animations and which are assets - foreach (Animation animation in e.Animations) - { - if (systemAnimations.ContainsKey(animation.AnimationID)) - { - Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, - systemAnimations[animation.AnimationID], animation.AnimationSequence); - } - else - { - Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, - animation.AnimationID, animation.AnimationSequence); - } - } - } - - - - - - Construct a new instance of the AvatarAnimationEventArgs class - The ID of the agent - The list of animations to start - - Get the ID of the agent + + - - Get the list of animations to start + + - - Provides data for the event - The event occurs when the simulator sends - the appearance data for an avatar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Struct representing a group notice + + + + + + + + + + + + + + + + + + + + + + + Struct representing a group notice list entry + + + + Notice ID + + + Creation timestamp of notice + + + Agent name who created notice + + + Notice subject + + + Is there an attachment? + + + Attachment Type + + + + Struct representing a member of a group chat session and their settings + + + + The of the Avatar + + + True if user has voice chat enabled + + + True of Avatar has moderator abilities + + + True if a moderator has muted this avatars chat + + + True if a moderator has muted this avatars voice + + + + Role update flags + + + + + + + + + + + + + + + + + + + + + + + + + Can send invitations to groups default role + + + Can eject members from group + + + Can toggle 'Open Enrollment' and change 'Signup fee' + + + Member is visible in the public member list + + + Can create new roles + + + Can delete existing roles + + + Can change Role names, titles and descriptions + + + Can assign other members to assigners role + + + Can assign other members to any role + + + Can remove members from roles + + + Can assign and remove abilities in roles + + + Can change group Charter, Insignia, 'Publish on the web' and which + members are publicly visible in group member listings + + + Can buy land or deed land to group + + + Can abandon group owned land to Governor Linden on mainland, or Estate owner for + private estates + + + Can set land for-sale information on group owned parcels + + + Can subdivide and join parcels + + + Can join group chat sessions + + + Can use voice chat in Group Chat sessions + + + Can moderate group chat sessions + + + Can toggle "Show in Find Places" and set search category + + + Can change parcel name, description, and 'Publish on web' settings + + + Can set the landing point and teleport routing on group land + + + Can change music and media settings + + + Can toggle 'Edit Terrain' option in Land settings + + + Can toggle various About Land > Options settings + + + Can always terraform land, even if parcel settings have it turned off + + + Can always fly while over group owned land + + + Can always rez objects on group owned land + + + Can always create landmarks for group owned parcels + + + Can set home location on any group owned parcel + + + Can modify public access settings for group owned parcels + + + Can manager parcel ban lists on group owned land + + + Can manage pass list sales information + + + Can eject and freeze other avatars on group owned land + + + Can return objects set to group + + + Can return non-group owned/set objects + + + Can return group owned objects + + + Can landscape using Linden plants + + + Can deed objects to group + + + Can move group owned objects + + + Can set group owned objects for-sale + + + Pay group liabilities and receive group dividends + + + Can send group notices + + + Can receive group notices + + + Can create group proposals + + + Can vote on group proposals + + + + Handles all network traffic related to reading and writing group + information + + + + The event subscribers. null if no subcribers + + + Raises the CurrentGroups event + A CurrentGroupsEventArgs object containing the + data sent from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupNamesReply event + A GroupNamesEventArgs object containing the + data response from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupProfile event + An GroupProfileEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupMembers event + A GroupMembersEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupRolesDataReply event + A GroupRolesDataReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupRoleMembersReply event + A GroupRolesRoleMembersReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupTitlesReply event + A GroupTitlesReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupAccountSummary event + A GroupAccountSummaryReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupCreated event + An GroupCreatedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupJoined event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupLeft event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupDropped event + An GroupDroppedEventArgs object containing the + the group your agent left + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupMemberEjected event + An GroupMemberEjectedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupNoticesListReply event + An GroupNoticesListReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupInvitation event + An GroupInvitationEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + A reference to the current instance + + + Currently-active group members requests + + + Currently-active group roles requests + + + Currently-active group role-member requests + + + Dictionary keeping group members while request is in progress + + + Dictionary keeping mebmer/role mapping while request is in progress + + + Dictionary keeping GroupRole information while request is in progress + + + Caches group name lookups + + + + Construct a new instance of the GroupManager class + + A reference to the current instance + + + + Request a current list of groups the avatar is a member of. + + CAPS Event Queue must be running for this to work since the results + come across CAPS. + + + + Lookup name of group based on groupID + + groupID of group to lookup name for. + + + + Request lookup of multiple group names + + List of group IDs to request. + + + Lookup group profile data such as name, enrollment, founder, logo, etc + Subscribe to OnGroupProfile event to receive the results. + group ID (UUID) + + + Request a list of group members. + Subscribe to OnGroupMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request group roles + Subscribe to OnGroupRoles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request members (members,role) role mapping for a group. + Subscribe to OnGroupRolesMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request a groups Titles + Subscribe to OnGroupTitles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Begin to get the group account summary + Subscribe to the OnGroupAccountSummary event to receive the results. + group ID (UUID) + How long of an interval + Which interval (0 for current, 1 for last) + + + Invites a user to a group + The group to invite to + A list of roles to invite a person to + Key of person to invite + + + Set a group as the current active group + group ID (UUID) + + + Change the role that determines your active title + Group ID to use + Role ID to change to + + + Set this avatar's tier contribution + Group ID to change tier in + amount of tier to donate + + + + Save wheather agent wants to accept group notices and list this group in their profile + + Group + Accept notices from this group + List this group in the profile + + + Request to join a group + Subscribe to OnGroupJoined event for confirmation. + group ID (UUID) to join. + + + + Request to create a new group. If the group is successfully + created, L$100 will automatically be deducted + + Subscribe to OnGroupCreated event to receive confirmation. + Group struct containing the new group info + + + Update a group's profile and other information + Groups ID (UUID) to update. + Group struct to update. + + + Eject a user from a group + Group ID to eject the user from + Avatar's key to eject + + + Update role information + Modified role to be updated + + + Create a new group role + Group ID to update + Role to create + + + Delete a group role + Group ID to update + Role to delete + + + Remove an avatar from a role + Group ID to update + Role ID to be removed from + Avatar's Key to remove + + + Assign an avatar to a role + Group ID to update + Role ID to assign to + Avatar's ID to assign to role + + + Request the group notices list + Group ID to fetch notices for + + + Request a group notice by key + ID of group notice + + + Send out a group notice + Group ID to update + GroupNotice structure containing notice data + + + Start a group proposal (vote) + The Group ID to send proposal to + GroupProposal structure containing the proposal + + + Request to leave a group + Subscribe to OnGroupLeft event to receive confirmation + The group to leave + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends us data containing + our current group membership + + + Raised when the simulator responds to a RequestGroupName + or RequestGroupNames request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when a response to a RequestGroupAccountSummary is returned + by the simulator + + + Raised when a request to create a group is successful + + + Raised when a request to join a group either + fails or succeeds + + + Raised when a request to leave a group either + fails or succeeds + + + Raised when A group is removed from the group server + + + Raised when a request to eject a member from a group either + fails or succeeds + + + Raised when the simulator sends us group notices + + + + Raised when another agent invites our avatar to join a group + + + Contains the current groups your agent is a member of + + + Construct a new instance of the CurrentGroupsEventArgs class + The current groups your agent is a member of + + + Get the current groups your agent is a member of + + + A Dictionary of group names, where the Key is the groups ID and the value is the groups name + + + Construct a new instance of the GroupNamesEventArgs class + The Group names dictionary + + + Get the Group Names dictionary + + + Represents the members of a group + + + + Construct a new instance of the GroupMembersReplyEventArgs class + + The ID of the request + The ID of the group + The membership list of the group + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary of members + + + Represents the roles associated with a group + + + Construct a new instance of the GroupRolesDataReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The dictionary containing the roles + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary containing the roles + + + Represents the Role to Member mappings for a group + + + Construct a new instance of the GroupRolesMembersReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The member to roles map + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the member to roles map + + + Represents the titles for a group + + + Construct a new instance of the GroupTitlesReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The titles + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the titles + + + Represents the summary data for a group + + + Construct a new instance of the GroupAccountSummaryReplyEventArgs class + The ID of the group + The summary data + + + Get the ID of the group + + + Get the summary data + + + A response to a group create request + + + Construct a new instance of the GroupCreatedReplyEventArgs class + The ID of the group + the success or faulure of the request + A string containing additional information + + + Get the ID of the group + + + true of the group was created successfully + + + A string containing the message + + + Represents a response to a request + + + Construct a new instance of the GroupOperationEventArgs class + The ID of the group + true of the request was successful + + + Get the ID of the group + + + true of the request was successful + + + Represents your agent leaving a group + + + Construct a new instance of the GroupDroppedEventArgs class + The ID of the group + + + Get the ID of the group + + + Represents a list of active group notices + + + Construct a new instance of the GroupNoticesListReplyEventArgs class + The ID of the group + The list containing active notices + + + Get the ID of the group + + + Get the notices list + + + Represents the profile of a group + + + Construct a new instance of the GroupProfileEventArgs class + The group profile + + + Get the group profile + + + + Provides notification of a group invitation request sent by another Avatar + + The invitation is raised when another avatar makes an offer for our avatar + to join a group. + + + The ID of the Avatar sending the group invitation + + + The name of the Avatar sending the group invitation + + + A message containing the request information which includes + the name of the group, the groups charter and the fee to join details + + + The Simulator + + + Set to true to accept invitation, false to decline + + + + + + Looking direction, must be a normalized vector + Up direction, must be a normalized vector + + + + Align the coordinate frame X and Y axis with a given rotation + around the Z axis in radians + + Absolute rotation around the Z axis in + radians + + + Origin position of this coordinate frame + + + X axis of this coordinate frame, or Forward/At in grid terms + + + Y axis of this coordinate frame, or Left in grid terms + + + Z axis of this coordinate frame, or Up in grid terms + + + + Avatar profile flags + + + + + Represents an avatar (other than your own) + + + + Groups that this avatar is a member of + + + Positive and negative ratings + + + Avatar properties including about text, profile URL, image IDs and + publishing settings + + + Avatar interests including spoken languages, skills, and "want to" + choices + + + Movement control flags for avatars. Typically not set or used by + clients. To move your avatar, use Client.Self.Movement instead + + + + Contains the visual parameters describing the deformation of the avatar + + + + + Default constructor + + + + First name + + + Last name + + + Full name + + + Active group + + + + Positive and negative ratings + + + + Positive ratings for Behavior + + + Negative ratings for Behavior + + + Positive ratings for Appearance + + + Negative ratings for Appearance + + + Positive ratings for Building + + + Negative ratings for Building + + + Positive ratings given by this avatar + + + Negative ratings given by this avatar + + + + Avatar properties including about text, profile URL, image IDs and + publishing settings + + + + First Life about text + + + First Life image ID + + + + + + + + + + + + + + + Profile image ID + + + Flags of the profile + + + Web URL for this profile + + + Should this profile be published on the web + + + Avatar Online Status + + + Is this a mature profile + + + + + + + + + + Avatar interests including spoken languages, skills, and "want to" + choices + + + + Languages profile field + + + + + + + + + + + + + + + + Extract the avatar UUID encoded in a SIP URI + + + + + + + Permissions for control of object media + + + + + Style of cotrols that shold be displayed to the user + + + + + Class representing media data for a single face + + + + Is display of the alternative image enabled + + + Should media auto loop + + + Shoule media be auto played + + + Auto scale media to prim face + + + Should viewer automatically zoom in on the face when clicked + + + Should viewer interpret first click as interaction with the media + or when false should the first click be treated as zoom in commadn + + + Style of controls viewer should display when + viewer media on this face + + + Starting URL for the media + + + Currently navigated URL + + + Media height in pixes + + + Media width in pixels + + + Who can controls the media + + + Who can interact with the media + + + Is URL whitelist enabled + + + Array of URLs that are whitelisted + + + + Serialize to OSD + + OSDMap with the serialized data + + + + Deserialize from OSD data + + Serialized OSD data + Deserialized object + + + + Operation to apply when applying color to texture + + + + + Information needed to translate visual param value to RGBA color + + + + + Construct VisualColorParam + + Operation to apply when applying color to texture + Colors + + + + Represents alpha blending and bump infor for a visual parameter + such as sleive length + + + + Stregth of the alpha to apply + + + File containing the alpha channel + + + Skip blending if parameter value is 0 + + + Use miltiply insted of alpha blending + + + + Create new alhpa information for a visual param + + Stregth of the alpha to apply + File containing the alpha channel + Skip blending if parameter value is 0 + Use miltiply insted of alpha blending + + + + A single visual characteristic of an avatar mesh, such as eyebrow height + + + + Index of this visual param + + + Internal name + + + Group ID this parameter belongs to + + + Name of the wearable this parameter belongs to + + + Displayable label of this characteristic + + + Displayable label for the minimum value of this characteristic + + + Displayable label for the maximum value of this characteristic + + + Default value + + + Minimum value + + + Maximum value + + + Is this param used for creation of bump layer? + + + Alpha blending/bump info + + + Color information + + + Array of param IDs that are drivers for this parameter + + + + Set all the values through the constructor + + Index of this visual param + Internal name + + + Displayable label of this characteristic + Displayable label for the minimum value of this characteristic + Displayable label for the maximum value of this characteristic + Default value + Minimum value + Maximum value + Is this param used for creation of bump layer? + Array of param IDs that are drivers for this parameter + Alpha blending/bump info + Color information + + + + Holds the Params array of all the avatar appearance parameters + + + + + The InternalDictionary class is used through the library for storing key/value pairs. + It is intended to be a replacement for the generic Dictionary class and should + be used in its place. It contains several methods for allowing access to the data from + outside the library that are read only and thread safe. + + + Key + Value + + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + on this member + + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + - The following code example uses the and - properties to display the selected shape of an avatar on the window. - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); - + - Construct a new instance of the AvatarAppearanceEventArgs class + Initializes a new instance of the Class + with the specified key/value, has its initial valies copied from the specified + - The simulator request was from - The ID of the agent - true of the agent is a trial account - The default agent texture - The agents appearance layer textures - The for the agent + + to copy initial values from + + + // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. + // populates with copied values from example KeyNameCache Dictionary. + + // create source dictionary + Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); + KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); + KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); + + // Initialize new dictionary. + public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); + + - - Get the Simulator this request is from of the agent - - - Get the ID of the agent - - - true if the agent is a trial account - - - Get the default agent texture - - - Get the agents appearance layer textures - - - Get the for the agent - - - Represents the interests from the profile of an agent - - - Get the ID of the agent - - - The properties of an agent - - - Get the ID of the agent - - - Get the ID of the agent - - - Get the ID of the agent - - - Get the ID of the avatar - - + - Represents an that can be worn on an avatar - such as a Shirt, Pants, etc. + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); + + + + + + Try to get entry from with specified key + + Key to use for lookup + Value returned + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + + + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + + + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + + + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + + + + Perform an on each entry in an + to perform + + + // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. + Client.Network.CurrentSim.ObjectsPrimitives.ForEach( + delegate(Primitive prim) + { + if (prim.Text != null) + { + Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", + prim.PropertiesFamily.Name, prim.ID, prim.Text); + } + }); + + + + + Perform an on each key of an + to perform + + + + Perform an on each KeyValuePair of an + + to perform + + + Check if Key exists in Dictionary + Key to check for + if found, otherwise + + + Check if Value exists in Dictionary + Value to check for + if found, otherwise + + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + + The key + The value + + + + Removes the specified key, dictionary locking is not performed + + The key. + if successful, otherwise + + + + Gets the number of Key/Value pairs contained in the - + - Represents a Wearable Asset, Clothing, Hair, Skin, Etc + Indexer for the dictionary + + The key + The value + + + + This is used to initialize and stop the Connector as a whole. The Connector + Create call must be completed successfully before any other requests are made + (typically during application initialization). The shutdown should be called + when the application is shutting down to gracefully release resources + + A string value indicting the Application name + URL for the management server + LoggingSettings + + + + + + Shutdown Connector -- Should be called when the application is shutting down + to gracefully release resources + + Handle returned from successful Connector ‘create’ request + + + + Mute or unmute the microphone + + Handle returned from successful Connector ‘create’ request + true (mute) or false (unmute) + + + + Mute or unmute the speaker + + Handle returned from successful Connector ‘create’ request + true (mute) or false (unmute) + + + + Set microphone volume + + Handle returned from successful Connector ‘create’ request + The level of the audio, a number between -100 and 100 where + 0 represents ‘normal’ speaking volume + + + + Set local speaker volume + + Handle returned from successful Connector ‘create’ request + The level of the audio, a number between -100 and 100 where + 0 represents ‘normal’ speaking volume + + + + Starts a thread that keeps the daemon running + + + + + + + Stops the daemon and the thread keeping it running - + - Base class for all Asset types + + + + + + + + + This is used to get a list of audio devices that can be used for capture (input) of voice. + + + + + + This is used to get a list of audio devices that can be used for render (playback) of voice. - - A byte array containing the raw asset data - - - True if the asset it only stored on the server temporarily - - - A unique ID - - + - Construct a new Asset object + This command is used to select the render device. + + The name of the device as returned by the Aux.GetRenderDevices command. + + + + This command is used to select the capture device. + + The name of the device as returned by the Aux.GetCaptureDevices command. + + + + This command is used to start the audio capture process which will cause + AuxAudioProperty Events to be raised. These events can be used to display a + microphone VU meter for the currently selected capture device. This command + should not be issued if the user is on a call. + + (unused but required) + + + + + This command is used to stop the audio capture process. + + + + + + This command is used to set the mic volume while in the audio tuning process. + Once an acceptable mic level is attained, the application must issue a + connector set mic volume command to have that level be used while on voice + calls. + + the microphone volume (-100 to 100 inclusive) + + + + + This command is used to set the speaker volume while in the audio tuning + process. Once an acceptable speaker level is attained, the application must + issue a connector set speaker volume command to have that level be used while + on voice calls. + + the speaker volume (-100 to 100 inclusive) + + + + + Create a Session + Sessions typically represent a connection to a media session with one or more + participants. This is used to generate an ‘outbound’ call to another user or + channel. The specifics depend on the media types involved. A session handle is + required to control the local user functions within the session (or remote + users if the current account has rights to do so). Currently creating a + session automatically connects to the audio media, there is no need to call + Session.Connect at this time, this is reserved for future use. + + Handle returned from successful Connector ‘create’ request + This is the URI of the terminating point of the session (ie who/what is being called) + This is the display name of the entity being called (user or channel) + Only needs to be supplied when the target URI is password protected + This indicates the format of the password as passed in. This can either be + “ClearText” or “SHA1UserName”. If this element does not exist, it is assumed to be “ClearText”. If it is + “SHA1UserName”, the password as passed in is the SHA1 hash of the password and username concatenated together, + then base64 encoded, with the final “=” character stripped off. + + + + + + + Used to accept a call + + SessionHandle such as received from SessionNewEvent + "default" + + + + + This command is used to start the audio render process, which will then play + the passed in file through the selected audio render device. This command + should not be issued if the user is on a call. + + The fully qualified path to the sound file. + True if the file is to be played continuously and false if it is should be played once. + + + + + This command is used to stop the audio render process. + + The fully qualified path to the sound file issued in the start render command. + + + + + This is used to ‘end’ an established session (i.e. hang-up or disconnect). + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + + + + + Set the combined speaking and listening position in 3D space. + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + Speaking position + Listening position + + + + + Set User Volume for a particular user. Does not affect how other users hear that user. + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + + The level of the audio, a number between -100 and 100 where 0 represents ‘normal’ speaking volume + + + + + Start up the Voice service. - + - Construct a new Asset object + Handle miscellaneous request status + + + ///If something goes wrong, we log it. + + + + Cleanup oject resources + + + + + Request voice cap when changing regions + + + + + Handle a change in session state + + + + + Close a voice session + + + + + + Locate a Session context from its handle + + Creates the session context if it does not exist. + + + + Handle completion of main voice cap request. + + + + + + + + Daemon has started so connect to it. + + + + + The daemon TCP connection is open. + + + + + Handle creation of the Connector. + + + + + Handle response to audio output device query + + + + + Handle response to audio input device query + + + + + Set voice channel for new parcel + + + + + + Request info from a parcel capability Uri. + + + + + + Receive parcel voice cap + + + + + + + + Tell Vivox where we are standing + + This has to be called when we move or turn. + + + + Start and stop updating out position. + + + + + + This is used to login a specific user account(s). It may only be called after + Connector initialization has completed successfully + + Handle returned from successful Connector ‘create’ request + User's account name + User's account password + Values may be “AutoAnswer” or “VerifyAnswer” + "" + This is an integer that specifies how often + the daemon will send participant property events while in a channel. If this is not set + the default will be “on state change”, which means that the events will be sent when + the participant starts talking, stops talking, is muted, is unmuted. + The valid values are: + 0 – Never + 5 – 10 times per second + 10 – 5 times per second + 50 – 1 time per second + 100 – on participant state change (this is the default) + false + + + + + This is used to logout a user session. It should only be called with a valid AccountHandle. + + Handle returned from successful Connector ‘login’ request + + + + + Event for most mundane request reposnses. + + + + Response to Connector.Create request + + + Response to Aux.GetCaptureDevices request + + + Response to Aux.GetRenderDevices request + + + Audio Properties Events are sent after audio capture is started. + These events are used to display a microphone VU meter + + + Response to Account.Login request + + + This event message is sent whenever the login state of the + particular Account has transitioned from one value to another + + + + List of audio input devices + + + + + List of audio output devices + + + + + Set audio test mode + + + + Enable logging + + + The folder where any logs will be created + + + This will be prepended to beginning of each log file + + + The suffix or extension to be appended to each log file + + + + 0: NONE - No logging + 1: ERROR - Log errors only + 2: WARNING - Log errors and warnings + 3: INFO - Log errors, warnings and info + 4: DEBUG - Log errors, warnings, info and debug + + + + + Constructor for default logging settings + + + + Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter + + + + Abstract base for rendering plugins + + + + + Generates a basic mesh structure from a primitive + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh + + + + Generates a basic mesh structure from a sculpted primitive and + texture + + Sculpted primitive to generate the mesh from + Sculpt texture + Level of detail to generate the mesh at + The generated mesh + + + + Generates a series of faces, each face containing a mesh and + metadata + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh + + + + Generates a series of faces for a sculpted prim, each face + containing a mesh and metadata + + Sculpted primitive to generate the mesh from + Sculpt texture + Level of detail to generate the mesh at + The generated mesh + + + + Apply texture coordinate modifications from a + to a list of vertices + + Vertex list to modify texture coordinates for + Center-point of the face + Face texture parameters + + + + pre-defined built in sounds + + + + + + + + + + + + + + + + + + + + + + + + + + + + coins + + + cash register bell + + + + + + + + + rubber + + + plastic + + + flesh + + + wood splintering? + + + glass break + + + metal clunk + + + whoosh + + + shake + + + + + + ding + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A dictionary containing all pre-defined sounds + + A dictionary containing the pre-defined sounds, + where the key is the sounds ID, and the value is a string + containing a name to identify the purpose of the sound + + + + Simulator (region) properties + + + + No flags set + + + Agents can take damage and be killed + + + Landmarks can be created here + + + Home position can be set in this sim + + + Home position is reset when an agent teleports away + + + Sun does not move + + + No object, land, etc. taxes + + + Disable heightmap alterations (agents can still plant + foliage) + + + Land cannot be released, sold, or purchased + + + All content is wiped nightly + + + Unknown: Related to the availability of an overview world map tile.(Think mainland images when zoomed out.) + + + Unknown: Related to region debug flags. Possibly to skip processing of agent interaction with world. + + + Region does not update agent prim interest lists. Internal debugging option. + + + No collision detection for non-agent objects + + + No scripts are ran + + + All physics processing is turned off + + + Region can be seen from other regions on world map. (Legacy world map option?) + + + Region can be seen from mainland on world map. (Legacy world map option?) + + + Agents not explicitly on the access list can visit the region. + + + Traffic calculations are not run across entire region, overrides parcel settings. + + + Flight is disabled (not currently enforced by the sim) + + + Allow direct (p2p) teleporting + + + Estate owner has temporarily disabled scripting + + + Restricts the usage of the LSL llPushObject function, applies to whole region. + + + Deny agents with no payment info on file + + + Deny agents with payment info on file + + + Deny agents who have made a monetary transaction + + + Parcels within the region may be joined or divided by anyone, not just estate owners/managers. + + + Abuse reports sent from within this region are sent to the estate owner defined email. + + + Region is Voice Enabled + + + Removes the ability from parcel owners to set their parcels to show in search. + + + Deny agents who have not been age verified from entering the region. + + + + Access level for a simulator + + + + Unknown or invalid access level + + + Trial accounts allowed + + + PG rating + + + Mature rating + + + Adult rating + + + Simulator is offline + + + Simulator does not exist + + + + + + + + + + + + + + Initialize the UDP packet handler in server mode + + Port to listening for incoming UDP packets on + + + + Initialize the UDP packet handler in client mode + + Remote UDP server to connect to + + + + + + + + + + + + + + + + + + A public reference to the client that this Simulator object + is attached to + + + A Unique Cache identifier for this simulator + + + The capabilities for this simulator + + + + + + The current version of software this simulator is running + + + + + + A 64x64 grid of parcel coloring values. The values stored + in this array are of the type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true if your agent has Estate Manager rights on this region + + + + + + + + + + + + Statistics information for this simulator and the + connection to the simulator, calculated by the simulator itself + and the library + + + The regions Unique ID + + + The physical data center the simulator is located + Known values are: + + Dallas + Chandler + SF + + + + + The CPU Class of the simulator + Most full mainland/estate sims appear to be 5, + Homesteads and Openspace appear to be 501 + + + The number of regions sharing the same CPU as this one + "Full Sims" appear to be 1, Homesteads appear to be 4 + + + The billing product name + Known values are: + + Mainland / Full Region (Sku: 023) + Estate / Full Region (Sku: 024) + Estate / Openspace (Sku: 027) + Estate / Homestead (Sku: 029) + Mainland / Homestead (Sku: 129) (Linden Owned) + Mainland / Linden Homes (Sku: 131) + + + + + The billing product SKU + Known values are: + + 023 Mainland / Full Region + 024 Estate / Full Region + 027 Estate / Openspace + 029 Estate / Homestead + 129 Mainland / Homestead (Linden Owned) + 131 Linden Homes / Full Region + + + + + The current sequence number for packets sent to this + simulator. Must be Interlocked before modifying. Only + useful for applications manipulating sequence numbers + + + + A thread-safe dictionary containing avatars in a simulator + + + + + A thread-safe dictionary containing primitives in a simulator + + + + + Provides access to an internal thread-safe dictionary containing parcel + information found in this simulator + + + + + Checks simulator parcel map to make sure it has downloaded all data successfully + + true if map is full (contains no 0's) + + + Used internally to track sim disconnections + + + Event that is triggered when the simulator successfully + establishes a connection + + + Whether this sim is currently connected or not. Hooked up + to the property Connected + + + Coarse locations of avatars in this simulator + + + AvatarPositions key representing TrackAgent target + + + Sequence numbers of packets we've received + (for duplicate checking) + + + Packets we sent out that need ACKs from the simulator + + + Sequence number for pause/resume + + + Indicates if UDP connection to the sim is fully established + + + + + + Reference to the GridClient object + IPEndPoint of the simulator + handle of the simulator + + + + Called when this Simulator object is being destroyed + + + + + Attempt to connect to this simulator + + Whether to move our agent in to this sim or not + True if the connection succeeded or connection status is + unknown, false if there was a failure + + + + Initiates connection to the simulator + + + + + Disconnect from this simulator + + + + + Instructs the simulator to stop sending update (and possibly other) packets + + + + + Instructs the simulator to resume sending update packets (unpause) + + + + + Retrieve the terrain height at a given coordinate + + Sim X coordinate, valid range is from 0 to 255 + Sim Y coordinate, valid range is from 0 to 255 + The terrain height at the given point if the + lookup was successful, otherwise 0.0f + True if the lookup was successful, otherwise false + + + + Sends a packet + + Packet to be sent + + + + + + + + + Returns Simulator Name as a String + + + + + + + + + + + + + + + + + + + Sends out pending acknowledgements + + Number of ACKs sent + + + + Resend unacknowledged packets + + + + + Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + + The IP address and port of the server + + + Whether there is a working connection to the simulator or + not + + + Coarse locations of avatars in this simulator + + + AvatarPositions key representing TrackAgent target + + + Indicates if UDP connection to the sim is fully established + + + + Simulator Statistics + + + + Total number of packets sent by this simulator to this agent + + + Total number of packets received by this simulator to this agent + + + Total number of bytes sent by this simulator to this agent + + + Total number of bytes received by this simulator to this agent + + + Time in seconds agent has been connected to simulator + + + Total number of packets that have been resent + + + Total number of resent packets recieved + + + Total number of pings sent to this simulator by this agent + + + Total number of ping replies sent to this agent by this simulator + + + + Incoming bytes per second + + It would be nice to have this claculated on the fly, but + this is far, far easier + + + + Outgoing bytes per second + + It would be nice to have this claculated on the fly, but + this is far, far easier + + + Time last ping was sent + + + ID of last Ping sent + + + + + + + + + Current time dilation of this simulator + + + Current Frames per second of simulator + + + Current Physics frames per second of simulator + + + + + + + + + + + + + + + + + + + + + + + + + + + Total number of objects Simulator is simulating + + + Total number of Active (Scripted) objects running + + + Number of agents currently in this simulator + + + Number of agents in neighbor simulators + + + Number of Active scripts running in this simulator + + + + + + + + + + + + Number of downloads pending + + + Number of uploads pending + + + + + + + + + Number of local uploads pending + + + Unacknowledged bytes in queue + + + + Checks the instance back into the object pool + + + + + Returns an instance of the class that has been checked out of the Object Pool. + + + + + Creates a new instance of the ObjectPoolBase class. Initialize MUST be called + after using this constructor. + + + + + Creates a new instance of the ObjectPool Base class. + + The object pool is composed of segments, which + are allocated whenever the size of the pool is exceeded. The number of items + in a segment should be large enough that allocating a new segmeng is a rare + thing. For example, on a server that will have 10k people logged in at once, + the receive buffer object pool should have segment sizes of at least 1000 + byte arrays per segment. + + The minimun number of segments that may exist. + Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. + The frequency which segments are checked to see if they're eligible for cleanup. + + + + Forces the segment cleanup algorithm to be run. This method is intended + primarly for use from the Unit Test libraries. + + + + + Responsible for allocate 1 instance of an object that will be stored in a segment. + + An instance of whatever objec the pool is pooling. + + + + Checks in an instance of T owned by the object pool. This method is only intended to be called + by the WrappedObject class. + + The segment from which the instance is checked out. + The instance of T to check back into the segment. + + + + Checks an instance of T from the pool. If the pool is not sufficient to + allow the checkout, a new segment is created. + + A WrappedObject around the instance of T. To check + the instance back into the segment, be sureto dispose the WrappedObject + when finished. + + + + The total number of segments created. Intended to be used by the Unit Tests. + + + + + The number of items that are in a segment. Items in a segment + are all allocated at the same time, and are hopefully close to + each other in the managed heap. + + + + + The minimum number of segments. When segments are reclaimed, + this number of segments will always be left alone. These + segments are allocated at startup. + + + + + The age a segment must be before it's eligible for cleanup. + This is used to prevent thrash, and typical values are in + the 5 minute range. + + + + + The frequence which the cleanup thread runs. This is typically + expected to be in the 5 minute range. + + + + + Exception class to identify inventory exceptions + + + + + Responsible for maintaining inventory structure. Inventory constructs nodes + and manages node children as is necessary to maintain a coherant hirarchy. + Other classes should not manipulate or create InventoryNodes explicitly. When + A node's parent changes (when a folder is moved, for example) simply pass + Inventory the updated InventoryFolder and it will make the appropriate changes + to its internal representation. + + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectUpdated Event + A InventoryObjectUpdatedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectRemoved Event + A InventoryObjectRemovedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectAdded Event + A InventoryObjectAddedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + + Returns the contents of the specified folder + + A folder's UUID + The contents of the folder corresponding to folder + When folder does not exist in the inventory + + + + Updates the state of the InventoryNode and inventory data structure that + is responsible for the InventoryObject. If the item was previously not added to inventory, + it adds the item, and updates structure accordingly. If it was, it updates the + InventoryNode, changing the parent node if item.parentUUID does + not match node.Parent.Data.UUID. + + You can not set the inventory root folder using this method + + The InventoryObject to store + + + + Removes the InventoryObject and all related node data from Inventory. + + The InventoryObject to remove. + + + + Used to find out if Inventory contains the InventoryObject + specified by uuid. + + The UUID to check. + true if inventory contains uuid, false otherwise + + + + Saves the current inventory structure to a cache file + + Name of the cache file to save to + + + + Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. + + Name of the cache file to load + The number of inventory items sucessfully reconstructed into the inventory node tree + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + + The root folder of this avatars inventory + + + + + The default shared library folder + + + + + The root node of the avatars inventory + + + + + The root node of the default shared library + + + + + By using the bracket operator on this class, the program can get the + InventoryObject designated by the specified uuid. If the value for the corresponding + UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). + If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), + the uuid parameter is ignored. + + The UUID of the InventoryObject to get or set, ignored if set to non-null value. + The InventoryObject corresponding to uuid. + + + + Registers, unregisters, and fires events generated by incoming packets + + + + Reference to the GridClient object + + + + Default constructor + + + + + + Register an event handler + + Use PacketType.Default to fire this event on every + incoming packet + Packet type to register the handler for + Callback to be fired + True if this callback should be ran + asynchronously, false to run it synchronous + + + + Unregister an event handler + + Packet type to unregister the handler for + Callback to be unregistered + + + + Fire the events registered for this packet type + + Incoming packet type + Incoming packet + Simulator this packet was received from + + + + Object that is passed to worker threads in the ThreadPool for + firing packet callbacks + + + + Callback to fire for this packet + + + Reference to the simulator that this packet came from + + + The packet that needs to be processed + + + + Registers, unregisters, and fires events generated by the Capabilities + event queue + + + + Reference to the GridClient object + + + + Default constructor + + Reference to the GridClient object + + + + Register an new event handler for a capabilities event sent via the EventQueue + + Use String.Empty to fire this event on every CAPS event + Capability event name to register the + handler for + Callback to fire + + + + Unregister a previously registered capabilities handler + + Capability event name unregister the + handler for + Callback to unregister + + + + Fire the events registered for this event type synchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event + + + + Fire the events registered for this event type asynchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event + + + + Object that is passed to worker threads in the ThreadPool for + firing CAPS callbacks + + + + Callback to fire for this packet + + + Name of the CAPS event + + + Strongly typed decoded data + + + Reference to the simulator that generated this event + + + + Represends individual HTTP Download request + + + + URI of the item to fetch + + + Timout specified in milliseconds + + + Download progress callback + + + Download completed callback + + + Accept the following content type + + + Default constructor + + + Constructor + + + + Manages async HTTP downloads with a limit on maximum + concurrent downloads + + + + Default constructor + + + Cleanup method + + + Setup http download request + + + Check the queue for pending work + + + Enqueue a new HTPP download + + + Maximum number of parallel downloads from a single endpoint + + + Client certificate + + + Positional vector of the users position + + + Velocity vector of the position + + + At Orientation (X axis) of the position + + + Up Orientation (Y axis) of the position + + + Left Orientation (Z axis) of the position + + + + Represents Mesh asset + + + + Initializes a new instance of an AssetMesh object + + + Initializes a new instance of an AssetMesh object with parameters A unique specific to this asset A byte array containing the raw asset data - + - Regenerates the AssetData byte array from the properties - of the derived class. + TODO: Encodes a scripts contents into a LSO Bytecode file - + - Decodes the AssetData, placing it in appropriate properties of the derived - class. + TODO: Decode LSO Bytecode into a string - True if the asset decoding succeeded, otherwise false + true - - The assets unique ID - - - - The "type" of asset, Notecard, Animation, etc - - - - A string containing the name of the asset - - - A string containing a short description of the asset - - - The Assets WearableType - - - The For-Sale status of the object - - - An Integer representing the purchase price of the asset - - - The of the assets creator - - - The of the assets current owner - - - The of the assets prior owner - - - The of the Group this asset is set to - - - True if the asset is owned by a - - - The Permissions mask of the asset - - - A Dictionary containing Key/Value pairs of the objects parameters - - - A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures - - - Initializes a new instance of an AssetWearable object - - - Initializes a new instance of an AssetWearable object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - - Decode an assets byte encoded data to a string - - true if the asset data was decoded successfully - - - - Encode the assets string represantion into a format consumable by the asset server - - - - Initializes a new instance of an AssetScriptBinary object - - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - + Override the base classes AssetType - + - Add a custom decoder callback + Static helper functions and global variables - The key of the field to decode - The custom decode handler - - - Remove a custom decoder callback - - The key of the field to decode - The custom decode handler + + This header flag signals that ACKs are appended to the packet - - - Creates a formatted string containing the values of a Packet - - The Packet - A formatted string of values of the nested items in the Packet object + + This header flag signals that this packet has been sent before - - - Decode an IMessage object into a beautifully formatted string - - The IMessage object - Recursion level (used for indenting) - A formatted string containing the names and values of the source object + + This header flags signals that an ACK is expected for this packet - + + This header flag signals that the message is compressed using zerocoding + + - A custom decoder callback + - The key of the object - the data to decode - A string represending the fieldData + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Given an X/Y location in absolute (grid-relative) terms, a region + handle is returned along with the local X/Y location in that region + + The absolute X location, a number such as + 255360.35 + The absolute Y location, a number such as + 255360.35 + The sim-local X position of the global X + position, a value from 0.0 to 256.0 + The sim-local Y position of the global Y + position, a value from 0.0 to 256.0 + A 64-bit region handle that can be used to teleport to + + + + Converts a floating point number to a terse string format used for + transmitting numbers in wearable asset files + + Floating point number to convert to a string + A terse string representation of the input number + + + + Convert a variable length field (byte array) to a string, with a + field name prepended to each line of the output + + If the byte array has unprintable characters in it, a + hex dump will be written instead + The StringBuilder object to write to + The byte array to convert to a string + A field name to prepend to each line of output + + + + Decode a zerocoded byte array, used to decompress packets marked + with the zerocoded flag + + Any time a zero is encountered, the next byte is a count + of how many zeroes to expand. One zero is encoded with 0x00 0x01, + two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The + first four bytes are copied directly to the output buffer. + + The byte array to decode + The length of the byte array to decode. This + would be the length of the packet up to (but not including) any + appended ACKs + The output byte array to decode to + The length of the output buffer + + + + Encode a byte array with zerocoding. Used to compress packets marked + with the zerocoded flag. Any zeroes in the array are compressed down + to a single zero byte followed by a count of how many zeroes to expand + out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, + three zeroes becomes 0x00 0x03, etc. The first four bytes are copied + directly to the output buffer. + + The byte array to encode + The length of the byte array to encode + The output byte array to encode to + The length of the output buffer + + + + Calculates the CRC (cyclic redundancy check) needed to upload inventory. + + Creation date + Sale type + Inventory type + Type + Asset ID + Group ID + Sale price + Owner ID + Creator ID + Item ID + Folder ID + Everyone mask (permissions) + Flags + Next owner mask (permissions) + Group mask (permissions) + Owner mask (permissions) + The calculated CRC + + + + Attempts to load a file embedded in the assembly + + The filename of the resource to load + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Attempts to load a file either embedded in the assembly or found in + a given search path + + The filename of the resource to load + An optional path that will be searched if + the asset is not found embedded in the assembly + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Converts a list of primitives to an object that can be serialized + with the LLSD system + + Primitives to convert to a serializable object + An object that can be serialized with LLSD + + + + Deserializes OSD in to a list of primitives + + Structure holding the serialized primitive list, + must be of the SDMap type + A list of deserialized primitives + + + + Converts a struct or class object containing fields only into a key value separated string + + The struct object + A string containing the struct fields as the keys, and the field value as the value separated + + + // Add the following code to any struct or class containing only fields to override the ToString() + // method to display the values of the passed object + + /// Print the struct data as a string + ///A string containing the field name, and field value + public override string ToString() + { + return Helpers.StructToString(this); + } + + + + + + Passed to Logger.Log() to identify the severity of a log entry + + + + No logging information will be output + + + Non-noisy useful information, may be helpful in + debugging a problem + + + A non-critical error occurred. A warning will not + prevent the rest of the library from operating as usual, + although it may be indicative of an underlying issue + + + A critical error has occurred. Generally this will + be followed by the network layer shutting down, although the + stability of the library after an error is uncertain + + + Used for internal testing, this logging level can + generate very noisy (long and/or repetitive) messages. Don't + pass this to the Log() function, use DebugLog() instead. + + + + + A set of textures that are layered on texture of each other and "baked" + in to a single texture, for avatar appearances + + + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + + Default constructor + + Bake type + + + + Adds layer for baking + + TexturaData struct that contains texture and its params + + + + Converts avatar texture index (face) to Bake type + + Face number (AvatarTextureIndex) + BakeType, layer to which this texture belongs to + + + + Make sure images exist, resize source if needed to match the destination + + Destination image + Source image + Sanitization was succefull + + + + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color + + Color of the base of this layer + + + + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color + + Red value + Green value + Blue value + + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + Is this one of the 3 skin bakes + + + + Represents an Animation + + + + Default Constructor + + + + Construct an Asset object of type Animation + + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + + Index of TextureEntry slots for avatar appearances + + + + + Bake layers for avatar appearance + + + + Maximum number of concurrent downloads for wearable assets and textures + + + Maximum number of concurrent uploads for baked textures + + + Timeout for fetching inventory listings + + + Timeout for fetching a single wearable, or receiving a single packet response + + + Timeout for fetching a single texture + + + Timeout for uploading a single baked texture + + + Number of times to retry bake upload + + + When changing outfit, kick off rebake after + 20 seconds has passed since the last change + + + Total number of wearables for each avatar + + + Total number of baked textures on each avatar + + + Total number of wearables per bake layer + + + Mapping between BakeType and AvatarTextureIndex + + + Map of what wearables are included in each bake + + + Magic values to finalize the cache check hashes for each + bake + + + Default avatar texture, used to detect when a custom + texture is not set for a face + + + The event subscribers. null if no subcribers + + + Raises the AgentWearablesReply event + An AgentWearablesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the CachedBakesReply event + An AgentCachedBakesReplyEventArgs object containing the + data returned from the data server AgentCachedTextureResponse + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AppearanceSet event + An AppearanceSetEventArgs object indicating if the operatin was successfull + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the RebakeAvatarRequested event + An RebakeAvatarTexturesEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + A cache of wearables currently being worn + + + A cache of textures currently being worn + + + Incrementing serial number for AgentCachedTexture packets + + + Incrementing serial number for AgentSetAppearance packets + + + Indicates whether or not the appearance thread is currently + running, to prevent multiple appearance threads from running + simultaneously + + + Reference to our agent + + + + Timer used for delaying rebake on changing outfit + + + + + Main appearance thread + + + + + Default constructor + + A reference to our agent + + + + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + + + + + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + + Unused parameter + + + + Starts the appearance setting thread + + + + + Starts the appearance setting thread + + True to force rebaking, otherwise false + + + + Ask the server what textures our agent is currently wearing + + + + + Build hashes out of the texture assetIDs for each baking layer to + ask the simulator whether it has cached copies of each baked texture + + + + + Returns the AssetID of the asset that is currently being worn in a + given WearableType slot + + WearableType slot to get the AssetID for + The UUID of the asset being worn in the given slot, or + UUID.Zero if no wearable is attached to the given slot or wearables + have not been downloaded yet + + + + Add a wearable to the current outfit and set appearance + + Wearable to be added to the outfit + + + + Add a list of wearables to the current outfit and set appearance + + List of wearable inventory items to + be added to the outfit + + + + Remove a wearable from the current outfit and set appearance + + Wearable to be removed from the outfit + + + + Removes a list of wearables from the current outfit and set appearance + + List of wearable inventory items to + be removed from the outfit + + + + Replace the current outfit with a list of wearables and set appearance + + List of wearable inventory items that + define a new outfit + + + + Checks if an inventory item is currently being worn + + The inventory item to check against the agent + wearables + The WearableType slot that the item is being worn in, + or WearbleType.Invalid if it is not currently being worn + + + + Returns a copy of the agents currently worn wearables + + A copy of the agents currently worn wearables + Avoid calling this function multiple times as it will make + a copy of all of the wearable data each time + + + + Calls either or + depending on the value of + replaceItems + + List of wearable inventory items to add + to the outfit or become a new outfit + True to replace existing items with the + new list of items, false to add these items to the existing outfit + + + + Adds a list of attachments to our agent + + A List containing the attachments to add + If true, tells simulator to remove existing attachment + first + + + + Attach an item to our agent at a specific attach point + + A to attach + the on the avatar + to attach the item to + + + + Attach an item to our agent specifying attachment details + + The of the item to attach + The attachments owner + The name of the attachment + The description of the attahment + The to apply when attached + The of the attachment + The on the agent + to attach the item to + + + + Detach an item from our agent using an object + + An object + + + + Detach an item from our agent + + The inventory itemID of the item to detach + + + + Inform the sim which wearables are part of our current outfit + + + + + Replaces the Wearables collection with a list of new wearable items + + Wearable items to replace the Wearables collection with + + + + Calculates base color/tint for a specific wearable + based on its params + + All the color info gathered from wearable's VisualParams + passed as list of ColorParamInfo tuples + Base color/tint for the wearable + + + + Blocking method to populate the Wearables dictionary + + True on success, otherwise false + + + + Blocking method to populate the Textures array with cached bakes + + True on success, otherwise false + + + + Populates textures and visual params from a decoded asset + + Wearable to decode + + + + Blocking method to download and parse currently worn wearable assets + + True on success, otherwise false + + + + Get a list of all of the textures that need to be downloaded for a + single bake layer + + Bake layer to get texture AssetIDs for + A list of texture AssetIDs to download + + + + Helper method to lookup the TextureID for a single layer and add it + to a list if it is not already present + + + + + + + Blocking method to download all of the textures needed for baking + the given bake layers + + A list of layers that need baking + No return value is given because the baking will happen + whether or not all textures are successfully downloaded + + + + Blocking method to create and upload baked textures for all of the + missing bakes + + True on success, otherwise false + + + + Blocking method to create and upload a baked texture for a single + bake layer + + Layer to bake + True on success, otherwise false + + + + Blocking method to upload a baked texture + + Five channel JPEG2000 texture data to upload + UUID of the newly created asset on success, otherwise UUID.Zero + + + + Creates a dictionary of visual param values from the downloaded wearables + + A dictionary of visual param indices mapping to visual param + values for our agent that can be fed to the Baker class + + + + Create an AgentSetAppearance packet from Wearables data and the + Textures array and send it + + + + + Converts a WearableType to a bodypart or clothing WearableType + + A WearableType + AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown + + + + Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex + + A BakeType + The AvatarTextureIndex slot that holds the given BakeType + + + + Gives the layer number that is used for morph mask + + >A BakeType + Which layer number as defined in BakeTypeToTextures is used for morph mask + + + + Converts a BakeType to a list of the texture slots that make up that bake + + A BakeType + A list of texture slots that are inputs for the given bake + + + Triggered when an AgentWearablesUpdate packet is received, + telling us what our avatar is currently wearing + request. + + + Raised when an AgentCachedTextureResponse packet is + received, giving a list of cached bakes that were found on the + simulator + request. + + + + Raised when appearance data is sent to the simulator, also indicates + the main appearance thread is finished. + + request. + + + + Triggered when the simulator requests the agent rebake its appearance. + + + + + + Returns true if AppearanceManager is busy and trying to set or change appearance will fail + + + + + Contains information about a wearable inventory item + + + + Inventory ItemID of the wearable + + + AssetID of the wearable asset + + + WearableType of the wearable + + + AssetType of the wearable + + + Asset data for the wearable + + + + Data collected from visual params for each wearable + needed for the calculation of the color + + + + + Holds a texture assetID and the data needed to bake this layer into + an outfit texture. Used to keep track of currently worn textures + and baking data + + + + A texture AssetID + + + Asset data for the texture + + + Collection of alpha masks that needs applying + + + Tint that should be applied to the texture + + + Where on avatar does this texture belong + + + Contains the Event data returned from the data server from an AgentWearablesRequest + + + Construct a new instance of the AgentWearablesReplyEventArgs class + + + Contains the Event data returned from the data server from an AgentCachedTextureResponse + + + Construct a new instance of the AgentCachedBakesReplyEventArgs class + + + Contains the Event data returned from an AppearanceSetRequest + + + + Triggered when appearance data is sent to the sim and + the main appearance thread is done. + Indicates whether appearance setting was successful + + + Indicates whether appearance setting was successful + + + Contains the Event data returned from the data server from an RebakeAvatarTextures + + + + Triggered when the simulator sends a request for this agent to rebake + its appearance + + The ID of the Texture Layer to bake + + + The ID of the Texture Layer to bake + + + + The current status of a texture request as it moves through the pipeline or final result of a texture request. + + + + The initial state given to a request. Requests in this state + are waiting for an available slot in the pipeline + + + A request that has been added to the pipeline and the request packet + has been sent to the simulator + + + A request that has received one or more packets back from the simulator + + + A request that has received all packets back from the simulator + + + A request that has taken longer than + to download OR the initial packet containing the packet information was never received + + + The texture request was aborted by request of the agent + + + The simulator replied to the request that it was not able to find the requested texture + + + + A callback fired to indicate the status or final state of the requested texture. For progressive + downloads this will fire each time new asset data is returned from the simulator. + + The indicating either Progress for textures not fully downloaded, + or the final result of the request after it has been processed through the TexturePipeline + The object containing the Assets ID, raw data + and other information. For progressive rendering the will contain + the data from the beginning of the file. For failed, aborted and timed out requests it will contain + an empty byte array. + + + + Texture request download handler, allows a configurable number of download slots which manage multiple + concurrent texture downloads from the + + This class makes full use of the internal + system for full texture downloads. + + + A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID + and also the Asset Texture ID, and the value is an object containing the current state of the request and also + the asset data as it is being re-assembled + + + Holds the reference to the client object + + + Maximum concurrent texture requests allowed at a time + + + An array of objects used to manage worker request threads + + + An array of worker slots which shows the availablity status of the slot + + + The primary thread which manages the requests. + + + true if the TexturePipeline is currently running + + + A synchronization object used by the primary thread + + + A refresh timer used to increase the priority of stalled requests + + + + Default constructor, Instantiates a new copy of the TexturePipeline class + + Reference to the instantiated object + + + + Initialize callbacks required for the TexturePipeline to operate + + + + + Shutdown the TexturePipeline and cleanup any callbacks or transfers + + + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + + + Sends the actual request packet to the simulator + + The image to download + Type of the image to download, either a baked + avatar texture or a normal texture + Priority level of the download. Default is + 1,013,000.0f + Number of quality layers to discard. + This controls the end marker of the data sent + Packet number to start the download at. + This controls the start marker of the data sent + Sending a priority of 0 and a discardlevel of -1 aborts + download + + + + Cancel a pending or in process texture request + + The texture assets unique ID + + + + Master Download Thread, Queues up downloads in the threadpool + + + + + The worker thread that sends the request and handles timeouts + + A object containing the request details + + + + Handle responses from the simulator that tell us a texture we have requested is unable to be located + or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use + + The sender + The EventArgs object containing the packet data + + + + Handles the remaining Image data that did not fit in the initial ImageData packet + + The sender + The EventArgs object containing the packet data + + + + Handle the initial ImageDataPacket sent from the simulator + + The sender + The EventArgs object containing the packet data + + + Current number of pending and in-process transfers + + + + A request task containing information and status of a request as it is processed through the + + + + The current which identifies the current status of the request + + + The Unique Request ID, This is also the Asset ID of the texture being requested + + + The slot this request is occupying in the threadpoolSlots array + + + The ImageType of the request. + + + The callback to fire when the request is complete, will include + the and the + object containing the result data + + + If true, indicates the callback will be fired whenever new data is returned from the simulator. + This is used to progressively render textures as portions of the texture are received. + + + An object that maintains the data of an request thats in-process. + + + + Wrapper around a byte array that allows bit to be packed and unpacked + one at a time or by a variable amount. Useful for very tightly packed + data like LayerData packets + + + + + + + + Default constructor, initialize the bit packer / bit unpacker + with a byte array and starting position + + Byte array to pack bits in to or unpack from + Starting position in the byte array + + + + Pack a floating point value in to the data + + Floating point value to pack + + + + Pack part or all of an integer in to the data + + Integer containing the data to pack + Number of bits of the integer to pack + + + + Pack part or all of an unsigned integer in to the data + + Unsigned integer containing the data to pack + Number of bits of the integer to pack + + + + Pack a single bit in to the data + + Bit to pack + + + + + + + + + + + + + + + + + + + + + + + + + Unpacking a floating point value from the data + + Unpacked floating point value + + + + Unpack a variable number of bits from the data in to integer format + + Number of bits to unpack + An integer containing the unpacked bits + This function is only useful up to 32 bits + + + + Unpack a variable number of bits from the data in to unsigned + integer format + + Number of bits to unpack + An unsigned integer containing the unpacked bits + This function is only useful up to 32 bits + + + + Unpack a 16-bit signed integer + + 16-bit signed integer + + + + Unpack a 16-bit unsigned integer + + 16-bit unsigned integer + + + + Unpack a 32-bit signed integer + + 32-bit signed integer + + + + Unpack a 32-bit unsigned integer + + 32-bit unsigned integer + + + + + + @@ -2448,45 +14442,70 @@ Helper class for sorting files by their last accessed time - + - A linkset asset, containing a parent primitive and zero or more children + Capability to load TGAs to Bitmap - - Initializes a new instance of an AssetPrim object - - + - Initializes a new instance of an AssetPrim object + Represents a Sound Asset + + + + Initializes a new instance of an AssetSound object + + + Initializes a new instance of an AssetSound object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + TODO: Encodes a sound file + + + + + TODO: Decode a sound file + + true + + + Override the base classes AssetType + + + + Represents an LSL Text object containing a string of UTF encoded characters + + + + A string of characters represting the script contents + + + Initializes a new AssetScriptText object + + + + Initializes a new AssetScriptText object with parameters A unique specific to this asset A byte array containing the raw asset data - + - + Encode a string containing the scripts contents into byte encoded AssetData - + - + Decode a byte array containing the scripts contents into a string - + true if decoding is successful - + Override the base classes AssetType - - - Only used internally for XML serialization/deserialization - - - - - The deserialized form of a single primitive in a linkset asset - - Represents a Landmark with RegionID and Position vector @@ -2522,6 +14541,23 @@ Override the base classes AssetType + + + Represents an that can be worn on an avatar + such as a Shirt, Pants, etc. + + + + Initializes a new instance of an AssetScriptBinary object + + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + Main class to expose grid functionality to clients. All of the @@ -2623,6 +14659,1454 @@ Client avatars full name + + + Attempts to convert an LLSD structure to a known Packet type + + Event name, this must match an actual + packet name for a Packet to be successfully built + LLSD to convert to a Packet + A Packet on success, otherwise null + + + + Image width + + + + + Image height + + + + + Image channel flags + + + + + Red channel data + + + + + Green channel data + + + + + Blue channel data + + + + + Alpha channel data + + + + + Bump channel data + + + + + Create a new blank image + + width + height + channel flags + + + + + + + + + + Convert the channels in the image. Channels are created or destroyed as required. + + new channel flags + + + + Resize or stretch the image using nearest neighbor (ugly) resampling + + new width + new height + + + + Create a byte array containing 32-bit RGBA data with a bottom-left + origin, suitable for feeding directly into OpenGL + + A byte array containing raw texture data + + + + Represents a texture + + + + A object containing image data + + + + + + + + + Initializes a new instance of an AssetTexture object + + + + Initializes a new instance of an AssetTexture object + + A unique specific to this asset + A byte array containing the raw asset data + + + + Initializes a new instance of an AssetTexture object + + A object containing texture data + + + + Populates the byte array with a JPEG2000 + encoded image created from the data in + + + + + Decodes the JPEG2000 data in AssetData to the + object + + True if the decoding was successful, otherwise false + + + + Decodes the begin and end byte positions for each quality layer in + the image + + + + + Override the base classes AssetType + + + + Temporary code to do the bare minimum required to read a tar archive for our purposes + + + + + Binary reader for the underlying stream + + + + + Used to trim off null chars + + + + + Used to trim off space chars + + + + + Generate a tar reader which reads from the given stream. + + + + + + Read the next entry in the tar file. + + + + the data for the entry. Returns null if there are no more entries + + + + Read the next 512 byte chunk of data as a tar header. + + A tar header struct. null if we have reached the end of the archive. + + + + Read data following a header + + + + + + + Convert octal bytes to a decimal representation + + + + + + + + X position of this patch + + + Y position of this patch + + + A 16x16 array of floats holding decompressed layer data + + + + Creates a LayerData packet for compressed land data given a full + simulator heightmap and an array of indices of patches to compress + + A 256 * 256 array of floating point values + specifying the height at each meter in the simulator + Array of indexes in the 16x16 grid of patches + for this simulator. For example if 1 and 17 are specified, patches + x=1,y=0 and x=1,y=1 are sent + + + + + Add a patch of terrain to a BitPacker + + BitPacker to write the patch to + Heightmap of the simulator, must be a 256 * + 256 float array + X offset of the patch to create, valid values are + from 0 to 15 + Y offset of the patch to create, valid values are + from 0 to 15 + + + + + + + + No report + + + Unknown report type + + + Bug report + + + Complaint report + + + Customer service report + + + + Bitflag field for ObjectUpdateCompressed data blocks, describing + which options are present for each object + + + + Unknown + + + Whether the object has a TreeSpecies + + + Whether the object has floating text ala llSetText + + + Whether the object has an active particle system + + + Whether the object has sound attached to it + + + Whether the object is attached to a root object or not + + + Whether the object has texture animation settings + + + Whether the object has an angular velocity + + + Whether the object has a name value pairs string + + + Whether the object has a Media URL set + + + + Specific Flags for MultipleObjectUpdate requests + + + + None + + + Change position of prims + + + Change rotation of prims + + + Change size of prims + + + Perform operation on link set + + + Scale prims uniformly, same as selecing ctrl+shift in the + viewer. Used in conjunction with Scale + + + + Special values in PayPriceReply. If the price is not one of these + literal value of the price should be use + + + + + Indicates that this pay option should be hidden + + + + + Indicates that this pay option should have the default value + + + + + Contains the variables sent in an object update packet for objects. + Used to track position and movement of prims and avatars + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Handles all network traffic related to prims and avatar positions and + movement. + + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ObjectProperties Event + A ObjectPropertiesEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ObjectPropertiesUpdated Event + A ObjectPropertiesUpdatedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ObjectPropertiesFamily Event + A ObjectPropertiesFamilyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarUpdate Event + A AvatarUpdateEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ObjectDataBlockUpdate Event + A ObjectDataBlockUpdateEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the KillObject Event + A KillObjectEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarSitChanged Event + A AvatarSitChangedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the PayPriceReply Event + A PayPriceReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Reference to the GridClient object + + + Does periodic dead reckoning calculation to convert + velocity and acceleration to new positions for objects + + + + Construct a new instance of the ObjectManager class + + A reference to the instance + + + + Request information for a single object from a + you are currently connected to + + The the object is located + The Local ID of the object + + + + Request information for multiple objects contained in + the same simulator + + The the objects are located + An array containing the Local IDs of the objects + + + + Attempt to purchase an original object, a copy, or the contents of + an object + + The the object is located + The Local ID of the object + Whether the original, a copy, or the object + contents are on sale. This is used for verification, if the this + sale type is not valid for the object the purchase will fail + Price of the object. This is used for + verification, if it does not match the actual price the purchase + will fail + Group ID that will be associated with the new + purchase + Inventory folder UUID where the object or objects + purchased should be placed + + + BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, + 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); + + + + + + Request prices that should be displayed in pay dialog. This will triggger the simulator + to send us back a PayPriceReply which can be handled by OnPayPriceReply event + + The the object is located + The ID of the object + The result is raised in the event + + + + Select a single object. This will cause the to send us + an which will raise the event + + The the object is located + The Local ID of the object + + + + + Select a single object. This will cause the to send us + an which will raise the event + + The the object is located + The Local ID of the object + if true, a call to is + made immediately following the request + + + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + Should objects be deselected immediately after selection + + + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + + + + + Update the properties of an object + + The the object is located + The Local ID of the object + true to turn the objects physical property on + true to turn the objects temporary property on + true to turn the objects phantom property on + true to turn the objects cast shadows property on + + + + Sets the sale properties of a single object + + The the object is located + The Local ID of the object + One of the options from the enum + The price of the object + + + + Sets the sale properties of multiple objects + + The the objects are located + An array containing the Local IDs of the objects + One of the options from the enum + The price of the object + + + + Deselect a single object + + The the object is located + The Local ID of the object + + + + Deselect multiple objects. + + The the objects are located + An array containing the Local IDs of the objects + + + + Perform a click action on an object + + The the object is located + The Local ID of the object + + + + Perform a click action (Grab) on a single object + + The the object is located + The Local ID of the object + The texture coordinates to touch + The surface coordinates to touch + The face of the position to touch + The region coordinates of the position to touch + The surface normal of the position to touch (A normal is a vector perpindicular to the surface) + The surface binormal of the position to touch (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space + + + + Create (rez) a new prim object in a simulator + + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties + + + + Create (rez) a new prim object in a simulator + + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Specify the + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties + + + + Rez a Linden tree + + A reference to the object where the object resides + The size of the tree + The rotation of the tree + The position of the tree + The Type of tree + The of the group to set the tree to, + or UUID.Zero if no group is to be set + true to use the "new" Linden trees, false to use the old + + + + Rez grass and ground cover + + A reference to the object where the object resides + The size of the grass + The rotation of the grass + The position of the grass + The type of grass from the enum + The of the group to set the tree to, + or UUID.Zero if no group is to be set + + + + Set the textures to apply to the faces of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + + + + Set the textures to apply to the faces of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + A media URL (not used) + + + + Set the Light data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Set the flexible data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Set the sculptie texture and data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Unset additional primitive parameters on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The extra parameters to set + + + + Link multiple prims into a linkset + + A reference to the object where the objects reside + An array which contains the IDs of the objects to link + The last object in the array will be the root object of the linkset TODO: Is this true? + + + + Delink/Unlink multiple prims from a linkset + + A reference to the object where the objects reside + An array which contains the IDs of the objects to delink + + + + Change the rotation of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation of the object + + + + Set the name of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new name of the object + + + + Set the name of multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the name of + An array which contains the new names of the objects + + + + Set the description of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new description of the object + + + + Set the descriptions of multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the description of + An array which contains the new descriptions of the objects + + + + Attach an object to this avatar + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The point on the avatar the object will be attached + The rotation of the attached object + + + + Drop an attached object from this avatar + + A reference to the + object where the objects reside. This will always be the simulator the avatar is currently in + + The object's ID which is local to the simulator the object is in + + + + Detach an object from yourself + + A reference to the + object where the objects reside + + This will always be the simulator the avatar is currently in + + An array which contains the IDs of the objects to detach + + + + Change the position of an object, Will change position of entire linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + + + + Change the position of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + if true, will change position of (this) child prim only, not entire linkset + + + + Change the Scale (size) of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change scale of this prim only, not entire linkset + True to resize prims uniformly + + + + Change the Rotation of an object that is either a child or a whole linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change rotation of this prim only, not entire linkset + + + + Send a Multiple Object Update packet to change the size, scale or rotation of a primitive + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation, size, or position of the target object + The flags from the Enum + + + + Deed an object (prim) to a group, Object must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The of the group to deed the object to + + + + Deed multiple objects (prims) to a group, Objects must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + An array which contains the IDs of the objects to deed + The of the group to deed the object to + + + + Set the permissions on multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the permissions on + The new Who mask to set + The new Permissions mark to set + TODO: What does this do? + + + + Request additional properties for an object + + A reference to the object where the object resides + + + + + Request additional properties for an object + + A reference to the object where the object resides + Absolute UUID of the object + Whether to require server acknowledgement of this request + + + + Set the ownership of a list of objects to the specified group + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the group id on + The Groups ID + + + + Update current URL of the previously set prim media + + UUID of the prim + Set current URL to this + Prim face number + Simulator in which prim is located + + + + Set object media + + UUID of the prim + Array the length of prims number of faces. Null on face indexes where there is + no media, on faces which contain the media + Simulatior in which prim is located + + + + Retrieve information about object media + + UUID of the primitive + Simulator where prim is located + Call this callback when done + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + A terse object update, used when a transformation matrix or + velocity/acceleration for an object changes but nothing else + (scale/position/rotation/acceleration/velocity) + + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Setup construction data for a basic primitive shape + + Primitive shape to construct + Construction data that can be plugged into a + + + + + + + + + + + + + + + + + + + + Set the Shape data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + Data describing the prim shape + + + + Set the Material data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new material of the object + + + + + + + + + + + + + + + + + + + + + Raised when the simulator sends us data containing + A , Foliage or Attachment + + + + + Raised when the simulator sends us data containing + additional information + + + + + Raised when the simulator sends us data containing + Primitive.ObjectProperties for an object we are currently tracking + + + Raised when the simulator sends us data containing + additional and details + + + + Raised when the simulator sends us data containing + updated information for an + + + Raised when the simulator sends us data containing + and movement changes + + + Raised when the simulator sends us data containing + updates to an Objects DataBlock + + + Raised when the simulator informs us an + or is no longer within view + + + Raised when the simulator sends us data containing + updated sit information for our + + + Raised when the simulator sends us data containing + purchase price information for a + + + + Callback for getting object media data via CAP + + Indicates if the operation was succesfull + Object media version string + Array indexed on prim face of media entry data + + + Provides data for the event + The event occurs when the simulator sends + an containing a Primitive, Foliage or Attachment data + Note 1: The event will not be raised when the object is an Avatar + Note 2: It is possible for the to be + raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or + if an Avatar crosses the border into a new simulator and returns to the current simulator + + + The following code example uses the , , and + properties to display new Primitives and Attachments on the window. + + // Subscribe to the event that gives us prim and foliage information + Client.Objects.ObjectUpdate += Objects_ObjectUpdate; + + + private void Objects_ObjectUpdate(object sender, PrimEventArgs e) + { + Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); + } + + + + + + + + + Construct a new instance of the PrimEventArgs class + + The simulator the object originated from + The Primitive + The simulator time dilation + The prim was not in the dictionary before this update + true if the primitive represents an attachment to an agent + + + Get the simulator the originated from + + + Get the details + + + true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) + + + true if the is attached to an + + + Get the simulator Time Dilation + + + Provides data for the event + The event occurs when the simulator sends + an containing Avatar data + Note 1: The event will not be raised when the object is an Avatar + Note 2: It is possible for the to be + raised twice for the same avatar if for example the avatar moved to a new simulator, then returned to the current simulator + + + The following code example uses the property to make a request for the top picks + using the method in the class to display the names + of our own agents picks listings on the window. + + // subscribe to the AvatarUpdate event to get our information + Client.Objects.AvatarUpdate += Objects_AvatarUpdate; + Client.Avatars.AvatarPicksReply += Avatars_AvatarPicksReply; + + private void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) + { + // we only want our own data + if (e.Avatar.LocalID == Client.Self.LocalID) + { + // Unsubscribe from the avatar update event to prevent a loop + // where we continually request the picks every time we get an update for ourselves + Client.Objects.AvatarUpdate -= Objects_AvatarUpdate; + // make the top picks request through AvatarManager + Client.Avatars.RequestAvatarPicks(e.Avatar.ID); + } + } + + private void Avatars_AvatarPicksReply(object sender, AvatarPicksReplyEventArgs e) + { + // we'll unsubscribe from the AvatarPicksReply event since we now have the data + // we were looking for + Client.Avatars.AvatarPicksReply -= Avatars_AvatarPicksReply; + // loop through the dictionary and extract the names of the top picks from our profile + foreach (var pickName in e.Picks.Values) + { + Console.WriteLine(pickName); + } + } + + + + + + + + Construct a new instance of the AvatarUpdateEventArgs class + + The simulator the packet originated from + The data + The simulator time dilation + The avatar was not in the dictionary before this update + + + Get the simulator the object originated from + + + Get the data + + + Get the simulator time dilation + + + true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) + + + Provides additional primitive data for the event + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment data + The event is also raised when a request is + made. + + + The following code example uses the , and + + properties to display new attachments and send a request for additional properties containing the name of the + attachment then display it on the window. + + // Subscribe to the event that provides additional primitive details + Client.Objects.ObjectProperties += Objects_ObjectProperties; + + // handle the properties data that arrives + private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) + { + Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); + } + + + + + + Construct a new instance of the ObjectPropertiesEventArgs class + + The simulator the object is located + The primitive Properties + + + Get the simulator the object is located + + + Get the primitive properties + + + Provides additional primitive data for the event + The event occurs when the simulator sends + an containing additional details for a Primitive or Foliage data that is currently + being tracked in the dictionary + The event is also raised when a request is + made and is enabled + + + + + Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class + + The simulator the object is located + The Primitive + The primitive Properties + + + Get the simulator the object is located + + + Get the primitive details + + + Get the primitive properties + + + Provides additional primitive data, permissions and sale info for the event + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment. This includes + Permissions, Sale info, and other basic details on an object + The event is also raised when a request is + made, the viewer equivalent is hovering the mouse cursor over an object + + + + Get the simulator the object is located + + + + + + + + + Provides primitive data containing updated location, velocity, rotation, textures for the event + The event occurs when the simulator sends updated location, velocity, rotation, etc + + + + Get the simulator the object is located + + + Get the primitive details + + + + + + + + + + + + + + Get the simulator the object is located + + + Get the primitive details + + + + + + + + + + + + + + + Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the + event + + + Get the simulator the object is located + + + The LocalID of the object + + + + Provides updates sit position data + + + + Get the simulator the object is located + + + + + + + + + + + + + + + + + Get the simulator the object is located + + + + + + + + + + + + + Indicates if the operation was successful + + + + + Media version string + + + + + Array of media entries indexed by face number + + + + + + + + + + + + + + + + De-serialization constructor for the InventoryNode Class + + + + + Serialization handler for the InventoryNode Class + + + + + De-serialization handler for the InventoryNode Class + + + + + + + + + + + + + + + + + + + + + + + For inventory folder nodes specifies weather the folder needs to be + refreshed from the server + + @@ -3068,858 +16552,6 @@ Get the simulator local position where our friend is located - - - - - - - OK - - - Transfer completed - - - - - - - - - Unknown error occurred - - - Equivalent to a 404 error - - - Client does not have permission for that resource - - - Unknown status - - - - - - - - - - - Unknown - - - Virtually all asset transfers use this channel - - - - - - - - - - - Asset from the asset server - - - Inventory item - - - Estate asset, such as an estate covenant - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Image file format - - - - - - - - - Number of milliseconds passed since the last transfer - packet was received - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Number of milliseconds to wait for a transfer header packet if out of order data was received - - - The event subscribers. null if no subcribers - - - Raises the XferReceived event - A XferReceivedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the AssetUploaded event - A AssetUploadedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the UploadProgress event - A UploadProgressEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the InitiateDownload event - A InitiateDownloadEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ImageReceiveProgress event - A ImageReceiveProgressEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - Texture download cache - - - - Default constructor - - A reference to the GridClient object - - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - The callback to fire when the simulator responds with the asset data - - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - The callback to fire when the simulator responds with the asset data - - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - UUID of the transaction - The callback to fire when the simulator responds with the asset data - - - - Request an asset download through the almost deprecated Xfer system - - Filename of the asset to request - Whether or not to delete the asset - off the server after it is retrieved - Use large transfer packets or not - UUID of the file to request, if filename is - left empty - Asset type of vFileID, or - AssetType.Unknown if filename is not empty - Sets the FilePath in the request to Cache - (4) if true, otherwise Unknown (0) is used - - - - - - - Use UUID.Zero if you do not have the - asset ID but have all the necessary permissions - The item ID of this asset in the inventory - Use UUID.Zero if you are not requesting an - asset from an object inventory - The owner of this asset - Asset type - Whether to prioritize this asset download or not - - - - - Used to force asset data into the PendingUpload property, ie: for raw terrain uploads - - An AssetUpload object containing the data to upload to the simulator - - - - Request an asset be uploaded to the simulator - - The Object containing the asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Request an asset be uploaded to the simulator - - The of the asset being uploaded - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Request an asset be uploaded to the simulator - - - Asset type to upload this data as - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Initiate an asset upload - - The ID this asset will have if the - upload succeeds - Asset type to upload this data as - Raw asset data to upload - Whether to store this asset on the local - simulator or the grid-wide asset server - The tranaction id for the upload - The transaction ID of this transfer - - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress - transfer. - A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority - indicating an off-by-one error. - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - Request an image and fire a callback when the request is complete - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - - Request an image and use an inline anonymous method to handle the downloaded texture data - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - ); - - Request a texture, decode the texture to a bitmap image and apply it to a imagebox - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - ManagedImage imgData; - Image bitmap; - - if (state == TextureRequestState.Finished) - { - OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); - picInsignia.Image = bitmap; - } - } - } - - - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - - - Cancel a texture request - - The texture assets - - - - Requests download of a mesh asset - - UUID of the mesh asset - Callback when the request completes - - - - Lets TexturePipeline class fire the progress event - - The texture ID currently being downloaded - the number of bytes transferred - the total number of bytes expected - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator responds sends - - - Raised during upload completes - - - Raised during upload with progres update - - - Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files - - - Fired when a texture is in the process of being downloaded by the TexturePipeline class - - - - Callback used for various asset download requests - - Transfer information - Downloaded asset, null on fail - - - - Callback used upon competition of baked texture upload - - Asset UUID of the newly uploaded baked texture - - - - A callback that fires upon the completition of the RequestMesh call - - Was the download successfull - Resulting mesh or null on problems - - - Xfer data - - - Upload data - - - Filename used on the simulator - - - Filename used by the client - - - UUID of the image that is in progress - - - Number of bytes received so far - - - Image size in bytes - - - - Throttles the network traffic for various different traffic types. - Access this class through GridClient.Throttle - - - - - Default constructor, uses a default high total of 1500 KBps (1536000) - - - - - Constructor that decodes an existing AgentThrottle packet in to - individual values - - Reference to the throttle data in an AgentThrottle - packet - Offset position to start reading at in the - throttle data - This is generally not needed in clients as the server will - never send a throttle packet to the client - - - - Send an AgentThrottle packet to the current server using the - current values - - - - - Send an AgentThrottle packet to the specified server using the - current values - - - - - Convert the current throttle values to a byte array that can be put - in an AgentThrottle packet - - Byte array containing all the throttle values - - - Maximum bits per second for resending unacknowledged packets - - - Maximum bits per second for LayerData terrain - - - Maximum bits per second for LayerData wind data - - - Maximum bits per second for LayerData clouds - - - Unknown, includes object data - - - Maximum bits per second for textures - - - Maximum bits per second for downloaded assets - - - Maximum bits per second the entire connection, divided up - between invidiual streams using default multipliers - - - - Represents an LSL Text object containing a string of UTF encoded characters - - - - A string of characters represting the script contents - - - Initializes a new AssetScriptText object - - - - Initializes a new AssetScriptText object with parameters - - A unique specific to this asset - A byte array containing the raw asset data - - - - Encode a string containing the scripts contents into byte encoded AssetData - - - - - Decode a byte array containing the scripts contents into a string - - true if decoding is successful - - - Override the base classes AssetType - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. @@ -4069,64 +16701,212 @@ Poses set in the animation metadata for the hands. - + - Interface requirements for Messaging system + The type of bump-mapping applied to a face - - - Represents a texture - - - - A object containing image data - - + - + - - Initializes a new instance of an AssetTexture object + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - Initializes a new instance of an AssetTexture object + The level of shininess applied to a face + + + + + + + + + + + + + + + + The texture mapping style used for a face + + + + + + + + + + + + + + + + + Flags in the TextureEntry block that describe which properties are + set + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents an AssetScriptBinary object containing the + LSO compiled bytecode of an LSL script + + + + Initializes a new instance of an AssetScriptBinary object + + + Initializes a new instance of an AssetScriptBinary object with parameters A unique specific to this asset A byte array containing the raw asset data - + - Initializes a new instance of an AssetTexture object - - A object containing texture data - - - - Populates the byte array with a JPEG2000 - encoded image created from the data in + TODO: Encodes a scripts contents into a LSO Bytecode file - + - Decodes the JPEG2000 data in AssetData to the - object + TODO: Decode LSO Bytecode into a string - True if the decoding was successful, otherwise false + true - - - Decodes the begin and end byte positions for each quality layer in - the image - - - - + Override the base classes AssetType + + + Temporary code to produce a tar archive in tar v7 format + + + + + Binary writer for the underlying stream + + + + + Write a directory entry to the tar archive. We can only handle one path level right now! + + + + + + Write a file to the tar archive + + + + + + + Write a file to the tar archive + + + + + + + Finish writing the raw tar archive data to a stream. The stream will be closed on completion. + + + + + Write a particular entry + + + + + @@ -4219,15 +16999,6 @@ A generic value, not an actual packet type - - - Attempts to convert an LLSD structure to a known Packet type - - Event name, this must match an actual - packet name for a Packet to be successfully built - LLSD to convert to a Packet - A Packet on success, otherwise null - @@ -7615,3542 +20386,6 @@ - - The event subscribers. null if no subcribers - - - Raises the LandPatchReceived event - A LandPatchReceivedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - - Default constructor - - - - - Raised when the simulator responds sends - - - Simulator from that sent tha data - - - Sim coordinate of the patch - - - Sim coordinate of the patch - - - Size of tha patch - - - Heightmap for the patch - - - - - - - - The event subscribers, null of no subscribers - - - Raises the AttachedSound Event - A AttachedSoundEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AttachedSoundGainChange Event - A AttachedSoundGainChangeEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SoundTrigger Event - A SoundTriggerEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the PreloadSound Event - A PreloadSoundEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - - Construct a new instance of the SoundManager class, used for playing and receiving - sound assets - - A reference to the current GridClient instance - - - - Plays a sound in the current region at full volume from avatar position - - UUID of the sound to be played - - - - Plays a sound in the current region at full volume - - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - - - - Plays a sound in the current region - - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 - - - - Plays a sound in the specified sim - - UUID of the sound to be played. - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 - - - - Play a sound asset - - UUID of the sound to be played. - handle id for the sim to be played in. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - sound - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Provides data for the event - The event occurs when the simulator sends - the sound data which emits from an agents attachment - - The following code example shows the process to subscribe to the event - and a stub to handle the data passed from the simulator - - // Subscribe to the AttachedSound event - Client.Sound.AttachedSound += Sound_AttachedSound; - - // process the data raised in the event here - private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) - { - // ... Process AttachedSoundEventArgs here ... - } - - - - - - Construct a new instance of the SoundTriggerEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - The volume level - The - - - Simulator where the event originated - - - Get the sound asset id - - - Get the ID of the owner - - - Get the ID of the Object - - - Get the volume level - - - Get the - - - Provides data for the event - The event occurs when an attached sound - changes its volume level - - - - Construct a new instance of the AttachedSoundGainChangedEventArgs class - - Simulator where the event originated - The ID of the Object - The new volume level - - - Simulator where the event originated - - - Get the ID of the Object - - - Get the volume level - - - Provides data for the event - The event occurs when the simulator forwards - a request made by yourself or another agent to play either an asset sound or a built in sound - - Requests to play sounds where the is not one of the built-in - will require sending a request to download the sound asset before it can be played - - - The following code example uses the , - and - properties to display some information on a sound request on the window. - - // subscribe to the event - Client.Sound.SoundTrigger += Sound_SoundTrigger; - - // play the pre-defined BELL_TING sound - Client.Sound.SendSoundTrigger(Sounds.BELL_TING); - - // handle the response data - private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) - { - Console.WriteLine("{0} played the sound {1} at volume {2}", - e.OwnerID, e.SoundID, e.Gain); - } - - - - - - Construct a new instance of the SoundTriggerEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - The ID of the objects parent - The volume level - The regionhandle - The source position - - - Simulator where the event originated - - - Get the sound asset id - - - Get the ID of the owner - - - Get the ID of the Object - - - Get the ID of the objects parent - - - Get the volume level - - - Get the regionhandle - - - Get the source position - - - Provides data for the event - The event occurs when the simulator sends - the appearance data for an avatar - - The following code example uses the and - properties to display the selected shape of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } - - - - - - Construct a new instance of the PreloadSoundEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - - - Simulator where the event originated - - - Get the sound asset id - - - Get the ID of the owner - - - Get the ID of the Object - - - - Temporary code to produce a tar archive in tar v7 format - - - - - Binary writer for the underlying stream - - - - - Write a directory entry to the tar archive. We can only handle one path level right now! - - - - - - Write a file to the tar archive - - - - - - - Write a file to the tar archive - - - - - - - Finish writing the raw tar archive data to a stream. The stream will be closed on completion. - - - - - Write a particular entry - - - - - - - - Temporary code to do the bare minimum required to read a tar archive for our purposes - - - - - Binary reader for the underlying stream - - - - - Used to trim off null chars - - - - - Used to trim off space chars - - - - - Generate a tar reader which reads from the given stream. - - - - - - Read the next entry in the tar file. - - - - the data for the entry. Returns null if there are no more entries - - - - Read the next 512 byte chunk of data as a tar header. - - A tar header struct. null if we have reached the end of the archive. - - - - Read data following a header - - - - - - - Convert octal bytes to a decimal representation - - - - - - - - - Type of return to use when returning objects from a parcel - - - - - - - Return objects owned by parcel owner - - - Return objects set to group - - - Return objects not owned by parcel owner or set to group - - - Return a specific list of objects on parcel - - - Return objects that are marked for-sale - - - - Blacklist/Whitelist flags used in parcels Access List - - - - Agent is denied access - - - Agent is granted access - - - - The result of a request for parcel properties - - - - No matches were found for the request - - - Request matched a single parcel - - - Request matched multiple parcels - - - - Flags used in the ParcelAccessListRequest packet to specify whether - we want the access list (whitelist), ban list (blacklist), or both - - - - Request the access list - - - Request the ban list - - - Request both White and Black lists - - - - Sequence ID in ParcelPropertiesReply packets (sent when avatar - tries to cross a parcel border) - - - - Parcel is currently selected - - - Parcel restricted to a group the avatar is not a - member of - - - Avatar is banned from the parcel - - - Parcel is restricted to an access list that the - avatar is not on - - - Response to hovering over a parcel - - - - The tool to use when modifying terrain levels - - - - Level the terrain - - - Raise the terrain - - - Lower the terrain - - - Smooth the terrain - - - Add random noise to the terrain - - - Revert terrain to simulator default - - - - The tool size to use when changing terrain levels - - - - Small - - - Medium - - - Large - - - - Reasons agent is denied access to a parcel on the simulator - - - - Agent is not denied, access is granted - - - Agent is not a member of the group set for the parcel, or which owns the parcel - - - Agent is not on the parcels specific allow list - - - Agent is on the parcels ban list - - - Unknown - - - Agent is not age verified and parcel settings deny access to non age verified avatars - - - - Parcel overlay type. This is used primarily for highlighting and - coloring which is why it is a single integer instead of a set of - flags - - These values seem to be poorly thought out. The first three - bits represent a single value, not flags. For example Auction (0x05) is - not a combination of OwnedByOther (0x01) and ForSale(0x04). However, - the BorderWest and BorderSouth values are bit flags that get attached - to the value stored in the first three bits. Bits four, five, and six - are unused - - - Public land - - - Land is owned by another avatar - - - Land is owned by a group - - - Land is owned by the current avatar - - - Land is for sale - - - Land is being auctioned - - - To the west of this area is a parcel border - - - To the south of this area is a parcel border - - - - Various parcel properties - - - - No flags set - - - Allow avatars to fly (a client-side only restriction) - - - Allow foreign scripts to run - - - This parcel is for sale - - - Allow avatars to create a landmark on this parcel - - - Allows all avatars to edit the terrain on this parcel - - - Avatars have health and can take damage on this parcel. - If set, avatars can be killed and sent home here - - - Foreign avatars can create objects here - - - All objects on this parcel can be purchased - - - Access is restricted to a group - - - Access is restricted to a whitelist - - - Ban blacklist is enabled - - - Unknown - - - List this parcel in the search directory - - - Allow personally owned parcels to be deeded to group - - - If Deeded, owner contributes required tier to group parcel is deeded to - - - Restrict sounds originating on this parcel to the - parcel boundaries - - - Objects on this parcel are sold when the land is - purchsaed - - - Allow this parcel to be published on the web - - - The information for this parcel is mature content - - - The media URL is an HTML page - - - The media URL is a raw HTML string - - - Restrict foreign object pushes - - - Ban all non identified/transacted avatars - - - Allow group-owned scripts to run - - - Allow object creation by group members or group - objects - - - Allow all objects to enter this parcel - - - Only allow group and owner objects to enter this parcel - - - Voice Enabled on this parcel - - - Use Estate Voice channel for Voice on this parcel - - - Deny Age Unverified Users - - - - Parcel ownership status - - - - Placeholder - - - Parcel is leased (owned) by an avatar or group - - - Parcel is in process of being leased (purchased) by an avatar or group - - - Parcel has been abandoned back to Governor Linden - - - - Category parcel is listed in under search - - - - No assigned category - - - Linden Infohub or public area - - - Adult themed area - - - Arts and Culture - - - Business - - - Educational - - - Gaming - - - Hangout or Club - - - Newcomer friendly - - - Parks and Nature - - - Residential - - - Shopping - - - Not Used? - - - Other - - - Not an actual category, only used for queries - - - - Type of teleport landing for a parcel - - - - Unset, simulator default - - - Specific landing point set for this parcel - - - No landing point set, direct teleports enabled for - this parcel - - - - Parcel Media Command used in ParcelMediaCommandMessage - - - - Stop the media stream and go back to the first frame - - - Pause the media stream (stop playing but stay on current frame) - - - Start the current media stream playing and stop when the end is reached - - - Start the current media stream playing, - loop to the beginning when the end is reached and continue to play - - - Specifies the texture to replace with video - If passing the key of a texture, it must be explicitly typecast as a key, - not just passed within double quotes. - - - Specifies the movie URL (254 characters max) - - - Specifies the time index at which to begin playing - - - Specifies a single agent to apply the media command to - - - Unloads the stream. While the stop command sets the texture to the first frame of the movie, - unload resets it to the real texture that the movie was replacing. - - - Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties - (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. - - - Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). - Use "text/html" for HTML. - - - Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). - This might still not be working - - - Sets a description for the media being displayed (1.19.1 RC0 and later only). - - - - Some information about a parcel of land returned from a DirectoryManager search - - - - Global Key of record - - - Parcel Owners - - - Name field of parcel, limited to 128 characters - - - Description field of parcel, limited to 256 characters - - - Total Square meters of parcel - - - Total area billable as Tier, for group owned land this will be 10% less than ActualArea - - - True of parcel is in Mature simulator - - - Grid global X position of parcel - - - Grid global Y position of parcel - - - Grid global Z position of parcel (not used) - - - Name of simulator parcel is located in - - - Texture of parcels display picture - - - Float representing calculated traffic based on time spent on parcel by avatars - - - Sale price of parcel (not used) - - - Auction ID of parcel - - - - Parcel Media Information - - - - A byte, if 0x1 viewer should auto scale media to fit object - - - A boolean, if true the viewer should loop the media - - - The Asset UUID of the Texture which when applied to a - primitive will display the media - - - A URL which points to any Quicktime supported media type - - - A description of the media - - - An Integer which represents the height of the media - - - An integer which represents the width of the media - - - A string which contains the mime type of the media - - - - Parcel of land, a portion of virtual real estate in a simulator - - - - The total number of contiguous 4x4 meter blocks your agent owns within this parcel - - - The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own - - - Deprecated, Value appears to always be 0 - - - Simulator-local ID of this parcel - - - UUID of the owner of this parcel - - - Whether the land is deeded to a group or not - - - - - - Date land was claimed - - - Appears to always be zero - - - This field is no longer used - - - Minimum corner of the axis-aligned bounding box for this - parcel - - - Maximum corner of the axis-aligned bounding box for this - parcel - - - Bitmap describing land layout in 4x4m squares across the - entire region - - - Total parcel land area - - - - - - Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used - - - Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel - owned by the agent or group that owns this parcel - - - Maximum number of primitives this parcel supports - - - Total number of primitives on this parcel - - - For group-owned parcels this indicates the total number of prims deeded to the group, - for parcels owned by an individual this inicates the number of prims owned by the individual - - - Total number of primitives owned by the parcel group on - this parcel, or for parcels owned by an individual with a group set the - total number of prims set to that group. - - - Total number of prims owned by other avatars that are not set to group, or not the parcel owner - - - A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect - the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed - - - Autoreturn value in minutes for others' objects - - - - - - Sale price of the parcel, only useful if ForSale is set - The SalePrice will remain the same after an ownership - transfer (sale), so it can be used to see the purchase price after - a sale if the new owner has not changed it - - - Parcel Name - - - Parcel Description - - - URL For Music Stream - - - - - - Price for a temporary pass - - - How long is pass valid for - - - - - - Key of authorized buyer - - - Key of parcel snapshot - - - The landing point location - - - The landing point LookAt - - - The type of landing enforced from the enum - - - - - - - - - - - - Access list of who is whitelisted on this - parcel - - - Access list of who is blacklisted on this - parcel - - - TRUE of region denies access to age unverified users - - - true to obscure (hide) media url - - - true to obscure (hide) music url - - - A struct containing media details - - - - Displays a parcel object in string format - - string containing key=value pairs of a parcel object - - - - Defalt constructor - - Local ID of this parcel - - - - Update the simulator with any local changes to this Parcel object - - Simulator to send updates to - Whether we want the simulator to confirm - the update with a reply packet or not - - - - Set Autoreturn time - - Simulator to send the update to - - - - Parcel (subdivided simulator lots) subsystem - - - - The event subscribers. null if no subcribers - - - Raises the ParcelDwellReply event - A ParcelDwellReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelInfoReply event - A ParcelInfoReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelProperties event - A ParcelPropertiesEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelAccessListReply event - A ParcelAccessListReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelObjectOwnersReply event - A ParcelObjectOwnersReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the SimParcelsDownloaded event - A SimParcelsDownloadedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ForceSelectObjectsReply event - A ForceSelectObjectsReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelMediaUpdateReply event - A ParcelMediaUpdateReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelMediaCommand event - A ParcelMediaCommandEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - - Default constructor - - A reference to the GridClient object - - - - Request basic information for a single parcel - - Simulator-local ID of the parcel - - - - Request properties of a single parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - An arbitrary integer that will be returned - with the ParcelProperties reply, useful for distinguishing between - multiple simultaneous requests - - - - Request the access list for a single parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - An arbitrary integer that will be returned - with the ParcelAccessList reply, useful for distinguishing between - multiple simultaneous requests - - - - - Request properties of parcels using a bounding box selection - - Simulator containing the parcel - Northern boundary of the parcel selection - Eastern boundary of the parcel selection - Southern boundary of the parcel selection - Western boundary of the parcel selection - An arbitrary integer that will be returned - with the ParcelProperties reply, useful for distinguishing between - different types of parcel property requests - A boolean that is returned with the - ParcelProperties reply, useful for snapping focus to a single - parcel - - - - Request all simulator parcel properties (used for populating the Simulator.Parcels - dictionary) - - Simulator to request parcels from (must be connected) - - - - Request all simulator parcel properties (used for populating the Simulator.Parcels - dictionary) - - Simulator to request parcels from (must be connected) - If TRUE, will force a full refresh - Number of milliseconds to pause in between each request - - - - Request the dwell value for a parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - - - - Send a request to Purchase a parcel of land - - The Simulator the parcel is located in - The parcels region specific local ID - true if this parcel is being purchased by a group - The groups - true to remove tier contribution if purchase is successful - The parcels size - The purchase price of the parcel - - - - - Reclaim a parcel of land - - The simulator the parcel is in - The parcels region specific local ID - - - - Deed a parcel to a group - - The simulator the parcel is in - The parcels region specific local ID - The groups - - - - Request prim owners of a parcel of land. - - Simulator parcel is in - The parcels region specific local ID - - - - Return objects from a parcel - - Simulator parcel is in - The parcels region specific local ID - the type of objects to return, - A list containing object owners s to return - - - - Subdivide (split) a parcel - - - - - - - - - - Join two parcels of land creating a single parcel - - - - - - - - - - Get a parcels LocalID - - Simulator parcel is in - Vector3 position in simulator (Z not used) - 0 on failure, or parcel LocalID on success. - A call to Parcels.RequestAllSimParcels is required to populate map and - dictionary. - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - How many meters + or - to lower, 1 = 1 meter - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - How many meters + or - to lower, 1 = 1 meter - Height at which the terraform operation is acting at - - - - Sends a request to the simulator to return a list of objects owned by specific owners - - Simulator local ID of parcel - Owners, Others, Etc - List containing keys of avatars objects to select; - if List is null will return Objects of type selectType - Response data is returned in the event - - - - Eject and optionally ban a user from a parcel - - target key of avatar to eject - true to also ban target - - - - Freeze or unfreeze an avatar over your land - - target key to freeze - true to freeze, false to unfreeze - - - - Abandon a parcel of land - - Simulator parcel is in - Simulator local ID of parcel - - - - Requests the UUID of the parcel in a remote region at a specified location - - Location of the parcel in the remote region - Remote region handle - Remote region UUID - If successful UUID of the remote parcel, UUID.Zero otherwise - - - - Retrieves information on resources used by the parcel - - UUID of the parcel - Should per object resource usage be requested - Callback invoked when the request is complete - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a Parcel Update request - - - Raised when the parcel your agent is located sends a ParcelMediaCommand - - - - Parcel Accesslist - - - - Agents - - - - - - Flags for specific entry in white/black lists - - - - Owners of primitives on parcel - - - - Prim Owners - - - True of owner is group - - - Total count of prims owned by OwnerID - - - true of OwnerID is currently online and is not a group - - - The date of the most recent prim left by OwnerID - - - - Called once parcel resource usage information has been collected - - Indicates if operation was successfull - Parcel resource usage information - - - Contains a parcels dwell data returned from the simulator in response to an - - - - Construct a new instance of the ParcelDwellReplyEventArgs class - - The global ID of the parcel - The simulator specific ID of the parcel - The calculated dwell for the parcel - - - Get the global ID of the parcel - - - Get the simulator specific ID of the parcel - - - Get the calculated dwell - - - Contains basic parcel information data returned from the - simulator in response to an request - - - - Construct a new instance of the ParcelInfoReplyEventArgs class - - The object containing basic parcel info - - - Get the object containing basic parcel info - - - Contains basic parcel information data returned from the simulator in response to an request - - - - Construct a new instance of the ParcelPropertiesEventArgs class - - The object containing the details - The object containing the details - The result of the request - The number of primitieves your agent is - currently selecting and or sitting on in this parcel - The user assigned ID used to correlate a request with - these results - TODO: - - - Get the simulator the parcel is located in - - - Get the object containing the details - If Result is NoData, this object will not contain valid data - - - Get the result of the request - - - Get the number of primitieves your agent is - currently selecting and or sitting on in this parcel - - - Get the user assigned ID used to correlate a request with - these results - - - TODO: - - - Contains blacklist and whitelist data returned from the simulator in response to an request - - - - Construct a new instance of the ParcelAccessListReplyEventArgs class - - The simulator the parcel is located in - The user assigned ID used to correlate a request with - these results - The simulator specific ID of the parcel - TODO: - The list containing the white/blacklisted agents for the parcel - - - Get the simulator the parcel is located in - - - Get the user assigned ID used to correlate a request with - these results - - - Get the simulator specific ID of the parcel - - - TODO: - - - Get the list containing the white/blacklisted agents for the parcel - - - Contains blacklist and whitelist data returned from the - simulator in response to an request - - - - Construct a new instance of the ParcelObjectOwnersReplyEventArgs class - - The simulator the parcel is located in - The list containing prim ownership counts - - - Get the simulator the parcel is located in - - - Get the list containing prim ownership counts - - - Contains the data returned when all parcel data has been retrieved from a simulator - - - - Construct a new instance of the SimParcelsDownloadedEventArgs class - - The simulator the parcel data was retrieved from - The dictionary containing the parcel data - The multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - - - Get the simulator the parcel data was retrieved from - - - A dictionary containing the parcel data where the key correlates to the ParcelMap entry - - - Get the multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - - - Contains the data returned when a request - - - - Construct a new instance of the ForceSelectObjectsReplyEventArgs class - - The simulator the parcel data was retrieved from - The list of primitive IDs - true if the list is clean and contains the information - only for a given request - - - Get the simulator the parcel data was retrieved from - - - Get the list of primitive IDs - - - true if the list is clean and contains the information - only for a given request - - - Contains data when the media data for a parcel the avatar is on changes - - - - Construct a new instance of the ParcelMediaUpdateReplyEventArgs class - - the simulator the parcel media data was updated in - The updated media information - - - Get the simulator the parcel media data was updated in - - - Get the updated media information - - - Contains the media command for a parcel the agent is currently on - - - - Construct a new instance of the ParcelMediaCommandEventArgs class - - The simulator the parcel media command was issued in - - - The media command that was sent - - - - Get the simulator the parcel media command was issued in - - - - - - - - - Get the media command that was sent - - - - - - Size of the byte array used to store raw packet data - - - Raw packet data buffer - - - Length of the data to transmit - - - EndPoint of the remote host - - - - Create an allocated UDP packet buffer for receiving a packet - - - - - Create an allocated UDP packet buffer for sending a packet - - EndPoint of the remote host - - - - Create an allocated UDP packet buffer for sending a packet - - EndPoint of the remote host - Size of the buffer to allocate for packet data - - - - Object pool for packet buffers. This is used to allocate memory for all - incoming and outgoing packets, and zerocoding buffers for those packets - - - - - Creates a new instance of the ObjectPoolBase class. Initialize MUST be called - after using this constructor. - - - - - Creates a new instance of the ObjectPool Base class. - - The object pool is composed of segments, which - are allocated whenever the size of the pool is exceeded. The number of items - in a segment should be large enough that allocating a new segmeng is a rare - thing. For example, on a server that will have 10k people logged in at once, - the receive buffer object pool should have segment sizes of at least 1000 - byte arrays per segment. - - The minimun number of segments that may exist. - Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. - The frequency which segments are checked to see if they're eligible for cleanup. - - - - Forces the segment cleanup algorithm to be run. This method is intended - primarly for use from the Unit Test libraries. - - - - - Responsible for allocate 1 instance of an object that will be stored in a segment. - - An instance of whatever objec the pool is pooling. - - - - Checks in an instance of T owned by the object pool. This method is only intended to be called - by the WrappedObject class. - - The segment from which the instance is checked out. - The instance of T to check back into the segment. - - - - Checks an instance of T from the pool. If the pool is not sufficient to - allow the checkout, a new segment is created. - - A WrappedObject around the instance of T. To check - the instance back into the segment, be sureto dispose the WrappedObject - when finished. - - - - The total number of segments created. Intended to be used by the Unit Tests. - - - - - The number of items that are in a segment. Items in a segment - are all allocated at the same time, and are hopefully close to - each other in the managed heap. - - - - - The minimum number of segments. When segments are reclaimed, - this number of segments will always be left alone. These - segments are allocated at startup. - - - - - The age a segment must be before it's eligible for cleanup. - This is used to prevent thrash, and typical values are in - the 5 minute range. - - - - - The frequence which the cleanup thread runs. This is typically - expected to be in the 5 minute range. - - - - - Initialize the object pool in client mode - - Server to connect to - - - - - - Initialize the object pool in server mode - - - - - - - Returns a packet buffer with EndPoint set if the buffer is in - client mode, or with EndPoint set to null in server mode - - Initialized UDPPacketBuffer object - - - - Default constructor - - - - - Check a packet buffer out of the pool - - A packet buffer object - - - - - - Looking direction, must be a normalized vector - Up direction, must be a normalized vector - - - - Align the coordinate frame X and Y axis with a given rotation - around the Z axis in radians - - Absolute rotation around the Z axis in - radians - - - Origin position of this coordinate frame - - - X axis of this coordinate frame, or Forward/At in grid terms - - - Y axis of this coordinate frame, or Left in grid terms - - - Z axis of this coordinate frame, or Up in grid terms - - - - Manager class for our own avatar - - - - The event subscribers. null if no subcribers - - - Raises the ChatFromSimulator event - A ChatEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ScriptDialog event - A SctriptDialogEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ScriptQuestion event - A ScriptQuestionEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the LoadURL event - A LoadUrlEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the MoneyBalance event - A BalanceEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the MoneyBalanceReply event - A MoneyBalanceReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the IM event - A InstantMessageEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the TeleportProgress event - A TeleportEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the AgentDataReply event - A AgentDataReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the AnimationsChanged event - A AnimationsChangedEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the MeanCollision event - A MeanCollisionEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the RegionCrossed event - A RegionCrossedEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupChatJoined event - A GroupChatJoinedEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the AlertMessage event - A AlertMessageEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ScriptControlChange event - A ScriptControlEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the CameraConstraint event - A CameraConstraintEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ScriptSensorReply event - A ScriptSensorReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the AvatarSitResponse event - A AvatarSitResponseEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ChatSessionMemberAdded event - A ChatSessionMemberAddedEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ChatSessionMemberLeft event - A ChatSessionMemberLeftEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - Reference to the GridClient instance - - - Used for movement and camera tracking - - - Currently playing animations for the agent. Can be used to - check the current movement status such as walking, hovering, aiming, - etc. by checking against system animations found in the Animations class - - - Dictionary containing current Group Chat sessions and members - - - - Constructor, setup callbacks for packets related to our avatar - - A reference to the Class - - - - Send a text message from the Agent to the Simulator - - A containing the message - The channel to send the message on, 0 is the public channel. Channels above 0 - can be used however only scripts listening on the specified channel will see the message - Denotes the type of message being sent, shout, whisper, etc. - - - - Request any instant messages sent while the client was offline to be resent. - - - - - Send an Instant Message to another Avatar - - The recipients - A containing the message to send - - - - Send an Instant Message to an existing group chat or conference chat - - The recipients - A containing the message to send - IM session ID (to differentiate between IM windows) - - - - Send an Instant Message - - The name this IM will show up as being from - Key of Avatar - Text message being sent - IM session ID (to differentiate between IM windows) - IDs of sessions for a conference - - - - Send an Instant Message - - The name this IM will show up as being from - Key of Avatar - Text message being sent - IM session ID (to differentiate between IM windows) - Type of instant message to send - Whether to IM offline avatars as well - Senders Position - RegionID Sender is In - Packed binary data that is specific to - the dialog type - - - - Send an Instant Message to a group - - of the group to send message to - Text Message being sent. - - - - Send an Instant Message to a group the agent is a member of - - The name this IM will show up as being from - of the group to send message to - Text message being sent - - - - Send a request to join a group chat session - - of Group to leave - - - - Exit a group chat session. This will stop further Group chat messages - from being sent until session is rejoined. - - of Group chat session to leave - - - - Reply to script dialog questions. - - Channel initial request came on - Index of button you're "clicking" - Label of button you're "clicking" - of Object that sent the dialog request - - - - - Accept invite for to a chatterbox session - - of session to accept invite to - - - - Start a friends conference - - List of UUIDs to start a conference with - the temportary session ID returned in the callback> - - - - Start a particle stream between an agent and an object - - Key of the source agent - Key of the target object - - The type from the enum - A unique for this effect - - - - Start a particle stream between an agent and an object - - Key of the source agent - Key of the target object - A representing the beams offset from the source - A which sets the avatars lookat animation - of the Effect - - - - Create a particle beam between an avatar and an primitive - - The ID of source avatar - The ID of the target primitive - global offset - A object containing the combined red, green, blue and alpha - color values of particle beam - a float representing the duration the parcicle beam will last - A Unique ID for the beam - - - - - Create a particle swirl around a target position using a packet - - global offset - A object containing the combined red, green, blue and alpha - color values of particle beam - a float representing the duration the parcicle beam will last - A Unique ID for the beam - - - - Sends a request to sit on the specified object - - of the object to sit on - Sit at offset - - - - Follows a call to to actually sit on the object - - - - Stands up from sitting on a prim or the ground - true of AgentUpdate was sent - - - - Does a "ground sit" at the avatar's current position - - - - - Starts or stops flying - - True to start flying, false to stop flying - - - - Starts or stops crouching - - True to start crouching, false to stop crouching - - - - Starts a jump (begin holding the jump key) - - - - - Use the autopilot sim function to move the avatar to a new - position. Uses double precision to get precise movements - - The z value is currently not handled properly by the simulator - Global X coordinate to move to - Global Y coordinate to move to - Z coordinate to move to - - - - Use the autopilot sim function to move the avatar to a new position - - The z value is currently not handled properly by the simulator - Integer value for the global X coordinate to move to - Integer value for the global Y coordinate to move to - Floating-point value for the Z coordinate to move to - - - - Use the autopilot sim function to move the avatar to a new position - - The z value is currently not handled properly by the simulator - Integer value for the local X coordinate to move to - Integer value for the local Y coordinate to move to - Floating-point value for the Z coordinate to move to - - - Macro to cancel autopilot sim function - Not certain if this is how it is really done - true if control flags were set and AgentUpdate was sent to the simulator - - - - Grabs an object - - an unsigned integer of the objects ID within the simulator - - - - - Overload: Grab a simulated object - - an unsigned integer of the objects ID within the simulator - - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - - - - Drag an object - - of the object to drag - Drag target in region coordinates - - - - Overload: Drag an object - - of the object to drag - Drag target in region coordinates - - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - - - - Release a grabbed object - - The Objects Simulator Local ID - - - - - - - Release a grabbed object - - The Objects Simulator Local ID - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - - - - Touches an object - - an unsigned integer of the objects ID within the simulator - - - - - Request the current L$ balance - - - - - Give Money to destination Avatar - - UUID of the Target Avatar - Amount in L$ - - - - Give Money to destination Avatar - - UUID of the Target Avatar - Amount in L$ - Description that will show up in the - recipients transaction history - - - - Give L$ to an object - - object to give money to - amount of L$ to give - name of object - - - - Give L$ to a group - - group to give money to - amount of L$ to give - - - - Give L$ to a group - - group to give money to - amount of L$ to give - description of transaction - - - - Pay texture/animation upload fee - - - - - Pay texture/animation upload fee - - description of the transaction - - - - Give Money to destination Object or Avatar - - UUID of the Target Object/Avatar - Amount in L$ - Reason (Optional normally) - The type of transaction - Transaction flags, mostly for identifying group - transactions - - - - Plays a gesture - - Asset of the gesture - - - - Mark gesture active - - Inventory of the gesture - Asset of the gesture - - - - Mark gesture inactive - - Inventory of the gesture - - - - Send an AgentAnimation packet that toggles a single animation on - - The of the animation to start playing - Whether to ensure delivery of this packet or not - - - - Send an AgentAnimation packet that toggles a single animation off - - The of a - currently playing animation to stop playing - Whether to ensure delivery of this packet or not - - - - Send an AgentAnimation packet that will toggle animations on or off - - A list of animation s, and whether to - turn that animation on or off - Whether to ensure delivery of this packet or not - - - - Teleports agent to their stored home location - - true on successful teleport to home location - - - - Teleport agent to a landmark - - of the landmark to teleport agent to - true on success, false on failure - - - - Attempt to look up a simulator name and teleport to the discovered - destination - - Region name to look up - Position to teleport to - True if the lookup and teleport were successful, otherwise - false - - - - Attempt to look up a simulator name and teleport to the discovered - destination - - Region name to look up - Position to teleport to - Target to look at - True if the lookup and teleport were successful, otherwise - false - - - - Teleport agent to another region - - handle of region to teleport agent to - position in destination sim to teleport to - true on success, false on failure - This call is blocking - - - - Teleport agent to another region - - handle of region to teleport agent to - position in destination sim to teleport to - direction in destination sim agent will look at - true on success, false on failure - This call is blocking - - - - Request teleport to a another simulator - - handle of region to teleport agent to - position in destination sim to teleport to - - - - Request teleport to a another simulator - - handle of region to teleport agent to - position in destination sim to teleport to - direction in destination sim agent will look at - - - - Teleport agent to a landmark - - of the landmark to teleport agent to - - - - Send a teleport lure to another avatar with default "Join me in ..." invitation message - - target avatars to lure - - - - Send a teleport lure to another avatar with custom invitation message - - target avatars to lure - custom message to send with invitation - - - - Respond to a teleport lure by either accepting it and initiating - the teleport, or denying it - - of the avatar sending the lure - IM session of the incoming lure request - true to accept the lure, false to decline it - - - - Update agent profile - - struct containing updated - profile information - - - - Update agents profile interests - - selection of interests from struct - - - - Set the height and the width of the client window. This is used - by the server to build a virtual camera frustum for our avatar - - New height of the viewer window - New width of the viewer window - - - - Request the list of muted objects and avatars for this agent - - - - - Sets home location to agents current position - - will fire an AlertMessage () with - success or failure message - - - - Move an agent in to a simulator. This packet is the last packet - needed to complete the transition in to a new simulator - - Object - - - - Reply to script permissions request - - Object - of the itemID requesting permissions - of the taskID requesting permissions - list of permissions to allow - - - - Respond to a group invitation by either accepting or denying it - - UUID of the group (sent in the AgentID field of the invite message) - IM Session ID from the group invitation message - Accept the group invitation or deny it - - - - Requests script detection of objects and avatars - - name of the object/avatar to search for - UUID of the object or avatar to search for - Type of search from ScriptSensorTypeFlags - range of scan (96 max?) - the arc in radians to search within - an user generated ID to correlate replies with - Simulator to perform search in - - - - Create or update profile pick - - UUID of the pick to update, or random UUID to create a new pick - Is this a top pick? (typically false) - UUID of the parcel (UUID.Zero for the current parcel) - Name of the pick - Global position of the pick landmark - UUID of the image displayed with the pick - Long description of the pick - - - - Delete profile pick - - UUID of the pick to delete - - - - Create or update profile Classified - - UUID of the classified to update, or random UUID to create a new classified - Defines what catagory the classified is in - UUID of the image displayed with the classified - Price that the classified will cost to place for a week - Global position of the classified landmark - Name of the classified - Long description of the classified - if true, auto renew classified after expiration - - - - Create or update profile Classified - - UUID of the classified to update, or random UUID to create a new classified - Defines what catagory the classified is in - UUID of the image displayed with the classified - Price that the classified will cost to place for a week - Name of the classified - Long description of the classified - if true, auto renew classified after expiration - - - - Delete a classified ad - - The classified ads ID - - - - Fetches resource usage by agents attachmetns - - Called when the requested information is collected - - - - Take an incoming ImprovedInstantMessage packet, auto-parse, and if - OnInstantMessage is defined call that with the appropriate arguments - - The sender - The EventArgs object containing the packet data - - - - Take an incoming Chat packet, auto-parse, and if OnChat is defined call - that with the appropriate arguments. - - The sender - The EventArgs object containing the packet data - - - - Used for parsing llDialogs - - The sender - The EventArgs object containing the packet data - - - - Used for parsing llRequestPermissions dialogs - - The sender - The EventArgs object containing the packet data - - - - Handles Script Control changes when Script with permissions releases or takes a control - - The sender - The EventArgs object containing the packet data - - - - Used for parsing llLoadURL Dialogs - - The sender - The EventArgs object containing the packet data - - - - Update client's Position, LookAt and region handle from incoming packet - - The sender - The EventArgs object containing the packet data - This occurs when after an avatar moves into a new sim - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Process TeleportFailed message sent via EventQueue, informs agent its last teleport has failed and why. - - The Message Key - An IMessage object Deserialized from the recieved message event - The simulator originating the event message - - - - Process TeleportFinish from Event Queue and pass it onto our TeleportHandler - - The message system key for this event - IMessage object containing decoded data from OSD - The simulator originating the event message - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Crossed region handler for message that comes across the EventQueue. Sent to an agent - when the agent crosses a sim border into a new region. - - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - This packet is now being sent via the EventQueue - - - - Group Chat event handler - - The capability Key - IMessage object containing decoded data from OSD - - - - - Response from request to join a group chat - - - IMessage object containing decoded data from OSD - - - - - Someone joined or left group chat - - - IMessage object containing decoded data from OSD - - - - - Handle a group chat Invitation - - Caps Key - IMessage object containing decoded data from OSD - Originating Simulator - - - - Moderate a chat session - - the of the session to moderate, for group chats this will be the groups UUID - the of the avatar to moderate - Either "voice" to moderate users voice, or "text" to moderate users text session - true to moderate (silence user), false to allow avatar to speak - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when a scripted object or agent within range sends a public message - - - Raised when a scripted object sends a dialog box containing possible - options an agent can respond to - - - Raised when an object requests a change in the permissions an agent has permitted - - - Raised when a script requests an agent open the specified URL - - - Raised when an agents currency balance is updated - - - Raised when a transaction occurs involving currency such as a land purchase - - - Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from - private messaging to friendship offers. The Dialog field defines what type of message has arrived - - - Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times - for each teleport indicating the progress of the request - - - Raised when a simulator sends agent specific information for our avatar. - - - Raised when our agents animation playlist changes - - - Raised when an object or avatar forcefully collides with our agent - - - Raised when our agent crosses a region border into another region - - - Raised when our agent succeeds or fails to join a group chat session - - - Raised when a simulator sends an urgent message usually indication the recent failure of - another action we have attempted to take such as an attempt to enter a parcel where we are denied access - - - Raised when a script attempts to take or release specified controls for our agent - - - Raised when the simulator detects our agent is trying to view something - beyond its limits - - - Raised when a script sensor reply is received from a simulator - - - Raised in response to a request - - - Raised when an avatar enters a group chat session we are participating in - - - Raised when an agent exits a group chat session we are participating in - - - Your (client) avatars - "client", "agent", and "avatar" all represent the same thing - - - Temporary assigned to this session, used for - verifying our identity in packets - - - Shared secret that is never sent over the wire - - - Your (client) avatar ID, local to the current region/sim - - - Where the avatar started at login. Can be "last", "home" - or a login - - - The access level of this agent, usually M or PG - - - The CollisionPlane of Agent - - - An representing the velocity of our agent - - - An representing the acceleration of our agent - - - A which specifies the angular speed, and axis about which an Avatar is rotating. - - - Position avatar client will goto when login to 'home' or during - teleport request to 'home' region. - - - LookAt point saved/restored with HomePosition - - - Avatar First Name (i.e. Philip) - - - Avatar Last Name (i.e. Linden) - - - Avatar Full Name (i.e. Philip Linden) - - - Gets the health of the agent - - - Gets the current balance of the agent - - - Gets the local ID of the prim the agent is sitting on, - zero if the avatar is not currently sitting - - - Gets the of the agents active group. - - - Gets the Agents powers in the currently active group - - - Current status message for teleporting - - - Current position of the agent as a relative offset from - the simulator, or the parent object if we are sitting on something - - - Current rotation of the agent as a relative rotation from - the simulator, or the parent object if we are sitting on something - - - Current position of the agent in the simulator - - - - A representing the agents current rotation - - - - Returns the global grid position of the avatar - - - - Used to specify movement actions for your agent - - - - Empty flag - - - Move Forward (SL Keybinding: W/Up Arrow) - - - Move Backward (SL Keybinding: S/Down Arrow) - - - Move Left (SL Keybinding: Shift-(A/Left Arrow)) - - - Move Right (SL Keybinding: Shift-(D/Right Arrow)) - - - Not Flying: Jump/Flying: Move Up (SL Keybinding: E) - - - Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) - - - Unused - - - Unused - - - Unused - - - Unused - - - ORed with AGENT_CONTROL_AT_* if the keyboard is being used - - - ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used - - - ORed with AGENT_CONTROL_UP_* if the keyboard is being used - - - Fly - - - - - - Finish our current animation - - - Stand up from the ground or a prim seat - - - Sit on the ground at our current location - - - Whether mouselook is currently enabled - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - - - - - - - Set when the avatar is idled or set to away. Note that the away animation is - activated separately from setting this flag - - - - - - - - - - - - - - - - Agent movement and camera control - - Agent movement is controlled by setting specific - After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags - This is most easily accomplished by setting one or more of the AgentMovement properties - - Movement of an avatar is always based on a compass direction, for example AtPos will move the - agent from West to East or forward on the X Axis, AtNeg will of course move agent from - East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis - The Z axis is Up, finer grained control of movements can be done using the Nudge properties - - - - Agent camera controls - - - Currently only used for hiding your group title - - - Action state of the avatar, which can currently be - typing and editing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Timer for sending AgentUpdate packets - - - Default constructor - - - - Send an AgentUpdate with the camera set at the current agent - position and pointing towards the heading specified - - Camera rotation in radians - Whether to send the AgentUpdate reliable - or not - - - - Rotates the avatar body and camera toward a target position. - This will also anchor the camera position on the avatar - - Region coordinates to turn toward - - - - Send new AgentUpdate packet to update our current camera - position and rotation - - - - - Send new AgentUpdate packet to update our current camera - position and rotation - - Whether to require server acknowledgement - of this packet - - - - Send new AgentUpdate packet to update our current camera - position and rotation - - Whether to require server acknowledgement - of this packet - Simulator to send the update to - - - - Builds an AgentUpdate packet entirely from parameters. This - will not touch the state of Self.Movement or - Self.Movement.Camera in any way - - - - - - - - - - - - - - - Move agent positive along the X axis - - - Move agent negative along the X axis - - - Move agent positive along the Y axis - - - Move agent negative along the Y axis - - - Move agent positive along the Z axis - - - Move agent negative along the Z axis - - - - - - - - - - - - - - - - - - - - - - - - Causes simulator to make agent fly - - - Stop movement - - - Finish animation - - - Stand up from a sit - - - Tells simulator to sit agent on ground - - - Place agent into mouselook mode - - - Nudge agent positive along the X axis - - - Nudge agent negative along the X axis - - - Nudge agent positive along the Y axis - - - Nudge agent negative along the Y axis - - - Nudge agent positive along the Z axis - - - Nudge agent negative along the Z axis - - - - - - - - - Tell simulator to mark agent as away - - - - - - - - - - - - - - - - Returns "always run" value, or changes it by sending a SetAlwaysRunPacket - - - - The current value of the agent control flags - - - Gets or sets the interval in milliseconds at which - AgentUpdate packets are sent to the current simulator. Setting - this to a non-zero value will also enable the packet sending if - it was previously off, and setting it to zero will disable - - - Gets or sets whether AgentUpdate packets are sent to - the current simulator - - - Reset movement controls every time we send an update - - - - Camera controls for the agent, mostly a thin wrapper around - CoordinateFrame. This class is only responsible for state - tracking and math, it does not send any packets - - - - - - - The camera is a local frame of reference inside of - the larger grid space. This is where the math happens - - - - Default constructor - - - - - - - - - - - - - - - - - Called once attachment resource usage information has been collected - - Indicates if operation was successfull - Attachment resource usage information - Represents a single Voice Session to the Vivox service. @@ -11215,2755 +20450,219 @@ - - - Class for controlling various system settings. - - Some values are readonly because they affect things that - happen when the GridClient object is initialized, so changing them at - runtime won't do any good. Non-readonly values may affect things that - happen at login or dynamically - - - Main grid login server - - - Beta grid login server - - - - InventoryManager requests inventory information on login, - GridClient initializes an Inventory store for main inventory. - - - - - InventoryManager requests library information on login, - GridClient initializes an Inventory store for the library. - - - - Number of milliseconds between sending pings to each sim - - - Number of milliseconds between sending camera updates - - - Number of milliseconds between updating the current - positions of moving, non-accelerating and non-colliding objects - - - Millisecond interval between ticks, where all ACKs are - sent out and the age of unACKed packets is checked - - - The initial size of the packet inbox, where packets are - stored before processing - - - Maximum size of packet that we want to send over the wire - - - The maximum value of a packet sequence number before it - rolls over back to one - - - The maximum size of the sequence number archive, used to - check for resent and/or duplicate packets - - - The relative directory where external resources are kept - - - Login server to connect to - - - IP Address the client will bind to - - - Use XML-RPC Login or LLSD Login, default is XML-RPC Login - - - Number of milliseconds before an asset transfer will time - out - - - Number of milliseconds before a teleport attempt will time - out - - - Number of milliseconds before NetworkManager.Logout() will - time out - - - Number of milliseconds before a CAPS call will time out - Setting this too low will cause web requests time out and - possibly retry repeatedly - - - Number of milliseconds for xml-rpc to timeout - - - Milliseconds before a packet is assumed lost and resent - - - Milliseconds without receiving a packet before the - connection to a simulator is assumed lost - - - Milliseconds to wait for a simulator info request through - the grid interface - - - Maximum number of queued ACKs to be sent before SendAcks() - is forced - - - Network stats queue length (seconds) - - - Enable/disable storing terrain heightmaps in the - TerrainManager - - - Enable/disable sending periodic camera updates - - - Enable/disable automatically setting agent appearance at - login and after sim crossing - - - Enable/disable automatically setting the bandwidth throttle - after connecting to each simulator - The default throttle uses the equivalent of the maximum - bandwidth setting in the official client. If you do not set a - throttle your connection will by default be throttled well below - the minimum values and you may experience connection problems - - - Enable/disable the sending of pings to monitor lag and - packet loss - - - Should we connect to multiple sims? This will allow - viewing in to neighboring simulators and sim crossings - (Experimental) - - - If true, all object update packets will be decoded in to - native objects. If false, only updates for our own agent will be - decoded. Registering an event handler will force objects for that - type to always be decoded. If this is disabled the object tracking - will have missing or partial prim and avatar information - - - If true, when a cached object check is received from the - server the full object info will automatically be requested - - - Whether to establish connections to HTTP capabilities - servers for simulators - - - Whether to decode sim stats - - - The capabilities servers are currently designed to - periodically return a 502 error which signals for the client to - re-establish a connection. Set this to true to log those 502 errors - - - If true, any reference received for a folder or item - the library is not aware of will automatically be fetched - - - If true, and SEND_AGENT_UPDATES is true, - AgentUpdate packets will continuously be sent out to give the bot - smoother movement and autopiloting - - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectAvatars. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received - - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectPrimitives. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received - - - If true, position and velocity will periodically be - interpolated (extrapolated, technically) for objects and - avatars that are being tracked by the library. This is - necessary to increase the accuracy of speed and position - estimates for simulated objects - - - - If true, utilization statistics will be tracked. There is a minor penalty - in CPU time for enabling this option. - - - - If true, parcel details will be stored in the - Simulator.Parcels dictionary as they are received - - - - If true, an incoming parcel properties reply will automatically send - a request for the parcel access list - - - - - if true, an incoming parcel properties reply will automatically send - a request for the traffic count. - - - - - If true, images, and other assets downloaded from the server - will be cached in a local directory - - - - Path to store cached texture data - - - Maximum size cached files are allowed to take on disk (bytes) - - - Default color used for viewer particle effects - - - Maximum number of times to resend a failed packet - - - Throttle outgoing packet rate - - - UUID of a texture used by some viewers to indentify type of client used - - - - Download textures using GetTexture capability when available - - - - The maximum number of concurrent texture downloads allowed - Increasing this number will not necessarily increase texture retrieval times due to - simulator throttles - - - - The Refresh timer inteval is used to set the delay between checks for stalled texture downloads - - This is a static variable which applies to all instances - - - - Textures taking longer than this value will be flagged as timed out and removed from the pipeline - - - - - Get or set the minimum log level to output to the console by default - - If the library is not compiled with DEBUG defined and this level is set to DEBUG - You will get no output on the console. This behavior can be overriden by creating - a logger configuration file for log4net - - - - Attach avatar names to log messages - - - Log packet retransmission info - - - Constructor - Reference to a GridClient object - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Cost of uploading an asset - Read-only since this value is dynamically fetched at login - - - - Static pre-defined animations available to all agents - - - - Agent with afraid expression on face - - - Agent aiming a bazooka (right handed) - - - Agent aiming a bow (left handed) - - - Agent aiming a hand gun (right handed) - - - Agent aiming a rifle (right handed) - - - Agent with angry expression on face - - - Agent hunched over (away) - - - Agent doing a backflip - - - Agent laughing while holding belly - - - Agent blowing a kiss - - - Agent with bored expression on face - - - Agent bowing to audience - - - Agent brushing himself/herself off - - - Agent in busy mode - - - Agent clapping hands - - - Agent doing a curtsey bow - - - Agent crouching - - - Agent crouching while walking - - - Agent crying - - - Agent unanimated with arms out (e.g. setting appearance) - - - Agent re-animated after set appearance finished - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent on ground unanimated - - - Agent boozing it up - - - Agent with embarassed expression on face - - - Agent with afraid expression on face - - - Agent with angry expression on face - - - Agent with bored expression on face - - - Agent crying - - - Agent showing disdain (dislike) for something - - - Agent with embarassed expression on face - - - Agent with frowning expression on face - - - Agent with kissy face - - - Agent expressing laughgter - - - Agent with open mouth - - - Agent with repulsed expression on face - - - Agent expressing sadness - - - Agent shrugging shoulders - - - Agent with a smile - - - Agent expressing surprise - - - Agent sticking tongue out - - - Agent with big toothy smile - - - Agent winking - - - Agent expressing worry - - - Agent falling down - - - Agent walking (feminine version) - - - Agent wagging finger (disapproval) - - - I'm not sure I want to know - - - Agent in superman position - - - Agent in superman position - - - Agent greeting another - - - Agent holding bazooka (right handed) - - - Agent holding a bow (left handed) - - - Agent holding a handgun (right handed) - - - Agent holding a rifle (right handed) - - - Agent throwing an object (right handed) - - - Agent in static hover - - - Agent hovering downward - - - Agent hovering upward - - - Agent being impatient - - - Agent jumping - - - Agent jumping with fervor - - - Agent point to lips then rear end - - - Agent landing from jump, finished flight, etc - - - Agent laughing - - - Agent landing from jump, finished flight, etc - - - Agent sitting on a motorcycle - - - - - - Agent moving head side to side - - - Agent moving head side to side with unhappy expression - - - Agent taunting another - - - - - - Agent giving peace sign - - - Agent pointing at self - - - Agent pointing at another - - - Agent preparing for jump (bending knees) - - - Agent punching with left hand - - - Agent punching with right hand - - - Agent acting repulsed - - - Agent trying to be Chuck Norris - - - Rocks, Paper, Scissors 1, 2, 3 - - - Agent with hand flat over other hand - - - Agent with fist over other hand - - - Agent with two fingers spread over other hand - - - Agent running - - - Agent appearing sad - - - Agent saluting - - - Agent shooting bow (left handed) - - - Agent cupping mouth as if shouting - - - Agent shrugging shoulders - - - Agent in sit position - - - Agent in sit position (feminine) - - - Agent in sit position (generic) - - - Agent sitting on ground - - - Agent sitting on ground - - - - - - Agent sleeping on side - - - Agent smoking - - - Agent inhaling smoke - - - - - - Agent taking a picture - - - Agent standing - - - Agent standing up - - - Agent standing - - - Agent standing - - - Agent standing - - - Agent standing - - - Agent stretching - - - Agent in stride (fast walk) - - - Agent surfing - - - Agent acting surprised - - - Agent striking with a sword - - - Agent talking (lips moving) - - - Agent throwing a tantrum - - - Agent throwing an object (right handed) - - - Agent trying on a shirt - - - Agent turning to the left - - - Agent turning to the right - - - Agent typing - - - Agent walking - - - Agent whispering - - - Agent whispering with fingers in mouth - - - Agent winking - - - Agent winking - - - Agent worried - - - Agent nodding yes - - - Agent nodding yes with happy face - - - Agent floating with legs and arms crossed - - - - A dictionary containing all pre-defined animations - - A dictionary containing the pre-defined animations, - where the key is the animations ID, and the value is a string - containing a name to identify the purpose of the animation - - - - Sent to the client to indicate a teleport request has completed - - - - The of the agent - - - - - - The simulators handle the agent teleported to - - - A Uri which contains a list of Capabilities the simulator supports - - - Indicates the level of access required - to access the simulator, or the content rating, or the simulators - map status - - - The IP Address of the simulator - - - The UDP Port the simulator will listen for UDP traffic on - - - Status flags indicating the state of the Agent upon arrival, Flying, etc. - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent to the client which indicates a teleport request has failed - and contains some information on why it failed - - - - - - - A string key of the reason the teleport failed e.g. CouldntTPCloser - Which could be used to look up a value in a dictionary or enum - - - The of the Agent - - - A string human readable message containing the reason - An example: Could not teleport closer to destination - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data + + The event subscribers. null if no subcribers - - - Deserialize the message - - An containing the data - - - - Contains a list of prim owner information for a specific parcel in a simulator - - - A Simulator will always return at least 1 entry - If agent does not have proper permission the OwnerID will be UUID.Zero - If agent does not have proper permission OR there are no primitives on parcel - the DataBlocksExtended map will not be sent from the simulator - - - - An Array of objects - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Prim ownership information for a specified owner on a single parcel - - - - The of the prim owner, - UUID.Zero if agent has no permission to view prim owner information - - - The total number of prims - - - True if the OwnerID is a - - - True if the owner is online - This is no longer used by the LL Simulators - - - The date the most recent prim was rezzed - - - - The details of a single parcel in a region, also contains some regionwide globals - - - - Simulator-local ID of this parcel - - - Maximum corner of the axis-aligned bounding box for this - parcel - - - Minimum corner of the axis-aligned bounding box for this - parcel - - - Total parcel land area - - - - - - Key of authorized buyer - - - Bitmap describing land layout in 4x4m squares across the - entire region - - - - - - Date land was claimed - - - Appears to always be zero - - - Parcel Description - - - - - - - - - Total number of primitives owned by the parcel group on - this parcel - - - Whether the land is deeded to a group or not - - - - - - Maximum number of primitives this parcel supports - - - The Asset UUID of the Texture which when applied to a - primitive will display the media - - - A URL which points to any Quicktime supported media type - - - A byte, if 0x1 viewer should auto scale media to fit object - - - URL For Music Stream - - - Parcel Name - - - Autoreturn value in minutes for others' objects - - - - - - Total number of other primitives on this parcel - - - UUID of the owner of this parcel - - - Total number of primitives owned by the parcel owner on - this parcel - - - - - - How long is pass valid for - - - Price for a temporary pass - - - - - - - - - - - - - - - True if the region denies access to age unverified users - - - - - - This field is no longer used - - - The result of a request for parcel properties - - - Sale price of the parcel, only useful if ForSale is set - The SalePrice will remain the same after an ownership - transfer (sale), so it can be used to see the purchase price after - a sale if the new owner has not changed it - - - - Number of primitives your avatar is currently - selecting and sitting on in this parcel - - - - - - - - A number which increments by 1, starting at 0 for each ParcelProperties request. - Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. - a Negative number indicates the action in has occurred. - - - - Maximum primitives across the entire simulator - - - Total primitives across the entire simulator - - - - - - Key of parcel snapshot - - - Parcel ownership status - - - Total number of primitives on this parcel - - - - - - - - - A description of the media - - - An Integer which represents the height of the media - - - An integer which represents the width of the media - - - A boolean, if true the viewer should loop the media - - - A string which contains the mime type of the media - - - true to obscure (hide) media url - - - true to obscure (hide) music url - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - A message sent from the viewer to the simulator to updated a specific parcels settings - - - The of the agent authorized to purchase this - parcel of land or a NULL if the sale is authorized to anyone - - - true to enable auto scaling of the parcel media - - - The category of this parcel used when search is enabled to restrict - search results - - - A string containing the description to set - - - The of the which allows for additional - powers and restrictions. - - - The which specifies how avatars which teleport - to this parcel are handled - - - The LocalID of the parcel to update settings on - - - A string containing the description of the media which can be played - to visitors - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - Base class used for the RemoteParcelRequest message - - - - A message sent from the viewer to the simulator to request information - on a remote parcel - - - - Local sim position of the parcel we are looking up - - - Region handle of the parcel we are looking up + + Raises the LandPatchReceived event + A LandPatchReceivedEventArgs object containing the + data returned from the simulator - - Region of the parcel we are looking up + + Thread sync lock object - + - Serialize the object + Default constructor - An containing the objects data + - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer in response to a - which will contain parcel information - - - - The grid-wide unique parcel ID - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing a request for a remote parcel from a viewer, or a response - from the simulator to that request - - - - The request or response details block - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to an agent which contains - the groups the agent is in - - - - The Agent receiving the message - - - An array containing information - for each the agent is a member of - - - An array containing information - for each the agent is a member of - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Group Details specific to the agent - - - true of the agent accepts group notices - - - The agents tier contribution to the group - - - The Groups - - - The of the groups insignia - - - The name of the group - - - The aggregate permissions the agent has in the group for all roles the agent - is assigned - - - An optional block containing additional agent specific information - - - true of the agent allows this group to be - listed in their profile - - - - A message sent from the viewer to the simulator which - specifies the language and permissions for others to detect - the language specified - - - - A string containng the default language - to use for the agent - - - true of others are allowed to - know the language setting - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - An EventQueue message sent from the simulator to an agent when the agent - leaves a group - - - - - An Array containing the AgentID and GroupID - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - An object containing the Agents UUID, and the Groups UUID - - - The ID of the Agent leaving the group - - - The GroupID the Agent is leaving - - - Base class for Asset uploads/results via Capabilities - - - - The request state - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the viewer to the simulator to request a temporary upload capability - which allows an asset to be uploaded - - - - The Capability URL sent by the simulator to upload the baked texture to - - - - A message sent from the simulator that will inform the agent the upload is complete, - and the UUID of the uploaded asset - - - - The uploaded texture asset ID - - - - A message sent from the viewer to the simulator to request a temporary - capability URI which is used to upload an agents baked appearance textures - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator which indicates the minimum version required for - using voice chat - + + Raised when the simulator responds sends - - Major Version Required + + Simulator from that sent tha data - - Minor version required + + Sim coordinate of the patch - - The name of the region sending the version requrements + + Sim coordinate of the patch - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer containing the - voice server URI - + + Size of tha patch - - The Parcel ID which the voice server URI applies - - - The name of the region - - - A uri containing the server/channel information - which the viewer can utilize to participate in voice conversations - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data + + Heightmap for the patch - + - - - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent by the viewer to the simulator to request a temporary - capability for a script contained with in a Tasks inventory to be updated - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer to indicate - a Tasks scripts status. - - - - The Asset ID of the script - - - True of the script is compiled/ran using the mono interpreter, false indicates it - uses the older less efficient lsl2 interprter - - - The Task containing the scripts - - - true of the script is in a running state - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing the request/response used for updating a gesture - contained with an agents inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message request/response which is used to update a notecard contained within - a tasks inventory - - - - The of the Task containing the notecard asset to update - - - The notecard assets contained in the tasks inventory - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability - which is used to update an asset in an agents inventory - - - - - The Notecard AssetID to replace - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing the request/response used for updating a notecard - contained with an agents inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer which indicates - an error occurred while attempting to update a script in an agents or tasks - inventory - - - - true of the script was successfully compiled by the simulator - - - A string containing the error which occured while trying - to update the script - - - A new AssetID assigned to the script - - - - A message sent from the viewer to the simulator - requesting the update of an existing script contained - within a tasks inventory - - - - if true, set the script mode to running - - - The scripts InventoryItem ItemID to update - - - A lowercase string containing either "mono" or "lsl2" which - specifies the script is compiled and ran on the mono runtime, or the older - lsl runtime - - - The tasks which contains the script to update - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing either the request or response used in updating a script inside - a tasks inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Response from the simulator to notify the viewer the upload is completed, and - the UUID of the script asset and its compiled status - - - - The uploaded texture asset ID - - - true of the script was compiled successfully - - - - A message sent from a viewer to the simulator requesting a temporary uploader capability - used to update a script contained in an agents inventory - - - - The existing asset if of the script in the agents inventory to replace - - - The language of the script - Defaults to lsl version 2, "mono" might be another possible option - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing either the request or response used in updating a script inside - an agents inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Base class for Map Layers via Capabilities - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Sent by an agent to the capabilities server to request map layers - - - - - A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates - - - - An array containing LayerData items - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - An object containing map location details - - - - The Asset ID of the regions tile overlay - - - The grid location of the southern border of the map tile - - - The grid location of the western border of the map tile - - - The grid location of the eastern border of the map tile - - - The grid location of the northern border of the map tile - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - New as of 1.23 RC1, no details yet. - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - A string containing the method used - - - - A request sent from an agent to the Simulator to begin a new conference. - Contains a list of Agents which will be included in the conference - - - - An array containing the of the agents invited to this conference - - - The conferences Session ID - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A moderation request sent from a conference moderator - Contains an agent and an optional action to take - - - - The Session ID - - - - - - A list containing Key/Value pairs, known valid values: - key: text value: true/false - allow/disallow specified agents ability to use text in session - key: voice value: true/false - allow/disallow specified agents ability to use voice in session - - "text" or "voice" - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the agent to the simulator which tells the - simulator we've accepted a conference invitation - - - - The conference SessionID - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Key of sender - - - Name of sender - - - Key of destination avatar - - - ID of originating estate - - - Key of originating region - - - Coordinates in originating region - - - Instant message type - - - Group IM session toggle - - - Key of IM session, for Group Messages, the groups UUID - - - Timestamp of the instant message - - - Instant message text - - - Whether this message is held for offline avatars - - - Context specific packed data - - - Is this invitation for voice group/conference chat - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Sent from the simulator to the viewer. - - When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including - a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate - this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" - - During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are - excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with - the string "ENTER" or "LEAVE" respectively. - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - An EventQueue message sent when the agent is forcibly removed from a chatterbox session - - - - - A string containing the reason the agent was removed - - - - - The ChatterBoxSession's SessionID - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - + - - - Serialize the object - - An containing the objects data + + - - - Deserialize the message - - An containing the data + + - - - Serialize the object - - An containing the objects data + + - - - Deserialize the message - - An containing the data + + - - - Serialize the object - - An containing the objects data + + - - - Deserialize the message - - An containing the data + + - - - A message sent from the viewer to the simulator which - specifies that the user has changed current URL - of the specific media on a prim face - - - - - New URL - - - - - Prim UUID where navigation occured - - - - - Face index - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Base class used for the ObjectMedia message - - - - Message used to retrive prim media data - - - - - Prim UUID - - - - - Requested operation, either GET or UPDATE - - - - - Serialize object - - Serialized object as OSDMap - - - - Deserialize the message - - An containing the data - - - - Message used to update prim media data - - - - - Prim UUID - - - - - Array of media entries indexed by face number - - - - - Media version string - - - - - Serialize object - - Serialized object as OSDMap - - - - Deserialize the message - - An containing the data - - - - Message used to update prim media data - - - - - Prim UUID - - - - - Array of media entries indexed by face number - - - - - Requested operation, either GET or UPDATE - - - - - Serialize object - - Serialized object as OSDMap - - - - Deserialize the message - - An containing the data - - - - Message for setting or getting per face MediaEntry - - - - The request or response details block - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Details about object resource usage - - - Object UUID - - - Object name - - - Indicates if object is group owned - - - Locatio of the object - - - Object owner - - - Resource usage, keys are resource names, values are resource usage for that specific resource - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - serialized data - Instance containg deserialized data - - - Details about parcel resource usage - - - Parcel UUID - - - Parcel local ID - - - Parcel name - - - Indicates if parcel is group owned - - - Parcel owner - - - Array of containing per object resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - serialized data - Instance containg deserialized data - - - Resource usage base class, both agent and parcel resource - usage contains summary information - - - Summary of available resources, keys are resource names, - values are resource usage for that specific resource - - - Summary resource usage, keys are resource names, - values are resource usage for that specific resource - - - - Serializes object - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - Agent resource usage - - - Per attachment point object resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - serialized data - Instance containg deserialized data - - - - Detects which class handles deserialization of this message - - An containing the data - Object capable of decoding this message - - - Request message for parcel resource usage - - - UUID of the parel to request resource usage info - - - - Serializes object - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - Response message for parcel resource usage - - - URL where parcel resource usage details can be retrieved - - - URL where parcel resource usage summary can be retrieved - - - - Serializes object - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - - Detects which class handles deserialization of this message - - An containing the data - Object capable of decoding this message - - - Parcel resource usage - - - Array of containing per percal resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Image width - - - - - Image height - - - - - Image channel flags - - - - - Red channel data - - - - - Green channel data - - - - - Blue channel data - - - - - Alpha channel data - - - - - Bump channel data - - - - - Create a new blank image - - width - height - channel flags - - + - - - - Convert the channels in the image. Channels are created or destroyed as required. - - new channel flags + + Size of the byte array used to store raw packet data - - - Resize or stretch the image using nearest neighbor (ugly) resampling - - new width - new height + + Raw packet data buffer - - - Create a byte array containing 32-bit RGBA data with a bottom-left - origin, suitable for feeding directly into OpenGL - - A byte array containing raw texture data + + Length of the data to transmit - + + EndPoint of the remote host + + - Operation to apply when applying color to texture + Create an allocated UDP packet buffer for receiving a packet - + - Information needed to translate visual param value to RGBA color + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + Size of the buffer to allocate for packet data + + + + Object pool for packet buffers. This is used to allocate memory for all + incoming and outgoing packets, and zerocoding buffers for those packets - + - Construct VisualColorParam + Initialize the object pool in client mode - Operation to apply when applying color to texture - Colors + Server to connect to + + - + - Represents alpha blending and bump infor for a visual parameter - such as sleive length + Initialize the object pool in server mode + + + + + + + Returns a packet buffer with EndPoint set if the buffer is in + client mode, or with EndPoint set to null in server mode + + Initialized UDPPacketBuffer object + + + + Default constructor - - Stregth of the alpha to apply - - - File containing the alpha channel - - - Skip blending if parameter value is 0 - - - Use miltiply insted of alpha blending - - + - Create new alhpa information for a visual param + Check a packet buffer out of the pool - Stregth of the alpha to apply - File containing the alpha channel - Skip blending if parameter value is 0 - Use miltiply insted of alpha blending + A packet buffer object - + - A single visual characteristic of an avatar mesh, such as eyebrow height + Singleton logging class for the entire library - - Index of this visual param + + log4net logging engine - - Internal name - - - Group ID this parameter belongs to - - - Name of the wearable this parameter belongs to - - - Displayable label of this characteristic - - - Displayable label for the minimum value of this characteristic - - - Displayable label for the maximum value of this characteristic - - - Default value - - - Minimum value - - - Maximum value - - - Is this param used for creation of bump layer? - - - Alpha blending/bump info - - - Color information - - - Array of param IDs that are drivers for this parameter - - + - Set all the values through the constructor + Default constructor - Index of this visual param - Internal name - - - Displayable label of this characteristic - Displayable label for the minimum value of this characteristic - Displayable label for the maximum value of this characteristic - Default value - Minimum value - Maximum value - Is this param used for creation of bump layer? - Array of param IDs that are drivers for this parameter - Alpha blending/bump info - Color information - + - Holds the Params array of all the avatar appearance parameters + Send a log message to the logging engine + The log message + The severity of the log entry + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Exception that was raised + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + Exception that was raised + + + + If the library is compiled with DEBUG defined, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + + + + If the library is compiled with DEBUG defined and + GridClient.Settings.DEBUG is true, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + Instance of the client + + + Triggered whenever a message is logged. If this is left + null, log messages will go to the console + + + + Callback used for client apps to receive log messages from + the library + + Data being logged + The severity of the log entry from Sort by name @@ -15401,5192 +22100,6 @@ from a task. - - - Registers, unregisters, and fires events generated by incoming packets - - - - Reference to the GridClient object - - - - Default constructor - - - - - - Register an event handler - - Use PacketType.Default to fire this event on every - incoming packet - Packet type to register the handler for - Callback to be fired - True if this callback should be ran - asynchronously, false to run it synchronous - - - - Unregister an event handler - - Packet type to unregister the handler for - Callback to be unregistered - - - - Fire the events registered for this packet type - - Incoming packet type - Incoming packet - Simulator this packet was received from - - - - Object that is passed to worker threads in the ThreadPool for - firing packet callbacks - - - - Callback to fire for this packet - - - Reference to the simulator that this packet came from - - - The packet that needs to be processed - - - - Registers, unregisters, and fires events generated by the Capabilities - event queue - - - - Reference to the GridClient object - - - - Default constructor - - Reference to the GridClient object - - - - Register an new event handler for a capabilities event sent via the EventQueue - - Use String.Empty to fire this event on every CAPS event - Capability event name to register the - handler for - Callback to fire - - - - Unregister a previously registered capabilities handler - - Capability event name unregister the - handler for - Callback to unregister - - - - Fire the events registered for this event type synchronously - - Capability name - Decoded event body - Reference to the simulator that - generated this event - - - - Fire the events registered for this event type asynchronously - - Capability name - Decoded event body - Reference to the simulator that - generated this event - - - - Object that is passed to worker threads in the ThreadPool for - firing CAPS callbacks - - - - Callback to fire for this packet - - - Name of the CAPS event - - - Strongly typed decoded data - - - Reference to the simulator that generated this event - - - - Represends individual HTTP Download request - - - - URI of the item to fetch - - - Timout specified in milliseconds - - - Download progress callback - - - Download completed callback - - - Accept the following content type - - - Default constructor - - - Constructor - - - - Manages async HTTP downloads with a limit on maximum - concurrent downloads - - - - Default constructor - - - Cleanup method - - - Setup http download request - - - Check the queue for pending work - - - Enqueue a new HTPP download - - - Maximum number of parallel downloads from a single endpoint - - - Client certificate - - - - Avatar profile flags - - - - - Represents an avatar (other than your own) - - - - Groups that this avatar is a member of - - - Positive and negative ratings - - - Avatar properties including about text, profile URL, image IDs and - publishing settings - - - Avatar interests including spoken languages, skills, and "want to" - choices - - - Movement control flags for avatars. Typically not set or used by - clients. To move your avatar, use Client.Self.Movement instead - - - - Contains the visual parameters describing the deformation of the avatar - - - - - Default constructor - - - - First name - - - Last name - - - Full name - - - Active group - - - - Positive and negative ratings - - - - Positive ratings for Behavior - - - Negative ratings for Behavior - - - Positive ratings for Appearance - - - Negative ratings for Appearance - - - Positive ratings for Building - - - Negative ratings for Building - - - Positive ratings given by this avatar - - - Negative ratings given by this avatar - - - - Avatar properties including about text, profile URL, image IDs and - publishing settings - - - - First Life about text - - - First Life image ID - - - - - - - - - - - - - - - Profile image ID - - - Flags of the profile - - - Web URL for this profile - - - Should this profile be published on the web - - - Avatar Online Status - - - Is this a mature profile - - - - - - - - - - Avatar interests including spoken languages, skills, and "want to" - choices - - - - Languages profile field - - - - - - - - - - - - - - - - Return a decoded capabilities message as a strongly typed object - - A string containing the name of the capabilities message key - An to decode - A strongly typed object containing the decoded information from the capabilities message, or null - if no existing Message object exists for the specified event - - - - - - - - - Initialize the UDP packet handler in server mode - - Port to listening for incoming UDP packets on - - - - Initialize the UDP packet handler in client mode - - Remote UDP server to connect to - - - - - - - - - - - - - - - - - - - A Name Value pair with additional settings, used in the protocol - primarily to transmit avatar names and active group in object packets - - - - - - - - - - - - - - - - - - - - Constructor that takes all the fields as parameters - - - - - - - - - - Constructor that takes a single line from a NameValue field - - - - - Type of the value - - - Unknown - - - String value - - - - - - - - - - - - - - - Deprecated - - - String value, but designated as an asset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Static helper functions and global variables - - - - This header flag signals that ACKs are appended to the packet - - - This header flag signals that this packet has been sent before - - - This header flags signals that an ACK is expected for this packet - - - This header flag signals that the message is compressed using zerocoding - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Given an X/Y location in absolute (grid-relative) terms, a region - handle is returned along with the local X/Y location in that region - - The absolute X location, a number such as - 255360.35 - The absolute Y location, a number such as - 255360.35 - The sim-local X position of the global X - position, a value from 0.0 to 256.0 - The sim-local Y position of the global Y - position, a value from 0.0 to 256.0 - A 64-bit region handle that can be used to teleport to - - - - Converts a floating point number to a terse string format used for - transmitting numbers in wearable asset files - - Floating point number to convert to a string - A terse string representation of the input number - - - - Convert a variable length field (byte array) to a string, with a - field name prepended to each line of the output - - If the byte array has unprintable characters in it, a - hex dump will be written instead - The StringBuilder object to write to - The byte array to convert to a string - A field name to prepend to each line of output - - - - Decode a zerocoded byte array, used to decompress packets marked - with the zerocoded flag - - Any time a zero is encountered, the next byte is a count - of how many zeroes to expand. One zero is encoded with 0x00 0x01, - two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The - first four bytes are copied directly to the output buffer. - - The byte array to decode - The length of the byte array to decode. This - would be the length of the packet up to (but not including) any - appended ACKs - The output byte array to decode to - The length of the output buffer - - - - Encode a byte array with zerocoding. Used to compress packets marked - with the zerocoded flag. Any zeroes in the array are compressed down - to a single zero byte followed by a count of how many zeroes to expand - out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, - three zeroes becomes 0x00 0x03, etc. The first four bytes are copied - directly to the output buffer. - - The byte array to encode - The length of the byte array to encode - The output byte array to encode to - The length of the output buffer - - - - Calculates the CRC (cyclic redundancy check) needed to upload inventory. - - Creation date - Sale type - Inventory type - Type - Asset ID - Group ID - Sale price - Owner ID - Creator ID - Item ID - Folder ID - Everyone mask (permissions) - Flags - Next owner mask (permissions) - Group mask (permissions) - Owner mask (permissions) - The calculated CRC - - - - Attempts to load a file embedded in the assembly - - The filename of the resource to load - A Stream for the requested file, or null if the resource - was not successfully loaded - - - - Attempts to load a file either embedded in the assembly or found in - a given search path - - The filename of the resource to load - An optional path that will be searched if - the asset is not found embedded in the assembly - A Stream for the requested file, or null if the resource - was not successfully loaded - - - - Converts a list of primitives to an object that can be serialized - with the LLSD system - - Primitives to convert to a serializable object - An object that can be serialized with LLSD - - - - Deserializes OSD in to a list of primitives - - Structure holding the serialized primitive list, - must be of the SDMap type - A list of deserialized primitives - - - - Converts a struct or class object containing fields only into a key value separated string - - The struct object - A string containing the struct fields as the keys, and the field value as the value separated - - - // Add the following code to any struct or class containing only fields to override the ToString() - // method to display the values of the passed object - - /// Print the struct data as a string - ///A string containing the field name, and field value - public override string ToString() - { - return Helpers.StructToString(this); - } - - - - - - Passed to Logger.Log() to identify the severity of a log entry - - - - No logging information will be output - - - Non-noisy useful information, may be helpful in - debugging a problem - - - A non-critical error occurred. A warning will not - prevent the rest of the library from operating as usual, - although it may be indicative of an underlying issue - - - A critical error has occurred. Generally this will - be followed by the network layer shutting down, although the - stability of the library after an error is uncertain - - - Used for internal testing, this logging level can - generate very noisy (long and/or repetitive) messages. Don't - pass this to the Log() function, use DebugLog() instead. - - - - - Capabilities is the name of the bi-directional HTTP REST protocol - used to communicate non real-time transactions such as teleporting or - group messaging - - - - Reference to the simulator this system is connected to - - - - Default constructor - - - - - - - Request the URI of a named capability - - Name of the capability to request - The URI of the requested capability, or String.Empty if - the capability does not exist - - - - Process any incoming events, check to see if we have a message created for the event, - - - - - - Capabilities URI this system was initialized with - - - Whether the capabilities event queue is connected and - listening for incoming events - - - - Triggered when an event is received via the EventQueueGet - capability - - Event name - Decoded event data - The simulator that generated the event - - - - Permission request flags, asked when a script wants to control an Avatar - - - - Placeholder for empty values, shouldn't ever see this - - - Script wants ability to take money from you - - - Script wants to take camera controls for you - - - Script wants to remap avatars controls - - - Script wants to trigger avatar animations - This function is not implemented on the grid - - - Script wants to attach or detach the prim or primset to your avatar - - - Script wants permission to release ownership - This function is not implemented on the grid - The concept of "public" objects does not exist anymore. - - - Script wants ability to link/delink with other prims - - - Script wants permission to change joints - This function is not implemented on the grid - - - Script wants permissions to change permissions - This function is not implemented on the grid - - - Script wants to track avatars camera position and rotation - - - Script wants to control your camera - - - - Special commands used in Instant Messages - - - - Indicates a regular IM from another agent - - - Simple notification box with an OK button - - - You've been invited to join a group. - - - Inventory offer - - - Accepted inventory offer - - - Declined inventory offer - - - Group vote - - - An object is offering its inventory - - - Accept an inventory offer from an object - - - Decline an inventory offer from an object - - - Unknown - - - Start a session, or add users to a session - - - Start a session, but don't prune offline users - - - Start a session with your group - - - Start a session without a calling card (finder or objects) - - - Send a message to a session - - - Leave a session - - - Indicates that the IM is from an object - - - Sent an IM to a busy user, this is the auto response - - - Shows the message in the console and chat history - - - Send a teleport lure - - - Response sent to the agent which inititiated a teleport invitation - - - Response sent to the agent which inititiated a teleport invitation - - - Only useful if you have Linden permissions - - - A placeholder type for future expansion, currently not - used - - - IM to tell the user to go to an URL - - - IM for help - - - IM sent automatically on call for help, sends a lure - to each Helper reached - - - Like an IM but won't go to email - - - IM from a group officer to all group members - - - Unknown - - - Unknown - - - Accept a group invitation - - - Decline a group invitation - - - Unknown - - - An avatar is offering you friendship - - - An avatar has accepted your friendship offer - - - An avatar has declined your friendship offer - - - Indicates that a user has started typing - - - Indicates that a user has stopped typing - - - - Flag in Instant Messages, whether the IM should be delivered to - offline avatars as well - - - - Only deliver to online avatars - - - If the avatar is offline the message will be held until - they login next, and possibly forwarded to their e-mail account - - - - Conversion type to denote Chat Packet types in an easier-to-understand format - - - - Whisper (5m radius) - - - Normal chat (10/20m radius), what the official viewer typically sends - - - Shouting! (100m radius) - - - Event message when an Avatar has begun to type - - - Event message when an Avatar has stopped typing - - - Send the message to the debug channel - - - Event message when an object uses llOwnerSay - - - Special value to support llRegionSay, never sent to the client - - - - Identifies the source of a chat message - - - - Chat from the grid or simulator - - - Chat from another avatar - - - Chat from an object - - - - - - - - - - - - - - - - - - Effect type used in ViewerEffect packets - - - - - - - - - - - - - - - - - - - - - - - - - Project a beam from a source to a destination, such as - the one used when editing an object - - - - - - - - - - - - Create a swirl of particles around an object - - - - - - - - - Cause an avatar to look at an object - - - Cause an avatar to point at an object - - - - The action an avatar is doing when looking at something, used in - ViewerEffect packets for the LookAt effect - - - - - - - - - - - - - - - - - - - - - - Deprecated - - - - - - - - - - - - - - - - The action an avatar is doing when pointing at something, used in - ViewerEffect packets for the PointAt effect - - - - - - - - - - - - - - - - - Money transaction types - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Flags sent when a script takes or releases a control - - NOTE: (need to verify) These might be a subset of the ControlFlags enum in Movement, - - - No Flags set - - - Forward (W or up Arrow) - - - Back (S or down arrow) - - - Move left (shift+A or left arrow) - - - Move right (shift+D or right arrow) - - - Up (E or PgUp) - - - Down (C or PgDown) - - - Rotate left (A or left arrow) - - - Rotate right (D or right arrow) - - - Left Mouse Button - - - Left Mouse button in MouseLook - - - - Currently only used to hide your group title - - - - No flags set - - - Hide your group title - - - - Action state of the avatar, which can currently be typing and - editing - - - - - - - - - - - - - - Current teleport status - - - - Unknown status - - - Teleport initialized - - - Teleport in progress - - - Teleport failed - - - Teleport completed - - - Teleport cancelled - - - - - - - - No flags set, or teleport failed - - - Set when newbie leaves help island for first time - - - - - - Via Lure - - - Via Landmark - - - Via Location - - - Via Home - - - Via Telehub - - - Via Login - - - Linden Summoned - - - Linden Forced me - - - - - - Agent Teleported Home via Script - - - - - - - - - - - - forced to new location for example when avatar is banned or ejected - - - Teleport Finished via a Lure - - - Finished, Sim Changed - - - Finished, Same Sim - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Instant Message - - - - Key of sender - - - Name of sender - - - Key of destination avatar - - - ID of originating estate - - - Key of originating region - - - Coordinates in originating region - - - Instant message type - - - Group IM session toggle - - - Key of IM session, for Group Messages, the groups UUID - - - Timestamp of the instant message - - - Instant message text - - - Whether this message is held for offline avatars - - - Context specific packed data - - - Print the struct data as a string - A string containing the field name, and field value - - - - - - - - - Construct a new instance of the ChatEventArgs object - - Sim from which the message originates - The message sent - The audible level of the message - The type of message sent: whisper, shout, etc - The source type of the message sender - The name of the agent or object sending the message - The ID of the agent or object sending the message - The ID of the object owner, or the agent ID sending the message - The position of the agent or object sending the message - - - Get the simulator sending the message - - - Get the message sent - - - Get the audible level of the message - - - Get the type of message sent: whisper, shout, etc - - - Get the source type of the message sender - - - Get the name of the agent or object sending the message - - - Get the ID of the agent or object sending the message - - - Get the ID of the object owner, or the agent ID sending the message - - - Get the position of the agent or object sending the message - - - Contains the data sent when a primitive opens a dialog with this agent - - - - Construct a new instance of the ScriptDialogEventArgs - - The dialog message - The name of the object that sent the dialog request - The ID of the image to be displayed - The ID of the primitive sending the dialog - The first name of the senders owner - The last name of the senders owner - The communication channel the dialog was sent on - The string labels containing the options presented in this dialog - - - Get the dialog message - - - Get the name of the object that sent the dialog request - - - Get the ID of the image to be displayed - - - Get the ID of the primitive sending the dialog - - - Get the first name of the senders owner - - - Get the last name of the senders owner - - - Get the communication channel the dialog was sent on, responses - should also send responses on this same channel - - - Get the string labels containing the options presented in this dialog - - - Contains the data sent when a primitive requests debit or other permissions - requesting a YES or NO answer - - - - Construct a new instance of the ScriptQuestionEventArgs - - The simulator containing the object sending the request - The ID of the script making the request - The ID of the primitive containing the script making the request - The name of the primitive making the request - The name of the owner of the object making the request - The permissions being requested - - - Get the simulator containing the object sending the request - - - Get the ID of the script making the request - - - Get the ID of the primitive containing the script making the request - - - Get the name of the primitive making the request - - - Get the name of the owner of the object making the request - - - Get the permissions being requested - - - Contains the data sent when a primitive sends a request - to an agent to open the specified URL - - - - Construct a new instance of the LoadUrlEventArgs - - The name of the object sending the request - The ID of the object sending the request - The ID of the owner of the object sending the request - True if the object is owned by a group - The message sent with the request - The URL the object sent - - - Get the name of the object sending the request - - - Get the ID of the object sending the request - - - Get the ID of the owner of the object sending the request - - - True if the object is owned by a group - - - Get the message sent with the request - - - Get the URL the object sent - - - The date received from an ImprovedInstantMessage - - - - Construct a new instance of the InstantMessageEventArgs object - - the InstantMessage object - the simulator where the InstantMessage origniated - - - Get the InstantMessage object - - - Get the simulator where the InstantMessage origniated - - - Contains the currency balance - - - - Construct a new BalanceEventArgs object - - The currenct balance - - - - Get the currenct balance - - - - Contains the transaction summary when an item is purchased, - money is given, or land is purchased - - - - Construct a new instance of the MoneyBalanceReplyEventArgs object - - The ID of the transaction - True of the transaction was successful - The current currency balance - The meters credited - The meters comitted - A brief description of the transaction - - - Get the ID of the transaction - - - True of the transaction was successful - - - Get the remaining currency balance - - - Get the meters credited - - - Get the meters comitted - - - Get the description of the transaction - - - Data sent from the simulator containing information about your agent and active group information - - - - Construct a new instance of the AgentDataReplyEventArgs object - - The agents first name - The agents last name - The agents active group ID - The group title of the agents active group - The combined group powers the agent has in the active group - The name of the group the agent has currently active - - - Get the agents first name - - - Get the agents last name - - - Get the active group ID of your agent - - - Get the active groups title of your agent - - - Get the combined group powers of your agent - - - Get the active group name of your agent - - - Data sent by the simulator to indicate the active/changed animations - applied to your agent - - - - Construct a new instance of the AnimationsChangedEventArgs class - - The dictionary that contains the changed animations - - - Get the dictionary that contains the changed animations - - - - Data sent from a simulator indicating a collision with your agent - - - - - Construct a new instance of the MeanCollisionEventArgs class - - The type of collision that occurred - The ID of the agent or object that perpetrated the agression - The ID of the Victim - The strength of the collision - The Time the collision occurred - - - Get the Type of collision - - - Get the ID of the agent or object that collided with your agent - - - Get the ID of the agent that was attacked - - - A value indicating the strength of the collision - - - Get the time the collision occurred - - - Data sent to your agent when it crosses region boundaries - - - - Construct a new instance of the RegionCrossedEventArgs class - - The simulator your agent just left - The simulator your agent is now in - - - Get the simulator your agent just left - - - Get the simulator your agent is now in - - - Data sent from the simulator when your agent joins a group chat session - - - - Construct a new instance of the GroupChatJoinedEventArgs class - - The ID of the session - The name of the session - A temporary session id used for establishing new sessions - True of your agent successfully joined the session - - - Get the ID of the group chat session - - - Get the name of the session - - - Get the temporary session ID used for establishing new sessions - - - True if your agent successfully joined the session - - - Data sent by the simulator containing urgent messages - - - - Construct a new instance of the AlertMessageEventArgs class - - The alert message - - - Get the alert message - - - Data sent by a script requesting to take or release specified controls to your agent - - - - Construct a new instance of the ScriptControlEventArgs class - - The controls the script is attempting to take or release to the agent - True if the script is passing controls back to the agent - True if the script is requesting controls be released to the script - - - Get the controls the script is attempting to take or release to the agent - - - True if the script is passing controls back to the agent - - - True if the script is requesting controls be released to the script - - - - Data sent from the simulator to an agent to indicate its view limits - - - - - Construct a new instance of the CameraConstraintEventArgs class - - The collision plane - - - Get the collision plane - - - - Data containing script sensor requests which allow an agent to know the specific details - of a primitive sending script sensor requests - - - - - Construct a new instance of the ScriptSensorReplyEventArgs - - The ID of the primitive sending the sensor - The ID of the group associated with the primitive - The name of the primitive sending the sensor - The ID of the primitive sending the sensor - The ID of the owner of the primitive sending the sensor - The position of the primitive sending the sensor - The range the primitive specified to scan - The rotation of the primitive sending the sensor - The type of sensor the primitive sent - The velocity of the primitive sending the sensor - - - Get the ID of the primitive sending the sensor - - - Get the ID of the group associated with the primitive - - - Get the name of the primitive sending the sensor - - - Get the ID of the primitive sending the sensor - - - Get the ID of the owner of the primitive sending the sensor - - - Get the position of the primitive sending the sensor - - - Get the range the primitive specified to scan - - - Get the rotation of the primitive sending the sensor - - - Get the type of sensor the primitive sent - - - Get the velocity of the primitive sending the sensor - - - Contains the response data returned from the simulator in response to a - - - Construct a new instance of the AvatarSitResponseEventArgs object - - - Get the ID of the primitive the agent will be sitting on - - - True if the simulator Autopilot functions were involved - - - Get the camera offset of the agent when seated - - - Get the camera eye offset of the agent when seated - - - True of the agent will be in mouselook mode when seated - - - Get the position of the agent when seated - - - Get the rotation of the agent when seated - - - Data sent when an agent joins a chat session your agent is currently participating in - - - - Construct a new instance of the ChatSessionMemberAddedEventArgs object - - The ID of the chat session - The ID of the agent joining - - - Get the ID of the chat session - - - Get the ID of the agent that joined - - - Data sent when an agent exits a chat session your agent is currently participating in - - - - Construct a new instance of the ChatSessionMemberLeftEventArgs object - - The ID of the chat session - The ID of the Agent that left - - - Get the ID of the chat session - - - Get the ID of the agent that left - - - - Archives assets - - - - - Archive assets - - - - - Archive the assets given to this archiver to the given archive. - - - - - - Write an assets metadata file to the given archive - - - - - - Write asset data files to the given archive - - - - - - Avatar group management - - - - Key of Group Member - - - Total land contribution - - - Online status information - - - Abilities that the Group Member has - - - Current group title - - - Is a group owner - - - - Role manager for a group - - - - Key of the group - - - Key of Role - - - Name of Role - - - Group Title associated with Role - - - Description of Role - - - Abilities Associated with Role - - - Returns the role's title - The role's title - - - - Class to represent Group Title - - - - Key of the group - - - ID of the role title belongs to - - - Group Title - - - Whether title is Active - - - Returns group title - - - - Represents a group on the grid - - - - Key of Group - - - Key of Group Insignia - - - Key of Group Founder - - - Key of Group Role for Owners - - - Name of Group - - - Text of Group Charter - - - Title of "everyone" role - - - Is the group open for enrolement to everyone - - - Will group show up in search - - - - - - - - - - - - Is the group Mature - - - Cost of group membership - - - - - - - - - The total number of current members this group has - - - The number of roles this group has configured - - - Show this group in agent's profile - - - Returns the name of the group - A string containing the name of the group - - - - A group Vote - - - - Key of Avatar who created Vote - - - Text of the Vote proposal - - - Total number of votes - - - - A group proposal - - - - The Text of the proposal - - - The minimum number of members that must vote before proposal passes or failes - - - The required ration of yes/no votes required for vote to pass - The three options are Simple Majority, 2/3 Majority, and Unanimous - TODO: this should be an enum - - - The duration in days votes are accepted - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Struct representing a group notice - - - - - - - - - - - - - - - - - - - - - - - Struct representing a group notice list entry - - - - Notice ID - - - Creation timestamp of notice - - - Agent name who created notice - - - Notice subject - - - Is there an attachment? - - - Attachment Type - - - - Struct representing a member of a group chat session and their settings - - - - The of the Avatar - - - True if user has voice chat enabled - - - True of Avatar has moderator abilities - - - True if a moderator has muted this avatars chat - - - True if a moderator has muted this avatars voice - - - - Role update flags - - - - - - - - - - - - - - - - - - - - - - - - - Can send invitations to groups default role - - - Can eject members from group - - - Can toggle 'Open Enrollment' and change 'Signup fee' - - - Member is visible in the public member list - - - Can create new roles - - - Can delete existing roles - - - Can change Role names, titles and descriptions - - - Can assign other members to assigners role - - - Can assign other members to any role - - - Can remove members from roles - - - Can assign and remove abilities in roles - - - Can change group Charter, Insignia, 'Publish on the web' and which - members are publicly visible in group member listings - - - Can buy land or deed land to group - - - Can abandon group owned land to Governor Linden on mainland, or Estate owner for - private estates - - - Can set land for-sale information on group owned parcels - - - Can subdivide and join parcels - - - Can join group chat sessions - - - Can use voice chat in Group Chat sessions - - - Can moderate group chat sessions - - - Can toggle "Show in Find Places" and set search category - - - Can change parcel name, description, and 'Publish on web' settings - - - Can set the landing point and teleport routing on group land - - - Can change music and media settings - - - Can toggle 'Edit Terrain' option in Land settings - - - Can toggle various About Land > Options settings - - - Can always terraform land, even if parcel settings have it turned off - - - Can always fly while over group owned land - - - Can always rez objects on group owned land - - - Can always create landmarks for group owned parcels - - - Can set home location on any group owned parcel - - - Can modify public access settings for group owned parcels - - - Can manager parcel ban lists on group owned land - - - Can manage pass list sales information - - - Can eject and freeze other avatars on group owned land - - - Can return objects set to group - - - Can return non-group owned/set objects - - - Can return group owned objects - - - Can landscape using Linden plants - - - Can deed objects to group - - - Can move group owned objects - - - Can set group owned objects for-sale - - - Pay group liabilities and receive group dividends - - - Can send group notices - - - Can receive group notices - - - Can create group proposals - - - Can vote on group proposals - - - - Handles all network traffic related to reading and writing group - information - - - - The event subscribers. null if no subcribers - - - Raises the CurrentGroups event - A CurrentGroupsEventArgs object containing the - data sent from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupNamesReply event - A GroupNamesEventArgs object containing the - data response from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupProfile event - An GroupProfileEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupMembers event - A GroupMembersEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupRolesDataReply event - A GroupRolesDataReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupRoleMembersReply event - A GroupRolesRoleMembersReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupTitlesReply event - A GroupTitlesReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupAccountSummary event - A GroupAccountSummaryReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupCreated event - An GroupCreatedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupJoined event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupLeft event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupDropped event - An GroupDroppedEventArgs object containing the - the group your agent left - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupMemberEjected event - An GroupMemberEjectedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupNoticesListReply event - An GroupNoticesListReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupInvitation event - An GroupInvitationEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - A reference to the current instance - - - Currently-active group members requests - - - Currently-active group roles requests - - - Currently-active group role-member requests - - - Dictionary keeping group members while request is in progress - - - Dictionary keeping mebmer/role mapping while request is in progress - - - Dictionary keeping GroupRole information while request is in progress - - - Caches group name lookups - - - - Construct a new instance of the GroupManager class - - A reference to the current instance - - - - Request a current list of groups the avatar is a member of. - - CAPS Event Queue must be running for this to work since the results - come across CAPS. - - - - Lookup name of group based on groupID - - groupID of group to lookup name for. - - - - Request lookup of multiple group names - - List of group IDs to request. - - - Lookup group profile data such as name, enrollment, founder, logo, etc - Subscribe to OnGroupProfile event to receive the results. - group ID (UUID) - - - Request a list of group members. - Subscribe to OnGroupMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request group roles - Subscribe to OnGroupRoles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request members (members,role) role mapping for a group. - Subscribe to OnGroupRolesMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request a groups Titles - Subscribe to OnGroupTitles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Begin to get the group account summary - Subscribe to the OnGroupAccountSummary event to receive the results. - group ID (UUID) - How long of an interval - Which interval (0 for current, 1 for last) - - - Invites a user to a group - The group to invite to - A list of roles to invite a person to - Key of person to invite - - - Set a group as the current active group - group ID (UUID) - - - Change the role that determines your active title - Group ID to use - Role ID to change to - - - Set this avatar's tier contribution - Group ID to change tier in - amount of tier to donate - - - - Save wheather agent wants to accept group notices and list this group in their profile - - Group - Accept notices from this group - List this group in the profile - - - Request to join a group - Subscribe to OnGroupJoined event for confirmation. - group ID (UUID) to join. - - - - Request to create a new group. If the group is successfully - created, L$100 will automatically be deducted - - Subscribe to OnGroupCreated event to receive confirmation. - Group struct containing the new group info - - - Update a group's profile and other information - Groups ID (UUID) to update. - Group struct to update. - - - Eject a user from a group - Group ID to eject the user from - Avatar's key to eject - - - Update role information - Modified role to be updated - - - Create a new group role - Group ID to update - Role to create - - - Delete a group role - Group ID to update - Role to delete - - - Remove an avatar from a role - Group ID to update - Role ID to be removed from - Avatar's Key to remove - - - Assign an avatar to a role - Group ID to update - Role ID to assign to - Avatar's ID to assign to role - - - Request the group notices list - Group ID to fetch notices for - - - Request a group notice by key - ID of group notice - - - Send out a group notice - Group ID to update - GroupNotice structure containing notice data - - - Start a group proposal (vote) - The Group ID to send proposal to - GroupProposal structure containing the proposal - - - Request to leave a group - Subscribe to OnGroupLeft event to receive confirmation - The group to leave - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - our current group membership - - - Raised when the simulator responds to a RequestGroupName - or RequestGroupNames request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when a response to a RequestGroupAccountSummary is returned - by the simulator - - - Raised when a request to create a group is successful - - - Raised when a request to join a group either - fails or succeeds - - - Raised when a request to leave a group either - fails or succeeds - - - Raised when A group is removed from the group server - - - Raised when a request to eject a member from a group either - fails or succeeds - - - Raised when the simulator sends us group notices - - - - Raised when another agent invites our avatar to join a group - - - Contains the current groups your agent is a member of - - - Construct a new instance of the CurrentGroupsEventArgs class - The current groups your agent is a member of - - - Get the current groups your agent is a member of - - - A Dictionary of group names, where the Key is the groups ID and the value is the groups name - - - Construct a new instance of the GroupNamesEventArgs class - The Group names dictionary - - - Get the Group Names dictionary - - - Represents the members of a group - - - - Construct a new instance of the GroupMembersReplyEventArgs class - - The ID of the request - The ID of the group - The membership list of the group - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the dictionary of members - - - Represents the roles associated with a group - - - Construct a new instance of the GroupRolesDataReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The dictionary containing the roles - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the dictionary containing the roles - - - Represents the Role to Member mappings for a group - - - Construct a new instance of the GroupRolesMembersReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The member to roles map - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the member to roles map - - - Represents the titles for a group - - - Construct a new instance of the GroupTitlesReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The titles - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the titles - - - Represents the summary data for a group - - - Construct a new instance of the GroupAccountSummaryReplyEventArgs class - The ID of the group - The summary data - - - Get the ID of the group - - - Get the summary data - - - A response to a group create request - - - Construct a new instance of the GroupCreatedReplyEventArgs class - The ID of the group - the success or faulure of the request - A string containing additional information - - - Get the ID of the group - - - true of the group was created successfully - - - A string containing the message - - - Represents a response to a request - - - Construct a new instance of the GroupOperationEventArgs class - The ID of the group - true of the request was successful - - - Get the ID of the group - - - true of the request was successful - - - Represents your agent leaving a group - - - Construct a new instance of the GroupDroppedEventArgs class - The ID of the group - - - Get the ID of the group - - - Represents a list of active group notices - - - Construct a new instance of the GroupNoticesListReplyEventArgs class - The ID of the group - The list containing active notices - - - Get the ID of the group - - - Get the notices list - - - Represents the profile of a group - - - Construct a new instance of the GroupProfileEventArgs class - The group profile - - - Get the group profile - - - - Provides notification of a group invitation request sent by another Avatar - - The invitation is raised when another avatar makes an offer for our avatar - to join a group. - - - The ID of the Avatar sending the group invitation - - - The name of the Avatar sending the group invitation - - - A message containing the request information which includes - the name of the group, the groups charter and the fee to join details - - - The Simulator - - - Set to true to accept invitation, false to decline - - - - A set of textures that are layered on texture of each other and "baked" - in to a single texture, for avatar appearances - - - - Final baked texture - - - Component layers - - - Width of the final baked image and scratchpad - - - Height of the final baked image and scratchpad - - - Bake type - - - - Default constructor - - Bake type - - - - Adds layer for baking - - TexturaData struct that contains texture and its params - - - - Converts avatar texture index (face) to Bake type - - Face number (AvatarTextureIndex) - BakeType, layer to which this texture belongs to - - - - Make sure images exist, resize source if needed to match the destination - - Destination image - Source image - Sanitization was succefull - - - - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if - the image is a pure solid color - - Color of the base of this layer - - - - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if - the image is a pure solid color - - Red value - Green value - Blue value - - - Final baked texture - - - Component layers - - - Width of the final baked image and scratchpad - - - Height of the final baked image and scratchpad - - - Bake type - - - Is this one of the 3 skin bakes - - - - Type of gesture step - - - - - Base class for gesture steps - - - - - Retururns what kind of gesture step this is - - - - - Describes animation step of a gesture - - - - - If true, this step represents start of animation, otherwise animation stop - - - - - Animation asset - - - - - Animation inventory name - - - - - Returns what kind of gesture step this is - - - - - Describes sound step of a gesture - - - - - Sound asset - - - - - Sound inventory name - - - - - Returns what kind of gesture step this is - - - - - Describes sound step of a gesture - - - - - Text to output in chat - - - - - Returns what kind of gesture step this is - - - - - Describes sound step of a gesture - - - - - If true in this step we wait for all animations to finish - - - - - If true gesture player should wait for the specified amount of time - - - - - Time in seconds to wait if WaitForAnimation is false - - - - - Returns what kind of gesture step this is - - - - - Describes the final step of a gesture - - - - - Returns what kind of gesture step this is - - - - - Represents a sequence of animations, sounds, and chat actions - - - - - Keyboard key that triggers the gestyre - - - - - Modifier to the trigger key - - - - - String that triggers playing of the gesture sequence - - - - - Text that replaces trigger in chat once gesture is triggered - - - - - Sequence of gesture steps - - - - - Constructs guesture asset - - - - - Constructs guesture asset - - A unique specific to this asset - A byte array containing the raw asset data - - - - Encodes gesture asset suitable for uplaod - - - - - Decodes gesture assset into play sequence - - true if the asset data was decoded successfully - - - - Returns asset type - - - - - Represents an that represents an avatars body ie: Hair, Etc. - - - - Initializes a new instance of an AssetBodyPart object - - - Initializes a new instance of an AssetBodyPart object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - pre-defined built in sounds - - - - - - - - - - - - - - - - - - - - - - - - - - - - coins - - - cash register bell - - - - - - - - - rubber - - - plastic - - - flesh - - - wood splintering? - - - glass break - - - metal clunk - - - whoosh - - - shake - - - - - - ding - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A dictionary containing all pre-defined sounds - - A dictionary containing the pre-defined sounds, - where the key is the sounds ID, and the value is a string - containing a name to identify the purpose of the sound - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NetworkManager is responsible for managing the network layer of - OpenMetaverse. It tracks all the server connections, serializes - outgoing traffic and deserializes incoming traffic, and provides - instances of delegates for network-related events. - - - Login Routines - - - - The event subscribers, null of no subscribers - - - Raises the PacketSent Event - A PacketSentEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the LoggedOut Event - A LoggedOutEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimConnecting Event - A SimConnectingEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimConnected Event - A SimConnectedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimDisconnected Event - A SimDisconnectedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the Disconnected Event - A DisconnectedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimChanged Event - A SimChangedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the EventQueueRunning Event - A EventQueueRunningEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - All of the simulators we are currently connected to - - - Handlers for incoming capability events - - - Handlers for incoming packets - - - Incoming packets that are awaiting handling - - - Outgoing packets that are awaiting handling - - - - Default constructor - - Reference to the GridClient object - - - - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type to trigger events for - Callback to fire when a packet of this type - is received - - - - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type to trigger events for - Callback to fire when a packet of this type - is received - True if the callback should be ran - asynchronously. Only set this to false (synchronous for callbacks - that will always complete quickly) - If any callback for a packet type is marked as - asynchronous, all callbacks for that packet type will be fired - asynchronously - - - - Unregister an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type this callback is registered with - Callback to stop firing events for - - - - Register a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library - - Name of the CAPS event to register a handler for - Callback to fire when a CAPS event is received - - - - Unregister a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library - - Name of the CAPS event this callback is - registered with - Callback to stop firing events for - - - - Send a packet to the simulator the avatar is currently occupying - - Packet to send - - - - Send a packet to a specified simulator - - Packet to send - Simulator to send the packet to - - - - Connect to a simulator - - IP address to connect to - Port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null - - - - Connect to a simulator - - IP address and port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null - - - - Initiate a blocking logout request. This will return when the logout - handshake has completed or when Settings.LOGOUT_TIMEOUT - has expired and the network layer is manually shut down - - - - - Initiate the logout process. Check if logout succeeded with the - OnLogoutReply event, and if this does not fire the - Shutdown() function needs to be manually called - - - - - Close a connection to the given simulator - - - - - - - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout - - Type of shutdown - - - - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout - - Type of shutdown - Shutdown message - - - - Searches through the list of currently connected simulators to find - one attached to the given IPEndPoint - - IPEndPoint of the Simulator to search for - A Simulator reference on success, otherwise null - - - - Fire an event when an event queue connects for capabilities - - Simulator the event queue is attached to - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - The event subscribers, null of no subscribers - - - Raises the LoginProgress Event - A LoginProgressEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - Seed CAPS URL returned from the login server - - - A list of packets obtained during the login process which - networkmanager will log but not process - - - - Generate sane default values for a login request - - Account first name - Account last name - Account password - Client application name - Client application version - A populated struct containing - sane defaults - - - - Simplified login that takes the most common and required fields - - Account first name - Account last name - Account password - Client application name - Client application version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Simplified login that takes the most common fields along with a - starting location URI, and can accept an MD5 string instead of a - plaintext password - - Account first name - Account last name - Account password or MD5 hash of the password - such as $1$1682a1e45e9f957dcdf0bb56eb43319c - Client application name - Starting location URI that can be built with - StartLocation() - Client application version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Login that takes a struct of all the values that will be passed to - the login server - - The values that will be passed to the login - server, all fields must be set even if they are String.Empty - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Build a start location URI for passing to the Login function - - Name of the simulator to start in - X coordinate to start at - Y coordinate to start at - Z coordinate to start at - String with a URI that can be used to login to a specified - location - - - - Handles response from XML-RPC login replies - - - - - Handle response from LLSD login replies - - - - - - - - Get current OS - - Either "Win" or "Linux" - - - - Get clients default Mac Address - - A string containing the first found Mac Address - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Unique identifier associated with our connections to - simulators - - - The simulator that the logged in avatar is currently - occupying - - - Shows whether the network layer is logged in to the - grid or not - - - Number of packets in the incoming queue - - - Number of packets in the outgoing queue - - - Raised when the simulator sends us data containing - ... - - - Called when a reply is received from the login server, the - login sequence will block until this event returns - - - Current state of logging in - - - Upon login failure, contains a short string key for the - type of login error that occurred - - - The raw XML-RPC reply from the login server, exactly as it - was received (minus the HTTP header) - - - During login this contains a descriptive version of - LoginStatusCode. After a successful login this will contain the - message of the day, and after a failed login a descriptive error - message will be returned - - - - Explains why a simulator or the grid disconnected from us - - - - The client requested the logout or simulator disconnect - - - The server notified us that it is disconnecting - - - Either a socket was closed or network traffic timed out - - - The last active simulator shut down - - - - Holds a simulator reference and a decoded packet, these structs are put in - the packet inbox for event handling - - - - Reference to the simulator that this packet came from - - - Packet that needs to be processed - - - - Holds a simulator reference and a serialized packet, these structs are put in - the packet outbox for sending - - - - Reference to the simulator this packet is destined for - - - Packet that needs to be sent - - - Sequence number of the wrapped packet - - - Number of times this packet has been resent - - - Environment.TickCount when this packet was last sent over the wire - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Login Request Parameters - - - - The URL of the Login Server - - - The number of milliseconds to wait before a login is considered - failed due to timeout - - - The request method - login_to_simulator is currently the only supported method - - - The Agents First name - - - The Agents Last name - - - A md5 hashed password - plaintext password will be automatically hashed - - - The agents starting location once logged in - Either "last", "home", or a string encoded URI - containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 - - - A string containing the client software channel information - Second Life Release - - - The client software version information - The official viewer uses: Second Life Release n.n.n.n - where n is replaced with the current version of the viewer - - - A string containing the platform information the agent is running on - - - A string hash of the network cards Mac Address - - - Unknown or deprecated - - - A string hash of the first disk drives ID used to identify this clients uniqueness - - - A string containing the viewers Software, this is not directly sent to the login server but - instead is used to generate the Version string - - - A string representing the software creator. This is not directly sent to the login server but - is used by the library to generate the Version information - - - If true, this agent agrees to the Terms of Service of the grid its connecting to - - - Unknown - - - An array of string sent to the login server to enable various options - - - A randomly generated ID to distinguish between login attempts. This value is only used - internally in the library and is never sent over the wire - - - - Default constuctor, initializes sane default values - - - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - URI of the login server - - - - The decoded data returned from the login server after a successful login - - - - true, false, indeterminate - - - Login message of the day - - - M or PG, also agent_region_access and agent_access_max - - - - Parse LLSD Login Reply Data - - An - contaning the login response data - XML-RPC logins do not require this as XML-RPC.NET - automatically populates the struct properly using attributes - - - - Wrapper around a byte array that allows bit to be packed and unpacked - one at a time or by a variable amount. Useful for very tightly packed - data like LayerData packets - - - - - - - - Default constructor, initialize the bit packer / bit unpacker - with a byte array and starting position - - Byte array to pack bits in to or unpack from - Starting position in the byte array - - - - Pack a floating point value in to the data - - Floating point value to pack - - - - Pack part or all of an integer in to the data - - Integer containing the data to pack - Number of bits of the integer to pack - - - - Pack part or all of an unsigned integer in to the data - - Unsigned integer containing the data to pack - Number of bits of the integer to pack - - - - Pack a single bit in to the data - - Bit to pack - - - - - - - - - - - - - - - - - - - - - - - - - Unpacking a floating point value from the data - - Unpacked floating point value - - - - Unpack a variable number of bits from the data in to integer format - - Number of bits to unpack - An integer containing the unpacked bits - This function is only useful up to 32 bits - - - - Unpack a variable number of bits from the data in to unsigned - integer format - - Number of bits to unpack - An unsigned integer containing the unpacked bits - This function is only useful up to 32 bits - - - - Unpack a 16-bit signed integer - - 16-bit signed integer - - - - Unpack a 16-bit unsigned integer - - 16-bit unsigned integer - - - - Unpack a 32-bit signed integer - - 32-bit signed integer - - - - Unpack a 32-bit unsigned integer - - 32-bit unsigned integer - - - - - - - - - - Index of TextureEntry slots for avatar appearances - - - - - Bake layers for avatar appearance - - - - Maximum number of concurrent downloads for wearable assets and textures - - - Maximum number of concurrent uploads for baked textures - - - Timeout for fetching inventory listings - - - Timeout for fetching a single wearable, or receiving a single packet response - - - Timeout for fetching a single texture - - - Timeout for uploading a single baked texture - - - Number of times to retry bake upload - - - When changing outfit, kick off rebake after - 20 seconds has passed since the last change - - - Total number of wearables for each avatar - - - Total number of baked textures on each avatar - - - Total number of wearables per bake layer - - - Mapping between BakeType and AvatarTextureIndex - - - Map of what wearables are included in each bake - - - Magic values to finalize the cache check hashes for each - bake - - - Default avatar texture, used to detect when a custom - texture is not set for a face - - - The event subscribers. null if no subcribers - - - Raises the AgentWearablesReply event - An AgentWearablesReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the CachedBakesReply event - An AgentCachedBakesReplyEventArgs object containing the - data returned from the data server AgentCachedTextureResponse - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the AppearanceSet event - An AppearanceSetEventArgs object indicating if the operatin was successfull - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the RebakeAvatarRequested event - An RebakeAvatarTexturesEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - A cache of wearables currently being worn - - - A cache of textures currently being worn - - - Incrementing serial number for AgentCachedTexture packets - - - Incrementing serial number for AgentSetAppearance packets - - - Indicates whether or not the appearance thread is currently - running, to prevent multiple appearance threads from running - simultaneously - - - Reference to our agent - - - - Timer used for delaying rebake on changing outfit - - - - - Main appearance thread - - - - - Default constructor - - A reference to our agent - - - - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread - - - - - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread - - Unused parameter - - - - Starts the appearance setting thread - - - - - Starts the appearance setting thread - - True to force rebaking, otherwise false - - - - Ask the server what textures our agent is currently wearing - - - - - Build hashes out of the texture assetIDs for each baking layer to - ask the simulator whether it has cached copies of each baked texture - - - - - Returns the AssetID of the asset that is currently being worn in a - given WearableType slot - - WearableType slot to get the AssetID for - The UUID of the asset being worn in the given slot, or - UUID.Zero if no wearable is attached to the given slot or wearables - have not been downloaded yet - - - - Add a wearable to the current outfit and set appearance - - Wearable to be added to the outfit - - - - Add a list of wearables to the current outfit and set appearance - - List of wearable inventory items to - be added to the outfit - - - - Remove a wearable from the current outfit and set appearance - - Wearable to be removed from the outfit - - - - Removes a list of wearables from the current outfit and set appearance - - List of wearable inventory items to - be removed from the outfit - - - - Replace the current outfit with a list of wearables and set appearance - - List of wearable inventory items that - define a new outfit - - - - Checks if an inventory item is currently being worn - - The inventory item to check against the agent - wearables - The WearableType slot that the item is being worn in, - or WearbleType.Invalid if it is not currently being worn - - - - Returns a copy of the agents currently worn wearables - - A copy of the agents currently worn wearables - Avoid calling this function multiple times as it will make - a copy of all of the wearable data each time - - - - Calls either or - depending on the value of - replaceItems - - List of wearable inventory items to add - to the outfit or become a new outfit - True to replace existing items with the - new list of items, false to add these items to the existing outfit - - - - Adds a list of attachments to our agent - - A List containing the attachments to add - If true, tells simulator to remove existing attachment - first - - - - Attach an item to our agent at a specific attach point - - A to attach - the on the avatar - to attach the item to - - - - Attach an item to our agent specifying attachment details - - The of the item to attach - The attachments owner - The name of the attachment - The description of the attahment - The to apply when attached - The of the attachment - The on the agent - to attach the item to - - - - Detach an item from our agent using an object - - An object - - - - Detach an item from our agent - - The inventory itemID of the item to detach - - - - Inform the sim which wearables are part of our current outfit - - - - - Replaces the Wearables collection with a list of new wearable items - - Wearable items to replace the Wearables collection with - - - - Calculates base color/tint for a specific wearable - based on its params - - All the color info gathered from wearable's VisualParams - passed as list of ColorParamInfo tuples - Base color/tint for the wearable - - - - Blocking method to populate the Wearables dictionary - - True on success, otherwise false - - - - Blocking method to populate the Textures array with cached bakes - - True on success, otherwise false - - - - Populates textures and visual params from a decoded asset - - Wearable to decode - - - - Blocking method to download and parse currently worn wearable assets - - True on success, otherwise false - - - - Get a list of all of the textures that need to be downloaded for a - single bake layer - - Bake layer to get texture AssetIDs for - A list of texture AssetIDs to download - - - - Helper method to lookup the TextureID for a single layer and add it - to a list if it is not already present - - - - - - - Blocking method to download all of the textures needed for baking - the given bake layers - - A list of layers that need baking - No return value is given because the baking will happen - whether or not all textures are successfully downloaded - - - - Blocking method to create and upload baked textures for all of the - missing bakes - - True on success, otherwise false - - - - Blocking method to create and upload a baked texture for a single - bake layer - - Layer to bake - True on success, otherwise false - - - - Blocking method to upload a baked texture - - Five channel JPEG2000 texture data to upload - UUID of the newly created asset on success, otherwise UUID.Zero - - - - Creates a dictionary of visual param values from the downloaded wearables - - A dictionary of visual param indices mapping to visual param - values for our agent that can be fed to the Baker class - - - - Create an AgentSetAppearance packet from Wearables data and the - Textures array and send it - - - - - Converts a WearableType to a bodypart or clothing WearableType - - A WearableType - AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown - - - - Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex - - A BakeType - The AvatarTextureIndex slot that holds the given BakeType - - - - Gives the layer number that is used for morph mask - - >A BakeType - Which layer number as defined in BakeTypeToTextures is used for morph mask - - - - Converts a BakeType to a list of the texture slots that make up that bake - - A BakeType - A list of texture slots that are inputs for the given bake - - - Triggered when an AgentWearablesUpdate packet is received, - telling us what our avatar is currently wearing - request. - - - Raised when an AgentCachedTextureResponse packet is - received, giving a list of cached bakes that were found on the - simulator - request. - - - - Raised when appearance data is sent to the simulator, also indicates - the main appearance thread is finished. - - request. - - - - Triggered when the simulator requests the agent rebake its appearance. - - - - - - Returns true if AppearanceManager is busy and trying to set or change appearance will fail - - - - - Contains information about a wearable inventory item - - - - Inventory ItemID of the wearable - - - AssetID of the wearable asset - - - WearableType of the wearable - - - AssetType of the wearable - - - Asset data for the wearable - - - - Data collected from visual params for each wearable - needed for the calculation of the color - - - - - Holds a texture assetID and the data needed to bake this layer into - an outfit texture. Used to keep track of currently worn textures - and baking data - - - - A texture AssetID - - - Asset data for the texture - - - Collection of alpha masks that needs applying - - - Tint that should be applied to the texture - - - Where on avatar does this texture belong - - - Contains the Event data returned from the data server from an AgentWearablesRequest - - - Construct a new instance of the AgentWearablesReplyEventArgs class - - - Contains the Event data returned from the data server from an AgentCachedTextureResponse - - - Construct a new instance of the AgentCachedBakesReplyEventArgs class - - - Contains the Event data returned from an AppearanceSetRequest - - - - Triggered when appearance data is sent to the sim and - the main appearance thread is done. - Indicates whether appearance setting was successful - - - Indicates whether appearance setting was successful - - - Contains the Event data returned from the data server from an RebakeAvatarTextures - - - - Triggered when the simulator sends a request for this agent to rebake - its appearance - - The ID of the Texture Layer to bake - - - The ID of the Texture Layer to bake - - - - Level of Detail mesh - - - - - Represents Mesh asset - - - - Initializes a new instance of an AssetMesh object - - - Initializes a new instance of an AssetMesh object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - - TODO: Encodes a scripts contents into a LSO Bytecode file - - - - - TODO: Decode LSO Bytecode into a string - - true - - - Override the base classes AssetType - - - - The current status of a texture request as it moves through the pipeline or final result of a texture request. - - - - The initial state given to a request. Requests in this state - are waiting for an available slot in the pipeline - - - A request that has been added to the pipeline and the request packet - has been sent to the simulator - - - A request that has received one or more packets back from the simulator - - - A request that has received all packets back from the simulator - - - A request that has taken longer than - to download OR the initial packet containing the packet information was never received - - - The texture request was aborted by request of the agent - - - The simulator replied to the request that it was not able to find the requested texture - - - - A callback fired to indicate the status or final state of the requested texture. For progressive - downloads this will fire each time new asset data is returned from the simulator. - - The indicating either Progress for textures not fully downloaded, - or the final result of the request after it has been processed through the TexturePipeline - The object containing the Assets ID, raw data - and other information. For progressive rendering the will contain - the data from the beginning of the file. For failed, aborted and timed out requests it will contain - an empty byte array. - - - - Texture request download handler, allows a configurable number of download slots which manage multiple - concurrent texture downloads from the - - This class makes full use of the internal - system for full texture downloads. - - - A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID - and also the Asset Texture ID, and the value is an object containing the current state of the request and also - the asset data as it is being re-assembled - - - Holds the reference to the client object - - - Maximum concurrent texture requests allowed at a time - - - An array of objects used to manage worker request threads - - - An array of worker slots which shows the availablity status of the slot - - - The primary thread which manages the requests. - - - true if the TexturePipeline is currently running - - - A synchronization object used by the primary thread - - - A refresh timer used to increase the priority of stalled requests - - - - Default constructor, Instantiates a new copy of the TexturePipeline class - - Reference to the instantiated object - - - - Initialize callbacks required for the TexturePipeline to operate - - - - - Shutdown the TexturePipeline and cleanup any callbacks or transfers - - - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - - - Sends the actual request packet to the simulator - - The image to download - Type of the image to download, either a baked - avatar texture or a normal texture - Priority level of the download. Default is - 1,013,000.0f - Number of quality layers to discard. - This controls the end marker of the data sent - Packet number to start the download at. - This controls the start marker of the data sent - Sending a priority of 0 and a discardlevel of -1 aborts - download - - - - Cancel a pending or in process texture request - - The texture assets unique ID - - - - Master Download Thread, Queues up downloads in the threadpool - - - - - The worker thread that sends the request and handles timeouts - - A object containing the request details - - - - Handle responses from the simulator that tell us a texture we have requested is unable to be located - or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use - - The sender - The EventArgs object containing the packet data - - - - Handles the remaining Image data that did not fit in the initial ImageData packet - - The sender - The EventArgs object containing the packet data - - - - Handle the initial ImageDataPacket sent from the simulator - - The sender - The EventArgs object containing the packet data - - - Current number of pending and in-process transfers - - - - A request task containing information and status of a request as it is processed through the - - - - The current which identifies the current status of the request - - - The Unique Request ID, This is also the Asset ID of the texture being requested - - - The slot this request is occupying in the threadpoolSlots array - - - The ImageType of the request. - - - The callback to fire when the request is complete, will include - the and the - object containing the result data - - - If true, indicates the callback will be fired whenever new data is returned from the simulator. - This is used to progressively render textures as portions of the texture are received. - - - An object that maintains the data of an request thats in-process. - Map layer request type @@ -20938,2542 +22451,1567 @@ Current world time - - - Access to the data server which allows searching for land, events, people, etc - - - - The event subscribers. null if no subcribers - - - Raises the EventInfoReply event - An EventInfoReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirEventsReply event - An DirEventsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the PlacesReply event - A PlacesReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirPlacesReply event - A DirPlacesReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirClassifiedsReply event - A DirClassifiedsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirGroupsReply event - A DirGroupsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirPeopleReply event - A DirPeopleReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirLandReply event - A DirLandReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - - Constructs a new instance of the DirectoryManager class - - An instance of GridClient - - - - Query the data server for a list of classified ads containing the specified string. - Defaults to searching for classified placed in any category, and includes PG, Adult and Mature - results. - - Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for - A UUID to correlate the results when the event is raised - - - - Query the data server for a list of classified ads which contain specified keywords (Overload) - - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for - The category to search - A set of flags which can be ORed to modify query options - such as classified maturity rating. - A UUID to correlate the results when the event is raised - - Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature - - UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); - - - - Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - - - - - Starts search for places (Overloaded) - - The event is raised when a response is received from the simulator - - Search text - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised - - - - Queries the dataserver for parcels of land which are flagged to be shown in search - - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for separated by a space character - A set of flags which can be ORed to modify query options - such as classified maturity rating. - The category to search - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised - - Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult - - UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); - - - - Additional information on the results can be obtained by using the ParcelManager.InfoRequest method - - - - - Starts a search for land sales using the directory - - The event is raised when a response is received from the simulator - - What type of land to search for. Auction, - estate, mainland, "first land", etc - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. - - - - Starts a search for land sales using the directory - - The event is raised when a response is received from the simulator - - What type of land to search for. Auction, - estate, mainland, "first land", etc - Maximum price to search for - Maximum area to search for - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. - - - - Send a request to the data server for land sales listings - - - Flags sent to specify query options - - Available flags: - Specify the parcel rating with one or more of the following: - IncludePG IncludeMature IncludeAdult - - Specify the field to pre sort the results with ONLY ONE of the following: - PerMeterSort NameSort AreaSort PricesSort - - Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order - SortAsc - - Specify additional filters to limit the results with one or both of the following: - LimitByPrice LimitByArea - - Flags can be combined by separating them with the | (pipe) character - - Additional details can be found in - - What type of land to search for. Auction, - Estate or Mainland - Maximum price to search for when the - DirFindFlags.LimitByPrice flag is specified in findFlags - Maximum area to search for when the - DirFindFlags.LimitByArea flag is specified in findFlags - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - The event will be raised with the response from the simulator - - There is no way to determine how many results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each reply. - - Any land set for sale to either anybody or specific to the connected agent will be included in the - results if the land is included in the query - - - // request all mainland, any maturity rating that is larger than 512 sq.m - StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); - - - - - Search for Groups - - The name or portion of the name of the group you wish to search for - Start from the match number - - - - - Search for Groups - - The name or portion of the name of the group you wish to search for - Start from the match number - Search flags - - - - - Search the People directory for other avatars - - The name or portion of the name of the avatar you wish to search for - - - - - - Search Places for parcels of land you personally own - - - - - Searches Places for land owned by the specified group - - ID of the group you want to recieve land list for (You must be a member of the group) - Transaction (Query) ID which can be associated with results from your request. - - - - Search the Places directory for parcels that are listed in search and contain the specified keywords - - A string containing the keywords to search for - Transaction (Query) ID which can be associated with results from your request. - - - - Search Places - All Options - - One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. - One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer - A string containing a list of keywords to search for separated by a space character - String Simulator Name to search in - LLUID of group you want to recieve results for - Transaction (Query) ID which can be associated with results from your request. - Transaction (Query) ID which can be associated with results from your request. - - - - Search All Events with specifid searchText in all categories, includes PG, Mature and Adult - - A string containing a list of keywords to search for separated by a space character - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - UUID of query to correlate results in callback. - - - - Search Events - - A string containing a list of keywords to search for separated by a space character - One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult - from the Enum - - Multiple flags can be combined by separating the flags with the | (pipe) character - "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled - For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - EventCategory event is listed under. - UUID of query to correlate results in callback. - - - Requests Event Details - ID of Event returned from the method - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Classified Ad categories - - - Classified is listed in the Any category - - - Classified is shopping related - - - Classified is - - - - - - - - - - - - - - - - - - - - - - - - Event Categories - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. - - Flags can be combined using the | (pipe) character, not all flags are available in all queries - - - - Query the People database - - - - - - - - - Query the Groups database - - - Query the Events database - - - Query the land holdings database for land owned by the currently connected agent - - - - - - Query the land holdings database for land which is owned by a Group - - - Specifies the query should pre sort the results based upon traffic - when searching the Places database - - - - - - - - - - - - - - - Specifies the query should pre sort the results in an ascending order when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the Name field when searching the land sales database. - This flag is only used when searching the land sales database - - - When set, only parcels less than the specified Price will be included when searching the land sales database. - This flag is only used when searching the land sales database - - - When set, only parcels greater than the specified Size will be included when searching the land sales database. - This flag is only used when searching the land sales database - - - - - - - - - Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - - - - - Land types to search dataserver for - - - - Search Auction, Mainland and Estate - - - Land which is currently up for auction - - - Parcels which are on the mainland (Linden owned) continents - - - Parcels which are on privately owned simulators - - - - The content rating of the event - - - - Event is PG - - - Event is Mature - - - Event is Adult - - - - Classified Ad Options - - There appear to be two formats the flags are packed in. - This set of flags is for the newer style - - - - - - - - - - - - - - - - - - - Classified ad query options - - - - Include all ads in results - - - Include PG ads in results - - - Include Mature ads in results - - - Include Adult ads in results - - - - The For Sale flag in PlacesReplyData - - - - Parcel is not listed for sale - - - Parcel is For Sale - - - - A classified ad on the grid - - - - UUID for this ad, useful for looking up detailed - information about it - - - The title of this classified ad - - - Flags that show certain options applied to the classified - - - Creation date of the ad - - - Expiration date of the ad - - - Price that was paid for this ad - - - Print the struct data as a string - A string containing the field name, and field value - - - - A parcel retrieved from the dataserver such as results from the - "For-Sale" listings or "Places" Search - - - - The unique dataserver parcel ID - This id is used to obtain additional information from the entry - by using the method - - - A string containing the name of the parcel - - - The size of the parcel - This field is not returned for Places searches - - - The price of the parcel - This field is not returned for Places searches - - - If True, this parcel is flagged to be auctioned - - - If true, this parcel is currently set for sale - - - Parcel traffic - - - Print the struct data as a string - A string containing the field name, and field value - - - - An Avatar returned from the dataserver - - - - Online status of agent - This field appears to be obsolete and always returns false - - - The agents first name - - - The agents last name - - - The agents - - - Print the struct data as a string - A string containing the field name, and field value - - - - Response to a "Groups" Search - - - - The Group ID - - - The name of the group - - - The current number of members - - - Print the struct data as a string - A string containing the field name, and field value - - - - Parcel information returned from a request - - Represents one of the following: - A parcel of land on the grid that has its Show In Search flag set - A parcel of land owned by the agent making the request - A parcel of land owned by a group the agent making the request is a member of - - - In a request for Group Land, the First record will contain an empty record - - Note: This is not the same as searching the land for sale data source - - - - The ID of the Agent of Group that owns the parcel - - - The name - - - The description - - - The Size of the parcel - - - The billable Size of the parcel, for mainland - parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller - than the ActualArea. For Estate land this will always be 0 - - - Indicates the ForSale status of the parcel - - - The Gridwide X position - - - The Gridwide Y position - - - The Z position of the parcel, or 0 if no landing point set - - - The name of the Region the parcel is located in - - - The Asset ID of the parcels Snapshot texture - - - The calculated visitor traffic - - - The billing product SKU - Known values are: - - 023Mainland / Full Region - 024Estate / Full Region - 027Estate / Openspace - 029Estate / Homestead - 129Mainland / Homestead (Linden Owned) - - - - - No longer used, will always be 0 - - - Get a SL URL for the parcel - A string, containing a standard SLURL - - - Print the struct data as a string - A string containing the field name, and field value - - - - An "Event" Listing summary - - - - The ID of the event creator - - - The name of the event - - - The events ID - - - A string containing the short date/time the event will begin - - - The event start time in Unixtime (seconds since epoch) - - - The events maturity rating - - - Print the struct data as a string - A string containing the field name, and field value - - - - The details of an "Event" - - - - The events ID - - - The ID of the event creator - - - The name of the event - - - The category - - - The events description - - - The short date/time the event will begin - - - The event start time in Unixtime (seconds since epoch) UTC adjusted - - - The length of the event in minutes - - - 0 if no cover charge applies - - - The cover charge amount in L$ if applicable - - - The name of the region where the event is being held - - - The gridwide location of the event - - - The maturity rating - - - Get a SL URL for the parcel where the event is hosted - A string, containing a standard SLURL - - - Print the struct data as a string - A string containing the field name, and field value - - - Contains the Event data returned from the data server from an EventInfoRequest - - - Construct a new instance of the EventInfoReplyEventArgs class - A single EventInfo object containing the details of an event - - - - A single EventInfo object containing the details of an event - - - - Contains the "Event" detail data returned from the data server - - - Construct a new instance of the DirEventsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Events" returned by the search query - - - The ID returned by - - - A list of "Events" returned by the data server - - - Contains the "Event" list data returned from the data server - - - Construct a new instance of PlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Places" returned by the data server query - - - The ID returned by - - - A list of "Places" returned by the data server - - - Contains the places data returned from the data server - - - Construct a new instance of the DirPlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing land data returned by the data server - - - The ID returned by - - - A list containing Places data returned by the data server - - - Contains the classified data returned from the data server - - - Construct a new instance of the DirClassifiedsReplyEventArgs class - A list of classified ad data returned from the data server - - - A list containing Classified Ads returned by the data server - - - Contains the group data returned from the data server - - - Construct a new instance of the DirGroupsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of groups data returned by the data server - - - The ID returned by - - - A list containing Groups data returned by the data server - - - Contains the people data returned from the data server - - - Construct a new instance of the DirPeopleReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of people data returned by the data server - - - The ID returned by - - - A list containing People data returned by the data server - - - Contains the land sales data returned from the data server - - - Construct a new instance of the DirLandReplyEventArgs class - A list of parcels for sale returned by the data server - - - A list containing land forsale data returned by the data server - - - - Abstract base for rendering plugins - - - - - Generates a basic mesh structure from a primitive - - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh - - - - Generates a basic mesh structure from a sculpted primitive and - texture - - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh - - - - Generates a series of faces, each face containing a mesh and - metadata - - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh - - - - Generates a series of faces for a sculpted prim, each face - containing a mesh and metadata - - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh - - - - Apply texture coordinate modifications from a - to a list of vertices - - Vertex list to modify texture coordinates for - Center-point of the face - Face texture parameters - - - - Capability to load TGAs to Bitmap - - - - - Represents a string of characters encoded with specific formatting properties - - - - A text string containing main text of the notecard - - - List of s embedded on the notecard - - - Construct an Asset of type Notecard - - - - Construct an Asset object of type Notecard - - A unique specific to this asset - A byte array containing the raw asset data - - - - Encode the raw contents of a string with the specific Linden Text properties - - - - - Decode the raw asset data including the Linden Text properties - - true if the AssetData was successfully decoded - - - Override the base classes AssetType - - - - Represents an Animation - - - - Default Constructor - - - - Construct an Asset object of type Animation - - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - Constants for the archiving module - - - - - The location of the archive control file - - - - - Path for the assets held in an archive - - - - - Path for the prims file - - - - - Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. - - - - - Path for region settings. - - - - - The character the separates the uuid from extension information in an archived asset filename - - - - - Extensions used for asset types in the archive - - - + - - No report + + - - Unknown report type + + - - Bug report + + - - Complaint report + + - - Customer service report + + - + + + + + + + - Bitflag field for ObjectUpdateCompressed data blocks, describing - which options are present for each object + Login Request Parameters - + + The URL of the Login Server + + + The number of milliseconds to wait before a login is considered + failed due to timeout + + + The request method + login_to_simulator is currently the only supported method + + + The Agents First name + + + The Agents Last name + + + A md5 hashed password + plaintext password will be automatically hashed + + + The agents starting location once logged in + Either "last", "home", or a string encoded URI + containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 + + + A string containing the client software channel information + Second Life Release + + + The client software version information + The official viewer uses: Second Life Release n.n.n.n + where n is replaced with the current version of the viewer + + + A string containing the platform information the agent is running on + + + A string hash of the network cards Mac Address + + + Unknown or deprecated + + + A string hash of the first disk drives ID used to identify this clients uniqueness + + + A string containing the viewers Software, this is not directly sent to the login server but + instead is used to generate the Version string + + + A string representing the software creator. This is not directly sent to the login server but + is used by the library to generate the Version information + + + If true, this agent agrees to the Terms of Service of the grid its connecting to + + Unknown - - Whether the object has a TreeSpecies + + An array of string sent to the login server to enable various options - - Whether the object has floating text ala llSetText + + A randomly generated ID to distinguish between login attempts. This value is only used + internally in the library and is never sent over the wire - - Whether the object has an active particle system - - - Whether the object has sound attached to it - - - Whether the object is attached to a root object or not - - - Whether the object has texture animation settings - - - Whether the object has an angular velocity - - - Whether the object has a name value pairs string - - - Whether the object has a Media URL set - - + - Specific Flags for MultipleObjectUpdate requests + Default constuctor, initializes sane default values - - None - - - Change position of prims - - - Change rotation of prims - - - Change size of prims - - - Perform operation on link set - - - Scale prims uniformly, same as selecing ctrl+shift in the - viewer. Used in conjunction with Scale - - + - Special values in PayPriceReply. If the price is not one of these - literal value of the price should be use + Instantiates new LoginParams object and fills in the values + + Instance of GridClient to read settings from + Login first name + Login last name + Password + Login channnel (application name) + Client version, should be application name + version number + + + + Instantiates new LoginParams object and fills in the values + + Instance of GridClient to read settings from + Login first name + Login last name + Password + Login channnel (application name) + Client version, should be application name + version number + URI of the login server + + + + The decoded data returned from the login server after a successful login - + + true, false, indeterminate + + + Login message of the day + + + M or PG, also agent_region_access and agent_access_max + + - Indicates that this pay option should be hidden + Parse LLSD Login Reply Data + + An + contaning the login response data + XML-RPC logins do not require this as XML-RPC.NET + automatically populates the struct properly using attributes + + + + - + + OK + + + Transfer completed + + + + + + + + + Unknown error occurred + + + Equivalent to a 404 error + + + Client does not have permission for that resource + + + Unknown status + + - Indicates that this pay option should have the default value + - + + + + + Unknown + + + Virtually all asset transfers use this channel + + - Contains the variables sent in an object update packet for objects. - Used to track position and movement of prims and avatars + - + - - + + Asset from the asset server - - + + Inventory item - - + + Estate asset, such as an estate covenant - - - - - - - - - - - - - - - - - - - + - Handles all network traffic related to prims and avatar positions and - movement. + - - The event subscribers, null of no subscribers + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Raises the ObjectProperties Event - A ObjectPropertiesEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectPropertiesUpdated Event - A ObjectPropertiesUpdatedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectPropertiesFamily Event - A ObjectPropertiesFamilyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarUpdate Event - A AvatarUpdateEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectDataBlockUpdate Event - A ObjectDataBlockUpdateEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the KillObject Event - A KillObjectEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarSitChanged Event - A AvatarSitChangedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the PayPriceReply Event - A PayPriceReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - Reference to the GridClient object - - - Does periodic dead reckoning calculation to convert - velocity and acceleration to new positions for objects - - + - Construct a new instance of the ObjectManager class + - A reference to the instance - + + + + + + + - Request information for a single object from a - you are currently connected to + Image file format - The the object is located - The Local ID of the object - + - Request information for multiple objects contained in - the same simulator + - The the objects are located - An array containing the Local IDs of the objects - + + Number of milliseconds passed since the last transfer + packet was received + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Number of milliseconds to wait for a transfer header packet if out of order data was received + + + The event subscribers. null if no subcribers + + + Raises the XferReceived event + A XferReceivedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AssetUploaded event + A AssetUploadedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the UploadProgress event + A UploadProgressEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the InitiateDownload event + A InitiateDownloadEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ImageReceiveProgress event + A ImageReceiveProgressEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Texture download cache + + + + Default constructor + + A reference to the GridClient object + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + UUID of the transaction + The callback to fire when the simulator responds with the asset data + + + + Request an asset download through the almost deprecated Xfer system + + Filename of the asset to request + Whether or not to delete the asset + off the server after it is retrieved + Use large transfer packets or not + UUID of the file to request, if filename is + left empty + Asset type of vFileID, or + AssetType.Unknown if filename is not empty + Sets the FilePath in the request to Cache + (4) if true, otherwise Unknown (0) is used + + + + + + + Use UUID.Zero if you do not have the + asset ID but have all the necessary permissions + The item ID of this asset in the inventory + Use UUID.Zero if you are not requesting an + asset from an object inventory + The owner of this asset + Asset type + Whether to prioritize this asset download or not + + + + + Used to force asset data into the PendingUpload property, ie: for raw terrain uploads + + An AssetUpload object containing the data to upload to the simulator + + + + Request an asset be uploaded to the simulator + + The Object containing the asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Request an asset be uploaded to the simulator + + The of the asset being uploaded + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Request an asset be uploaded to the simulator + + + Asset type to upload this data as + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Initiate an asset upload + + The ID this asset will have if the + upload succeeds + Asset type to upload this data as + Raw asset data to upload + Whether to store this asset on the local + simulator or the grid-wide asset server + The tranaction id for the upload + The transaction ID of this transfer + + - Attempt to purchase an original object, a copy, or the contents of - an object + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator - The the object is located - The Local ID of the object - Whether the original, a copy, or the object - contents are on sale. This is used for verification, if the this - sale type is not valid for the object the purchase will fail - Price of the object. This is used for - verification, if it does not match the actual price the purchase - will fail - Group ID that will be associated with the new - purchase - Inventory folder UUID where the object or objects - purchased should be placed + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress + transfer. + A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority + indicating an off-by-one error. + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + Request an image and fire a callback when the request is complete - BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, - 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); - - - - - - Request prices that should be displayed in pay dialog. This will triggger the simulator - to send us back a PayPriceReply which can be handled by OnPayPriceReply event - - The the object is located - The ID of the object - The result is raised in the event - - - - Select a single object. This will cause the to send us - an which will raise the event - - The the object is located - The Local ID of the object - - - - - Select a single object. This will cause the to send us - an which will raise the event - - The the object is located - The Local ID of the object - if true, a call to is - made immediately following the request - - - - - Select multiple objects. This will cause the to send us - an which will raise the event - - The the objects are located - An array containing the Local IDs of the objects - Should objects be deselected immediately after selection - - - - - Select multiple objects. This will cause the to send us - an which will raise the event - - The the objects are located - An array containing the Local IDs of the objects - - - - - Update the properties of an object - - The the object is located - The Local ID of the object - true to turn the objects physical property on - true to turn the objects temporary property on - true to turn the objects phantom property on - true to turn the objects cast shadows property on - - - - Sets the sale properties of a single object - - The the object is located - The Local ID of the object - One of the options from the enum - The price of the object - - - - Sets the sale properties of multiple objects - - The the objects are located - An array containing the Local IDs of the objects - One of the options from the enum - The price of the object - - - - Deselect a single object - - The the object is located - The Local ID of the object - - - - Deselect multiple objects. - - The the objects are located - An array containing the Local IDs of the objects - - - - Perform a click action on an object - - The the object is located - The Local ID of the object - - - - Perform a click action (Grab) on a single object - - The the object is located - The Local ID of the object - The texture coordinates to touch - The surface coordinates to touch - The face of the position to touch - The region coordinates of the position to touch - The surface normal of the position to touch (A normal is a vector perpindicular to the surface) - The surface binormal of the position to touch (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - - - - Create (rez) a new prim object in a simulator - - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties - - - - Create (rez) a new prim object in a simulator - - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Specify the - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties - - - - Rez a Linden tree - - A reference to the object where the object resides - The size of the tree - The rotation of the tree - The position of the tree - The Type of tree - The of the group to set the tree to, - or UUID.Zero if no group is to be set - true to use the "new" Linden trees, false to use the old - - - - Rez grass and ground cover - - A reference to the object where the object resides - The size of the grass - The rotation of the grass - The position of the grass - The type of grass from the enum - The of the group to set the tree to, - or UUID.Zero if no group is to be set - - - - Set the textures to apply to the faces of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply - - - - Set the textures to apply to the faces of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply - A media URL (not used) - - - - Set the Light data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Set the flexible data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Set the sculptie texture and data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Unset additional primitive parameters on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The extra parameters to set - - - - Link multiple prims into a linkset - - A reference to the object where the objects reside - An array which contains the IDs of the objects to link - The last object in the array will be the root object of the linkset TODO: Is this true? - - - - Delink/Unlink multiple prims from a linkset - - A reference to the object where the objects reside - An array which contains the IDs of the objects to delink - - - - Change the rotation of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation of the object - - - - Set the name of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new name of the object - - - - Set the name of multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the name of - An array which contains the new names of the objects - - - - Set the description of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new description of the object - - - - Set the descriptions of multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the description of - An array which contains the new descriptions of the objects - - - - Attach an object to this avatar - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The point on the avatar the object will be attached - The rotation of the attached object - - - - Drop an attached object from this avatar - - A reference to the - object where the objects reside. This will always be the simulator the avatar is currently in - - The object's ID which is local to the simulator the object is in - - - - Detach an object from yourself - - A reference to the - object where the objects reside - - This will always be the simulator the avatar is currently in - - An array which contains the IDs of the objects to detach - - - - Change the position of an object, Will change position of entire linkset - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object - - - - Change the position of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object - if true, will change position of (this) child prim only, not entire linkset - - - - Change the Scale (size) of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change scale of this prim only, not entire linkset - True to resize prims uniformly - - - - Change the Rotation of an object that is either a child or a whole linkset - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change rotation of this prim only, not entire linkset - - - - Send a Multiple Object Update packet to change the size, scale or rotation of a primitive - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation, size, or position of the target object - The flags from the Enum - - - - Deed an object (prim) to a group, Object must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The of the group to deed the object to - - - - Deed multiple objects (prims) to a group, Objects must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - An array which contains the IDs of the objects to deed - The of the group to deed the object to - - - - Set the permissions on multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the permissions on - The new Who mask to set - The new Permissions mark to set - TODO: What does this do? - - - - Request additional properties for an object - - A reference to the object where the object resides - - - - - Request additional properties for an object - - A reference to the object where the object resides - Absolute UUID of the object - Whether to require server acknowledgement of this request - - - - Set the ownership of a list of objects to the specified group - - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the group id on - The Groups ID - - - - Update current URL of the previously set prim media - - UUID of the prim - Set current URL to this - Prim face number - Simulator in which prim is located - - - - Set object media - - UUID of the prim - Array the length of prims number of faces. Null on face indexes where there is - no media, on faces which contain the media - Simulatior in which prim is located - - - - Retrieve information about object media - - UUID of the primitive - Simulator where prim is located - Call this callback when done - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - A terse object update, used when a transformation matrix or - velocity/acceleration for an object changes but nothing else - (scale/position/rotation/acceleration/velocity) - - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Setup construction data for a basic primitive shape - - Primitive shape to construct - Construction data that can be plugged into a - - - - - - - - - - - - - - - - - - - - Set the Shape data of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - Data describing the prim shape - - - - Set the Material data of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new material of the object - - - - - - - - - - - - - - - - - - - - - Raised when the simulator sends us data containing - A , Foliage or Attachment - - - - - Raised when the simulator sends us data containing - additional information - - - - - Raised when the simulator sends us data containing - Primitive.ObjectProperties for an object we are currently tracking - - - Raised when the simulator sends us data containing - additional and details - - - - Raised when the simulator sends us data containing - updated information for an - - - Raised when the simulator sends us data containing - and movement changes - - - Raised when the simulator sends us data containing - updates to an Objects DataBlock - - - Raised when the simulator informs us an - or is no longer within view - - - Raised when the simulator sends us data containing - updated sit information for our - - - Raised when the simulator sends us data containing - purchase price information for a - - - - Callback for getting object media data via CAP - - Indicates if the operation was succesfull - Object media version string - Array indexed on prim face of media entry data - - - Provides data for the event - The event occurs when the simulator sends - an containing a Primitive, Foliage or Attachment data - Note 1: The event will not be raised when the object is an Avatar - Note 2: It is possible for the to be - raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or - if an Avatar crosses the border into a new simulator and returns to the current simulator - - - The following code example uses the , , and - properties to display new Primitives and Attachments on the window. - - // Subscribe to the event that gives us prim and foliage information - Client.Objects.ObjectUpdate += Objects_ObjectUpdate; - - - private void Objects_ObjectUpdate(object sender, PrimEventArgs e) + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) { - Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); } + } - - - - - - - - Construct a new instance of the PrimEventArgs class - - The simulator the object originated from - The Primitive - The simulator time dilation - The prim was not in the dictionary before this update - true if the primitive represents an attachment to an agent - - - Get the simulator the originated from - - - Get the details - - - true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) - - - true if the is attached to an - - - Get the simulator Time Dilation - - - Provides data for the event - The event occurs when the simulator sends - an containing Avatar data - Note 1: The event will not be raised when the object is an Avatar - Note 2: It is possible for the to be - raised twice for the same avatar if for example the avatar moved to a new simulator, then returned to the current simulator - - - The following code example uses the property to make a request for the top picks - using the method in the class to display the names - of our own agents picks listings on the window. + Request an image and use an inline anonymous method to handle the downloaded texture data - // subscribe to the AvatarUpdate event to get our information - Client.Objects.AvatarUpdate += Objects_AvatarUpdate; - Client.Avatars.AvatarPicksReply += Avatars_AvatarPicksReply; - - private void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + ); + + Request a texture, decode the texture to a bitmap image and apply it to a imagebox + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) { - // we only want our own data - if (e.Avatar.LocalID == Client.Self.LocalID) - { - // Unsubscribe from the avatar update event to prevent a loop - // where we continually request the picks every time we get an update for ourselves - Client.Objects.AvatarUpdate -= Objects_AvatarUpdate; - // make the top picks request through AvatarManager - Client.Avatars.RequestAvatarPicks(e.Avatar.ID); - } - } + ManagedImage imgData; + Image bitmap; - private void Avatars_AvatarPicksReply(object sender, AvatarPicksReplyEventArgs e) - { - // we'll unsubscribe from the AvatarPicksReply event since we now have the data - // we were looking for - Client.Avatars.AvatarPicksReply -= Avatars_AvatarPicksReply; - // loop through the dictionary and extract the names of the top picks from our profile - foreach (var pickName in e.Picks.Values) + if (state == TextureRequestState.Finished) { - Console.WriteLine(pickName); - } + OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); + picInsignia.Image = bitmap; + } } + } - - - + - Construct a new instance of the AvatarUpdateEventArgs class + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator - The simulator the packet originated from - The data - The simulator time dilation - The avatar was not in the dictionary before this update + The of the texture asset to download + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data - - Get the simulator the object originated from + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data - - Get the data + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request - - Get the simulator time dilation + + + Cancel a texture request + + The texture assets - - true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) + + + Requests download of a mesh asset + + UUID of the mesh asset + Callback when the request completes - - Provides additional primitive data for the event - The event occurs when the simulator sends - an containing additional details for a Primitive, Foliage data or Attachment data - The event is also raised when a request is - made. - + + + Lets TexturePipeline class fire the progress event + + The texture ID currently being downloaded + the number of bytes transferred + the total number of bytes expected + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator responds sends + + + Raised during upload completes + + + Raised during upload with progres update + + + Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files + + + Fired when a texture is in the process of being downloaded by the TexturePipeline class + + + + Callback used for various asset download requests + + Transfer information + Downloaded asset, null on fail + + + + Callback used upon competition of baked texture upload + + Asset UUID of the newly uploaded baked texture + + + + A callback that fires upon the completition of the RequestMesh call + + Was the download successfull + Resulting mesh or null on problems + + + Xfer data + + + Upload data + + + Filename used on the simulator + + + Filename used by the client + + + UUID of the image that is in progress + + + Number of bytes received so far + + + Image size in bytes + + + + Static pre-defined animations available to all agents + + + + Agent with afraid expression on face + + + Agent aiming a bazooka (right handed) + + + Agent aiming a bow (left handed) + + + Agent aiming a hand gun (right handed) + + + Agent aiming a rifle (right handed) + + + Agent with angry expression on face + + + Agent hunched over (away) + + + Agent doing a backflip + + + Agent laughing while holding belly + + + Agent blowing a kiss + + + Agent with bored expression on face + + + Agent bowing to audience + + + Agent brushing himself/herself off + + + Agent in busy mode + + + Agent clapping hands + + + Agent doing a curtsey bow + + + Agent crouching + + + Agent crouching while walking + + + Agent crying + + + Agent unanimated with arms out (e.g. setting appearance) + + + Agent re-animated after set appearance finished + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent on ground unanimated + + + Agent boozing it up + + + Agent with embarassed expression on face + + + Agent with afraid expression on face + + + Agent with angry expression on face + + + Agent with bored expression on face + + + Agent crying + + + Agent showing disdain (dislike) for something + + + Agent with embarassed expression on face + + + Agent with frowning expression on face + + + Agent with kissy face + + + Agent expressing laughgter + + + Agent with open mouth + + + Agent with repulsed expression on face + + + Agent expressing sadness + + + Agent shrugging shoulders + + + Agent with a smile + + + Agent expressing surprise + + + Agent sticking tongue out + + + Agent with big toothy smile + + + Agent winking + + + Agent expressing worry + + + Agent falling down + + + Agent walking (feminine version) + + + Agent wagging finger (disapproval) + + + I'm not sure I want to know + + + Agent in superman position + + + Agent in superman position + + + Agent greeting another + + + Agent holding bazooka (right handed) + + + Agent holding a bow (left handed) + + + Agent holding a handgun (right handed) + + + Agent holding a rifle (right handed) + + + Agent throwing an object (right handed) + + + Agent in static hover + + + Agent hovering downward + + + Agent hovering upward + + + Agent being impatient + + + Agent jumping + + + Agent jumping with fervor + + + Agent point to lips then rear end + + + Agent landing from jump, finished flight, etc + + + Agent laughing + + + Agent landing from jump, finished flight, etc + + + Agent sitting on a motorcycle + + + + + + Agent moving head side to side + + + Agent moving head side to side with unhappy expression + + + Agent taunting another + + + + + + Agent giving peace sign + + + Agent pointing at self + + + Agent pointing at another + + + Agent preparing for jump (bending knees) + + + Agent punching with left hand + + + Agent punching with right hand + + + Agent acting repulsed + + + Agent trying to be Chuck Norris + + + Rocks, Paper, Scissors 1, 2, 3 + + + Agent with hand flat over other hand + + + Agent with fist over other hand + + + Agent with two fingers spread over other hand + + + Agent running + + + Agent appearing sad + + + Agent saluting + + + Agent shooting bow (left handed) + + + Agent cupping mouth as if shouting + + + Agent shrugging shoulders + + + Agent in sit position + + + Agent in sit position (feminine) + + + Agent in sit position (generic) + + + Agent sitting on ground + + + Agent sitting on ground + + + + + + Agent sleeping on side + + + Agent smoking + + + Agent inhaling smoke + + + + + + Agent taking a picture + + + Agent standing + + + Agent standing up + + + Agent standing + + + Agent standing + + + Agent standing + + + Agent standing + + + Agent stretching + + + Agent in stride (fast walk) + + + Agent surfing + + + Agent acting surprised + + + Agent striking with a sword + + + Agent talking (lips moving) + + + Agent throwing a tantrum + + + Agent throwing an object (right handed) + + + Agent trying on a shirt + + + Agent turning to the left + + + Agent turning to the right + + + Agent typing + + + Agent walking + + + Agent whispering + + + Agent whispering with fingers in mouth + + + Agent winking + + + Agent winking + + + Agent worried + + + Agent nodding yes + + + Agent nodding yes with happy face + + + Agent floating with legs and arms crossed + + + + A dictionary containing all pre-defined animations + + A dictionary containing the pre-defined animations, + where the key is the animations ID, and the value is a string + containing a name to identify the purpose of the animation + + + + Level of Detail mesh + + + + + A linkset asset, containing a parent primitive and zero or more children + + + + Initializes a new instance of an AssetPrim object + + + + Initializes a new instance of an AssetPrim object + + A unique specific to this asset + A byte array containing the raw asset data + + + + + + + + + + + + + + Override the base classes AssetType + + + + Only used internally for XML serialization/deserialization + + + + + The deserialized form of a single primitive in a linkset asset + + + + + + + + + The event subscribers, null of no subscribers + + + Raises the AttachedSound Event + A AttachedSoundEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AttachedSoundGainChange Event + A AttachedSoundGainChangeEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SoundTrigger Event + A SoundTriggerEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the PreloadSound Event + A PreloadSoundEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + + Construct a new instance of the SoundManager class, used for playing and receiving + sound assets + + A reference to the current GridClient instance + + + + Plays a sound in the current region at full volume from avatar position + + UUID of the sound to be played + + + + Plays a sound in the current region at full volume + + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + + + + Plays a sound in the current region + + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + + Plays a sound in the specified sim + + UUID of the sound to be played. + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + + Play a sound asset + + UUID of the sound to be played. + handle id for the sim to be played in. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends us data containing + sound + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Provides data for the event + The event occurs when the simulator sends + the sound data which emits from an agents attachment - The following code example uses the , and - - properties to display new attachments and send a request for additional properties containing the name of the - attachment then display it on the window. - - // Subscribe to the event that provides additional primitive details - Client.Objects.ObjectProperties += Objects_ObjectProperties; - - // handle the properties data that arrives - private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) + The following code example shows the process to subscribe to the event + and a stub to handle the data passed from the simulator + + // Subscribe to the AttachedSound event + Client.Sound.AttachedSound += Sound_AttachedSound; + + // process the data raised in the event here + private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) { - Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); - } + // ... Process AttachedSoundEventArgs here ... + } - + - Construct a new instance of the ObjectPropertiesEventArgs class + Construct a new instance of the SoundTriggerEventArgs class - The simulator the object is located - The primitive Properties + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + The volume level + The - - Get the simulator the object is located + + Simulator where the event originated - - Get the primitive properties + + Get the sound asset id - - Provides additional primitive data for the event - The event occurs when the simulator sends - an containing additional details for a Primitive or Foliage data that is currently - being tracked in the dictionary - The event is also raised when a request is - made and is enabled - + + Get the ID of the owner - + + Get the ID of the Object + + + Get the volume level + + + Get the + + + Provides data for the event + The event occurs when an attached sound + changes its volume level + + - Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class - - The simulator the object is located - The Primitive - The primitive Properties + Construct a new instance of the AttachedSoundGainChangedEventArgs class + + Simulator where the event originated + The ID of the Object + The new volume level - - Get the simulator the object is located + + Simulator where the event originated - - Get the primitive details + + Get the ID of the Object - - Get the primitive properties + + Get the volume level - - Provides additional primitive data, permissions and sale info for the event - The event occurs when the simulator sends - an containing additional details for a Primitive, Foliage data or Attachment. This includes - Permissions, Sale info, and other basic details on an object - The event is also raised when a request is - made, the viewer equivalent is hovering the mouse cursor over an object - - - - Get the simulator the object is located - - - - - - - - - Provides primitive data containing updated location, velocity, rotation, textures for the event - The event occurs when the simulator sends updated location, velocity, rotation, etc - - - - Get the simulator the object is located - - - Get the primitive details - - - - - - - - - + + Provides data for the event + The event occurs when the simulator forwards + a request made by yourself or another agent to play either an asset sound or a built in sound + + Requests to play sounds where the is not one of the built-in + will require sending a request to download the sound asset before it can be played + + + The following code example uses the , + and + properties to display some information on a sound request on the window. + + // subscribe to the event + Client.Sound.SoundTrigger += Sound_SoundTrigger; - + // play the pre-defined BELL_TING sound + Client.Sound.SendSoundTrigger(Sounds.BELL_TING); + + // handle the response data + private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) + { + Console.WriteLine("{0} played the sound {1} at volume {2}", + e.OwnerID, e.SoundID, e.Gain); + } + + - - Get the simulator the object is located - - - Get the primitive details - - - - - - - - - - - - - - - Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the - event - - - Get the simulator the object is located - - - The LocalID of the object - - + - Provides updates sit position data + Construct a new instance of the SoundTriggerEventArgs class + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + The ID of the objects parent + The volume level + The regionhandle + The source position - - Get the simulator the object is located + + Simulator where the event originated - - + + Get the sound asset id - - + + Get the ID of the owner - - + + Get the ID of the Object - - + + Get the ID of the objects parent + + + Get the volume level + + + Get the regionhandle + + + Get the source position + + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + + + + + + Construct a new instance of the PreloadSoundEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + + + Simulator where the event originated + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + + A Name Value pair with additional settings, used in the protocol + primarily to transmit avatar names and active group in object packets - - Get the simulator the object is located - - + - + - + - - - Indicates if the operation was successful - + + - - - Media version string - + + - + - Array of media entries indexed by face number + Constructor that takes all the fields as parameters + + + + + - + - - - - - - + Constructor that takes a single line from a NameValue field - - - De-serialization constructor for the InventoryNode Class - + + Type of the value - - - Serialization handler for the InventoryNode Class - + + Unknown - - - De-serialization handler for the InventoryNode Class - + + String value - + + + + + + + + + + + + + + Deprecated + + + String value, but designated as an asset + + + + + - - + - + - + - + - - - For inventory folder nodes specifies weather the folder needs to be - refreshed from the server - - - - - A Wrapper around openjpeg to encode and decode images to and from byte arrays - - - - TGA Header size - - - OpenJPEG is not threadsafe, so this object is used to lock - during calls into unmanaged code - - - - Encode a object into a byte array - - The object to encode - true to enable lossless conversion, only useful for small images ie: sculptmaps - A byte array containing the encoded Image object - - - - Encode a object into a byte array - - The object to encode - a byte array of the encoded image - - - - Decode JPEG2000 data to an and - - - JPEG2000 encoded data - ManagedImage object to decode to - Image object to decode to - True if the decode succeeds, otherwise false - - + - - - - - - - - - - - + + - - - Encode a object into a byte array - - The source object to encode - true to enable lossless decoding - A byte array containing the source Bitmap object + + - - - Defines the beginning and ending file positions of a layer in an - LRCP-progression JPEG2000 file - + + - - - This structure is used to marshal both encoded and decoded images. - MUST MATCH THE STRUCT IN dotnet.h! - + + - - - Information about a single packet in a JPEG2000 stream - - - - Packet start position - - - Packet header end position - - - Packet end position - - - = - - - Number of times we've received an unknown CAPS exception in series. - - - For exponential backoff on error. - - - X position of this patch - - - Y position of this patch - - - A 16x16 array of floats holding decompressed layer data - - - - Creates a LayerData packet for compressed land data given a full - simulator heightmap and an array of indices of patches to compress - - A 256 * 256 array of floating point values - specifying the height at each meter in the simulator - Array of indexes in the 16x16 grid of patches - for this simulator. For example if 1 and 17 are specified, patches - x=1,y=0 and x=1,y=1 are sent - - - - - Add a patch of terrain to a BitPacker - - BitPacker to write the patch to - Heightmap of the simulator, must be a 256 * - 256 float array - X offset of the patch to create, valid values are - from 0 to 15 - Y offset of the patch to create, valid values are - from 0 to 15 - - - - Checks the instance back into the object pool - - - - - Returns an instance of the class that has been checked out of the Object Pool. - + + Describes tasks returned in LandStatReply @@ -24012,1057 +24550,519 @@ - + - Extract the avatar UUID encoded in a SIP URI - - - - - - - Permissions for control of object media + Holds group information for Avatars such as those you might find in a profile - + + true of Avatar accepts group notices + + + Groups Key + + + Texture Key for groups insignia + + + Name of the group + + + Powers avatar has in the group + + + Avatars Currently selected title + + + true of Avatar has chosen to list this in their profile + + - Style of cotrols that shold be displayed to the user + Contains an animation currently being played by an agent - - - Class representing media data for a single face - + + The ID of the animation asset - - Is display of the alternative image enabled + + A number to indicate start order of currently playing animations + On Linden Grids this number is unique per region, with OpenSim it is per client - - Should media auto loop - - - Shoule media be auto played - - - Auto scale media to prim face - - - Should viewer automatically zoom in on the face when clicked - - - Should viewer interpret first click as interaction with the media - or when false should the first click be treated as zoom in commadn - - - Style of controls viewer should display when - viewer media on this face - - - Starting URL for the media - - - Currently navigated URL - - - Media height in pixes - - - Media width in pixels - - - Who can controls the media - - - Who can interact with the media - - - Is URL whitelist enabled - - - Array of URLs that are whitelisted - - - - Serialize to OSD - - OSDMap with the serialized data - - - - Deserialize from OSD data - - Serialized OSD data - Deserialized object - - - - Represents a Sound Asset - - - - Initializes a new instance of an AssetSound object - - - Initializes a new instance of an AssetSound object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - - TODO: Encodes a sound file - - - - - TODO: Decode a sound file - - true - - - Override the base classes AssetType - - - - Represents an AssetScriptBinary object containing the - LSO compiled bytecode of an LSL script - - - - Initializes a new instance of an AssetScriptBinary object - - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - - TODO: Encodes a scripts contents into a LSO Bytecode file - - - - - TODO: Decode LSO Bytecode into a string - - true - - - Override the base classes AssetType - - - - Simulator (region) properties - - - - No flags set - - - Agents can take damage and be killed - - - Landmarks can be created here - - - Home position can be set in this sim - - - Home position is reset when an agent teleports away - - - Sun does not move - - - No object, land, etc. taxes - - - Disable heightmap alterations (agents can still plant - foliage) - - - Land cannot be released, sold, or purchased - - - All content is wiped nightly - - - Unknown: Related to the availability of an overview world map tile.(Think mainland images when zoomed out.) - - - Unknown: Related to region debug flags. Possibly to skip processing of agent interaction with world. - - - Region does not update agent prim interest lists. Internal debugging option. - - - No collision detection for non-agent objects - - - No scripts are ran - - - All physics processing is turned off - - - Region can be seen from other regions on world map. (Legacy world map option?) - - - Region can be seen from mainland on world map. (Legacy world map option?) - - - Agents not explicitly on the access list can visit the region. - - - Traffic calculations are not run across entire region, overrides parcel settings. - - - Flight is disabled (not currently enforced by the sim) - - - Allow direct (p2p) teleporting - - - Estate owner has temporarily disabled scripting - - - Restricts the usage of the LSL llPushObject function, applies to whole region. - - - Deny agents with no payment info on file - - - Deny agents with payment info on file - - - Deny agents who have made a monetary transaction - - - Parcels within the region may be joined or divided by anyone, not just estate owners/managers. - - - Abuse reports sent from within this region are sent to the estate owner defined email. - - - Region is Voice Enabled - - - Removes the ability from parcel owners to set their parcels to show in search. - - - Deny agents who have not been age verified from entering the region. - - - - Access level for a simulator - - - - Unknown or invalid access level - - - Trial accounts allowed - - - PG rating - - - Mature rating - - - Adult rating - - - Simulator is offline - - - Simulator does not exist - - - - - - - - A public reference to the client that this Simulator object - is attached to - - - A Unique Cache identifier for this simulator - - - The capabilities for this simulator - - + - - The current version of software this simulator is running - - - - - - A 64x64 grid of parcel coloring values. The values stored - in this array are of the type - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true if your agent has Estate Manager rights on this region - - - - - - - - - - - - Statistics information for this simulator and the - connection to the simulator, calculated by the simulator itself - and the library - - - The regions Unique ID - - - The physical data center the simulator is located - Known values are: - - Dallas - Chandler - SF - - - - - The CPU Class of the simulator - Most full mainland/estate sims appear to be 5, - Homesteads and Openspace appear to be 501 - - - The number of regions sharing the same CPU as this one - "Full Sims" appear to be 1, Homesteads appear to be 4 - - - The billing product name - Known values are: - - Mainland / Full Region (Sku: 023) - Estate / Full Region (Sku: 024) - Estate / Openspace (Sku: 027) - Estate / Homestead (Sku: 029) - Mainland / Homestead (Sku: 129) (Linden Owned) - Mainland / Linden Homes (Sku: 131) - - - - - The billing product SKU - Known values are: - - 023 Mainland / Full Region - 024 Estate / Full Region - 027 Estate / Openspace - 029 Estate / Homestead - 129 Mainland / Homestead (Linden Owned) - 131 Linden Homes / Full Region - - - - - The current sequence number for packets sent to this - simulator. Must be Interlocked before modifying. Only - useful for applications manipulating sequence numbers - - + - A thread-safe dictionary containing avatars in a simulator + Holds group information on an individual profile pick - + - A thread-safe dictionary containing primitives in a simulator + Retrieve friend status notifications, and retrieve avatar names and + profiles - - - Provides access to an internal thread-safe dictionary containing parcel - information found in this simulator - - - - - Checks simulator parcel map to make sure it has downloaded all data successfully - - true if map is full (contains no 0's) - - - Used internally to track sim disconnections - - - Event that is triggered when the simulator successfully - establishes a connection - - - Whether this sim is currently connected or not. Hooked up - to the property Connected - - - Coarse locations of avatars in this simulator - - - AvatarPositions key representing TrackAgent target - - - Sequence numbers of packets we've received - (for duplicate checking) - - - Packets we sent out that need ACKs from the simulator - - - Sequence number for pause/resume - - - Indicates if UDP connection to the sim is fully established - - - - - - Reference to the GridClient object - IPEndPoint of the simulator - handle of the simulator - - - - Called when this Simulator object is being destroyed - - - - - Attempt to connect to this simulator - - Whether to move our agent in to this sim or not - True if the connection succeeded or connection status is - unknown, false if there was a failure - - - - Initiates connection to the simulator - - - - - Disconnect from this simulator - - - - - Instructs the simulator to stop sending update (and possibly other) packets - - - - - Instructs the simulator to resume sending update packets (unpause) - - - - - Retrieve the terrain height at a given coordinate - - Sim X coordinate, valid range is from 0 to 255 - Sim Y coordinate, valid range is from 0 to 255 - The terrain height at the given point if the - lookup was successful, otherwise 0.0f - True if the lookup was successful, otherwise false - - - - Sends a packet - - Packet to be sent - - - - - - - - - Returns Simulator Name as a String - - - - - - - - - - - - - - - - - - - Sends out pending acknowledgements - - Number of ACKs sent - - - - Resend unacknowledged packets - - - - - Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - - - - The IP address and port of the server - - - Whether there is a working connection to the simulator or - not - - - Coarse locations of avatars in this simulator - - - AvatarPositions key representing TrackAgent target - - - Indicates if UDP connection to the sim is fully established - - - - Simulator Statistics - - - - Total number of packets sent by this simulator to this agent - - - Total number of packets received by this simulator to this agent - - - Total number of bytes sent by this simulator to this agent - - - Total number of bytes received by this simulator to this agent - - - Time in seconds agent has been connected to simulator - - - Total number of packets that have been resent - - - Total number of resent packets recieved - - - Total number of pings sent to this simulator by this agent - - - Total number of ping replies sent to this agent by this simulator - - - - Incoming bytes per second - - It would be nice to have this claculated on the fly, but - this is far, far easier - - - - Outgoing bytes per second - - It would be nice to have this claculated on the fly, but - this is far, far easier - - - Time last ping was sent - - - ID of last Ping sent - - - - - - - - - Current time dilation of this simulator - - - Current Frames per second of simulator - - - Current Physics frames per second of simulator - - - - - - - - - - - - - - - - - - - - - - - - - - - Total number of objects Simulator is simulating - - - Total number of Active (Scripted) objects running - - - Number of agents currently in this simulator - - - Number of agents in neighbor simulators - - - Number of Active scripts running in this simulator - - - - - - - - - - - - Number of downloads pending - - - Number of uploads pending - - - - - - - - - Number of local uploads pending - - - Unacknowledged bytes in queue - - - - Exception class to identify inventory exceptions - - - - - Responsible for maintaining inventory structure. Inventory constructs nodes - and manages node children as is necessary to maintain a coherant hirarchy. - Other classes should not manipulate or create InventoryNodes explicitly. When - A node's parent changes (when a folder is moved, for example) simply pass - Inventory the updated InventoryFolder and it will make the appropriate changes - to its internal representation. - - - + The event subscribers, null of no subscribers - - Raises the InventoryObjectUpdated Event - A InventoryObjectUpdatedEventArgs object containing + + Raises the AvatarAnimation Event + An AvatarAnimationEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the InventoryObjectRemoved Event - A InventoryObjectRemovedEventArgs object containing + + Raises the AvatarAppearance Event + A AvatarAppearanceEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the InventoryObjectAdded Event - A InventoryObjectAddedEventArgs object containing + + Raises the UUIDNameReply Event + A UUIDNameReplyEventArgs object containing the data sent from the simulator - + Thread sync lock object - - - Returns the contents of the specified folder - - A folder's UUID - The contents of the folder corresponding to folder - When folder does not exist in the inventory + + The event subscribers, null of no subscribers - - - Updates the state of the InventoryNode and inventory data structure that - is responsible for the InventoryObject. If the item was previously not added to inventory, - it adds the item, and updates structure accordingly. If it was, it updates the - InventoryNode, changing the parent node if item.parentUUID does - not match node.Parent.Data.UUID. - - You can not set the inventory root folder using this method - - The InventoryObject to store + + Raises the AvatarInterestsReply Event + A AvatarInterestsReplyEventArgs object containing + the data sent from the simulator - - - Removes the InventoryObject and all related node data from Inventory. - - The InventoryObject to remove. + + Thread sync lock object - - - Used to find out if Inventory contains the InventoryObject - specified by uuid. - - The UUID to check. - true if inventory contains uuid, false otherwise + + The event subscribers, null of no subscribers - - - Saves the current inventory structure to a cache file - - Name of the cache file to save to + + Raises the AvatarPropertiesReply Event + A AvatarPropertiesReplyEventArgs object containing + the data sent from the simulator - - - Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. - - Name of the cache file to load - The number of inventory items sucessfully reconstructed into the inventory node tree + + Thread sync lock object - + + The event subscribers, null of no subscribers + + + Raises the AvatarGroupsReply Event + A AvatarGroupsReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarPickerReply Event + A AvatarPickerReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffectPointAt Event + A ViewerEffectPointAtEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffectLookAt Event + A ViewerEffectLookAtEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffect Event + A ViewerEffectEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarPicksReply Event + A AvatarPicksReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the PickInfoReply Event + A PickInfoReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarClassifiedReply Event + A AvatarClassifiedReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ClassifiedInfoReply Event + A ClassifiedInfoReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + + Represents other avatars + + + + + Tracks the specified avatar on your map + Avatar ID to track + + + + Request a single avatar name + + The avatar key to retrieve a name for + + + + Request a list of avatar names + + The avatar keys to retrieve names for + + + + Start a request for Avatar Properties + + + + + + Search for an avatar (first name, last name) + + The name to search for + An ID to associate with this query + + + + Start a request for Avatar Picks + + UUID of the avatar + + + + Start a request for Avatar Classifieds + + UUID of the avatar + + + + Start a request for details of a specific profile pick + + UUID of the avatar + UUID of the profile pick + + + + Start a request for details of a specific profile classified + + UUID of the avatar + UUID of the profile classified + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + Raised when the simulator sends us data containing - ... + an agents animation playlist - + Raised when the simulator sends us data containing - ... + the appearance information for an agent - + Raised when the simulator sends us data containing - ... + agent names/id values - - - The root folder of this avatars inventory - + + Raised when the simulator sends us data containing + the interests listed in an agents profile - - - The default shared library folder - + + Raised when the simulator sends us data containing + profile property information for an agent - - - The root node of the avatars inventory - + + Raised when the simulator sends us data containing + the group membership an agent is a member of - - - The root node of the default shared library - + + Raised when the simulator sends us data containing + name/id pair - - - By using the bracket operator on this class, the program can get the - InventoryObject designated by the specified uuid. If the value for the corresponding - UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). - If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), - the uuid parameter is ignored. - - The UUID of the InventoryObject to get or set, ignored if set to non-null value. - The InventoryObject corresponding to uuid. + + Raised when the simulator sends us data containing + the objects and effect when an agent is pointing at - - - The InternalDictionary class is used through the library for storing key/value pairs. - It is intended to be a replacement for the generic Dictionary class and should - be used in its place. It contains several methods for allowing access to the data from - outside the library that are read only and thread safe. - - - Key - Value + + Raised when the simulator sends us data containing + the objects and effect when an agent is looking at - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking - on this member + + Raised when the simulator sends us data containing + an agents viewer effect information - - - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. - - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); - - + + Raised when the simulator sends us data containing + the top picks from an agents profile - - - Initializes a new instance of the Class - with the specified key/value, has its initial valies copied from the specified - - - - to copy initial values from - - - // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. - // populates with copied values from example KeyNameCache Dictionary. - - // create source dictionary - Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); - KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); - KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); - - // Initialize new dictionary. - public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); - - + + Raised when the simulator sends us data containing + the Pick details - - - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. - - Initial size of dictionary - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); - - + + Raised when the simulator sends us data containing + the classified ads an agent has placed - - - Try to get entry from with specified key - - Key to use for lookup - Value returned - if specified key exists, if not found - - - // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); - - - + + Raised when the simulator sends us data containing + the details of a classified ad - - - Finds the specified match. - - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - - - - Find All items in an - return matching items. - a containing found items. + + Provides data for the event + The event occurs when the simulator sends + the animation playlist for an agent - Find All prims within 20 meters and store them in a List + The following code example uses the and + properties to display the animation playlist of an avatar on the window. - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - - - - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - - - - - Perform an on each entry in an - to perform - - - // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. - Client.Network.CurrentSim.ObjectsPrimitives.ForEach( - delegate(Primitive prim) + // subscribe to the event + Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; + + private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) { - if (prim.Text != null) + // create a dictionary of "known" animations from the Animations class using System.Reflection + Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); + Type type = typeof(Animations); + System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + foreach (System.Reflection.FieldInfo field in fields) { - Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", - prim.PropertiesFamily.Name, prim.ID, prim.Text); + systemAnimations.Add((UUID)field.GetValue(type), field.Name); } - }); + + // find out which animations being played are known animations and which are assets + foreach (Animation animation in e.Animations) + { + if (systemAnimations.ContainsKey(animation.AnimationID)) + { + Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, + systemAnimations[animation.AnimationID], animation.AnimationSequence); + } + else + { + Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, + animation.AnimationID, animation.AnimationSequence); + } + } + } + + + + + + Construct a new instance of the AvatarAnimationEventArgs class + + The ID of the agent + The list of animations to start + + + Get the ID of the agent + + + Get the list of animations to start + + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } - - Perform an on each key of an - to perform - - + - Perform an on each KeyValuePair of an + Construct a new instance of the AvatarAppearanceEventArgs class - to perform + The simulator request was from + The ID of the agent + true of the agent is a trial account + The default agent texture + The agents appearance layer textures + The for the agent - - Check if Key exists in Dictionary - Key to check for - if found, otherwise + + Get the Simulator this request is from of the agent - - Check if Value exists in Dictionary - Value to check for - if found, otherwise + + Get the ID of the agent - - - Adds the specified key to the dictionary, dictionary locking is not performed, - - - The key - The value + + true if the agent is a trial account - - - Removes the specified key, dictionary locking is not performed - - The key. - if successful, otherwise + + Get the default agent texture - - - Gets the number of Key/Value pairs contained in the - + + Get the agents appearance layer textures - - - Indexer for the dictionary - - The key - The value + + Get the for the agent + + + Represents the interests from the profile of an agent + + + Get the ID of the agent + + + The properties of an agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the avatar diff --git a/bin/OpenMetaverse.dll b/bin/OpenMetaverse.dll index f5952b45a2f90e25dcccfdf7000965065f3a0a35..69c4e9b9dff447e4e86c42c36594252ed1d5b97a 100644 GIT binary patch literal 1716224 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 z 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 z%0A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ºJd1d-mr$Rq<4?~wmy&uZz8+f8hW}p@c6?FL2Mmdt7x!U zZ_dS+>u4Q(p59Z~h}X3aUbTEfb;V~^P(ZT0b5~aSotz_`pc6elDhGDzu^=&Px@rW8 z0gj-@M|ZJM(qp;6l5=`>63I!=usw$Gs$Ol2ddHgHaZbmcLD%BX$JX-h|6x6K?6BcF zc0VW51|7tg7U@hw}O{k z_ugO0ORYc}bPq^F2S`N`p@*L!-XBP7ncoxbd5?^ejI!aXpp_sP^sok}+5@Yhw`X+p zIAS65wcB%Gr;Z8|qaRfxNDT0}RR?#!A9x|%tN+IPQCbTa?FGN%iF03{;q-m?;t2#& z?q`C2Ki~oS&i~Ow7kXUPKoBR~%1TuO*Y!?s^7q5eqTgKY7Y(lco-H6W`qX~){jd}1 zitN6eR05t{0-jO=o>~BE9c9#gOt&U%Uex2iA9fo>GJfs%wu)r@+V5$KWc=Fi?G#D8 zkLh&$(A=K>o8DBeHHCdlcTfyrAJZKbHvT@QGZcyJV>(komQC>q*qh*^5bZ)T`K5p3>EssfSv}~GjrCWCHN``5T zmiwsDVj+Q9TcgFgh$rBlwQlu3h2xI9&>)Qs?`nEOa<0uiwBNc~b-{o+zp5BWtRXsh|^h8e|$!d`1ZCiTk>6W6N4xSE$1o3L{Of*3` z)y*rHMmIq<=qBj4=_crR=_U{b-2|cz-E5Wf^mG#>f;QIRC-kPNnh%3hZ-`EB?WxmS%R2pHC^CpwgO{QS%BfC2cWHDQRD(`~ZktYn zewR)IQP621>d@&{IZscgK_X~z4SqsznmXOFg)ceN^Z~>|rqd71fvUc;w#|351c_P4 zRU=3Y@VHe6wHq6puXGQx0q&jsasBNM;#^q`cIK?J*v_0^)ff@$p|6K55N)l6K8S{i z&T+l-QDUFAeV$6mmDD>A@2O*l7j?|t^o@&Gd!q*bS#mr7m5h(--;BgGG=fG|Wg;OE9Zj{ph0~ zEw#X9GtVYo`1@PJi_t*UtEvX=Ei<$%9~y5Y1^lo_M!&dSn#>Fy%6ql~gEmX`0^{$= z-<5d5S)`j+<2=v{2(jo?RbQw*+L?l*KOaJnbk`4Hyrl={ja)_e@R#i8IijZy9x+@8 zZ-fql(Q5EEG{Gh9?*SXmPFTHsV^J@0R>oV2M_vzOJZ}K?;QK(|cig>`b>f7D-6t#{ z-idQPcH#iQTYb=)8@!#kOt$*qhit14Vu{%9V1Bs`!2GV3`N`u9@EqJMc=nyy=)+l{ zt330LnbCOmXv2rI9M7{e_}KL4!ZVWAb!K+YIN2n-X8^-m8`EGFPAUN>^0qp!c(&4c z?^raXkL-IMmb1VGY*&2Uy?8PGUNsLdjA|ZH02&v%cnL0b0DgI3@sR|`=lA3%i%*=L z8DxB!Sy`V5wysyc%&02xWq`_7RfDbTm9445>CjOaY-kl^j{3Xx$kL>Ahk1YDz!3W@2K`e=L-&6Fb*e`PqvoT)n7L;1!T+qyY zoW{AhxGT;zG8@xv6rQ;Q=@P`bYd6ogYA@d1SvGST$=N+eZXV-=7S~}_QREXym(nQJ zJdHm3Qkje8HzdqyrDUYQAvOcT&vZ(hs)9c)ya#YW?dsK1lM)}$& zv5vu1HTX1|;HVmW4o$F=#fu-IUzT8h3OESyB6tWLa1mC19NU4HeBJB*6d(-&9gv0& zkcvj+`%`+}qv`1i2nJnoi$Z%~HT0%gU+G^ny_{Ic{PW{Wz$fHDt6IUXpHr-v3LT?c zRU>pFpwKZu^6U3*wG7B_KSs*%UF>UVcI8|~e*Fsiy=tE5NA03hwP%kyck>#0_Sjrm z0zRn?pL^~qc4h#q>RSc;ho{;>5;7Rn%{w!>|DG` zk@y3F9sLEr%_AUz@tR*{&UFRj^Q-w>*QY8H#47V^JSSjxeqTKtb}jmA4U+u;*pHDs zO_A&m@ctf&-{uiGS%)9j86*n;EHIL%6B1oc_Syg6)4jz%JsWm*<~L-sIe(S=ZB~oA zfvU#srg%y2_Y+I^I|9o6PVxE2?6}e51N44ZHSTl-cQ?GMajOMh)wpMIoKw}f1t|;? zO<@pF4D&un{Fj{f^kN$5N<(PyKB<=o2#xM)QF@N{Gw2GCjh=VbC16tmE|!4LEC8J_ zS*KL4VF9xGs3Q2iXYK&yXAw5mJy9TsV6=0zpRGv7-zRmoBJm2uoOtaCiXh4p&V%-9 zKerm_DQ`!VdL+UdZ8kbeNw-xpz-%f zy@-(T9MXMK&;y!nRihErDtUamPYO!n#-kC9_seYjeNxvFMvr9teNxvE5;c`G)>d}! zlM-DvwykPJmm{F)as(7zj)0=e7Fa_ivA#5)t7>Ri3WLI=Fs%O+hUFZ?+@14rIo5Qr zv0-f+hTLFpz_G65eNtG}C>dj67KnI5jx|byc$L}xNxX(+pA_3%pmU3j@Nvslpm|KX zPl`=5u5`=JUCA)rC&hj2lfps*vv!{p)-PschLmb)!+wc zf@LaygC}x_NqzWBG$PMuP#=CTjUBuG4NgJ|171Q0-1v@L7VNg@aSixGVVPye#qc+y z7!Cjz!_k@>{DfFeisAU7R1A;vCCoL?moQh#mwB#I3kUxpTLS-~1O9zyHY$vR2j!m& zEK(VD_Ic-u}lU+dyM*QTkGJE0|2a=@lrB?n(p7q4naOnVTS^rU9a9E6%Vy2YBg z=X8vk`A11^w@A%gZwYGVm^vE|^e}blxzA25EaS8pHFE#X6s`{?b4Fmgz!18nf;uE5 zFMy6yQ1=p^VnLlbny8@8OvMHDj)Wa&8tERVmy<+bv_C|ksq~~wSfqD-L&&>ph5l+lVqHiWh8i@j?doLbGaSr~HIP}<_ap%efw8WU;IfRwqxfoW0uJX)bpPkM1O41T=(}Y=6r2JO`3~lhp6AgjXHGHs)5u4f&XCV^ z6?QRzM0omIgP+iw=Cj!Ty89QzLZ-WK%YmJ`D@e>bt{OpNfFtPcO90(0h%O!9Q(X&hAP}zxC!q<-sV*J9G`a+;L6<{mhOQ74POQ7GSOF$HK z35Ys$sa4L?(4C#qS1deBYK_nr8$7&t=y&qCpv#k*0n0Dx;2Xw40F5|>HM z0zdSqSzvy-?qhyer!@=k9LxZC_MO@2Q5fhd&s?(@jc1S6JPIRwp4Kc{*OsYSIN2mM z3&5sZvj8VjrKoDiMS4=RV49(3fo`#8;d$GeYZfYY)GRPrR`B+BL~unYQt&0ATdG+= z2$R$-ybz~YvtW)Us#!2o1olMDKi zOKKJ$9F?A2VCfZN!w(T&^-~`64Wd} zHTWOUZHo;-Klcw>vjC#t6oANgN;QjCIZrP(1c?w0*5D`f_DpQ}55z*IyC2Dcow_SX z%sQ?bL1KU-=szHM$II0F$qX~Ahc<&1OrL1ogok0o?g1&)=&;b`g`QklG;3d~Rea8bxgYE%o z=m4oGV*ZXt&wDgItpvfKhc!6W9#{>%Y3gXlmXYLKoR1R=nT~#<1pMb5sESMRvOHrh z?->y~Munk{#O(<{{H;05)z(6x<4O!K(noC zG@||XJU-o@4<&Kq(TK+TWj6l){F@1*M>78Y{I3%dH76tN&lg=bR!XlKuH?bAiq+Hp0g(yFZ`Dr2F&PG~-IQ?A(Px`F6Rp!%+ z5J4hDfi?IEy=lgT?UnQN+Y#R)7O)tjeInn^fojMkE;8q;2@<2r^Z|K~!~oqo-%e}7 z?V~t>UWoW14RS#c8XN@ukATn^5(MF$-v`n{{&qOaeyq^sJ4C5!zDxhjMDe`>kWI<> zLCp6-j*<8v=F-LgQW(r7y{UWY;(sd))1sGk7k}W`p>wzv{J!6C5*GwW+_Oj{Z^)E< zq!Y$Nx^6rg(RjVpkcxEFtj?yzX$N6HO43y^_bc57feT z$F+eU5ka-xKaP4oF}=>(z^Og$_^HF~_zf`LV5%DYF`D408r+B`*vV=GzfZp`L2UpW z1e*>XLI+#~10UOW@RHkitqlNauUJYY46yUCp{bm&`7`2NSq=3HbG{}<#3sk-f%$g#Jo%?z z&?x7h(CBtXIG5%=WDoIXO2i9XYCn}3HB^LWAvBAo7l6?^OkPg(`MbaXtM_If<*!`iW6*%_qJAh zbPmY?e`Cd%pcJf5`pzh5=5|NVTf)U+U2yF_Gx52iMrPBqAwaq$cB1{Q4~`f0y^sHM zLW}G~LC?&4A98_NoX8=nnRt!;itzSYW2g08W2cqZ*oU#kKrC5f?^~KR21>1K3^cpe z7%uKwV@77vTVp`FBx~%z){}eqtdX~n9)HQ5-ScZFv}lcSxa{J=-Mfq--6e-<@cVna z!qFfu3f#R5M`_sTjv!kE;sf|yo3{zXAGEV;^T`77C++Ood^#Pq^Bdwz7rXes8*X5m zd}GxJ<7TZ_HLilAxr)!6ISfWN&-Z^zqh$S8^~?tC4axU!*Ha&ESJa2-8Pcbq8(^dw z{5zW9BF*>zu~knd%J)GvgoB`~N)!76(9d;7^L-!+As`S11cC`|j-~k{kZnT>brIU-_&Hk)^p)DoX=&?D!lUqNE5C0)a8p zdZx;|sv(=`Xi-RpuHw06SNTkxmjdEbH^DGf8=vx+5T9>}L*iO)Gvz?&dWjlc=*iInou$`?k zpPuamiC`^j@DqA_#&+&YEMW1QoUUrt=D<$dDM*Z-DG~!5VUNpxT`Yv$*Tm#vJ&N=Wf5|z!cj&1{cNnfmKZWvua1x*YSF7%v!z_)L1A>yO3(3IdouHZP zi{^m1IH(9+o92K0a5VdKopEro&&YY ze0mlOB!b0qw>9*p=f_ta(otS;=ht6O`tq&toRCWix_ZMAqns%OmF8^0DfB@!5C7QC z?;AVp61EGzlCbkriwDyfb^pQlKJt-Lx1Dw0j&gci10gg_pP5+=1*+upHm-PF)%azL z{~!+65+b{OIQ{JGHX5VY?L%lh_=)11LkmD7HotZ5Fd8+H-QFA!OklUSD3bB*_EtCH zlHGEKJeb zZ63q5t9@p0{=S|ic?41PcH6)4b|gX4H{Jl_H{SSsgo`C^T0>jT=xNK( zDBAMDdKhgmL@&C5VrskB(C_)PO}uw?1M$Q8@fhDi0!44Gon+Z;P!I(k@R}IUo?mVI z9A0e$fM0DxYi_WK7)xGl!w>nZZLu%Fd~#oa`8-+XBWLk|NAC${qgUBLM|tE|*+%2h zqYbaJf&Pz)zMko5)`)p?%}qUda}BWRzPSe4>APx7CA_PKZt-0;&&?R`s$EM9^cFdr zQAOMSb{fWXzK(`@PVzdMm(vtqM`MmAdL50KieE=Na#);jrRYs_6v+gZH1dZ>7l3M@ zc_%SH1g;R zFhqU{6jQ%+*wXkVP%Qc-@Bo|7vuD5bMffEE*e{_qH`t#0CHyeVFJV4C{StUA`X$g& z9@#IA#^Z3mWY&oBOK$3kUjl5pehIWwzr<96UqZL&mpnInvtLrtw)-WF>GVsO=Oli~ z%V~;!i8-3cFELYN`=t{|CYfJ4u>c&`R-Z(;hWRC7!kXnqn6SVa*b-a4cJumHHw?dY zQSiYhPjOnOMAMSz_xkPgMu&OK6h>gh*N?#pXcgVW(hKrE?` zpIr1G6MvHql(Y<$)W<cf+~|v1Hw!xisq@lv>w4Xm+i8T->$pjm)OE?tyd()_vEB z(COa5)11(ve93qbvA5%7top;T$cL<{4mTfU_L$l0(dO?1<+9**)NR7<8Z%V)`;;7Zt96&0BpMT9nenw z0#gZo0o|fs@Z9XpenCas?iVno(=TA2lhk*-oTlg(n4^jO0y7o+g|1g@lJnorBAFz9 zK}~4L_e>lu7Z@AbY3|*A2(7W4ozolJ-k(Fblv(jt#@-7t!)sOJs*=6mMt;&iXC|Aq zp7#3QnMS4-9x%4>ICp=C^R8i!qC8i=b5Hwz=c0XIzX&2p?zyYgroWtc81q@O%g)2& zV^D>O=CXndun zoA{cY`7F_tXT}?MuIh2mrxnG^8K#(+iQCaF+Gid&PTc-PT41-pbK&xr_(~^{Vk(oE zU@wX(nqcN=A`{F^^)n=U* z7nz+x-FW>Xh$Qx_UV8fls<0D0MYdnxf&Bu2?H5{egXiY<3qK6CUzo!f_6xX`FScK! z@il_|ax+Y#O~9rZZHoP3ydl0sw`jjS{W0Rpz0Q7NDwEhRFN!JJFXm_>`^8L+XTR=7 z0vXAE$pwl1O3$RaJK>dDe^uYZ^oH!uzH3k0b=RWpir!IuDe3zn7^w!YL=#-3x%La` zhkTFU#NR&xRiA6~?DYXbyeALzbDO05vw_H)4@TrW>@#kn80dktPno|n)hhEb1E0e8 zk3b?kIdHc%^rp8zyX$KX>6ujbbb^kaBUH`3a$ufkn7WuCF>6|p7$EsXbLPjP^jz;; zqU4_Ip)u^a-tw6@(fz`{^3o$bU?5FooY5n^i8f3B4xz1@do%KF(Z_J_lLJ*uA$NS; z>tsLrvYDq6|9F?uJ{IJeV@EJr{8*4-`dEVPay0j)@rkcv z)#8WgmoDCq23TeDFD%?YfH~Lp;0HK#*!=Hb@o-up?}XEi&hQc!7gsuAU40vL6~q!}{^@JbyR&08`21G4oh|__YrwAbOr4 zWd`9Em~~gxkRjnS5AIo@5_Le7g2LXfs)j7%U+8)5j(K|I17XT9eh=c-$c8_P2B-~x zwCRZrZ}}GUj-EDr2i>0Bh7UdoV-4cf;L~V=a%#6fvNU!ZRD<0H-8Q=o`dxM#h=Sb) zq7J*=D(C6hZIB3-x&}X?H%+_U^)NPm7VsEi0Snr^17;LkViof&RxU7V!8vYtM|&L^ z-^&QCv&U$38(+j&ICtfZ?yS#CbAAdD)nnZ#N@Mulvyilanp1Z)B3rAIk~v*;k;Gri zW*!sbFQIRy=k(YcEf5x6b#QN#c$z3EILd(sYjSu@%Nb9PBgCrXmz$pGc*}YC59+Do z4=U<-6sLU^N)ASd^OAnNLsOK_X~) z4Sqszn)=?gDKGw(?Bj`rMBl6C2{|y=7Zaxm5~C!F!~k8K7VN@tWEZX=O3p5zG0ZM3 zpV>%@_WKk!RL!oOMb$qJz1SAm&BM20_3GhJ4LQ>x z9ILV5&*O0iYdi^<`8t0r51Ww1f&LIjWKY%~;)v`i^n>1-DDK*iWQBh=?)o*^HLfFx z{LI~P9C^FOw3Vrp~0TeP_o@3{v>Z)R2AyGcpG10Ejp?D?VgukcVC0Dh>A*4*G{#8|TD z9zWy{wc}hH^T};^anC(?^cH+J+MokE$|FDE9*swjw&P3(vqsF`N;mc7X*XcgeA->r zpq=imWGdm=H@d}V-=3Q>o_$|S3-lJ)yTj9C^=sc-2@!Pet;9Shc`)wfG{pzw%+W*- z#+j-3!Fbmv5R-2pK8<9O`S+)nfX~Q*#I4dR&Oy+E|rTD8Fp<@ksBXlC5 z&@sRf&TXi3E~};~0M(muG~nD1Q5X^fOVcKYJ+o957N1R-y?mQor-7qTiW#p8=?bSRZuT zVtvrh{e;$JfhffKK-3ZIx5|8au|7zI=)ML&p|@vZ{bv&knJu_F2kP>d+}OnWg2XQK zMvxdF>2!P5A+9+*r;CN~4BylodA|K&BkEu{-v{ftYOcxYaSG`YHmSqEfJPZM z0v{)yD7CHG@LgWTX;@OPS=B&hk|yL#cO`!G9K09O0M)PG)t=9wUPO>Ig91$V{yvWI z;m@D1EblH{&{O{|DC^%gC>@xq1}C5i&M1`vX;S<+_t;X@L*yQBCBDXdr=hArJ?J6m z`%au#fg>a>EEGeZ~u2v!MLa+dfYs+L_PBuyA1=w^mFNj4lud0Szq$hij znP$kt&@JX+p0_dbup4Qi-y(S!Cd*=9vw|lpz4H4Ne4|2E#+QU{>Fo;$VUi@x3vr4` z8gn#JlEzHMNm~CJ?2Abxi7%;|m*haT?1i{YkQigGNDOd|GXo7O8Pv^Dj_IZ=&HmC-52Hl{}NlXa(xjt(h1&D$Q z1CgjO;Yq(C-YVzmX)Qdemhh@Bz0UN8=+Z?!b?KtAEaYTu&?{x}<7TTC;M2U9%(9QT`yO zSE!@Bo<8BQNVLhdGPEzvr!!dbd_hWqm0J0N84RTX!u5Qw~(iUWm&Ci81Di!~jQ#%l@c~h2UFE9YrpP z$#n#%@t(dv&goUnpX9(!IS3NNgCa4&!t?Am6Djp)Z!x_g@#4ij{nf=~f3+J<3dF0y ztI!1HG+z8&`k`D`nJD)H)!?Ts~`U><4i)hg%d#fu;jBE%Z} zgx)mc#g3)zY8HBi13TBYATi6hY6OV^j-caz*2O|e$K?V`u8@2EIpI}Z zdaLP)F173fe|S$_dU#Qn+|Av%c=Z}6)0?17V5Azn1x;{~>ecI(Mz26M=oRR;=@saA z=@k$Ky#k^Ry=s;D^z;fOf+p4AC-kPNSN-#_zaSP8y;2n_tzWqyTfcYm^}5Xur>&zm z5n8vu8x4LB?=J;}27~@uKxlOD0>?YJ%V%!2&&~bE;r!qUg1R$kf&kH zP_*;gjpprOCaJKy#=)n%7LDlIcqcgLc#D7KhU1lb|7u=f0<&|7&?q6|H^6r9a*W89 z@m<6V11JpKF~4H>uCQ%w!S52^g`I0W#%~YbwRwv`APIU?Z`bB+0>NzO*AV1nfnfg| zeaCgz=F>0Px%hVCu4>-F%-R=$s^*;qAk+2VeC5u5K(}AmY`3sK`up!zzUKj$=kLb8 z3*`8^bpWrE>hQbuhXwqwz#I7%)}ymtu^)i`0S5a905&l8_b8H$0B`h24n*fbMY0L~ zO$Nz9035_f-m6Fs2KZo)-aV#yS-)s~QU~9$nQ~KPe2$A%^h`*#=ZK zR)t{YU-%W0s>ZUAUvzmGmf@Szv#kD(F48#S?@ez=9Px;ral|8r#}V&9@Bl`t!F$mJ z7ik>v)}@IfKsCe>pxYKlfPPmT0Yo8=0HTgKqE+V8iz7fHL=H9h3B75?5hr&%<3sLw zukhUJ1H=NBwRwNEYCc#3ekcb@>6Q*7AQKTye<2itXcs;OBi9pzhMXJoXVnQk2tcUc=8!e_1ucw3%{MgL-Um zsv5{*Sjl#Llt!uT_?YPpu^pH6v>lfWw;dma!2l!G;1g(qi_~`f-O|_&Pz|;NblYqP z=y%x;APTkvh&pUXtIVfoJ3t~>iyHid-ZX7T|J?o`iG|E|{8J9p`xaYcI`KU z!~k90Dq+I2bM9JkUXmDckB>|zqpf3vujXt@`_hx5i{?El@RUThd&%oeuA)hYcl>BAph)GLbBphiIA*72*fOlrIf7rOoL6BPcnq>1)pN5 z3G*3-d&TBol=Jb^hX1EXeA>XA_*5Zq;$>NeA2*3e5w$T_-sLuNV)(dpH?J3X<#HiRR~CYhM-8cB4yahOX4$%<8sMWnl4H<0Mv-hof15#aEC9zcl7Cku#{qntN3tEA z?TX}h^p7`4P5|HpM)Fxjaw5PddL$>IbCM!C8U2$Dl2ZUUg^_$tk(>(fsUFF#(YduE zxefZaF-UF;z-<}H=M~9m0H5ZO+zy@FDU#FCKiwd?Jpi|7BwtV@cL4Yf9?2cixuYUE z1N}1;35OR>bG{f*Fwm_LZpsSrqs3&Hi~oZzHWvg`4lPc}QW<_7n!?O<~Z*6b98wVbGKmhJ~NPu#Qt0mSqaVDobHlHYto(LncqR zUaFe?9pvd21zjvKl_!sh-|lCpi0j<)aMv+Ruj78pxhG#CRyEfAs_6}hH6PhC)_mmf zSo8A;Fu_PQ_%fQ{B8@dawKTCNsD@Y*blYN0(C>;hfhfe9K-3Xyw#s~Zu_j1_=&}Ys zp*PJ~vwxoYHDUoO5#_1>Spwdi1C6EAJ*(wBRp?mz)(D*lD0B>Pggo`@IhSMSsox-6 z6X&VlBqT*SnLJgPHdC%@P*05&ki{_QWBNYYw`i2wj&Ezv@1yz-LDGFxfayM}tE7&x z?ei;UmRIsV+M{~fmPZY@E#HGd0i)I6hiHOJ+EWEK$iT(#Zrxn8F%$2p0`*{HK;L(q zKjn;rvLSGU{Yfk!-cxl9_EZ7Dd#ccy8~l{GO!idahaP*XFu&Y}757wu=U~pjv+vAC zd#XTJdFDM;qw(y~cJHZbU1wCdk#G1o*(7_a0GsZfDsUpZsHz%rk)G_SVwz!36}rVe zRi3xKc~6y!9eb)USyuM;Jyp0OY@*^zLbtT13PPAdb2r`wiOiCjPaad|gp*$n)Zd$*>M`5I|fHQ0{b zW>qs6S={gQC>Ar~ceFTDtJ%%_*{fJDe}YVZ?!dnVuc39*3n809-Z zEdl>G2Nw0EobL!7Ylj-469I*e0gjOG{4D2^&4M#zTv=mNFJ^)5MKB7!w2s>A&k2{e z?!Lh8^j`Mw2!ifI9e+VcigGgfjxcSeT-Bf+TZ*a%vKUs%cYaBu)OP%z_I$qcD}to? z4q!v`oyYXFEsq&)Th_y%fYEBO2~BWG`3~5~@|`s_Am5uialQlU!N!1oG2a14$Q@Wf zobQ~7dQk?&xBxeY7kJK#B(Gw|#?vr)bSy2>->JEQUJ(RSxM zt?SI>J5Dx9z602F^Br&^8BSG0F4B{HhiQg<2i;=6<9XYg^BomC@*PZeSiXZRLW0AW zgl;L{fe>MEn{*dU_=Atd%VKF19cdP`aY*5c*LcSCB46LSvXCI>I5*{>gzp8pxKxi;%xq#5< zzN@^y`7m;rbg^@Ivaj@q$&P8_U+sT=8jo z2ymR9a|5IyC#X&W9}v<+^t$vb6thD89Q)!-gzf=kK^!A52y?ohN56X%7X9?Syh z`;K!K;W-#MLXO1(;=J%Qq*?b};MF-L#mnWgYNzo<&p~0Yo1cU~I4iOL<4B9LpGyq!ODXW)~GvaRsZJ_bl zJtTLY0-Xckyg4K_;G3@HnM6sA8=Yibn35ZfMm}1c%W`+9>LO4 z3yk=rEl3M@#xa6M#E7o1a}J>e;{RSq_Xz)N?)C!e^S6rRzS(8h$bB zg%&@^WSBn4g?zK;eVJaq34$S~tih@Fz-s92 znSApIVgb4l<(o(5K($SUd{dAZds8)n!~jRgH;?LKp_FgR1%1gS`R381(vu4;J(q7j zfb6z@2jCdOt9D>p)H_ytKKne5AZhjq7-ygSUA3#dUr4?S@VK6~;&DY=5#^sxgoOa( z)!->;g6nGV3^c(qrJ~@8>uk$rWKUAH?Xff>w;#yW-b*}lOm_FxSZ~X=owbEQ2;JXiU40Qe8q3H*l+`1hUJ zC`knm%0DNmqw(+2nj{sxZKs>B-x27!HciIrgqCEifK4}J1z(b*Ry8E1J%~(tlD{$s zA%8`;n7?{X$H-qlN^-kJzA>P;1o-BNN32~CpR zdI?W4xn+(fN^Y5{-pOrzUfgz)Nai1p&w-u(QIHs4Q8j|Z07uAePsmvqJGVWNaOM1) z+*XJgR;wCUK{9D>`&6=j*mt@4B+6}1ra>;ZMT1k+Qv`$tgH9C?8VtIPfY4yjZ3Tn| zgH9I^8UVGYyKYbAyGW1m?67K1q6?Dy>Rd>Y+JbEw#uJH>H8(m*Z80M^8jXCkxF?_5 zVzO>D8qw&gxi$Z0!!piKe7YO5Nr=ZGK_f!K*}VAU)W12pzh=og(mn;|<%skS zElz+ z0K#K%BS9KBQr{VNxqo^N(it>NbCokq53&9}RO4tlPx11exyR+Co_U=j$~|6!ECY;G zgWYI?i?lZIJo+KeGbY||4XPov0A1h7>Lj2~3oofn=zeP;3Nbzq`3~lho>ST?^XXL} zKq6EbYVZ?!d#2`aCt?B1(dc2-oRtGrTM9J?L1Gj{kr-gSkL*ygA9p26&VHaV+Ape zajOFuvC7j35(A8F)>g7vzeALq%|c_C&002tI07}us<~IrV%40R1Dzr! zfe>gpEkvWuTm*Y@;e~21plAHU9|)E zF})#nU{_B&u&ZnbZi4cIcr|zjnxLH8fwwG;9RSr}2SB&Y4uF1_9RQ+W2Y{%<4z$X7 zdUgOLg67xYC-nA=9XO9z$n3y(SB)SsK&l6|?;MQlRQJnSsG9rdz)rpd ziD5yJ7@&Kuc2{p>Hm`>7eE^YCoqM46{F99x1WBK405)`A-4#7`@`|EPM!CfYp_E{> z8hjK@a7hm{z(yA1zqhETsG(2v?PE|6dJ6i!sXWyBP9$A2{^30DcM&sF| zHIFQa=k(jht?SG@rEs!Io>Bld-KP}bM4m)cHRK{ac`m^;!*dCAi_axIZ(}@{xW&GG ztYXJ=2~3uiz5RR%ToIl%@Fk&Jdh`GxO!DZ#3vr5%9+;zv9z8Hq@uP?S-yL`mi6rqg zYQ96{e+t~ONFn67MVb8$yCvmk5M)iExn0TN5` z{xIwp#b5H>?I-q(jh;v%98!1vJOUyRrr6HL37;y)L8!H!!z_*Wt!+@!6eWpGKr@d` z&aWgO!NnmhaW&Of5HI@eY$LzvWg*Y%Jp*>@`H{qptmmqJl<5u0$FJ6xV5wyVF%Fx?0 z`S_!qY!jV$Ob*oLFKgetlP*ZiGOijyVt^y;&$u*aft|N2c8?Y|J(h6g{G0t5Ld>vQ z)wl}LiV2U%R;K%uFQZYan~#fnmz!SaKIJF%)YB)G_4MaZPB2mpevKx$s0P($YJ!C< zH~(R)&QA1REI0@{3m!rTTm%J<^%uP4`m6870%_1+APpTL6=lxfi|u(|rl;8;7<9P? zr`iLnp|@xB{PDyBR&!K;e?kt-^~C78AhCMV2oeJ%J)dt)nhvJ;=rr%&s%BTtg4J^$ z;a)+blr#0es8eTID=F%K#EV`)lwMdV9te42Xry7Cbozs>T(3z92D5 zRyBge07t07KP6|OYOczGoqP!r!-66)z(NiFsYFV3?rGZdHTb6!B(1>%rZxD-kuKve zdAH!nJ$3TQWu4p#MFexz;Ak|#8P(lEI`i$Din=**-5u0}Zi2q=IHMNo?%)VDY!(XF z-7iAj9RRMoqcu0!PFyB+cl^+!?vDB8x?iljgXdrdz_ahnMs;`4Ri3%-J{r#+ZFk+h zb#0ltyOT{)cL!{`b$4(gmG-KJT%;#;ccvNY?&ucl?w+^3x$drFN8KHhWd(1qyW@&b zXy;2pw^VnB5GJX+dm&D-?#>)dRCi~l#;vFzrU8 z5smg`dcWJxm+Ae6KK*1dSQ)?7L-9 zt+2z-FZcQB81|8%RIr4M4T#ST={*s*Ms-AjyRapw6|Vlo#u^(1ovY`U2XXs5XfQwg~Wy2V_@ zb2CP+axE>;Tjbqk6>WQVf-#-x2E znPm3<+7j@(0#L)P(UOMWBV1~!HD`F{Gr2ar5BcI9#3TNyz@xFyRUYY+y54oh%mdDH|5=LC0QHTb|m} zry!ip_iGF;f=>Z4;=%6G*irN)6YtRgB@N+{8a8O=_FngB;NlRrxwtLfqhVw=y+{p6 zmn1ejyF*#A5Bp(qznhmkp(U}|D@wpumVmFyfx2o{2hTrWb?`wMZL?adMrcPsp&bE* zwgDnnLChV;S+6E0<2dX036jQHfY~_fa^W-ne&Ex3>crEEI^hCvIXCq(=m(gim0>xs?1s)L3up~I`*T*@3j*;#^_d! z(20OT#{gX{63#|gM|Ichi5XXSMWef-ioF5YSBg5FixHF3DKL-(7-wAGZ2lmhGnW{- zpz3!$yq-p>C?w{(=pxx$ux#crL?8LP#;8n=OM>8lOM*NbEeZPB(NP(~iIIvBVk9x`$)88=TOR*zFHXz&DnFZ_0tX`iI4CLffq4su9`|P-sU$p>2TW*zJ#q$vAfV zV}hiy8(=neYpIbvqo+54=y8XxTrZ)}0Q3--{6f;~4nc}@<_+-NlN(aCdiFzrU85sluf zo|C_oxQm~YFa8CAqP1b4d*6*@jDPmI_stZ~^0OO}ySe)|$mQFO=g>~zLG<=HG>?hT zpW`)w>zwGrO|aMTnE1IjFC1LwZbG;n_BtMe=iU$n4KdHX9q;bGRyCw@J$!W!PD95=icaRZ1YvGmJ|@xsKhG$^&k(x6EynLNwZSQ;01#nMJ*(~G5nbV*|A z_R}b4T>gBUkU!t#gqFn8f0+YSy(B+0`}GBhQKG65BnIg0YMj^o6_M(-7Mq@Hu_>>` zH)Ab=Sh5!1urzBClv>v!Xm+hdT->!5jm)OE7J+mL)*`=i5NaPdBk3JP$@x+=y1gW7 zA9_a8U(SfU?)zBKv)O0D_l35#=+TDP5kUXP6j$gT9 zWzCGKu4^{z%U4oGV%r(`Vnq$wX?+5eQL)~zFuQ#t-=1Q9g2$b@H`garwC(i?jOnaT zm^-nsa>e}I&iR!)=Vy0rxoLK0=H%n%=cv0dH%~WsVFm4YUhPKspHEsnC+qvvDb^>L zqlxMheDmV^M90ZGoQLb#I)6h#%VLc86@cpGN87IRw}eX#H0g`jXtT#(m@wwJYJ>?3 ztbq;enqAIoH*am-1%Y_#ZbXyMe0+alTFu`TfM%|Xf8WOcnPt^#%X)0fNW==Ys@E{SRP0{Liy``X9W?kniz{{LiQ1f5061A5c&I&&QX>|A1oA z|9}VBc9sPDpQpk90KonSt+~PHa{q%LhWQ`Nr>Fk`k466jI?5yapV4?6?tjdBG5*I* zJ@G$)O}9P{+Nu9xD#8DtTl7Dko4wipsA${$55{!*AIx)-`nZ?V6#Wl#G?D*dregoo zRgOvOF&`qCWd7&FIZ$1Q_zzQ$5hTXGR*fJrz@g_SoE+@LLZ2vz-kktMIX6=8=Gtp=FwExd8+W)~fVDrHc*?dq; zZT^>*#^!@!(dL5(*i)W8+x!|f9{{%bXw412o7;T+FwEv-K0R$dcr4m{&`}=Q=8wkX zaGP(|h_U%@>WR$iZ-7) zn#kreQ?bn-A?Nr+)u@o~bX#+mG}_zaVC2ouIASB)@Xfi_`5EAgLb#tcM@Dx~Ctxy6i`O z20sFZ$d7PLRCG=2mWi+%(=z((`z*^fLEegpvaBWTSHewF(X{4mUqU_L$l2zV^| z5ztW{*^i9I<8VJ>)`;;VZt9620c^T{1hi8>!c>AELAU5fJU4r@A5qb^`w@)k^dp$( zB!0xpX^MV?Ihx3iFjHguk^e_B$^6Kt3P81zqxq44C0xV&h%jM{a@7bE7FYvY;zzJo zAv`O@KIwm>G45F*8pEFz;{6^z&*0M@xqVjXrp>#j7eC{Er&FDiEi<4)Oflu5&k5!I z9=zv;JcGaGBDBqHRpM0*($_05Op13>gF5e|=K1PQYCnJf4g2^R;lI;W-k&Y+e6Q^} zJ$==4%D!sl7V=dfmOLZ86~W8r6r4jc!5>%WNBo{ND0v^ndt~jqbhjd!xgXK}9Jtt9 zdAbaQEHEF?<81qrX7vQw7b!XBLKH4JiT7Iay25qtR)w2puj4WCUQ1qlxX#_QaQp0aJcjmKhP!B(uWA-u z+XhTt${^t67bIy3@EG3vv(L;nTHF4d6w0;M({t>vk>u0N6fn+A@vYZ~(>3@@&P91% zPy713q4stCA_yk7_28my#U6l{6EA$f?@lk%kL2^+Y7otGQ%9P|)8$n3c}PV8;8YZ? zxxo>{OR|juKjf(>#Q`>kz#K@B$(~Tm;Zm6cpM^3TZJhva<%`qL(fCT!PvUEK=Cedo z_D*cvxvIzgAJai(yCvj2Moi4?k3hGWWAeCh_DA3Y7q`F}C)d7)N?Z%eSUyN2U3^wL zRS{E}B#rc#>=`trs#_1YuU_GNfx|+LS$iGLXd?8*33rcC%oh1djLP- zcnMrtKfzqTlh{?9H`J z6>WQM6Jt7So0#V$PRYw@icX0+n#d_JQ`RZ1-Q4wwJ-07nGwBWfs^;4ylf>_s97OE& zMm_6SE--c&_Q%v0Pb5G1--OoXt7r`OgM@76o9=zR@8taOeuzEp^1e%)`S;`e8MOYG zhwtHs=KF1oFZlCm+4o`^bTn-^b=Ieb>aO9x=~!BK>g<0xoba;g7v>;V=g-h+^RhEh z4q19%?@hD@xV9>CH@CH_F=Z@{tCr2Inmy{=!+f6S-7DrTXG`e(BLqAF`$$v67hWV> zpLMec^RfQfub*Ol_6Nj3ubS93J$>&r!+r0a;d?zX}} z*&FZq0;u{m%d^)79LIH_pRZs24h#_a^~;FDV$RP&Zk74;RyIh4mF;e8=()0aea#wj zdWRW;*Il;Zl(pQaq1*06Z&1w9df8`Y9m)6eggR0pzq@#pkAyJSv+-EW)#2M6oZUv;oP`*jZX7Xg8MQgSyZZlAB;MCEC;kxnz{&my5BA@!oXi6-&+)>q2nk=d4$yU4amFoj z{uPZVUf}Ty7{8$7asS+SG@|jkm}m{#^8nsT_Y(i?c>uqnG5p+E?yp%6i5MA1@j1 zKOO<60Ya5Ad%#Irl=4nY~Cg8(##GByF>#^ zP%!K1stbw)1A@xnwE68`!IM*w;ED<&Dq_T(PS5j9=c&heDsaJYvIgYLXFNRv%kTSr zo=R`%o}RFW_y7Fo^O^3dr>dUkspqYFo_e0Dw|c=bC{hY8d}eJ#n)$U+h(WQjciYi6 zdtNY-S>!lR9UNuoMdQdu@UgEvf6W;ayLJuf?~oP5posJy_RVV|w2VC(%>%=g4%OQz?1wKX{q}*6E$ymr)A7dpTSs#P2;A30>`@+ABk8x#>WB1D9v3n`UE}1jU z%a|l*@GD3<=U21~$Mb^y3R3re1?d<1737F(bQOyF6|bdVL4f)dO!YUf0+$)Tf(1SJ z73^Pr?iBhJ7u>_(=H`6M0})J?@Z1D%-Rik_ZUDqVv`*{hhFHyQ&)t-d~9JZC!&jxh@V?+P_+z zr)OGg^1!Zga7ZE^0+I+QvF7x<7;8bw*|V-|tE+mnPgfP&r|W5yNG!9qdUc^KTJYM6 zlsc}hNHcFA!rF?ByREGvnMJFo1+J}#^d4SYtrMYT=H&W3uz-cF>zhQjsj(e~agknk4dNjSKg*Oj7CC0uV5{yxV3m*#6B^Pv$bp!cC8UGBy1vpC z!1rI=s|%j?9viJX04M~i+i?Cp2T~I!nu%1jL27FZUy|;X4eWFI)?`dtGm&Z?NhG{; zf9a(zHr7{qH+bc~gW$HiNo3MRy##JIfm9@P`h`o+Z+r?x>!gDPDz{A~%+)h*)A*Wn z$Rt{_;YqGcA^QHImW6PF=JoukDW&zy!QeRPnaxpd7Cp14M?JHrSkHWd%7w&D^D|76 za#qiLc>m}bQuTUISnS(FcT&m+)Q_L0NHb-Je^ zJm+6HCT5w-Omxy7u1}|(7IX*SyJPG=)*U2Lq&t*->JFje>BYK3>u`qadwuCSJ_*cW zj&F@}v&`|Udz|A}7tir8b7GUYY2L;pDQD;S=l9PXCsjYkNw?D+C;e`7oQV7!C!#KM zyrY~KZ;q3MpVbNZ@wvsEl2?C=J~S<=DBu>^I3>{ zHsblLb?jQet|7GFY$t4ZhT?WwC+LB+e|s;m@AN=d|MoRK&imIC&--t4vXfZGzx`Ur zxqcGl#6O)Vb9(R4B%~CkcV_Q^H1qR2__u8Ar*y&IK_s)qo5e)BU*_$h9e0fNz3Z<+ z#@~~(a7T#HQa*rb9a#VjCTec?jcfxhUB2qtkiZPc}T;8NK8UToYkgn z%ieo9M*Cuyn8y1AB=-F-MMCY0 zce^|idm<@?~!lrqdg^Y(<~o= zBq?WY>Te5eD))326e}lH@86PcSOBMOAnE6AV2G6yk+o1NI=>js$I3g(dGS`pB;i-a z@+f_7G5y=#*U2Y}Y}0zKby5LvzRK@p;99UoIVB)TuaobOf@m%~-CDd(c72WJoAG^( zfeD$;%+`cFq+vlMCLtq!ojkOmi=m;Oeii2T?OpZst?dT@qYAF*#hhE)r~2|v4#=(T z(?T8Vho}+_@8;avejw^ZBJ_U#WtRnC<5tUW++*_RqVoc`emvnJZZ9R$0h5s9R0|vH zCp^=_cF82{L8^^)u(TxGN;_#1_9@*;d#oj)RdGD=L1-QH?SrG-Ec*7^9`)_D#rk#y zl`M&y=1L|>Ije66P*8lI;ezxnsd{}&x}Eeb>37q&MCA1?5p~hG9p$`u`j#ZThE2$i z&)qZn_90+_S|naqwjNpl3{!1xE4YUN*Mjx!!vm7EzI_A=B4yEC-@3lWs@3;31}0=W zty@h(9@4NN5|fY-uWx0|7n3t>IPTVB_r zzIt7;zB-UfiVPv%LW)^kwWd&4EjZpnidH>|Y<;|iJTR7_z1Mil`x$Q`K;tb;^*0Xz zW0`mh3ucSAus?a-R~T<0k5=zrx*E=VCOt_^y3=Kw={`?K1+%MrqoQC#dxVd}f|!cqFNqOFv{J|FD((UA*kbd4qhjCbPRt{2|74I$OZ6VUxcez!C_D)F z9B#Qq{iC;=gdC^EXA(9dEZmg_g~m8-`tFaXqFT^@=Y^czfqohwS&xV?^@w=3`~t|E zf0_N~*Y~I&Utg>rPo+{MbEf$aCdnCGBa)VW#P6A&P^c&AODyQV4^sDflJpB5C2~Y3 zM1`V`(nski5ulC|Q~k|Hg3FAf#Dct|1X-rz^6Xz;53_%lpswt-yZb)KvscOF*=8y! z$BA?U&+0hMjc1G2J5IuL_P&pfV=MBcL^c^uim=7?q{xZ$q)bA&xSV@0PicC;irGTH z%JMc3zv_SOzKICoXWwC|#vb2fM@)3{MtK;?l@%limI=uBr9qS8mx~vcv z(di<_{_7UxbSYE4J6*IjVUPQKFhF%1$0CCbo10m`0J!q{KJvL7v6Nk9tF#fA99q-a zRLUMb?*&o)f$KCk&%;(eJ;kcu?{N2mJk}(vkzq^sWmkc=?8_biU+`I|CB7gNv-^T) z!f5=-+xQ}1P-L%8VA#%fcdyX_dj<$uD{nnPY2xnZ@LrrdV&=U#yGW8f@n;fA>q2}M zKKr_L0Tr`#|2$^v_XYN>*C&{#1AFWRcIg#~-J{971|FVIe4pB5Aank^{e0S}H`-@t5{fhZm`y_IWME!asiDixvSRq9Ns}n= zF-!y?V^rDJo6^`54gTuT3Bg}Glz7mcv4`~e))_Q&>z=OXTd(hN9dkWIQ?T!UCKoRx zmO0=0n8G#7g5TdHrQptG))AzcUq^)Vt!(UFI9V&c8qfF9m}eX19??i3;Cj z^qD`|>6k}C$2<>|M8_~e9b=N`I}j5JdVvEmp`aH!5EBYY9Eb^msvR{g_e3tk;Lx+Q zP1NU5kL^V3*+szT6ak-WfzQ?(kT7o?%6qZ_Z|Ttnyahw1 zzy@4E8$eqvi(FTwv6jtW9kb(_h<8C$}lG)6aRvF$HLH8&Sb@|RH#)w|sx@YWvZ##@W$#`8EgNZd4A zOp8 zeQxpM;29r|zv255(3SNS6SJ?0+;8~Ggi#mH+k9dW1H(kx=C>}@veXJnaOkS0{Z}Xt zGY6YsD=>iZSM(dcVcIMEYEOlzCm-84+cW%3pyML4^r0grArtbO^ro~Gw8hUIhKybc zxX6eJT}r;pftctnHqlv_ZxY`Q)@v&6LuR_Qf@4Jk%omQVG?!-!$kbkv_8HZ zB|#rw5#?sl$8YOVAHS_wAHSSRn8Z!&C)! zmE_TC#!6~?kaPl%x;;2I9xYn#9m&rDkbe3-)@Y1GyMfa6%x)lIi@O_0+S&a-rQ-Mh zm@VA@v)s&M|L+P6(EpY9Sc7Og@A$D!*DXHwb0J%NR!)n!#itxCXp2voN^kLXIZdMX zAn<*i1)V2(EkwEC7{N6GiCsmj$+EV{FR7{6YeUiR@wieh>7mzU;LeAm^XJU%>KU)luYY7e3IjM z*~7dfc!406Gbx-rT*KdQrT-@T*9b;mm( z_I%7&7WNbEOYjS9rukm3LCA<{euznOkzI$p4F&t*tS6~@pNe!l`BbEzUpIsp7ZG`% ziio=SR2^l$cs>=GXj!#$Ctx7|bYXh-t)Nw`0?EEiUM5m1 z&9vUGWwGdr^&&egNSH_=(fZbX(@cmpdA&;MNP8v<+IKju;oDP`(w>P_`{+@p&P*Hw zneso@%a20-2b6Q7;)?w#Vcn`sed1JoA~P?&SoLWg_-0;+(Qp!E5?D2fjuj#k*?B3( z$h3~tzYqruv)z0LC)DC<|uuMcE&SHM7@P=!=raLSK}00*~s8&W*>} zebH!)M82qWJ>!cKwz$41X=i;=rQ&^2W($2$%gvv&FB(MK*%xJp0mz%jS_dSpav|(&CP3ygRV6aSX4HCt09g@gs1SAn~a%gSG<4xkD zosBh1xQkm1*xdHf-v`dqKC(T|^L`ZM`><=5i+@&1huQU#Nr;3p34Ts&Pl+j<1}WNe z`2cDJU*UsM&iM)*?$N)gN4s!Sv0b>8c7eoA^WT{y<*aSE83p^nKOj}_ACPV*|A6%K zx;*#?MCAPgBI@EFbd>Yr`3EH7J%WV%_}pUp2i+!Y`u9pc1Qv4h^}~5!eym6H)gg(d zrfE4O5m5GA4!84S(`87&mH0e}i7UZ`ItgEJASPyW61W%hmU5}|d#+tuA3=*;fBw1% z_|YQZ$BKY|QveK$SXC&x$?w8l8deXR(D4E9j|1C+H+}v#AnD*82!nMOW%I|d$!Bdu ze+K�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%0AMu`T=o*KB4-M+tR7Uol%=S2i8riz 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 z z`61*-kS8HeL4FMR3FK+WPa!{p{2cNOMzbCBOaHbZ_3`5okW$QH=& zA%B4U5%L1$Pmn)D{sP$w`77i_$lo9@L0*RZ9r6#zHpo9A|AM>%c@^>+4MYYrC2za5+$|8cN7wmWok{MW(R@jr*oj@KQ!IBJev z9d$<+M+e87933599W9P-j!us5j#ftx$4-u(j?RuZJ9c*Ta_r)G3uHIQTOqw6eIR`y zZ-exM^oI<9><$?S*#ojCWG~1d$lj2_kbNNgLiU3UfeeKVgX|AE0P=Rofso;l5s;CP zHpnQ*Xvi4IL6CPq-U)dZOIT~^d$4nkk3Ir5BUP*c*qHmFG5a) zjE9^A`4Z&Ikdq;&Kqf#YLMA~@g`5VN44DEs9dZWbOvqHoS&(Uv>5v(avmxg|&V|f` zoCi4{asgx(WH#hN$Q;OA$X6g2K`w?|0=X1&8RT-vJjfN0D*CT+aW6VaOwp^^iv)Ux$1HvH|i<$hRPmK{i6Z4fzh_ zyO75rPe8s0`95S5^uo`(Ds@-xWKAXs{x4wkEqj+SeV7R%p`PL_Wht(JDjPL_Wi zoh|=4cD7u1?7~lyx>|ILi^aimlf}{EYOz?{EKU}8i`C*`>16S=I9qPEbhda|x>#<3 z>;`!&q&K7wq%Y)ckbaQ}1sMd{8!{NO4`g4+evl!Mp^#ya{UHZH z-VQksG8{4jG7{1T83h>)83Q>8@(##5A@71540$)?J&^Z84uKpBc^~93$XLkxA%{ag z067BkLCA+7M?#K*d>HZ($VVYZLym!b4DxZvILId;pM-o0axCQ2kk3Fq3poz*ImqWB zUw|ABIRWxT$cd2gkdq)^f_xcrGUOD<1jt0lB*>|d(;$-}Qy`~9&VZZ=nF=`zG7T~v zG6Qlp9afXsr-hFl1l1DOl?3gjZl#gI!NmqIRsTn?EBxdL(}WIkj8 z&++63C5^n;@+{=nkmn%3foz8S7V59d{>8i!i>6*pj^tZ*y z=^u;Lsom1a>0gVp(|?xEPS-8`(7~yzlkVi=TZIFJD{*VEX-5~=ZdqDPt>;)MF*&8w#vJYfm z$bOI^kfD%ako_SCK;8~H5HcJx0x}ZP1{nnz4H*MD2=WfdJ0b6a91M9kq zfvkYs3b_q(J7gu~4#=I5uR&Hp?t-j_+znX+xd(DDyU3iHbA}!`4;3c$VSMwA>V;~7xFmd3CQ;#--m31`~dPp$d4dTLY{*B81fUy z(~zG+eg^qDAisqC3i2%E*O2ERzkzIq{1);%$n%gbkl#c80Qn>21<0Que}?=8 zvK8`I$cvD_L0*Eq4Ea0cACPU3e?tBRc?I$+ST4dTCE<|PF7E=v-M_cXRDXBi}e=BZjiS^dPDj^`a<3Y=?Cc#835TGG7z!{WKYOm zkU@~WA%h|NK=y^~2N?nx3K<63A94WX?T`Z@!yzLeBOz^&QIOG)F_42G?|{4$@-E21 zkat7g19>mx5XhmB_dyPWjD@@(ayaAzkRu=;gnS6{afo_#$6DuFpR;CK$6M!FU$ic?zGPiyonl>XoodaqrdU^4r(0KA zXIS&Csn$YDZ=}?AN>x&72c>pe=Uc0++17p5)z;UouUg-*uCq2+ORR5NE398borCxW zqS?CJ`mJ@Z^*if+>v?OPwZ&R*{TcEX>s!`V>v8L^*7vLztxeY7tRGr0Sx;IoTR*n` zZar=N!}^)E&HB0ZPwN-fzo_Yo^#`73S3R%3UpY99zaYvBC+)-^iI!x(8~7ieZG86P zxq3(bOMJeI&#w|+_#f$S@_Et!_YnA1Q)(%;0=}k-}pGT^p8mYmMHtHV_ZI-sy-Jn-je&>B411hxkBi|Xz0e-tn5xR3u*XUExS4!u z_cr1L_-dkTuZ}3&ZzN9Q^Jhfa{trZ{_X;tQ=v=KndlBVx`7FL8Bjy}X{a$L1`S!Th z9yi*WjeR`eFXYE%kS_!=3pkCTn#T*w>PQGV8^FOxJF&{6^R@+;grpk4s&pe{qmt~JFGgUnu^$z5-?!|h=ICLWZ z-~NTwt9qa9rpkRzlzILgytJp`DSl)~IT`2Y{vUhq;%8I!`2X*-FXzme`~7~uoslF- z5@L+o~=x_z^LoFa|TJdYQ$-fDRz z`09Q$x5He|ckrKK{!N7He)-4PMGu6-=Z(C387m5+8SXm!_POS-Gpj6=JwQWr_5=y9ed#u{kVMngOUil-pzaaXx<+Zs{834BW!Dge<$-_5lA=dU*wm9@DI~*glajaZ-#C0 z)#aGeX1JB}%r8a|%+TEbQ^~KcpPBD{kG{Xvc2_NbV~M^$m$MHq#nt3fr<3A&xBVUe zqmJ-Mxt{-m5vEd(_j;JVS*}_y)pp?+%Wlv7=JK~u-f*w!4v+CaTA2P1|1&SY#bM4d zrrQ&GFK6Y~j1NetDR03@eL0<2Uv(KDlD`3=T5q-bYi#Gb?-}2KA5ts`ol_b2@H^u& z2;V1E>#bS;erLVkxrzTR`F_8Ne-*z;+KuHToZ)-l_-48HG5x&PblvmB%xC)Mv>Ene z{!f{I2$V%_`DeBh_Pu&JQn4OJ z8q+hGUoHPdBV2J#uix(xs{4I2p_=}g;SVm+_p@347e@LwglawPK3osYMLhcH*eBnlzNT`;RX@m`p@SQRG`Ucze`Fj}QAVRhL z>o(n=7NXB@*3VZzqkh$|Ip1f7^Q~;A7ZIxU=ygJMd6y&kFDdvNqV@Ip)Cj*d!rutL zBHfqIo~zsSvl0GfguIZ}+TE`hA9CV$j=2$@B0SCXUq;xjRNt@aemjSMPl81VY9I)$ zjj&&xaDJk`ycL9V$!E4}xhecN#ydC{pI}=E`!KDp*CR%FE|LGWh(C;Jb^FZub}+53 z&zFSXk?wsQe_;9m{z<~`3I8JefblHq{AN8j`-v;->&yG|c0Igggpb^z=O0e^b)%a7 z9?y7swLhClsFqh~gywqvuh2bBuV-eu`u%-%JJql6tD$-REMXi>MKk&{glhS#jBpd- zXnZrD`g@?cOq;%$-%P)4f*`E$%5Roi*Egrt>)GC$u-o5SsZTS$-p?&HU3ySKDQC+FXCLU;KWZbn|*Dw$b-b5a9!qXC6QEJbHuk>0x~J z`lZ%CvtHaeUaz0`=J3BjNxz>^-JkV}YPSb>wA1~jM%dm6dl_M&5sos#DMt7*;oFq^ zwi!Oa|J7*Dy$PY(zMJjjDW=tSqV9Fx^!+;N%deZ?obJH&^&iT;X!K{z`eW9oTcLhl z-P#Yg_Ji7v-l_+;>cOpgaO*s{)ehWh2X3_kx7vYQ?ZB;e;8r_us~x!24%})7ZnXoq z+JRf`z^!)RRy%O39k|sF+-e7IwF9@>fm`jst#;s6J8-KVxYZ8aY6ot$1ONYR2L_DN z$KiZ3n=$`+e22#vmuHSwsykk5m@#f^)@Y0HXD`0jG*+MAS;n}t-i)PUTK(OG`TL3b zPxIX={84;IDDOeWi=NTPDQ@%VUg_@%zs;deH>xV z6n*@kId0s{_sx@fx#sUh)bU-{na|AU!+Hh|U`#pltK*YQf2&(B&s=`URDC*@P+bpm zT;gJ;)$v?!7@;{%>6c-Qm!rHxgzEU`vqpF?-$PQzbDR6~38o)?i1F!0xcyPS1I6^m zOutO1uJ10wVT@y!W^?>$gJ<>aD4(T|7aR0E-%lFE{w5S3VSF;7 zx}Cd?aIZ1W{wmYzd9VKNMGehyq8n25{Tu(XzTFNZG{=MA$F#bA1*7$GuDMLB_{4_&(Dw6K*9m>w&qyHdN@x!5r^z9-oi! z)%~rGdrlf$vw!QR|6k>p8U`@BcObCB84EZpYGhV5c_~x{-TF+-LH-u@mUPlel zef9SV6ANqhqv`i6*7Idd;kN{&ON{6IlrSZRIz?#adx|=F!fRR`UwOrAS{(;!60Kj%bD)(m9GAtOdU^n)~K)RESwXho8t`4-=BTPI8-&CdfrSYz3WE({GVfN zSCfqv?e{~arTRGOwoI$zhRx&pzw#H7Zx!X$o$r6;pGy8OZ^$1kjN)rxKEg<-ej7|8 zKAP`12Mc4M$QQZz&x*oW!HV-Z6!{sE4QD(G7A8PZ*ueM0f`upff|!pm5sG}ji~oSi zm%sdRo`RyVNeIB1#@EGsgsD*E`(8oBpT-U5D`UYpAM(91{?~#S%G7Qs3Lgn!#J>{5 z@%KPc_?T~y1q=JcNSv>sC~V`4WWmC>Vl>WvDDn-m7~%)TSo}j!s3IETe}obRE? zSH%*D9~Beve}JO!qa}&>F)uyc=JT?#2lgo3NA+$nlZx!Iz-O z_vf18he01fk?zH}LW>X~HX}70`UsWsefT4w$am_RlNts2Z#r@d{3<94(PB&d80aI6 zk?+TU42pcut`&Y9^bsDHTjP&|q7W};<0n8LVS?NS{|U%f=)@fSB*_2fk=x==f})Ti zw!@h$x5t?REkcgi0ly9O5vIu<@ux#kXe;KD+79{%@5m3}uZ1FC!0UwH0rDR{rw!_Cys8Alk_dtu_5uNzuFjyF=48|V;EkdQ3k6!_Uh0#g@ zeigI`BSjbf2*`g(QihN^7FvWVu@HY0^by7>L-EH$i!eqk!XFKNgeR0o@h3uyFjgFf z{}}WUCMm`EPeF??PAtKH9PCq)mblVGqgTdBaG1!;xEN}RdM2%P7jDA=Tt#OEoa@LzzmYEl*P1O?`P!#;6am1ZgwS{{Gih{qSwsZVW8b2S3LVz@pxXbz^ zegPDPKxq>3A=anx3!x|kNt1DgTBqO?LC#8PD)C{~Y50#qQ3#RL?=14GYn)=p87ir5 zq1*ZlPAL?HFli?7GV8PW!y)IXGz+KPIvd9WMIl0(L%h=Z96rC<#)*{X;*7LDk23;_ zLX^IBSr9}lS;)>rW-Le6Vx34S8v?6$s!KM9ILva}TEDeLPvlc6Z2NXu}hSl_^z z3PmART26er^-cU~kZ-0+EAZz)t{2v~@Slbj;dyB#{#;1Sv97{@28zNwX*H=Yz+hpP z^=nD3{)i@zGu=atssFNDFuJJ$E`*FgG` z(t7+wFj#okx&ePJvza!9*m`xyTpC<-g2ZKS>hX`^hP;9rLH5v1*; zu7tEvwomb|LVhD5?Z96RISM|X;XeiW)~d7U+`cH^&u!NM;-U*eyD7GZ<52Y)>b7V6u-!oLmDmzMV8Z-hQV1N+yc-T^Jb2hu+L zO_2XCX8#7i5#$@M(tiBS&_`%&{}%slXc0b=4&ZNrKEgfrgZNFMMfg}cgufN?pULds z;WvX8;S=dF{x;|%G`D|`-vaW@Sm_AUX(os@BgFZsG{YU&ZP!x7b z$M8Rg{J%Q;Px$SiMfgHGPUJXjQ=~N&n2C}-wl0)KkUEYpN0I^OFD_a2l@!- z?7!mw1-WOCPT}u`{0B1oZ}=CWMfgTKjlU222p8?Y<6nZJuwOcZ^RN96oGVZizLn0B z{{RdY{NO||2c>hw1>e8$El?B=N$1J=9i;D+{x|-&kni3~7f3w?gN1|X|B!kB zS_Hn?g?}0b3*V(*!aoH0KCW~b{|xjI{4)L})gOw&S?LO?eAx@9LB>^5Z-=6AMY@JF zBI7@tN+=3frRz9V8G?n@35vos$ztK$$q;eIKvDQll88T^A>)sOqHtYOh(D2G#h(C0 zJ_lhV{$z#^{v;?0{KqYv$r-*lQ=lk_vLDX041b*IkUo_hfOC6hAWj1)3W^*={Lai^ z{Dx2z_>LIyyD~%Z8$+%*au`mN%y680AXgkYf_SscNc?*tR~$Kt_~^`N{4tO#jvPb$ z@yuBKv5+f{9EUR@GahF=&V3SgIr%^2Tp(^3nvhAeUar=Xk?Rxh;Fu}+rw`<6A~(kA=eQfEKjdm6HzEFz;~xA0 zkgJB=6laj*UYv)aC?v?uh`;K%4}S?1g(SH-&QeDUoYx`O3%MoE8;<*NmP4)=ax0t_ zj@CGDK~YGPvx%>Ew838mMIl|z!Fk8g7H18lpDDK^{;s1v{yHcMnQ{l5^^T4>8=xp; z$+^TgIUc}&ABsXfxf9NZj?Ornp(xxYcOm|fqbvSaC0*$MBJ^I#u!CF$bLBCxlROr7mdC*^@&wpbo(Q|i zlVEpwGVCEwg+1lzFi)NVd&x6lA9)t+E6;)bF5^>Bl{ z5pI+>!9DV3_?5f`?vuB|Z{%%ozq}nDkatk#A$ce9gBlOZyNDl=cf%j#J@7|)FFYpi zgU99l@PvE-Hc}43yOhJQv2p}9QI5i<$}xDaavU~OPQd$=ld!pR3bs&A!~2ypu$6Ka zwpPx;Y~?&`qg;S(m5Z>Qav63|uE37UHJGbhhn*BYe=KxXB-lk!U^m4EyDN6sQ}Kg& zN&xJo1i{`)2<)ST!9hxd$lZq$Mf_2XUn()gzf$7h*GdB1rzF8|loa@_k_Hbb8StRu zfZr+g;9;dc{9b7Qe^462qe>(AqtY1uq%?uYm8S57(hUBhG>0dZmhhC)3jU^K!{3!0 z_=nOCo>e-)b4o5euXKWcD_!6Pr5pT5=>ab)d942>jaQW3IR8S6a82n;{3^5v*OmUn z|I;W~2jEyBt(J8ljIs`b(N-snvF4MSY;_S&(wJf`#7WhdZY{!3)0kl$hM%c1%UXi( z(AdE0#=iq{wpxe7JFOnr$XW^SvW|rJTC2#@3{n%UV~97`*wQ){r-jB2)^Wu9SSOI$ z7gDRO6X6`|B>0?lGF)Mu3g5C$C(qZ`8N~NOdIHv&#P>l9|0iP>{MI@L9tgt?bqQ>2TT0G*ZOe!^)p(z6Iq~MU6|jYEC2VP1 z4ez(Dfdg%8;ZWN;SY%rdAGK|ygksw!;=?qS*f!&oLQxoQ+XBmNTcO9c4gX2ocH$E? zPO|O5c?yccWZOBEQ0g*+cRE5f5boV3C)jU_%doMI>n z(|qi3wGUq`7T(tQj!yv28jbJz1QB2769V7&34>dFBH$-JQE;zM47}nK$Grab1mb=g z1MEpSfsl66o&smv)8HI?27J!$fOGBj;5>VM_=3FwoNsRkU$i%ZFWDQzh4v@DGI_EvDIJsU2w=fF4Y?cj2I2l%Ev7rtfh1XtR-z*Y8caJ9V$eA}J} z*Vuc*wf4U7U3-7{o_zpZZyyLZ*ayLlb|>6q&xaq_U2wC#5PoPcVjH*GhY|k>TKMu* z3Gt61|9i&nCjJSe-)eLFx%e9kb6Q zeiG8l@|^{veCNOz-?=c>cOH!MoevXy7r;c{g)qr?5lr!23{!oVz;xfGFvE8l%=BFj z8~Cn(*}f}bJKxo?i|-oP(|0ZG>$?sP@?8%Ld^f^k-%W71?`Al{cME*ncPo6#cN?7U zyB*H)-2q?l-3b@^?t)8wcf&V*_rTS@d*OQDeeeU{{cx-A0r;u!A^4^5VYtut2t4R} z6dv(C22c1NhrjurfMfKd(Bj_?+WkAgK>u7A=HCg% z`FDZI{@q}Pe-C(@e;&Nczc*~^-xs#)=kAZLakA-jhkAv&{C&2gp zC&G{YC&3;5li?TsQ{gxM)8Qfi8Sn@HneZ3?S@5*~9QddITzJWU9=zs1A1VP0pl`rJ z7#gq$Mg=T}@c~O2 zz(!aYunD>YHp7a5EwCzJE1VFp4L%jH9ZnC}0p|qlgf9f_f(rw7!=(Xx;F|$^;X48Q z;QE05a7(}e_({Ma_(i~BxHsSk{5Iey{2|~NJRWcy{u*!s{uyu*UI;h^{|z_|#lSPr z7I+r=2cCoBf#+dN;02f%coC)rUWQqLSKyt2*I<*t>+rrni$Z@gP=Xx-=_U%@0&TEY zpdCIG=m(vF0k9}A2$lwhKu=&891|D;#|K8iNr5qNT3{TU9hd;;1t!6l0#o2?foX7g zU%)%%8^F&38^Yazjo|*k#_+qqCh%xrQ+P748T>u4IXoBG5?&5$ z1^)}ohEh-t^b2YSgM&K2h@f1U5Y!2#26cgspl+~XP!D)_P#$a+)EnL()EBl7>JK{w z4S?N)2Eu+pgW$j*CmbA<4<8M3L3dCgtOzQCj|B~b6M{_rZ0+`{Cx`1MuVELvTm%VYnyw2>d4aC_EH= z3?2(U4u1(g0Z#{?gy(}#!ArrX;kDp1Pz*T>Z6W7iP{?^09&!Q3hg^gyA(vsjkSp+x zkZZ7U$aUB}#A4;#50PNU5CwJ#vB91pcKBe39~=}C01HBbU~xzY93Bz|M}$PcF(FZK zd`JwO6cPt#ge1V(AxUsvND5pOk_KN3$$-m49B@rYJ@{ToeYh#40o)eS5PlZY2<{GP z4EKjLf!~ERg+GNfgC|3p!?PhR;ol*x;MI_9XbH`M_Rw}PFth^<3(bYmp`BoIXcw3f z+6^`c?E&u!&4W!td&3r?ePP?s{xCOm0PGq%5cUZj1P6pV;Ul5>&=u-}C833|JhTXo z3>^l?g_gi4L*4M{(BW`as0Yput%Qq1N5a=btKh28F>r0@Shy*49Q-JB0{kp=BHSH1 z3GNS_48IGV3V#Zn4o`;8fWL>%gy%wM!ONj@;D4cWp%gX``i0Gh!C?zvbl5_e5ViTM4^{t%iNV*1!Q_YvChd>)_C^^{^ytBPBToJY#z8$s)t_#}>-w)ddKMvau zcZ3~)UxXck--I28hr*7)AHt5pU&4;T(_zQqpJ6B9rLdFmTG%NlhM$JM;b&k__*obp zeh$WmpNA>o7hq=iMR-T}W!O0U3cNS`8f+bY9kvU%*hJxha0&Jd=K+DxH{1pv3b(_8 za6ecS9so%BUbXIw}M{5fug}M@7JyQBm-@s2Dgu zDh@7=N`S9NCBYR@DR6C68r%?-0Y8dz!0l1>;O9~G;nz_O;DM-y@Mu&c_;XZacq*z1 z{3EI<{3ogzyb{$MO3^K$Pjo975SV7cr|(!w8YGT)|k04FlHVMiVn1wJSW)ZwCW-+`g zW(jN>vlO<7Sq9t2EQh%6l~i&zR%zLd*$xE#@Q?V^2X_>}ePjdj^Kbo`o^7=U`&& zd6*e{0oISb2=9!&44cGWfh}XN!8WniVTV}$5uVU3R)W1^c{D8akF~*vW9@KAtREZ} z8vx5eHtl(xB;+l+(7tH z+#pyG=Y&OZ`LHz31xLgc!ZC40aD3b_I4Q0K&WLlv*>S_+yf_bB6jupfiyH}-$5p{q zabw_nabw}8xN&e>+ywYp+(h_Q+$6X^ZZiBXZYumKZaO>}Hv|42HxvFHHw#{ln*%NJ zbD=eU9`uW!55wXY!07meFd=>s%!pqMZ;M|78^$k%P2-or7V*nr+xQhQH-07T5x*Mt ziC+T;#IJ?<@$2Bw`1PV*@PH4Hz5wb zn2-QpO-O>v5>nt>32E@%gbcVb!2v%^s0Tkys1J7~G=N_vG=v8e8o?t8jp0uTP2g_{ zP2t&uX7KNX=J0YtOK3@K1+9tM&@V9uh9$Ox(TN>kLSimVP3#13OY8z0CU%2&C-#8N z67yhoVsF?!u`leD*dKOJ902Ap?Mp%-x36>{qhNF|V zz;Q`i;pC)k@ad%Oa8}X|I6rA8d^u?sd_8G5T#>W~u1(qtHze(YA0_RF+mjB!&yx

GNsifoZkE9dupQMxUO42DPB%g*p$!B0d@>v*>d=ADYpNFZ* z7oa2gB5as^8Qz_I1vX2*2D6i|!}iG*Kejqqf_cfj6cqX;+u$R~cIZm>gO4T$KzDKw z9GM&fA4?8{PbNpesmW3BndBHaCpiu-NKSySBqzZ)l2hQy!BWeof< zWh~s5G7f&0G68;-G7;`inFPN}nGAnQnF>#)OozXx%z%HV%!HRyWk-8H0NnH&ePF(}@ zQ`f?wsq0`_>Uvn2x)F{}-2}&_ZibUnx4@@Ux58Pe+u-x5+u_TpJK&Pkop43!F8Frp zZnzUcBd9Y`C zZ`e1zFMKGyKP*Te0E^NG!r|$I;D~f59Fv|8C#JjLl=MP4BfSXDP9Fy6rI)~$(%o=z z`f&Jqx(BXEuY_yUN5T#1Rq&(qF>rhOShzcV9Q-XYPkBG7rF(nTKGP%)_v2<`LK}^C;|*c?{-d9*4a%PryEzCt<(LQ?P&LX;_kZ z29{=?h3?FA?1%Eq^Tda1d@u6?@eP?5;rp4F;ik+haC7E0_+jRCxFypPK--lm!A~+7 zJ|b+-w82j^?Qln?AN(vc0Pf5Tf}dxGz+IVP@Qcg{xH~fnewi5q_hiPwuQC(h-pnNU zb!H0Omzf5SWM;q^hXcks>cKcieHia(023SyVWOiEOm;MeDUK#E)zK8DJDR}^M{}6z zXbByTRxrzv4eL2_;BAg}u)d=MY~aX+cQ`u1hK?@qPDeL5!O;Ug;mCteI(oxNj=pfR zqd%PD7yzd_2Eyr%LGWpZ6V7nt!Plw$_`%`p@H z?wAG7IOf2!j=Atp$2|C#V?I3ZSO70L7Q%lVi{K^4VtCoH1YU70g;yQR;D3(g@Va9K zv}CP>Qr2oHXRU$OthLaVwGR4Zt%vrkjnFr16ZFg43ENd5x$l47fv-ZHKti3QgYafis+7Dy14g}1zFw8-C?kC1OBVQqu-|n=O+VP)> zd-I=#3;D0WRno$c*F#o^YzWyJ@_ERQphlYm6g{Fr#2)!q?RcOc1 zF429W2SpE!9v(e9dSdj`(Q~6m#Z8Et7B?sErMRVWtK!zjeH8b0%EpwBQ+B0%lX4{G zmz1+9mr^XLzNulU@u@Ad+Glmk>X+rrdNj+E^;p)VtY@<3WxbNMJnNmTOuA>Jx9_|C``cIE`QDvd?)>b|-|jts@6~&iW`WJ3nk6@@*X*ul&6_>je17v+o3Cj8 zZu8B}zwPDsVEBUx4`x2t@WFc@%zp5J2NNH1Jap$n%^qs=(9}V*2Q3)%+Mr|3-<;>2 zSDh6FV+)=tm|5^b!Qz593)U9=Jmk!fe}-Hi;!_w>7+aWDcza=!!utz56m~D{U)a4U zzv%8qTR&RyXm0Vo;u$5wN~e@=Dm_?wsnp?~Gkh-)J%M@}6%YvjU_|BbwNRO?awMm;j>o2uWc{;p~`y4mR5(F;a@ zFnZLOr^h@$rtq=&u`9-YH1_J_@#9*L>o_idT*X0L|LKGy6W)B{ z-zVlwJUwyHlV3i0^2vK9wVu>%l5^6iNfRbbpEP&U!b$H;+Bj+3q+chUofP`i#;3k` z>gZD!pQ<<_L)7;9DL@dXL>w4;Mu{?o_O}kvjb*Ln6+Wn&RP3s9hvpptiahrW>?Jq zcJ{H^r)K{(`=L2Q=e#jz{hWa3x;^*wb90~TJNJdTZ_Zsick|q7&mVq1Y2GXI-kRrp zq3DH{^K<79n7@4f*Yp3Gf8xdd3!Yf;-hz)8e7WG#g2pcmc&YHEjW2!r((*rbwCZ>ZXE zdc#W_U)}iT#&_diVAU{37vfxI6JP z_+{cjxF_*f_*LR1xHr*f32l60G~AbXC;TR{Bix_Z4}P0C6dp(%1rH`Z3lAl}0l!P! z01qdA2ER`{2#+NG3V%qv1dk^Ayv94y#AtXdF$?~bcrQGj*b)Am*bkmaEQ7x!_KTE- zQ;DxE2^3Bz%H#Q&sP?y9(!+Y}HuaA^Q2l2S_VKG${jawFeYJ0<>*4PY*Pb?~BKc1h z`k!|>O??a4gE#xLeqp-a`7OeoS4>~xSC-}(;P;dPw5S36iZVb5M-eCzMWJXEgJMw}ibuBz^@Ik(?LtH0 z4xy#cLbxAg3$29*h5o`Y;ZdPXa0?ZJhhK}15UPYx{8F@v--%WUbA{)G7le7jeDoq( zfL=li(aUfVdIc?J`cS^fNkv&Ix}CvPH5e z$cpZ?G_*8AccJ?&EiJ83Ym|-Jpd8c|wL|Su2hUb4K57NJ+r8ckIi{)2z+VY#_jOBOBALviZS<5+e-tw2_Z*&1&wESba zgf62imVYf*(SMd}mg|T?$fAfOBqOV+h&JSdd_}wHhx}0h3K9dwU=)JF#85FDMT!w( z6pBVMC{BzO<58lRASR&{F0+9gfgEC{n1yZ=>xuPI1Mzn84s@s3P;7+mLU)Ue z#U`k!c#n85YKEGN_lYgg{bEb870MP{i)~O_F-L4Kwi7#`T(P700O~Au61$*oVpp*{ z>M8aR^H6WGm)KYABlZ{ji4UTO!~x>N;y`f_dISv?onnEQFAfo1;!v?rEJDM?N5x`P zDwc?DG+ZnbJz}|7DOQLh#S!8tG+L|@$Dpy|W8&jzyf{vrfF_Dhh)<$P=qWTsoGea7 z)5U4x4Do4krud9FOMF(Gjh++dh;z~N=ml|}I3Fz#UldIT>-6b`W z8l$_>JyH{?DQYI&E8T~hqn1(&>3-B&Y9+Oivgz-(l{!f6rCh0_)Jb}P-fw5Ao77e6 zj(VUxsi)Kn^`TeXPwFc@DD{^Hpn=ju^pYQv9+3t~gC(bwk6coLGz1N$_xz|-Bn?9) zQn6Hu$|Scm9F?OA$s<*wk(Wwb8CovAA+3Y$PP9wZD*Yh+h<=ieNypI%>1XK|^s97II)#2ize}g3Gw7`Jhx8}Ze6M^TYK~gUE#&)AE0is_mfN5l)J|?Iw?`f24stH)BtIZ`MqTAD zayQf+^^|+ad8oJCOYVdE$$jPiXn_2n{1AFr9w-k&PWcgeFe;GqWfv-xhsZ-tQJya^Krf+}<%RMq@*;ULdKJAU zFOip`*U>VxTz*4-6Rkii<+tQj=xuqmyauh6-;v)%{5DBmk2aw9Wqy~0Hp?H#AEGU2 ztNfAtG5SQ_CT~ZdqR-?V^5^nS`3rfMyc_M2zm&g1U(0*tZ{&UQesn-4p`EU6j zbVISWG(vZw zyOqXD6Lb%{S81v=L-(N;N^_+px*xSd*-C4r4Qi|8DD6-OrM=P-J)q<&ols}gRq3L1 zSGp-ZP@d9L>4kcuzDggZA9_&fuM9vBp@)@$${^%a9#ICP0wrG=qPUboRHO`5hAEFK z#i&#%QOXpzQmzbFDin`WiAE|Tlu>B3Ql*SRW0l90$I*CYobrS+L3vV{s63@iQYNFR z$`oa~GEI3JJ)_J}W};`&Y-N`6oH9q5i=Ia>DD#vTmHEm7v`~3Tc^SQ;EK(MuCCaPH zQsp(}b@Ya^Oj(XrC~qonp;gLCWi?u(ysf;0-c{Br>(F~>gR)+EU)iX9plnh$qbrW{8nl%JJf&`ESk`BnK1oknMr-<7kSqnK23Uhoh&9+6io&g7 z)(8}3jkHFiSZjuuJ0*7~S{^>%AR>mAlR zQ6qF0y4%{=+5|PV-eYZMz1MmlYGG||ZHewjtx#)}joP3b)Xv)0+QHi1nrrQ7?QHF2 z?Si_ZZm5T~yLEu|L2H@SZ5@uvkq1?vO7xm_iFGM@9j&y!WnG0FDBC7WG>Sp7C=SJ=1eA!9P_k{8CB^2prlK^Ijxtata@eL>vrs*B8>(+x zV!ho~-`0Te4%E}#ii$EJ$6Z?L%CB%02p<2^(wFQRAd(y=eWu%iiQ;BJ1bn>-Ni-u zRYH!l%+to{acQOYEibBYY0K;AEG;N@l?!d%BTI|j&Vugc?!t1H$5Sh@r)zkn%Ttl# zE-5Q^vGAKE=2fsPp*ySOs%Y!VcNb7-?QPW4JVFku=q{<9vu#m1o8>OA>f$VQ7S^3r z$SHPuJZz7;-4(7vcX^S^V{Uo%G-b3eDlKSV>@4&Mc`j#p{?J}kWiEYMTV*|3Q&`<; zc7A!4Zgwwr=DR#~GYHk|*`4BD#X@!=2TEU7TW5t+=uqyiEc2Syi}5nF_3+d+a!ZG} z_3cq(JzZtRRa(aEayEr!>T}ic^|I@jWd2`%&31ckoJm{poA}*bZjSkl`8!i@>bSXG zs5czEI)^>Cw8B+BMBST0FITav%w1l=VJh+ry?J)S_1w{!W9cdt+IcFRgNw8uZ!HAKKk-<%H1B1i`6OgGTW6hn=7xVq_Wsa#WM3&8|sd3Q|#sps$MH+QL(GQ z%&2alTBo&*G)*R0ef3D|v+A{=+u%p3yxm5Yaw^x#-o3o2M6)?B)at^?Ri>VpE{|DY zUB7o(0TtX#?dd9Ua{_Dg8t0(C+?ymA>B3Eus82UbFqhNSHL^Y1uI=I6QneXU&qQPI z-ZZh+X5KVMA7^=ydIZ=9`PCcrf9L$a3+`Q}wo|q8^>qzy@2bcjTD|UVU7mcGT74?2 z_q4WgS}j)(U+w)|Z40bm&4ivwn~~a3Sm`XR-Vn`f%i+{=o4ZPP)pj783R$7AsjFN+ zX6BS}p!7+hj%zlthTq0H%vI3KHL9Yryn4~<{Ir$@ecbHWK2$lcO0QQHEk$ogw07HE zJ*wY`A~m~~Av-_cU0F)~u9Zh$pS=9?qOyu!PR}rNUftwBpK*9TTo z+XK~y!JJvo(v`ZL?<_A+i~S#2YR`Vds;TFOSxW7!=8|&UWmVN>w=Z{>nAyz?=KeOe zN8k8%<>l^jcDY)9&8F+qH8a*ut?||B=qfi>R-fJLFxJeat?^B_NuNneH;c`q`gV7F zD%2fjdR?4lot;%Kvn|uE=B8(qtDSXp9cpY&ebdxtZmU*LGubSeno&@hUvZN&9eTyoA(C)ZCd?(R~f2z>!J`jlBt7o>EEtK3zZ?-Fjz z(WSD&r5`l!MC!S#j7=L+L~G7sywmC&4Yf!vR)gK6j8)REyR~Y&k)=&_7HzfuN0yp} znwzU%qtyLuIyV%kRfEn&9-0re?$mC;3{T%j?cH2da*Ev^*A0c3rE42tOz1Od4jr9J zSGL)E)TT6F@QT)C?BJ>}%j;9*8tE!m4{!B)d386;T$EB?rByV2eT{QZ&!UW**%V+S92J+Ks9xchc@TO9b8S;wmU|c6E*@D)hRNdL`+* z!OJkKZY|4G<}Ot`%i5(~E7GW0UQX@R>FM&gD>)#Zw)EmvtWJa7{!{aSPOVs@LC&jim8repI-N3YcX|Y`Oy2SA(jxspd7F7$ zEegC1wbFS{_jMN4nr_#vy?!0kX)H^h@MP0FFXG-uFe04To(d<|YwbqG`(DVr(aBc3 z+P#LByDKV+xzV6&Ra8L<>MfC{qMX)?b6cx(?TcNbis*T06P=3+hiV-*AuqqOxJ-}g z$FQb1rXH(`qI|lGRh|l0iNL0EAiHagL1}fOTAp!pU}V>)jO(+y)3~{F3C480(h6=S z)GF$2m=iU-SiMPlpnJOxb&gPOiL;PPt?Z&!5WihYL92$2qt5M26)asQ!gBDdAH}#n5w<_vXrPrN{c5`VacBaRp#8Mcd;p zSC^!_wfBv_By&gJFGfE9kXSUECvFY7?QCk>f0Jl{>Wynbt~cw~6{H=m(&# zOM~oD&yO0vGo6;+<;68d?RBm3+c=AzTyAR&ZQmQN)=t+Xnfs;2(e|i%;?&7mUHv`! zQP3YLXxmZisMVCD*IwgRug2E;-)e<=fa+m9nb3;K=Bb8x*{aE2s{+*6`VQ4w5+~KH zCdK=}*4>5?Y*%?+k=kx+SBsjtv>LAWYPz^e2D{3$3ktkf?uPWvt|49vHBP496-C9K zI?aNSqz)&Jbme0K?Fzj1PRtE?zwx0#cj z-LyF7##C2EJ#SA}zKhn@>o}3S&{aSYHJhzxxZ!5Mst>JLP)*hv+q+EMnl<)L zxVftqqMgKEtEDYM>&6&2D>cj1c0uiDQd&<&P|c^hy7Mr%=xJ$sNJ_4?)j^mlJat=+7-&ynl4%zW4aB`?uOg;T6ac$l0u46 zuy%FPXVg*++X&3sq-W6APP@Dr>DA9UJlfK#`!Qa1NPYa#cBHGgxXwwW7pX4(rU^CI z=$gamy%y?@zUhqmCEn|qOwIh%8odaQ`Owq5rfHq(JX(LA=xCk4x(~(ldA+)XH(kE> zKCW4G+am3lJIjs7dwLD1arN304EImuuP8#d&UWDXB^Pf6T1y zmzx$_dvDY^mRi|4qe%HC$XvuC>}jkuPA+rJeAI3x?Jw^>OCWPnJkFgG~LK9E*omx zx9Ns=q89h)>sjh7u2uWBb?U&jk95+wsh2FZ-E(mX)HQo9u8_hNIZO?{uZ%GE}kTbc5r z!90Ac(|YK6IH!c%nyB^|!DHNv>Ma%*WDXUluh6?~ckQVrj{e$4Af~RP+7@_sU31&2 zH+E{LlD<*ja;Mtb>X++B8X0}I?rwLnT39V3&sC`2M&VUIC2luLeLkp`Q*G76^fGU# z(bYNi^c&8EI_Y&Pz1~gM>RnCCMpsIGby~fHYftK%Sgt)BsXL?kX4jm}%xCs&%!fwi zw0T|Djw#QVd4$4-n-AB93LRa=T+-;qxeN7sarF%Z4{6lb8P)e}HM^%P&pW&}LBG%# zk2`WXX+{a^{8}5E%^{-s=T_2O2lFw7dQImk4i^ntGG~d_6*bDxlC*nBGjrW*xR#j1 z12k8Gx~LnHtCvccP-*~SuD2$!}qHAj8vR>}#~mhPtdw2}u;>dR63Ic=)6Gon{fiAz5u zLa&_e>O#n(RujE;2;I0{)9%Z7S?a1@r*5S;Z4%U5{$3rjwb#HxMWIvMUkzR=LJwAI&NfA*)XxPC*dZnmDJ-d@m;G&i)^T`^QW<2#fW6&S-9jCIuy zyYb*kTb|m^l)AXZ)uw1mx%bH~R^RSd3@y>Bx>15zdujT$!3ot{s_s#BL_)Qpt)g*E zgkH{a_ z-pN%Zs6%&X!d*g}%91k9f3BZ-oO^nV^BPaT>o?Aa>dUn8@JK(CS*&^&SaYsuV}r_# z%TfDs^$lq$H0JYi^jzvg#-Wvi)k9ldwB~5ZdY-&8=g3m+fw7m_F5g}1 zF45jg8BMz}zgL3csDgT4WR?&=^wG67kAQWR?(Y>nFZmf+BVFXdlpr4v$ zYBgNHzSfvp8(G(^8E8~zb!rm4S4rPrH&3f^)k9MI0Mt#Z+0(UC^!CVD=b9w-qN@(B zQ7@-n1I#+O3u>hp?9FmXrpbJji#=0pFRyPe(oSgrq^T5N2HS&rGE zxcMAr7og5e`iL^aq{miXp}w0jGdar(8I)*VpXjsc?{?HIH(yGQ+E1;!Vp_3gkwy{i zwJ~Fcsl9TjX*znB7MLxRemH8@pr@-kNzJ8hvRQ`umb1IF(qpc?*378)nI)#fC9^^u z+M>UUH|A5#n)0=o%y*^cDjTm(jdo34PWx_sj6`CZ@0Hk5ZJ;aq78O(sH8OcQbu-hu zuIb<#+08C{&1!i)=u~aPd5!NcU`qi^+vc>JEhM}|2Kb_{+^&#c5T~hIbB#s2Hcr-)>!yZXIbrq*Nm3% z)S6vuSqw+->(<>yt!=0^Pn$|}Q;F#dtnQE*8Qaor8qI?R21GD8vew)+&l78}Ngn%4 zJ%?&#R(oc(40V8?Iz+ARel*{D)XJO-*t{p{=GVjyi%1tagMgk^39+`77%_4{UN zLx!09LVf&{#~65Hy1LStXSKSX*_9Q%ycpriDR+9zLt%Q=GpG-WXsfhaX$DOh<chAnd8!@pFltjzi(yc|xF4q?ZEzy?7 zlBf}-Dyx6}K9@{f4yk%K!WMx<;(CBYB9WO0yp+jB)Hm~P00+jQi@Tc|iCwm8zjaxg zvEiPwxtf+jdE<#dW-enZ}K%%<&6RHqZeh_6_JtDww9>>Fbi1XghQu=AZM-gv~{@1zz#Q6+l+`9OssiF|Osg(z=15+1?@ym@` zJD;4idqfhXmeA^)yNlyCbaZ`G;hr>Vg>+{!XAyW0IuExUx=wl=;(lZVuFY<+>IezQ zdrsLNVd+Bjy{D8G!@~1DNaK?j+v!%-`V!W4i@@#-N5Hr=(`}sAq!<;G%|J3NP`|Qh zs!OqURX1_-6fJhd>Fpe_I)M_S*h?@Tm5aSx|FHqFD*AM}b4fqz@}#Rh&n^8}#R1Wp zA%SmLovxAN;B9vF4n{wKIzw9N#oR?UOXBUL=(Cu{S;kx^=*aoY?fRMI;gR&Rt1pOS zUuI@(R4yWuTTp74Zpkhj;`Z|qSJnL}jMM5A(H96Fspa|1=6b=o31Vos*;T`i)-b@> zw9K#Jkh|Zns7NBBVHji!BM9Yo9m>(&A7D~CP(L4>C=?NQ$4 zw5fGOh~4(PV(pm)p|rDGcGc$T8ib}oEA_`@%jvGOY|nU+pVPHnb?dl>--)4UaO;YXs;qBf1jhL;YH%LgM85Mf<_~Q{gVZfpLZlVx3xB)iI4eQd| z)?qDlXB}{av8+AXk3+=DE-gZmh_z3Iw8zrC7g0C!rXi~DV2PMbgZ^C+li&_; z^Ez5)39D6?BVWxp!|e!F6nd4?s3JJ3=EGu@LsUdtkcyA#uEJKD>w|c0{%S1_Jvd?$C z#yY;c?twI4*`B{v7J_doo7N)3@`)Y{SZ`w9lTkG`@K}!flR#tkB^+U^_?Np7?GR*gokEy#GU9C;BX4UQ80Byue1d3| z*ND8^3$V^#wliqx25j7U;lGQWmwr1b)1OUtT`BTz7hBLF7GKwdU3k>Cn}E)F_lN@g zO`3|zmu+C9_0g25p6XN>dkhEZA_CKom0DZ1i(CsjS!18sQ)>&a*jQ^&=-Y$tgj%Iga6F^FZ{M~)r4}tX2vnoFy(i-s zVSj!bDB{T9uBf(xf>85+#F+t30Y+Vj`Wg!P7p3-Cwdkms#(X@nQc-<>DJ=$RR=fFS z&QSxY10PM_)7>U@TwY`%xE4u#LOdb0%<_Aw*@Y5713nuBG6bEdHl?Vk?+kxQse@xs zZ2~WYM5(A{AEkmCs2LJ4P!Y4$hNeaJ;Ai13Y}BCDIeXegD}FaHR=G8_nD)~*{5}N zD`~bp+x*GA^{^?pH<7rVj8C$gkorX}0vqgl`VXbtH8HZN<2z8{mLz|{9=6+);_o6# zChvhx!Es12VJ24vVpkDPp&xw*9leUO?QuwJu5W8{@bgiE_Z7@k*qMF1gZXFLO6Mfz zZn`U~tkC)m3F9!hukKyqMQyW3=);0PDEfw$?ocDM=7eUIbOigcuh3ef(7KGOyU&

&l?FuTuibttGDwSu6=(mMMVb&qDu>NEUF5m%NpQ`lmH95L@ zQkvLb5R#z;xf}}<3beLPt~jDuX7ZulHEmIk(@^Xi=|kq+}e$d7%gF7}^7!F#h5h7tX6LgRkstIUZ#=;%;lNzTjEw zc3lpNjOUeEVRT10qKVzm3R2WGv%Tptp$dO4Zr`?09l7`Ai_TFsQH8`eh8Ap;;=3*n zrQ0pMiV!(k^^X=5Uz@H0_%)+cVb`zQWDbNvr`mW9j9b%#ais1bCDIwzH8 zJV`3JqevX-RZTbmdGG1y2w3|=dRFf`1Fd#HroE^14xT^GyI<2@3YyO*OFDdy(Y6do z`_&M2YCh>XZI#q1?ah>buH22UOeBy zW;`Wv0@a4eBqdD9hI8C4W7iE61FZGN>IoBwW5^q_20Dksuh35)r-W_%2n_W&SOw7Z zd*Edu?Jv@LCTd8HaqGmuIAGTZzFyp&!mHI#qn~d#O-zAzLy(E)Qly35kILns+(W_PhG(0q0+Kydi4mcqr=dhi)+edy zjku`-Q#e#1p87SO0_6%xwX6y`nV;0i{1GNhx0{y=sf=EQCI4L^WqMaodYLI*vS_v< z?EzDTt(KtsFLl&z4k=zxX@{1wqjHiiJ+enan{K~6!)CaEeYRCrW<8Nn`&)j}piHS+b@ zX4M7TiEKm8hr>P0RPAJKZ4Xnkdk{O&7?brv)9!0vncH|74rUbA_0bmg95**_+;num zA(RHZ8^IQvS)b913iU&^DK`6GLHn z4VJtb9BB-hhjM<7C$#n;Ur?}E8EdP59(ZW}w7P#?5BjU7$N)qkGLA1B1-)`e1Lbe_ z1&7KF>=H>+d~7X7ezC^FLCZZBV+#@a12<8?)?o3LOliww&S(hc?1rm@TEkv0Gzz9+ z1%I)5qUkgE#c(!ThZ{*I#*k2TgvL!gfUe=*1WG~nr$|7wKPl$X{=}-Iv!@;2$}F_$ zlFf{(&Y>){oEp^OYRq&dH(_U0=CfGylC6$Pu=vFgc%0I!?u}F1L+g8u9gl%)WP`^k zguUDGYMM0qN;P3m-cBuMr}d~$ipVV!&>od*h87yG*7hgbC0k87pwYSvg`(l=`EFQ3 zio{d&u*6;D%}~KDv%AtcO)BQ1(}t5t}dKnCW8;P&`YXZ=fC} zF1E{fC$_m7v4p2EvcB8G?>Q#dVdwoh z5>QJ3pD2lrsXET4g!l+jWkYIWo3sOnqbTWjl;KTFEHU4)em^lrQHmXYF zkpg`kxsRei2d~lzHHtxt&Bygmf0IDXML3KP&|(EMzhxsxT7cc*XgHyg;aQ%?#?Xf)NS2C*uTprP$#4UQ7{>*cRB^aN6gYxDEba3Er9~hirJTkoLKf13 zRCOr?#g}qQxD-_&<0kDCSV?env<0Zj2GEw@fX9{WB&i%9yF8i^Zs2XvP92xpLOm98 z=->kF+yT>pJr}$!uyOs6BU|uXjWY6N?5I9Dqb`x5w!Dg1KX!$Mf1i$14I*8u+X(67<0cnTN*$c8p= z@|^t{dj9L1JaO=H27Yx>zywck(O=f9{h7}x>Y;Rx%JjIvrPnUp-I34^XH@3AzxxJ9 zsgNvfA+7ojD<@Wi+I$r=VP3cAAc`< z_@>Rk&5$x~4V^))L1f0s_L{;*T<^IUz9$0y zT9FB^#1tT#t-uN0>>t>O6N91%v3OoaE|))C9IG9ns&R3QGozF?A~|9c%IR^Yz+a(< zArOS}caIpPn-Ha;G=SJ4;|^y~=N+t#a1*bzkgptQ1dds-{u3CmUiEzd$Oan^Au68% zF4c>ia%LJK+FOv)i=st zp@gQ}Ao~xbP_-Uz;V>T{J5ce*_nWV)``-rteu>}TDbiF4c`t^{^IxynLbxoscY*4f zPKJZ}hC_el=FzLG#o=)D>Rw_F!#r@9JV;>h3HGs@=YQZW2UU;jT99rGIDP184oW=H z0lLV;Qb!OpieiimKP(@bBDOnaZ27jxGYk;6)g~crzJLUN#7a|rmgy==Q0CBS zhgCH6NENj4He5PkV%0V#AW?M0YGb^?azL_jL;9FE-Dnn(Njf9i1XIXFhIAY9r!{VU zOk*&F?WGbZ8n3~hR$t-797Jb!k;0_e1#XpbD9U(zcof7(6_B>I`^UI+=PXOVn;>cB zT@||c6=z8S9Nd!89eH;$k?REW$RU!F=L53Xx_IF2R**-n1O<&2+>srl)P9_Hjr>mcXejx$U@(cQdIzdTp zVf{%9dOB|8bq%J4jN#S}nF^>HwgF?Z`WXSfH-mgqpS!v|ae%Z*zF!9IB82yLu@TjZ zREkT}06FN1!SKQ6k^9GLyZwmcqeFo6-sBZ;<6Y;dOO0#&_%?amJicMEZ)2jsll&#vsuG0601<$q$n&OM*b|A z`cDq&EDHzgI91{D2%iux7#-2BPkw}qhsO#n_t!wcQUnBav8ZB-96>QQB7DFU2W&!50;vAEN_#~Sh2ni||afob9uHO1ka>3GEgn>{}E;|jYud&;sv62es`VkxIY zFjYBThv@@fX$sONh+0xM#h{I^zLQ;Sj9-K;LD?kz zL#+pRmI%^!zT+{-00_IahzPh!t|Op8pdq#Q0Xj-ob3HUAj5 z!m&P0xUmSgFTOvSzuMpOV*P-{CdL;HjF5&w+E~eR@mV8q5^KLXsIf}6M|v?7peWa3 zlW;5-04>8s(IK<(Y&sogr?pnHXIqH~!`=xLm@X+pNT`Oy>dP&nnJN}mg5_TMRYS_9 zhS@e+45mmV&fk&-Tax`U;Bui5%+`^?Oe&RABG_^L!FDT$#hSDi#ip z8=ynHV<~ZbztEd5AZ5XNiyYEDx4s}-0h!p}bVx$r?+RF0M(^D9^1ym?^Z@>=I|urs zG6;fh5{3{08C;KyR8a+tEJ)5g2xcaW;0`aYLKt`4hQt@vgiq)?FV-Zr17eP#0q65b zkr6u|=(@y92f4k1@?n;V|81Be?R3z3LsFbq=RaP_SA?Wi_&k#Hv17AW9D5wxfP|^U z6X`#3R|*nI(wctd@X#6cqNqQidpU&;U!U<*8ezDf!b42wUp8~ATjWy01)qH3qG_MmJZ>ChH*93H{{-9N*JSE$%Qd-N7B%)v=fC=)?rP+PapdhXAB@bALCz;|Jvcs2YI z?*yuf8s!%m$e)q_Ks)eZziODx736o$T^XNZ4kiE_2!G=d72NpW=~$NlEqDvrDSYt# zW{vaZy>xVtQkdANV)G9ZJhYyyL{^?}wwM{g_o7A##SJfmUf<)BdpuS&@A|2?MJ+w)n64~hx8y1L;JU?4p zo}Vl~%uc4ui^<~SFqzM%i@C$+2mfb!n32Ww@^UgeizFZ|W@pC{Q>Nwgx5e~qK07~K z&ZifX%gN&W(#0(oUoNK0#d*aTDlWjzPNZQOhqUe0-q7)@w;V zu^E6wP@-}H#gTNj2;u2>IwP)e@OyX=&oWBO0YqA%Gl0DVq7^Vesdfl4AL*>=F;2hG zA)?hOPh%uECbkOFFvmdeC?YJP+k-roYxyhW_{H5HAlU*;e%@`*L42-nv8j@G6k|%( z*e+roZE${1x&C^m) zN=*=+J>r}Sh6XY63fjaDU-^#P^$+Y@8RRCKTP#h95aR|ZG{(FsGLvH5FiTpy*9ybC zVr+$1k56sAjz-On)ViCvYOitE-^A5|8gJVW(5@Aja#Ab>W8>X5cfgqBTYY7$H|c6z zT%L=_o=)b!4w$>sr9w|Gva%f=%b{+NohbeJtp>k1Xx>8z=06w=_M-%inHzp=zQ%7*2@{(Y9~P5}7b6u$11ObO9)uU0*XvuIN@0%W)2X`%e{v-3 zVWC*b3%Zu}~<6(Y!ehxP9@_aE_Oua1+2Un*TCRZP>PEHOk zXU88Gj?X{N&b~N!Iz5_A99&F)Lm;v|fB(9|4LKe)dbx_w zCITrSNHmlS8~n8zUE!aMEchqY=QGrm;29>q!^Y3B%E^wZf{ZXl$2CF~AVjA-LKGl` z&z8KYE{6zfPJF~|qD*a$eN1hlOvT7SoFET~2kh46LoM?rZ{aOp?T>; zZn`7D%e1&HvxFdIYX> zKKp$Nq1Ou(U~&7sxt{8TcGH5aRFok4(2Z2%M#NZMgvU0i6z!J(AOF6mh5}?ACE{92 z)b)&_SrfoiAmJP85D>x?#)?(g62aW#?K$eDg?<(c*qWGRxg=0GxUL7E=}I~N#sVcA z)-g1AsEZ?cgGW=}h8roW@$i7h5r$hmlz`&|?vJ)01=}J{xyDfo6p|VO%A%4BZOcB!r%epbOmZtiHi!nfegCqy{mhN(n8n zl+ytJwh!}f1yft8(QBD4a35wZv%y4}pI4yyE-c%8xq_m$M zNODPew&SvR1^g#yvX2z64+?(7Ia2{t^uWV74uA0f3HgTt=e#yc#bJbKp@CvnHyJ)! zf4#%`9HI_gSy2rcO6s^}Nu}hFC{+=c*?eHZJ274}(?v4aRhdVA$2WQW0g`;n*`z~i zM##64AAw#cdXANByM4$e?I;?@*XI=uOS&cJN795(z`^EcUZa6mH$PB#SZtze*hGMT zf>&dD*z#Rm3jy(?#t_IoeLm3#75WTzH*;hW9k3MBK}%8KpD@$#rl~j$u*2#d6a_Mf zLRo18QSF-Ci9^4IFhJaPK#KSiK@4OwEEZye(cQjTcPA`RFpeOaI8feDlo_tK@Rk0X zH&%JerB~6PYE<{v_>k1s8sMGv1ioI!S#WmaHPrpv6)w;@f}58O?2$4h)Inls^WkrJc$u3Be!{y9tn%Cd`O$jh)>`pk`0gv;0Y6Fi0EBt>nkdnnOi zH7gm)DKpG0DR}Y1c@0ts?tpqLm=&BfH^WD%G@&vaPPblERvW+x1G;>;D#jPTXAZqo zfH4Nc&3mY#<3jm12Z2DItFRtWRzlrqX@T%|8;@B+AH-iu2VNZZbmJBp7&VoY1Ek&) z6Z07t&T)$$5tf#!Z@OgC1#u+0&;^czMAI*&aSUMR$7v91LLb14X?_t}OMqGiL@LKP zA(gorZRAND3Amcp#?Khk&fx?^dL;#0Xh;A`oKAGZ5C2A3YxV58%iWztf3ByqpW1z9AgEr75$5ceZ0L24_GT|ghm7p zLSuq)O$ETON@eT_(+V1_&Uk6YsN|%DFhr>Mpz1jFyzIlzi_t*MRJg>Z_NZ1>`1bR@ z6A|oq8(hN9uNN&o^5hY#2rGXCjqMH-H`>|8T0yfdcxv{Athbs7@`JB>iL>}Kh-B##YhwemkBDOr#usiO zb1)JFnMSv*X~S5XTRfSD{ZP^nu1-ot^6L(H`88QU^f6z~&W@(PwZOCK@d$V_{jd*L z;9cyii#_E6xQlr)TO5AegKYRN{+G$;J=lcq;(nOG#ui=dyChfkYAiF_l&OK7N7OqoqV2*NBHF6YO%oZ9G!nY8x2Ax z?TqN@$uiUSWNT7O&IROrC(Bp~b7}zdjvS`g{BcaOf)%Ws2-C?bm0xj&2Tfh?NqAU# zm4!Of`C}LDQ%m_BP88k2G9NBsx4LJ`atmOLF)F*@b)^^R!;+^asi4Yh7DEAhzAr^3 zPLz?+hh;d@#^`0Jz)I%U<8}^T2ZN?GBq8aP8)daoNY}7c_9%kwE#KJD%zef54@sb| z5#Rw=8r$ZniBik#G~15Q1LTHrx;TFIGvlz$L8}xP;wg<0Pv{OPfe_t`(lXLutFn=jRB7VR&UaIJzIl?{g0a9t6 zJr3=j5=Hm%QFy@l`_xi) zhm)h;=QEv%BNaxai~Eyf*gI$`zJmsC)Uq!LR8evaR0ioCZuUhl$Dm!TQr}MYsB8zG z4Th*-yWum5Sp3FA zMbnORa8JT}IZEyCe=b#=yEnnE8G`R=1>x^ELb={+gA)1dhYnkFsE^|Sc~fbM z4}49>Y{(-5hszV*(?k>B)Y4@28zG9qls(h1NGN{Gs$qy+cmj2A*>br*ulHKg#{ z%T@tKN;HJ=6j21E3E+VTG7Cnlg&1SSN{kWRK`V>i-V}Q7s08Dhn#ZE^N2Qp%7o8c$ z!=(fBE8#VkO#?V%JG@h%;gd$43HDEIMUp2tl| zK*@ZaR}B6rJW=x{*6|FR z0#wb+UO0AJpW8l$H)`G!L9zhV7d+ECU~G9L#;EYadQvpuG9k9S%9LYy97u5m0|`aX z>QH66Wqn*!2pzdSmW>Ss{5Sd0`qBj#E1;m(FhrDEYOujfKw}~2wp>zTPs&U%*t1jY zClqnB`61l1W9BeJiwN)eBWS5$M4}Z~8@R5(f3R&3FT>rgT8c35w7@k$*JJoUR2!yX z`Qi?u#u^ftsL?paQy^HJ)<`-ijgjnku1w0)O#Q`bO1@@MNsVjJ9K{Q#Hsq0z4tWEN z+re~As+A4lNyc}cpQ+Bz969T-AL>Rf`Ap?PcFy@ft18pS5r0!wpBZcv-77RYE z)L?u!WfQ3w?0ndUQWjO2Dx;#Pm8feD)pB0QE?aHlEt4t;*S%;da{guX;3;g97x4wR6g`CCI=T;WwU8LUsR^=8bwmUJmu zdL<~a-z$s8r_WpnPvD8<{6FAnP2Su|1TwtxaWlL zFt3@g!)9gztLkMG?NkogU(R7&lJbz>&aN)v#fn32PM>miE%VeUWlEIuWj7~4EZb9C z**xN))s6{-y1fhZXmrb|?{r_L4Kc(mE8UE|!D2V%%dKG%H5&>`sGh}cPpVd!6-HvW z_nL*!+uJSnncy>8ZmbE%#+##WzRY2;2wW#kTNoglnUefM(HImx*^6AsQmvirzY{j^vrW7&mKDflV zqXdd^N1#?7`%co%cWMN+6yuJvHL1wSL&gMlQ&5sBA;Zqr-vh=FVO;!)nc;*dHsOhX z^_18S5%=mTF&!f8;*Mq&(S#ByDVaejS@xIJpP3_q#78i(BS`26oG5T?WCtUdP?58Q zE0QU=ic2_xf`S1S2)~SrXCy!YVTb`BDK}z`8Xqim6f5>R%59l!71uD`%vUeinOb8^ zJA1wPzOJ9Ii8iS@B9WRSsAzsh7Tp0#{`{aFMps7t%qpRN>xg#s*RQ^KeSR$CUm~oR z5#M;S(i&sh8y$Aq zn-Zazq)R1W2O}5=v>pdzVi@onO^KTLmr?xp68`|j@>Lm&RW}YduXg1NRWfR5;;0cW z0jUr2JiI>L;KbI3%W$oBMu7?^kFQV0t{gGOoO&~0hdq?!=h#UK2RNA)8{N3`SZ4&C z@GLe6z;PK>8UgTp79Ud4_FLFUz}eK0<@6rvcc|RUaw2M&%Pbd@*NE3bA$Wzp1wji6 z79@*5S}qJ=Hu{2F#3reU)|;!1AeWwk*?V5PwM(V0qFfMKei=dY ztfRq|A%3u|1CLbssE+1j-<{H&N*|zzYYQ1re0vz+{4WtLkr&NAtqTVUWv>goM3{2* zRNxWBn~Csw#+_)uz)NTX6(Gzb3cD}?vbu9VTO8Vj6PI2}j-nt>FISwrtC6}Qt`EYG zr@ivyf{TVfz}2ZbBAly|c_kdewTESz+Q2_!jsQDRYhf(wVYsVFsI?MCOEonu#J^cp zSAv`9rbzK6nke<{2CQI}%;N47b2V^rl%U%Y^v3l1Wc76oMN&4vVjkf!nx)pHXj>M+ zgszaLfW+z2G1j(Q!i}UIoM24V5p_3On8!LdDsren&Qse{a}ieajmxYl`3>zr34_36 zqY9*MZ1`0YK-b4D5N$qHitkG4-togx`9nmgk)h1cf~b;QXpY%kzIy}6l63MYX<6q4@*-_Rc8=`24aa+!K)^dPP$fV zio3%&3P!9Hqlw)Xw`u6eCz{MZaHv;s+Vg_9 z6A|Vf;A{nxwFfSP6`L{P*HQzo;$Y(3-_(Wvu(UQ4#Pn1QWeHt60Ubt{+NI!=6#0D# z$5L3d?rKD( zT>m!(=^Hv1i|L_I^hw4GNGRM8zF^*huoZ1~#w}v?6`Aw47+D&(EVw~}7#yvY# zJz{J`1u%VE7l@SBDi4ow$D@Qv(-kYtV;gGejE%~#pjrcAqdEv`Yl(QNr`9nl-_ct3 zsNA+pgiCo`B-kM_^iUFoMWZB%uo8urJZ?MqS!}Ae37A=kFKa;bOhwEcq#j5#GPAVt zf*s@6H7|cj-XSAAKASC1&W~qwC2sAp%NAO$+V{IY~F17>3Z zKA9a{P6|-=jk7cOu=q4N8IGnOCRZnmrR7Ig7e_F4L^+YFz{UB=WI1QYkHvFD8e-PN`gXaQ>Uk#c0kJP??W0KIc;xXNRz}H2UQ7@Z;>$)EO?P^Yg3A z!|C#9b~$vNK7f+gQg$g&hFhMT%#S=M!{TysHva$vwR}5cF+G{ma-{%J4&Kx#(Zk8b zyhL0_W<~W=RFl#9?DPsi<^yCya1?@GUPZ6;F_tG({DWVS z!;diUQ$6jNcc96|1-w2?I7$uT;v+0k7bgMZXPggc;9_=xPmi`jdUOJz%Y1n>Jv={} zF2iL>LbKfoj>*B{$ce&2*mw^8a&iJ?IF1#Zot$6JhYwRKW}eRGbM~}Mwc%(s*W_z^ zvpl-GIGG)CE}^@JzYdd6lLh=(;A0*BitK|MQRDom{bb`uxa8Nx6uVl?PG-Mr5@On5 zew@^t(dX=4B=fm~{V7MErza-^>$9ts!wFg#zF8F3+-uTcz8ljy*UI$62l#@4u=NC9 zT}Xn^+4IQ}0Q1E_?3hP~Q080=`Pr73gvaL`JJ0<2aCkDK&~|o&zq1bJ|0YPf-yf@*4%Qvuw8@Ytfx&m_yx7V6@o^ipJx6~*?zHY?cCwq$Xq z6?=WNr(EFd6r1_FD=-z@K~!@KX^U^+O${BG-elANkDA^^`_xi)hZ9ZjU>*>himXk@ z{zs%uDdjck%|MhK+GTOxcwMK@qId(TgT?a$Ev!_qTSC;co51xO9_ZxYg~#qTu5_D( zq1h62g@qWSN-Z)P#%7OSH$N>9Vic3O#OcCG4S;(Zt(J($5E4^VUBRmhPE}ZCiwnO7r#9MBrZZESq-2>9oqTYo{Xx`WFB%m8S6mApIcbtrE zZ*gEqu!TdV&k07mXkxnq{}nn8S1>V4JW;?qdQ!CwOx&cG_$a+B2lTJW6-%K9jxXh@ z96R1x+Aj0;^)ewq9X)9>G96 zn2SoW)OE;Ghq?;iNtf(cX(4R*?eygG;&3?o^ZJ+H9_}xnt_S~Q(Oh{{s(`AM6LQj2 zIJxG89zzOllNs1MHBr6)~rLx`DmI4#iSWQ7;XD_H;Q5d28V^?HW?}V z=HQYLkbw#os785WrvaRIBnP#XIT(o)EUf5@on=K3&3s<}aR+-rbhMGh>_T@TXeX&2 zg%=@Ru9pr>!D6|)hW&eNh?nuZ`01`)#;<&t!=e&P3s#7DGh-7v7x8npQE%}WDNf0> z2bNW98Z2TP3YQbGJ)T(`vBHpv`ui;o6uG70s|sZk3}zEEz{L)hX=~@fqJo!&Vg9gT zwPzb_M%dbbiiW}>ny#SXq6sdXWwDFuVPH-N=uJZqq-H-nZ>Tyqho}Fj4e5|Ed`j2p z;S8Hn*_(qm4@^WP#F4EhQqcKt7!1Dc{uzRz2tv4xcB(e&I4YnrtocKYBQ_+h9Ti*9 zg@)*WZImteh2sW4j*(I9Lmo9ZqeRs!#L%$}QtG8J-G%t#0Zs~BH?4XX8<#<%ZbwFR z%OZPUbU<$b(b^m{!DEz7P;)gvc*6HouYF_;2Kso*@nS{0>F0Z_{f{pX_xMz>N(i4K zE(D~zb#-rpUg;~UaJ4JP%EKX0*MbSmdm)I1p5_$okA5|14O9-JK?mWJJ$-Z}=+RB- z{N_V%mbY#Cfn~97`6gfSwO|GXu*{L^2>})4kOK!3rj12Tp3s0;T+! zr8DCC+T>B;6{#z`f-^669$0S6y<}F3ciGj*-lP1XU?pKi;GS57)ib{&0p!TYgG8?b}z=7|RE zO~VxqO|QL`xN-0y@VE=ivENN8mG34wQ`G-nat^9ij<-+e%kQw0@LrD65|6=7zV1ux zq;{oJc^EXJOhRENa3AKrx)Xo5-b@L9(&f|SxzQcaQjU|PAGNQb1wA)dX*iKPoe1VolP7F6<{`&Ri?hjDZ;6voR13a`-F%YsZs@rOm+t0D- ze}Q4bra+Z|_4;3H1)=iE9l!-;qc34t3^$l2ZbxL+9meJc3kJBnaJ16aWbq?QlE5BZ zM^clmPpreaC$Sx$F4-M)tubOK5Y*H=mo44Y36Z0B9D@BOiV-1!)dO1zCwyBi3j zE(Ua`Z)E;mLQ9<9Tgp2steFzcM-bA;(CVb4WEwFb=qFDq5pZ8`PLftG^n?rU z{RUog9EoB|6q+h)7in=wEksR>v*|MoisCsJ9OiCl9I}SMk%Bn=0o9~X55Dytw-nH1 zSdO+;5KpZVf+{eZKE6^zpZE7Dxrr$`Ro(Ai;0S28)eOL!6Zd-6DW)xr%krV159I!F z58)9;t@Z88VPFg%_TYZAA8>f%YIQH36R9*>#{UjDV2tLu4%63#@&7GYI9tr_j z0S>QJ-opX;hEKo4-3zE~+~neT&)8Nl-Oc{L#6rmt#S9XpO(j)u z9mjAU1^Efiu^cQ<=-Eu9)lw< zdZCxqqVSCNseRdr(-xet$d`*eN{y&FnjWPuxp7{Q)m*_A8`5F|{wc!D&lwz)^6%g%&N(XrJ1boj7g535$H5Y9h4~lBktEa35x0 zPmkZ$)~7^CK|sl0d2pgjJMee#`^tB6we{~LMv>L1HosK^*}>^6Y%trZ8gMg+Aj&ua z(ac>y5uZIEk5ffnfGcWCp(|tY%onS>XFNhx(p6yO9zk6rcZR(?bkm8KX5nJa9=Y&WvMR9~$Y$BnKO*8MZE)`@rTKag? z#zi-c!OKVQp!E}U;H#_Ik;e$@s7n#e zRFeDECH4!e6c8+$;<ojDd1$2rw$77h1RKX^DxOIK{{TzAng~UWVV6liz0Z;fsHM_YX^g4Hon^R8j;9wSnTc zgb1^dB4G{@Wa;I2^)^|KtJ-^&S z$CIAEdC?b*aYJ08tMI8-K2_4{2CPUdkLJ=pAS4rUX%-O4N3_S{JP!9pkTqbjLdLTl z9uXM6%YiyW2kYAvG!vd}RiKxB41mQSlnVfuJmFm$*#2CHYlaR~unu1D?tMz$>fRPt z00tBcdhB^D)hJfdWCV6{_s#DBmzYeuD4xWtTF=AeE3V!pBEqHoBm8mUEKa$V=WY&9 zQupgSb{IU$XEjb&L<{s@1B^24H2gD zZt1g#p1&|I5hnaoHmn5axN@np_&;mUb{Bi?W%QzHI9revMJ1C*KJ-pOA>Wh1bI(|c zcprnJjLAJ_5AN*YjmrGG-Ej0r;;E{X0vgkrIK`PX}gO zz7hr5V!V=d2Ip%WQb@Wd_fNMg)dL|NTNmM@XACr&I>*Bh(AmaO2VA?Qd6bWDo~J7q z(_*Bke7kw})?DMMJ680>3a0#G@k;O%PT+T;n$;j5B?WU0#}}c;9N9^VJdu3vH_SoT z@x%cXIIOrSEt3L^bI%wRckEt$?oL5>5&P3hQTvlik+}2nMMPIvfsTtQ38et;B;Ach zSI|!CxWFBRQZOm@-SyoQsMiisSI1u=j;s4C+9$L6JwJm%v0t)ucij=3vqq8rm7P&9AFYg`N+g7=QvbX#ltni`= zE%>}$NAQ=tiZo{eNCL3?YKAuP>}vx$e>_@&%si$=lE=1(mFD%}%sTyvW7bV<&_)T+ zC}Th~A10o31bSxZse7?~q?qlS+?TUJc zWW4GV!CJACW_)so9HK_lk`h#CH2}^Ygf~xabh3OfAXlx>DfqF5kw;St3~=HO6RN*B z>+Ydh0qiIPVPGR$Sb#cuM_2%~{MF1|AT)tp9vE0_#yc8Zs6ibw2yv;-bom)0>h?5M z?SrGX055nPc?1ub0CedeM?Ru+AYBKKW|f~aOAK!P6bH+@CoEqu^>hpU62WVK9-K`q zv1A(Wjw7~pp&7gXV}pI+0*`GETZbpl-?#CB&iKG_%m}_FCtPXqMXv3Z4 z&_0GX_w|KFgyBH$?(yjr)(YDAbd>Jq#&&=-V}!sn=T}I!GE+3M%U9an;lgV*))`Ln zqO&P0E=)okrc6{~00LGhKo2fiFU9!<4GElpjk5+g&Ok9YF^JZgh$3`s+DR)#?N5#( zu|5{)XIoN&`T`OflX3Hmb*_?g+o2^DKAoOpSAr>oCSuSrfkCMLfJO^eLplu80ROYK zoNX(K0csXZ$Fx{mlgi`&HKNBqnDjlUe_hbdCXa^!x9PUkhNNCe zU2{RH_Hs6m{bR`<7Gj{%hilt~;cGxW`AN^jwe9pr7;QrDB5=3fP0W32H|4Nw9Bo=a zQ{Yf0NQ={QO#2bEZ?xM%Wp%rP_UtdEK<=R-KO(sp~kV80%W5)Qv?a!P?wHI}Q4ton)&-QlN#6c_hb5 zNH4xR9-qPnK)Sh#t-b>=-Vaj58rGtRh^cs~V+RF13X}1C@)~bPU=VmZYjSr0XKrX_ z%VeM_O$rCW%m?5NukryyjbWznlUp`4Z@=CBEYbPvH%6^5C%fgK)4_(s?8_Jrde-oR z{-h-C)T1Pn3YDMkZq^$p76k7k<`b^ULZ21V>)=#k zmGYMlRzY?PfiF;}YI3b{f?YoH;`5j-z}W}ZCtyUN9CAAX&97hYsfXPpe1MiP*5N)_ zgRPbL4Y#})u)_@wDBIxx4w2yV3SODukO;n-K29emi;v68>Cx4pJQ97Fo=#4tyKq5g zr*Jklxm*mhGde|IEa63H4qs5qv-9fI2#IhuHal9LUraCU$LZJUmxJ@kCEa+z@A@fx z*nerNJcOepI6V?{c6N9S*5{As=e5EkI5Puq{&7-!cRBqX-kzoy=(DS(U4_AC z6+T}9&hZ_m%a60;k06tc-=D1BKty?mDgBTj-;A57 zOzj4lqYzv?58!qY(X=jS*v}}#lKUs`dRO=NZ)u@$iVM?w)S7X-1xST_wa><3XPaW^ zZ#(XMS7Mk#1^^1uRCxs3_eKMN(dNqES_fvC!6kf$ipbd4L09PR_)g59`G+SBn_VSu#NY8y2Q;WXQQmA@!XL0EJg(IVl$ar@ zLgX%L%`5EPZ{TE-my>Ixa@MZG;%bXkc1{U4hSjLdCzt1WHNoVgN|3Mc>ypPs{u#P3 zf$O;^x;Vfj;l#ugw{ND>fDob#lAqw#fA(lECFifcxT`UjmH zz~cfqA&2x`9BeEd)5aZWWej<=YJKA1_z?b-wqgvy5yXVB;s*Vq-@#~&lhU1+kyMRB zrHj5Em`uiu0kx9!44&d2S6ElD|A{siKUlTJ1ys6IAf7h$!^TG?SKfb6)QZ!QS1=aB zA8ptp8=seB#D4bpwA~Q_M!D?43!B36@RGXNFqS8b130n7camQ)hH05beC8_=Og+L+ zKnPCnV7H{fp}i$Z1*B*nkTFOygQD*y>hOj_9W^x+(?q|4sjyUZ6f${NQ27;-Ba9|F zjhirSs6M>KaSZxs5%#$tw}}&M%xKH(>;iw`L6Sc)?{X$Vlz@+l&e~NYtQGH`U!Yef ze;pWB90|d~Q>QQRbZkrHm<;|P)Yrve`-bFjgSY3&N@F@=IovuleBtPAgQK&QF<-R3$0eyn+veJyGiOCn-6=I>{k!eRg!gj1*N)7$ zza5#nQ>yM1c3WZae(d*J;5_^5cN(VxNk~ZhxICIDQ%~-`K0`&lLFgfgz-+o+Q~?TQ z;Uy9|3n~%JoX5{Gq@;A3$nC}Rf_X8;2c%@sBbPDagEz$n06RFInxOBC{R7iTO0msvUpgE zv0RXwMpx}B)x2i)(CE1Q!8vFG&n=APg02~`*2BFjOFObf?&Xp5x~zJI-Ri(a3RH5dhyTHjAuIDpZ=3<4^SC2xI9V?D=}TNhqPI# ziw)RtoFJfB46a)C9eCE*G3qm0?|fj;y69kGf({>E9&+JfIqCHpWWwXc@{2-2!D4eh zhtrGs(E>_bcMp~wygcK;R?3$%q|dA8qUUme8;l!@Jzv45@gqjq>;hA*-pwS&Lgzc9 znqG`RLmg`NcrLmr?#0D!1$8k@k0KaUcC6=Y0BazzaPPPR_~dN@EHohw^N|SAY~TP- zR)C3LY?S%v8J=J*T!FFw3;0#Vz#~JD{wBq3IzVwCmCc1B^BgL68+E~>5qUHgdm{{~ zdgF=Cri+ZYXADKpVl19k&zS#1VG21+nCybpAffZ*8)p>rK=TK@19)X7!HCnJLSk_+ z=`Nt;PGK55L>+S3r&z60JO{sBe7U7Me znD-EcsAzUPvM6YD1zD^H#&uD^!VLp0_&++k86083u|)nr!3tmT>I`00vZ;zwwHlkq z4?^|V<+I&QP5zK7#X+{zA+{-C$Wv1ntCyF}#x+M+J&CZ{wDWIMx|NKsN3VH}TgFI3 zIgC8&^L0sk(jO(*%{`A``M5^D5Am6gH1OSx1f*B~jE9H(QS@@UxSUPr!{zhU*M~Kqv z+aK{bgKOhO8c(HZg%MVc(BABzJ7|S->hWY}nfitMlA<~pJm0WCeT5A?t874}(gxPm zxC2LZ#b#^{$0X=i7aygU3VN(y1bZOOBfp{pmXNp^RN<>I^q`HF!dqY{3}C@VCHoUe zVnQGYkDzbGXa>TB)%7hbC)U?LEb79tfc)g8Z7U^U1Xq|jloW5e$~nrpdA*M(49B=E z6S5z94z6j~1HiN3A;h-A1oodlq0J{6j@M=0!PgEx54V^NPQ~Bg$;MnIseJ+9X8L*^ zvDubqvd=KTYm3=xWCDfzNAW}i$2(TgOo z3o>F#j8tpe_xwZFPljT#(PR-%!Z8RKKUI`$s(8A2e!4Zwu+dgD%8@O!ST1V_denSp zFYP+%F|1ur>k@8PsP-}PJruAvwEAJWEf3$lM8XlJ`ZPt8RBHpN5DZKeht;y&qzyLL zg#Hd>9p<}-htOb(%8N7pe}&2`SL2UdooBmI*Go-l7;*>Ua(YARH6k&p^RQD_m=k zsvOdixTf57{p_u4$QWlVo-TTQ1Y?A0{Rb{WR&r*4=;FD7OirPJjcNG`f8)f|Z91;EJ> z-SK-94x$obNzPv^aMAa6SjvJs!!2pS-sy7zl%ACvfjr}Ee>tX#%H8!ZIQTp~t)AD< z{~1WL^Iupr&#V7iH?v68N91pB(Xf&gUEJu%#vxdqeP|FrLGWCxE9lh)DxDp4xj4Lt z8)EQT@^gx35kfM9XI8&a+tCQqpY$)oTOaQJT;vL<5#g0sK28u|z^o#aq= zP(q+t3tg7QMQ?2Z!BM4WzL#E%5>LAzOTX~*liR>#e^|jZ1nszy^}1SefP1{>w@XlM zG~Dn@NU9uy0x8bz4ukN@g8YAGoa$by`@j81#v{D~jPUn=A0g}j{_%J2`LNyA%;KRQ zVVtG(o0AuGmWQr4Z?g)Io(g$mq^7apxMpI`tdso*LdT$TAO@E1~r*#Z>kZaX-N%qVVfX#>ET#^ z5A=7Uzn3_a!(G_1e-8XJ@sF-t&!2VIe71oM?+?8aA$bU<7G7)cv4B^JkgnkZ<@otd z9wn*aPNbsJ3CZgxGUnph6r(TfqdM1D}a_isN6AkiE&1(yI^0+ zmTGdc11>aWC#BK!ciy54Q1TQAuIQh&Jo#?*i$jgLQ!mAm-{eEsBtEvrFChzgCG^GD zE9nsVK^pb|dF8lq$#cMw10KM#Jwl;n;$bBbWD>@R0+-4Ba0Z9G*P9y>l!xVNdwqA; z#J}>P-$#%#e3EC6FIZ1(;WV=k07;FOFFx1mh7uVN9tPE68C_65&AEMk4L7!$7`Q3` zwSnK5Ve#c+x`a;K8H6d0oSk1nO>p^P2H~wzKT79s2E8{$=U+|_&Y`ZhgeF~p4uJyI zy6NEz?~@AY;N%>yKz1NJ5Q;Y#@zkj?KFmIxJA_9P7qjE5^Q*ZlFrcbfPh>hz*7&Kl6=I}6ysM9 z`jODoIEmAz#-t6C_*j~X{S0gh9_n7fyaX(HqIltO`JMGHy z`W4q@U_e6?E%<+GQGou!?F7A7AtIIJfMV@3G=amN`_*%K#u*@Td~t}!C`g3+c=wGj zc75bz{W$q_&Nq0WaJ!gZU~T*8<^%XBS|m*!PEt8NA3w?$n%I=1p2q_S4Ja$CpivDq zA;nm(xqDPD%yNsimeCn8V${;5m&KSKY_o11kmYVn?fY6LJ_xD#SXJmbw#c#E3PKhh>eF8Y(Eqs)6JP;}vjnE`HC{W7&Xqu}bMXxY6_-I4^PE zaNBnsE@%1NOB)}hmkN5UD7^>j-1a05*v+Glqd|#ckh&Nw0A52+1Y5mCFIgNJS1_ZI ztBp`4@5N6ZAV5FdVn@Kxw>kPK&hoH``4Oc-+R3|4NqDJr4K5FlS^??+N)4%xs*+!P z*SY>FC+@6PRuF_vf4)51uM@Uy*l;}lVA+)L-j^`Y@(P$)be@i1Rgs4g9|~a{y}f?E z(-{%XlGHd_PA`iYlmyuk6_R?9tijH?ydDaE)%^no^tm1=pQ6wB?weEs6?6f}QH$)f zhBG+EqvnBuHVA8LGNdchAZIXY@|d}edWVVyJj0fWGd6B`N0cLTwI$^SyS~|*DiL|6 z)YX;{msI=w9^7M*sX0j{jZL67acEcHUC(bngN z)(!@b&Ix31frz*a+$tlzTUbS;(vC(rt*;$&mDt#{(^hzVT$di>zBAsDYfSa(FviKU zp-S#`;hF*6R;Mwf^W;^PvvMcbv5aXTbR!YH||LWl{zsLjk7Tut<1a20DqR zkNVoj)P~|8(p8t}!!kyM@CeFC5K=a1Mqtr!NKk}Nv``GH{1UU^oYG?wXk3OG>@2{a z2b6YoA8P77q>sVp=-o@qDeP+ZH!y&R*JvV~Fg)<%7h^F_&}&7DUm?tZEv}3e*qAO| z?QAi+)GqH9dFOF^z;GHRum~E2dCfDW#{M%h?07Hy&&a)-P%`f%VJWSkS5Mst4A~?2 zdwB7r#Xx*8R;|y(7J&yg9wXE`v!KTz!A3c$xSu8YGV|_V($&^xgF_pXXt1d9rC)Gy zLP3>3k!p0YZ4uDOgkJr*U1(+m5+bTfhwwJ?JS=gTK@q1} zNDE*=io2-OrZDGP+^!!+1sOET3E*Aa!&nX@={?5>Z|GE4pe4c-_olRq!#)D_Sgf)~ zA|!Ce9SFoRxR%)TYz*8fcBgj&SSWVM*Ka&2cA+f!6qccso;8RgP#Kj`_iL0bLTua{ zBQ!l}0bQQ12fOVYHHglH+2r_gaLw69`_#hZbvVJ}b+D4}+c$7H6s$*b#7F7lf&;5B zd6YHAI7^Ob7VPM#Tmxh2cZGK;Sq4ckkC$$`V_n*)cw=*++!>)2nU061?MgI+VvYyw!<0UK=j3%cxm@v!;)ph zc>~_nOnI=*orxE@xLegyEv&g{FWrWJOT+%Ep@2PzcT*|l$JLa%x}4)|bDK45N8{g1 z@&S~BXSc3ofw^jEtaQAuTN`vHBC)0&>lUFwZl1&4e5;@`oUqf;cr@QFKf87grv?(X zLYGal?U4V14WwcQBjyB4tipk#&yESs>?KkH)T5#cEDs6l!juzZAp9b#p#y}@xUP93eznC zRETJr^j{1@g;Tfo^FOfxQKl~8`4yzN(8a<9Bbb>RBYg18Wr8bE zoUHM(v;vnX@xQ(^e%ux4N~c!L9mWxas3Rx1P~EJH2Nl!+{4!wNJ+72@$#1U zU@$khhjAKZ@OSWNFvkyWFy_QjhWQIv+|2;KRX4U!%z>RJ)Hxvs{f^h*VJN+V2>9)*tiYCIlWwP7ovGD?%t zFx`Yyj0!TLH&q)$Yn<)Qwv3@{O%DrJp#o`9!P#;TVUQYfywRJNfT8WQ$**nS@I|=i zaoo+sQ6nA$&&C+y^MNd7px5=^R8_a9oR_Q@rM6 z^YKW{{LJfO^35q`qv0AINUFeN> z(OFDi`rpSM^TI2ePj`5v7S9-v7=Jkbiq>YebNY83g9S*cPyqH0iKLIgm^S`~-5(f&zM&5m4K&0cWrqwj;dLR8r?p zcaNT2(PYFsY$KEkeUtBYV+#6srKy*9T2*?6 zm|MdGrXxHylS*vOq-h$$=$R9kxgm#@;MUHDz5q=uluGlwp1@ZGo#%+&oQIX~}9_!avQM|wd2OW4~*&7RHMg>!Q-RPzLcITUXV)Y|JHwa}QBqud=7geeUR zj3z*b!hJLAra4=?uWQ5WHiC0}l9KDfSuJLrhbIcnkP9E zj4*KbcbMR`chivouj=(6#|k~v{LhXI8*a{@E}_$4=BY;7!^q5({hX{3 zDaAEk=Wz)ojn*asGdJI-aFBXPSF&=Obd0cWdF|Z6;+_?|pp<_>A2%gEbZ<&LtjkAj z4QSV7CR>tAJP>|p=jwX+B{pt}v#rfGDzOd8h;uP>;bploaY?HC^9--U39VnjZ zif8~VVE2(ppD=gf#6F=Mqbsh35CfAOf{PAC5$x~ZaL~(+^e|==1e1``r+5XiLyjaG zz}?;V2jOwjxH$2WoCdgF-B)Ix-sGnH9Wo|-e|?;@P2=qM1XeGa=R~{e8hFj28Ir@H znmiO)FQzwbafA`iN_K_vy~$SEB18iBA?H(`jTAwkSPCcT@5lAMpMA|*MnDda&M%Fz znTzY8QKW#Km7*ZFBuVqBT@cRtR!3G6`{(kqQ6sR2r=q!q8j3NnJZno5IS2K_!*%8Q zpCl49m`SNSUK6*OY9q{=5W8E@L^|(~^=C!!dCp9=$BM+HGTH81!mx&*#Q}JJfAFDAEH2GRdYiDLHSD zig{ewsS;Q#ll+*uUHcb(^uvW7g1fHNL6Nv zliK&UE39YU&A{$k0=hW)5nwN=27}*%=umh)Sn_4V+moa6SHK7Ca4=61o|y}WFTn#_ z7co!Xa9SoT^~)xnXbPoaG|Rx94;zh%h&KnXlU6F{ht=S8rqKO8ZZAn=P ztbi!#@rJDF_)kjuxf#$~58O>bIJ$LE>p&8=*R4>o&Ax)ta7l{0gpdHk`%_1KQ2 zjVH8Wbr0=(+ygc8ZYOJFbvIWJw)g$;y0wW^9PK;5ov@=>+f)V|ERWDdlI^bmX|}%s z0#gX(58&}-yG7)B#oIdp;l_Zig_}Kn7akf9F~&R=Gc3_JSaBeiuYkQST?x9s%kukfuS-eY5#f0+rQ6evlP*Xk_OXTRq6~MIjBHuc{P0$NiWrWDfD6 z;aHvGB>6wWe#uvXU!T9>k|~(x)z|3#)hD?ahn0(eF|~mMZzV8y^h?uVH4;0#DhiTh zY2Zu*TX79vKo}r<;y2S80%m_F3!4>&1fM5Wj4du4ZOb!<-3bluK7&@#8$51HaZmdK z-^6(Gn$~8JQQ;~iCC%#a1v;1ocb#`y_xU+`eBM<+os zzkSPn9DDuh9!hIi(&(1@pxrKH2iG*u+uq`O21|!-ou4z{Em><-33-^rVNZvHA+!Q% zB89GK-KlsCIxbrwl6=A>fIBRS%avkTxq|f2pU%}lWiIY+I9_Na`GDWz_sc*a8pIzj zvuFh_6aOBvL?q+U0d2>*RUB*{U$-5->bU!o86|BjSxb$fuGhzpFv|o{lS}0J zuUEBTm_vQU`Mp*YG1C~VI<=eg{2%nKtZPa%jMk+ZL4J9y0<5WPOz`*0$j3MimKd{rHx4=43ybqeA@z9>-#3Vt-?+PIW|v3Vji zp00<78?I`)gN{uMq!yk+D8P(PVx?i5Ap6KSQQS4ZIqk4%mE=RP`jfDc=6@EIYbYJ8 zKr}36-c69RV*9dsfMX2&yx5fA!6iF_mVlT&^WcX7 zDHv3IRqwZ`+yU}c4q>WANaHejzK*EpG|}*WbeO{5J!nK@Xo3PXqCal7ae{F>c$(9u zZU))FkKT8|m}A~Qk@#PrYdR|#VSzghcdlKoPdw7Snmdr+`$oWTcK`OOd!0jevX=e}&M>J)sSR z@1x}kFnBOCZA}>Uc*R@e$YF3oUquc7r4o5Y*A)vkk`TS3GS%p@X;?{rpy^Nl>KX`D zutNO!xZos-Y8;dVQ8i7z!^;WnQ+Q)_23}MHin-B%%jvY`U^UiFGg7&I4tv*UNMXna zfdRh38K48phL(tkBcC*$GTJajUQ@j(aL2fgt1C=!K3uxCVjrS1H_X-6Sx8 z$y-_+QKFbzl9hNs?!X9vK!d`Lv7%h*J( zo)js94{Z`Y2(9id6cKYEII&QnRszF=Pfz~pRHvYv&YMs2{W$en0hHnmI5eemQWU`# zFYsd;=<&Fi2UXxv9DJF&$Ui2-c!4j(NjQDrhQBmu&dm^~8#e5&m|5P1iz!-q$Bo4`F0oqsBA+$OB#04a{R-Hd6mk0@+K;Sut9DH5Uz!Xz1 zO5iPpu1K#pc&G(m7h{Oiz6Bc|G4Ajx!UcsSI__~bXs$jgI>FX({l+^oT70q%WVjub z2ujU-$Oqr_o(x$+h*0cXRDLV?tgh63;kES%`ypaD=TQk8)Q?)f;GZH!+uD*Hvlz5) zCEr6k;Ah=PLVJ5Br2~b$Y^RWb?<*yex?;Qu?`cdX>?pD7j|2s6$hZ*oN&A*qT7(ZHnef`eBfuF`aAeV+2 zB?f;RK*)HoX$K50dZ8>Sa)+4&q6hAQ^M3@=VD>r*_3mqgyP(5QsWCw}3McI>mK^o= z*7Y`w&!SNqsb%VYt}Up=|K;x8daFvZea}Ft6rvGA2qA3t@Alr{oG%p|GzO} z%!oPHTvU=(_0r13YtD$6aTzi0F(N{1{ChfV)dHg84ZoYGIE}CDC>T)Fm!0*z63d!j zaTC5K)*eHun^srT6m*->>uwSo%;}^TMDh&bPOL?_A}klDYyr0V}UA%8Z0G$B&}P9?`YHIKVOtL@*KR5mE_j%^)qE-?bnnk z3bzs@TQv|3%d%yFF^{mLT&O^cY+~l_gm|=o!fArR+&r!tu*cLF@$yj zW82MI@16Xn;`Ud$=62%9{Tp&-YQkuv!Q(vtIb+-xO{-(Ri-84obZa$YYXfg2NxS3; zI;u)Ft#&hFBi%^4fF*A2tv^t3={<(r24YYSlaHkF4FkcjrJtL??>K?9jzo<9nIky z5=VCIIGxXHP68d%n-vf)PS*WW@rnX&)axsIn~@%=`v=;PQzg1TPxZn)yz0h(BsOmT zwRQwv7E3r3#R=i{UdU*^|szozTK48;w9=j^;`3D&rtSSM?!?1jso65SGWlGwU z)_mVEx>h7`DEm#lMOPR`o?}tZV4?uT*;K$NBcmsLH?rEi#yD(b*-HyBk<*%4E0%Th zC_v+lI^(G0z2C%8bM?6`$*rB%R~KqqcKao$P}8A^pmx$=IRVsIZDL~Hw8nrYIHld)n20Mwa2d#G=V~452M+mDLP08 z1l`A>m4}wAsnhe4LoU#`FKI1j@o0c)GTU!0>Z`?&5V+QbxuI4M_8DAr$*whH z(lvjZ%Q)&NEx)6iOJbQFl7o=a(hIlAwbxJaBL2MO8%EuRLSp%X+LZ3N@FVhd`j{T; z>X40cUn*SH;@0Sqi8?>-(;nS| zP&Xzt%VN6JPY?kO)6O|2ff*84ihN!>C92#`PGFT)l4k+`Aa}%5kv|2(drwJk<8Eee z{=HtZ<63Tv)qS~`w0yFxMLN9(;9DgGRON5lf|SZ=fsM6uTLRNk!O?S;5f-MVbG+Kj zwr+NpPiyA3ZHqMxgU}~kp(npu%E41=0GV{yjV1+eVip}wV;)!fEKOCvDMAk=K~7a;)kLc2+5MCMxl}i`#Pex5mDR%spw_9D$|~u zoRwEvyjE;V~NLF^5;Yu^m5~OBmC|H0^)ob+_fhcM5>!fSgP6$N7%*vT=o^uV^LW<<<}YofN~4^i#>iBk45H#Ac(>5c`+T7i5iuTDO~&1^H} zuCjEL7vgNW&tSwChHiK?^RgWJT3>o!n#bpaLYfr{i>N2u)GHk7Xt+Irlnn>APH%4Y z)#a%tE4Zy6&rZ$gC$58&3tqi#*SNS>r-@h9uZ_H_6T{ooO3MnH+Zp0?V335Y0X`B{ zdF#EYy_Fi(w-Y&<5u;O9y;#ODUtGGV^8xBqwa`vznrJ6S8=X}2Tp(GtZp1jc>1wE( z)HK!2h{i_JRR?Pqc|N)$>&v6ro=-~CJ(*4OeR+Q4%j2V?gIIzdHdrlgps+phcZX8@ z&6<3=E@gdy=f~+=B`iScHixa>p8f1*l-W zAusSnIfGd~#UxZ1T`pydahBJHJ>ba2q9V6nts8l1PV0c{2hq>HO_+SfCL>W|+cq;i z78Say^GZ5goa3b>p3FR2dy>p6b*J!y z#i!}P@|v#4e6Y6iU7DWP-I=<7b9t4F>E*?>>Bsr!>D2t!dQ_RUmDR-s)+C#!!OY?l zEm2NAnVy~WpF93@*MIK$&!_&Q>kTORx&M5ji#ewhYPZad7_$oxrk0ndR#w!t*>9J0 zC-TZ5!=ib8@<=y<#+#2K-soOD&&;jNOwB!M-utS4xXjHR@r8jUUL0KUwy4{h2Mdd9 ztB;$~%d<;s^L0O0G>Ry{@_2deQF&Y7K9DAFZFy;VZlxrwExs}zy(wbD1hw~~u|J{ma zKRp&YET+ec^D`B0`Kuw9Jr?Y;*FZ0OS$!<93D+JkexsSNzd`_Y!yng{(%gcs1eu$C zvYLKF>--r!TwEUfX7RfOlm`pn4IZqmuBLe*vHl1%2P=;kmv#O1?9ANSf{<0|3yZq( zWcs^ljZBw=q=mH=9v{q32`8T{>VMt6@>myXD}L;|smBBU=pMP*)u)RZ^b-|YQqfsm zEi(6Hb+8Z*-z}~sA=bcpX5|L+vk#@X@yTF$?$P7b)Xc32;K|J6#kG}L5zX}1X?bZy z7niI(S+()VnuhFtj;ElaB+1Y!V(4RS<~%k z!r=68;In9tk7l3DF3(N-vvs0+9H5hKZ-_%Y5t;DisxDYr1!ODpv$`8&Wnob_?as{z z>GGrC)V%og*#PoKe5zTqw}IkUcpoVK#D4GQ-+TJiUA_YA%G&Zn{x}w|2p4D6{PNt_ zvuPD3q0d&A*A`OX$?EcVi%&GabDH1PwdE%UZXO)i+b)P<-)2%nliQiTA*HE56 z1L58LcTX1=6#-+I|K03L(!YUE|96XzrUnmnoiX^c@;Gar!k^`($HKcsU5-w$q20vg z$9uuHa|pUUt`DDDEQp)OvT}Skh$OIWe@?1Npg*Qi~O!rfJD0cI!o% zYzFdg%9E10jNDE^%=NWj?FLWJQCS(|>j(Zu?OSiEg!#o8Ih0?jiNQH)F~dd*0#QxM~C?tL+Y8M&ip*7`rFKg61}&2sCrpF zW|%8Kcd-TQ0_QoYr%b8u^?I7lj*_a@+iw& zAwSUuTVrfb;Ow7{w+S3S)WMLEX0hYV+vD{e+l8fC6fmp4Nt`tIji2!ZYt=@Lx!3cwj2nq z=D(L2uIJ{IHH-1=yn3ZLMnpzjlcd!+-QS?YIGcMI9vmw&I|{gi9s47P;N}mBBvogk zm^lF0o@Hk|S=EXbYbRJ4KVC3CQ<|er@MAZMDke23l#{I8p7< zS14@#+RkliZI#Kjw$kL}d~3~^mDg&p1@^F?T8U-MkzLmvX?3NMmVsbMK`mxFSwSTs zLoJc`N}|t{Hm7LhL!E7_3DssKd%9g7C(GlV@_1JP;0K~tePo||j(n;x8au}!3H^0} zn0P5}T|?S6k=EV@k%hjoLC5V9Jnm-@2Q!jqVe5^QJWsWY31tGwPrJ985C!~^_OQJ- z%ZAz`EhW6kPe$zen1wY&hupE8naZ9*HYvk=EG{U<)A*dAp;bcSTzSzZ)#PiRh~{k#k)z?3(OHZQNaiz5jhnLmt?#e`(PV0=|~NE)kAwLW1{ zG!I1ws&fL2_LGbxWED3Lgm3B;eUV>{$a1Z%B(E{LW^*4R)w4|1&A^KsVlq%7Tg4+$ zBGM@+O4l>$$fcAPNAs3!Q{5u_F6*yF- z352;(;GZ9>e4nT&(t4{(=~G5GHB=fV33cVis+51-E?A}cr&W1XVjyZ&>nS5;y`E0- zI&tKS+&`O@Fr|D(^1gWhpC4mhgkfx3@X2Kv(q46G=aFs$7=j_45(*oQTxmC(^HQVq zV;2dmJWWrYCix-dy4@Y@`{_cG@kfYt1$()t!DG(c{6Nj~9RIsJ*b-^mmRsEfl|L1m z*i+9a>+_!VLyd;?{GkD5~n zqTAWS?_)4B%v}v?&9AJFYMj~wUk24I2KX4`>)nAupx$a%&-z=o-Wn&4=G>+&Rh0Lc zk#DM6W%hS#Z1z2>gUxenuB=jQ_oYvuO6n||b{e-7DM?K;O;Wd=CL`7tbNeM-D?Az@v*Zj< zi?yxyPJYusyHp-VJ2ARv=N1Vu8g<4y(Mj$v-L%*HO$&Ns>MIfEF+i`Xn;z|V(mNgK z*GQjrP{m8Krna-Ot_@0#oXO z4KD$#9qOo(>iP0gO$%jm^XDV8mDA;KP#Z<7mXD?N-pOwoXqU>hw-cj#W@y{pEN#^5 zrjIG#H0fjNe$^USH&bD;_zkS_dW?Oky=9xm`@YCc_hp5tz@=bvFG?lIDLx1jej_Q3 z9-e2fY=Idm>RWo+l>+@v6{TxYG^QxtO9>OTEk+&cv3IB3^w3T(%&nc?u-$fY#h5xe zyEjwiw?CxknR`V>O*4^}VFxS>-6A~(-b(bs1qQ9mlH8z9R8}_}46aUVn1eTv)u84@ zaX|Sjt>&iJ>?IQA<05N(Mlg`!@%qk^guOy;(S71mp7ViQ@i9rQ&q-)iK;V;ni3nY< zta)=n_f*Fu|C<>Au51$QD}!a;L_nHlwCIQ81%CEXdClM`2@SvV<{eJv9E)=!QK;E- zAKplP(FA465n#u*=4zW$4jFvsE0UV;cxk@u6l~HpYCN9i8RUcVR-U*`ZvRzNqQu+F)WQw~_8Ae{7|Vm-wEC!=0slU9SFimimVrFQ8h7 zNmnJRtJBo8;hX<#Si9TYcjGa*DD#9;YJc9I`9fo-VbW%(y&YRh^C-V2gTn_1Tq?V) zbef$RJ_(~@Q~vGr?5z%KYr=Pq2<@>$4p-&wv522^Y{7yC6kBR+6Uuu#am;2KhBwI&!@^qq zs8$Od+cqs+FKIQ4GfU+CQ*l5yv}>+`qJ>3^_*8x~JvTcTp$L-k%wji4i>^a&!7*u&fGsImk z$~Ri+0+>g+`B_4i9^QV&Atn<3&WJ}^>@8-ENB(f@04tkhC%~BlmgPV&v*O`x(cX zwy>xRwz1*R?AqNpK5ti%9$FRL(pD)yC~6xLK>{$-2)D!ioy<`84`1srFFPD;Cyop| z_QS#utxb#tUpFt$*AI1V;6Z{NYi>9X`uL#i#Zv7%f`^!Adb|Ew}fN-SW@PQ9Ox?{DPba>^Fkr`x@aJ2 z6aR`5G=cnBRf(3q`yaX4j0Ax{cuf(1Hq zXFY#EZ$5gHr01ZANsD-3h++t-uQ(HlP|`Y`_chJ6K13>YG<)x;v{~OpzEmT z7V$JQxGl_OSk42cM5Osq@j3EZX3TY*Q?X~w>DyV&RG;kRFKID*p0-Dw=@9#<6+PfopfXF$q zwl0~bDMec!%c@4t5T#lK7L^DuwcSZ&ng^J-eCp6??h522{lGrbC}`Tx&lDwb5~c=z zEOmf^2rj0?dYu9l7-{5~w+3of4kNCSGZp`oc9TL!7SqA;;dUBo)K*&RMzREXq+g|7 zg{lZtSO))E8vi!? z#&b~luImVC|hU=1UTYX zSR)jd(!-P+U;TDrJ{i63a8QF$znTye5b$9&+fr!7GBjYBl|x!$?NwnhV#k}ZEb~!loBPax4Mx=dLbh%` z2wWX|1(lMZW6_*oSGHc*wc;))n)A)j7&w(JvNbR1@l|+w*NgC1%4wBdI zCOh$5aFr8U$d;F?jsJ*oalCS(|LOQxA{d(6L)leE)-WZ)@{?PUCcDjo@@YFXCUbD~ zSjvIwGJcOKnAPkwl$NA_su#@$wNvLPs5|1}LL&tRTZLlgt`sQ2Ii!^{Dd)WuO{i51 z-?X!S_cZ^;%`6?_^kyehvqzUeci5o#K{^5tY{*t(m-8w73;Y2qu5%j& ziAApOCT#*r&)~B#3W&gFj4fM80IrAQ`sRjm=YVREF)zdB4Qe~UT=eAi<_ah>EUrKd z$2O;NxURSkcNUw&#q?3}9#!Yc8%^4NX^qG!!i1y4%!X@5V^E7(QU+;3!B1-yg_N^g zeU9BC7k9PYib5=n8iPitmX2O(0u>SJQrXjeBd0kn9NT4z!3?%vuwpCK`T@4xb9sa9 zVd&|@Z3#3mPG+CHAO7WrM!F?6GCiM6&+o|geJgK`5XEL=+U%MQ?V5gjAd#7#?d$CQ zT~Wx(&BOFY5zbh{rmNVDK9jV3W#F(U8@4^A?L44aaom3s19;%dg^wn`WSda^#&nVX zqFu}mTXoqWD?HH6F-T}eVJ54YR&M%in6e=TYth0lEqojM)KaV>d-C^h{pUN3SbC9Q zzp#7#h%v##k9Va_s1G{XTT0Ap6*Q&CU(HZMB8Rg@Z95;YO8w<%t+9@%l!9*(D>B+UeBj%*YPic2&uezrrwsg1PkAKrZH^Q1$0K zTW{<#3uo8~#v%z+tUdMi<+d0Np@qkL+rU}QA%Xh!%Y9Ayk!d?SbDOTYXhhhRw7a%E zZ_jo?nB;^P6#qi)7JE_AO`_0|CeQu&VSGI^k+wa2BFjn&ZbNto8(GCNVK(7QQaUBq z{Q_E>Dp!qiE(7@nXP4{}ZxCsWBJ8ZojTU>>5Rat1$``YJn2%83eVZTfESMh5$fTgz z>CcKFerdGAduFYop~lix_ttTmBp9mnDaSIYEQayu51VG;fsr;T7;TJa&;3Y^Q&O_> zP#Q_|?jvko1%4RNut_jBVrXwHewk{En=OBVvm>9HXmR6} zM75Z)8x&Sr0y|4rNzOMLTkea1$wE@jOP%Rz#t%)*sn*=_#tw0^&>mtP0SZbBQPoK? z37!lV`gQT48EYKry}Dq zz10Et5P6-$=&l~Ln*rIN61$u>beL~OKCCWAK&V?&Jmg*hIUBG%#M?STOd#0Y_cet) zR?9UPivd|O0tc&b#%oZ6(nF-bc%YIv5)LAzZc}v{#>r#UU^wT_@i6xDn_KmG-(k<$ z50YOOr2k9h*L-4DhA9O}5}H){T~8cee`rxyPxci&F1epEW;R=Gt`RiHub2~PZFvsjzaz%S zaVO8q`4%SN#R)e#`(vwh&yB3@>YkhL8HC1Vzczsk-nZ0iWg#wU2qgf6>7|N`a@{Ex zM@Gn_;%0U%f8>RV^hR*ygM74vLr!3SX*pP+4H&=Q-qJnR&8x6xOG-!PF9>#Cq{6~QPqKrq9XK z(;@RQ(DqCW-ZBDPrn5ejx8P_=H*;aZSiYK3ciHln?`=23)fY*ehubwz7(Ru7F#POQ z8kG7fx!9z{O=xV8*!2KE{aAqCOUWW(*lPv)@u(lYDCCb9{g5;3IkT4IFNy|yF4VFq z%RIb@Pw~g<#WR^f8F6C7d8HcFBP-EEx%;X`X`B$)ph6}8)@)u)yDIm; zIbF^N(_$ftSk0A2C-vCS4bNPDuyeF0q+>tde!=PP{)9V!|FB3qIM41gUC51RV>DS> zU%1srGfRzT8M?np8}f3M)8d)ydzEC3j3vJWtgpg@x2C&{X6cBCP3=5A)RizJ?MP=5 zI~mRR#(e>!8Rl`ruo%sfiyRixn*pAb3_tR8LZ>Rpb93}|0)-$BSdYY#R(+R0m@+4d zwhbX!OwC-DBk+wqp;YE|(!7{zz&zUa1-g>^Q0(@BJOXkAq{WpP(Y0tmA?k=3Sw{2o zD>IsU=dJgb-8(~7wvwD}?|*$Z7~Dn*<^0^Gt;0uJI}o~TZIdT3s~@S#oHlOX=P_?>mbd|?j7U)mcF3d6XH#@qBp9Wc9*0^ znFq2UR}i~Dfi~;gW?JXCUo^}C5db-2z~clw6{A=8nQra9P$zV+v`mY|LqBB6zVdt{ zV%`@#Ucq*WJz}GRdDzs4EqN0-e#U3f`e?rPDvig*!&R}n!$t+yg`ARn=8j_10}EMO zo7FdwNRptbFqD8u_7I0Ct@}k+?r^J3=5A>sexv2 zkvnou3j%c3-gTL)YMH!!TL>c~LO}r;I(uHZ3oFvZ_Mfb)lT$kiEZ#nPsihL78Z5vH zZcWiiycx@1rUyOYI!4J^sx2i}sWqI7c}*(^x9kxp3CO?1e=FM zhG-97>;_~+mS)IGFF(82+-1AEKO@-Nbgobngg+Fc^4mkKGu|(|_)4Vm)*4mi5)UB@ zX(7M5kA#G|p~E|KMjFpFppSWj)N_h=-Ub?n(Xm>C3n0@wGq$A7{aUj$yix7XhSE3X z>F~xVmmf94ExU9T7OCZEu3KPCN0nGGcf2<%2P`w3?*Hq?U@#*evetQ~3FVj+E=vP@ zXYbc_{Qq(`TAxVbE$>9tSz|qLR1*b`|25Nf6}qYa-MbP_|FX0z*DSdrA*q{fUkV-V> zblwxJnuk0EzA?tUPt7m{W_eBNw)=>)dgGT%Z~vS7!KPi+GD@A*mc0C)=3MTIRKJ%c zBL&3f-y++%6tB5f$cr6;8*uLGRa#0eZa-q&x=?q2!^DlV3`?4I$a+eC@y2q}-e$Xq zuHB1TX7?mIB}Z7lu}}l!fhu3(^)}iVm%-V%;J_U1vk5 zDN>(NgFjIbs&BS-e9Ejq{jT^zttSz`VF6V#gkR~NB5hOGgSqRi(T(*zoq($N#++z7 zEX8FqZ!DusCX4hO*fy^RIvY^os|d&d%Qc z^wxtr4?n+kZ}Q=nw;tTS`{k|a=?4$*&3yjFFZNAA z_R(tZWJI=8JT(N=MJyYe7Bg}3-EWpfb?PonaQ;ayucI|zEy^I1YlKImIfF2hD>r53@K?^7)@|hhBw6)Q_AbQT13cVG|a0D+fwlYHB zo#UZAIg5v*g7nU4(!J57&y;j;FgSXt1^D}luzZ{EZEzu*L&Vbb%Fpiq>lXu^{Z zGyJskepk!ZemTKN6_d$zYMW={YjZk8X5$sh9O4%;X5?}n(E+|Bg!MR|l72t72h*i5 zMhkDI`;WF@1(`*wPV)i`DgP|Z>54W0mhMlr_qtUU-t+WZ+QUa8?q#>?jJ7j*Pw^-( zdeXn_fMfF0bYIh`+g}eK?7zu@M^i*U;CuHi;l7AgbzySyr+lP2e*c#43fJY=v*^&a z{UhEl9<7V%(NvGV1r4RJn8Jt2;s+?Ps2BlF54Mh8bHuC);w-c1f;PF``}Db}7|a$5 zY`l`ILh2>+XtX@LqgBhT&4nt++|pO&K=MUVn9{*U*!cI&pj5rvdsKT@1deP&><*vG zh)N4HpC;1~s@|I3ZHp^*%OLxkmo19XsFicGCD<3Gyo>ejy>QN8y;xkyz8Egjw9~Pr zdD8884Kevda!vmf;${1(Fy?JmA}RE5pu4lvl+4LGuQe}DX3#SW-6WBU>>(+MDD#LS z`G^%sA`iK+H-(c#wJXZQ{iH@^x2bECGDHWoVg6L3O2tY!Kyz4|8&pNKO^XvNyriwV zl|%w4r%aFvjdZUm%bC-M3R>0@>4CK+jn@(3*c52k^=J384kS&bejS*%WP8KrjpJ02 zBZ&U5?%eK(y3g){!`Y;IytN|;4dc~pylha7uX6HEPnCDl_z&*f>-perPg-BOPv23o z%-A-8GPu69&wI*!(UbONPugTJ1Sk7S_5o(HZ=hnoqa7Ek?Mdt#&Sc+sCi@07**BtI zoVe3BqC0&fy3;qJ-Z{S0H=;XzBf8T!qB~zC8AKIZx^HZ2W?h~cV`jH;DG;-0>5b}G z-puxpE@X~>k*`8Uq`$^uGr5RJv9Kn?#CmAd^1-W!BFq}}(+lD)BVZ)fu#T>LsdMek!46OA@n7Omgd`@3W1c;$&VQPCb^J3Nn zV?p}9R7_lG_-6uOQf@S$DIFO)m)p)-UI+2MyeA$pn&$R`94Ca2$=vi61qXV=1Np?o{`GPj66t_V>3I2ZE@Onl1fVT}=H zo-=1{s~OPrI_=$j*X}~a(%F}sF7qKDMXMT#VcC?ArW-?1ij4X4HP;(2P1@pqZEo5u zHM!<+tnh6U$|VEooNZXG-RgAnx1l+dS{(X@26-DB&pO|7<>m1atFlHt5|zseQFFJk zEVHI>8I!4d7P)E&^+XKLYvjycp8GF9fZE39a6REhH8 zZ$H-pU?|zy7{VsiWTj=f+~kLKfTl<3L8CLQNGWL!f5<&y4eW5MnYwub{Uf--6=YZK zQJtU4^@qpH6o`AHy2cj@%u?*hG~p*%F;sVLwcQSVx9>hT&}-t{y)$BWY>d{sHJT*p zh9g>#X*!ke#{v0G5@THNSO(8K?}{Q2_OPWfce%HgXF3pO&%$xEc(7BNiq%qDlE`ej z&`R&I0wwkCyHZ7Hr2$5mFanIpXIesjMFfLKd*m*z*)B=Gw074ME9LJ{I69*1&KGw# z#3=7iAX6L<%JXE(s=Bq6ts}ddI;RJXuuP{bHujFN*mX&Kys~Dr{>1G}NKK61US=)U z1p-~?)FHPz8kTEP&>_;Kxy!66>z-$KlS3R(%FyY>_H|knVkPnvy%2A}SeY^(f;ss` z=<^b}M&;rH(un18ol%H@YU1ve%yCsCAGi5$%}iO7$qX_1S+j>!Q9U9whN5osQ)X6! z#FV>*gUQVYJ!B;sC!PI?b*f8H?MPFbAt^vw=*F#lyzHDi{-kJcE!dJ zaeYkpvrfCR2ky(ADX+S2qUM`1Ez0y7ZDu_>D3vC!r&XPVL3SZB$;#5`SFR-0-}cB5 znFQ;bf0Q4aE2h+IIMczt$2FJ(COi~CNS4N5D>0dTh1}1GmP-65c@VWmjL*R(n^d!* zEp{ospKXc4;3_HI&(47X;cKSxI-0%u{veh-)yYhZ@C$c)Je0H1*}{r>*s>S3QlIoy zezUyK?!{ZCwYJR>|g})o6^NDC7ip46Y!~ zg!Ru*T;iprj^DYrff+ANxmoqFRf(a(!F`bw?gBgONuHOC=2P3200(+V6sjEo?hGHt zsF_T;kSSmkv@(3=%zaVj(4opOB{2x>3XQW~<7ssD%rz{}{TJq&`(2uOyC(&G1C>vE zBIK-!@CsF|H`XV2_9MpCkJlhP@hZ+#tFm4QE6&TZbKa$i1` zdV;@mFTX{p=8CYnoB??Aqeip6p;{G!<$+geEe~*g2jXEf8wx%{Het_`iDw%CgPW&^L>wAq#Z35O&m2! zN5#&uG(Pz#h(U;m4qOlnA@eo?H;QkIRtF0k?n+ z6{x)sG0iSMG|jHNMi$Wms2klpcza*Exu~m*%zH?&fHBxsm7NJ-YUmL&So*$(u27vE z&~Qh+R$Pp4l5TjK9m#Eu0kBA2lo`Dt=SZjS|8 zUa_T`)72$Q1%Gy`)}q~XWnTF@B}rdKTIp4~GN(Q`4102Ktm-Sqq-|5%3gf22D01@nVa(GPIW|%pbnn`=b0}cBcGV)llg-d3wAlqms0A_MQG!N z>fr0Dweu@V+f@XY&L~g`Fd&H<>Ncv>?FH9A#S@Dbpa$@LqVpE8iq_NQ`+k{zRnt>@bahU&Fp+daqu>OdrK!5akNFn- z2Xf3Rvz;EjZw*Lq^pjUMcOk#ht-7Al*Sb#?d}r&@b(sm#V;^_vOHCJ7H4%QT42J`7uy*P49hs-i&$U?^kDgPAfUGFs^q{12Q_~J2GY*9yL9_ zUe^|>aPo$CeB?Z?%~_BNhnkm)OWqhQ7b(FV()CCwElsH=9j+iuWscLYrqnWRZzi~MRg*fkU z4GIplk>%NQ^_JGqNs1m=QT(srJo5iFc;4=FKPRug|H{7)3HF{}-|cICRAXyNqpJ@! zrXAz6wIBsFp#2ifs{y=HB!2YAIR)s8gh!xn1GAGBEbNq2jPGQ5LOMEi^3&)=h zuD+xEs?9ReRIb^mf22oclw*2yHA*nD&{+!xr$w|l`TGP}^fxTH=lTcD{#N)7Cqj!Z z&rx5UR^i3RKf2^OtY>ECh33^X)822fO~7~Puz|zXzW!FdxZrvwdPtS3t604zsG`QL zpsh9r6)3f+d+Nv3GK$MpKhA_?oD(NWxBBdZl17<|Z(J<8@RH!>8j*1I7udr8lJ1&y z9v1Pxq+97;w%30z8~KiG-y)qA?))*t*_-i4249o2jkjzv54+*?fN=7e)o(&WJfW+$C}pj;@OdEZOv3i3pU zpy&&*6OD99Z{&$jpZ!LE(FDPvd$L2Qn{tgN)GBdTCHTUnJEde1T?$;FP2_X)?YU*u z<`T$TP8Yy$$6GuJIaQ-X_dd3M9ZGNMwD6(9`P7=UWqUeZ>5S*#h0e#b4tQ~lPAB;K ztRbJq&C+C^@0h1M>C5gsiF!sQbcLVlCmd0>?b#xktlxqzbL6vVDPyq(T*EID*z$R| z7t$7~34IDXOe>4}D@;BW>FKL+V=OrB77_4+KhV3)^n2l=u<=4)UOH3PnN9^aqgB^k z(;1{J`ZzP1&N%i3c3~Z(CCHN~FT=dB(;?E;4qf7;vqft#XvxY7E#i^tppA4I$nWb- z@K&EAznYJWC3V?GxGhW*q%Mr=$x1y>kMQkGtCUWCQIAX71HEDW(eCro?%DVT{Z9VJ z3-Mks?%Uqf?^>yN9Knxv*+^B{rf;j_T&~YJ1nF-{t9p4odQy*k(JVl`4Zti)AThzD zcKan&?VGQLw&3*N3)VY=QBb>JXZTJ2ig|Zli#IH(zI~I4aEA(}ot&!A>QVhohUw*Y z>SJr2nWvS&z7cQD^>$834rVy>p3iHHE}Xwhe_wRz@9MSmbHUtc@LGoo#koJamhLOR z&!Q`>|EtQ~PoMmla<}^XSxczkkD}hmzh3%*csF#G>HRYO?V||w@lV~_qTE;6b9}9` zHA!>m6)l4_mw%yykaEvp>fTcwucEmm^;4y$^U*?O!(Ikbqv^w>9xAWjK2+X?`=-S( z6Jehy^&+*wB|7Qn?rSbLOcvoMQpxj_?4+H&FYdK1UhvY(=&MiKDOX4t+o$XIvmMgU z`PAwSzK1sPK(}pYW^I?Aox)r9O#jC7`f*xEk)Xns+3x(Z9^hI^TMC8FQf#uAPu241 zr`Lj%aQjR3OuuhET@65W%)M_N{W`->8C9R|ta|px^=Q1t;kHH5&vZ(v@L^B?uxk!A z?_T1e@B_J1WS-jl!~3^a=(W#^Y1O{+_o=;A=hx%vywlOiCL5isUz>l|{EvrrXt7vv zVbQ3j<8i$jU(;Wow?3<^1&hUTt&XQ>IEAmGbS*=TVk~Wr9|iJuTYTon^=o`R$UwMk ztfsZQCiJ4wTvI(AYIQIP^TyF zJ)q+BcQ_m{9*uae*HduzPcYZ|=P@<75vzDntOO!7*Br*+SZhrI=J^H!qO`?IA zsSQ23Jo{KF;0hityd7Ar7C&_&y*Do_yt;UQe+qS#dRo-=+wO?MvKvPkz~soVO*e|z z7;AsCdiKNri6DrjkODrRKo4%iDAxJj>6b#HPecZo-4iBE0GcnntsANNLM?eP;!n)2 zrSop}M8{Er+I8XfB7eeE7p4TmhZYEFn6OFO?WreS{k@6O((lJAkGm5?O5}1GmHba4 zT6zenmGLCGMs&}HM&tr?Sm#~u)(doWIg)xt?W$R>(HtssrfxIcc&rjbbDVhif-jwx zB}JT(_4HjcS4}#3OUnn>q@Z5Y@2zy=gWoGO%vnV`i4mjVp%1Pp4aGur*snq(PX12s zS|Ip9efmHygEJspan#lboj&n)ugPh{Ec6p+D6$(3vt$9}FKX$Z6aS^`vifngoH$eC zRXSUb{Ff>1<2puRT{nUKkH))nBbaaB?=Kwk)<;*=jr`Abp_b13T#-&Wo39I=wr2u@ zKuVuQEhJrX!x5nkRx^LT5SA1~!IBMlIjqw^IM!VLXJIdje3u%W`qBrV$OSepd}Q$> zaM%>ROSS3=HaacI;e7>az*Ubad7ytKL{|$wT1de#oD)UiqURa5iqfAhk2m+yDU1ac ziqkotMFi+AeZQGbTxHQ|*WM2F*ZXoyZF{{ZGOT|YtXAc{hqr88-9DZ;!-)4q3ox{F zzOct;$>Ksi`X*I0TERgJPa2~_Fk^H+T3@JggQpqO#eQdBI@`uv`hqzOw3=_v&=99N=LHkKO7Bj%=n6T zN~cp(Hqv#&FG5;d)O8W%67_&^R}Ww{syjm{tZsc%oeIP~?@l+y>f;dPE|fHP!a(;d zwn6<0QOO}yr0VQL{ezms>Ccw&SxXnndpL7c>SFL0#-L67A)Ra?^^Ne|-9FR@=5DID z>ux4qDepcupE2-G{nPhA4Oewu+&k6G@Rdb_1X$15d}%snI9;f78=S3Dt3D}}0BUNg zQd>d9koYsic0dwnd7d`q+gOdOXt_1&cb&s;E~Sq>592G+Yu%w}sOd6hE@K*~Kf&b&HuLF%=j|(xF$9D&vYK&=O=0bEL#;B;_z=UfA|oHgrnJ1XgIMC-e%)p^&z@X$Et zr8<>`^)gd+4z<~=oU2o<4;Si`rv3AEDzhbh`(mAj-NF(lv#;CD@@x(CWMxl*(Ueb@ z_ggbNuv8yMUtZLdE};Pht`0Ppja0Zm4!mz*^pd$>m3pA>z#X-I0nP&l7zpZ3>P6kX zqI5PSImKldU#4|%WT0=_`enM*&V!}~szaQ|0w=P>YUZt>#LHlM;3_??w6XK;Je!a6 z?QvV$5C1D@9Xl1+%Y_Z^Xyz!*AbkhbHB+Zy;IP{zeHB22XbSVh1ae;h(^MNGbr*ea z5bMmSXzbrY-6fT;n0|Z+)RoSY6Y-dVv_4UktdRQ(=nj#>bgAuaoqO4RR-__~m^xGo ze7osFO+roTRZ8KL8t97>Y@olymkAAoAf=TSx}8Eif3Mthj?$=pprrNSCVhXcdir33TE)tEIv=G9Jk#Y! z({T-|zXhiok@pT*UWqcjF#9NS`F#g$FJqts2^byt1mg295nJsS!C_J&Ytq%C$ju4b zuzKGEm=&{XhtCs@&KOCR)(C>j^ZF9#Qw!p@MCPPRPt=Rom5SVaB_f3giO+*HMvJq$zZtkK`H~C6cLZdDMx08DV{_e^r)>Ll|zi5|vXMMNYWg$w) zEWC=H*027R{P$zKE7ed|G_Nq=f1EZgQGTY@uG4krXE<2n#0cO0jZif+=ZuSLkE+1v zagE-EfABKQG{D075oM2V?Yhp>Z3Z1BdCv~+Q@o?Nq|-&bryFq8(EhGj>F@Q|A(T~* zAO4s3!R=Vc2ILqeUdcZc*hcQvHs=obGEfA7Y@1(dgLfbhg{@maGf@9Y_cbsHgDaS1 z=s~`r1OWk6cv>=i#W29PP>(#fKGJ40G3QaZK^I37^DAFwb%WO3v_kccb;5Kum|#qH zd2hyX8b+4$uRChF{>G?^aLpy8xplVKTqt!GgDstfS767}H!0mZSOr2_H`w@?ou#67 z)Ax+dW-fZG=r=yrkYgBZ=%8r4wbqGdic#i5H{k5BN54#`gB--kPBqZHzzQPufqBJ- z_kPj38-$_M=-ab3G3osb+8BJ)^zQdV{t{{XTTPjt5rdl7J%!{Y-K?hndRw*%L7q;swT zQHP^(5;^jO%g5RlIf5i`zq(Y%z&TyU;clhS&IZ!>o{4nfUmD4k;A5^fcXBVe@qrhk zlXE^!Itf1lQ29o60)fowZuz^naLtxU{A2>kT+?z+iy@raHAu+Cd6u(J&=c6L0;?d} zCbUR&M0ySZ>U>U>W{%h&2O+8SMJFo+AU+G6tDvqUqJO71xxBmvC$5GaoQt*`9;*K| z^#kk4>RGDYIpzTa539yf zcP&V2S776^%*)bG)B?1}E+=q?Q#Tiy?1yXp>=2gY6Ct9q|SaaVSDsxAZ-d>SKbwfpm&`3 zaJ$Ga@5(=gDUMewnPKj`+q@)Wk9U=n2**WlBe__fS=MMqB`yuTI|c2f~%Ml1_Cx7Cy?tIRh`?dxNGF0G8#jxtXbK`J8eqix%MU&asV$oh$D? zkL|^V%K4v_2!}KHSHoS9x4t^=DYtr4-qm+w0oEXphr(E5$@C-t0lbkJ4F$lKI9fh{ ztO{N3N*AyPrB8Ex$|cq_c>-!YM+t;)g3nc}ACE8N^)ymPyS10J)IKHG;;ant|KWYK z?Zt}V7MgDSt?Gp<2i4MmG&n?m(FKd6UIOe~?SS?*5P)5~*_mjJ@?Aq4m~lFf*l;l! zOgEi!ucGQa!z3a^Ov$;(R6-zlEa@Gos`D2sN&!J}Uc-#)Hdos1y|e6$zNLPIHhpzO za(1G3tq_yz1{~U@qkFI_;GM2h1|`4``RgfBZ63BSv=!O4Tzk9hQCLr{7Z{4ZP($8{ zPkye{ZmXyyv`9(NlsS5t2n9`7f36&QfU!ud*Dv*N!eYLLDv>5Y*`%Oh}{lCAEx3#D?II``USRQV;*Lnh{ z`1O86Sg;*_uL&D!W$c=~QKf(F-nqhHjQUqkH7jW99CS!*#jY_(7Pw+;?Qa<+LQAvy z!5M8+WahmOz>r#S3e~VEtpVwx*eM23Sc*WUC#p{>Y`h_kTmfusGOa#G?k$yfTl7Sg zI@Ap1gD8LaFE9a!h_1CyS1i>4Mz5xv;)u*ZBH$xHk7SZP7I;EW1S!5$DyUP}!&h*7 z&KzVaT&IJpwND`gE$LP0(5CH*IMENNmnm!pp;G~4z(WPV!X|3%Kq)ePnQ}Nbz_(K8 z9h{&q(_v{J41{W<1i((y@6~R)^vsY5SU8bR2nOcsxa!i`P1YCcCHb8Alk+d(5JT^v z_q5mKNCKAC&?Z&dXpJ0A`uQUNCgfK>P)(_orYm>Vb_p0jdLD`}ni_7=573TrZW{5! z{QN0aWt-9(v0FqzJ`)-T%n#pDVTqn9E$dR(58l*tp`Mjy?yf*oz@--oa%M1I?=5r4 zOaQ-hv%4_g`@QDaSvxZUegmyK?X{rry|l2lG6acvoF!S@F4As8Hg(nnKz?ux3eXcDuy8O(phFesXfVPOJ6<^>t1yLtT5SoA%x+%#JzIU84F6oC3Gg%^B;j>xR%Jb%q5`J-{Yi zpVgS?C*OKs7!m&PT;lS0Z$`TEP$m70j?tc_i~VXz`lvr0n+OXM3ZXaYT&aCt>C(79 z>ZZW9nG+y__y8_~ssaq@*Q)-OMOy4KQc;k=jr37jy>=_iZ4k6h7J6NemcDuEu|Zhp zv+Ec5hQLo+w{|-1nOO^4tlj(R;(|)oDVzo@CFd7U)T7s$Nf#AU27gA<1Jheesw3>M z=r!DvJ~1wqtHZ68ChO9S+x1fqgY@=*G=XQ}w#NEV{Y7_1N)4&ik8d;%UnmZ&>EQ28 z?`c@MV@iGLrNXlWot2ug*P%UE1v~Xy7$k}!qp3&GDR-;=-o}p^eNWU$NHx^Gvh=Z{ zx|#WQ4e4fI8MnsqoouT<@rO&40z;S725@eu)B@VcSyMVQLH*z%Gn&4P@A`6|s&*un zE58JtBRf&8^riL7Pl@q5vEt#0TMegx`}nA6YdkG{Aa3rF2Dhm6kzqHd`75VXbT@E^@Kd#2M+h}vo^kw~BmxsRd%NzBV zJ_l}ql&{jKb(warR&6%e=i24ysWp~vpWgA^^}4mXNAXR%Nr}MkaltI<<~N!{I1>0+ zFr?!lx;R?Oc<-0&1%D=PHeND};o5%&+g;m)J`VJ+-rnIlr_U<#7p-(%|2Q@3o=ydc zlfS!PwPk#0y&ZWy2b`~E*$}vjq2l}<>cN;mo;asOdvJUuHLyxX*9ICkbP?ukpP54$ z=-0JvC%9k)bHuOYje74$5f ziXO$>q^orfcQ!Z&!y8D;@5(oi{Pp^K#^=2+nhy9xuYEm)nPPp&=J`e`AAWtt=Dp4s zbdmW6YgpbcZV~tX(nDda!I4!f-leVl`&a!);i?I2hvUJ08X*r4Rc7eqe3Nq=B^EV- z;ZBcl94YFY_{I<3TGk+$$RHeViQ~6?F%Czyr}?o@E5`5`il_Q^>xUX{*LCgreq@>} z<1uK@@go(Bn(L`?j~9la}_SzT=3`TlV{@{<0l?Qf0UD?}<}^GU*KHL{AYZN#W0#9ORDoAaz@^sNPtx zC`6e4yWdFRot0SQpd|i7RN_g5aXPXEtoCfqG02ZKyP*KPkPk6i1RLfoFodviS5YG# zKk6)alkTF@6V8k(GG*8R`2bn(L)2fqdFiA2o7twf%oT8P6HRRY6*CZTAyQ#x(RcU% zqNIevh1>0s`a#G)y+nD52n*i^Q1`01lG2NAk4xS)iN50M+skla=eduqCi=iOhZg+= zer_@w4*h;EkJm*LGwJzU)&joy)fjdEf%vsFI?sHID8_&POB9D+qq6&M!*HLveJO>$bPK0j+-)Sbv zYiUl9_~HLrQdYqL;OC||TS(w{Zni<0KW;d5q%=3Q!z#QJ;0(|FIru= zE%m{p=b?ENEsvtKjWFj4RmCW;(&UQm+5B>$TZbvQmw_N7D=Tr-Z+UW3;~IpYmRxZz zsY$4Sw22yF3&2$xs0hbRzix9lWSH}(z;6shAX*F^`od^HbPm9tmyy#ggQ*0JTtQ)d z$JUf?p0b``{)0`C51O;mbV~CpE^z6TohzTxb zzGH4r8BCMP6sVR`ffX^Tl5?P$b4Q=@6q*prPU#|42PR->1r-PfY-y)9xs-MVJu)28 znEa^pj#Hu>bJ7BBYSWU1cB{K1_O+)+y63N=kf*h6#k{^ff(ZtZ=$?rIcM&x-Vjd$(?S{643ML(P`B| zpGb4;*LbDp)n%4cD@zhUc{I0n>X5sjy4@k-Cc(13J1o;xhX-=l&CuARo%0m}1tgLG zxPPHLISyM+d&1%KPW3B~RFCug?(Qe`L}w?|hMYpqIw=I6waeTcNx7#H%?dtHW6|Q~ z4e~4EB;#|Ryfb%&fQqp-KOy((XuFRE4_pJ*@;maa?RVr`>+i_7_RkjVVRq6**8h(T zqaN#TJuFQ$GuSEP@B=riGI_`OtiE+iixVc0=PbHxON&Ln$|=8^Rx9Y* z=+dq{xY7bG66X;5Inu!+J3RlN#5?~<`9(uT+l_@SbTFJ=DrIM)5D&nA=}g#Pn5#+W zp7`i3&knT24n$M@7dw)fb82{Z>F>{OVfr&R<%#p7j_M?s*N*FS-p?VzLhx7wWF_B0 zBURcj;F?^@;MQvBtUn()G3jHIF8yV_zbf$wvf*82u4&Pn@i8WqH=1{-yY+$Y0^dQi zNGJcJX7m@*I{vJG(t2bk#%vO?A?Maf$A@$(;F=~GW5i~l&DR=~TPW>0OCNH278~N6 zlR&Y4$_ADyPH<1*h-`RI@W1p)wT(AD=sI>a_ATf5?s#M& zgjkYwwcyLB*kfQHin8zG+>?9L?dq-_hkFZ^8hhuh@E6$T?a{iab=2-dk~p=x+lN+M zPPui3T?>5zTQpBNZFbOniPOyO8p?X4jF$+hh~37#)JycDlUGm{uHMkO(UpQq;rgMk zZ<=#_#d^^7tvGcel_KZ^$nvF!%Q+WHSKvF$D*eY=tD(@BOD%9F$;ivo`hrozr(8;h z^iQ7$2Lcnke344XOZdsL)rHfyf!fE@s+o6(I&$hwUP=MBRmso$N+QFHj#(DCk(gkw zw16M+-HNpYG^+2W|9X36gm7dyaJ_INY5E5^FJ2Jv)%)q#4pg0EgDbvypM1wPc&Qt5 za9wN-79#v=l8F@DEq#!5Sl)keKmL@a8K9z+W4^kGhvYyizzFI_CmanSNq6?4#z#Yl ze;*8nu=}muF<9alLIDd^;vh#H9Ldv8z?yfNtI@Ly%cAvQJUG3II*53QqeyT= z!V0B;{ds)btiS=IrKYrtX54~1e~-m5NPDeGtnt^=attfvHYn;m}AQT-W`8HS0rc!TO<==&{cqEVKlvGB%HF@--Y0`AYjP z=)x2tYQJU*qe2-r3}(5i42Egkm%OLUAVvyU>t3Mr2~=4es4!;ciionk^pSELhECag z>BM^UZr1R@XA9r87#{Gq{;dEpB5H zey|WzUS>g10bdHeqyC|qHvQgc&%g65)WZ@L7C0Kdw{9Kl!Ww$zGdPOl9KMFi?Q~6_ z)&DtExw^M-yb!E`d)|BMB_;X+-4$9%Q$KzL(eq9XAA@;i4CDLJvu{jx{SS>?eT}a2^h|4C0n>T?Bm0$ z#u@iiEA9ZO4onFd;L54X7AO|w7p1Q)gM4O?1!ZlRnxu5}%AI$&`IF>MK1d5#7FpcK zchZfiio=w$t;0UAFBv2pTRnyg{Q%0#JAyu`OVq3Ui-ICJh9&`z%*vO{uJrM+j2jeE4Ze( zCg{SE3eF(!LB`NADm0 zXB@MZ%IJrhS*4mI8oWbthoKWYiMA+l3Wu)E$A{+HZEhE1A%)rWg<8S#^B*_I?kxCu z`i~mxFK{k=jvRBXpy(WO-}Zrk&nZZgZhbnE6J_|e6Rbei`5StIzFX79B|3U^1x zbMB2hN&2rA3f~9UM#ix9W5)nC)%Xmb9*@zT5q}^T=T!fw$JaXo5gpdyF4ZH=0gjt$ zE^Y-~x+T`8m(kK?*~DS`uCLin-=;LLPfJzTyY+a<0-N;F&vo4Qf3p7m!LWut)Ax_l zuhstv%`i_a3BVIdeayD>UTtD}*Z1u_)sqj>bE)doNW8tf6Il4N#V+kU^brLmax8(< z7Du9tqpHBkzkriw+pt*Crl%2D|N6&b7}zvgUz(axI(47}_-wh`rbO?fU&RQakK%GN zTWKp|_gKXAqwLu~L2VN%>pO+m^+5`7AgUQ1e!|-2Ao>j}e@khU`NU*Y)Zlq1&QQwj z7+K*rOI#rQ0L#O9J`0Hv(2#!ke-QO$ofyC)xZK6y$`Wxcun7d0tJSq|@0vQOQTPa% zOiDYzYQq!()HdKSc3>y??+`e2lrHo2H7QyUT`|j<3JiUiC{yM>ID|G^Qk<3XrOetN z{_p?)4ljK*r$IU}0?cdDBbEdz0sjATf`LmF-FcALd(YC>(sufiT2=|GL8N{M@{?W#yE5O?u<|bd0bm_ zu7A3>2YSF+>PS%*HVEZmq0AkrqZ+Hn=;AA&Z*JM8=_h(-PdB4}C94DL#`Sr)Jz5B( zbv*>crMJi^T1n%X=$G!} zaX5vL^5%>h7rcQUE z`6M~my(KpdoP|S3HNv~;WP;}8&$P}a(WtX=F|}-Lc1RVx_%#T4*42}U#UltCDEO8^ z#6O3$frsQd)F) zKrxI|-)!5!_c;Xh837WZh6J0T=9K0ThOJ~GnDqH_p$Hsf=8!i*I$qZCDd}t}#9N;P}GY3@R2Q zEF>KyTF-d;;eRg;I{6U0Tt0{A0OVo?xOUEDx4}o#g-b(Ji|T}nQ0nV~n`wnKeTOlK z;yQQnvy+B!E?g(Qs?nPk-QESD??UqT1&g74o_3$?z8YK?a}T*|V>K*mFt;_gU?$#w zz6TCngm*NnEu!qnxJ-|_wwTKSKeQjxpl zQ>U-UfG^C!C=^J?FXQ+s7PwfT;8LIEVAfioHiSf%ojATnkGpu!4hUaQ7|D4wtGb|G zv@K^<%t&FkAx=ker{+1FgN@&+51x2$>EE&DGM#*C&*@SeGtvF^OQN_O%9%622upqu zmi!XB!LQxvtxKxDQp@Rw|2Osw^n=)kgr2dZ;&f<~Ok=tr8t33T%1V3!3g7?BSb3AU_nV3AA-B*}!pR2>lM*Han+^)jWD2^ABh zAuU)#-A9ChBT4%A50+HSy_-9xx3XePg@LE8A3LXqXJNsD|3|VksiYQf{_LxA!Heh! zk|Jm`1TNRFc|h)r>VZnanCoA0W}rJ#BcZ>#&%?Z08ma*bM9?P^E9d}Fw7vB1(UxCg zVOsr*wKHEyqCYjrqSpbqKDzbsoS2=r+Ngnkx?NRx0O}63@D0!wo(nSt{~X&qtd6zB$BSR;AKRabK|VeQcry(|r$ zsBV_GVi^+F9H;`-GT}~(jA%%$zFrxOc5z0L{o>)7$OWsK>BZAbp8xIt~OJzN$i zzW!VKMWBhZBCG4s-%{6i!qV5?r}HdjyEXYlsbFk62LlAEP0Hz2YaMkpoxyTMj@gM# zH{DK#ZpdXjZNz->1j`m3kCgJSI!lw+yLG|nTuI7Sra9?JqX*oNP!@N%BLVk{A0s*D zNJ1SU6r-)q7(Nd_p|@39>sl225C)k~ffhOkOcy6nINf-6i414JfwL%4=erTp4Gb)n zvFITf8hcmVx`wCql|fu64@>bqB(Y$mIxdf5W7D1%RG4M@>cqTN}QAG3iodhZGb|E#AI+Y?3bT0M^3e=@tDgbxfGwkQ?Xv zzK*XR8dWUl%L%EJ=?ozR#0neDJ$j!S>n}UCUdPV|#0uWDPZTd9fPSC=ifEnY-ZX`V zG@*h6E##vca3q2oOTn4M^FFSzww&@$`@z-l#mRSe8J{2;1WQR!kH?AIxrgTn4g(Iw zY>ve|Fs0op_XmLg1OoK5bKYZ=nWu0?Cmn=9xLlpqfr>B+?F}`&+qVbS>w%7Ff*N!P z>G^oV%JMJ=?)wBg!EKC3@BptNmkD_&2H!LKfp{iZl+H&^Rf~4_&;}OKKyryMfi*NE zSYK|Z_<Pa_%Tl6+y=(q+xIt~$- z={V1M1mHu?IZfE;Yt=67u**Z>N$@G;ui$>Y%wd7WK+9xNU%FnN%UF3TbN@I)$!qX2 z(?hr?TrgcMBc^{%`ng%dN$@3b-cwjnY35Wn3v1p^<`TNUv|!3WAwcZlex}hdPR0gK zq1~{*s?NiVjW1PBP{!;;%hiqm-IR&l1ckt3exoPo*niuYT9-^ZM(kLW@mwv{P^%%K zwzRh?;Mtjd-FTj{N=I@>P00>&svQ?Uj-D!*T>#4oWUFgQ=jcZ(MaPTx(`}nx=_3^3 z^QjSOHOc$!SN&mka#VR;SCwPqar}%KgY&|}kWOe`KIXt-pE)nXewbXw_C7`E1Z}d~ zGi`H*reNuULz?9CPA-;l(cdWL zch>vzN|mbHcNsZY26WIFlCFmEv~ku9tyXhDT7Pywy z@PkuZmZ$P(2-+ohz$}onrL4W5k2>%s(Te!=Su_*pO7zWlI6CcNPgt662ad5+BfJ_= zf1uWoq0nHJe-TV(z4LXCS77$#{IBJXhae>H7*iF?+=@hNtR_s+|HsBpOsL{&O{+3jR9pKw`rKz&PwhbVRNW zF6B#oUBrSb9n;Utr6nv1r<3SU zytltK2-^6Zrb-P-@*-ea*H(JdUt^sg`oN4~7_{x)OXE-Kt!n{r2sB4@9pnWR8fldr zx*XCa-d6fR=~ZybO8>Z6dkWAET<0rVYn3L9 zi4hkG+|;gFh}3G-C;gjr1051C8uHAyhu|w}K~&bUbI?~RW7Mb9AmH}QZBDuQypzK5 zi94brD0D)zUW>@QlMBGSR%BD ze~eK$r$%zp&u7YUjc>)iqLUZdkZRO`#>V=7$YUi2DTxD*5Sh;mRdH=(ePkFESsgdK2^2&o5Z}k2Y$)R=z6v zb#F?3^robgFLG}x*%F+gf{bxX=P^A!5xs|0k6eyzcPU+SALCcDox7!TAF6NA_d+L< zE`O>0UV4wFu`4Wd-$s?*f-aICZ$Rk_^bn~evZk8#7H_LvK3$Ab1KW1j_{^L1Ywh&bygL6XIEmyYt@NU$e^v7l zybpUpQroU-Yk!w>Dr$&tV!l(B8Fgz-Ueo`9Yy$k@SXG*N&2M=tU%JN_P8PZ13*x~( znpWz0Gan-Uhq?X@;(H^7(BG()fM zXydxn5BU>xnsrNA2tH5X46|&$cxmooQN>IE|0Ekc(y_GgQ46{k+yZh8rJVU0vabLx z4Gm!bfK6s~WzP}Da3HxP@G47rm zX{^Zp@Q$FTsJvZ4=Yhs4+pNGS=L%jvla4DnRaELFJhho?*&a|#tL(=!s$r-Rxb^I< zhfJvTp(3+t&s4TzFX8iq=P+M*3<7VU_F|hhsnU7lf_2W`v$@*5JA_Ph_8))*nb~^Q~^*y$lzc#;D!T%a?VZ zqy9FxtKXc9=_|zvxn2c#$}77~8okMBlcRJFT{xe@%7aGWhIk3_Kc~}hHT(gB=Xtob zKcjnqjm7#ZYeDG(z7*CyTK?nAN5PGuU#jw7*^l++F{cBqBQhEeMkBWAF1kZ)d`HERBxSj85J6e^ZKI8wRzL{ z7Kk5+?|WMiZyE=eq$?5JKZ<=9V@u-ErOuWHdFGGmCmak}l|HIRM?iY<_j`D{<4L;A zT4a3Ho*6D`MiOA7w(7pH*rXSjq*IZabk8F*npe(la>Ao;&3gyjeo^prARLY_dZDJ( z(SpZtLNL(zY(3X?jrI6@>&$B);5;0t;o{Qf2+(G=y#pP|^vFr#Vf{U-XR-9>-LrF? zC9u{obj|Iy+GQO;b9xr2BKhvXW z;p|ImQFtq-(mvq<%zeQS@XKj7@_2XNSafmL>pM2@WN6uF1jWwet+p;J$X_4*0v)m{ zQQ4ox(yH=5Dm8R1Y3$U-HhX6|B%1R={8GgZtb5IB(T1SQN(Wfc!UA~)>b%+m8J_3x zYu7kCl6O5c68y8wCfJR34_7nq*!4x@tE7Z&2i=x(L>QH~${(nxt~%XnlccEoUHjbI zIW9-IED!8u^>xJCEIx{bycs;}aA8&61Wmk3GdEQs5k5^KuRP`iTQcy)D3q?{uLP8Qq zwlFG?42mTXNEl&@5rP7PErN`M5i#z(s(Mw06P)1HxFZ3cak}k}nIY4-hjil^d)nPY zX2^^)L%PX?%s8u=)tcVuKUjCKKtyiv(LHb z;t{hdwKlZZ1Md7MprQ>W$WmJ z*k_iPas(u%n%lfr8TfRA+iEXWQY-GgMO?iaGFDmOp}835b;4RZ=EhOwd0}jvK1b^( zR7=v4gDN#$z8nKFN_--Zr^K0)3RtCh@+n*5QF`Ug{+2%jY@C*@;*t z)jdU8e$`wjjSn{q?5`Rix`zR@JuPlxF(0dAa_gt77 ze(MCW_x(C*KGCrBKhQlcn<)+pA6owvshiWd4SN&3qu{Y&ffysPn*6{9)pb ztQxSCfxG(Sb*=uKvi--Be%6}!vS5kl=_gjgwBgg-_C}EmN>%d2U*#ELG$Py{MDd)H_7 zcw-UK&q=?e)OB<6*54cCv}~ngU*Y7K zW7ILi&iS!CCD~(0QuRs0SfXQ_;gp(NsLYi<--$FaztSgb?M2#3j)(R6%|U95&ll!z zG{6a&>LSs8n>JgOdZ6fbWQO&E-`^;uB*_VJWjy_ShG1o5LnWmfq!4tD(W> ?lEGCi!|A6$`Y}(wTpEnO`AB$ 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 O&r9HW3H<+C0{<5k{3Txi literal 1716224 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

Yx=!Kq~j?yo@6~D(ydFR`h<5IN)sp< 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

Grd%7`lG1tkLAwcqYoKkz?5bmKDo2;FUEk*jmFx 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%0DHz56tsV2_6#6 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 z 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 z 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

!Vstb(bIHL#6i9c<@V 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 M;6V@k%jkjs15g1qJpcdz diff --git a/bin/OpenMetaverseTypes.XML b/bin/OpenMetaverseTypes.XML index c61d91a304..befc8d4ef4 100644 --- a/bin/OpenMetaverseTypes.XML +++ b/bin/OpenMetaverseTypes.XML @@ -4,6 +4,669 @@ OpenMetaverseTypes + +

+ A three-dimensional vector with doubleing-point values + +
+ + X value + + + Y value + + + Z value + + + + Constructor, builds a vector from a byte array + + Byte array containing three eight-byte doubles + Beginning position in the byte array + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + IComparable.CompareTo implementation + + + + + Test if this vector is composed of all finite numbers + + + + + Builds a vector from a byte array + + Byte array containing a 24 byte vector + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + A 24 byte array containing X, Y, and Z + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 24 bytes before the end of the array + + + + Parse a vector from a string + + A string representation of a 3D vector, enclosed + in arrow brackets and separated by commas + + + + Interpolates between two vectors using a cubic equation + + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + + Cross product between two vectors + + + + A vector with a value of 0,0,0 + + + A vector with a value of 1,1,1 + + + A unit vector facing forward (X axis), value of 1,0,0 + + + A unit vector facing left (Y axis), value of 0,1,0 + + + A unit vector facing up (Z axis), value of 0,0,1 + + + + Attribute class that allows extra attributes to be attached to ENUMs + + + + Text used when presenting ENUM to user + + + Default initializer + + + Text used when presenting ENUM to user + + + + The different types of grid assets + + + + Unknown asset type + + + Texture asset, stores in JPEG2000 J2C stream format + + + Sound asset + + + Calling card for another avatar + + + Link to a location in world + + + Collection of textures and parameters that can be + worn by an avatar + + + Primitive that can contain textures, sounds, + scripts and more + + + Notecard asset + + + Holds a collection of inventory items + + + Root inventory folder + + + Linden scripting language script + + + LSO bytecode for a script + + + Uncompressed TGA texture + + + Collection of textures and shape parameters that can + be worn + + + Trash folder + + + Snapshot folder + + + Lost and found folder + + + Uncompressed sound + + + Uncompressed TGA non-square image, not to be used as a + texture + + + Compressed JPEG non-square image, not to be used as a + texture + + + Animation + + + Sequence of animations, sounds, chat, and pauses + + + Simstate file + + + Contains landmarks for favorites + + + Asset is a link to another inventory item + + + Asset is a link to another inventory folder + + + Beginning of the range reserved for ensembles + + + End of the range reserved for ensembles + + + Folder containing inventory links to wearables and attachments + that are part of the current outfit + + + Folder containing inventory items or links to + inventory items of wearables and attachments + together make a full outfit + + + Root folder for the folders of type OutfitFolder + + + Linden mesh format + + + + Inventory Item Types, eg Script, Notecard, Folder, etc + + + + Unknown + + + Texture + + + Sound + + + Calling Card + + + Landmark + + + Notecard + + + + + + Folder + + + + + + an LSL Script + + + + + + + + + + + + + + + + + + + + + + Item Sale Status + + + + Not for sale + + + The original is for sale + + + Copies are for sale + + + The contents of the object are for sale + + + + Types of wearable assets + + + + Body shape + + + Skin textures and attributes + + + Hair + + + Eyes + + + Shirt + + + Pants + + + Shoes + + + Socks + + + Jacket + + + Gloves + + + Undershirt + + + Underpants + + + Skirt + + + Alpha mask to hide parts of the avatar + + + Tattoo + + + Invalid wearable asset + + + + A hierarchical token bucket for bandwidth throttling. See + http://en.wikipedia.org/wiki/Token_bucket for more information + + + + Parent bucket to this bucket, or null if this is a root + bucket + + + Size of the bucket in bytes. If zero, the bucket has + infinite capacity + + + Rate that the bucket fills, in bytes per millisecond. If + zero, the bucket always remains full + + + Number of tokens currently in the bucket + + + Time of the last drip, in system ticks + + + + Default constructor + + Parent bucket if this is a child bucket, or + null if this is a root bucket + Maximum size of the bucket in bytes, or + zero if this bucket has no maximum capacity + Rate that the bucket fills, in bytes per + second. If zero, the bucket always remains full + + + + Remove a given number of tokens from the bucket + + Number of tokens to remove from the bucket + True if the requested number of tokens were removed from + the bucket, otherwise false + + + + Remove a given number of tokens from the bucket + + Number of tokens to remove from the bucket + True if tokens were added to the bucket + during this call, otherwise false + True if the requested number of tokens were removed from + the bucket, otherwise false + + + + Add tokens to the bucket over time. The number of tokens added each + call depends on the length of time that has passed since the last + call to Drip + + True if tokens were added to the bucket, otherwise false + + + + The parent bucket of this bucket, or null if this bucket has no + parent. The parent bucket will limit the aggregate bandwidth of all + of its children buckets + + + + + Maximum burst rate in bytes per second. This is the maximum number + of tokens that can accumulate in the bucket at any one time + + + + + The speed limit of this bucket in bytes per second. This is the + number of tokens that are added to the bucket per second + + Tokens are added to the bucket any time + is called, at the granularity of + the system tick interval (typically around 15-22ms) + + + + The number of bytes that can be sent at this moment. This is the + current number of tokens in the bucket + If this bucket has a parent bucket that does not have + enough tokens for a request, will + return false regardless of the content of this bucket + + + + + A thread-safe lockless queue that supports multiple readers and + multiple writers + + + + Queue head + + + Queue tail + + + Queue item count + + + + Constructor + + + + + Enqueue an item + + Item to enqeue + + + + Try to dequeue an item + + Dequeued item if the dequeue was successful + True if an item was successfully deqeued, otherwise false + + + Gets the current number of items in the queue. Since this + is a lockless collection this value should be treated as a close + estimate + + + + Provides a node container for data in a singly linked list + + + + Pointer to the next node in list + + + The data contained by the node + + + + Constructor + + + + + Constructor + + + + + An 8-bit color structure including an alpha channel + + + + Red + + + Green + + + Blue + + + Alpha + + + + + + + + + + + + + Builds a color from a byte array + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + + + + Returns the raw bytes for this vector + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + A 16 byte array containing R, G, B, and A + + + + Copy constructor + + Color to copy + + + + IComparable.CompareTo implementation + + Sorting ends up like this: |--Grayscale--||--Color--|. + Alpha is only used when the colors are otherwise equivalent + + + + Builds a color from a byte array + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + + + + Writes the raw bytes for this color to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Serializes this color into four bytes in a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 4 bytes before the end of the array + True to invert the output (1.0 becomes 0 + instead of 255) + + + + Writes the raw bytes for this color to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Ensures that values are in range 0-1 + + + + + Create an RGB color from a hue, saturation, value combination + + Hue + Saturation + Value + An fully opaque RGB color (alpha is 1.0) + + + + Performs linear interpolation between two colors + + Color to start at + Color to end at + Amount to interpolate + The interpolated color + + + A Color4 with zero RGB values and fully opaque (alpha 1.0) + + + A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) + + + + Determines the appropriate events to set, leaves the locks, and sets the events. + + + + + A routine for lazily creating a event outside the lock (so if errors + happen they are outside the lock and that we don't do much work + while holding a spin lock). If all goes well, reenter the lock and + set 'waitEvent' + + + + + Waits on 'waitEvent' with a timeout of 'millisceondsTimeout. + Before the wait 'numWaiters' is incremented and is restored before leaving this routine. + + + + + Copy constructor + + Circular queue to copy + A 128-bit Universally Unique Identifier, used throughout the Second @@ -186,494 +849,151 @@ A cache of UUID.Zero as a string to optimize a common path - - - Convert this matrix to euler rotations - - X euler angle - Y euler angle - Z euler angle - - - - Convert this matrix to a quaternion rotation - - A quaternion representation of this rotation matrix - - - - Construct a matrix from euler rotation values in radians - - X euler angle in radians - Y euler angle in radians - Z euler angle in radians - - - - Get a formatted string representation of the vector - - A string representation of the vector - - - A 4x4 matrix containing all zeroes - - - A 4x4 identity matrix - - - - An 8-bit color structure including an alpha channel - - - - Red - - - Green - - - Blue - - - Alpha - - - - - - - - - - - - - Builds a color from a byte array - - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - - - - Returns the raw bytes for this vector - - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - True if the alpha value is inverted in - addition to whatever the inverted parameter is. Setting inverted true - and alphaInverted true will flip the alpha value back to non-inverted, - but keep the other color bytes inverted - A 16 byte array containing R, G, B, and A - - - - Copy constructor - - Color to copy - - - - IComparable.CompareTo implementation - - Sorting ends up like this: |--Grayscale--||--Color--|. - Alpha is only used when the colors are otherwise equivalent - - - - Builds a color from a byte array - - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - True if the alpha value is inverted in - addition to whatever the inverted parameter is. Setting inverted true - and alphaInverted true will flip the alpha value back to non-inverted, - but keep the other color bytes inverted - - - - Writes the raw bytes for this color to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - - - - Serializes this color into four bytes in a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 4 bytes before the end of the array - True to invert the output (1.0 becomes 0 - instead of 255) - - - - Writes the raw bytes for this color to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - - - - Ensures that values are in range 0-1 - - - - - Create an RGB color from a hue, saturation, value combination - - Hue - Saturation - Value - An fully opaque RGB color (alpha is 1.0) - - - - Performs linear interpolation between two colors - - Color to start at - Color to end at - Amount to interpolate - The interpolated color - - - A Color4 with zero RGB values and fully opaque (alpha 1.0) - - - A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) - - - - Copy constructor - - Circular queue to copy - - - X value - - - Y value - - - Z value - - - W value - - - - Constructor, builds a vector from a byte array - - Byte array containing four four-byte floats - Beginning position in the byte array - - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false - - - - IComparable.CompareTo implementation - - - - - Test if this vector is composed of all finite numbers - - - - - Builds a vector from a byte array - - Byte array containing a 16 byte vector - Beginning position in the byte array - - - - Returns the raw bytes for this vector - - A 16 byte array containing X, Y, Z, and W - - - - Writes the raw bytes for this vector to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - - - - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only - - Raw string representation of the vector - - - A vector with a value of 0,0,0,0 - - - A vector with a value of 1,1,1,1 - - - A vector with a value of 1,0,0,0 - - - A vector with a value of 0,1,0,0 - - - A vector with a value of 0,0,1,0 - - - A vector with a value of 0,0,0,1 - - - - A three-dimensional vector with doubleing-point values - - - - X value - - - Y value - - - Z value - - - - Constructor, builds a vector from a byte array - - Byte array containing three eight-byte doubles - Beginning position in the byte array - - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false - - - - IComparable.CompareTo implementation - - - - - Test if this vector is composed of all finite numbers - - - - - Builds a vector from a byte array - - Byte array containing a 24 byte vector - Beginning position in the byte array - - - - Returns the raw bytes for this vector - - A 24 byte array containing X, Y, and Z - - - - Writes the raw bytes for this vector to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 24 bytes before the end of the array - - - - Parse a vector from a string - - A string representation of a 3D vector, enclosed - in arrow brackets and separated by commas - - - - Interpolates between two vectors using a cubic equation - - - - - Get a formatted string representation of the vector - - A string representation of the vector - - - - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only - - Raw string representation of the vector - - - - Cross product between two vectors - - - - A vector with a value of 0,0,0 - - - A vector with a value of 1,1,1 - - - A unit vector facing forward (X axis), value of 1,0,0 - - - A unit vector facing left (Y axis), value of 0,1,0 - - - A unit vector facing up (Z axis), value of 0,0,1 - - - - A three-dimensional vector with floating-point values - - - - X value - - - Y value - - - Z value - - - - Constructor, builds a vector from a byte array - - Byte array containing three four-byte floats - Beginning position in the byte array - - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false - - - - IComparable.CompareTo implementation - - - - - Test if this vector is composed of all finite numbers - - - - - Builds a vector from a byte array - - Byte array containing a 12 byte vector - Beginning position in the byte array - - - - Returns the raw bytes for this vector - - A 12 byte array containing X, Y, and Z - - - - Writes the raw bytes for this vector to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 12 bytes before the end of the array - - - - Parse a vector from a string - - A string representation of a 3D vector, enclosed - in arrow brackets and separated by commas - - - - Calculate the rotation between two vectors - - Normalized directional vector (such as 1,0,0 for forward facing) - Normalized target vector - - - - Interpolates between two vectors using a cubic equation - - - - - Get a formatted string representation of the vector - - A string representation of the vector - - - - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only - - Raw string representation of the vector - - - - Cross product between two vectors - - - - A vector with a value of 0,0,0 - - - A vector with a value of 1,1,1 - - - A unit vector facing forward (X axis), value 1,0,0 - - - A unit vector facing left (Y axis), value 0,1,0 - - - A unit vector facing up (Z axis), value 0,0,1 - Used for converting degrees to radians Used for converting radians to degrees + + Provide a single instance of the CultureInfo class to + help parsing in situations where the grid assumes an en-us + culture + + + UNIX epoch in DateTime format + + + Provide a single instance of the MD5 class to avoid making + duplicate copies and handle thread safety + + + Provide a single instance of the SHA-1 class to avoid + making duplicate copies and handle thread safety + + + Provide a single instance of a random number generator + to avoid making duplicate copies and handle thread safety + + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper + + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper + + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper + + + + Round a floating-point value to the nearest integer + + Floating point number to round + Integer + + + + Test if a single precision float is a finite number + + + + + Test if a double precision float is a finite number + + + + + Get the distance between two floating-point values + + First value + Second value + The distance between the two values + + + + Compute the MD5 hash for a byte array + + Byte array to compute the hash for + MD5 hash of the input data + + + + Compute the SHA1 hash for a byte array + + Byte array to compute the hash for + SHA1 hash of the input data + + + + Calculate the SHA1 hash of a given string + + The string to hash + The SHA1 hash as a string + + + + Compute the SHA256 hash for a byte array + + Byte array to compute the hash for + SHA256 hash of the input data + + + + Calculate the SHA256 hash of a given string + + The string to hash + The SHA256 hash as a string + + + + Calculate the MD5 hash of a given string + + The password to hash + An MD5 hash in string format, with $1$ prepended + + + + Calculate the MD5 hash of a given string + + The string to hash + The MD5 hash as a string + + + + Generate a random double precision floating point value + + Random value of type double + + + + Get the current running platform + + Enumeration of the current platform we are running on + + + + Get the current running runtime + + Enumeration of the current runtime we are running on + Convert the first two bytes starting in the byte array in @@ -1099,145 +1419,6 @@ Converted IP address object, or null if the conversion failed - - Provide a single instance of the CultureInfo class to - help parsing in situations where the grid assumes an en-us - culture - - - UNIX epoch in DateTime format - - - Provide a single instance of the MD5 class to avoid making - duplicate copies and handle thread safety - - - Provide a single instance of the SHA-1 class to avoid - making duplicate copies and handle thread safety - - - Provide a single instance of a random number generator - to avoid making duplicate copies and handle thread safety - - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper - - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper - - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper - - - - Round a floating-point value to the nearest integer - - Floating point number to round - Integer - - - - Test if a single precision float is a finite number - - - - - Test if a double precision float is a finite number - - - - - Get the distance between two floating-point values - - First value - Second value - The distance between the two values - - - - Compute the MD5 hash for a byte array - - Byte array to compute the hash for - MD5 hash of the input data - - - - Compute the SHA1 hash for a byte array - - Byte array to compute the hash for - SHA1 hash of the input data - - - - Calculate the SHA1 hash of a given string - - The string to hash - The SHA1 hash as a string - - - - Compute the SHA256 hash for a byte array - - Byte array to compute the hash for - SHA256 hash of the input data - - - - Calculate the SHA256 hash of a given string - - The string to hash - The SHA256 hash as a string - - - - Calculate the MD5 hash of a given string - - The password to hash - An MD5 hash in string format, with $1$ prepended - - - - Calculate the MD5 hash of a given string - - The string to hash - The MD5 hash as a string - - - - Generate a random double precision floating point value - - Random value of type double - - - - Get the current running platform - - Enumeration of the current platform we are running on - - - - Get the current running runtime - - Enumeration of the current runtime we are running on - Operating system @@ -1269,18 +1450,319 @@ Mono runtime: http://www.mono-project.com/ - - - A two-dimensional vector with floating-point values - - - + X value - + Y value - + + Z value + + + W value + + + + Build a quaternion from normalized float values + + X value from -1.0 to 1.0 + Y value from -1.0 to 1.0 + Z value from -1.0 to 1.0 + + + + Constructor, builds a quaternion object from a byte array + + Byte array containing four four-byte floats + Offset in the byte array to start reading at + Whether the source data is normalized or + not. If this is true 12 bytes will be read, otherwise 16 bytes will + be read. + + + + Normalizes the quaternion + + + + + Builds a quaternion object from a byte array + + The source byte array + Offset in the byte array to start reading at + Whether the source data is normalized or + not. If this is true 12 bytes will be read, otherwise 16 bytes will + be read. + + + + Normalize this quaternion and serialize it to a byte array + + A 12 byte array containing normalized X, Y, and Z floating + point values in order using little endian byte ordering + + + + Writes the raw bytes for this quaternion to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 12 bytes before the end of the array + + + + Convert this quaternion to euler angles + + X euler angle + Y euler angle + Z euler angle + + + + Convert this quaternion to an angle around an axis + + Unit vector describing the axis + Angle around the axis, in radians + + + + Returns the conjugate (spatial inverse) of a quaternion + + + + + Build a quaternion from an axis and an angle of rotation around + that axis + + + + + Build a quaternion from an axis and an angle of rotation around + that axis + + Axis of rotation + Angle of rotation + + + + Creates a quaternion from a vector containing roll, pitch, and yaw + in radians + + Vector representation of the euler angles in + radians + Quaternion representation of the euler angles + + + + Creates a quaternion from roll, pitch, and yaw euler angles in + radians + + X angle in radians + Y angle in radians + Z angle in radians + Quaternion representation of the euler angles + + + + Conjugates and renormalizes a vector + + + + + Spherical linear interpolation between two quaternions + + + + + Get a string representation of the quaternion elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the quaternion + + + A quaternion with a value of 0,0,0,1 + + + + Same as Queue except Dequeue function blocks until there is an object to return. + Note: This class does not need to be synchronized + + + + + Create new BlockingQueue. + + The System.Collections.ICollection to copy elements from + + + + Create new BlockingQueue. + + The initial number of elements that the queue can contain + + + + Create new BlockingQueue. + + + + + BlockingQueue Destructor (Close queue, resume any waiting thread). + + + + + Remove all objects from the Queue. + + + + + Remove all objects from the Queue, resume all dequeue threads. + + + + + Removes and returns the object at the beginning of the Queue. + + Object in queue. + + + + Removes and returns the object at the beginning of the Queue. + + time to wait before returning + Object in queue. + + + + Removes and returns the object at the beginning of the Queue. + + time to wait before returning (in milliseconds) + Object in queue. + + + + Adds an object to the end of the Queue + + Object to put in queue + + + + Open Queue. + + + + + Gets flag indicating if queue has been closed. + + + + + Provides helper methods for parallelizing loops + + + + + Executes a for loop in which iterations may run in parallel + + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop + + + + Executes a for loop in which iterations may run in parallel + + The number of concurrent execution threads to run + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop + + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + An enumerable collection to iterate over + Method body to run for each object in the collection + + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + The number of concurrent execution threads to run + An enumerable collection to iterate over + Method body to run for each object in the collection + + + + Executes a series of tasks in parallel + + A series of method bodies to execute + + + + Executes a series of tasks in parallel + + The number of concurrent execution threads to run + A series of method bodies to execute + + + + Convert this matrix to euler rotations + + X euler angle + Y euler angle + Z euler angle + + + + Convert this matrix to a quaternion rotation + + A quaternion representation of this rotation matrix + + + + Construct a matrix from euler rotation values in radians + + X euler angle in radians + Y euler angle in radians + Z euler angle in radians + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + A 4x4 matrix containing all zeroes + + + A 4x4 identity matrix + + + X value + + + Y value + + + Z value + + + W value + + + + Constructor, builds a vector from a byte array + + Byte array containing four four-byte floats + Beginning position in the byte array + + Test if this vector is equal to another vector, within a given tolerance range @@ -1291,73 +1773,187 @@ True if the magnitude of difference between the two vectors is less than the given tolerance, otherwise false - - - Test if this vector is composed of all finite numbers - - - + IComparable.CompareTo implementation - + + + Test if this vector is composed of all finite numbers + + + Builds a vector from a byte array - Byte array containing two four-byte floats + Byte array containing a 16 byte vector Beginning position in the byte array - + Returns the raw bytes for this vector - An eight-byte array containing X and Y + A 16 byte array containing X, Y, Z, and W - + Writes the raw bytes for this vector to a byte array Destination byte array Position in the destination array to start - writing. Must be at least 8 bytes before the end of the array + writing. Must be at least 16 bytes before the end of the array - - - Parse a vector from a string - - A string representation of a 2D vector, enclosed - in arrow brackets and separated by commas - - - - Interpolates between two vectors using a cubic equation - - - - - Get a formatted string representation of the vector - - A string representation of the vector - - + Get a string representation of the vector elements with up to three decimal digits and separated by spaces only Raw string representation of the vector - - A vector with a value of 0,0 + + A vector with a value of 0,0,0,0 - - A vector with a value of 1,1 + + A vector with a value of 1,1,1,1 - - A vector with a value of 1,0 + + A vector with a value of 1,0,0,0 - - A vector with a value of 0,1 + + A vector with a value of 0,1,0,0 + + + A vector with a value of 0,0,1,0 + + + A vector with a value of 0,0,0,1 + + + For thread safety + + + For thread safety + + + + Purges expired objects from the cache. Called automatically by the purge timer. + + + + + A three-dimensional vector with floating-point values + + + + X value + + + Y value + + + Z value + + + + Constructor, builds a vector from a byte array + + Byte array containing three four-byte floats + Beginning position in the byte array + + + + Test if this vector is equal to another vector, within a given + tolerance range + + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false + + + + IComparable.CompareTo implementation + + + + + Test if this vector is composed of all finite numbers + + + + + Builds a vector from a byte array + + Byte array containing a 12 byte vector + Beginning position in the byte array + + + + Returns the raw bytes for this vector + + A 12 byte array containing X, Y, and Z + + + + Writes the raw bytes for this vector to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 12 bytes before the end of the array + + + + Parse a vector from a string + + A string representation of a 3D vector, enclosed + in arrow brackets and separated by commas + + + + Calculate the rotation between two vectors + + Normalized directional vector (such as 1,0,0 for forward facing) + Normalized target vector + + + + Interpolates between two vectors using a cubic equation + + + + + Get a formatted string representation of the vector + + A string representation of the vector + + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector + + + + Cross product between two vectors + + + + A vector with a value of 0,0,0 + + + A vector with a value of 1,1,1 + + + A unit vector facing forward (X axis), value 1,0,0 + + + A unit vector facing left (Y axis), value 0,1,0 + + + A unit vector facing up (Z axis), value 0,0,1 @@ -1912,691 +2508,95 @@ Open parcel media - + - Same as Queue except Dequeue function blocks until there is an object to return. - Note: This class does not need to be synchronized + A two-dimensional vector with floating-point values - - - Create new BlockingQueue. - - The System.Collections.ICollection to copy elements from - - - - Create new BlockingQueue. - - The initial number of elements that the queue can contain - - - - Create new BlockingQueue. - - - - - BlockingQueue Destructor (Close queue, resume any waiting thread). - - - - - Remove all objects from the Queue. - - - - - Remove all objects from the Queue, resume all dequeue threads. - - - - - Removes and returns the object at the beginning of the Queue. - - Object in queue. - - - - Removes and returns the object at the beginning of the Queue. - - time to wait before returning - Object in queue. - - - - Removes and returns the object at the beginning of the Queue. - - time to wait before returning (in milliseconds) - Object in queue. - - - - Adds an object to the end of the Queue - - Object to put in queue - - - - Open Queue. - - - - - Gets flag indicating if queue has been closed. - - - - - Determines the appropriate events to set, leaves the locks, and sets the events. - - - - - A routine for lazily creating a event outside the lock (so if errors - happen they are outside the lock and that we don't do much work - while holding a spin lock). If all goes well, reenter the lock and - set 'waitEvent' - - - - - Waits on 'waitEvent' with a timeout of 'millisceondsTimeout. - Before the wait 'numWaiters' is incremented and is restored before leaving this routine. - - - - For thread safety - - - For thread safety - - - - Purges expired objects from the cache. Called automatically by the purge timer. - - - - - Attribute class that allows extra attributes to be attached to ENUMs - - - - Text used when presenting ENUM to user - - - Default initializer - - - Text used when presenting ENUM to user - - - - The different types of grid assets - - - - Unknown asset type - - - Texture asset, stores in JPEG2000 J2C stream format - - - Sound asset - - - Calling card for another avatar - - - Link to a location in world - - - Collection of textures and parameters that can be - worn by an avatar - - - Primitive that can contain textures, sounds, - scripts and more - - - Notecard asset - - - Holds a collection of inventory items - - - Root inventory folder - - - Linden scripting language script - - - LSO bytecode for a script - - - Uncompressed TGA texture - - - Collection of textures and shape parameters that can - be worn - - - Trash folder - - - Snapshot folder - - - Lost and found folder - - - Uncompressed sound - - - Uncompressed TGA non-square image, not to be used as a - texture - - - Compressed JPEG non-square image, not to be used as a - texture - - - Animation - - - Sequence of animations, sounds, chat, and pauses - - - Simstate file - - - Contains landmarks for favorites - - - Asset is a link to another inventory item - - - Asset is a link to another inventory folder - - - Beginning of the range reserved for ensembles - - - End of the range reserved for ensembles - - - Folder containing inventory links to wearables and attachments - that are part of the current outfit - - - Folder containing inventory items or links to - inventory items of wearables and attachments - together make a full outfit - - - Root folder for the folders of type OutfitFolder - - - Linden mesh format - - - - Inventory Item Types, eg Script, Notecard, Folder, etc - - - - Unknown - - - Texture - - - Sound - - - Calling Card - - - Landmark - - - Notecard - - - - - - Folder - - - - - - an LSL Script - - - - - - - - - - - - - - - - - - - - - - Item Sale Status - - - - Not for sale - - - The original is for sale - - - Copies are for sale - - - The contents of the object are for sale - - - - Types of wearable assets - - - - Body shape - - - Skin textures and attributes - - - Hair - - - Eyes - - - Shirt - - - Pants - - - Shoes - - - Socks - - - Jacket - - - Gloves - - - Undershirt - - - Underpants - - - Skirt - - - Alpha mask to hide parts of the avatar - - - Tattoo - - - Invalid wearable asset - - + X value - + Y value - - Z value - - - W value - - + - Build a quaternion from normalized float values + Test if this vector is equal to another vector, within a given + tolerance range - X value from -1.0 to 1.0 - Y value from -1.0 to 1.0 - Z value from -1.0 to 1.0 + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false - + - Constructor, builds a quaternion object from a byte array - - Byte array containing four four-byte floats - Offset in the byte array to start reading at - Whether the source data is normalized or - not. If this is true 12 bytes will be read, otherwise 16 bytes will - be read. - - - - Normalizes the quaternion + Test if this vector is composed of all finite numbers - + - Builds a quaternion object from a byte array + IComparable.CompareTo implementation - The source byte array - Offset in the byte array to start reading at - Whether the source data is normalized or - not. If this is true 12 bytes will be read, otherwise 16 bytes will - be read. - + - Normalize this quaternion and serialize it to a byte array + Builds a vector from a byte array - A 12 byte array containing normalized X, Y, and Z floating - point values in order using little endian byte ordering + Byte array containing two four-byte floats + Beginning position in the byte array - + - Writes the raw bytes for this quaternion to a byte array + Returns the raw bytes for this vector + + An eight-byte array containing X and Y + + + + Writes the raw bytes for this vector to a byte array Destination byte array Position in the destination array to start - writing. Must be at least 12 bytes before the end of the array + writing. Must be at least 8 bytes before the end of the array - + - Convert this quaternion to euler angles + Parse a vector from a string - X euler angle - Y euler angle - Z euler angle + A string representation of a 2D vector, enclosed + in arrow brackets and separated by commas - + - Convert this quaternion to an angle around an axis - - Unit vector describing the axis - Angle around the axis, in radians - - - - Returns the conjugate (spatial inverse) of a quaternion + Interpolates between two vectors using a cubic equation - + - Build a quaternion from an axis and an angle of rotation around - that axis + Get a formatted string representation of the vector + A string representation of the vector - + - Build a quaternion from an axis and an angle of rotation around - that axis - - Axis of rotation - Angle of rotation - - - - Creates a quaternion from a vector containing roll, pitch, and yaw - in radians - - Vector representation of the euler angles in - radians - Quaternion representation of the euler angles - - - - Creates a quaternion from roll, pitch, and yaw euler angles in - radians - - X angle in radians - Y angle in radians - Z angle in radians - Quaternion representation of the euler angles - - - - Conjugates and renormalizes a vector - - - - - Spherical linear interpolation between two quaternions - - - - - Get a string representation of the quaternion elements with up to three + Get a string representation of the vector elements with up to three decimal digits and separated by spaces only - Raw string representation of the quaternion + Raw string representation of the vector - - A quaternion with a value of 0,0,0,1 + + A vector with a value of 0,0 - - - Provides helper methods for parallelizing loops - + + A vector with a value of 1,1 - - - Executes a for loop in which iterations may run in parallel - - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop + + A vector with a value of 1,0 - - - Executes a for loop in which iterations may run in parallel - - The number of concurrent execution threads to run - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop - - - - Executes a foreach loop in which iterations may run in parallel - - Object type that the collection wraps - An enumerable collection to iterate over - Method body to run for each object in the collection - - - - Executes a foreach loop in which iterations may run in parallel - - Object type that the collection wraps - The number of concurrent execution threads to run - An enumerable collection to iterate over - Method body to run for each object in the collection - - - - Executes a series of tasks in parallel - - A series of method bodies to execute - - - - Executes a series of tasks in parallel - - The number of concurrent execution threads to run - A series of method bodies to execute - - - - A hierarchical token bucket for bandwidth throttling. See - http://en.wikipedia.org/wiki/Token_bucket for more information - - - - Parent bucket to this bucket, or null if this is a root - bucket - - - Size of the bucket in bytes. If zero, the bucket has - infinite capacity - - - Rate that the bucket fills, in bytes per millisecond. If - zero, the bucket always remains full - - - Number of tokens currently in the bucket - - - Time of the last drip, in system ticks - - - - Default constructor - - Parent bucket if this is a child bucket, or - null if this is a root bucket - Maximum size of the bucket in bytes, or - zero if this bucket has no maximum capacity - Rate that the bucket fills, in bytes per - second. If zero, the bucket always remains full - - - - Remove a given number of tokens from the bucket - - Number of tokens to remove from the bucket - True if the requested number of tokens were removed from - the bucket, otherwise false - - - - Remove a given number of tokens from the bucket - - Number of tokens to remove from the bucket - True if tokens were added to the bucket - during this call, otherwise false - True if the requested number of tokens were removed from - the bucket, otherwise false - - - - Add tokens to the bucket over time. The number of tokens added each - call depends on the length of time that has passed since the last - call to Drip - - True if tokens were added to the bucket, otherwise false - - - - The parent bucket of this bucket, or null if this bucket has no - parent. The parent bucket will limit the aggregate bandwidth of all - of its children buckets - - - - - Maximum burst rate in bytes per second. This is the maximum number - of tokens that can accumulate in the bucket at any one time - - - - - The speed limit of this bucket in bytes per second. This is the - number of tokens that are added to the bucket per second - - Tokens are added to the bucket any time - is called, at the granularity of - the system tick interval (typically around 15-22ms) - - - - The number of bytes that can be sent at this moment. This is the - current number of tokens in the bucket - If this bucket has a parent bucket that does not have - enough tokens for a request, will - return false regardless of the content of this bucket - - - - - A thread-safe lockless queue that supports multiple readers and - multiple writers - - - - Queue head - - - Queue tail - - - Queue item count - - - - Constructor - - - - - Enqueue an item - - Item to enqeue - - - - Try to dequeue an item - - Dequeued item if the dequeue was successful - True if an item was successfully deqeued, otherwise false - - - Gets the current number of items in the queue. Since this - is a lockless collection this value should be treated as a close - estimate - - - - Provides a node container for data in a singly linked list - - - - Pointer to the next node in list - - - The data contained by the node - - - - Constructor - - - - - Constructor - + + A vector with a value of 0,1 diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll index f4f701bac4378ebfec8501e7eded8476394bdb15..cab014d534e23b4f7c048e461a4cd5513ae3cc48 100644 GIT binary patch literal 114688 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

_%`b;xOIi!`z8BPm$mdoka zr^}Vw+UHr;4n`Jw3GG?d4&gM^r^}VgDdhrt8oL-d%Xyk|rXBpWGC9L(JpZxPm2lPl zF!qk4%VL!?I6EGUX_-x>A~O~YgN4O&1t#jj53SA|_#~S4{Gc1K27C-nJB%J`k(X8Q zKslaE;A}A+!y8sPyuO<)hDCxIr~v|MXYS(L>YosOB6QF-LX-X{3G^2|S9m{zVtB5_ z6MDX1x#Y1!xC%wXU@Mz3kz91G~ zzJPbGY&FS(Qm_MF*^_;&CCBMv3Ov}u@gAQ@jl zFP%)AfYhsn${KcycgcyttgoY*aGT9N9~Jrpw%$yB8dvc=jQ1qgfr9p=xzIV7?w_D{ z>Lc|2-OLd>Yrh`pT83PrE09ThA|)kN%cPr9>y`)gt4N)d6xmppu4?A#VNpmo9c`c} zJQ**m9UfxN#i_?`{z*D>(S>xqaO9FWB_Z=9Q=Zl`OBm0lK~TLI#IzE63mKO<;2hkq zzPvt=bwg>XaQ5w6qhvW8iRP}%ID zO6$u6FI0|IpfbqGOfOWL7*w&eO!-3P1OzIBoXq_~%SR{u223Z?F+5O!FXcw#-K#^^h?qyVSJa5faJlB zZvgTkKi><{Rwb2j5=*bE!HI`qG@&*j4wS|-mZUgXI%&L58o@V_*yt+bNAMROy_uks ze#BA01fBFJ4g)6WtVG1*XEw~xr3@UFFx->~%*e-G0ZX03EfL5XHU_~k)j1NTQ6aXP z6HnyeWb2Sq>p4fJc)t}S3mg{?W*m_ezd3X&mIO%U=n>|daLJdWhtC(!(sDyJO;86? zIaY-7gD=O4FyFZF4P0}mc1r4YN=~Rv>2^wOp`C2?A(T0QzHEEruu+xU1F5L%MSY|K z=MF?LV}Y?%jjb_`-bgchP>#1+e&0qY#gW6<2c-nlc0nn@2D>Xtahx&sKq)eLv%x(@y?I{S}9E*LL>ct&en8tLtgLe0~xli4C=#Z zSaNGMgi`U48>{~vo#OwdeV}J~<7hh$c0^4tbxU6#ZHK`wsPlj1cKSYiZ=TG%7_36Q zOtaf|Uqk6o|I($mT`82_LeKiBYOz0+bV6x3&AO2DZo5Xh?A9GlOSkQf8ZoExf7P#(n$WLPe*B%F))&#B> zmcZHZfb0GToTdY=XKUaz8gK?uAI$}vf#B?hz!?b6jtD&HkL-%TbμuEl|yB{}R8 z#qHD3_(?;ctt2q_%y14@ZXcwJV`^*hvohuOLb|x9ww|Py*$?ToAEaR*>1FmrI_-&c z29jQ8U!;ozn=5*(zs%l97gyHSm-1!yN4hw*ZVgEJ1FMUbhag^IJS!o_L3 zaB=DqF3ws)#o3hM;xuizI8_Z7r%<8dZ0T@uT0UHymJnQAQ1=8D7mo|+E*=)rT|6qJ zyD9GLZi)xGo8p1)rg)&cDemiTiU+!z;(_j_c%Zu}?(1%f2fCZ$f$pYwpu4z#Nq0&K zry)}@jd*uRck$+s?xwh}yD1*%Zi)xGo8p1)rns-WDIVxa0Y_Y zD!>^CPOAWCAUMqdoPoB7rT&QVu*@Fa<>u%vw}!tH#JE8#beG%0-#?jArMuh`-Q|Yp zF1JIlLe-N`utL>yjlV(#XKLSFZUcXBk5ua3U2cKyaszaS^v63A1N{LmPk-=Ff54LN z04jrgxivtgZ}`WN$V;Pu${=5E8&K&d{xK!;(oH~R;GYSBN@oF;LB8Bzpwe^l<#q#= z{*y2FB2ei?{uw6tn$dv)F0}xPN6?ta%OGEFQ&8zw`Eu_9l@`vITNqUOSiaoQpwiRw zA$vzvrLEK`L`YMMPgxGknX65W z;||wk*PO|X`Sn{M^fR3IqH*Y3Jak2r4kc%~!KftJ+#nk?@w1gq$3c;7$sk**l&u2m zw6Za*+%vTZbVDNoeJ^yJ4Bqry-0Vk8vS|?{8$}>Zyh*Z&2$D^UAlWDaBa)3?T<*kL z1bVCyfetDn1Y;v3S_H|aMUZS1As8|xn}{IUv=-fsGdbEfT46lr6 z5hR-yL9$T<(nLMUCL%~SErMjD2#iQJ_Kl!xV83FiHwTWzrJ56%P=XA z<8mCo6yjC{FMoOcpqpgxVwt#Wr@Hd(<3nZM-dx9LQ1}YeZuqXpbe!P&51ik75>Mk- zct6LJ6@1&tI}2qi@xw5zXGQ07?@I{fvmYbyb*FkfU>-633CCLlDjwTYprwcoCD56m zn`AA}e9u~GBZ42NclmL8j31|8`*HfJAE*EMar%@Wr|0`|I-MV8ui>ki2HJd1w1Z?2W&MmSY8Sc86?ZLmgtmB?Tt^b>xA;g<@i zs=@Ffe=2LR(U#2M2E(rlP+@~L;Un}RvVr}HX1WBv{H<)q>UZ!bgMV8<`9>&R#Q$SOZ_njiTzBk&R0 z7?ZGk>&Z?!dqwFt_}7eoyW!uF_}BUw|9%B6>|Ye1yoC{B73AQU`vJm{=wrUD@DP4SLKW~2ZmnkF0xh0+ zTfO&zt&GP+aE;u*_-FM#K!ja@DR_5F560P`5PLyTNOVFzDMZ%@3Q@ySA<@yViGIO+ zQb;uRYobq-3W@4|Av#1*h&>{xiO!G>nSyq}tGep&0e09Ms(&8;zE3+i$Pi7rL4zhh ztj523{NwLcaA-iwu|*Nk90=H^+2Z`b=+TP!78%e?C_)1vplJ|@QNj!=6I*0Jlc5NW zg@9&4AO;FE;FYQ^vY-J`h^9k8qao1dDk%}-rhRC)A#67fX89ui(S2s|azNO2Nf7bU zfP5IPwHe=d(Z-9(44(zA%@>ndeM|Nm#6%k~CeuBcXcNX{iZ5dlvf&^mw~Ed&nfu8^ zn=vNyeHoK7I}T!_4H=U~5!q-{#$>${W>aQMdum!Og<1G_`aKXtPxa%tj0TXmg$IC- zlOV?d{rFIq{@M;ZHomsQE)7B1#rU-y_T%i=dE@shxOUwqnSfkPM6yP8)|k#&`Yw;3 z^EoikIZ^C~M1-~Bd>ZaKOHNzov307gxj|LV|5FfFqECi@kDGGwJ33^>@90pLxM3Cb z)^YfhAJiuEKx!GTL~6()gNVoiM20KTb+L8w2#j=Va4{w7-3&hFG8cYgX+VN}&4zis zdywr6#`Jx@(UA8D$}0tI@7qY`H+a5^F!%JZg0zM4shl`6i8Kd@ z407U-BvMuo8RW!;Nu+5&WRTO{LG*Ui%Ak%gH_UTn>cL@o-6zD-%z%DMh%Zuz`6)EM z5f~}rO5~>33V0WwtRGO{sOm4t5-QENdBZ4o$|1#>97bhp9uk=8VN}vXVlzFA;$3*& z+g}jKQfB+Ep={qZl`q$_#0A~zafSBlT_lrML#KTLDNUe+tKvV z^42tc)Nj*&_%4ByWs$ZZtU7^@*ADIO@5%v*)91cGi&LVy7adf zE;T+Hn!NCd1$hts0P$OYF4OKyskX^qeZ`QORhC{y*Lum4#0aV5(k|web(Vm`^Lqsg zhV-8(UwIucas@Quq{qU5CdSoMwx(@E8|TZK#I$j~tYJ(W=gXSMv~fPvZymL+qz4y8 z$ODR;UvgOllq*p5Q+;yGQ%aMKn*w%klZ{J!$;NedC>vM3p=?~gN;WPYL)o~g2xa3I zL9%h3o-5hJk@GZ)jGCWCT1Z|l&Pwv?3r@gq^;z9XR;6OT{HBN0~mRHeVl8 z%;*yoyWKD5>t~Aj`k7)zzo6J1ez8IN^4XTr*Nm%v`a>kr~oK=`pG=0W% zFm!Rb&OQez#kZ9IVFfuxBSUlAgkv=FG#HN2$kkw2%agCcKK^$cO4ac@4yEecvg-I9 zhf;OsI}UQbIhUOVe{lS;DW{b>g4l8_a5Be0!Jq@*{~BaXehq@n!m~8+-s0T*Us@ku zWkl>YqA{d_8B&#QzdLMAmjB`$u|<8$mj2x{QP)p4YcuA z+T{Q7b#pA3e^2KgeRCbhfN|z*M9x7BkT&ms7&9E5!pe~c~Bg#z0A&e9{uRO8dPh?5? zSr`9z4k*O-7=x@{7H?~`yk8^a2l9KF*ZU2CW~tBVCL%x2dac#0b#tZ`sQg@_96y9` z{$>j*;T^)$P-X_p^o%06-vOBD?Q@6n|8P5w+3P&m-jDb+zbFwr~-aL1+RVpky1_p&q|W@ zsZBU#VZGigfQ|f-Tm2o7X=%lK?d_#uYy*t^0xp{*w~zv2x`|t;0MgyZ_k>WhEo zBM-=xTorZ`{5rC)$B`G7Y_{sZVY9YLTGX)gT2P--NvYwv)$rv3-dnQo&MQiC@i|`Z zKep#ye*GWao>Auv8nhl3EteRx9~1baAdu0w=@I9YWWW5sVpGU2W4rMWYEW)dp_Kd} ztg0SN|DC-To?DXn4#@nUkMk4%oy_6~t^d90Ah7?+YfHLZ^M6~Hk2h@uvLADCNp>{3 z%ERw%d^Idvg^pZ>c3&0EOsOu;1X`R=+Az}WLN$W=Y1PFwOpwfJ$!r&D5KgZyu4e*^ z^+~$>4R8J!^nL)HL0`bB~0Q?qkTTRRxg=j^*fUhPd9d8U^Ta#O8 zLKrVJ170BOGkjGtiM-bOqgCK$2k{Wm{O+qo~W-oY^6$tK3+`#0s)1!nlq_qJ^)} z?YP>v-L-1JxBYmldhYMqj+Pp({^&$x-L%f?nTV?TJOHyK?7`;)lYLnddRiH61IXSw zIHTRu9^|xp@bunf<-C6;8xMb0FF6;c09d``X&3P2KQ5Ge$u?TRmui#k(~HBZODn~{bxowO16Z}4tQi+(0jX@Ahr40;oMy73#`1PT zh;L>@-3xX_dvDGV7ItQt?R+DIBtwB+kXE34m{402;Iu2^?RUUu?9G{-%Y3F}4q3-Y zADg5W_WQn3sm==)vlyQ#?1kt6kMY~KVZ3fztn)wGN)|+xuWt-WGLIo2G#%R(}&#$B&(C z$?E9gbsQfOS=kF4`;XhLWQVy2mh8|Cd5(oVJ%>=)GHVQ!s=-K=vfYA6<>L2052bC4 zU~g<)Fzw4C&p0(1Xr`OrhIh8l+pKFzCpr zq9v+yfXbMGeO?lI#8+N~T$n0LzTy-PMsm;LV1W4`X!Tkbd|erID{YLK9CZ!fI8Yf= z=aH|ghg0%(!^3H4FyZZ2T)ddrmkRET8PArni>1s?l@Gi5RSn=ETs6}w>C6F(oe%b(r>~) zSwtZu{hRoAIQ|WX{blk;ob)vRfrj->K<~umpl5N6h6AzZ7{v7NkOX8~lWk2tFSw*6 zWpHB3$80)FRA;%9Sx`ZAx#kNDbpsRjz-+;O2uL0I?4$)D=eQ(i=@OCTWjlrL426EH zDgwK5FyNgbo`LbtDB6a861p=a`ueos&X6c>sQ#THt@Eg@T@I2vDZA_HC=y_T+E4FcaSz5>!8RmEQ_5tXMCT1=T`HvXPFZm@KH~*_qeX@j_A9<W#M$LVpEwoM7P;JvSRNHiw+J?S|z0sh% zK@=DFCA9jwwSkJTrk#OOHY@v7xsn5P9H^7%5aVxu3}LU}9#64E-?-QT`pB9WcT4&&IFc`I2mt|FmxB|2Tw}T4pIDf{tr>Q7@n4dG>tzsJQ-SK-H+^#^9~ zQWB>!+?-|5S>eR-<5v&DQ7T=TH1V4;<584GjZh8SB|$7n3X!UZr; zCYSp^e8sVH56x@9SRC9>3iW`1Mz+S`%$+6a16%dse3>5_AI_I~qhXmZ`55KHeH8gC zbS*B)iPe*!+erGvkmEc~EX{_6& zxRwvEigD$oubwbw-$>|c__nz_lEB@O z#?mWTOyB)34e>gykUU4-%4NVLu4FYi2TVZQj7 zeQk^U%I6T%cgtrI(|1Gj$w!)h(AFH!u|byKUAbvnb+|lVOgH(3VJTgTGe7GO`18eelV2E?(xo`_8~LPs9v`=K zx=p4|{xBO0e{n6`g%vYt?#v_{ z@?=5z!JXn-^1fd^J2&jS6~Fo4S~K!>M1EWidksCOLrir#ca!?}MlscvU4`Ln)Bik@ z{RID>izK|D6Uwf*NW%J1f=QL}u>VCQ@K*x*c(WDzb8fXuxUKP(!H!&Vu|>Eem%Lmz zkA}?Hmtp^kQ&K2&I27Xkb$f)t{&gjOkqD)N-6%^3yHWOm@H;d!GzY8%7}I-OJvJ^v zU8OziE@SjB8gt7!Mt-V!;Epxesfy_SPE|w?Hm8zQ+MEV@@hpRNnM%m21L7E8it)EP zN|1vDlDs{U?F`2F zx;K8Y6-C(*5a1VEiGWBcOoQPUTY*^FU!!w}@?sxJ%-?&43Lr(4kR4_#Dx+tV3CBJa zRdb9T%K38B7OF<}d?Dsc4x`u)4b%c3(;ln^zUVDlpicUphYQO`zO9dKLXB=V2SYX_ekM{HpsaJ^XCkE;*q@H3sqiN& zBgy-3-b^U9sLAawpp8Uk0quV`-ERceb)c^5-`BNmbr>zM%;vbHm)VTjH_C{0Fb5GV zvxVddw%A%tq0KUzqWMc}^zRt&Du&k9kK&PSLuqZzf~B=J%a*OCS$-ds-|AZWg@C23 zrAsWimM*b0tLKZ#ySuEGnaOlVSuI~RAkT2q(}Fx)M%ND-?Y25*W7slWx6pkDj-6X| zvVob)$Bd6Uv<&37)nWVNjM-eb?Q8t>bWV_)>*zrK5(vL8$bQy;4N`m>ZfXeaT21rU zJVN^#XxSEPb8T-P&qA^zJk0T}*-NZ7T|nE@!#6ueBGPjdKtD-B_l`!)&wIJG<`|%o zcM&2wFG)hTyF3j*=b9JuNDd9`RM8s=D)T3qL+&&FI)G*TlOydycFI4UuRdYUw(h`#(&&= z|Mn}cyl0PBo_X}OIqyGq`_ETwn11S!Z|wD>%2zh#cYWcu+o!(TvXk0$NdF-}{(k1z z=bya)&-aZT|Ma~JzI@puKN@!9;}2c)kmbeCjU98(s}=lAeEj?zYj# zerwnEr4L-Z`^M9plV6KG*1Z18Z1v0Ue&Ou9Pj0&Z0q4fIp1ii>rH9^L_l*0Q8SkrM z7u}q=yy42KpFLW6;_2Ms1kdefEKB@gIM8nX{tz z#>mKT{W*T-!l#G*<-4!m)qU_g57zwpp(oB?eeS~_yfOOq#rw7Yr0!3vU%a4u{!9PN z9ed9KKRo3Aola4YUH|6PM_=0g#y95u__7VVp7it!H~jO@ue^BTJ15Nj;MJ8g_C9yn z9nU|s=qEkx(LH}L+U_`Je)865R#(2h%gM2WZ{6LRSY4fZ;+*D+XC~Z#{K9+BE;J`z zTKe#{Zyo!?s`ob?edRN+P8xUR^LO2M^N+t*zw5pEGb-OSKpR(gVFaP=*pI-mfx|Y|XXJt0_)TEaD{Bt`W_odxVJgM^L&J$Oq zepL0=S3gW#I`K}Gy!#rrZ_i7Iy|@1Q_~(!RV`R+cr<@axTDbUcKUmh?fAY)~jlXi1 zuRLw!OPhb%`r;QlSN){=*?F%oE4=aW`|rQ|#6@$Tc(DHEi|$(V_Vus4vgXnku6z2a z4YLmY;~NM4VcDZEEL-^4*I#$;pS}Ogd-nZFYvqRdBa`3w>pXkrqE*q|zy0o_H;#B? z+0E}>v~t>KpEzOf3+_Gk2P4i}`q4Hzvq(9`&y$X-h1RtAO85MX+L`Y{`0SSwQcmBo4W3L>bS48{Bg-|ufG1oQNjUEbBnbLRqV`pPhK{B)kAOI*?M>HtdS2?eC49`msCFS@-H5IcjM}@ zZ@iXzY5j}m?D6JHfB5^ouOGkite-SJmwDohu9k=Y`m;~pRrvHi4>tU=Gk)%;P8{~( z|Lp86Ju($Ze|Syz7f-lz@!wzkaQU%&{b)tzGjArp_WSjfKR*1d=z&k&Ywvh$%d(sP zmRa=t0sEY=-)o;(}46U2Nv_k6h~f__;|7Hy!@uvRB7XUbXbzhvpsov^Dbh zqrTKy$nNk&>b~nPs`&QEH)5R^zH7CwY*sh{x$qE-NE4oa7=sPJbCvAp;FI0suz7n# zn2f&){5x&>-I{5$WK^9awt-|5zo& zQ_GQQnXP#p4;(k|c>jkE0ZIODrZe4)gzh_8w}>K1{o$Dc)f zMuPB)1oOXKL3m!}sg-ymwvzEzD<4DrZGrC#d>46=>Xh^eX-8dL^Q={+eqKY$U3Kf~ z9JQg2@n0Zbr8X#XK44V)s48{*D016tbjxT*{jG`d{l`uj>!@V{PaE4l%2AgK{N7lm zzCM;Y|0Hm;P~ziAA11I>;8cN!3S21g(*iFVNBO@m@i)g&hMMs#+bD4E_-W%E)j9sz zc&j=IP4XvoE?}!bM?El}7JFRa55`l%ze=f^?a1Na?a1vUiC-r18w5To@GYV5H-Q!_ zOjt6(QGEg*nZU9e1pZ^fd!Rclq>K`HkicVFDD#RI%67U?u9tYlMA~!o#1qm4k>>%E*j}p|VwJb~hTH>QyE77C0?-E8-Vr;b<3%`yD#$R8a1uU%+YPyQR z#peO5gICWG>~O(a4YpXYT@AKeusw)@%V&T!s>39$T76EioZ1b)NKmc51PK~(CvvXT zem&A+_@(5%q};8Na|u>Xk>+akEnuUug8CHFqVP!a?8dLslFRRe%gO3;Dfhml^{6X^ zX9Djy#vsGBDuJ9;g7vBg)fvEQfHkT<^^mflAFc{RzqM*)gxFZYt^h{6Op^^llxK)G3`kqkFL?S46l3-7%7ldb@V9%(Z zNx6%q+_UOW$f?wo!0PaordEsCHG*w4*v*1%HrTy_IT4-nn}Ssu>>0so4ECa64F=mN z*jR)8LaG)~K$FbPBdmu$v-_Ew+0#4v8AoEs>>yogvsaBF781QLy_W`0-o( zEx~Zzh%tVJRSOH=3@oM|0p_TGTB|Wa|4ZP9fHT$7=!nQnwOn99;Hd(80UdQlbWFr? z&WW}}7W7{fodkHfz-t8FAn-1M4-34`VxFfY{sV#Q1->ru7Xtqv@B@Ld81ttEHVfHDAn*!-*9&}5;L`$M0xW59l4wDAO_cBkfp-bK&LZV0 ziN6|S{09<$Q{wLm{FA^B1iB9M93=6)z?T47*U6w)JEs5+7dTqrI6yzO)%grkrwN=X zaA$#Y1nwUgMkzc$2_;1wJZp5BGM^ z_YpYXJriyHS;QT+#@zsTmb($~Y=NH__yxe3>N$6|HB-F^7*W4;=K}u0J;0i#9*IAN z_!Du~^&Nq4#lHi}Uj^EUXArLyI8NZ6iDyAMNMK&z(!}%d&te57=>=?2XIDh*h&mtf zh*~S~a)H-Y9DtlJSJc_`-o^Gbm9B)Bs!^3oZAXmOVB5l60`87|$&QI6SK7T-}qy8fBeS!ZH7^x*aCNLqeQeawOoxnzcqXmu?I6>eff$e~_ z>J2Vyzro$IY)hm2#5ryd76hIuuvg%!;rqlRs(<+PXu&TIr*B+0e1A|LAHE@SNdJ*_ ztJNX>%j?*(Y|V)JY#rfQbr&Gd#dTK!K2UcvU?lS)(?DVVXRHPNduBdB>I#9U2s}&R#R9(~ z@K%8j3w%o8_XWNv@Ku376ZoFMe+rD&lXI28MuBYtcNREb;86lk68IT`XA4{_@GAmu z7I>Gy2L(POaD%`%0ZY1Hl3dXLhkC-l3XC)`o)TCua5SKwe_X?tkvd7>RDrt)oF^~` z=;vJ0a1C;f6F5oW@qm8n$qm;_D&c7oUnB4=KtIm~4Ywop5`k9=yhh;l0&fv`x4?%0 zSxWb>yHVX9(O-|Bpbz^BSWm*ihh=0xBJ&Jeh}zyk$#3S1)aWPzs({Jg*~3A|3=EduWr_=v#o z2z)`{27x~p_&b6B6c`&BP5CV{d}I@(8X<6uz&3%?1@0tpUx5b-Tqtmnz@-8U0(%91 zUf`tyuMv2?z}p4hFYr-;-vjhzcy8o&kl`hPuL*op;5!1}1N3t~m6?Q`{~Adc8ATWq zm=IVaa1>y8WaF52TZ&^EVL{-jfDzR)Y6Hg1+^D+{FN}Hsuy51>R$9F|>48*QP0l`$ znx^g_^%}VSq~aOOlH)zj7p>lDHICZV>jiwciIndNe6i_tP{Mg`@a_w8zS#8mfYe9F zu&n0uZd1CpHuAmf>x~CDbIo~9L&QEEJCbDqb`Ewf{Q-79)}Rjr*d=%(@@9ZtiL->% zScSiHlxtsuJ=i#dRS7o3V597HNZZ$7E%w)eog&yTBOUe~IIXzcr0r_oi*uH58f_^{T-ZeTy3!BNUKw+?R477 z_Vf7A?kIz;0@kR`HQ0H`IZ|y1unpMDHBHdv)*@$-_J`OV{6w%{Mqaj~ksZ|ACT*jgjLcHid?8DHSG{dl z0b3;4IqDCBeM_**!2M0UbynA8`qk3Ob$QHL08eDv4YC4bIfGmti0 zy=1Vtz;;(-We0zGd~S3DcF>0#>>#A=rEUnY4R~Jm8-sNrZ9nyA!PYjMoOs#VU!8;d z4BA`Q;TM#@9AIN3`>T637Ju3~J2GEAYOo(UNnqbL*hc3(U@sc%9i$zgerB-0BJBWG z*)BE2Z8sS?P}OM+z2l3(_SBdf=3WswL>(DmS4R$2_X&1}8s*-LJN6UtWF2zG4+WRQ z)l`jv%Q~bj(wI8Zy$@+G8SFUsk;oCMV+zZyRR#B3kp*gwVCk#4m>RbX{cdEr z+I6~c0rt1ZN_Dis*#C;^_yDW0it1d0o$o%Vdeqkq#=hC3?hCMYBd4krd_;qB;>+&& zIOllYU|)A@tX1;q8K&LguEP!8=lN1Ay!>G|gR~8J;zaB+dyLhmc9C;e?YsTzO2N)i z-*T%W{pyz{jXj`W*?8DQ{a(fgNX}4c!M>~51I|=?3PvxVY@MktHCQ4#+4`LNn!)O$ zGc9}sVMnPwJ_Fdf>N5tL3+z1gGr_cfUZ9$GVou#+7pPqW?7YYY>PU@YlsfqTwD&IX zQ5RR=_{{wFN;b*vCgGw%!&Oi~0#QLh2}yuxLP8P*6vZW3l9f$1>~0{j=o>2ag0zao zYpE5A)+#D0TCDaFylb)57Ol3{YHM3-eY~`4)ko|5J!j_k+YJdmecu1`f8Y1>eiF#} z&G*dAnVB;)XU@#;67@~7&7jY{OVyR)b%QM54sn$zIfbS0=($Qv)=2n$OVw546oZO< z=c+BD#-L+;t?Jw2X$P%QTg9ANEJf7%HmGaF0fScfHmhsJ(%Cw$)%P8BohUq2m$$}u zi@ILm%{%<)HrybNbK9F7f#qiEclk zv_Y5nuah^4C8z1ST;hL4eNVI*bTd-kES@sxPDTd}dKmd`7L&?#zK4--yO?Fr&yaG5 zxWu4W8C_-2N65EB)X&xVK0?0li*pSM4cQ@fiVckZBquW3q~m<0L+(S|^#)Zky49ei zjP@9`cE}L9Q#@|a6^yt0jQR_L8bkH;Kd@eUAocFx-OL2oiv#l4cgW@g+{n~m_JZ8`u>vz^m z;(3FH=l#)oS#&Pcni!tU1$!az=#|{ht@p);2E7IJfheoj<(1`GuD^+!4f+&ue;2PCbQlVpgPQXKK)VfEn->E5nL#h)9Rc(!2bH)!5$_rF zTHZ0P&&2RXE%UX!DX!1OD1-izSLXUcOmfi4u78Se8uW2qxl71f9JIit~Uz`Q$!#?i|Hm;v+hFLniGxj{`p1@b(DqWM?2hRR(Abpj2OA31SbT*GDAnOe$4`8T+Z zlovYad#+;nph27RzvntyeqzuK`9E-tmc>hSz8muIbd8a-47xS{ew=xqXV4y?W8_9B z?jhF%xzmYz$aS22+@L4&A9GESZ#n20*YVP~RG09J{1;r)LP>A?bbmHZW>YeiFVxO<-b!l3hlN4u-#@Uykd^MVuHwX(^e zIO6JM+Cj&=o8)eTE(o6JULs#I=(6B!_gV5?gRTo!x|d52?sHQ;Zw;Q|K3A3)bZ@Z1 zeV%ML=qJIY?uhI*=;y(6-7Dqo2E7q%aW~672K^&=zPm;K$)Ma&r#mX&H|VI)TK6hB zmL3d6dB=y=yIbW_gXV`mx7uW{L5o5cyJK>bLFa@ncdwS)47w)i?Y zzCqs(Z3D_bSC{bZ&<=N}9B$C9q1)VRWTin5hVF7FW!#{D3q9yg%g+t^Y3Nb+S{YoS zrMwt=%DqlDG17LoTfW{*ab$P@EW72G4tm$UUQTVX<34gR0hP#&WP45FR)rSgD56eB+phk!9gc@u9w#uR34t~ zxl!(MP^ITPvbSC5YY5kPZj$dLG}?p`z9)BgYP7{_^lX=(8?+kbeP3=}qvKNHvpqZI zwxmV}kPnY-q%_(A^h24Kwo%k`hpaW|4r`p}PPy5jVxYTZNtaG}uhs6kTfT45UMuC< zEhnv|IK8{RS5`Bkb^2?b`{d;&j`kLN$e;?KpU8a2{_<9|8tnZ-bm-250y&e9O=Ox*Dp^key{O_J$NqG?= zt(RA1E~86)r3D{(UXkMsnpJSMctzG3G#_!lmTd+#A@0|5i$M{@{YKtyP#kf;kq0$` zc0cpHD$o5NR32&mBlkP9(?NOO_hfx9$BA_XVfDWJ{OcNB%;@HeHM*M7K7(j(zAvBN zsN=3LDD>h*n@b7N+#CVad6`C&!=t?)$*q@bR31Lo`wzKylSa1|O!Iyw&)clgLj^Ov z{~_bw)adDgO7B1AoNsCLGSHW@@Jfx|0ut&igFY!Z-7D3@SLrxc;ptwbuG*r}(88Hs zOWl06Mw?JGj|y(J(IT%;O}Iv*YpiA7A!^2T8tp*JTs7-EHd^G(S2f!-y2EPrhE&aW zH9CNlVfFA$8jUVI-&?3&-mcN4!e*QwJh?-o6M=@Q4-F~@8m^XnU&pNuH{*lW8x5*K z+!5+6gPICc-Xm4zPD-g~|4}N!h-UwK@6oE$#L?_8QL}E*DQWhXs0Fuj37GF+_m-#z zgZ!?qdq=Ak1`TtK@Qzh&290qwd&jFzgUS$hjOsC{0%)T8x`P&Zk5g9|REN09YO8}5 zd5>2&GrGjL#<$5^s%m~fb-BcMR^e6NX{zZqjn??C^OmWrerU&i*L$LR^>#vfcFa@@ z@8CF$-9O8js@*{kdS|Qa9Q3Yxj(W;Lk9y~-w;XhZs8C~e*;1bJR;gtg;mkO!=BcDX zv~tZ;8x5kBYo5B^pz+po-g)YAMzoJR=v|=xWa8+|xLOt8$tCcvu3Eip5Up`%s80-{ zHSP?x`7TOHbLH2#2mZc6QR@%hI(7ctI&O{iuD3z0H|PSOCgt0$<2E7RnJVs}k8zH( z&!8o{Lp?KNnxRqE?fA2QNoew_;KrIa-0XZpI;B1U=-+oLubL}R{3z0OFlcs;8AK`sF^ z;51*4`kq04*J-}5sa*yQbN$+Tq00NQPC3Tq^ZgGs!=N(6^{QVRK92CKMn(rqpQ-q6lh;OMGjA(queBV-W9fy27#FgrOlQLrM@?EL6 z{+rGhvF`U>jXyu2(ZfZ%eAlSk9CW|$dNpC6j-!*4@2G7CJzca^eMkBBa~z)*Zd1bz zTH|}fw@p2-k)Tt?@2a*(wG=u#yh)9HOrsZyp77nQUUtwf-ww6&aXapQoC%)yghsCw zJ?Fbkbw5dHgZQ}Upzn5d;3%FJk?N?@qPPpwGQe_;#zpXLKCZ z>|XV%gWUf6)Xryh9JO|jdS4@M-yZdaiKEldJu2s?I;G#|_TR6H4Jz{G_#aR$4l4BT zRl5v2);H4sV>Ri3&UdWu82>|Rr-M%NKdg$M({Z)F`Tn1%T?Vc2HTeHc&H9;+YxPC^ zkEl0)&IoP)$h}Yfhl3vVKBmIY+i|P?kE;_LbiH^|wK(Vs@szsOL05}s)FT?PReV;x zY!F$+XVu#VkyU(Fi5GNT##<@>vuY9}8g&=oiJXNdj;!Kys@ots>v~QFexdV`Rs6Y{ zWDr@!pQ~+*$SU^wUr_HD6tyn*|5DZblJZ?ERwM2u^^ieptgZf+)d7Pp0Q$9>aZsn+ zgp{wU%N(@L|C;)#L0gdWb@jPH*H}CKzgMTfsPmN!z03bc^>u@8gp@z2M-93O=q=@X zNvGTa^tM{$pl$wl)CPm@u=e=hReKC726|7G{YvM%*LukRzS?cjUTeSq1NFW^V~0ND z|GVmbS*P5Onti06Hs}D#`$P?YMaPXU{DuEB^}Io4Lx17_TqS-@aoS@3Q*CBM7V|g$ zFV&4Ej=Th6?K6lhrm%v)p?un63Tq7`+9SN-7uGEX`CV`Lm9@v9VXj_3j(A?BeAoKM zxc2xxR+&L%i1S(-4XOb0TQ4|hn?J{L{Z{9zaQ(%fYn}I+jeg<~t~nbF$TD&>hw#IkT+I z1{DL%wmvb4M)Ijv`b{l`M)GOa9)tFy^m6MD1|2{Nl~(YNI_2oXD|6;q>kTR!dS%W6 z>m^2d?4EA@oe_=Q8*|REz9K>9Jd5-OY%`?)ID->z4-kUE6aO zTAvv-%yoKBy>-l=xh@#Hm*g~93k)hlT%*-xPzBIpYlnjpIZLd^45~xiGV6T@C34QT z#=b=|^@u#j>SlC_@8aV7#5vaG8u40nj&;9-9?3b!`i+Ag&pFrnql12)v%(7gg=Ajh zyS6xJMXaxL+!pcD#C; z^#U$|^F^)Q8j1N6E(u4ir@xkoTV*}3k+>UitE?~AXX08d--V3Cdx)cVL-0&zF}+Q) z57ZKmf=cl?(`T7~ki#!$(cdxu4_Tb-l>g4LI@jMg{3)l@VfqY%C0w9V^pDL>`M(mj zgzvv7IiJ((_G)@0bB-LTpp&Bykv5S022OM4At?{vI$g@)+D@@b=vrl`(fsB8N@-z^ zmZ|A=9+Geqs3l??t99bz7A2X}i?9^E9R3EV65j%~#PueYdS^THzt8+zKwaVo9D6u^ zW(-*3hn(_Ij!WFj{C!#U&@@sU%CU24nc1T&6ShmtaHMz=r6}<%sAa};MxS;+X7}BT zociSd%+d94;;^o#JqxI;vpA)m(b@b6r_YYf*1w%H zGmox-mXv7WT&tP3GyPYzt)(TAUWp#gMfFr7+n)R@94$w;QPa$*u;=W>kZ%dHKQ6Hu zVRs*^^3}1F%N|`B$^RA3HQc)IGNsRcNujB(ZFcx}j@A78I80Ot-BX8#rTACVWJ~zZ za%D8B1oggUO8+YU;Zo{#=Wwz8`TaRxE#Yvn{~dB3bo8$^ro=lPE>jw@O8gCBOMJqdOwU@(cNzZwmz30BeM|W#zNKcbfQJj~ zUdF?YXyf5%W+d2SiPjM%XidReE4(V*0%{4}YBx*E&7#9NoNXnFkIvLh%OA^W4)tVQ zVlwlO2UX(a0n_wdajG~?J<|rxrTv`jRY|9@Z5^$oOSnGEK`pToREky1S=CQOIVG$mP)ihmy2LP0w>T2iBaR03iZP%* zaSW(m90xi?91of!rh^8=Nuasn6wo|z8fd<#01b-ypab`E|8Yer&p>)58aY??Xz4#r zwEoZL^yh=(uf=gLy}o4AOPIgep-NoC>A%aI>=JcYd!ZS=J;pK|yPn#Qy}6$p(y9_a zV7`w1Dyqb8u8$rY+2e2z_)0v;at;^Pk`EWF`H%FIK)EpQ*hW$5lIvi5al}#L$t*sF zZ9nsHR!Fy+c376NOPZr?lpbjrJ7e#{{`c>;bgQ4^HonMh{3=hz_L>g2U(4QM>0RVk zOQUh9gzmNMFy*!RUu~T-@(*7(t?jQ)*?$+N(`)@`Z@<^^^A+BIqj92lf|%6yB{GkI=FBoq{*3rh#)Jeoq!t z#i{t6D@IAWJ35hRDd;;n<)E8nHFFj*T?YF1oS3vmf0?re_Xhld9$7s4QFXaIX>>U7 zsVE;k5}fMMZLS_!Z@u7($s4U>12K6M=neAR(MQP}WXtHO2**dC2$~$7C)db(t=WM! zlJ3XcATJ%=5cr{x)+qTy@x9TJzz^l_(VOHbaCYE5E28(vgQGiGW-_oD`@gTtt<2xd zZ{lwj^j7{>eg}W6p!e}N^LsoG%6CU!6L?U5!c>iU8l_)4`nA9_XwfLSA8q+7YF=+W z#&!OkMRg{6+?X$O_H*6v)eWTF$#3iL;u3fA`}-8$Bwvv$$4t!KCC)0WSFgx64%1!L zUHq)pE+m7&pX`yJbJ!)XEpEiY0xK zpjgru35q3ssi0WWo9s8pFUEe9znyDHJ#xQ`#?@!c5y9;OqYhMB`Jg%Dek5*?!^RyO zyg`l{H$-k1lg1q%Eai8Lwu>*UGNd_obP>KbK=(-Y%d&AVTKnb6plcBRHR#EpFEll_RGCiacB+b#L(qxuXSRmROF1W2yIYn$5(@H8DAf| zN8L4kSqK`llA%|`qvL;sw=aG%zB_b}D05vHx z2#=C6`SLL|(_cI0OW21$F#R*=ezfK6a3xZH(^DqtI}Bx#zQaJAO_Jyid>x0LU@YZl z94mRgydwX4%*5O>`B2~{&kf?kV}@XUxhI?tIW&?h`Tdkies}K`Ib_1b+*y+54!(6^ zT^IISi3#5g)2O=-U)rI!aYtA*r)uQ(F+ryCmn&w{k1?>VgJ`lKa&)nTIv z)3+UN5aknpS?~e0cZo<#`p!dI(vu*itbq?iWa2A`ZJ)RU&rPN#o*$-h`+C7fNzZHC zBZj&DTo8w}Wxn;2-h+K-Z1ClKKL8g95@3|e| z_8w$pJs|HrxJPjk%=aLu1*dXVe?GS~lAuIKAq!#BBx zZ*dLZ;Tpb=y1B(Ckna|sL%ti1;dD@!JOMNyi64~2FJ%63<`>KL;FQRdK*!3NpcCXN zpp)cm(5dn?&@x#LIzv`~&XQH2bL4!`N_cy2u|Q6i0r8i<-@nQUU2&`c3uLlSHA&mQm=z9ReuCMk7HX9n=5?QMLwSh zSeN?n_s}eA%TkN#w%lq3J?MZG_X(@(`aPUuHYGmCT0;arvQV%?&KIrYqGV$M?6ZIHR#bvtMa=W1igahBZ4 zlG7}?npDgH#APn(+08EM*{fXCvs+!%v)8+*XScZ?7~&H*yB-4F>DmW+ zn@bMyiruc~K=-(w2i@!XCCc5$}cNVxw=QVgk$SvyKr1K^>X=bULX4Y~y_1bxE z8oe!eUkoGGO*1QwH^SVa(@irg?WUR4?LGr^J>LI6KrJQCtr#X+)v~Zd>&rErYsK|NAJq2G{{p*M+_@?KF zBQBO#$lTm97SW5DTCT^2yyPCk^bbs%J(l++_r*-V&-5{-Z%n*eRt=TMUM-gm9R<32 zXgTQmp%Kt)hi(A9XXtj&r-tqaeQoF)pdSvE$6YORhK&L(9##%|{ICdU`LGS34a2sB zwhr45df~7)K(8JqCtWRX8#W5`!C~c~FAj@aen z*YHtH%Rx5{kAU7Xd;{o@hHnQwFnmAg?}xtu`X9sPl&fXYh*6+ZN0ftBkBES-9I*lP zq7mCcuNkquj5M&H>EkCCh?m^1Q;3Qh;+HV>;bfuU2oF~0)9{caZqDHQx1Z&>0(pUP zfvUj5!16$ApgXWR@SVVefj<^DAH-P|#GoAR&B-O8)ElZ|5Hs92=Y!EDxR$tPh?YTor5&ZVuiU{6TPE@b|%wf`y^sp;e(vLR&)L z54{ljN5~&8437wp3Qq`64WAI66`mJv40ndNgl`GI8nz0C7L*hmTX1~AX$1=lmKB^= z&|1)5a8bdf1y>bZU+{jxX9b?ZnT2;378IRUlq&jG(cMMQ7QIvC9eVQ6dq=!H!iUoq zKkhXJ(8@gAVG4=@e3hmM=OsgNPI9Cu#*NpJI7=zzzj!yw`+cZjg7-GiQl=*}O=Z!G zyu0w=#1C`60Nu;IqP|nCVoeFk znqqp9_fBvw^4Fwje(HwAy{ zNYKlnHzhVfe@a{d4Jvq8V?eJG<3O(y$ADfhCW0=O$AO+BC!_RpK^1(k;}JfO=}K7& zPK4W@)=!x@1!rK@@Gh6&FK@Ik);K_pFh2snB z3R?>|6kb<&TjA@4e=Yp5@QXrkQLt!I(TPP%i&hrJi#FhU$&VGiTJ&a-7`k`F^CNt3 z)0d@Pz2cCcJ)`JuLgq(`a~SsJtzu}Q7wsP@eif$h5cFd{#&;oltO&o;(eg6z?7yI(>Rd{`Hk^dJEyHg6Jzm|sE8$-yW)|gUFc%^W_d%TM=VZLbbUOMUX@6;i-xX_bgVrp z7Ij4+s)JP{ykRLgdTrzc_^x~CeUf=(Tr7irerRJZbcba@4Yw4w_IIv5RT zM~Bu^Hqn%fM#cPOBn1`5W6i6}xi3t;(H)TssHGJR71O7Q_Ed8s8IP?LjXkM!v|XGT ziFfHjsw)!hoq9MRb#>JmXqUzYKxRbI7!$fW*qJs#hoXr^K#_JoS69YTorx6XHKk0! zc!{G0=&96{`OyyOq8YuXhZYGbWl__x&0QwW5>se+i<)RhYr4%`8c~~Mv_&jL|3~7n z3oy1jJCliSswIsau6nd7A*xgJVjUP^VqP-QKDQ?wO^Nx@v<@^S^tHUD1&WHacZ!N+ z0!l-D(~*wms1vYDtBkFUq01{1m=MuqCk9iusEu`q+OBvy)*0^+3!|;*6oGzBMbQmC zI?&jjNTk~u)6q`R*tHV<+?*DsqNvM)NUDuTQd2^Iv|ltO8Y1gVIMKO+lg83L0^#b8 zD7DZaR6NF02{DUlvT^w|{=u+|GSI0bqNp7-7bzLrmaddIE1FD*x{jz=40SDKx{T>r zqAA*)7Her>tXKio>W;*^4rX>G(W5l#MFnOT&zfWl##cv6dnCCUIz_X=MK7hJ%@IV+ zOT;ndMFaF76qNN9ekj6CBWb!n2L^@M#84-z8x*Ri) zr=Ko>E48HjOi|q)X=OniIK94Vz9{dAwMSTM^P?#$2ga-&9Zq8;vNl2H$gUgAn;;u! za8*Yt+Ky4&n5G)psEV53l}uv#)pey;#q5^#0ku6Eri`fCXsQiLGZUEf;Q(kt*e%SO z+Kz1|ZHl^NtTomF15%Ob>;dUWqj;F0wg`-SBP^d-5Q!y4RS(8{V_OW>t&ivg3F5#w zro`zHHtqA{iM8M@?m*9^I4K7^b^6tmw>;k277b8fV26sh*BzV^eiwAr%WVcXK4xkzy;G>_Lgz)N1<u4g{0ILl92}>ei zLJTl@4_Ry2H|#Dab|9Azf%R!(KsNLkjB+FE~|bM3Rc(24I97 z!hq+{h*^S_E|zwZaT=~`pIjLZrOrZBhN(NX-jQP$H&7gj7>KXe*{JTnlr3sOG~QxZ zPPtjU0R%a*#;lPfJtJsj7*B33*L4845ja2$7oXu%_h1P0m2Q~*gcyF72-bA19$i`C z#!eVN(vXRwD(fIOi(;@?EQzd+F79NXp%ac++8H?H991Nv;OJpN<<@oRa7A0Rc{MqV ziLNx60$anjzgpc_=hdmc`mRnLPS^ePJb;cJRv*G`E{0osnkpL&#du0>)!(9w#83v+=ZTs=3x+Ie-Ns8S}fagun$Q zJua?Ez!Jb`TN#7@(SRA7XeZYME@Zqb6nN~&L*=t%-w*r^?>J@coRyC{ubi(uM7B`5>s`)FL>Q*$AV{cJjNkMRILxsf= ze^$&kc@^;U;4rYUtLj*sGFVh%xX`!|RhUY`bdPo|jRkF_-4B#Cr6SqWnNGmg zb++}0+R78?cWzgVy`shi<=9w(WHF|la3ZmAv6&4E=fi&@pKC!h*$#7v<)t#(3YR~{ zj$=zK(g8aQF-Ao?y8$T9gtVIV_J#*@S4RhCqqC`^@vT|*_G*Q*eOwr6M`>_Ivo?{2 zXKy79JY;L4xvZL|M0H2H^hA*XS-}&_Y_PabDni*YnRL7o+fk-foYi*nwV(mf+*m8T znzS942~q^*vtzQtCeMjw*>Q(Kl$Psfr`7cv5M_#75bZWyWmMD`Wui6TmgewnMs*6T zO1O(@jF@iC&8`kBttp`uXlqF$Q)$g~_A`3#??9t$d$)r!_~fA}!G66nW}MxPU0o-p z?_os0bbUsdu*X-wWOf93AsEL^bnMY*S4^I=o|M#{R8xYj4w0q=bL=_45a%7$_1Ie_ zao~ZFj%GvE5$oo8jy)0wF!k)IZwHXtPSv;%DCl1R3sa43*UcVHS}8q}{X z6HDNhCDx_vYX$6AtfQ-2)HN;@wTX@d4(Bi-t8faGET@wf-o=)8$5M>QGd#bGx1M_K zqRnnrEU#z8V*%J6JB)?|Ha^%1>SGb^3EH|gqMS}q-4eyY3QT;XZQ>I+fWlD#+^;B~ z6KVI63?zBJ3FM?BDqaZ~(!Ls8Y!;G0Br)NT(L)0@`EI z!j5ewx8Bi+Q2`wVED=#U65~Q?jEfXDf0$r=P^PQWkE2I(BaMpHI1wWKW|FfIV$n8+ zt~mEQMBsqjETQGiG?*}~4v|U{`%CM`$&yr2Ua_ERMg8K2`Bf_xoF!_@m#(O(t2krD zlJe>%5lhu~C9%zJ6=^ypY{V&4q!oWjEelj**NkT?`0Q*7nFef5_`<1@P<=}s{QDMC z9PNr|`z8!7PbP7eNoEP>R8?`DX+-tLq&$h!L@GMUr;u4&!_utqG?84#dyLvhD?9={ zkLO0y>!O%}&WO+lWH>W`XGKSqqI@lm@silvuH$1u?48rGW}Ip0Z*awh)a` zI;Df2^==eLMX^;q2Jpdy=9hQ$)Y10N#4Jm6Y1r6|-8p4%N_4?3vW4JC6ebN_Ro{lW z1y|3p@a#AVKKon%wMTWZep8cjguOSM5 zu)}~xIIb%b-B??DXw2xUuqKS+nxgHU7(&UOx{ikE1;T;iEF8enktHoSr~~W;P6}aj zYvC`WjudQ+N1!(f)kiyMy6E##taeCC2jz6Qilado)9O^BDG4tS%Y;5=bWlUAwJq(S z1(EnFJ14Y&F=H}e=|SsR<}}ojeD-*>JI3d?X&Oj$4 zL=;C|j8mxESTYHtRgY8jxlv3@4$>!Gw^9M8!Yz`4? z9&MJG#Ua|TqUO;!&SWt$x^Tu_fm2f!T!op+DJejCaiE9&2o7sVq74?3y=Tti&Q3T8 zbW4QdvC87u2=`Qw(TUMD&=H(!0Zz~|nQNjjCX~4*u@1LofG7i{airKxCk4h}I~_Yw ziux$}pYl^+!Q#paxDe6gGzvB)IyuIK&4n^$5>jYx0_TkFHeaI*UyG=R&d`C8)flyj zP8@E<=XRyqN--qj?J$yw)^#*2v*U0KhPY`Mi#*M6|3e4Bhb+)IIW@5exnQWVEcS_|rsH7fQrV4&!$o?l_66XdHVw%!bBjq;VY_JRHHrJ4?mfDD=X2VoI4aP2ZN8 zsxPJbVwlr4D$^⁢xi?G#bL5-vV&XmmR5h6TvnwMwi!U*OgR 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 Lpa%Zm)WH7)14p@k literal 114688 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

LvercHQiKE?jlnaBNv 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 TI4*(X5;!h_;}ZD)r3C&j!fhNv From 09bf9d5fca8e9c22f3a0f5660aa55eea316853b1 Mon Sep 17 00:00:00 2001 From: "Teravus Ovares (Dan Olivares)" Date: Sat, 30 Oct 2010 02:26:48 -0400 Subject: [PATCH 15/27] * AbsolutePosition.Get{} returns incorrect result for child prim so switch to using prim.GetWorldPosition() in the warp renderer. --- OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs index 00b506ea2a..6eb57eb424 100644 --- a/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs @@ -355,7 +355,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap if (renderMesh == null) return; - warp_Vector primPos = ConvertVector(prim.AbsolutePosition); + warp_Vector primPos = ConvertVector(prim.GetWorldPosition()); warp_Quaternion primRot = ConvertQuaternion(prim.RotationOffset); warp_Matrix m = warp_Matrix.quaternionMatrix(primRot); From e98d8d500f5c0dda6e9ef8b9a0e1bddec8510d1d Mon Sep 17 00:00:00 2001 From: Melanie Date: Sat, 30 Oct 2010 19:06:47 +0100 Subject: [PATCH 16/27] Fix logins and avatar appearance. Contains a Migration. May contain nuts. This will cause visual params to be persisted along with worn items. With this, alpha and tattoo laters will be saved. Multiple layers MAY work, but not tested because I don't use Viewer 2. --- .../Data/MySQL/Resources/Avatar.migrations | 8 ++ OpenSim/Framework/AvatarAppearance.cs | 40 +++++-- OpenSim/Framework/AvatarWearable.cs | 34 ++++-- .../ClientStack/LindenUDP/LLClientView.cs | 1 + .../AvatarFactory/AvatarFactoryModule.cs | 15 ++- OpenSim/Services/Interfaces/IAvatarService.cs | 103 +++++++++++++----- .../BodyPartsLibraryItems.xml | 28 ----- 7 files changed, 153 insertions(+), 76 deletions(-) diff --git a/OpenSim/Data/MySQL/Resources/Avatar.migrations b/OpenSim/Data/MySQL/Resources/Avatar.migrations index 8d0eee68a1..f7cf1766fc 100644 --- a/OpenSim/Data/MySQL/Resources/Avatar.migrations +++ b/OpenSim/Data/MySQL/Resources/Avatar.migrations @@ -10,3 +10,11 @@ CREATE TABLE Avatars ( KEY(PrincipalID)); COMMIT; + +:VERSION 2 + +BEGIN; + +alter table Avatars change column Value Value text; + +COMMIT; diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index f0d83359ec..d0a22b23b9 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -150,7 +150,11 @@ namespace OpenSim.Framework m_attachments = new Dictionary>(); } - public AvatarAppearance(AvatarAppearance appearance) + public AvatarAppearance(AvatarAppearance appearance) : this(appearance, true) + { + } + + public AvatarAppearance(AvatarAppearance appearance, bool copyWearables) { // m_log.WarnFormat("[AVATAR APPEARANCE] create from an existing appearance"); @@ -175,7 +179,7 @@ namespace OpenSim.Framework m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; for (int i = 0 ; i < AvatarWearable.MAX_WEARABLES ; i++ ) m_wearables[i] = new AvatarWearable(); - if (appearance.Wearables != null) + if (copyWearables && (appearance.Wearables != null)) { for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) SetWearable(i,appearance.Wearables[i]); @@ -198,6 +202,28 @@ namespace OpenSim.Framework AppendAttachment(new AvatarAttachment(attachment)); } + public void GetAssetsFrom(AvatarAppearance app) + { + for (int i = 0 ; i < AvatarWearable.MAX_WEARABLES ; i++ ) + { + for (int j = 0 ; j < m_wearables[i].Count ; j++) + { + UUID itemID = m_wearables[i][j].ItemID; + UUID assetID = app.Wearables[i].GetAsset(itemID); + + if (assetID != UUID.Zero) + m_wearables[i].Add(itemID, assetID); + } + } + } + + public void ClearWearables() + { + m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; + for (int i = 0 ; i < AvatarWearable.MAX_WEARABLES ; i++ ) + m_wearables[i] = new AvatarWearable(); + } + protected virtual void SetDefaultWearables() { m_wearables = AvatarWearable.DefaultWearables; @@ -205,11 +231,11 @@ namespace OpenSim.Framework protected virtual void SetDefaultParams() { - m_visualparams = new byte[VISUALPARAM_COUNT]; - for (int i = 0; i < VISUALPARAM_COUNT; i++) - { - m_visualparams[i] = 150; - } + m_visualparams = new byte[] { 56,23,66,0,0,25,0,124,107,0,0,91,137,36,180,79,78,20,32,255,0,63,137,137,63,122,0,71,127,94,63,0,150,150,150,17,0,0,0,0,0,127,0,0,255,127,114,127,99,63,127,140,127,127,0,0,0,191,0,78,0,0,0,0,0,0,0,0,0,145,216,133,0,0,0,219,107,150,150,165,135,0,150,150,150,63,112,155,150,150,150,150,150,150,150,150,150,150,150,0,0,0,0,188,255,91,219,124,0,150,127,165,127,127,127,127,59,63,107,71,68,89,33,79,114,178,127,2,141,66,0,0,127,127,0,0,0,0,127,0,159,0,0,178,127,0,85,131,117,127,147,163,104,0,140,18,0,107,130,0,150,150,198,0,0,40,38,91,165,209,198,127,127,153,204,51,51,150,150,255,204,0,150,150,150,150,150,150,150,150,150,150,150,0,150,150,150,150,150,0,127,22,150,150,150,150,150,150,150,150,0,0,150,51,132,150,150,150 }; +// for (int i = 0; i < VISUALPARAM_COUNT; i++) +// { +// m_visualparams[i] = 150; +// } } protected virtual void SetDefaultTexture() diff --git a/OpenSim/Framework/AvatarWearable.cs b/OpenSim/Framework/AvatarWearable.cs index 0a02dcfc46..efec50b71f 100644 --- a/OpenSim/Framework/AvatarWearable.cs +++ b/OpenSim/Framework/AvatarWearable.cs @@ -82,12 +82,13 @@ namespace OpenSim.Framework public static readonly UUID DEFAULT_PANTS_ITEM = new UUID("77c41e39-38f9-f75a-0000-5859892f1111"); public static readonly UUID DEFAULT_PANTS_ASSET = new UUID("00000000-38f9-1111-024e-222222111120"); - public static readonly UUID DEFAULT_ALPHA_ITEM = new UUID("bfb9923c-4838-4d2d-bf07-608c5b1165c8"); - public static readonly UUID DEFAULT_ALPHA_ASSET = new UUID("1578a2b1-5179-4b53-b618-fe00ca5a5594"); +// public static readonly UUID DEFAULT_ALPHA_ITEM = new UUID("bfb9923c-4838-4d2d-bf07-608c5b1165c8"); +// public static readonly UUID DEFAULT_ALPHA_ASSET = new UUID("1578a2b1-5179-4b53-b618-fe00ca5a5594"); - public static readonly UUID DEFAULT_TATTOO_ITEM = new UUID("c47e22bd-3021-4ba4-82aa-2b5cb34d35e1"); - public static readonly UUID DEFAULT_TATTOO_ASSET = new UUID("00000000-0000-2222-3333-100000001007"); +// public static readonly UUID DEFAULT_TATTOO_ITEM = new UUID("c47e22bd-3021-4ba4-82aa-2b5cb34d35e1"); +// public static readonly UUID DEFAULT_TATTOO_ASSET = new UUID("00000000-0000-2222-3333-100000001007"); + private static AvatarWearable[] defaultWearables = null; protected Dictionary m_items = new Dictionary(); protected List m_ids = new List(); @@ -152,6 +153,11 @@ namespace OpenSim.Framework m_items[itemID] = assetID; } + public void Wear(WearableItem item) + { + Wear(item.ItemID, item.AssetID); + } + public void Wear(UUID itemID, UUID assetID) { Clear(); @@ -204,11 +210,21 @@ namespace OpenSim.Framework } } + public UUID GetAsset(UUID itemID) + { + if (!m_items.ContainsKey(itemID)) + return UUID.Zero; + return m_items[itemID]; + } + public static AvatarWearable[] DefaultWearables { get { - AvatarWearable[] defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 15 of these + if (defaultWearables != null) + return defaultWearables; + + defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 15 of these for (int i = 0; i < MAX_WEARABLES; i++) { defaultWearables[i] = new AvatarWearable(); @@ -229,11 +245,11 @@ namespace OpenSim.Framework // Pants defaultWearables[PANTS].Add(DEFAULT_PANTS_ITEM, DEFAULT_PANTS_ASSET); - // Alpha - defaultWearables[ALPHA].Add(DEFAULT_ALPHA_ITEM, DEFAULT_ALPHA_ASSET); +// // Alpha +// defaultWearables[ALPHA].Add(DEFAULT_ALPHA_ITEM, DEFAULT_ALPHA_ASSET); - // Tattoo - defaultWearables[TATTOO].Add(DEFAULT_TATTOO_ITEM, DEFAULT_TATTOO_ASSET); +// // Tattoo +// defaultWearables[TATTOO].Add(DEFAULT_TATTOO_ITEM, DEFAULT_TATTOO_ASSET); return defaultWearables; } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index d7458b7bce..4aa19d1009 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -5734,6 +5734,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP AvatarWearingArgs wearingArgs = new AvatarWearingArgs(); for (int i = 0; i < nowWearing.WearableData.Length; i++) { + m_log.DebugFormat("[XXX]: Wearable type {0} item {1}", nowWearing.WearableData[i].WearableType, nowWearing.WearableData[i].ItemID); AvatarWearingArgs.Wearable wearable = new AvatarWearingArgs.Wearable(nowWearing.WearableData[i].ItemID, nowWearing.WearableData[i].WearableType); diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 6cbd8bdf58..7f482cb890 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -356,17 +356,16 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory // m_log.WarnFormat("[AVATAR FACTORY MODULE]: AvatarIsWearing called for {0}",client.AgentId); - AvatarAppearance avatAppearance = new AvatarAppearance(sp.Appearance); + AvatarAppearance avatAppearance = new AvatarAppearance(sp.Appearance, false); foreach (AvatarWearingArgs.Wearable wear in e.NowWearing) { if (wear.Type < AvatarWearable.MAX_WEARABLES) - { - AvatarWearable newWearable = new AvatarWearable(wear.ItemID,UUID.Zero); - avatAppearance.SetWearable(wear.Type, newWearable); - } + avatAppearance.Wearables[wear.Type].Add(wear.ItemID,UUID.Zero); } + avatAppearance.GetAssetsFrom(sp.Appearance); + // This could take awhile since it needs to pull inventory SetAppearanceAssets(sp.UUID, ref avatAppearance); @@ -384,6 +383,12 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory { for (int j = 0 ; j < appearance.Wearables[j].Count ; j ++ ) { + if (appearance.Wearables[i][j].ItemID == UUID.Zero) + continue; + + // Ignore ruth's assets + if (appearance.Wearables[i][j].ItemID == AvatarWearable.DefaultWearables[i][0].ItemID) + continue; InventoryItemBase baseItem = new InventoryItemBase(appearance.Wearables[i][j].ItemID, userID); baseItem = invService.GetItem(baseItem); diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index 186871a299..860a13b0c0 100644 --- a/OpenSim/Services/Interfaces/IAvatarService.cs +++ b/OpenSim/Services/Interfaces/IAvatarService.cs @@ -149,33 +149,28 @@ namespace OpenSim.Services.Interfaces Data["Serial"] = appearance.Serial.ToString(); // Wearables Data["AvatarHeight"] = appearance.AvatarHeight.ToString(); - Data["BodyItem"] = appearance.Wearables[AvatarWearable.BODY][0].ItemID.ToString(); - Data["EyesItem"] = appearance.Wearables[AvatarWearable.EYES][0].ItemID.ToString(); - Data["GlovesItem"] = appearance.Wearables[AvatarWearable.GLOVES][0].ItemID.ToString(); - Data["HairItem"] = appearance.Wearables[AvatarWearable.HAIR][0].ItemID.ToString(); - Data["JacketItem"] = appearance.Wearables[AvatarWearable.JACKET][0].ItemID.ToString(); - Data["PantsItem"] = appearance.Wearables[AvatarWearable.PANTS][0].ItemID.ToString(); - Data["ShirtItem"] = appearance.Wearables[AvatarWearable.SHIRT][0].ItemID.ToString(); - Data["ShoesItem"] = appearance.Wearables[AvatarWearable.SHOES][0].ItemID.ToString(); - Data["SkinItem"] = appearance.Wearables[AvatarWearable.SKIN][0].ItemID.ToString(); - Data["SkirtItem"] = appearance.Wearables[AvatarWearable.SKIRT][0].ItemID.ToString(); - Data["SocksItem"] = appearance.Wearables[AvatarWearable.SOCKS][0].ItemID.ToString(); - Data["UnderPantsItem"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].ItemID.ToString(); - Data["UnderShirtItem"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].ItemID.ToString(); - Data["BodyAsset"] = appearance.Wearables[AvatarWearable.BODY][0].AssetID.ToString(); - Data["EyesAsset"] = appearance.Wearables[AvatarWearable.EYES][0].AssetID.ToString(); - Data["GlovesAsset"] = appearance.Wearables[AvatarWearable.GLOVES][0].AssetID.ToString(); - Data["HairAsset"] = appearance.Wearables[AvatarWearable.HAIR][0].AssetID.ToString(); - Data["JacketAsset"] = appearance.Wearables[AvatarWearable.JACKET][0].AssetID.ToString(); - Data["PantsAsset"] = appearance.Wearables[AvatarWearable.PANTS][0].AssetID.ToString(); - Data["ShirtAsset"] = appearance.Wearables[AvatarWearable.SHIRT][0].AssetID.ToString(); - Data["ShoesAsset"] = appearance.Wearables[AvatarWearable.SHOES][0].AssetID.ToString(); - Data["SkinAsset"] = appearance.Wearables[AvatarWearable.SKIN][0].AssetID.ToString(); - Data["SkirtAsset"] = appearance.Wearables[AvatarWearable.SKIRT][0].AssetID.ToString(); - Data["SocksAsset"] = appearance.Wearables[AvatarWearable.SOCKS][0].AssetID.ToString(); - Data["UnderPantsAsset"] = appearance.Wearables[AvatarWearable.UNDERPANTS][0].AssetID.ToString(); - Data["UnderShirtAsset"] = appearance.Wearables[AvatarWearable.UNDERSHIRT][0].AssetID.ToString(); + for (int i = 0 ; i < AvatarWearable.MAX_WEARABLES ; i++) + { + for (int j = 0 ; j < appearance.Wearables[i].Count ; j++) + { + string fieldName = String.Format("Wearable {0}:{1}", i, j); + Data[fieldName] = String.Format("{0}:{1}", + appearance.Wearables[i][j].ItemID.ToString(), + appearance.Wearables[i][j].AssetID.ToString()); + } + } + + // Visual Params + string[] vps = new string[AvatarAppearance.VISUALPARAM_COUNT]; + byte[] binary = appearance.VisualParams; + + for (int i = 0 ; i < AvatarAppearance.VISUALPARAM_COUNT ; i++) + { + vps[i] = binary[i].ToString(); + } + + Data["VisualParams"] = String.Join(",", vps); // Attachments List attachments = appearance.GetAttachments(); @@ -188,12 +183,17 @@ namespace OpenSim.Services.Interfaces public AvatarAppearance ToAvatarAppearance(UUID owner) { AvatarAppearance appearance = new AvatarAppearance(owner); + + if (Data.Count == 0) + return appearance; + + appearance.ClearWearables(); try { if (Data.ContainsKey("Serial")) appearance.Serial = Int32.Parse(Data["Serial"]); - // Wearables + // Legacy Wearables if (Data.ContainsKey("BodyItem")) appearance.Wearables[AvatarWearable.BODY].Wear( UUID.Parse(Data["BodyItem"]), @@ -260,6 +260,35 @@ namespace OpenSim.Services.Interfaces UUID.Parse(Data["SkirtAsset"])); + if (Data.ContainsKey("VisualParams")) + { + string[] vps = Data["VisualParams"].Split(new char[] {','}); + byte[] binary = new byte[AvatarAppearance.VISUALPARAM_COUNT]; + + for (int i = 0 ; i < vps.Length && i < binary.Length ; i++) + binary[i] = (byte)Convert.ToInt32(vps[i]); + + appearance.VisualParams = binary; + } + + // New style wearables + foreach (KeyValuePair _kvp in Data) + { + if (_kvp.Key.StartsWith("Wearable ")) + { + string wearIndex = _kvp.Key.Substring(9); + string[] wearIndices = wearIndex.Split(new char[] {':'}); + int index = Convert.ToInt32(wearIndices[0]); + + string[] ids = _kvp.Value.Split(new char[] {':'}); + UUID itemID = new UUID(ids[0]); + UUID assetID = new UUID(ids[1]); + + appearance.Wearables[index].Add(itemID, assetID); + } + } + + // Attachments Dictionary attchs = new Dictionary(); foreach (KeyValuePair _kvp in Data) @@ -278,6 +307,26 @@ namespace OpenSim.Services.Interfaces appearance.SetAttachment(point,uuid,UUID.Zero); } + + if (appearance.Wearables[AvatarWearable.BODY].Count == 0) + appearance.Wearables[AvatarWearable.BODY].Wear( + AvatarWearable.DefaultWearables[ + AvatarWearable.BODY][0]); + + if (appearance.Wearables[AvatarWearable.SKIN].Count == 0) + appearance.Wearables[AvatarWearable.SKIN].Wear( + AvatarWearable.DefaultWearables[ + AvatarWearable.SKIN][0]); + + if (appearance.Wearables[AvatarWearable.HAIR].Count == 0) + appearance.Wearables[AvatarWearable.HAIR].Wear( + AvatarWearable.DefaultWearables[ + AvatarWearable.HAIR][0]); + + if (appearance.Wearables[AvatarWearable.EYES].Count == 0) + appearance.Wearables[AvatarWearable.EYES].Wear( + AvatarWearable.DefaultWearables[ + AvatarWearable.EYES][0]); } catch { diff --git a/bin/inventory/BodyPartsLibrary/BodyPartsLibraryItems.xml b/bin/inventory/BodyPartsLibrary/BodyPartsLibraryItems.xml index 5cb71c0bbe..aa8d9d964b 100644 --- a/bin/inventory/BodyPartsLibrary/BodyPartsLibraryItems.xml +++ b/bin/inventory/BodyPartsLibrary/BodyPartsLibraryItems.xml @@ -16,34 +16,6 @@ -->