public List<GroupRolesData> GetGroupRoles(UUID requestingAgentID, UUID groupID)
        {
            if (m_debugEnabled)
                MainConsole.Instance.InfoFormat("[SIMIAN-GROUPS-CONNECTOR]  {0} called", MethodBase.GetCurrentMethod().Name);

            List<GroupRolesData> Roles = new List<GroupRolesData>();

            Dictionary<string, OSDMap> GroupRoles;
            if (SimianGetGenericEntries(groupID, "GroupRole", out GroupRoles))
            {
                foreach (KeyValuePair<string, OSDMap> role in GroupRoles)
                {
                    GroupRolesData data = new GroupRolesData
                                              {
                                                  RoleID = UUID.Parse(role.Key),
                                                  Name = role.Value["Name"].AsString(),
                                                  Description = role.Value["Description"].AsString(),
                                                  Title = role.Value["Title"].AsString(),
                                                  Powers = role.Value["Powers"].AsULong()
                                              };

                    Dictionary<UUID, OSDMap> GroupRoleMembers;
                    data.Members = SimianGetGenericEntries("GroupRole" + groupID.ToString(), role.Key, out GroupRoleMembers) ? GroupRoleMembers.Count : 0;

                    Roles.Add(data);
                }
            }

            return Roles;
        }
        public List<GroupRolesData> GetAgentGroupRoles(UUID requestingAgentID, UUID agentID, UUID groupID)
        {
            if (m_debugEnabled)
                MainConsole.Instance.InfoFormat("[SIMIAN-GROUPS-CONNECTOR]  {0} called", MethodBase.GetCurrentMethod().Name);

            List<GroupRolesData> Roles = new List<GroupRolesData>();

            Dictionary<string, OSDMap> GroupRoles;
            if (SimianGetGenericEntries(groupID, "GroupRole", out GroupRoles))
            {
                Dictionary<string, OSDMap> MemberRoles;
                if (SimianGetGenericEntries(agentID, "GroupRole" + groupID.ToString(), out MemberRoles))
                {
            #if (!ISWIN)
                    foreach (KeyValuePair<string, OSDMap> kvp in MemberRoles)
                    {
                        GroupRolesData data = new GroupRolesData();
                        data.RoleID = UUID.Parse(kvp.Key);
                        data.Name = GroupRoles[kvp.Key]["Name"].AsString();
                        data.Description = GroupRoles[kvp.Key]["Description"].AsString();
                        data.Title = GroupRoles[kvp.Key]["Title"].AsString();
                        data.Powers = GroupRoles[kvp.Key]["Powers"].AsULong();

                        Roles.Add(data);
                    }
            #else
                    Roles.AddRange(MemberRoles.Select(kvp => new GroupRolesData
                                                                 {
                                                                     RoleID = UUID.Parse(kvp.Key),
                                                                     Name = GroupRoles[kvp.Key]["Name"].AsString(),
                                                                     Description =
                                                                         GroupRoles[kvp.Key]["Description"].AsString(),
                                                                     Title = GroupRoles[kvp.Key]["Title"].AsString(),
                                                                     Powers = GroupRoles[kvp.Key]["Powers"].AsULong()
                                                                 }));
            #endif
                }
            }
            return Roles;
        }