diff --git a/.hgtags b/.hgtags
index d177b462fdf52b9ca0ae0536a4d08ff20be501f4..8fa56c75b70eb896f37dc53f6bc335fd588c0293 100644
--- a/.hgtags
+++ b/.hgtags
@@ -67,3 +67,7 @@ db0fe9bb65187f365e58a717dd23d0f4754a9c1d DRTVWR-17_2.3.0-beta2
 54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f DRTVWR-33_2.5.0-beta2
 b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-beta3
 b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-34_2.5.0-beta3
+b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-release
+b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-31_2.5.0-release
+92e58e51776a4f8c29069b1a62ff21454d2085f0 2.6.0-start
+63a6aedfce785a6c760377bf685b2dae616797d2 2.5.1-start
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 516760aa5a6ee15e4c97dee6a06ada3d5d4a4456..e94acb566ac5c921f185400c431005d775d6a41a 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -86,6 +86,7 @@ Aleric Inglewood
 	VWR-24320
     VWR-24321
  	VWR-24354
+	VWR-24366
 	VWR-24519
 	SNOW-84
 	SNOW-477
@@ -155,6 +156,7 @@ Ann Congrejo
 	CT-193
 Ardy Lay
 	VWR-19499
+	VWR-24917
 Argent Stonecutter
 	VWR-68
 Armin Weatherwax
@@ -189,6 +191,7 @@ Blakar Ogre
 blino Nakamura
 	VWR-17
 Boroondas Gupte
+	OPEN-29
 	SNOW-278
 	SNOW-503
 	SNOW-510
@@ -391,13 +394,19 @@ Jonathan Yap
 	STORM-812
 	STORM-829
 	STORM-844
+	STORM-953
+	STORM-954
+	STORM-960
 	STORM-869
+	STORM-974
+	STORM-975
+	STORM-977
+	STORM-979
+	STORM-980
+	STORM-1040
 	VWR-17801
 	VWR-24347
-	STORM-844
-	STORM-643
-	STORM-960
-	STORM-953
+	STORM-990
 Kage Pixel
 	VWR-11
 Ken March
@@ -784,6 +793,7 @@ Twisted Laws
 	STORM-467
 	STORM-844
 	STORM-643
+	STORM-954
 Vadim Bigbear
 	VWR-2681
 Vector Hastings
@@ -824,6 +834,7 @@ WolfPup Lowenhar
 	STORM-102
 	STORM-103
 	STORM-143
+	STORM-236
 	STORM-255
 	STORM-256
 	STORM-288
diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index 6d17a6f402efbf917fe8a24a51fa25fe70fbefb3..7ba43f4b134c7a12c7e3fbd69ec45894e1469d93 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -72,9 +72,9 @@ if (VIEWER)
   add_subdirectory(${LIBS_OPEN_PREFIX}media_plugins)
 
   # llplugin testbed code (is this the right way to include it?)
-  if (NOT LINUX)
+  if (LL_TESTS AND NOT LINUX)
     add_subdirectory(${VIEWER_PREFIX}test_apps/llplugintest)
-  endif (NOT LINUX)
+  endif (LL_TESTS AND NOT LINUX)
 
   if (LINUX)
     add_subdirectory(${VIEWER_PREFIX}linux_crash_logger)
diff --git a/indra/cmake/GoogleMock.cmake b/indra/cmake/GoogleMock.cmake
index ca5a8034ba442082c5881ec4c046ebe4b7a777e9..06d6d847a05b82bb96b6ef3a0bf859d9b89fa0cb 100644
--- a/indra/cmake/GoogleMock.cmake
+++ b/indra/cmake/GoogleMock.cmake
@@ -8,9 +8,10 @@ set(GOOGLEMOCK_INCLUDE_DIRS
     ${LIBS_PREBUILT_DIR}/include)
 
 if (LINUX)
+	# VWR-24366: gmock is underlinked, it needs gtest.
     set(GOOGLEMOCK_LIBRARIES 
-        gmock  
-        gtest)
+        gmock -Wl,--no-as-needed
+        gtest -Wl,--as-needed)
 elseif(WINDOWS)
     set(GOOGLEMOCK_LIBRARIES 
         gmock)
diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake
index 05f0492234f059146f38ef586295707ef3456cff..cd0eada2d0dbddc0fa804cfe04731cd2bdff1b45 100644
--- a/indra/cmake/LLAddBuildTest.cmake
+++ b/indra/cmake/LLAddBuildTest.cmake
@@ -57,11 +57,6 @@ INCLUDE(GoogleMock)
     ${CMAKE_SOURCE_DIR}/test/test.h
     )
 
-  # Use the default flags
-  if (LINUX)
-    SET(CMAKE_EXE_LINKER_FLAGS "")
-  endif (LINUX)
-
   # start the source test executable definitions
   SET(${project}_TEST_OUTPUT "")
   FOREACH (source ${sources})
diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py
index 37aa75e364663c675a33f2fa109102c964d7f3d2..320a9be8abb9aaeaadaaa6a4491913211aafcad5 100644
--- a/indra/cmake/run_build_test.py
+++ b/indra/cmake/run_build_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 """\
 @file   run_build_test.py
 @author Nat Goodspeed
diff --git a/indra/copy_win_scripts/start-client.py b/indra/copy_win_scripts/start-client.py
index 5f7ff2f293fa4618a832b498a0b6dae73c9720aa..5699f5273f4b88b337d15139262a753bd3c3a151 100644
--- a/indra/copy_win_scripts/start-client.py
+++ b/indra/copy_win_scripts/start-client.py
@@ -1,4 +1,28 @@
 #!/usr/bin/env python
+"""\
+@file   start-client.py
+
+$LicenseInfo:firstyear=2010&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2010-2011, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
 import sys, getopt
 import os
 import llstart
diff --git a/indra/develop.py b/indra/develop.py
index 36c947327aefd933e120baa76cc843a9d403e5bd..d9a66352f339f6b03e450da20fcf1af4048c6998 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -1,29 +1,30 @@
 #!/usr/bin/env python
-#
-# @file develop.py
-# @authors Bryan O'Sullivan, Mark Palange, Aaron Brashears
-# @brief Fire and forget script to appropriately configure cmake for SL.
-#
-# $LicenseInfo:firstyear=2007&license=viewerlgpl$
-# Second Life Viewer Source Code
-# Copyright (C) 2010, Linden Research, Inc.
-# 
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation;
-# version 2.1 of the License only.
-# 
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-# 
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-# 
-# Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
-# $/LicenseInfo$
+"""\
+@file develop.py
+@authors Bryan O'Sullivan, Mark Palange, Aaron Brashears
+@brief Fire and forget script to appropriately configure cmake for SL.
+
+$LicenseInfo:firstyear=2007&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2007-2011, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
 
 
 import errno
diff --git a/indra/lib/python/indra/util/llperformance.py b/indra/lib/python/indra/util/llperformance.py
index 7c52730b5e049f40596cbdc21e6a2fc5acab9158..57dd64de3fa04706eb69793361180cf52dee0fe3 100755
--- a/indra/lib/python/indra/util/llperformance.py
+++ b/indra/lib/python/indra/util/llperformance.py
@@ -1,4 +1,28 @@
-#!/usr/bin/python
+#!/usr/bin/env python
+"""\
+@file   llperformance.py
+
+$LicenseInfo:firstyear=2010&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2010-2011, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
 
 # ------------------------------------------------
 # Sim metrics utility functions.
diff --git a/indra/lib/python/indra/util/llversion.py b/indra/lib/python/indra/util/llversion.py
index 2718a85f414cb958db30e8035bf21742583a084b..ba6f567b607f43792231d18a19857068d587f408 100644
--- a/indra/lib/python/indra/util/llversion.py
+++ b/indra/lib/python/indra/util/llversion.py
@@ -1,7 +1,9 @@
-"""@file llversion.py
-@brief Utility for parsing llcommon/llversion${server}.h
-       for the version string and channel string
-       Utility that parses hg or svn info for branch and revision
+#!/usr/bin/env python
+"""\
+@file  llversion.py
+@brief Parses llcommon/llversionserver.h and llcommon/llversionviewer.h
+       for the version string and channel string.
+       Parses hg info for branch and revision.
 
 $LicenseInfo:firstyear=2006&license=mit$
 
@@ -27,7 +29,7 @@
 $/LicenseInfo$
 """
 
-import re, sys, os, commands
+import re, sys, os, subprocess
 
 # Methods for gathering version information from
 # llversionviewer.h and llversionserver.h
@@ -73,29 +75,13 @@ def get_viewer_channel():
 def get_server_channel():
     return get_channel('server')
 
-# Methods for gathering subversion information
-def get_svn_status_matching(regular_expression):
-    # Get the subversion info from the working source tree
-    status, output = commands.getstatusoutput('svn info %s' % get_src_root())
-    m = regular_expression.search(output)
-    if not m:
-        print >> sys.stderr, "Failed to parse svn info output, result follows:"
-        print >> sys.stderr, output
-        raise Exception, "No matching svn status in "+src_root
-    return m.group(1)
-
-def get_svn_branch():
-    branch_re = re.compile('URL: (\S+)')
-    return get_svn_status_matching(branch_re)
-
-def get_svn_revision():
-    last_rev_re = re.compile('Last Changed Rev: (\d+)')
-    return get_svn_status_matching(last_rev_re)
-
+# Methods for gathering hg information
 def get_hg_repo():
-    status, output = commands.getstatusoutput('hg showconfig paths.default')
+    child = subprocess.Popen(["hg","showconfig","paths.default"], stdout=subprocess.PIPE)
+    output, error = child.communicate()
+    status = child.returncode
     if status:
-        print >> sys.stderr, output
+        print >> sys.stderr, error
         sys.exit(1)
     if not output:
         print >> sys.stderr, 'ERROR: cannot find repo we cloned from'
@@ -103,24 +89,19 @@ def get_hg_repo():
     return output
 
 def get_hg_changeset():
-    # The right thing to do:
-    # status, output = commands.getstatusoutput('hg id -i')
-    # if status:
-    #     print >> sys.stderr, output
-    #    sys.exit(1)
-
-    # The temporary hack:
-    status, output = commands.getstatusoutput('hg parents --template "{rev}"')
+    # The right thing to do would be to use the *global* revision id:
+    #     "hg id -i"
+    # For the moment though, we use the parent revision:
+    child = subprocess.Popen(["hg","parents","--template","{rev}"], stdout=subprocess.PIPE)
+    output, error = child.communicate()
+    status = child.returncode
     if status:
-        print >> sys.stderr, output
+        print >> sys.stderr, error
         sys.exit(1)
     lines = output.splitlines()
     if len(lines) > 1:
         print >> sys.stderr, 'ERROR: working directory has %d parents' % len(lines)
     return lines[0]
 
-def using_svn():
-    return os.path.isdir(os.path.join(get_src_root(), '.svn'))
-
 def using_hg():
     return os.path.isdir(os.path.join(get_src_root(), '.hg'))
diff --git a/indra/lib/python/indra/util/simperf_proc_interface.py b/indra/lib/python/indra/util/simperf_proc_interface.py
index da6304a2742435dc30bb8da49452053d9f38b734..de061f68ccfda36277b0bb2f558d464c03b3bcc7 100755
--- a/indra/lib/python/indra/util/simperf_proc_interface.py
+++ b/indra/lib/python/indra/util/simperf_proc_interface.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 """\
 @file simperf_proc_interface.py
 @brief Utility to extract log messages from *.<pid>.llsd files containing performance statistics.
diff --git a/indra/lib/python/indra/util/test_win32_manifest.py b/indra/lib/python/indra/util/test_win32_manifest.py
index da8ee6c545741a56a43d849f0f68420b4f3d2df9..0532cb006537df4af76d63a521bcd223f8d31b2c 100644
--- a/indra/lib/python/indra/util/test_win32_manifest.py
+++ b/indra/lib/python/indra/util/test_win32_manifest.py
@@ -1,28 +1,29 @@
 #!/usr/bin/env python
-# @file test_win32_manifest.py
-# @brief Test an assembly binding version and uniqueness in a windows dll or exe.  
-#
-# $LicenseInfo:firstyear=2009&license=viewerlgpl$
-# Second Life Viewer Source Code
-# Copyright (C) 2010, Linden Research, Inc.
-# 
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation;
-# version 2.1 of the License only.
-# 
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-# 
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-# 
-# Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
-# $/LicenseInfo$
-
+"""\
+@file test_win32_manifest.py
+@brief Test an assembly binding version and uniqueness in a windows dll or exe.  
+
+$LicenseInfo:firstyear=2009&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2009-2011, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
 import sys, os
 import tempfile
 from xml.dom.minidom import parse
diff --git a/indra/llcommon/llavatarname.cpp b/indra/llcommon/llavatarname.cpp
index ad1845d387a29614ad5956fba454dcdccd9aa236..ba3dd6d6b4c0c7e86325e3627668d1cf54360f95 100644
--- a/indra/llcommon/llavatarname.cpp
+++ b/indra/llcommon/llavatarname.cpp
@@ -90,14 +90,16 @@ void LLAvatarName::fromLLSD(const LLSD& sd)
 std::string LLAvatarName::getCompleteName() const
 {
 	std::string name;
-	if (!mUsername.empty())
+	if (mUsername.empty() || mIsDisplayNameDefault)
+	// If the display name feature is off
+	// OR this particular display name is defaulted (i.e. based on user name),
+	// then display only the easier to read instance of the person's name.
 	{
-		name = mDisplayName + " (" + mUsername + ")";
+		name = mDisplayName;
 	}
 	else
 	{
-		// ...display names are off, legacy name is in mDisplayName
-		name = mDisplayName;
+		name = mDisplayName + " (" + mUsername + ")";
 	}
 	return name;
 }
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index 7d5afe92dcbfcde6b78616a1e621e6f60062b6d4..15e3ffe1dafc6952694210606d399889d07e91b0 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -28,8 +28,8 @@
 #define LL_LLVERSIONVIEWER_H
 
 const S32 LL_VERSION_MAJOR = 2;
-const S32 LL_VERSION_MINOR = 6;
-const S32 LL_VERSION_PATCH = 0;
+const S32 LL_VERSION_MINOR = 5;
+const S32 LL_VERSION_PATCH = 2;
 const S32 LL_VERSION_BUILD = 0;
 
 const char * const LL_CHANNEL = "Second Life Developer";
diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp
index 488bd45d8f2aeb1836f78509a5e51a2ef2bd60ca..0a4cd51ea091a7e44a7a6faeb66e86b9e0658a4c 100644
--- a/indra/llinventory/llparcel.cpp
+++ b/indra/llinventory/llparcel.cpp
@@ -72,6 +72,7 @@ static const std::string PARCEL_CATEGORY_STRING[LLParcel::C_COUNT] =
     "shopping",
     "stage",
     "other",
+	"rental"
 };
 static const std::string PARCEL_CATEGORY_UI_STRING[LLParcel::C_COUNT + 1] =
 {
@@ -89,6 +90,7 @@ static const std::string PARCEL_CATEGORY_UI_STRING[LLParcel::C_COUNT + 1] =
     "Shopping",
     "Stage",
     "Other",
+	"Rental",
     "Any",	 // valid string for parcel searches
 };
 
@@ -188,8 +190,6 @@ void LLParcel::init(const LLUUID &owner_id,
 	mMediaID.setNull();
 	mMediaAutoScale = 0;
 	mMediaLoop = TRUE;
-	mObscureMedia = 1;
-	mObscureMusic = 1;
 	mMediaWidth = 0;
 	mMediaHeight = 0;
 	setMediaCurrentURL(LLStringUtil::null);
@@ -685,8 +685,8 @@ void LLParcel::packMessage(LLSD& msg)
 	msg["auto_scale"] = getMediaAutoScale();
 	msg["media_loop"] = getMediaLoop();
 	msg["media_current_url"] = getMediaCurrentURL();
-	msg["obscure_media"] = getObscureMedia();
-	msg["obscure_music"] = getObscureMusic();
+	msg["obscure_media"] = false; // OBSOLETE - no longer used
+	msg["obscure_music"] = false; // OBSOLETE - no longer used
 	msg["media_id"] = getMediaID();
 	msg["media_allow_navigate"] = getMediaAllowNavigate();
 	msg["media_prevent_camera_zoom"] = getMediaPreventCameraZoom();
@@ -750,16 +750,13 @@ void LLParcel::unpackMessage(LLMessageSystem* msg)
 		msg->getS32("MediaData", "MediaWidth", mMediaWidth);
 		msg->getS32("MediaData", "MediaHeight", mMediaHeight);
 		msg->getU8 ( "MediaData", "MediaLoop", mMediaLoop );
-		msg->getU8 ( "MediaData", "ObscureMedia", mObscureMedia );
-		msg->getU8 ( "MediaData", "ObscureMusic", mObscureMusic );
+		// the ObscureMedia and ObscureMusic flags previously set here are no longer used
 	}
 	else
 	{
 		setMediaType(std::string("video/vnd.secondlife.qt.legacy"));
 		setMediaDesc(std::string("No Description available without Server Upgrade"));
 		mMediaLoop = true;
-		mObscureMedia = true;
-		mObscureMusic = true;
 	}
 
 	if(msg->getNumberOfBlocks("MediaLinkSharing") > 0)
@@ -1225,8 +1222,6 @@ void LLParcel::clearParcel()
     setMediaDesc(LLStringUtil::null);
 	setMediaAutoScale(0);
 	setMediaLoop(TRUE);
-	mObscureMedia = 1;
-	mObscureMusic = 1;
 	mMediaWidth = 0;
 	mMediaHeight = 0;
 	setMediaCurrentURL(LLStringUtil::null);
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index ae301af9f5ecc41ca4aa36db5d971be2f5864309..71b65d99ced3c90a4a879b443d9bb481f68590dc 100644
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -165,6 +165,7 @@ class LLParcel
 		C_SHOPPING,
 		C_STAGE,
 		C_OTHER,
+		C_RENTAL,
 		C_COUNT,
 		C_ANY = -1		// only useful in queries
 	};
@@ -238,8 +239,6 @@ class LLParcel
 	void	setMediaID(const LLUUID& id) { mMediaID = id; }
 	void	setMediaAutoScale ( U8 flagIn ) { mMediaAutoScale = flagIn; }
 	void    setMediaLoop (U8 loop) { mMediaLoop = loop; }
-	void	setObscureMedia( U8 flagIn ) { mObscureMedia = flagIn; }
-	void	setObscureMusic( U8 flagIn ) { mObscureMusic = flagIn; }
 	void setMediaWidth(S32 width);
 	void setMediaHeight(S32 height);
 	void setMediaCurrentURL(const std::string& url);
@@ -346,8 +345,6 @@ class LLParcel
 	U8				getMediaAutoScale() const	{ return mMediaAutoScale; }
 	U8              getMediaLoop() const        { return mMediaLoop; }
 	const std::string&  getMediaCurrentURL() const { return mMediaCurrentURL; }
-	U8				getObscureMedia() const		{ return mObscureMedia; }
-	U8				getObscureMusic() const		{ return mObscureMusic; }
 	U8              getMediaURLFilterEnable() const   { return mMediaURLFilterEnable; }
 	LLSD            getMediaURLFilterList() const     { return mMediaURLFilterList; }
 	U8              getMediaAllowNavigate() const { return mMediaAllowNavigate; }
@@ -636,8 +633,6 @@ class LLParcel
 	U8					mMediaAutoScale;
 	U8                  mMediaLoop;
 	std::string         mMediaCurrentURL;
-	U8					mObscureMedia;
-	U8					mObscureMusic;
 	LLUUID				mMediaID;
 	U8                  mMediaURLFilterEnable;
 	LLSD                mMediaURLFilterList;
diff --git a/indra/llmessage/tests/llhost_test.cpp b/indra/llmessage/tests/llhost_test.cpp
index b20bceae1de5ec431ba2e4df9aae40be3727f0ea..705473b0c083d8766c358580d5c831e04d25347c 100644
--- a/indra/llmessage/tests/llhost_test.cpp
+++ b/indra/llmessage/tests/llhost_test.cpp
@@ -152,7 +152,7 @@ namespace tut
 	void host_object::test<9>()
 	{
 //		skip("setHostByName(\"google.com\"); getHostName() -> (e.g.) \"yx-in-f100.1e100.net\"");
-		std::string hostStr = "linux.org";		
+		std::string hostStr = "lindenlab.com";		
 		LLHost host;
 		host.setHostByName(hostStr);	
 
diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py
index 7eb198bb34f47ac729e320bec64801f7d4444969..580ee7f8b44cb7ece17ee60077238883dce8bd78 100644
--- a/indra/llmessage/tests/test_llsdmessage_peer.py
+++ b/indra/llmessage/tests/test_llsdmessage_peer.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 """\
 @file   test_llsdmessage_peer.py
 @author Nat Goodspeed
diff --git a/indra/llmessage/tests/testrunner.py b/indra/llmessage/tests/testrunner.py
index 4d58ef71301b9db5aea8d991053d1004361aa1ff..b70ce91ee7beecc1e68471c6e51e380a4a352b3f 100644
--- a/indra/llmessage/tests/testrunner.py
+++ b/indra/llmessage/tests/testrunner.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 """\
 @file   testrunner.py
 @author Nat Goodspeed
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 02160b09c4fcc21ca644fb2da60d182c791d9d7f..1beb74eca6d7282cfcc98b133254cee9880c3258 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -47,6 +47,7 @@ U32 LLVertexBuffer::sSetCount = 0;
 S32 LLVertexBuffer::sCount = 0;
 S32 LLVertexBuffer::sGLCount = 0;
 S32 LLVertexBuffer::sMappedCount = 0;
+BOOL LLVertexBuffer::sDisableVBOMapping = FALSE ;
 BOOL LLVertexBuffer::sEnableVBOs = TRUE;
 U32 LLVertexBuffer::sGLRenderBuffer = 0;
 U32 LLVertexBuffer::sGLRenderIndices = 0;
@@ -251,6 +252,7 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi
 void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
 {
 	llassert(mRequestedNumIndices >= 0);
+
 	if (indices_offset >= (U32) mRequestedNumIndices ||
 	    indices_offset + count > (U32) mRequestedNumIndices)
 	{
@@ -282,6 +284,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
 void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
 {
 	llassert(mRequestedNumVerts >= 0);
+
 	if (first >= (U32) mRequestedNumVerts ||
 	    first + count > (U32) mRequestedNumVerts)
 	{
@@ -305,9 +308,21 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
 }
 
 //static
-void LLVertexBuffer::initClass(bool use_vbo)
+void LLVertexBuffer::initClass(bool use_vbo, bool no_vbo_mapping)
 {
-	sEnableVBOs = use_vbo;
+	sEnableVBOs = use_vbo && gGLManager.mHasVertexBufferObject ;
+	if(sEnableVBOs)
+	{
+		//llassert_always(glBindBufferARB) ; //double check the extention for VBO is loaded.
+
+		llinfos << "VBO is enabled." << llendl ;
+	}
+	else
+	{
+		llinfos << "VBO is disabled." << llendl ;
+	}
+
+	sDisableVBOMapping = sEnableVBOs && no_vbo_mapping ;
 	LLGLNamePool::registerPool(&sDynamicVBOPool);
 	LLGLNamePool::registerPool(&sDynamicIBOPool);
 	LLGLNamePool::registerPool(&sStreamVBOPool);
@@ -364,7 +379,9 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
 	mGLBuffer(0),
 	mGLIndices(0), 
 	mMappedData(NULL),
-	mMappedIndexData(NULL), mLocked(FALSE),
+	mMappedIndexData(NULL), 
+	mVertexLocked(FALSE),
+	mIndexLocked(FALSE),
 	mFinal(FALSE),
 	mFilthy(FALSE),
 	mEmpty(TRUE),
@@ -422,6 +439,8 @@ LLVertexBuffer::~LLVertexBuffer()
 	destroyGLBuffer();
 	destroyGLIndices();
 	sCount--;
+
+	llassert_always(!mMappedData && !mMappedIndexData) ;
 };
 
 //----------------------------------------------------------------------------
@@ -567,6 +586,8 @@ void LLVertexBuffer::destroyGLBuffer()
 	{
 		if (useVBOs())
 		{
+			freeClientBuffer() ;
+
 			if (mMappedData || mMappedIndexData)
 			{
 				llerrs << "Vertex buffer destroyed while mapped!" << llendl;
@@ -594,11 +615,13 @@ void LLVertexBuffer::destroyGLIndices()
 	{
 		if (useVBOs())
 		{
+			freeClientBuffer() ;
+
 			if (mMappedData || mMappedIndexData)
 			{
 				llerrs << "Vertex buffer destroyed while mapped." << llendl;
 			}
-			releaseIndices();
+			releaseIndices();			
 		}
 		else
 		{
@@ -799,6 +822,7 @@ void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices)
 
 	if (mResized && useVBOs())
 	{
+		freeClientBuffer() ;
 		setBuffer(0);
 	}
 }
@@ -822,36 +846,69 @@ BOOL LLVertexBuffer::useVBOs() const
 }
 
 //----------------------------------------------------------------------------
+void LLVertexBuffer::freeClientBuffer()
+{
+	if(useVBOs() && sDisableVBOMapping && (mMappedData || mMappedIndexData))
+	{
+		delete[] mMappedData ;
+		delete[] mMappedIndexData ;
+		mMappedData = NULL ;
+		mMappedIndexData = NULL ;
+	}
+}
+
+void LLVertexBuffer::allocateClientVertexBuffer()
+{
+	if(!mMappedData)
+	{
+		U32 size = getSize() ;
+		mMappedData = new U8[size];
+		memset(mMappedData, 0, size);
+	}
+}
+
+void LLVertexBuffer::allocateClientIndexBuffer()
+{
+	if(!mMappedIndexData)
+	{
+		U32 size = getIndicesSize();
+		mMappedIndexData = new U8[size];
+		memset(mMappedIndexData, 0, size);
+	}
+}
 
 // Map for data access
-U8* LLVertexBuffer::mapBuffer(S32 access)
+U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 access)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER);
 	if (mFinal)
 	{
-		llerrs << "LLVertexBuffer::mapBuffer() called on a finalized buffer." << llendl;
+		llerrs << "LLVertexBuffer::mapVeretxBuffer() called on a finalized buffer." << llendl;
 	}
 	if (!useVBOs() && !mMappedData && !mMappedIndexData)
 	{
-		llerrs << "LLVertexBuffer::mapBuffer() called on unallocated buffer." << llendl;
+		llerrs << "LLVertexBuffer::mapVertexBuffer() called on unallocated buffer." << llendl;
 	}
 		
-	if (!mLocked && useVBOs())
+	if (!mVertexLocked && useVBOs())
 	{
 		{
 			LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_VERTICES);
-			setBuffer(0);
-			mLocked = TRUE;
+			setBuffer(0, type);
+			mVertexLocked = TRUE;
 			stop_glerror();	
-			mMappedData = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
-			stop_glerror();
-		}
-		{
-			LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES);
-			mMappedIndexData = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
+
+			if(sDisableVBOMapping)
+			{
+				allocateClientVertexBuffer() ;
+			}
+			else
+			{
+				mMappedData = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
+			}
 			stop_glerror();
 		}
-
+		
 		if (!mMappedData)
 		{
 			log_glerror();
@@ -862,80 +919,166 @@ U8* LLVertexBuffer::mapBuffer(S32 access)
 			llinfos << "Available physical mwmory(KB): " << avail_phy_mem << llendl ; 
 			llinfos << "Available virtual memory(KB): " << avail_vir_mem << llendl;
 
-			//--------------------
-			//print out more debug info before crash
-			llinfos << "vertex buffer size: (num verts : num indices) = " << getNumVerts() << " : " << getNumIndices() << llendl ;
-			GLint size ;
-			glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size) ;
-			llinfos << "GL_ARRAY_BUFFER_ARB size is " << size << llendl ;
-			//--------------------
+			if(!sDisableVBOMapping)
+			{
+				//--------------------
+				//print out more debug info before crash
+				llinfos << "vertex buffer size: (num verts : num indices) = " << getNumVerts() << " : " << getNumIndices() << llendl ;
+				GLint size ;
+				glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size) ;
+				llinfos << "GL_ARRAY_BUFFER_ARB size is " << size << llendl ;
+				//--------------------
 
-			GLint buff;
-			glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff);
-			if ((GLuint)buff != mGLBuffer)
+				GLint buff;
+				glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff);
+				if ((GLuint)buff != mGLBuffer)
+				{
+					llerrs << "Invalid GL vertex buffer bound: " << buff << llendl;
+				}
+
+				
+				llerrs << "glMapBuffer returned NULL (no vertex data)" << llendl;
+			}
+			else
 			{
-				llerrs << "Invalid GL vertex buffer bound: " << buff << llendl;
+				llerrs << "memory allocation for vertex data failed." << llendl ;
 			}
+		}
+		sMappedCount++;
+	}
+	
+	return mMappedData;
+}
+
+U8* LLVertexBuffer::mapIndexBuffer(S32 access)
+{
+	LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER);
+	if (mFinal)
+	{
+		llerrs << "LLVertexBuffer::mapIndexBuffer() called on a finalized buffer." << llendl;
+	}
+	if (!useVBOs() && !mMappedData && !mMappedIndexData)
+	{
+		llerrs << "LLVertexBuffer::mapIndexBuffer() called on unallocated buffer." << llendl;
+	}
+
+	if (!mIndexLocked && useVBOs())
+	{
+		{
+			LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES);
 
-			
-			llerrs << "glMapBuffer returned NULL (no vertex data)" << llendl;
+			setBuffer(0, TYPE_INDEX);
+			mIndexLocked = TRUE;
+			stop_glerror();	
+
+			if(sDisableVBOMapping)
+			{
+				allocateClientIndexBuffer() ;
+			}
+			else
+			{
+				mMappedIndexData = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
+			}
+			stop_glerror();
 		}
 
 		if (!mMappedIndexData)
 		{
 			log_glerror();
 
-			GLint buff;
-			glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff);
-			if ((GLuint)buff != mGLIndices)
+			if(!sDisableVBOMapping)
 			{
-				llerrs << "Invalid GL index buffer bound: " << buff << llendl;
-			}
+				GLint buff;
+				glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff);
+				if ((GLuint)buff != mGLIndices)
+				{
+					llerrs << "Invalid GL index buffer bound: " << buff << llendl;
+				}
 
-			llerrs << "glMapBuffer returned NULL (no index data)" << llendl;
+				llerrs << "glMapBuffer returned NULL (no index data)" << llendl;
+			}
+			else
+			{
+				llerrs << "memory allocation for Index data failed. " << llendl ;
+			}
 		}
 
 		sMappedCount++;
 	}
-	
-	return mMappedData;
+
+	return mMappedIndexData ;
 }
 
-void LLVertexBuffer::unmapBuffer()
+void LLVertexBuffer::unmapBuffer(S32 type)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_UNMAP_BUFFER);
-	if (mMappedData || mMappedIndexData)
+	if (!useVBOs())
 	{
-		if (useVBOs() && mLocked)
+		return ; //nothing to unmap
+	}
+
+	bool updated_all = false ;
+	if (mMappedData && mVertexLocked && type != TYPE_INDEX)
+	{
+		updated_all = (mIndexLocked && type < 0) ; //both vertex and index buffers done updating
+
+		if(sDisableVBOMapping)
+		{
+			stop_glerror();
+			glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, getSize(), mMappedData);
+			stop_glerror();
+		}
+		else
 		{
 			stop_glerror();
 			glUnmapBufferARB(GL_ARRAY_BUFFER_ARB);
 			stop_glerror();
+
+			mMappedData = NULL;
+		}
+
+		mVertexLocked = FALSE ;
+		sMappedCount--;
+	}
+
+	if(mMappedIndexData && mIndexLocked && (type < 0 || type == TYPE_INDEX))
+	{
+		if(sDisableVBOMapping)
+		{
+			stop_glerror();
+			glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, getIndicesSize(), mMappedIndexData);
+			stop_glerror();
+		}
+		else
+		{
+			stop_glerror();
 			glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB);
 			stop_glerror();
 
-			/*if (!sMapped)
-			{
-				llerrs << "Redundantly unmapped VBO!" << llendl;
-			}
-			sMapped = FALSE;*/
-			sMappedCount--;
-
-			if (mUsage == GL_STATIC_DRAW_ARB)
-			{ //static draw buffers can only be mapped a single time
-				//throw out client data (we won't be using it again)
-				mEmpty = TRUE;
-				mFinal = TRUE;
-			}
-			else
+			mMappedIndexData = NULL ;
+		}
+
+		mIndexLocked = FALSE ;
+		sMappedCount--;
+	}
+
+	if(updated_all)
+	{
+		if(mUsage == GL_STATIC_DRAW_ARB)
+		{
+			//static draw buffers can only be mapped a single time
+			//throw out client data (we won't be using it again)
+			mEmpty = TRUE;
+			mFinal = TRUE;
+
+			if(sDisableVBOMapping)
 			{
-				mEmpty = FALSE;
+				freeClientBuffer() ;
 			}
-
-			mMappedIndexData = NULL;
-			mMappedData = NULL;
-			
-			mLocked = FALSE;
+		}
+		else
+		{
+			mEmpty = FALSE;
 		}
 	}
 }
@@ -949,15 +1092,16 @@ template <class T,S32 type> struct VertexBufferStrider
 					strider_t& strider, 
 					S32 index)
 	{
-		if (vbo.mapBuffer() == NULL)
-		{
-			llwarns << "mapBuffer failed!" << llendl;
-			return FALSE;
-		}
-
 		if (type == LLVertexBuffer::TYPE_INDEX)
 		{
 			S32 stride = sizeof(T);
+
+			if (vbo.mapIndexBuffer() == NULL)
+			{
+				llwarns << "mapIndexBuffer failed!" << llendl;
+				return FALSE;
+			}
+
 			strider = (T*)(vbo.getMappedIndices() + index*stride);
 			strider.setStride(0);
 			return TRUE;
@@ -965,6 +1109,13 @@ template <class T,S32 type> struct VertexBufferStrider
 		else if (vbo.hasDataType(type))
 		{
 			S32 stride = vbo.getStride();
+
+			if (vbo.mapVertexBuffer(type) == NULL)
+			{
+				llwarns << "mapVertexBuffer failed!" << llendl;
+				return FALSE;
+			}
+
 			strider = (T*)(vbo.getMappedData() + vbo.getOffset(type) + index*stride);
 			strider.setStride(stride);
 			return TRUE;
@@ -1045,7 +1196,7 @@ void LLVertexBuffer::setStride(S32 type, S32 new_stride)
 //----------------------------------------------------------------------------
 
 // Set for rendering
-void LLVertexBuffer::setBuffer(U32 data_mask)
+void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_SET_BUFFER);
 	//set up pointers if the data mask is different ...
@@ -1186,7 +1337,7 @@ void LLVertexBuffer::setBuffer(U32 data_mask)
 		{
 			ll_fail("LLVertexBuffer::mapBuffer failed");
 		}
-		unmapBuffer();
+		unmapBuffer(type);
 	}
 	else
 	{		
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index 94fa79095740b233365f8d45da12ee8e0f155ec1..c51ce7ac4e1119bd8b4d14c583f94ea2c032a37c 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -80,7 +80,7 @@ class LLVertexBuffer : public LLRefCount
 
 	static BOOL	sUseStreamDraw;
 
-	static void initClass(bool use_vbo);
+	static void initClass(bool use_vbo, bool no_vbo_mapping);
 	static void cleanupClass();
 	static void setupClientArrays(U32 data_mask);
  	static void clientCopy(F64 max_time = 0.005); //copy data from client to GL
@@ -139,19 +139,24 @@ class LLVertexBuffer : public LLRefCount
 	void	updateNumVerts(S32 nverts);
 	void	updateNumIndices(S32 nindices); 
 	virtual BOOL	useVBOs() const;
-	void	unmapBuffer();
-		
+	void	unmapBuffer(S32 type);
+	void freeClientBuffer() ;
+	void allocateClientVertexBuffer() ;
+	void allocateClientIndexBuffer() ;
+
 public:
 	LLVertexBuffer(U32 typemask, S32 usage);
 	
 	// map for data access
-	U8*		mapBuffer(S32 access = -1);
+	U8*		mapVertexBuffer(S32 type = -1, S32 access = -1);
+	U8*		mapIndexBuffer(S32 access = -1);
+
 	// set for rendering
-	virtual void	setBuffer(U32 data_mask); 	// calls  setupVertexBuffer() if data_mask is not 0
+	virtual void	setBuffer(U32 data_mask, S32 type = -1); 	// calls  setupVertexBuffer() if data_mask is not 0
 	// allocate buffer
 	void	allocateBuffer(S32 nverts, S32 nindices, bool create);
 	virtual void resizeBuffer(S32 newnverts, S32 newnindices);
-		
+			
 	// Only call each getVertexPointer, etc, once before calling unmapBuffer()
 	// call unmapBuffer() after calls to getXXXStrider() before any cals to setBuffer()
 	// example:
@@ -170,7 +175,7 @@ class LLVertexBuffer : public LLRefCount
 	bool getClothWeightStrider(LLStrider<LLVector4>& strider, S32 index=0);
 	
 	BOOL isEmpty() const					{ return mEmpty; }
-	BOOL isLocked() const					{ return mLocked; }
+	BOOL isLocked() const					{ return mVertexLocked || mIndexLocked; }
 	S32 getNumVerts() const					{ return mNumVerts; }
 	S32 getNumIndices() const				{ return mNumIndices; }
 	S32 getRequestedVerts() const			{ return mRequestedNumVerts; }
@@ -209,13 +214,14 @@ class LLVertexBuffer : public LLRefCount
 	U32		mGLIndices;		// GL IBO handle
 	U8*		mMappedData;	// pointer to currently mapped data (NULL if unmapped)
 	U8*		mMappedIndexData;	// pointer to currently mapped indices (NULL if unmapped)
-	BOOL	mLocked;			// if TRUE, buffer is being or has been written to in client memory
+	BOOL	mVertexLocked;			// if TRUE, vertex buffer is being or has been written to in client memory
+	BOOL	mIndexLocked;			// if TRUE, index buffer is being or has been written to in client memory
 	BOOL	mFinal;			// if TRUE, buffer can not be mapped again
 	BOOL	mFilthy;		// if TRUE, entire buffer must be copied (used to prevent redundant dirty flags)
-	BOOL	mEmpty;			// if TRUE, client buffer is empty (or NULL). Old values have been discarded.
-	S32		mOffsets[TYPE_MAX];
+	BOOL	mEmpty;			// if TRUE, client buffer is empty (or NULL). Old values have been discarded.	
 	BOOL	mResized;		// if TRUE, client buffer has been resized and GL buffer has not
 	BOOL	mDynamicSize;	// if TRUE, buffer has been resized at least once (and should be padded)
+	S32		mOffsets[TYPE_MAX];
 
 	class DirtyRegion
 	{
@@ -240,13 +246,14 @@ class LLVertexBuffer : public LLRefCount
 	static std::vector<U32> sDeleteList;
 	typedef std::list<LLVertexBuffer*> buffer_list_t;
 		
+	static BOOL sDisableVBOMapping; //disable glMapBufferARB
 	static BOOL sEnableVBOs;
+	static BOOL sVBOActive;
+	static BOOL sIBOActive;
 	static S32 sTypeOffsets[TYPE_MAX];
 	static U32 sGLMode[LLRender::NUM_MODES];
 	static U32 sGLRenderBuffer;
-	static U32 sGLRenderIndices;
-	static BOOL sVBOActive;
-	static BOOL sIBOActive;
+	static U32 sGLRenderIndices;	
 	static U32 sLastMask;
 	static U32 sAllocatedBytes;
 	static U32 sBindCount;
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 8b6a73af56a196343b3e5b1eba5690dde2fadcca..6f9893b07afcb0d2bb7e5b2a8a25d6f4ea1b2678 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -316,7 +316,7 @@ void LLComboBox::setValue(const LLSD& value)
 		LLScrollListItem* item = mList->getFirstSelected();
 		if (item)
 		{
-			setLabel(getSelectedItemLabel());
+			updateLabel();
 		}
 		mLastSelectedIndex = mList->getFirstSelectedIndex();
 	}
@@ -384,6 +384,23 @@ void LLComboBox::setLabel(const LLStringExplicit& name)
 	}
 }
 
+void LLComboBox::updateLabel()
+{
+	// Update the combo editor with the selected
+	// item label.
+	if (mTextEntry)
+	{
+		mTextEntry->setText(getSelectedItemLabel());
+		mTextEntry->setTentative(FALSE);
+	}
+
+	// If combo box doesn't allow text entry update
+	// the combo button label.
+	if (!mAllowTextEntry)
+	{
+		mButton->setLabel(getSelectedItemLabel());
+	}
+}
 
 BOOL LLComboBox::remove(const std::string& name)
 {
@@ -701,13 +718,13 @@ void LLComboBox::onItemSelected(const LLSD& data)
 	mLastSelectedIndex = getCurrentIndex();
 	if (mLastSelectedIndex != -1)
 	{
-		setLabel(getSelectedItemLabel());
+		updateLabel();
 
 		if (mAllowTextEntry)
-	{
-		gFocusMgr.setKeyboardFocus(mTextEntry);
-		mTextEntry->selectAll();
-	}
+		{
+			gFocusMgr.setKeyboardFocus(mTextEntry);
+			mTextEntry->selectAll();
+		}
 	}
 	// hiding the list reasserts the old value stored in the text editor/dropdown button
 	hideList();
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
index 74d64269bdf206ef761e26614b6323f2f334a833..e9ef9d07e419353c73dab1161cd4db964587daff 100644
--- a/indra/llui/llcombobox.h
+++ b/indra/llui/llcombobox.h
@@ -148,6 +148,9 @@ class LLComboBox
 	// This is probably a UI abuse.
 	void			setLabel(const LLStringExplicit& name);
 
+	// Updates the combobox label to match the selected list item.
+	void			updateLabel();
+
 	BOOL			remove(const std::string& name);	// remove item "name", return TRUE if found and removed
 	
 	BOOL			setCurrentByIndex( S32 index );
diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp
index f6f5a0beb38838e4dfe3008b63ab15101a097590..5ed2c27160e3d44ad1333a91d6b2b0d4a4e9798a 100644
--- a/indra/llui/lldockcontrol.cpp
+++ b/indra/llui/lldockcontrol.cpp
@@ -160,8 +160,10 @@ bool LLDockControl::isDockVisible()
 			case TOP:
 			{
 				// check is dock inside parent rect
+				// assume that parent for all dockable flaoters
+				// is the root view
 				LLRect dockParentRect =
-						mDockWidget->getParent()->calcScreenRect();
+						mDockWidget->getRootView()->calcScreenRect();
 				if (dockRect.mRight <= dockParentRect.mLeft
 						|| dockRect.mLeft >= dockParentRect.mRight)
 				{
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index 19ac4c58a851be16bd8f8e734b048a0ebaf26508..9b6830a8163cfab0e9963969c73eb79e38d71cdf 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -563,7 +563,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
 	}
 
 	// update resize bars with new limits
-	LLResizeBar* last_resize_bar = NULL;
+	LLLayoutPanel* last_resizeable_panel = NULL;
 	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
 	{
 		LLPanel* panelp = (*panel_it);
@@ -585,17 +585,17 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
 		BOOL resize_bar_enabled = panelp->getVisible() && (*panel_it)->mUserResize;
 		(*panel_it)->mResizeBar->setVisible(resize_bar_enabled);
 
-		if (resize_bar_enabled)
+		if ((*panel_it)->mUserResize || (*panel_it)->mAutoResize)
 		{
-			last_resize_bar = (*panel_it)->mResizeBar;
+			last_resizeable_panel = (*panel_it);
 		}
 	}
 
 	// hide last resize bar as there is nothing past it
 	// resize bars need to be in between two resizable panels
-	if (last_resize_bar)
+	if (last_resizeable_panel)
 	{
-		last_resize_bar->setVisible(FALSE);
+		last_resizeable_panel->mResizeBar->setVisible(FALSE);
 	}
 
 	// not enough room to fit existing contents
diff --git a/indra/llvfs/lldir_linux.h b/indra/llvfs/lldir_linux.h
index 451e81ae93c560114b83f556120f3fd42f6dbec9..a34de1241d625afcb13aae9673c88f3c8831532c 100644
--- a/indra/llvfs/lldir_linux.h
+++ b/indra/llvfs/lldir_linux.h
@@ -1,6 +1,6 @@
 /** 
  * @file lldir_linux.h
- * @brief Definition of directory utilities class for linux 
+ * @brief Definition of directory utilities class for linux
  *
  * $LicenseInfo:firstyear=2000&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -24,6 +24,10 @@
  * $/LicenseInfo$
  */
 
+#if !LL_LINUX
+#error This header must not be included when compiling for any target other than Linux. Consider including lldir.h instead.
+#endif // !LL_LINUX
+
 #ifndef LL_LLDIR_LINUX_H
 #define LL_LLDIR_LINUX_H
 
@@ -40,7 +44,7 @@ class LLDir_Linux : public LLDir
 
 	/*virtual*/ void initAppDirs(const std::string &app_name,
 		const std::string& app_read_only_data_dir);
-public:	
+
 	virtual std::string getCurPath();
 	virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);
 	virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
@@ -53,7 +57,7 @@ class LLDir_Linux : public LLDir
 	DIR *mDirp;
 	int mCurrentDirIndex;
 	int mCurrentDirCount;
-	std::string mCurrentDir;	
+	std::string mCurrentDir;
 };
 
 #endif // LL_LLDIR_LINUX_H
diff --git a/indra/llvfs/lldir_mac.h b/indra/llvfs/lldir_mac.h
index 4eac3c3ae6fce824624bc7c048b8922c6c86e517..b456d3afca989ef93f0cdc2b5c39f723e78763bb 100644
--- a/indra/llvfs/lldir_mac.h
+++ b/indra/llvfs/lldir_mac.h
@@ -24,6 +24,10 @@
  * $/LicenseInfo$
  */
 
+#if !LL_DARWIN
+#error This header must not be included when compiling for any target other than Mac OS. Consider including lldir.h instead.
+#endif // !LL_DARWIN
+
 #ifndef LL_LLDIR_MAC_H
 #define LL_LLDIR_MAC_H
 
@@ -39,7 +43,7 @@ class LLDir_Mac : public LLDir
 
 	/*virtual*/ void initAppDirs(const std::string &app_name,
 		const std::string& app_read_only_data_dir);
-public:	
+
 	virtual S32 deleteFilesInDir(const std::string &dirname, const std::string &mask);
 	virtual std::string getCurPath();
 	virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);
diff --git a/indra/llvfs/lldir_solaris.h b/indra/llvfs/lldir_solaris.h
index 4a1794f53950dab8f147dae3c4bc9cfe4e3b1088..70fac6f8185941adef6aeba13d9f73b7181b8ceb 100644
--- a/indra/llvfs/lldir_solaris.h
+++ b/indra/llvfs/lldir_solaris.h
@@ -24,6 +24,10 @@
  * $/LicenseInfo$
  */
 
+#if !LL_SOLARIS
+#error This header must not be included when compiling for any target other than Solaris. Consider including lldir.h instead.
+#endif // !LL_SOLARIS
+
 #ifndef LL_LLDIR_SOLARIS_H
 #define LL_LLDIR_SOLARIS_H
 
@@ -40,7 +44,7 @@ class LLDir_Solaris : public LLDir
 
 	/*virtual*/ void initAppDirs(const std::string &app_name,
 		const std::string& app_read_only_data_dir);
-public:	
+
 	virtual std::string getCurPath();
 	virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);
 	virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
@@ -50,7 +54,7 @@ class LLDir_Solaris : public LLDir
 	DIR *mDirp;
 	int mCurrentDirIndex;
 	int mCurrentDirCount;
-	std::string mCurrentDir;	
+	std::string mCurrentDir;
 };
 
 #endif // LL_LLDIR_SOLARIS_H
diff --git a/indra/llvfs/lldir_win32.h b/indra/llvfs/lldir_win32.h
index 4c932c932c8f06d6015c106f2b2cd8c9bd50e7f6..b170ebbcd7da551cb3f0182bd51bd7ad419e40a6 100644
--- a/indra/llvfs/lldir_win32.h
+++ b/indra/llvfs/lldir_win32.h
@@ -24,6 +24,10 @@
  * $/LicenseInfo$
  */
 
+#if !LL_WINDOWS
+#error This header must not be included when compiling for any target other than Windows. Consider including lldir.h instead.
+#endif // !LL_WINDOWS
+
 #ifndef LL_LLDIR_WIN32_H
 #define LL_LLDIR_WIN32_H
 
@@ -47,8 +51,8 @@ class LLDir_Win32 : public LLDir
 	/*virtual*/ std::string getLLPluginFilename(std::string base_name);
 
 private:
-	BOOL LLDir_Win32::getNextFileInDir(const llutf16string &dirname, const std::string &mask, std::string &fname);
-	
+	BOOL getNextFileInDir(const llutf16string &dirname, const std::string &mask, std::string &fname);
+
 	void* mDirSearch_h;
 	llutf16string mCurrentDir;
 };
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 6630d8f4003e3d83a96e66dfa5dbf3bf9802401a..a0105240911876bf85482b7f7389a1866e3c45be 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8451,6 +8451,17 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>RenderVBOMappingDisable</key>
+    <map>
+      <key>Comment</key>
+      <string>Disable VBO glMapBufferARB</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
   <key>RenderUseStreamVBO</key>
   <map>
     <key>Comment</key>
diff --git a/indra/newview/generate_breakpad_symbols.py b/indra/newview/generate_breakpad_symbols.py
index 4fd04d780eb0a8b926797d7623d26b1b04ab611e..5ebec1563e915b5914be63fc2d1dc4f1ecb6bcae 100644
--- a/indra/newview/generate_breakpad_symbols.py
+++ b/indra/newview/generate_breakpad_symbols.py
@@ -1,29 +1,31 @@
 #!/usr/bin/env python
-# @file generate_breakpad_symbols.py
-# @author Brad Kittenbrink <brad@lindenlab.com>
-# @brief Simple tool for generating google_breakpad symbol information
-#        for the crash reporter.
-#
-# $LicenseInfo:firstyear=2010&license=viewerlgpl$
-# Second Life Viewer Source Code
-# Copyright (C) 2010, Linden Research, Inc.
-# 
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation;
-# version 2.1 of the License only.
-# 
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-# 
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-# 
-# Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
-# $/LicenseInfo$
+"""\
+@file generate_breakpad_symbols.py
+@author Brad Kittenbrink <brad@lindenlab.com>
+@brief Simple tool for generating google_breakpad symbol information
+       for the crash reporter.
+
+$LicenseInfo:firstyear=2010&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2010-2011, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
 
 
 import collections
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index a23f809b712316cf118e0aaafa23db03e571244d..327a5ad698a807653483e75902bc5ba206175d3b 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -1677,8 +1677,8 @@ bool LLAppViewer::cleanup()
 
 	// Delete workers first
 	// shotdown all worker threads before deleting them in case of co-dependencies
-	sTextureCache->shutdown();
 	sTextureFetch->shutdown();
+	sTextureCache->shutdown();	
 	sImageDecodeThread->shutdown();
 	
 	sTextureFetch->shutDownTextureCacheThread() ;
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index ff7dfccc0afdcda0cc0e2eedf83ff969bdb780ab..771419f60acc303143434fcfcf001e92bf9f7ce2 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -240,6 +240,9 @@ void LLAvatarList::addAvalineItem(const LLUUID& item_id, const LLUUID& session_i
 	LLAvalineListItem* item = new LLAvalineListItem(/*hide_number=*/false);
 	item->setAvatarId(item_id, session_id, true, false);
 	item->setName(item_name);
+	item->showLastInteractionTime(mShowLastInteractionTime);
+	item->showSpeakingIndicator(mShowSpeakingIndicator);
+	item->setOnline(false);
 
 	addItem(item, item_id);
 	mIDs.push_back(item_id);
@@ -286,9 +289,18 @@ void LLAvatarList::refresh()
 			{
 				// *NOTE: If you change the UI to show a different string,
 				// be sure to change the filter code below.
-				addNewItem(buddy_id, 
-					       av_name.mDisplayName.empty() ? waiting_str : av_name.mDisplayName, 
-						   LLAvatarTracker::instance().isBuddyOnline(buddy_id));
+				if (LLRecentPeople::instance().isAvalineCaller(buddy_id))
+				{
+					const LLSD& call_data = LLRecentPeople::instance().getData(buddy_id);
+					addAvalineItem(buddy_id, call_data["session_id"].asUUID(), call_data["call_number"].asString());
+				}
+				else
+				{
+					addNewItem(buddy_id, 
+						av_name.mDisplayName.empty() ? waiting_str : av_name.mDisplayName, 
+						LLAvatarTracker::instance().isBuddyOnline(buddy_id));
+				}
+				
 				modified = true;
 				nadded++;
 			}
@@ -440,7 +452,7 @@ void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is
 BOOL LLAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)
 {
 	BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);
-	if ( mContextMenu )
+	if ( mContextMenu && !isAvalineItemSelected())
 	{
 		uuid_vec_t selected_uuids;
 		getSelectedUUIDs(selected_uuids);
@@ -449,6 +461,21 @@ BOOL LLAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)
 	return handled;
 }
 
+bool LLAvatarList::isAvalineItemSelected()
+{
+	std::vector<LLPanel*> selected_items;
+	getSelectedItems(selected_items);
+	std::vector<LLPanel*>::iterator it = selected_items.begin();
+	
+	for(; it != selected_items.end(); ++it)
+	{
+		if (dynamic_cast<LLAvalineListItem*>(*it))
+			return true;
+	}
+
+	return false;
+}
+
 void LLAvatarList::setVisible(BOOL visible)
 {
 	if ( visible == FALSE && mContextMenu )
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index cacbcf724440d340d78fba1b888841418bc86351..4814a88a79770c2640239b1867659fd6519e650d 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -112,6 +112,8 @@ class LLAvatarList : public LLFlatListViewEx
 
 private:
 
+	bool isAvalineItemSelected();
+
 	bool mIgnoreOnlineStatus;
 	bool mShowLastInteractionTime;
 	bool mDirty;
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 35e4548483d5b5e9a36b811a1cb53633b1331961..d8ec4b605c11980ccf9dc602583675f975e62092 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -67,10 +67,11 @@ BOOL LLBottomtrayButton::handleHover(S32 x, S32 y, MASK mask)
 {
 	if (mCanDrag)
 	{
-	S32 screenX, screenY;
-	localPointToScreen(x, y, &screenX, &screenY);
-	// pass hover to bottomtray
-	LLBottomTray::getInstance()->onDraggableButtonHover(screenX, screenY);
+		// pass hover to bottomtray
+		S32 screenX, screenY;
+		localPointToScreen(x, y, &screenX, &screenY);
+		LLBottomTray::getInstance()->onDraggableButtonHover(screenX, screenY);
+
 		return TRUE;
 	}
 	else
@@ -200,6 +201,7 @@ LLBottomTray::LLBottomTray(const LLSD&)
 	mSpeakBtn(NULL),
 	mNearbyChatBar(NULL),
 	mChatBarContainer(NULL),
+	mNearbyCharResizeHandlePanel(NULL),
 	mToolbarStack(NULL),
 	mMovementButton(NULL),
 	mResizeState(RS_NORESIZE),
@@ -505,6 +507,23 @@ void LLBottomTray::showSnapshotButton(BOOL visible)
 	setTrayButtonVisibleIfPossible(RS_BUTTON_SNAPSHOT, visible);
 }
 
+void LLBottomTray::showSpeakButton(bool visible)
+{
+	// Show/hide the button
+	setTrayButtonVisible(RS_BUTTON_SPEAK, visible);
+
+	// and adjust other panels according to the occupied/freed space.
+	const S32 panel_width = mSpeakPanel->getRect().getWidth();
+	if (visible)
+	{
+		processWidthDecreased(-panel_width);
+	}
+	else
+	{
+		processWidthIncreased(panel_width);
+	}
+}
+
 void LLBottomTray::toggleMovementControls()
 {
 	if (mMovementButton)
@@ -533,6 +552,7 @@ BOOL LLBottomTray::postBuild()
 	LLHints::registerHintTarget("chat_bar", mNearbyChatBar->LLView::getHandle());
 
 	mChatBarContainer = getChild<LLLayoutPanel>("chat_bar_layout_panel");
+	mNearbyCharResizeHandlePanel = getChild<LLPanel>("chat_bar_resize_handle_panel");
 
 	mToolbarStack = getChild<LLLayoutStack>("toolbar_stack");
 	mMovementButton = getChild<LLButton>("movement_btn");
@@ -651,12 +671,20 @@ void LLBottomTray::onDraggableButtonHover(S32 x, S32 y)
 			gViewerWindow->getWindow()->setCursor(UI_CURSOR_NO);
 		}
 	}
+	else
+	{
+		// Reset cursor in case you move your mouse from the drag handle to a button.
+		getWindow()->setCursor(UI_CURSOR_ARROW);
+
+	}
 }
 
 bool LLBottomTray::isCursorOverDraggableArea(S32 x, S32 y)
 {
+	// Draggable area lasts from the nearby chat input resize handle
+	// to the chiclet area (exlusively).
 	bool result = getRect().pointInRect(x, y);
-	result = result && mNearbyChatBar->calcScreenRect().mRight < x;
+	result = result && mNearbyCharResizeHandlePanel->calcScreenRect().mRight < x;
 	result = result && mChicletPanel->calcScreenRect().mRight > x;
 	return result;
 }
@@ -667,10 +695,7 @@ void LLBottomTray::updateButtonsOrdersAfterDnD()
 	// (and according to future possible changes in the way button order is saved between sessions).
 	state_object_map_t::const_iterator it = mStateProcessedObjectMap.begin();
 	state_object_map_t::const_iterator it_end = mStateProcessedObjectMap.end();
-	// Speak button is currently the only draggable button not in mStateProcessedObjectMap,
-	// so if dragged_state is not found in that map, it should be RS_BUTTON_SPEAK. Change this code if any other
-	// exclusions from mStateProcessedObjectMap will become draggable.
-	EResizeState dragged_state = RS_BUTTON_SPEAK;
+	EResizeState dragged_state = RS_NORESIZE;
 	EResizeState landing_state = RS_NORESIZE;
 	bool landing_state_found = false;
 	// Find states for dragged item and landing tab
@@ -686,7 +711,17 @@ void LLBottomTray::updateButtonsOrdersAfterDnD()
 			landing_state_found = true;
 		}
 	}
-	
+
+	if (dragged_state == RS_NORESIZE)
+	{
+		llwarns << "Cannot determine what button is being dragged" << llendl;
+		llassert(dragged_state != RS_NORESIZE);
+		return;
+	}
+
+	lldebugs << "Will place " << resizeStateToString(dragged_state)
+		<< " before " << resizeStateToString(landing_state) << llendl;
+
 	// Update order of buttons according to drag'n'drop
 	mButtonsOrder.erase(std::find(mButtonsOrder.begin(), mButtonsOrder.end(), dragged_state));
 	if (!landing_state_found && mLandingTab == getChild<LLPanel>(PANEL_CHICLET_NAME))
@@ -695,9 +730,10 @@ void LLBottomTray::updateButtonsOrdersAfterDnD()
 	}
 	else
 	{
-		if (!landing_state_found) landing_state = RS_BUTTON_SPEAK;
+		if (!landing_state_found) landing_state = RS_BUTTON_SPEAK; // just a random fallback
 		mButtonsOrder.insert(std::find(mButtonsOrder.begin(), mButtonsOrder.end(), landing_state), dragged_state);
 	}
+
 	// Synchronize button process order with their order
 	resize_state_vec_t::const_iterator it1 = mButtonsOrder.begin();
 	const resize_state_vec_t::const_iterator it_end1 = mButtonsOrder.end();
@@ -774,11 +810,12 @@ void LLBottomTray::loadButtonsOrder()
 	// placing panels in layout stack according to button order which we loaded in previous for
 	for (resize_state_vec_t::const_reverse_iterator it = mButtonsOrder.rbegin(); it != it_end; ++it, ++i)
 	{
-		LLPanel* panel_to_move = *it == RS_BUTTON_SPEAK ? mSpeakPanel : mStateProcessedObjectMap[*it];
+		LLPanel* panel_to_move = getButtonPanel(*it);
 		mToolbarStack->movePanel(panel_to_move, NULL, true); // prepend 		
 	}
 	// Nearbychat is not stored in order settings file, but it must be the first of the panels, so moving it
-	// manually here
+	// (along with its drag handle) manually here.
+	mToolbarStack->movePanel(getChild<LLLayoutPanel>("chat_bar_resize_handle_panel"), NULL, true);
 	mToolbarStack->movePanel(mChatBarContainer, NULL, true);
 }
 
@@ -1178,9 +1215,8 @@ void LLBottomTray::processShowButtons(S32& available_width)
 bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32& available_width)
 {
 	lldebugs << "Trying to show object type: " << shown_object_type << llendl;
-	llassert(mStateProcessedObjectMap[shown_object_type] != NULL);
 
-	LLPanel* panel = mStateProcessedObjectMap[shown_object_type];
+	LLPanel* panel = getButtonPanel(shown_object_type);
 	if (NULL == panel)
 	{
 		lldebugs << "There is no object to process for state: " << shown_object_type << llendl;
@@ -1226,9 +1262,7 @@ void LLBottomTray::processHideButtons(S32& required_width, S32& buttons_freed_wi
 void LLBottomTray::processHideButton(EResizeState processed_object_type, S32& required_width, S32& buttons_freed_width)
 {
 	lldebugs << "Trying to hide object type: " << processed_object_type << llendl;
-	llassert(mStateProcessedObjectMap[processed_object_type] != NULL);
-
-	LLPanel* panel = mStateProcessedObjectMap[processed_object_type];
+	LLPanel* panel = getButtonPanel(processed_object_type);
 	if (NULL == panel)
 	{
 		lldebugs << "There is no object to process for state: " << processed_object_type << llendl;
@@ -1273,7 +1307,6 @@ void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_
 	// then shrink Speak button
 	if (required_width < 0)
 	{
-
 		S32 panel_min_width = 0;
 		std::string panel_name = mSpeakPanel->getName();
 		bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width);
@@ -1309,8 +1342,7 @@ void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_
 
 void LLBottomTray::processShrinkButton(EResizeState processed_object_type, S32& required_width)
 {
-	llassert(mStateProcessedObjectMap[processed_object_type] != NULL);
-	LLPanel* panel = mStateProcessedObjectMap[processed_object_type];
+	LLPanel* panel = getButtonPanel(processed_object_type);
 	if (NULL == panel)
 	{
 		lldebugs << "There is no object to process for type: " << processed_object_type << llendl;
@@ -1411,8 +1443,7 @@ void LLBottomTray::processExtendButtons(S32& available_width)
 
 void LLBottomTray::processExtendButton(EResizeState processed_object_type, S32& available_width)
 {
-	llassert(mStateProcessedObjectMap[processed_object_type] != NULL);
-	LLPanel* panel = mStateProcessedObjectMap[processed_object_type];
+	LLPanel* panel = getButtonPanel(processed_object_type);
 	if (NULL == panel)
 	{
 		lldebugs << "There is no object to process for type: " << processed_object_type << llendl;
@@ -1480,6 +1511,7 @@ bool LLBottomTray::canButtonBeShown(EResizeState processed_object_type) const
 void LLBottomTray::initResizeStateContainers()
 {
 	// init map with objects should be processed for each type
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPEAK, getChild<LLPanel>("speak_panel")));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_GESTURES, getChild<LLPanel>("gesture_panel")));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, getChild<LLPanel>("movement_panel")));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, getChild<LLPanel>("cam_panel")));
@@ -1512,22 +1544,22 @@ void LLBottomTray::initResizeStateContainers()
 	{
 		const EResizeState button_type = *it;
 		// is there an appropriate object?
-		llassert(mStateProcessedObjectMap.count(button_type) > 0);
-		if (0 == mStateProcessedObjectMap.count(button_type)) continue;
+		LLPanel* button_panel = getButtonPanel(button_type);
+		if (!button_panel) continue;
 
 		// set default width for it.
-		mObjectDefaultWidthMap[button_type] = mStateProcessedObjectMap[button_type]->getRect().getWidth();
+		mObjectDefaultWidthMap[button_type] = button_panel->getRect().getWidth();
 	}
 
 	// ... and add Speak button because it also can be shrunk.
 	mObjectDefaultWidthMap[RS_BUTTON_SPEAK]	   = mSpeakPanel->getRect().getWidth();
-
 }
 
 // this method must be called before restoring of the chat entry field on startup
 // because it resets chatbar's width according to resize logic.
 void LLBottomTray::initButtonsVisibility()
 {
+	setVisibleAndFitWidths(RS_BUTTON_SPEAK, gSavedSettings.getBOOL("EnableVoiceChat"));
 	setVisibleAndFitWidths(RS_BUTTON_GESTURES, gSavedSettings.getBOOL("ShowGestureButton"));
 	setVisibleAndFitWidths(RS_BUTTON_MOVEMENT, gSavedSettings.getBOOL("ShowMoveButton"));
 	setVisibleAndFitWidths(RS_BUTTON_CAMERA, gSavedSettings.getBOOL("ShowCameraButton"));
@@ -1540,6 +1572,7 @@ void LLBottomTray::initButtonsVisibility()
 
 void LLBottomTray::setButtonsControlsAndListeners()
 {
+	gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_SPEAK, _2));
 	gSavedSettings.getControl("ShowGestureButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_GESTURES, _2));
 	gSavedSettings.getControl("ShowMoveButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_MOVEMENT, _2));
 	gSavedSettings.getControl("ShowCameraButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_CAMERA, _2));
@@ -1568,8 +1601,7 @@ bool LLBottomTray::toggleShowButton(LLBottomTray::EResizeState button_type, cons
 
 void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool visible)
 {
-	llassert(mStateProcessedObjectMap[shown_object_type] != NULL);
-	LLPanel* panel = mStateProcessedObjectMap[shown_object_type];
+	LLPanel* panel = getButtonPanel(shown_object_type);
 	if (NULL == panel)
 	{
 		lldebugs << "There is no object to show for state: " << shown_object_type << llendl;
@@ -1592,7 +1624,15 @@ void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type
 
 bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible)
 {
-	LLPanel* cur_panel = mStateProcessedObjectMap[object_type];
+	// The Speak button is treated specially: if voice is enabled,
+	// the button should be displayed no matter how much space we've got.
+	if (object_type == RS_BUTTON_SPEAK)
+	{
+		showSpeakButton(visible);
+		return true;
+	}
+
+	LLPanel* cur_panel = getButtonPanel(object_type);
 	if (NULL == cur_panel)
 	{
 		lldebugs << "There is no object to process for state: " << object_type << llendl;
@@ -1637,7 +1677,7 @@ bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible
 
 			for (; it != it_end; ++it)
 			{
-				LLPanel * cur_panel = mStateProcessedObjectMap[*it];
+				LLPanel* cur_panel = getButtonPanel(*it);
 				sum_of_min_widths += get_panel_min_width(mToolbarStack, cur_panel);
 				sum_of_curr_widths += get_curr_width(cur_panel);
 			}
@@ -1695,6 +1735,19 @@ bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible
 	return is_set;
 }
 
+LLPanel* LLBottomTray::getButtonPanel(EResizeState button_type)
+{
+	// Don't use the operator[] because it inserts a NULL value if the key is not found.
+	if (mStateProcessedObjectMap.count(button_type) == 0)
+	{
+		llwarns << "Cannot find a panel for " << resizeStateToString(button_type) << llendl;
+		llassert(mStateProcessedObjectMap.count(button_type) == 1);
+		return NULL;
+	}
+
+	return mStateProcessedObjectMap[button_type];
+}
+
 void LLBottomTray::showWellButton(EResizeState object_type, bool visible)
 {
 	llassert( ((RS_NOTIFICATION_WELL | RS_IM_WELL) & object_type) == object_type );
@@ -1752,4 +1805,29 @@ void LLBottomTray::processChatbarCustomization(S32 new_width)
 	}
 }
 
+// static
+std::string LLBottomTray::resizeStateToString(EResizeState state)
+{
+	switch (state)
+	{
+	case RS_NORESIZE:				return "RS_NORESIZE";
+	case RS_CHICLET_PANEL:			return "RS_CHICLET_PANEL";
+	case RS_CHATBAR_INPUT:			return "RS_CHATBAR_INPUT";
+	case RS_BUTTON_SNAPSHOT:		return "RS_BUTTON_SNAPSHOT";
+	case RS_BUTTON_CAMERA:			return "RS_BUTTON_CAMERA";
+	case RS_BUTTON_MOVEMENT:		return "RS_BUTTON_MOVEMENT";
+	case RS_BUTTON_GESTURES:		return "RS_BUTTON_GESTURES";
+	case RS_BUTTON_SPEAK:			return "RS_BUTTON_SPEAK";
+	case RS_IM_WELL:				return "RS_IM_WELL";
+	case RS_NOTIFICATION_WELL:		return "RS_NOTIFICATION_WELL";
+	case RS_BUTTON_BUILD:			return "RS_BUTTON_BUILD";
+	case RS_BUTTON_SEARCH:			return "RS_BUTTON_SEARCH";
+	case RS_BUTTON_WORLD_MAP:		return "RS_BUTTON_WORLD_MAP";
+	case RS_BUTTON_MINI_MAP:		return "RS_BUTTON_MINI_MAP";
+	case RS_BUTTONS_CAN_BE_HIDDEN:	return "RS_BUTTONS_CAN_BE_HIDDEN";
+	// No default to track additions.
+	}
+	return "UNKNOWN_BUTTON";
+}
+
 //EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index dc98170049d4e63cfefc3eb6f185dc16f405ba01..04e5f5e9e07f478b25c4e520c29c77717551ada9 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -116,6 +116,7 @@ class LLBottomTray
 	void showMoveButton(BOOL visible);
 	void showCameraButton(BOOL visible);
 	void showSnapshotButton(BOOL visible);
+	void showSpeakButton(bool visible);
 
 	void toggleMovementControls();
 	void toggleCameraControls();
@@ -390,6 +391,13 @@ class LLBottomTray
 	 */
 	bool setVisibleAndFitWidths(EResizeState object_type, bool visible);
 
+	/**
+	 * Get panel containing the given button.
+	 *
+	 * @see mStateProcessedObjectMap
+	 */
+	LLPanel* getButtonPanel(EResizeState button_type);
+
 	/**
 	 * Shows/hides panel with specified well button (IM or Notification)
 	 *
@@ -409,12 +417,21 @@ class LLBottomTray
 	 */
 	void processChatbarCustomization(S32 new_width);
 
+	/// Get button name for debugging.
+	static std::string resizeStateToString(EResizeState state);
 
+	/// Buttons automatically hidden due to lack of space.
 	MASK mResizeState;
 
+	/**
+	 * Mapping of button types to the layout panels the buttons are wrapped in.
+	 *
+	 * Used by getButtonPanel().
+	 */
 	typedef std::map<EResizeState, LLPanel*> state_object_map_t;
 	state_object_map_t mStateProcessedObjectMap;
 
+	/// Default (maximum) widths of the layout panels.
 	typedef std::map<EResizeState, S32> state_object_width_map_t;
 	state_object_width_map_t mObjectDefaultWidthMap;
 
@@ -424,6 +441,7 @@ class LLBottomTray
 	 * Contains order in which child buttons should be processed in show/hide, extend/shrink methods.
 	 */
 	resize_state_vec_t mButtonsProcessOrder;
+
 	/**
 	 * Contains order in which child buttons are shown.
 	 * It traces order of all bottomtray buttons that may change place via drag'n'drop and should
@@ -451,6 +469,7 @@ class LLBottomTray
 	LLSpeakButton* 		mSpeakBtn;
 	LLNearbyChatBar*	mNearbyChatBar;
 	LLLayoutPanel*		mChatBarContainer;
+	LLPanel*		mNearbyCharResizeHandlePanel;
 	LLLayoutStack*		mToolbarStack;
 	LLMenuGL*			mBottomTrayContextMenu;
 	LLButton*			mCamButton;
diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp
index 252c7b51ae1aad6905edae0789255e1f200d6318..c95b046707528ec1d7fb01472d00cbd0e6bd481c 100644
--- a/indra/newview/llfloaterauction.cpp
+++ b/indra/newview/llfloaterauction.cpp
@@ -351,8 +351,8 @@ void LLFloaterAuction::doResetParcel()
 		body["media_height"] = (S32) 0;
 		body["auto_scale"] = (S32) 0;
 		body["media_loop"] = (S32) 0;
-		body["obscure_media"] = (S32) 0;
-		body["obscure_music"] = (S32) 0;
+		body["obscure_media"] = (S32) 0; // OBSOLETE - no longer used
+		body["obscure_music"] = (S32) 0; // OBSOLETE - no longer used
 		body["media_id"] = LLUUID::null;
 		body["group_id"] = MAINTENANCE_GROUP_ID;	// Use maintenance group
 		body["pass_price"] = (S32) 10;		// Defaults to $10
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 370bf05bf791c6a55a5f24d63a17a25cee2d1a67..364fbad193ebb0c39242adf2ce546f4f59ae733e 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -220,6 +220,8 @@ BOOL	LLFloaterTools::postBuild()
 	mRadioGroupEdit		= getChild<LLRadioGroup>("edit_radio_group");
 	mBtnGridOptions		= getChild<LLButton>("Options...");
 	mTitleMedia			= getChild<LLMediaCtrl>("title_media");
+	mBtnLink			= getChild<LLButton>("link_btn");
+	mBtnUnlink			= getChild<LLButton>("unlink_btn");
 	
 	mCheckSelectIndividual	= getChild<LLCheckBoxCtrl>("checkbox edit linked parts");	
 	getChild<LLUICtrl>("checkbox edit linked parts")->setValue((BOOL)gSavedSettings.getBOOL("EditLinkedParts"));
@@ -315,6 +317,9 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)
 	mBtnRotateReset(NULL),
 	mBtnRotateRight(NULL),
 
+	mBtnLink(NULL),
+	mBtnUnlink(NULL),
+
 	mBtnDelete(NULL),
 	mBtnDuplicate(NULL),
 	mBtnDuplicateInPlace(NULL),
@@ -341,7 +346,7 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)
 	mNeedMediaTitle(TRUE)
 {
 	gFloaterTools = this;
-	
+
 	setAutoFocus(FALSE);
 	mFactoryMap["General"] = LLCallbackMap(createPanelPermissions, this);//LLPanelPermissions
 	mFactoryMap["Object"] = LLCallbackMap(createPanelObject, this);//LLPanelObject
@@ -366,6 +371,9 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)
 	mCommitCallbackRegistrar.add("BuildTool.DeleteMedia",		boost::bind(&LLFloaterTools::onClickBtnDeleteMedia,this));
 	mCommitCallbackRegistrar.add("BuildTool.EditMedia",			boost::bind(&LLFloaterTools::onClickBtnEditMedia,this));
 
+	mCommitCallbackRegistrar.add("BuildTool.LinkObjects",		boost::bind(&LLSelectMgr::linkObjects, LLSelectMgr::getInstance()));
+	mCommitCallbackRegistrar.add("BuildTool.UnlinkObjects",		boost::bind(&LLSelectMgr::unlinkObjects, LLSelectMgr::getInstance()));
+
 }
 
 LLFloaterTools::~LLFloaterTools()
@@ -566,6 +574,12 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
 	bool linked_parts = gSavedSettings.getBOOL("EditLinkedParts");
 	getChildView("RenderingCost")->setVisible( !linked_parts && (edit_visible || focus_visible || move_visible) && sShowObjectCost);
 
+	mBtnLink->setVisible(edit_visible);
+	mBtnUnlink->setVisible(edit_visible);
+
+	mBtnLink->setEnabled(LLSelectMgr::instance().enableLinkObjects());
+	mBtnUnlink->setEnabled(LLSelectMgr::instance().enableUnlinkObjects());
+
 	if (mCheckSelectIndividual)
 	{
 		mCheckSelectIndividual->setVisible(edit_visible);
diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h
index 87c3d2ab47c71c39c48bcdcc38fedd35655f1233..fd81a75397f6e1f71c48deda06c30ce0cb56a53f 100644
--- a/indra/newview/llfloatertools.h
+++ b/indra/newview/llfloatertools.h
@@ -135,6 +135,8 @@ class LLFloaterTools
 	LLRadioGroup*	mRadioGroupEdit;
 
 	LLCheckBoxCtrl	*mCheckSelectIndividual;
+	LLButton*		mBtnLink;
+	LLButton*		mBtnUnlink;
 
 	LLCheckBoxCtrl*	mCheckSnapToGrid;
 	LLButton*		mBtnGridOptions;
diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp
index e9f1e3bc22d364f00bec70fabd5c0be72358c8e0..70e789f490992adbae3e74f603cb7ffa46cc5248 100644
--- a/indra/newview/llfriendcard.cpp
+++ b/indra/newview/llfriendcard.cpp
@@ -28,6 +28,7 @@
 
 #include "llfriendcard.h"
 
+#include "llagent.h"
 #include "llavatarnamecache.h"
 #include "llinventory.h"
 #include "llinventoryfunctions.h"
@@ -290,58 +291,6 @@ void LLFriendCardsManager::syncFriendCardsFolders()
 			boost::bind(&LLFriendCardsManager::ensureFriendsFolderExists, this));
 }
 
-void LLFriendCardsManager::collectFriendsLists(folderid_buddies_map_t& folderBuddiesMap) const
-{
-	folderBuddiesMap.clear();
-
-	static bool syncronize_friends_folders = true;
-	if (syncronize_friends_folders)
-	{
-		// Checks whether "Friends" and "Friends/All" folders exist in "Calling Cards" folder,
-		// fetches their contents if needed and synchronizes it with buddies list.
-		// If the folders are not found they are created.
-		LLFriendCardsManager::instance().syncFriendCardsFolders();
-		syncronize_friends_folders = false;
-	}
-
-
-	LLInventoryModel::cat_array_t* listFolders;
-	LLInventoryModel::item_array_t* items;
-
-	// get folders in the Friend folder. Items should be NULL due to Cards should be in lists.
-	gInventory.getDirectDescendentsOf(findFriendFolderUUIDImpl(), listFolders, items);
-
-	if (NULL == listFolders)
-		return;
-
-	LLInventoryModel::cat_array_t::const_iterator itCats;	// to iterate Friend Lists (categories)
-	LLInventoryModel::item_array_t::const_iterator itBuddy;	// to iterate Buddies in each List
-	LLInventoryModel::cat_array_t* fakeCatsArg;
-	for (itCats = listFolders->begin(); itCats != listFolders->end(); ++itCats)
-	{
-		if (items)
-			items->clear();
-
-		// *HACK: Only Friends/All content will be shown for now
-		// *TODO: Remove this hack, implement sorting if it will be needded by spec.
-		if ((*itCats)->getUUID() != findFriendAllSubfolderUUIDImpl())
-			continue;
-
-		gInventory.getDirectDescendentsOf((*itCats)->getUUID(), fakeCatsArg, items);
-
-		if (NULL == items)
-			continue;
-
-		uuid_vec_t buddyUUIDs;
-		for (itBuddy = items->begin(); itBuddy != items->end(); ++itBuddy)
-		{
-			buddyUUIDs.push_back((*itBuddy)->getCreatorUUID());
-		}
-
-		folderBuddiesMap.insert(make_pair((*itCats)->getUUID(), buddyUUIDs));
-	}
-}
-
 
 /************************************************************************/
 /*		Private Methods                                                 */
@@ -499,23 +448,43 @@ void LLFriendCardsManager::syncFriendsFolder()
 	LLAvatarTracker::buddy_map_t all_buddies;
 	LLAvatarTracker::instance().copyBuddyList(all_buddies);
 
-	// 1. Remove Friend Cards for non-friends
+	// 1. Check if own calling card exists
 	LLInventoryModel::cat_array_t cats;
 	LLInventoryModel::item_array_t items;
 
-	gInventory.collectDescendents(findFriendAllSubfolderUUIDImpl(), cats, items, LLInventoryModel::EXCLUDE_TRASH);
+	LLUUID friends_all_folder_id = findFriendAllSubfolderUUIDImpl();
+	gInventory.collectDescendents(friends_all_folder_id, cats, items, LLInventoryModel::EXCLUDE_TRASH);
 
+	bool own_callingcard_found = false;
 	LLInventoryModel::item_array_t::const_iterator it;
 	for (it = items.begin(); it != items.end(); ++it)
 	{
-		lldebugs << "Check if buddy is in list: " << (*it)->getName() << " " << (*it)->getCreatorUUID() << llendl;
-		if (NULL == get_ptr_in_map(all_buddies, (*it)->getCreatorUUID()))
+		if ((*it)->getCreatorUUID() == gAgentID)
 		{
-			lldebugs << "NONEXISTS, so remove it" << llendl;
-			removeFriendCardFromInventory((*it)->getCreatorUUID());
+			own_callingcard_found = true;
+			break;
 		}
 	}
 
+	// Create own calling card if it was not found in Friends/All folder
+	if (!own_callingcard_found)
+	{
+		LLAvatarName av_name;
+		LLAvatarNameCache::get( gAgentID, &av_name );
+
+		create_inventory_item(gAgentID,
+							  gAgent.getSessionID(),
+							  friends_all_folder_id,
+							  LLTransactionID::tnull,
+							  av_name.getCompleteName(),
+							  gAgentID.asString(),
+							  LLAssetType::AT_CALLINGCARD,
+							  LLInventoryType::IT_CALLINGCARD,
+							  NOT_WEARABLE,
+							  PERM_MOVE | PERM_TRANSFER,
+							  NULL);
+	}
+
 	// 2. Add missing Friend Cards for friends
 	LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin();
 	llinfos << "try to build friends, count: " << all_buddies.size() << llendl;
diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h
index b7f0bada14cde419ca7c1baa94ce1c9c135e4edc..48a9f70079ab2e2d517e474b97ea5a190dc8454a 100644
--- a/indra/newview/llfriendcard.h
+++ b/indra/newview/llfriendcard.h
@@ -79,19 +79,6 @@ class LLFriendCardsManager
 	 */
 	void syncFriendCardsFolders();
 
-	/*!
-	 * \brief
-	 * Collects folders' IDs with the buddies' IDs in the Inventory Calling Card/Friends folder.
-	 * 
-	 * \param folderBuddiesMap
-	 * map into collected data will be put. It will be cleared before adding new data.
-	 * 
-	 * Each item in the out map is a pair where first is an LLViewerInventoryCategory UUID,
-	 * second is a vector with UUID of Avatars from this folder.
-	 * 
-	 */
-	void collectFriendsLists(folderid_buddies_map_t& folderBuddiesMap) const;
-
 private:
 	typedef boost::function<void()> callback_t;
 
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 61d0a150b719603072987d96288f4fed97d4b559..ba9bea02b9ae26c376bbe9ebe7e1e8b9f1c09c2d 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -483,9 +483,6 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(const LLInventoryIte
 
 	switch(item->getType())
 	{
-		case LLAssetType::AT_CALLINGCARD:
-			return false;
-			break;
 		case LLAssetType::AT_OBJECT:
 		case LLAssetType::AT_BODYPART:
 		case LLAssetType::AT_CLOTHING:
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index af8fdb17cfc06f95f6f3f8ebcd5e2ef40c06a53e..a7059eb519be3abc7f7b3fb0dfcf5dc1d5fc673b 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -373,17 +373,19 @@ BOOL LLMuteList::remove(const LLMute& mute, U32 flags)
 		// Must be after erase.
 		setLoaded();  // why is this here? -MG
 	}
-
-	// Clean up any legacy mutes
-	string_set_t::iterator legacy_it = mLegacyMutes.find(mute.mName);
-	if (legacy_it != mLegacyMutes.end())
+	else
 	{
-		// Database representation of legacy mute is UUID null.
-		LLMute mute(LLUUID::null, *legacy_it, LLMute::BY_NAME);
-		updateRemove(mute);
-		mLegacyMutes.erase(legacy_it);
-		// Must be after erase.
-		setLoaded(); // why is this here? -MG
+		// Clean up any legacy mutes
+		string_set_t::iterator legacy_it = mLegacyMutes.find(mute.mName);
+		if (legacy_it != mLegacyMutes.end())
+		{
+			// Database representation of legacy mute is UUID null.
+			LLMute mute(LLUUID::null, *legacy_it, LLMute::BY_NAME);
+			updateRemove(mute);
+			mLegacyMutes.erase(legacy_it);
+			// Must be after erase.
+			setLoaded(); // why is this here? -MG
+		}
 	}
 	
 	return found;
@@ -607,7 +609,8 @@ BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) c
 	}
 
 	// empty names can't be legacy-muted
-	if (name.empty()) return FALSE;
+	bool avatar = mute_object && mute_object->isAvatar();
+	if (name.empty() || avatar) return FALSE;
 
 	// Look in legacy pile
 	string_set_t::const_iterator legacy_it = mLegacyMutes.find(name);
diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
index 38100aa6c5623206a67ef86b2699c4b717a4f45d..afceb58ccf2a98bfdf1d061f3273df8f0247851e 100644
--- a/indra/newview/llnamelistctrl.cpp
+++ b/indra/newview/llnamelistctrl.cpp
@@ -143,6 +143,30 @@ void	LLNameListCtrl::mouseOverHighlightNthItem( S32 target_index )
 	S32 cur_index = getHighlightedItemInx();
 	if (cur_index != target_index)
 	{
+		bool is_mouse_over_name_cell = false;
+
+		S32 mouse_x, mouse_y;
+		LLUI::getMousePositionLocal(this, &mouse_x, &mouse_y);
+
+		S32 column_index = getColumnIndexFromOffset(mouse_x);
+		LLScrollListItem* hit_item = hitItem(mouse_x, mouse_y);
+		if (hit_item && column_index == mNameColumnIndex)
+		{
+			// Get the name cell which is currently under the mouse pointer.
+			LLScrollListCell* hit_cell = hit_item->getColumn(column_index);
+			if (hit_cell)
+			{
+				is_mouse_over_name_cell = getCellRect(cur_index, column_index).pointInRect(mouse_x, mouse_y);
+			}
+		}
+
+		// If the tool tip is visible and the mouse is over the currently highlighted item's name cell,
+		// we should not reset the highlighted item index i.e. set mHighlightedItem = -1
+		// and should not increase the width of the text inside the cell because it may
+		// overlap the tool tip icon.
+		if (LLToolTipMgr::getInstance()->toolTipVisible() && is_mouse_over_name_cell)
+			return;
+
 		if(0 <= cur_index && cur_index < (S32)getItemList().size())
 		{
 			LLScrollListItem* item = getItemList()[cur_index];
diff --git a/indra/newview/llpanellandaudio.cpp b/indra/newview/llpanellandaudio.cpp
index 5a943bc61dffcd54b649e7c21d76defb2b493567..f9730d9b71b03730dba6469b1bd7330f2a49332b 100644
--- a/indra/newview/llpanellandaudio.cpp
+++ b/indra/newview/llpanellandaudio.cpp
@@ -91,9 +91,6 @@ BOOL LLPanelLandAudio::postBuild()
 	mMusicURLEdit = getChild<LLLineEditor>("music_url");
 	childSetCommitCallback("music_url", onCommitAny, this);
 
-	mMusicUrlCheck = getChild<LLCheckBoxCtrl>("hide_music_url");
-	childSetCommitCallback("hide_music_url", onCommitAny, this);
-
 	return TRUE;
 }
 
@@ -117,9 +114,6 @@ void LLPanelLandAudio::refresh()
 		mCheckSoundLocal->set( parcel->getSoundLocal() );
 		mCheckSoundLocal->setEnabled( can_change_media );
 
-		mMusicUrlCheck->set( parcel->getObscureMusic() );
-		mMusicUrlCheck->setEnabled( can_change_media );
-
 		bool allow_voice = parcel->getParcelFlagAllowVoice();
 
 		LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
@@ -148,13 +142,6 @@ void LLPanelLandAudio::refresh()
 		mCheckParcelEnableVoice->set(allow_voice);
 		mCheckParcelVoiceLocal->set(!parcel->getParcelFlagUseEstateVoiceChannel());
 
-		// don't display urls if you're not able to change it
-		// much requested change in forums so people can't 'steal' urls
-		// NOTE: bug#2009 means this is still vunerable - however, bug
-		// should be closed since this bug opens up major security issues elsewhere.
-		bool obscure_music = ! can_change_media && parcel->getObscureMusic();
-		
-		mMusicURLEdit->setDrawAsterixes(obscure_music);
 		mMusicURLEdit->setText(parcel->getMusicURL());
 		mMusicURLEdit->setEnabled( can_change_media );
 	}
@@ -173,7 +160,6 @@ void LLPanelLandAudio::onCommitAny(LLUICtrl*, void *userdata)
 	// Extract data from UI
 	BOOL sound_local		= self->mCheckSoundLocal->get();
 	std::string music_url	= self->mMusicURLEdit->getText();
-	U8 obscure_music		= self->mMusicUrlCheck->get();
 
 	BOOL voice_enabled = self->mCheckParcelEnableVoice->get();
 	BOOL voice_estate_chan = !self->mCheckParcelVoiceLocal->get();
@@ -186,7 +172,6 @@ void LLPanelLandAudio::onCommitAny(LLUICtrl*, void *userdata)
 	parcel->setParcelFlag(PF_USE_ESTATE_VOICE_CHAN, voice_estate_chan);
 	parcel->setParcelFlag(PF_SOUND_LOCAL, sound_local);
 	parcel->setMusicURL(music_url);
-	parcel->setObscureMusic(obscure_music);
 
 	// Send current parcel data upstream to server
 	LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
diff --git a/indra/newview/llpanellandmedia.cpp b/indra/newview/llpanellandmedia.cpp
index f17defda5524ead4242349f12d2eb7a19ce152c0..b3adfac8a246eb87737c567e4438220209cf3d76 100644
--- a/indra/newview/llpanellandmedia.cpp
+++ b/indra/newview/llpanellandmedia.cpp
@@ -68,8 +68,7 @@ LLPanelLandMedia::LLPanelLandMedia(LLParcelSelectionHandle& parcel)
 	mMediaSizeCtrlLabel(NULL),
 	mMediaTextureCtrl(NULL),
 	mMediaAutoScaleCheck(NULL),
-	mMediaLoopCheck(NULL),
-	mMediaUrlCheck(NULL)
+	mMediaLoopCheck(NULL)
 {
 }
 
@@ -94,9 +93,6 @@ BOOL LLPanelLandMedia::postBuild()
 	mMediaLoopCheck = getChild<LLCheckBoxCtrl>("media_loop");
 	childSetCommitCallback("media_loop", onCommitAny, this );
 
-	mMediaUrlCheck = getChild<LLCheckBoxCtrl>("hide_media_url");
-	childSetCommitCallback("hide_media_url", onCommitAny, this );
-
 	mMediaURLEdit = getChild<LLLineEditor>("media_url");
 	childSetCommitCallback("media_url", onCommitAny, this );
 
@@ -153,25 +149,6 @@ void LLPanelLandMedia::refresh()
 		mMediaTypeCombo->setEnabled( can_change_media );
 		getChild<LLUICtrl>("mime_type")->setValue(mime_type);
 
-		mMediaUrlCheck->set( parcel->getObscureMedia() );
-		mMediaUrlCheck->setEnabled( can_change_media );
-
-		// don't display urls if you're not able to change it
-		// much requested change in forums so people can't 'steal' urls
-		// NOTE: bug#2009 means this is still vunerable - however, bug
-		// should be closed since this bug opens up major security issues elsewhere.
-		bool obscure_media = ! can_change_media && parcel->getObscureMedia();
-
-		// Special code to disable asterixes for html type
-		if(mime_type == "text/html")
-		{
-			obscure_media = false;
-			mMediaUrlCheck->set( 0 );
-			mMediaUrlCheck->setEnabled( false );
-		}
-
-		mMediaURLEdit->setDrawAsterixes( obscure_media );
-
 		mMediaAutoScaleCheck->set( parcel->getMediaAutoScale () );
 		mMediaAutoScaleCheck->setEnabled ( can_change_media );
 
@@ -301,7 +278,6 @@ void LLPanelLandMedia::onCommitAny(LLUICtrl*, void *userdata)
 	std::string mime_type	= self->getChild<LLUICtrl>("mime_type")->getValue().asString();
 	U8 media_auto_scale		= self->mMediaAutoScaleCheck->get();
 	U8 media_loop           = self->mMediaLoopCheck->get();
-	U8 obscure_media		= self->mMediaUrlCheck->get();
 	S32 media_width			= (S32)self->mMediaWidthCtrl->get();
 	S32 media_height		= (S32)self->mMediaHeightCtrl->get();
 	LLUUID media_id			= self->mMediaTextureCtrl->getImageAssetID();
@@ -321,7 +297,6 @@ void LLPanelLandMedia::onCommitAny(LLUICtrl*, void *userdata)
 	parcel->setMediaID(media_id);
 	parcel->setMediaAutoScale ( media_auto_scale );
 	parcel->setMediaLoop ( media_loop );
-	parcel->setObscureMedia( obscure_media );
 
 	// Send current parcel data upstream to server
 	LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 8d3b1fd7a0dbe0f9ee77c81eaae98ac7ba061db5..3b5830f8e0c71204998e6ae1e395f963a69d50f3 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -81,6 +81,9 @@ const S32 MAX_PASSWORD = 16;
 LLPanelLogin *LLPanelLogin::sInstance = NULL;
 BOOL LLPanelLogin::sCapslockDidNotification = FALSE;
 
+// Helper for converting a user name into the canonical "Firstname Lastname" form.
+// For new accounts without a last name "Resident" is added as a last name.
+static std::string canonicalize_username(const std::string& name);
 
 class LLLoginRefreshHandler : public LLCommandHandler
 {
@@ -298,7 +301,14 @@ void LLPanelLogin::addFavoritesToStartLocation()
 	for (LLSD::map_const_iterator iter = fav_llsd.beginMap();
 		iter != fav_llsd.endMap(); ++iter)
 	{
-		if(iter->first != getChild<LLComboBox>("username_combo")->getSimple()) continue;
+		std::string user_defined_name = getChild<LLComboBox>("username_combo")->getSimple();
+
+		// The account name in stored_favorites.xml has Resident last name even if user has
+		// a single word account name, so it can be compared case-insensitive with the
+		// user defined "firstname lastname".
+		S32 res = LLStringUtil::compareInsensitive(canonicalize_username(user_defined_name), iter->first);
+		if (res != 0) continue;
+
 		combo->addSeparator();
 		LLSD user_llsd = iter->second;
 		for (LLSD::array_const_iterator iter1 = user_llsd.beginArray();
@@ -1156,3 +1166,28 @@ void LLPanelLogin::updateLoginPanelLinks()
 	sInstance->getChildView("create_new_account_text")->setVisible( system_grid);
 	sInstance->getChildView("forgot_password_text")->setVisible( system_grid);
 }
+
+std::string canonicalize_username(const std::string& name)
+{
+	std::string cname = name;
+	LLStringUtil::trim(cname);
+
+	// determine if the username is a first/last form or not.
+	size_t separator_index = cname.find_first_of(" ._");
+	std::string first = cname.substr(0, separator_index);
+	std::string last;
+	if (separator_index != cname.npos)
+	{
+		last = cname.substr(separator_index+1, cname.npos);
+		LLStringUtil::trim(last);
+	}
+	else
+	{
+		// ...on Linden grids, single username users as considered to have
+		// last name "Resident"
+		last = "Resident";
+	}
+
+	// Username in traditional "firstname lastname" form.
+	return first + ' ' + last;
+}
diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
index 14e39f2c48714eea00e81aa9c8a7a982ec0b5e26..a7f1ab28fd6f67fee3c28fac64968328233c7339 100644
--- a/indra/newview/llpanelnearbymedia.cpp
+++ b/indra/newview/llpanelnearbymedia.cpp
@@ -564,16 +564,14 @@ void LLPanelNearByMedia::refreshParcelItems()
 	if (NULL != mParcelMediaItem)
 	{
 		std::string name, url, tooltip;
-		if (!LLViewerParcelMgr::getInstance()->getAgentParcel()->getObscureMedia())
+		getNameAndUrlHelper(LLViewerParcelMedia::getParcelMedia(), name, url, "");
+		if (name.empty() || name == url)
 		{
-			getNameAndUrlHelper(LLViewerParcelMedia::getParcelMedia(), name, url, "");
-			if (name.empty() || name == url)
-			{
-				tooltip = url;
-			}
-			else {
-				tooltip = name + " : " + url;
-			}
+			tooltip = url;
+		}
+		else
+		{
+			tooltip = name + " : " + url;
 		}
 		LLViewerMediaImpl *impl = LLViewerParcelMedia::getParcelMedia();
 		updateListItem(mParcelMediaItem,
@@ -611,10 +609,8 @@ void LLPanelNearByMedia::refreshParcelItems()
 		bool is_playing = LLViewerMedia::isParcelAudioPlaying();
 	
 		std::string url;
-		if (!LLViewerParcelMgr::getInstance()->getAgentParcel()->getObscureMusic())
-		{
-			url = LLViewerMedia::getParcelAudioURL();
-		}
+        url = LLViewerMedia::getParcelAudioURL();
+
 		updateListItem(mParcelAudioItem,
 					   mParcelAudioName,
 					   url,
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index b07a46a222170565f15a243cfc67b95a72650155..b52f33ec3b62eddb0decddad0c1976612bce6473 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -384,6 +384,16 @@ class LLFriendListUpdater : public LLAvatarListUpdater, public LLFriendObserver
 		{
 			lldebugs << "Inventory changed: " << mask << llendl;
 
+			static bool synchronize_friends_folders = true;
+			if (synchronize_friends_folders)
+			{
+				// Checks whether "Friends" and "Friends/All" folders exist in "Calling Cards" folder,
+				// fetches their contents if needed and synchronizes it with buddies list.
+				// If the folders are not found they are created.
+				LLFriendCardsManager::instance().syncFriendCardsFolders();
+				synchronize_friends_folders = false;
+			}
+
 			// *NOTE: deleting of InventoryItem is performed via moving to Trash. 
 			// That means LLInventoryObserver::STRUCTURE is present in MASK instead of LLInventoryObserver::REMOVE
 			if ((CALLINGCARD_ADDED & mask) == CALLINGCARD_ADDED)
@@ -750,18 +760,23 @@ void LLPanelPeople::updateFriendList()
 	all_friendsp.clear();
 	online_friendsp.clear();
 
-	LLFriendCardsManager::folderid_buddies_map_t listMap;
+	uuid_vec_t buddies_uuids;
+	LLAvatarTracker::buddy_map_t::const_iterator buddies_iter;
+
+	// Fill the avatar list with friends UUIDs
+	for (buddies_iter = all_buddies.begin(); buddies_iter != all_buddies.end(); ++buddies_iter)
+	{
+		buddies_uuids.push_back(buddies_iter->first);
+	}
 
-	// *NOTE: For now collectFriendsLists returns data only for Friends/All folder. EXT-694.
-	LLFriendCardsManager::instance().collectFriendsLists(listMap);
-	if (listMap.size() > 0)
+	if (buddies_uuids.size() > 0)
 	{
-		lldebugs << "Friends Cards were found, count: " << listMap.begin()->second.size() << llendl;
-		all_friendsp = listMap.begin()->second;
+		lldebugs << "Friends added to the list: " << buddies_uuids.size() << llendl;
+		all_friendsp = buddies_uuids;
 	}
 	else
 	{
-		lldebugs << "Friends Cards were not found" << llendl;
+		lldebugs << "No friends found" << llendl;
 	}
 
 	LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin();
diff --git a/indra/newview/llrecentpeople.cpp b/indra/newview/llrecentpeople.cpp
index 959fd51bbfdf17f71231c301b2dd3146c4fab8b7..7689cd1a5251e8952a875fbc735e065d84779b11 100644
--- a/indra/newview/llrecentpeople.cpp
+++ b/indra/newview/llrecentpeople.cpp
@@ -33,7 +33,7 @@
 
 using namespace LLOldEvents;
 
-bool LLRecentPeople::add(const LLUUID& id)
+bool LLRecentPeople::add(const LLUUID& id, const LLSD& userdata)
 {
 	if (id == gAgent.getID())
 		return false;
@@ -42,10 +42,16 @@ bool LLRecentPeople::add(const LLUUID& id)
 
 	if (is_not_group_id)
 	{
-		LLDate date_added = LLDate::now();
+		// For each avaline call the id of caller is different even if
+		// the phone number is the same.
+		// To avoid duplication of avaline list items in the recent list
+		// of panel People, deleting id's with similar phone number.
+		const LLUUID& caller_id = getIDByPhoneNumber(userdata);
+		if (caller_id.notNull())
+			mPeople.erase(caller_id);
 
-		//[] instead of insert to replace existing id->date with new date value
-		mPeople[id] = date_added;
+		//[] instead of insert to replace existing id->llsd["date"] with new date value
+		mPeople[id] = userdata;
 		mChangedSignal();
 	}
 
@@ -64,15 +70,55 @@ void LLRecentPeople::get(uuid_vec_t& result) const
 		result.push_back((*pos).first);
 }
 
-const LLDate& LLRecentPeople::getDate(const LLUUID& id) const
+const LLDate LLRecentPeople::getDate(const LLUUID& id) const
 {
 	recent_people_t::const_iterator it = mPeople.find(id);
-	if (it!= mPeople.end()) return (*it).second;
+	if (it!= mPeople.end()) return it->second["date"].asDate();
 
 	static LLDate no_date = LLDate();
 	return no_date;
 }
 
+const LLSD& LLRecentPeople::getData(const LLUUID& id) const
+{
+	recent_people_t::const_iterator it = mPeople.find(id);
+
+	if (it != mPeople.end())
+		return it->second;
+
+	static LLSD no_data = LLSD();
+	return no_data;
+}
+
+bool LLRecentPeople::isAvalineCaller(const LLUUID& id) const
+{
+	recent_people_t::const_iterator it = mPeople.find(id);
+
+	if (it != mPeople.end())
+	{
+		const LLSD& user = it->second;		
+		return user["avaline_call"].asBoolean();
+	}
+
+	return false;
+}
+
+const LLUUID& LLRecentPeople::getIDByPhoneNumber(const LLSD& userdata)
+{
+	if (!userdata["avaline_call"].asBoolean())
+		return LLUUID::null;
+
+	for (recent_people_t::const_iterator it = mPeople.begin(); it != mPeople.end(); ++it)
+	{
+		const LLSD& user_info = it->second;
+		
+		if (user_info["call_number"].asString() == userdata["call_number"].asString())
+			return it->first;
+	}
+	
+	return LLUUID::null;
+}
+
 // virtual
 bool LLRecentPeople::handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
 {
diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h
index 852a92ff80796eac57dfce9b20c3ae20aa0c0bf8..d0d637686749fe2490ea5ef5525c56b07f4eb9d8 100644
--- a/indra/newview/llrecentpeople.h
+++ b/indra/newview/llrecentpeople.h
@@ -58,9 +58,15 @@ class LLRecentPeople: public LLSingleton<LLRecentPeople>, public LLOldEvents::LL
 	 * Add specified avatar to the list if it's not there already.
 	 *
 	 * @param id avatar to add.
+	 *
+	 * @param userdata additional information about last interaction party.
+	 *				   For example when last interaction party is not an avatar
+	 *				   but an avaline caller, additional info (such as phone
+	 *				   number, session id and etc.) should be added.
+	 *
 	 * @return false if the avatar is in the list already, true otherwise
 	 */
-	bool add(const LLUUID& id);
+	bool add(const LLUUID& id, const LLSD& userdata = LLSD().with("date", LLDate::now()));
 
 	/**
 	 * @param id avatar to search.
@@ -75,7 +81,25 @@ class LLRecentPeople: public LLSingleton<LLRecentPeople>, public LLOldEvents::LL
 	 */
 	void get(uuid_vec_t& result) const;
 
-	const LLDate& getDate(const LLUUID& id) const;
+	/**
+	 * Returns last interaction time with specified participant
+	 *
+	 */
+	const LLDate getDate(const LLUUID& id) const;
+
+	/**
+	 * Returns data about specified participant
+	 *
+	 * @param id identifier of specific participant
+	 */
+	const LLSD& getData(const LLUUID& id) const;
+
+	/**
+	 * Checks whether specific participant is an avaline caller
+	 *
+	 * @param id identifier of specific participant
+	 */
+	bool isAvalineCaller(const LLUUID& id) const;
 
 	/**
 	 * Set callback to be called when the list changed.
@@ -92,7 +116,10 @@ class LLRecentPeople: public LLSingleton<LLRecentPeople>, public LLOldEvents::LL
 	/*virtual*/ bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata);
 
 private:
-	typedef std::map<LLUUID, LLDate> recent_people_t;
+
+	const LLUUID& getIDByPhoneNumber(const LLSD& userdata);
+
+	typedef std::map<LLUUID, LLSD> recent_people_t;
 	recent_people_t		mPeople;
 	signal_t			mChangedSignal;
 };
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index da891d1c51526a8fa1bfd68178289db8d3d70029..50bc0b4a9885974bdcab524975ad97b6c98ead0d 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -65,6 +65,7 @@
 #include "llinventorymodel.h"
 #include "llmenugl.h"
 #include "llmutelist.h"
+#include "llnotificationsutil.h"
 #include "llsidepaneltaskinfo.h"
 #include "llslurl.h"
 #include "llstatusbar.h"
@@ -562,6 +563,103 @@ BOOL LLSelectMgr::removeObjectFromSelections(const LLUUID &id)
 	return object_found;
 }
 
+bool LLSelectMgr::linkObjects()
+{
+	if (!LLSelectMgr::getInstance()->selectGetAllRootsValid())
+	{
+		LLNotificationsUtil::add("UnableToLinkWhileDownloading");
+		return true;
+	}
+
+	S32 object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount();
+	if (object_count > MAX_CHILDREN_PER_TASK + 1)
+	{
+		LLSD args;
+		args["COUNT"] = llformat("%d", object_count);
+		int max = MAX_CHILDREN_PER_TASK+1;
+		args["MAX"] = llformat("%d", max);
+		LLNotificationsUtil::add("UnableToLinkObjects", args);
+		return true;
+	}
+
+	if (LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() < 2)
+	{
+		LLNotificationsUtil::add("CannotLinkIncompleteSet");
+		return true;
+	}
+
+	if (!LLSelectMgr::getInstance()->selectGetRootsModify())
+	{
+		LLNotificationsUtil::add("CannotLinkModify");
+		return true;
+	}
+
+	LLUUID owner_id;
+	std::string owner_name;
+	if (!LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name))
+	{
+		// we don't actually care if you're the owner, but novices are
+		// the most likely to be stumped by this one, so offer the
+		// easiest and most likely solution.
+		LLNotificationsUtil::add("CannotLinkDifferentOwners");
+		return true;
+	}
+
+	LLSelectMgr::getInstance()->sendLink();
+
+	return true;
+}
+
+bool LLSelectMgr::unlinkObjects()
+{
+	LLSelectMgr::getInstance()->sendDelink();
+	return true;
+}
+
+// in order to link, all objects must have the same owner, and the
+// agent must have the ability to modify all of the objects. However,
+// we're not answering that question with this method. The question
+// we're answering is: does the user have a reasonable expectation
+// that a link operation should work? If so, return true, false
+// otherwise. this allows the handle_link method to more finely check
+// the selection and give an error message when the uer has a
+// reasonable expectation for the link to work, but it will fail.
+bool LLSelectMgr::enableLinkObjects()
+{
+	bool new_value = false;
+	// check if there are at least 2 objects selected, and that the
+	// user can modify at least one of the selected objects.
+
+	// in component mode, can't link
+	if (!gSavedSettings.getBOOL("EditLinkedParts"))
+	{
+		if(LLSelectMgr::getInstance()->selectGetAllRootsValid() && LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() >= 2)
+		{
+			struct f : public LLSelectedObjectFunctor
+			{
+				virtual bool apply(LLViewerObject* object)
+				{
+					return object->permModify();
+				}
+			} func;
+			const bool firstonly = true;
+			new_value = LLSelectMgr::getInstance()->getSelection()->applyToRootObjects(&func, firstonly);
+		}
+	}
+	return new_value;
+}
+
+bool LLSelectMgr::enableUnlinkObjects()
+{
+	LLViewerObject* first_editable_object = LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject();
+
+	bool new_value = LLSelectMgr::getInstance()->selectGetAllRootsValid() &&
+		first_editable_object &&
+		!first_editable_object->isAttachment();
+
+	return new_value;
+}
+
 void LLSelectMgr::deselectObjectAndFamily(LLViewerObject* object, BOOL send_to_sim, BOOL include_entire_object)
 {
 	// bail if nothing selected or if object wasn't selected in the first place
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index 65a9a493f606f5bd69e39c1c0247c6e9ee95afb7..cb387f5c3c470e3518b14970df16e09b008b34c2 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -439,6 +439,17 @@ class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
 
 	BOOL removeObjectFromSelections(const LLUUID &id);
 
+	////////////////////////////////////////////////////////////////
+	// Selection editing
+	////////////////////////////////////////////////////////////////
+	bool linkObjects();
+
+	bool unlinkObjects();
+
+	bool enableLinkObjects();
+
+	bool enableUnlinkObjects();
+
 	////////////////////////////////////////////////////////////////
 	// Selection accessors
 	////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 8c5a52c1878b3ba475d7761b4d96325a643711fc..3c53e54203c889196be62a0590a015bd3a512fcb 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -309,6 +309,15 @@ static bool handleRenderUseVBOChanged(const LLSD& newvalue)
 	return true;
 }
 
+static bool handleRenderUseVBOMappingChanged(const LLSD& newvalue)
+{
+	if (gPipeline.isInit())
+	{
+		gPipeline.setDisableVBOMapping(newvalue.asBoolean());
+	}
+	return true;
+}
+
 static bool handleWLSkyDetailChanged(const LLSD&)
 {
 	if (gSky.mVOWLSkyp.notNull())
@@ -589,6 +598,7 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("MuteAmbient")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("MuteUI")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("RenderVBOEnable")->getSignal()->connect(boost::bind(&handleRenderUseVBOChanged, _2));
+	gSavedSettings.getControl("RenderVBOMappingDisable")->getSignal()->connect(boost::bind(&handleRenderUseVBOMappingChanged, _2));
 	gSavedSettings.getControl("RenderUseStreamVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
 	gSavedSettings.getControl("WLSkyDetail")->getSignal()->connect(boost::bind(&handleWLSkyDetailChanged, _2));
 	gSavedSettings.getControl("NumpadControl")->getSignal()->connect(boost::bind(&handleNumpadControlChanged, _2));
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 9b02bdbe33881b4d76e9cdc2fbd262b8e8c42da2..900081b8c6b9102f8984f582f451cb1e15e146fb 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -53,7 +53,7 @@
 #include "llwebsharing.h"	// For LLWebSharing::setOpenIDCookie(), *TODO: find a better way to do this!
 #include "llfilepicker.h"
 #include "llnotifications.h"
-#include "lldir_win32.h"
+#include "lldir.h"
 #include "llevent.h"		// LLSimpleListener
 #include "llnotificationsutil.h"
 #include "lluuid.h"
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 7cc04e0338a0e81e8be7c2c3831531e4b471dfed..425fe4eafbccbe87e1a5a5e211f9cfef693f2a0a 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2835,7 +2835,7 @@ class LLObjectMute : public view_listener_t
 		}
 		
 		LLMute mute(id, name, type);
-		if (LLMuteList::getInstance()->isMuted(mute.mID, mute.mName))
+		if (LLMuteList::getInstance()->isMuted(mute.mID))
 		{
 			LLMuteList::getInstance()->remove(mute);
 		}
@@ -4781,110 +4781,6 @@ class LLToolsSelectNextPart : public view_listener_t
 	}
 };
 
-// in order to link, all objects must have the same owner, and the
-// agent must have the ability to modify all of the objects. However,
-// we're not answering that question with this method. The question
-// we're answering is: does the user have a reasonable expectation
-// that a link operation should work? If so, return true, false
-// otherwise. this allows the handle_link method to more finely check
-// the selection and give an error message when the uer has a
-// reasonable expectation for the link to work, but it will fail.
-class LLToolsEnableLink : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		bool new_value = false;
-		// check if there are at least 2 objects selected, and that the
-		// user can modify at least one of the selected objects.
-
-		// in component mode, can't link
-		if (!gSavedSettings.getBOOL("EditLinkedParts"))
-		{
-			if(LLSelectMgr::getInstance()->selectGetAllRootsValid() && LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() >= 2)
-			{
-				struct f : public LLSelectedObjectFunctor
-				{
-					virtual bool apply(LLViewerObject* object)
-					{
-						return object->permModify();
-					}
-				} func;
-				const bool firstonly = true;
-				new_value = LLSelectMgr::getInstance()->getSelection()->applyToRootObjects(&func, firstonly);
-			}
-		}
-		return new_value;
-	}
-};
-
-class LLToolsLink : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		if(!LLSelectMgr::getInstance()->selectGetAllRootsValid())
-		{
-			LLNotificationsUtil::add("UnableToLinkWhileDownloading");
-			return true;
-		}
-
-		S32 object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount();
-		if (object_count > MAX_CHILDREN_PER_TASK + 1)
-		{
-			LLSD args;
-			args["COUNT"] = llformat("%d", object_count);
-			int max = MAX_CHILDREN_PER_TASK+1;
-			args["MAX"] = llformat("%d", max);
-			LLNotificationsUtil::add("UnableToLinkObjects", args);
-			return true;
-		}
-
-		if(LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() < 2)
-		{
-			LLNotificationsUtil::add("CannotLinkIncompleteSet");
-			return true;
-		}
-		if(!LLSelectMgr::getInstance()->selectGetRootsModify())
-		{
-			LLNotificationsUtil::add("CannotLinkModify");
-			return true;
-		}
-		LLUUID owner_id;
-		std::string owner_name;
-		if(!LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name))
-		{
-			// we don't actually care if you're the owner, but novices are
-			// the most likely to be stumped by this one, so offer the
-			// easiest and most likely solution.
-			LLNotificationsUtil::add("CannotLinkDifferentOwners");
-			return true;
-		}
-		LLSelectMgr::getInstance()->sendLink();
-		return true;
-	}
-};
-
-class LLToolsEnableUnlink : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		LLViewerObject* first_editable_object = LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject();
-		bool new_value = LLSelectMgr::getInstance()->selectGetAllRootsValid() &&
-			first_editable_object &&
-			!first_editable_object->isAttachment();
-		return new_value;
-	}
-};
-
-class LLToolsUnlink : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		LLSelectMgr::getInstance()->sendDelink();
-		return true;
-	}
-};
-
-
 class LLToolsStopAllAnimations : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -7902,8 +7798,8 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLToolsSnapObjectXY(), "Tools.SnapObjectXY");
 	view_listener_t::addMenu(new LLToolsUseSelectionForGrid(), "Tools.UseSelectionForGrid");
 	view_listener_t::addMenu(new LLToolsSelectNextPart(), "Tools.SelectNextPart");
-	view_listener_t::addMenu(new LLToolsLink(), "Tools.Link");
-	view_listener_t::addMenu(new LLToolsUnlink(), "Tools.Unlink");
+	commit.add("Tools.Link", boost::bind(&LLSelectMgr::linkObjects, LLSelectMgr::getInstance()));
+	commit.add("Tools.Unlink", boost::bind(&LLSelectMgr::unlinkObjects, LLSelectMgr::getInstance()));
 	view_listener_t::addMenu(new LLToolsStopAllAnimations(), "Tools.StopAllAnimations");
 	view_listener_t::addMenu(new LLToolsReleaseKeys(), "Tools.ReleaseKeys");
 	view_listener_t::addMenu(new LLToolsEnableReleaseKeys(), "Tools.EnableReleaseKeys");	
@@ -7916,8 +7812,8 @@ void initialize_menus()
 
 	view_listener_t::addMenu(new LLToolsEnableToolNotPie(), "Tools.EnableToolNotPie");
 	view_listener_t::addMenu(new LLToolsEnableSelectNextPart(), "Tools.EnableSelectNextPart");
-	view_listener_t::addMenu(new LLToolsEnableLink(), "Tools.EnableLink");
-	view_listener_t::addMenu(new LLToolsEnableUnlink(), "Tools.EnableUnlink");
+	enable.add("Tools.EnableLink", boost::bind(&LLSelectMgr::enableLinkObjects, LLSelectMgr::getInstance()));
+	enable.add("Tools.EnableUnlink", boost::bind(&LLSelectMgr::enableUnlinkObjects, LLSelectMgr::getInstance()));
 	view_listener_t::addMenu(new LLToolsEnableBuyOrTake(), "Tools.EnableBuyOrTake");
 	enable.add("Tools.EnableTakeCopy", boost::bind(&enable_object_take_copy));
 	enable.add("Tools.VisibleBuyObject", boost::bind(&tools_visible_buy_object));
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 103989ee808db75cee7e0b0c7db5d61ad45443b9..947408f125f92a907dd9c8c0c810d8574f5dc5df 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3761,8 +3761,19 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 	}
 	else
 	{
-		// This is likely just the initial logging in phase.
+		// This is initial log-in or a region crossing
 		gAgent.setTeleportState( LLAgent::TELEPORT_NONE );
+
+		if(LLStartUp::getStartupState() < STATE_STARTED)
+		{	// This is initial log-in, not a region crossing:
+			// Set the camera looking ahead of the AV so send_agent_update() below 
+			// will report the correct location to the server.
+			LLVector3 look_at_point = look_at;
+			look_at_point = agent_pos + look_at_point.rotVec(gAgent.getQuat());
+
+			static LLVector3 up_direction(0.0f, 0.0f, 1.0f);
+			LLViewerCamera::getInstance()->lookAt(agent_pos, look_at_point, up_direction);
+		}
 	}
 
 	if ( LLTracker::isTracking(NULL) )
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index 82bc164021de1a2416097239c1ee83dc6b423f2b..81479e8b491dd823fd358954a3eebfc9f18e311a 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -884,13 +884,14 @@ void LLViewerObjectList::clearDebugText()
 void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp)
 {
 	LLMemType mt(LLMemType::MTYPE_OBJECT);
-	if (mDeadObjects.count(objectp->mID))
+	if (mDeadObjects.find(objectp->mID) != mDeadObjects.end())
 	{
-		llinfos << "Object " << objectp->mID << " already on dead list, ignoring cleanup!" << llendl;	
-		return;
+		llinfos << "Object " << objectp->mID << " already on dead list!" << llendl;	
+	}
+	else
+	{
+		mDeadObjects.insert(objectp->mID);
 	}
-
-	mDeadObjects.insert(std::pair<LLUUID, LLPointer<LLViewerObject> >(objectp->mID, objectp));
 
 	// Cleanup any references we have to this object
 	// Remove from object map so noone can look it up.
@@ -1140,6 +1141,45 @@ bool LLViewerObjectList::hasMapObjectInRegion(LLViewerRegion* regionp)
 	return false ;
 }
 
+//make sure the region is cleaned up.
+void LLViewerObjectList::clearAllMapObjectsInRegion(LLViewerRegion* regionp) 
+{
+	std::set<LLViewerObject*> dead_object_list ;
+	std::set<LLViewerObject*> region_object_list ;
+	for (vobj_list_t::iterator iter = mMapObjects.begin(); iter != mMapObjects.end(); ++iter)
+	{
+		LLViewerObject* objectp = *iter;
+
+		if(objectp->isDead())
+		{
+			dead_object_list.insert(objectp) ;			
+		}
+		else if(objectp->getRegion() == regionp)
+		{
+			region_object_list.insert(objectp) ;
+		}
+	}
+
+	if(dead_object_list.size() > 0)
+	{
+		llwarns << "There are " << dead_object_list.size() << " dead objects on the map!" << llendl ;
+
+		for(std::set<LLViewerObject*>::iterator iter = dead_object_list.begin(); iter != dead_object_list.end(); ++iter)
+		{
+			cleanupReferences(*iter) ;
+		}
+	}
+	if(region_object_list.size() > 0)
+	{
+		llwarns << "There are " << region_object_list.size() << " objects not removed from the deleted region!" << llendl ;
+
+		for(std::set<LLViewerObject*>::iterator iter = region_object_list.begin(); iter != region_object_list.end(); ++iter)
+		{
+			(*iter)->markDead() ;
+		}
+	}
+}
+
 void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)
 {
 	LLColor4 above_water_color = LLUIColorTable::instance().getColor( "NetMapOtherOwnAboveWater" );
@@ -1159,7 +1199,11 @@ void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)
 	{
 		LLViewerObject* objectp = *iter;
 
-		llassert_always(!objectp->isDead());
+		//llassert_always(!objectp->isDead());
+		if(objectp->isDead())//some dead objects somehow not cleaned.
+		{
+			continue ;
+		}
 
 		if (!objectp->getRegion() || objectp->isOrphaned() || objectp->isAttachment())
 		{
diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h
index 8cff8e988aa455eba3ed18ccdeae58874f04af2d..22a7f97c38e5474aad34ef01e28654efa6b8340a 100644
--- a/indra/newview/llviewerobjectlist.h
+++ b/indra/newview/llviewerobjectlist.h
@@ -88,6 +88,7 @@ class LLViewerObjectList
 	void shiftObjects(const LLVector3 &offset);
 
 	bool hasMapObjectInRegion(LLViewerRegion* regionp) ;
+	void clearAllMapObjectsInRegion(LLViewerRegion* regionp) ;
 	void renderObjectsForMap(LLNetMap &netmap);
 	void renderObjectBounds(const LLVector3 &center);
 
@@ -181,8 +182,7 @@ class LLViewerObjectList
 
 	vobj_list_t mMapObjects;
 
-	typedef std::map<LLUUID, LLPointer<LLViewerObject> > vo_map;
-	vo_map mDeadObjects;	// Need to keep multiple entries per UUID
+	std::set<LLUUID> mDeadObjects;	
 
 	std::map<LLUUID, LLPointer<LLViewerObject> > mUUIDObjectMap;
 
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index cd16b15e3ef56cc38e4ef5fb8d2aff053eba8d7b..cf7f3f80adc11cd56ce166b649e56009d66bc24e 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -2691,12 +2691,10 @@ void LLViewerFetchedTexture::saveRawImage()
 	mLastReferencedSavedRawImageTime = sCurrentTime ;
 }
 
-void LLViewerFetchedTexture::forceToSaveRawImage(S32 desired_discard, bool from_callback) 
+void LLViewerFetchedTexture::forceToSaveRawImage(S32 desired_discard) 
 { 
 	if(!mForceToSaveRawImage || mDesiredSavedRawDiscardLevel < 0 || mDesiredSavedRawDiscardLevel > desired_discard)
 	{
-		llassert_always(from_callback || mBoostLevel == LLViewerTexture::BOOST_PREVIEW) ;
-
 		mForceToSaveRawImage = TRUE ;
 		mDesiredSavedRawDiscardLevel = desired_discard ;
 	
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index b5636bbdc71e090b8575818dfd21a912023685d3..d512f8ec3abc4f03a34a20aa4fbc8e4e5f28baf7 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -465,7 +465,7 @@ class LLViewerFetchedTexture : public LLViewerTexture
 	S32         getCachedRawImageLevel() const {return mCachedRawDiscardLevel;}
 	BOOL        isCachedRawImageReady() const {return mCachedRawImageReady ;}
 	BOOL        isRawImageValid()const { return mIsRawImageValid ; }	
-	void        forceToSaveRawImage(S32 desired_discard = 0, bool from_callback = false) ;
+	void        forceToSaveRawImage(S32 desired_discard = 0) ;
 	/*virtual*/ void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) ;
 	void        destroySavedRawImage() ;
 	LLImageRaw* getSavedRawImage() ;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 274dbe2cc8f1ca78a879c1d8d3bdfa945ad15c33..62944a22e7e8ce9a46c5f568e996890b67f1b5d1 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -316,6 +316,14 @@ class LLDebugText
 		std::string rwind_vector_text;
 		std::string audio_text;
 
+		static const std::string beacon_particle = LLTrans::getString("BeaconParticle");
+		static const std::string beacon_physical = LLTrans::getString("BeaconPhysical");
+		static const std::string beacon_scripted = LLTrans::getString("BeaconScripted");
+		static const std::string beacon_scripted_touch = LLTrans::getString("BeaconScriptedTouch");
+		static const std::string beacon_sound = LLTrans::getString("BeaconSound");
+		static const std::string beacon_media = LLTrans::getString("BeaconMedia");
+		static const std::string particle_hiding = LLTrans::getString("ParticleHiding");
+
 		// Draw the statistics in a light gray
 		// and in a thin font
 		mTextColor = LLColor4( 0.86f, 0.86f, 0.86f, 1.f );
@@ -566,33 +574,33 @@ class LLDebugText
 		{
 			if (LLPipeline::getRenderParticleBeacons(NULL))
 			{
-				addText(xpos, ypos, "Viewing particle beacons (blue)");
+				addText(xpos, ypos, beacon_particle);
 				ypos += y_inc;
 			}
 			if (LLPipeline::toggleRenderTypeControlNegated((void*)LLPipeline::RENDER_TYPE_PARTICLES))
 			{
-				addText(xpos, ypos, "Hiding particles");
+				addText(xpos, ypos, particle_hiding);
 				ypos += y_inc;
 			}
 			if (LLPipeline::getRenderPhysicalBeacons(NULL))
 			{
-				addText(xpos, ypos, "Viewing physical object beacons (green)");
+				addText(xpos, ypos, beacon_physical);
 				ypos += y_inc;
 			}
 			if (LLPipeline::getRenderScriptedBeacons(NULL))
 			{
-				addText(xpos, ypos, "Viewing scripted object beacons (red)");
+				addText(xpos, ypos, beacon_scripted);
 				ypos += y_inc;
 			}
 			else
 				if (LLPipeline::getRenderScriptedTouchBeacons(NULL))
 				{
-					addText(xpos, ypos, "Viewing scripted object with touch function beacons (red)");
+					addText(xpos, ypos, beacon_scripted_touch);
 					ypos += y_inc;
 				}
 			if (LLPipeline::getRenderSoundBeacons(NULL))
 			{
-				addText(xpos, ypos, "Viewing sound beacons (yellow)");
+				addText(xpos, ypos, beacon_sound);
 				ypos += y_inc;
 			}
 		}
@@ -1477,7 +1485,7 @@ LLViewerWindow::LLViewerWindow(
 	{
 		gSavedSettings.setBOOL("RenderVBOEnable", FALSE);
 	}
-	LLVertexBuffer::initClass(gSavedSettings.getBOOL("RenderVBOEnable"));
+	LLVertexBuffer::initClass(gSavedSettings.getBOOL("RenderVBOEnable"), gSavedSettings.getBOOL("RenderVBOMappingDisable"));
 
 	if (LLFeatureManager::getInstance()->isSafe()
 		|| (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion())
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index a93350070627ac74eb5747c89756ff7f7e8bbb8c..b888a263d0c863c1d7f3ea15e9c4d90e0dc1d98c 100644
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -71,6 +71,7 @@ LLVOCacheEntry::LLVOCacheEntry()
 }
 
 LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file)
+	: mBuffer(NULL)
 {
 	S32 size = -1;
 	BOOL success;
@@ -135,7 +136,10 @@ LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file)
 
 LLVOCacheEntry::~LLVOCacheEntry()
 {
-	delete [] mBuffer;
+	if(mBuffer)
+	{
+		delete[] mBuffer;
+	}
 }
 
 
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index b692093fb9bf8afe2964678210b306d8d7252e41..a71539266d6c8a6d6febc8bc48efd01c04122524 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -853,7 +853,7 @@ void LLVoiceChannelP2P::activate()
 		}
 
 		// Add the party to the list of people with which we've recently interacted.
-		LLRecentPeople::instance().add(mOtherUserID);
+		addToTheRecentPeopleList();
 
 		//Default mic is ON on initiating/joining P2P calls
 		if (!LLVoiceClient::getInstance()->getUserPTTState() && LLVoiceClient::getInstance()->getPTTIsToggle())
@@ -938,3 +938,25 @@ void LLVoiceChannelP2P::setState(EState state)
 
 	LLVoiceChannel::setState(state);
 }
+
+void LLVoiceChannelP2P::addToTheRecentPeopleList()
+{
+	bool avaline_call = LLIMModel::getInstance()->findIMSession(mSessionID)->isAvalineSessionType();
+	
+	if (avaline_call)
+	{
+		LLSD call_data;
+		std::string call_number = LLVoiceChannel::getSessionName();
+		
+		call_data["avaline_call"]	= true;
+		call_data["session_id"]		= mSessionID;
+		call_data["call_number"]	= call_number;
+		call_data["date"]			= LLDate::now();
+		
+		LLRecentPeople::instance().add(mOtherUserID, call_data);
+	}
+	else
+	{
+		LLRecentPeople::instance().add(mOtherUserID);
+	}
+}
diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h
index 7cef3c13d1d7d011ccb7f484812b59c733a720fc..b8597ee5cb34007dac7f1dd5864dd86bd361b6e8 100644
--- a/indra/newview/llvoicechannel.h
+++ b/indra/newview/llvoicechannel.h
@@ -191,6 +191,13 @@ class LLVoiceChannelP2P : public LLVoiceChannelGroup
 	virtual void setState(EState state);
 
 private:
+
+	/**
+	* Add the caller to the list of people with which we've recently interacted
+	*
+	**/
+	void addToTheRecentPeopleList();
+
 	std::string	mSessionHandle;
 	LLUUID		mOtherUserID;
 	BOOL		mReceivedCall;
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index 9db6d5e08ce5b41cfd05b296fdd3f8401e600792..8f7197c60758e5d95aa65ccfeb0e51c7d08ad75e 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -282,7 +282,9 @@ void LLWorld::removeRegion(const LLHost &host)
 
 	updateWaterObjects();
 
-	llassert_always(!gObjectList.hasMapObjectInRegion(regionp)) ;
+	//double check all objects of this region are removed.
+	gObjectList.clearAllMapObjectsInRegion(regionp) ;
+	//llassert_always(!gObjectList.hasMapObjectInRegion(regionp)) ;
 }
 
 
@@ -1474,6 +1476,42 @@ void LLWorld::getAvatars(uuid_vec_t* avatar_ids, std::vector<LLVector3d>* positi
 			}
 		}
 	}
+	// retrieve the list of close avatars from viewer objects as well
+	// for when we are above 1000m, only do this when we are retrieving
+	// uuid's too as there could be duplicates
+	if(avatar_ids != NULL)
+	{
+		for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
+			iter != LLCharacter::sInstances.end(); ++iter)
+		{
+			LLVOAvatar* pVOAvatar = (LLVOAvatar*) *iter;
+			if(pVOAvatar->isDead() || pVOAvatar->isSelf())
+				continue;
+			LLUUID uuid = pVOAvatar->getID();
+			if(uuid.isNull())
+				continue;
+			LLVector3d pos_global = pVOAvatar->getPositionGlobal();
+			if(dist_vec(pos_global, relative_to) <= radius)
+			{
+				bool found = false;
+				uuid_vec_t::iterator sel_iter = avatar_ids->begin();
+				for (; sel_iter != avatar_ids->end(); sel_iter++)
+				{
+					if(*sel_iter == uuid)
+					{
+						found = true;
+						break;
+					}
+				}
+				if(!found)
+				{
+					if(positions != NULL)
+						positions->push_back(pos_global);
+					avatar_ids->push_back(uuid);
+				}
+			}
+		}
+	}
 }
 
 
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 39bc35425074a54a173c23658a3f12dd8d5b9e86..13e537fae59a4935c44557008cc3a8fc47fdd4d4 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -5313,7 +5313,25 @@ void LLPipeline::setUseVBO(BOOL use_vbo)
 		}
 		
 		resetVertexBuffers();
-		LLVertexBuffer::initClass(use_vbo);
+		LLVertexBuffer::initClass(use_vbo, gSavedSettings.getBOOL("RenderVBOMappingDisable"));
+	}
+}
+
+void LLPipeline::setDisableVBOMapping(BOOL no_vbo_mapping)
+{
+	if (LLVertexBuffer::sEnableVBOs && no_vbo_mapping != LLVertexBuffer::sDisableVBOMapping)
+	{
+		if (no_vbo_mapping)
+		{
+			llinfos << "Disabling VBO glMapBufferARB." << llendl;
+		}
+		else
+		{ 
+			llinfos << "Enabling VBO glMapBufferARB." << llendl;
+		}
+		
+		resetVertexBuffers();
+		LLVertexBuffer::initClass(true, no_vbo_mapping);
 	}
 }
 
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index cef3d87f3605c84c554d51a09ad755d35a69e175..e99b0d71e3f632163e0d03be3dd6f663089ebe1a 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -111,6 +111,7 @@ class LLPipeline
 
 	void resetVertexBuffers(LLDrawable* drawable);
 	void setUseVBO(BOOL use_vbo);
+	void setDisableVBOMapping(BOOL no_vbo_mapping);
 	void generateImpostor(LLVOAvatar* avatar);
 	void bindScreenToTexture();
 	void renderBloom(BOOL for_snapshot, F32 zoom_factor = 1.f, int subfield = 0);
diff --git a/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png b/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b58db0cba8c3230b38fd551f5487c1cf444afd5
Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/ChatBarHandle.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 7b3cc7bdfa7079db4dd36a73e8c23dfeb42fa798..cec2942b35af5f6d920c51a30f9f1a633b5f255a 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -115,6 +115,7 @@ with the same filename but different name
   
   <texture name="DisclosureArrow_Opened_Off" file_name="widgets/DisclosureArrow_Opened_Off.png" preload="true" />
 
+  <texture name="ChatBarHandle" file_name="bottomtray/ChatBarHandle.png" preload="false" />
   <texture name="DownArrow" file_name="bottomtray/DownArrow.png" preload="false" />
   <texture name="DownArrow_Off" file_name="icons/DownArrow_Off.png" preload="false" />
   <texture name="Dragbar" file_name="windows/Dragbar.png" preload="false" scale.left="35" scale.top="5" scale.right="29" scale.bottom="5" />
diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml
index a096a87928d3444593062baa9c3416b05db67d7c..e78924a1ab50b5457330a808ff16706016198143 100644
--- a/indra/newview/skins/default/xui/da/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/da/floater_about_land.xml
@@ -87,15 +87,9 @@ Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel
 			<text name="Owner:">
 				Ejer:
 			</text>
-			<text name="OwnerText">
-				Leyla Linden
-			</text>
 			<text name="Group:">
 				Gruppe:
 			</text>
-			<text name="GroupText">
-				Leyla Linden
-			</text>
 			<button label="Vælg" name="Set..."/>
 			<check_box label="Tillad dedikering til gruppe" name="check deed" tool_tip="En gruppe administrator kan dedikere denne jord til gruppen, så det vil blive støttet af gruppen&apos;s jord tildeling."/>
 			<button label="Dedikér" name="Deed..." tool_tip="Du kan kun dedikere jord, hvis du er en administrator i den valgte gruppe."/>
@@ -396,7 +390,6 @@ Kun større parceller kan vises i søgning.
 				Hjemmeside:
 			</text>
 			<button label="Vælg" name="set_media_url"/>
-			<check_box label="Skjul medie URL" name="hide_media_url" tool_tip="Klik her for at skjule medie adressen så det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/>
 			<text left="4" name="Description:">
 				Beskrivelse:
 			</text>
@@ -424,7 +417,6 @@ Kun større parceller kan vises i søgning.
 			<check_box label="Gentag afspil" name="media_loop" tool_tip="Gentager automatisk medie, når det er færdigt med at spille starter det automatisk forfra."/>
 		</panel>
 		<panel label="LYD" name="land_audio_panel">
-			<check_box label="Skjul URL" name="hide_music_url" tool_tip="Ved at vælge her, vil musik URL skjules for alle ikke autoriserede brugere der læser denne parcels information."/>
 			<check_box label="Tillad stemmer" name="parcel_enable_voice_channel"/>
 			<check_box label="Tillad stemmer (håndteret af estate)" name="parcel_enable_voice_channel_is_estate_disabled"/>
 			<check_box label="Begræns stemme chat til denne parcel" name="parcel_enable_voice_channel_local"/>
diff --git a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
index fa36fab762f0960bd6aa236d1465b1021ca8b734..59dcc87140a4e0844514ab25c10b50d84df5fd78 100644
--- a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
@@ -24,16 +24,10 @@
 	<text name="LabelCreatorTitle">
 		Skaber:
 	</text>
-	<text name="LabelCreatorName">
-		Nicole Linden
-	</text>
 	<button label="Profil..." label_selected="" name="BtnCreator"/>
 	<text name="LabelOwnerTitle">
 		Ejer:
 	</text>
-	<text name="LabelOwnerName">
-		Thrax Linden
-	</text>
 	<button label="Profil..." label_selected="" name="BtnOwner"/>
 	<text name="LabelAcquiredTitle">
 		Erhvervet:
diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml
index 781adcd50b447140ff4b8f881b593ce35374b445..9e673d0d5b958d81c727b2a04bc40f6c30e09453 100644
--- a/indra/newview/skins/default/xui/da/floater_tools.xml
+++ b/indra/newview/skins/default/xui/da/floater_tools.xml
@@ -167,15 +167,9 @@
 			<text name="Creator:">
 				Skaber:
 			</text>
-			<text name="Creator Name">
-				Mrs. Esbee Linden (esbee.linden)
-			</text>
 			<text name="Owner:">
 				Ejer:
 			</text>
-			<text name="Owner Name">
-				Mrs. Erica &quot;Moose&quot; Linden (erica.linden)
-			</text>
 			<text name="Group:">
 				Gruppe:
 			</text>
diff --git a/indra/newview/skins/default/xui/da/inspect_avatar.xml b/indra/newview/skins/default/xui/da/inspect_avatar.xml
index f581210e1bf00b614565f4a1750bd150cdbb65ea..dc1ed562eb2fb9abe58ac166d9e286c7b35da626 100644
--- a/indra/newview/skins/default/xui/da/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/da/inspect_avatar.xml
@@ -10,8 +10,6 @@
 	<string name="Details">
 		[SL_PROFILE]
 	</string>
-	<text name="user_name_small" value="Grumpity ProductEngine med et langt navn"/>
-	<text name="user_slid" value="james.linden"/>
 	<text name="user_details">
 		Dette er min second life beskrivelse og jeg synes den er rigtig god. Men af en eller ande grund er min beskrivelse meget lang fordi jeg taler en hel masse
 	</text>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_profile.xml b/indra/newview/skins/default/xui/da/panel_edit_profile.xml
index 80b20f15e97c92eb9acb78da4f5ec444c607dac1..14fd48ba2fb4bcb41e139e9bc2bcbda77f2cb052 100644
--- a/indra/newview/skins/default/xui/da/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/da/panel_edit_profile.xml
@@ -26,11 +26,7 @@
 				<text name="display_name_label" value="Visningsnavn:"/>
 				<text name="solo_username_label" value="Bugernavn:"/>
 				<button name="set_name" tool_tip="Sæt visningsnavn"/>
-				<text name="solo_user_name" value="Hamilton Hitchings"/>
-				<text name="user_name" value="Hamilton Hitchings"/>
-				<text name="user_name_small" value="Hamilton Hitchings"/>
 				<text name="user_label" value="Brugernavn:"/>
-				<text name="user_slid" value="hamilton.linden"/>
 				<panel name="lifes_images_panel">
 					<icon label="" name="2nd_life_edit_icon" tool_tip="Klik for at vælge et billede"/>
 				</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_profile_view.xml b/indra/newview/skins/default/xui/da/panel_profile_view.xml
index 5e0a51eb28d1a398a67a94aedf0b9c85c82e284c..e6e8ca4d1027e99071f52ef0417ab12d7b45a3ea 100644
--- a/indra/newview/skins/default/xui/da/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/da/panel_profile_view.xml
@@ -10,10 +10,8 @@
 	<text name="solo_username_label" value="Brugernavn:"/>
 	<text name="status" value="Online"/>
 	<text name="user_name_small" value="Se på mig med dette enormt ekstremt super lange navn"/>
-	<text name="user_name" value="Jack Linden"/>
 	<button name="copy_to_clipboard" tool_tip="Kopiér til udskriftsholder"/>
 	<text name="user_label" value="Brugernavn:"/>
-	<text name="user_slid" value="jack.linden"/>
 	<tab_container name="tabs">
 		<panel label="PROFIL" name="panel_profile"/>
 		<panel label="FAVORITTER" name="panel_picks"/>
diff --git a/indra/newview/skins/default/xui/da/sidepanel_task_info.xml b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml
index 746cf201bc7433a2a7ea17cccb80b3ec56efa652..f80d5aeb15266b867405e13388115bfaaff4c86c 100644
--- a/indra/newview/skins/default/xui/da/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml
@@ -48,15 +48,9 @@
 		<text name="CreatorNameLabel">
 			Skaber:
 		</text>
-		<text name="Creator Name">
-			Erica Linden
-		</text>
 		<text name="Owner:">
 			Ejer:
 		</text>
-		<text name="Owner Name">
-			Erica Linden
-		</text>
 		<text name="Group_label">
 			Gruppe:
 		</text>
diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index f9169ed748b5e2fb41a84855d75f6cda7c059837..8783b520136a84db6a1076cc3a30121386c6eec7 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -86,15 +86,9 @@
 			<text name="Owner:">
 				Eigentümer:
 			</text>
-			<text name="OwnerText">
-				Leyla Linden
-			</text>
 			<text name="Group:">
 				Gruppe:
 			</text>
-			<text name="GroupText">
-				Leyla Linden
-			</text>
 			<button label="Festlegen" label_selected="Einstellen..." name="Set..." width="90"/>
 			<check_box label="Übertragung an Gruppe zulassen" name="check deed" tool_tip="Ein Gruppen-Officer kann dieses Land der Gruppe übertragen. Das Land wird dann über die Landzuteilung der Gruppe verwaltet."/>
 			<button label="Übertragung" label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/>
@@ -398,7 +392,6 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				Homepage:
 			</text>
 			<button label="Festlegen" name="set_media_url"/>
-			<check_box label="URL ausblenden" name="hide_media_url" tool_tip="Aktivieren Sie diese Option, wenn Sie nicht möchten, dass unautorisierte Personen die Medien-URL sehen können. Diese Option ist für HTML-Medien nicht verfügbar."/>
 			<text name="Description:">
 				Inhalt:
 			</text>
@@ -428,7 +421,6 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 			<text name="MusicURL:">
 				Musik-URL:
 			</text>
-			<check_box label="URL ausblenden" name="hide_music_url" tool_tip="Aktivieren Sie diese Option, wenn Sie nicht möchten, dass unautorisierte Personen die Musik-URL sehen können"/>
 			<text name="Sound:">
 				Sound:
 			</text>
diff --git a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
index f98e23bbc4cb6ce5534f7f82fe7134fef2cb48d8..7f48105460cff93802ca3a4fb8de84c0918a6ed2 100644
--- a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
@@ -24,16 +24,10 @@
 	<text name="LabelCreatorTitle">
 		Ersteller:
 	</text>
-	<text name="LabelCreatorName">
-		Nicole Linden
-	</text>
 	<button label="Profil..." label_selected="" name="BtnCreator"/>
 	<text name="LabelOwnerTitle">
 		Eigentümer:
 	</text>
-	<text name="LabelOwnerName">
-		Thrax Linden
-	</text>
 	<button label="Profil..." label_selected="" name="BtnOwner"/>
 	<text name="LabelAcquiredTitle">
 		Erworben:
diff --git a/indra/newview/skins/default/xui/de/floater_script_search.xml b/indra/newview/skins/default/xui/de/floater_script_search.xml
index de959cbb28644c3de4f38d5098ac07a2153aff5f..ffae96f6a1b235230be7c2b06c3cb7774c2f32ae 100644
--- a/indra/newview/skins/default/xui/de/floater_script_search.xml
+++ b/indra/newview/skins/default/xui/de/floater_script_search.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="script search" title="SKRIPT-SUCHE">
-	<check_box label="Groß-/Kleinschreibung irrelevant" name="case_text"/>
+	<check_box label="Groß-/Kleinschreibung ignorieren" name="case_text"/>
 	<button label="Suchen" label_selected="Suchen" name="search_btn"/>
 	<button label="Ersetzen" label_selected="Ersetzen" name="replace_btn"/>
 	<button label="Alle ersetzen" label_selected="Alle ersetzen" name="replace_all_btn"/>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index 2d308149740cd3bd5980773523fc8bd54250ce05..d201fc327cc670e02eb8c33d5430fce449ec16b0 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -170,15 +170,9 @@
 			<text name="Creator:">
 				Ersteller:
 			</text>
-			<text name="Creator Name">
-				Frau Esbee Linden (esbee.linden)
-			</text>
 			<text name="Owner:">
 				Eigentümer:
 			</text>
-			<text name="Owner Name">
-				Frau Erica &quot;Elch&quot; Linden (erica.linden)
-			</text>
 			<text name="Group:">
 				Gruppe:
 			</text>
diff --git a/indra/newview/skins/default/xui/de/inspect_avatar.xml b/indra/newview/skins/default/xui/de/inspect_avatar.xml
index 92d9bc37c499ced18f2c0c1969482cfd25556654..4b8fd8a0ad1d125f28de057a1a06bc7119168385 100644
--- a/indra/newview/skins/default/xui/de/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/de/inspect_avatar.xml
@@ -10,9 +10,6 @@
 	<string name="Details">
 		[SL_PROFILE]
 	</string>
-	<text name="user_name_small" value="Launische Produktengine mit langem Namen"/>
-	<text name="user_name" value="Grumpity ProductEngine"/>
-	<text name="user_slid" value="james.linden"/>
 	<text name="user_subtitle" value="11 Monate und 3 Tage alt"/>
 	<text name="user_details">
 		Dies ist meine Second Life-Beschreibung und ich finde sie wirklich gut! Meine Beschreibung ist deshalb so lang, weil ich gerne rede.
diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml
index badb47bf081cfb4d51748b664056d37614d8df46..d85ca7ce4dde0b22a63db7e5b855dfd0938d5f6b 100644
--- a/indra/newview/skins/default/xui/de/inspect_group.xml
+++ b/indra/newview/skins/default/xui/de/inspect_group.xml
@@ -16,9 +16,6 @@
 	<string name="YouAreMember">
 		Sie sind Mitglied
 	</string>
-	<text name="group_name">
-		Grumpitys schlecht gelaunte Elche
-	</text>
 	<text name="group_subtitle">
 		123 Mitglieder
 	</text>
diff --git a/indra/newview/skins/default/xui/de/panel_activeim_row.xml b/indra/newview/skins/default/xui/de/panel_activeim_row.xml
deleted file mode 100644
index 84272752cfb816ddebe9d3c7b4cd9cae4cd9c9bb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/de/panel_activeim_row.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_activeim_row">
-	<text name="contact_name">
-		Grumpity ProductEngine
-	</text>
-</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_chat_header.xml b/indra/newview/skins/default/xui/de/panel_chat_header.xml
index babbff3132519e6978721ec137bd3f9aa1ed48d3..7916bf5155aa4d15b741094ca413575a3d7e529b 100644
--- a/indra/newview/skins/default/xui/de/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/de/panel_chat_header.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="im_header" name="im_header">
-	<text_editor name="user_name" value="Ericag Vader"/>
 	<text name="time_box" value="23:30"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_profile.xml b/indra/newview/skins/default/xui/de/panel_edit_profile.xml
index be124050e89dbe79dd5f456611582b434314569f..03974e7f7f49b3f9a39f71909bac5bfc8ac6c6e3 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_profile.xml
@@ -29,11 +29,7 @@
 				<text name="display_name_label" value="Anzeigename:"/>
 				<text name="solo_username_label" value="Benutzername:"/>
 				<button name="set_name" tool_tip="Anzeigenamen festlegen"/>
-				<text name="solo_user_name" value="Hamilton Hitchings"/>
-				<text name="user_name" value="Hamilton Hitchings"/>
-				<text name="user_name_small" value="Hamilton Hitchings"/>
 				<text name="user_label" value="Benutzername:"/>
-				<text name="user_slid" value="hamilton.linden"/>
 				<panel name="lifes_images_panel">
 					<panel name="second_life_image_panel">
 						<text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/>
diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml
index 4e3a304609456d97e8a29baad461a354e6831e00..5f323d80dddf3c155ad840b61f35cae84e4deef7 100644
--- a/indra/newview/skins/default/xui/de/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml
@@ -10,7 +10,7 @@
 		Einige der ausgewählten Einwohner sind bereits Gruppenmitglieder und haben aus diesem Grund keine Einladung erhalten.
 	</panel.string>
 	<text name="help_text">
-		Sie können mehrere Einwohner Ihre Gruppe einladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“.
+		Sie können mehrere Einwohner in Ihre Gruppe einladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“.
 	</text>
 	<button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/>
 	<name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Namen."/>
diff --git a/indra/newview/skins/default/xui/de/panel_instant_message.xml b/indra/newview/skins/default/xui/de/panel_instant_message.xml
index 1433552c15c7b9887f251b78ca99edf2ec8b6ec8..372def78cabefd2cf3618fef1f3432fecde23cb2 100644
--- a/indra/newview/skins/default/xui/de/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/de/panel_instant_message.xml
@@ -4,7 +4,6 @@
 		6
 	</string>
 	<panel label="im_header" name="im_header">
-		<text name="user_name" value="Erica Vader"/>
 		<text name="time_box" value="23:30"/>
 	</panel>
 	<button label="Antworten" name="reply"/>
diff --git a/indra/newview/skins/default/xui/de/panel_profile_view.xml b/indra/newview/skins/default/xui/de/panel_profile_view.xml
index b44c128000b4c58d4781264b801927d355dcb5ea..7e93bd1edee2175e8a66dee06c5401f06902970c 100644
--- a/indra/newview/skins/default/xui/de/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/de/panel_profile_view.xml
@@ -10,10 +10,8 @@
 	<text name="solo_username_label" value="Benutzername:"/>
 	<text name="status" value="Online"/>
 	<text name="user_name_small" value="Dieser Name ist ein ganz außerordentlich langer Name"/>
-	<text name="user_name" value="Jack Linden"/>
 	<button name="copy_to_clipboard" tool_tip="In Zwischenablage kopieren"/>
 	<text name="user_label" value="Benutzername:"/>
-	<text name="user_slid" value="jack.linden"/>
 	<tab_container name="tabs" tab_min_width="60">
 		<panel label="PROFIL" name="panel_profile"/>
 		<panel label="AUSWAHL" name="panel_picks"/>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
index 6474576c0ffabbc7e4e26d930e12fe03f0baea93..7b46ee7c9b6d04b90de12d6772bc1f1090b73511 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml
@@ -48,15 +48,9 @@
 		<text name="CreatorNameLabel">
 			Ersteller:
 		</text>
-		<text name="Creator Name">
-			Erica Linden
-		</text>
 		<text name="Owner:">
 			Eigentümer:
 		</text>
-		<text name="Owner Name">
-			Erica Linden
-		</text>
 		<text name="Group_label">
 			Gruppe:
 		</text>
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 937a97797d0681cc9b70eebbf49203582441c89d..6e985e04769035b980ec7b80bd46225303e38833 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -220,9 +220,10 @@
              layout="topleft"
              left_pad="2"
              name="OwnerText"
+             translate="false"
              use_ellipses="true" 
              width="360">
-                Leyla Linden
+                TestString PleaseIgnore
             </text>
              <button
      follows="right"
@@ -260,8 +261,10 @@
              left_pad="2"
              layout="topleft"
              name="GroupText"
+             translate="false"
              width="240">
-Leyla Linden               </text>
+                TestString PleaseIgnore
+            </text>
                  <button
      follows="right"
      height="23"
@@ -1404,6 +1407,10 @@ Only large parcels can be listed in search.
                  label="Shopping"
                  name="item11"
                  value="shopping" />
+                <combo_box.item
+                 label="Rental"
+                 name="item13"
+                 value="rental" />
                 <combo_box.item
                  label="Other"
                  name="item12"
@@ -1461,6 +1468,10 @@ Only large parcels can be listed in search.
                  label="Shopping"
                  name="item11"
                  value="shopping" />
+                <combo_box.item
+                 label="Rental"
+                 name="item13"
+                 value="rental" />
                 <combo_box.item
                  label="Other"
                  name="item12"
@@ -1638,16 +1649,6 @@ Only large parcels can be listed in search.
              name="set_media_url"
              width="70"
              top_delta="0"/>
-            <check_box
-             follows="top|left"
-             height="16"
-             label="Hide URL"
-             layout="topleft"
-             left="110"
-             name="hide_media_url"
-             tool_tip="Checking this option will hide the media url to any non-authorized viewers of this parcel information. Note this is not available for HTML types."
-             width="50"
-             top_pad="5"/>
             <text
              type="string"
              length="1"
@@ -1825,15 +1826,6 @@ Only large parcels can be listed in search.
              top_delta="0"
              right="-15"
              select_on_focus="true" />
-			<check_box
-             height="16"
-             label="Hide URL"
-             layout="topleft"
-             name="hide_music_url"
-			 tool_tip="Checking this option will hide the music url to any non-authorized viewers of this parcel information."
-			 left_delta="10"
-             top_pad="5"
-             width="292" /> 
             <text
              type="string"
              length="1"
@@ -2078,7 +2070,7 @@ Only large parcels can be listed in search.
              layout="topleft"
              left_pad="10"
              name="remove_allowed"
-             right="-1"
+             right="-10"
              width="100" />
              </panel>
             <panel
@@ -2128,7 +2120,7 @@ Only large parcels can be listed in search.
              layout="topleft"
              left_pad="10"
              name="remove_banned"
-             right="-1"
+             right="-10"
              width="100" />
              </panel>
         </panel>
diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
index 0ea42f9757da4e08f701117857bf86a3731224b2..a97c697b24e4b5dcbbfc9257eab90adfd9c38e76 100644
--- a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
@@ -96,7 +96,7 @@
      left="10"
      max_val="2"
      name="gamma"
-     top_pad="7"
+     top_pad="11"
      width="262" />
     <text
      type="string"
diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
index 29f09dd0b27862d4b9498d270d5573113344b5ea..0cf07926c2bd60ba428fc95e0c802b3870cfad39 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
@@ -106,9 +106,10 @@
      left_delta="78"
      name="LabelCreatorName"
      top_delta="0"
+     translate="false"
      use_ellipses="true" 
      width="170">
-        Nicole Linden
+        TestString PleaseIgnore
     </text>
     <button
      follows="top|right"
@@ -140,9 +141,10 @@
      left_delta="78"
      name="LabelOwnerName"
      top_delta="0"
+     translate="false"
      use_ellipses="true"
      width="170">
-      Thrax Linden
+      TestString PleaseIgnore
     </text>
     <button
      follows="top|right"
diff --git a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml
index cf95257b0a508d9d5a1e937f4c6ff4a7894cc68e..7c7ee2df4cba54d28e78a7e4bd927cdb58f0d25c 100644
--- a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml
+++ b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml
@@ -2,6 +2,7 @@
 <floater
   name="region_debug_console"
   title="Region Debug"
+  can_resize="true"
   layout="topleft"
   min_height="300"
   min_width="300"
@@ -12,7 +13,7 @@
   left="10"
    type="string"
    length="1"
-   follows="left|top|right|bottom"
+   follows="left|right|bottom"
    font="Monospace"
    height="366"
    width="576"
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index b16124cb7e70328070451e6d8f8dbb9690b6b365..85182c1c28b1bef114034e2f06ee3d7731ccac39 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -248,30 +248,53 @@
 			function="BuildTool.commitRadioEdit"/>
     </radio_group>
     <check_box
-     left="10"
+     left="5"
      follows="left|top"
      height="28"
 	 control_name="EditLinkedParts"
      label="Edit linked"
      layout="topleft"
      name="checkbox edit linked parts"
-     top_pad="2">
+     top_pad="-10">
 		  <check_box.commit_callback
 			function="BuildTool.selectComponent"/>
 	</check_box>
 
-   <text
-   text_color="LtGray_50"
-   follows="top|left"
-   halign="left"
-   left="13"
-   name="RenderingCost"
-   tool_tip="Shows the rendering cost calculated for this object"
-   top_pad="0"
-   type="string"
-   width="100">
-   þ: [COUNT]
-   </text>
+   <button
+     follows="left|top"
+     height="23"
+     label="Link"
+     top_pad="2"
+     layout="topleft"
+     left="5"
+     name="link_btn"
+     width="50">
+	  <button.commit_callback
+	     function="BuildTool.LinkObjects"/>
+    </button>
+    <button
+     follows="left|top"
+     height="23"
+     label="Unlink"
+     layout="topleft"
+     left_pad="2"
+     name="unlink_btn"
+     width="50">
+	  <button.commit_callback
+	     function="BuildTool.UnlinkObjects"/>
+    </button>
+    <text
+	   text_color="LtGray_50"
+	   follows="top|left"
+	   halign="left"
+	   left_pad="3"
+	   name="RenderingCost"
+	   tool_tip="Shows the rendering cost calculated for this object"
+	   top_delta="11"
+	   type="string"
+	   width="100">
+	   þ: [COUNT]
+	   </text>
 	<check_box
      control_name="ScaleUniform"
      height="19"
@@ -299,7 +322,7 @@
      layout="topleft"
      left="143"
      name="checkbox stretch textures"
-     top_pad="7"
+     top_pad="-6"
      width="134" />
    <check_box
      control_name="SnapEnabled"
@@ -876,10 +899,11 @@
              layout="topleft"
              name="Creator Name"
              top_delta="0"
+             translate="false"
              width="190"
              word_wrap="true"
              use_ellipses="true">
-                Mrs. Esbee Linden (esbee.linden)
+                TestString PleaseIgnore (please.ignore)
             </text>
             <text
              type="string"
@@ -903,10 +927,11 @@
              name="Owner Name"
              left_pad="0"
              top_delta="0"
+             translate="false"
              width="190"
              word_wrap="true"
              use_ellipses="true">
-                Mrs. Erica "Moose" Linden (erica.linden)
+                TestString PleaseIgnore (please.ignore)
             </text>
            <text
              type="string"
diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml
index 853d5f8735fca90dbfbe67ecd89d2490d6a657ae..bd9e367d1f4291d8462a3fc66b594675c57650c8 100644
--- a/indra/newview/skins/default/xui/en/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml
@@ -40,10 +40,11 @@
      name="user_name_small"
      top="7"
      text_color="White"
+     translate="false"
      use_ellipses="true"
      word_wrap="true"
     visible="false" 
-     value="Grumpity ProductEngine with a long name"
+     value="TestString PleaseIgnore"
      width="185" />
    <text
     follows="top|left"
@@ -53,8 +54,9 @@
     name="user_name"
     top="10"
     text_color="White"
+    translate="false"
     use_ellipses="true"
-    value="Grumpity ProductEngine"
+    value="TestString PleaseIgnore"
     width="190" />
    <text
      follows="top|left"
@@ -63,7 +65,8 @@
      name="user_slid"
      font="SansSerifSmallBold"
      text_color="EmphasisColor"
-     value="james.linden"
+     translate="false"
+     value="teststring.pleaseignore"
      width="185"
      use_ellipses="true" />
     <text
diff --git a/indra/newview/skins/default/xui/en/inspect_group.xml b/indra/newview/skins/default/xui/en/inspect_group.xml
index bcdb63228da89f96bb1dce46bd56ec2ab55ee838..324ff3eabd6b7e23850502e2ec85af8a6b0299d8 100644
--- a/indra/newview/skins/default/xui/en/inspect_group.xml
+++ b/indra/newview/skins/default/xui/en/inspect_group.xml
@@ -28,10 +28,11 @@
      name="group_name"
      top="10"
      text_color="White"
+     translate="false"
      use_ellipses="true"
      width="175"
      word_wrap="false">
-    Grumpity&apos;s Grumpy Group of Moose
+    TestString PleaseIgnore
   </text>
   <text
    follows="all"
diff --git a/indra/newview/skins/default/xui/en/menu_bottomtray.xml b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
index 5beafef4e4b91714bb81175a5748dfc2d5838215..1b55fa4fd3c8aa1430b4552dfd09e2a35fd06ee6 100644
--- a/indra/newview/skins/default/xui/en/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
@@ -8,6 +8,18 @@
  top="624"
  visible="false"
  width="128">
+    <menu_item_check
+         label="Voice Enabled"
+         layout="topleft"
+         name="EnableVoiceChat">
+           <menu_item_check.on_click
+             function="ToggleControl"
+             parameter="EnableVoiceChat" /> 
+             <menu_item_check.on_check
+             function="CheckControl"
+             parameter="EnableVoiceChat" />
+    </menu_item_check>
+    <menu_item_separator/>
     <menu_item_check
          label="Gesture button"
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 08ae0c233ee0b7c7fa0770e4dd10b38601f52b22..606ff695991077a49c8ddb769e53acb9a2c49b03 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2747,18 +2747,6 @@
                  function="Floater.Toggle"
                  parameter="region_debug_console" />
             </menu_item_check>
-            <menu_item_check
-             label="Region Debug Console"
-             name="Region Debug Console"
-             shortcut="control|shift|`"
-             use_mac_ctrl="true">
-                <menu_item_check.on_check
-                 function="Floater.Visible"
-                 parameter="region_debug_console" />
-                <menu_item_check.on_click
-                 function="Floater.Toggle"
-                 parameter="region_debug_console" />
-            </menu_item_check>
 
             <menu_item_separator />
 
diff --git a/indra/newview/skins/default/xui/en/panel_activeim_row.xml b/indra/newview/skins/default/xui/en/panel_activeim_row.xml
index 72f41c62f4355a5653201655a558fdc59bbab979..1d8bfa06720d1f133dece2e388ef7610ae2ec32f 100644
--- a/indra/newview/skins/default/xui/en/panel_activeim_row.xml
+++ b/indra/newview/skins/default/xui/en/panel_activeim_row.xml
@@ -65,6 +65,7 @@
     speaker.visible="false">
   </chiclet_im_adhoc>
 	<text
+	    translate="false"
 		type="string"
 		name="contact_name"
 		layout="topleft"
@@ -76,7 +77,7 @@
 		follows="right|left"
 		use_ellipses="true"
 		font="SansSerifBold">
-    Grumpity ProductEngine
+    TestString PleaseIgnore
   </text>
   <button
     top="10"
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 013a8090f7a1170ab2dc2bf6f1d12b4d511b23c1..a92cc886e733563922160887dd8e1d1278ce0744 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -45,11 +45,11 @@
          min_width="214"
          height="28" 
          mouse_opaque="false"
-		 name="chat_bar_layout_panel"
+         name="chat_bar_layout_panel"
          user_resize="true"
-         width="308" >
+         width="310" >
           <panel
-         name="chat_bar"
+            name="chat_bar"
             filename="panel_nearby_chat_bar.xml"
             left="0"
             height="28"
@@ -60,11 +60,30 @@
           />
         </layout_panel>
         <!--
-        There is resize bar between chatbar and Speak button. It has 2px width (is is set as 2*UIResizeBarOverlap)
+         This 5px Panel is an indicator of where the resize handle is.
+         The panel provides a gap between the resize handle icon and a button to the right.  
         -->
         <layout_panel
          auto_resize="false"
-         follows="right"
+         layout="topleft"
+         max_width="5" 
+         min_width="5"
+         name="chat_bar_resize_handle_panel"
+         user_resize="false"
+         width="5">
+            <icon
+             follows="top|right"
+             height="25"
+             image_name="ChatBarHandle"
+             layout="topleft"
+             left="-7"
+             name="resize_handle"
+             top="4"
+             width="5" />
+        </layout_panel>
+        <layout_panel
+         auto_resize="false"
+         follows="left|right"
          height="28"
          layout="topleft"
          min_height="28"
@@ -72,13 +91,13 @@
          mouse_opaque="false"
          name="speak_panel"
          top_delta="0"
-         user_resize="true"
-         width="110">
+         user_resize="false"
+         width="108">
             <talk_button
              follows="left|right"
              height="23"
              layout="topleft"
-             left="2"
+             left="0"
              name="talk"
              top="5"
              width="105">
diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml
index 17e8d4d2df9dc4cca96b4a5dcd405086b262528a..2645d472f98be0588feb540107bf518c1b09550b 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -35,9 +35,10 @@
       text_color="white"
       bg_readonly_color="black"
       top="0"
+      translate="false"
       use_ellipses="true"
       valign="bottom" 
-      value="Ericag Vader" />
+      value="TestString PleaseIgnore" />
   <text
     allow_scroll="false"
     font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index a028e3ab9f6f11bca6d7cb893e9611b5b218952f..82dfb445da1a1ba92777565a84a26d16e1fbec87 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -183,17 +183,17 @@
      left="8"
      name="bottom_panel"
      top_pad="5"
-     width="303">
+     width="315">
      
      	 <layout_stack
 		  follows="bottom|left|right"
 		  height="23"
 		  layout="topleft"
 		  name="layout_stack1"
-		  left="2"
+		  left="0"
 		  orientation="horizontal"
 		  top_pad="0"
-		  width="303">
+		  width="313">
 		  	 
 		  	 <layout_panel
 			  follows="bottom|left|right"
@@ -223,7 +223,7 @@
 			  name="layout_panel1"
 		      user_resize="false" 
 		      auto_resize="true"
-			  width="150">
+			  width="146">
 		        <button
 		         follows="bottom|left|right"
 		         height="23"
@@ -232,7 +232,7 @@
 		         name="cancel_btn"
 		         top="0"
 		         left="1"
-		        width="149" />
+		        width="145" />
 			  </layout_panel>
 	</layout_stack>
 		  
diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
index 37265d65f10e0f3d9a3b143776ed4ca8344fd132..442eb8c28d79d5c1352484dbc4f59982c3444a72 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -127,7 +127,8 @@
        name="solo_user_name"
        text_color="white"
        top_delta="3"
-       value="Hamilton Hitchings"
+       translate="false"
+       value="TestString PleaseIgnore"
        use_ellipses="true"
        visible="false"
        width="275" />
@@ -140,7 +141,8 @@
        name="user_name"
        text_color="white"
        top_delta="0"
-       value="Hamilton Hitchings"
+       translate="false"
+       value="TestString PleaseIgnore"
        use_ellipses="true"
        visible="true"
        width="250" />
@@ -153,7 +155,8 @@
        name="user_name_small"
        text_color="white"
        top_delta="-4"
-       value="Hamilton Hitchings"
+       translate="false"
+       value="TestString PleaseIgnore"
        use_ellipses="true"
        visible="false"
        wrap="true"
@@ -177,8 +180,9 @@
        text_color="EmphasisColor"
         font="SansSerifBold"
        top_delta="-2"
+       translate="false"
        use_ellipses="true" 
-       value="hamilton.linden"
+       value="teststring.pleaseignore"
        wrap="true" 
        width="205" />
      <panel
diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml
index 70b96ca5ebe588dece50065cec7af3a15d45fb32..38b680ba86553a21a7f632183d2015d4848a8249 100644
--- a/indra/newview/skins/default/xui/en/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_general.xml
@@ -21,7 +21,7 @@ Hover your mouse over the options for more help.
     </panel.string>
    <panel
       name="group_info_top"
-      follows="top|left"
+      follows="top|left|right"
       top="0"
       left="0"
       height="129"
@@ -43,7 +43,7 @@ Hover your mouse over the options for more help.
       font="SansSerifSmall"
       text_color="White_50"
       width="190"
-      follows="top|left"
+      follows="top|left|right"
       layout="topleft"
       mouse_opaque="false"
      type="string"
@@ -55,7 +55,7 @@ Hover your mouse over the options for more help.
       Founder:
     </text>
      <text
-      follows="left|top"
+      follows="left|top|right"
      height="16"
      layout="topleft"
      left_delta="-2"
diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml
index 021cf00d0305a0b9a5f735bff831b04e82518f55..46c1add73904006b741f2df06bc51ac3a1103c0e 100644
--- a/indra/newview/skins/default/xui/en/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml
@@ -65,8 +65,9 @@
          name="user_name"
          text_color="white"
          top="8"
+         translate="false"
          use_ellipses="true"
-         value="Erica Vader"
+         value="TestString PleaseIgnore"
          width="205" />
 	 <!-- TIME STAMP -->
         <text
diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
index 96633cb5b4c020103d201525983963812f5bc486..0df9aa2868a8aa6eb46e1b16c582d68fea086f11 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -46,7 +46,7 @@
    label="Filter Inventory"
    layout="topleft"
    left="10"
-   max_length="300"
+   max_length_chars="300"
    name="inventory search editor"
    top="18"
    width="303" />
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index 88c82313dd26724f9d08223845d08da610b6837b..2ad2416179d4be49875890212bfebe482f8f2c5f 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -76,7 +76,7 @@
 		         left="0"
 		         orientation="horizontal"
 		         top="0"
-		         width="313">	
+		         width="308">	
 			    <layout_panel
 			         follows="bottom|left|right"
 			         height="23"
@@ -120,16 +120,16 @@
                      name="wear_btn_lp"
                      user_resize="false" 
                      auto_resize="true"
-                     width="152">
+                     width="147">
                     <button
                          follows="bottom|left|right"
                          height="23"
                          label="Wear"
                          layout="topleft"
                          name="wear_btn"
-                         left="0"
+                         left="1"
                          top="0"
-                         width="152" />
+                         width="146" />
 			    </layout_panel>
 			</layout_stack>
    </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index d9c357f27769e9c40182327644b76c3c46079718..daf571297f29f9a6bf74a02494c7fc2ff9fe0e85 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -176,7 +176,7 @@ background_visible="true"
 				left="0"
 				orientation="horizontal"
 				top="0"
-				width="120">
+				width="113">
 		
 					<layout_panel
 					follows="bottom|left|right"
@@ -214,7 +214,9 @@ background_visible="true"
 						<menu_button
 				         follows="bottom|left|right"
 				         height="23"
-				         label="â–¼"
+						 image_disabled="ComboButton_UpOff"
+						 image_unselected="ComboButton_UpOff"
+						 image_selected="ComboButton_UpSelected"
 				         layout="topleft"
 						 mouse_opaque="false"
 				         name="overflow_btn"
@@ -236,7 +238,7 @@ background_visible="true"
 				left="0"
 				orientation="horizontal"
 				top="0"
-				width="120">		
+				width="110">		
 					<layout_panel
 					follows="bottom|left|right"
 					height="23"
@@ -246,7 +248,7 @@ background_visible="true"
 					name="profile_btn_lp"
 				    user_resize="false" 
 				    auto_resize="true"
-					width="112">
+					width="102">
 						<button
 				         follows="bottom|left|right"
 				         height="23"
@@ -257,7 +259,7 @@ background_visible="true"
 				         left="1"
 				         tool_tip="Show place profile"
 				         top="0"
-				         width="111" />		
+				         width="101" />		
 					</layout_panel>
 				</layout_stack>
 		
@@ -272,7 +274,7 @@ background_visible="true"
 				left="0"
 				orientation="horizontal"
 				top="0"
-				width="120">
+				width="112">
 					<layout_panel
 					follows="bottom|left|right"
 					height="23"
@@ -283,7 +285,7 @@ background_visible="true"
 					top="0"
 				    user_resize="false" 
 				    auto_resize="true"
-					width="61">
+					width="51">
 						<button
 				         follows="bottom|left|right"
 				         height="23"
@@ -293,7 +295,7 @@ background_visible="true"
 				         name="close_btn"
 				         left="1"
 				         top="0"
-				         width="60" />	
+				         width="50" />	
 					</layout_panel>
 				</layout_stack>
 
diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
index c553a3aba01948914015d69fe15955f095001153..646875b52e844febb87dbec0a33bf0ff5e39a851 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml
@@ -83,8 +83,9 @@
    left="45"
    name="user_name"
    text_color="LtGray"
+   translate="false"
    top="25"
-   value="Jack Linden"
+   value="TestString PleaseIgnore"
    visible="true"
    use_ellipses="true"
    width="258" /> 
@@ -118,8 +119,9 @@
    text_color="EmphasisColor"
    font="SansSerifBold"
    top_delta="-2"
+   translate="false"
    use_ellipses="true"
-   value="jack.linden"
+   value="teststring.pleaseignore"
    width="195" 
    wrap="true "/>
   <tab_container
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index f3c6895cee5629beda1c484acf25cff1445c420f..8997c1a6d75dd90768a1436be883c02bb3b5039a 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -37,7 +37,7 @@
 			 name="button_panel"
 			 left="9"
 			 top_pad="-2"
-			 width="313">
+			 width="308">
 			<layout_stack
      	         follows="bottom|left|right"
 		         height="23"
@@ -47,7 +47,7 @@
 		         left="0"
 		         orientation="horizontal"
 		         top="0"
-		         width="313">	
+		         width="308">	
 			    <layout_panel
 			         follows="bottom|left|right"
 			         height="23"
@@ -57,7 +57,7 @@
                      name="info_btn_lp"
                      user_resize="false" 
                      auto_resize="true"
-                     width="103">
+                     width="101">
                     <button
                          enabled="true"
                          follows="bottom|left|right"
@@ -68,62 +68,62 @@
                          name="info_btn"
                          tool_tip="Show object profile"
                          top="0"
-                         width="102" />
+                         width="100" />
 			    </layout_panel>
 			    <layout_panel
                      follows="bottom|left|right"
                      height="23"
                      layout="bottomleft"
-                     left_pad="3"			
+                     left_pad="1"			
                      mouse_opaque="false"
                      name="share_btn_lp"
                      user_resize="false" 
                      auto_resize="true"
-                     width="102">
+                     width="100">
                     <button
                          enabled="true"
                          follows="bottom|left|right"
                          height="23"
                          label="Share"
                          layout="topleft"
-                         left="0"
+                         left="1"
                          name="share_btn"
                          tool_tip="Share an inventory item"
                          top="0"
-                         width="102" />
+                         width="99" />
 			    </layout_panel>
 			    <layout_panel
                      follows="bottom|left|right"
                      height="23"
                      layout="bottomleft"
-                     left_pad="3"			
+                     left_pad="1"			
                      mouse_opaque="false"
                      name="shop_btn_lp"
                      user_resize="false" 
                      auto_resize="true"
-                     width="102">
+                     width="100">
                     <button
                          enabled="true"
                          follows="bottom|left|right"
                          height="23"
                          label="Shop"
                          layout="topleft"
-                         left="0"
+                         left="1"
                          name="shop_btn"
                          tool_tip="Open Marketplace webpage"
                          top="0"
-                         width="102" />
+                         width="99" />
                     <button
                          enabled="false"
                          follows="bottom|left|right"
                          height="23"
                          label="Wear"
                          layout="topleft"
-                         left="0"
+                         left="1"
                          name="wear_btn"
                          tool_tip="Wear seleceted outfit"
                          top="0"
-                         width="102" />
+                         width="99" />
                     <button
                          enabled="false"
                          follows="bottom|left|right"
@@ -131,20 +131,20 @@
                          label="Play"
                          layout="topleft"
                          name="play_btn"
-                         left="0"
+                         left="1"
                          top="0"
-                         width="102" />
+                         width="99" />
                     <button
                          enabled="false"
                          follows="bottom|left|right"
                          height="23"
                          label="Teleport"
                          layout="topleft"
-                         left="0"
+                         left="1"
                          name="teleport_btn"
                          tool_tip="Teleport to the selected area"
                          top="0"
-                         width="102" />
+                         width="99" />
 			    </layout_panel>
 			</layout_stack>
 		</panel>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index e2b3d81bf686496bda7d875fcf66f63ce68f59df..c2394a3fa28332464a2d4ed498a5c98359c3ed70 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -168,9 +168,10 @@
      left_pad="0"
              name="Creator Name"
 		     top_delta="0"
+		     translate="false"
          use_ellipses="true" 
 		     width="225">
-	        Erica Linden
+	        TestString PleaseIgnore
 	     </text>
 	    <text
 			 type="string"
@@ -193,9 +194,10 @@
 			    left_pad="0"
 			    name="Owner Name"
 			    top_delta="0"
+			    translate="false"
           use_ellipses="true" 
 			    width="225">
-			    Erica Linden
+			    TestString PleaseIgnore
 	     </text>
 	    	    <text
 			 type="string"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 70a40960a1307a38970707af9957857de99217f7..d0625d975579978820c61aeb1de426520b41314f 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2370,6 +2370,7 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
 	<!--<string name="Shopping">Shopping</string>	-->
 	<string name="Stage">Stage</string>
 	<string name="Other">Other</string>
+	<string name="Rental">Rental</string>
 	<string name="Any">Any</string>
 	<string name="You">You</string>
 
@@ -3425,4 +3426,13 @@ Abuse Report</string>
   <string name="Z">Z</string>
   <!-- Key names end -->
 
+  <!-- llviewerwindow -->
+  <string name="BeaconParticle">Viewing particle beacons (blue)</string>
+  <string name="BeaconPhysical">Viewing physical object beacons (green)</string>
+  <string name="BeaconScripted">Viewing scripted object beacons (red)</string>
+  <string name="BeaconScriptedTouch">Viewing scripted object with touch function beacons (red)</string>
+  <string name="BeaconSound">Viewing sound beacons (yellow)</string>
+  <string name="BeaconMedia">Viewing media beacons (white)</string>
+  <string name="ParticleHiding">Hiding Particles</string>
+
   </strings>
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
index be5b5d011cc7993b5b201c0f82d4472fb88b0dfb..3f50437c133cf8b87c2c38b6e876bf057662243b 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -87,15 +87,9 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
 			<text name="Owner:">
 				Propietario:
 			</text>
-			<text name="OwnerText">
-				Leyla Linden
-			</text>
 			<text name="Group:">
 				Grupo:
 			</text>
-			<text name="GroupText">
-				Leyla Linden
-			</text>
 			<button label="Configurar" name="Set..."/>
 			<check_box label="Permitir transferir al grupo" name="check deed" tool_tip="Un oficial del grupo puede transferir este terreno al grupo. El terreno será apoyado por el grupo en sus asignaciones de terreno."/>
 			<button label="Transferir" name="Deed..." tool_tip="Sólo si es usted un oficial del grupo seleccionado puede transferir terreno."/>
@@ -398,7 +392,6 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
 			</text>
 			<line_editor left="97" name="media_url"/>
 			<button label="Definir" name="set_media_url"/>
-			<check_box label="Ocultar la URL del media" left="97" name="hide_media_url" tool_tip="Marcando esta opción esconderá en la información de esta parcela -a quien no esté autorizado a verla- la URL del media. Note que esto no está disponible para HTML."/>
 			<text name="Description:">
 				Descripción:
 			</text>
@@ -430,7 +423,6 @@ los media:
 			<text name="MusicURL:">
 				URL de música:
 			</text>
-			<check_box label="Ocultar la URL" name="hide_music_url" tool_tip="Al marcar esta opción se ocultará la URL de la música a quien no esté autorizado a ver la información de esta parcela."/>
 			<text name="Sound:">
 				Sonido:
 			</text>
diff --git a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml
index 5746688962babed9952eed766689008589252a36..bf84c3d8087f9b72d6bfc112a0b793d7f4d5e6b7 100644
--- a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml
@@ -24,16 +24,10 @@
 	<text name="LabelCreatorTitle">
 		Creador:
 	</text>
-	<text name="LabelCreatorName">
-		Nicole Linden
-	</text>
 	<button label="Perfil..." label_selected="" name="BtnCreator"/>
 	<text name="LabelOwnerTitle">
 		Propietario:
 	</text>
-	<text name="LabelOwnerName">
-		Thrax Linden
-	</text>
 	<button label="Perfil..." label_selected="" name="BtnOwner"/>
 	<text name="LabelAcquiredTitle">
 		Adquirido:
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index d85b43b7e8688ee658e20cb699a1989d6b7c0486..e2ff4a25ce0753f5a44d2575f2c3fa27385f578d 100644
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -170,15 +170,9 @@
 			<text name="Creator:">
 				Creador:
 			</text>
-			<text name="Creator Name">
-				Dª Esbee Linden (esbee.linden)
-			</text>
 			<text name="Owner:">
 				Propietario:
 			</text>
-			<text name="Owner Name">
-				Dª Erica &quot;Moose&quot; Linden (erica.linden)
-			</text>
 			<text name="Group:">
 				Grupo:
 			</text>
diff --git a/indra/newview/skins/default/xui/es/inspect_avatar.xml b/indra/newview/skins/default/xui/es/inspect_avatar.xml
index 119f252db2c443efe39b160f93470ab78016405c..1d70fa6a90cb8d9f86a0287c1b53be7efaa8b6fe 100644
--- a/indra/newview/skins/default/xui/es/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/es/inspect_avatar.xml
@@ -10,8 +10,6 @@
 	<string name="Details">
 		[SL_PROFILE]
 	</string>
-	<text name="user_name_small" value="Grumpity ProductEngine con un nombre demasiado largo"/>
-	<text name="user_slid" value="james.linden"/>
 	<text name="user_details">
 		Ésta es mi descripción de Second Life que, por cierto, me encanta. Pero, por lo que sea, me he enrollado más de la cuenta y la descripción es larguísima.
 	</text>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_profile.xml b/indra/newview/skins/default/xui/es/panel_edit_profile.xml
index 56d03dccc2ca6b94021c2f1199eb0e89be929e31..8e5e09cfec28da0ddaf02d85f16966986fdddf58 100644
--- a/indra/newview/skins/default/xui/es/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/es/panel_edit_profile.xml
@@ -25,11 +25,7 @@
 				<text name="display_name_label" value="Nombre mostrado:"/>
 				<text name="solo_username_label" value="Nombre de usuario:"/>
 				<button name="set_name" tool_tip="Configurar nombre mostrado"/>
-				<text name="solo_user_name" value="Hamilton Hitchings"/>
-				<text name="user_name" value="Hamilton Hitchings"/>
-				<text name="user_name_small" value="Hamilton Hitchings"/>
 				<text name="user_label" value="Nombre de usuario:"/>
-				<text name="user_slid" value="hamilton.linden"/>
 				<panel name="lifes_images_panel">
 					<icon label="" name="2nd_life_edit_icon" tool_tip="Pulsa para elegir una imagen"/>
 				</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_profile_view.xml b/indra/newview/skins/default/xui/es/panel_profile_view.xml
index a11fc31607e8d49ff0dbfe5f3462823d752ef9c7..cb374dee52f988c004edda15582ff102308d4398 100644
--- a/indra/newview/skins/default/xui/es/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/es/panel_profile_view.xml
@@ -10,10 +10,8 @@
 	<text name="solo_username_label" value="Nombre de usuario:"/>
 	<text name="status" value="Conectado/a"/>
 	<text name="user_name_small" value="Jack, ¿has visto esto? Es un nombre larguísimo."/>
-	<text name="user_name" value="Jack Linden"/>
 	<button name="copy_to_clipboard" tool_tip="Copiar al portapapeles"/>
 	<text name="user_label" value="Nombre de usuario:"/>
-	<text name="user_slid" value="jack.linden"/>
 	<tab_container name="tabs">
 		<panel label="PERFIL" name="panel_profile"/>
 		<panel label="DESTACADOS" name="panel_picks"/>
diff --git a/indra/newview/skins/default/xui/es/panel_region_covenant.xml b/indra/newview/skins/default/xui/es/panel_region_covenant.xml
index 0a5d7c27861a511d0be77179badcc7d7670322bb..06f4fffacf5a10f6733be3645c0ea6cea6e31a5c 100644
--- a/indra/newview/skins/default/xui/es/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_covenant.xml
@@ -27,8 +27,8 @@
 	</text_editor>
 	<button label="Cambiar" name="reset_covenant"/>
 	<text name="covenant_help_text">
-		Los cambios en el contrato se mostrarán en todas las parcelas
-      del estado.
+		Los cambios en el contrato se mostrarán en todas las parcelas 
+del estado.
 	</text>
 	<text bottom_delta="-31" name="covenant_instructions">
 		Arrastra y suelta una nota para cambiar el contrato de este estado.
@@ -73,7 +73,8 @@
 		El terreno comprado en esta región no se podrá revender.
 	</string>
 	<string name="can_change">
-		El terreno comprado en esta región se podrá unir o subdividir.
+		El terreno comprado en esta región se podrá unir o 
+subdividir.
 	</string>
 	<string name="can_not_change">
 		El terreno comprado en esta región no se podrá unir ni
diff --git a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
index e6d9e28aff8b298eb9b59cca16d3ae185f2c0d18..bd814ecc6692a2f8d79997cc3a43fa35fd6b6ab5 100644
--- a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml
@@ -48,15 +48,9 @@
 		<text name="CreatorNameLabel">
 			Creador:
 		</text>
-		<text name="Creator Name">
-			Erica Linden
-		</text>
 		<text name="Owner:">
 			Propietario:
 		</text>
-		<text name="Owner Name">
-			Erica Linden
-		</text>
 		<text name="Group_label">
 			Grupo:
 		</text>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 19adf29d29eb0e63619c94b375523bafd801a427..df40a2b6b4374ef5b08377fb967af733ed64e5e0 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -1692,7 +1692,7 @@
 	<string name="RegionNoCovenantOtherOwner">
 		No se ha aportado un contrato para este estado. El terreno de este estado lo vende el propietario del estado, no Linden Lab.  Por favor, contacta con ese propietario para informarte sobre la venta.
 	</string>
-	<string name="covenant_last_modified" value="Última modificación:"/>
+	<string name="covenant_last_modified" value="Última modificación: "/>
 	<string name="none_text" value="(no hay)"/>
 	<string name="never_text" value=" (nunca)"/>
 	<string name="GroupOwned">
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index b0ef1cf8df95a95fed861abffbeb299c8cce7f1d..6e6409725fd97a2e0711325363a8f99af250bab2 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -88,15 +88,9 @@
 			<text name="Owner:">
 				Propriétaire :
 			</text>
-			<text name="OwnerText">
-				Leyla Linden
-			</text>
 			<text name="Group:">
 				Groupe :
 			</text>
-			<text name="GroupText">
-				Leyla Linden
-			</text>
 			<button label="Choisir" label_selected="Définir..." name="Set..."/>
 			<check_box label="Autoriser la cession au groupe" name="check deed" tool_tip="Un officier du groupe peut céder ce terrain à ce groupe, afin qu&apos;il soit pris en charge par l&apos;allocation de terrains du groupe."/>
 			<button label="Céder" label_selected="Céder..." name="Deed..." tool_tip="Vous ne pouvez céder le terrain que si vous avez un rôle d&apos;officier dans le groupe sélectionné."/>
@@ -403,7 +397,6 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 			</text>
 			<line_editor left="97" name="media_url"/>
 			<button label="Choisir" name="set_media_url"/>
-			<check_box label="Masquer l&apos;URL" left="97" name="hide_media_url" tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l&apos;URL du média. Cette option n&apos;est pas disponible pour les fichiers HTML."/>
 			<text name="Description:">
 				Description :
 			</text>
@@ -435,7 +428,6 @@ texture :
 				URL de la 
 musique :
 			</text>
-			<check_box label="Masquer l&apos;URL" name="hide_music_url" tool_tip="Si vous cochez cette option, l&apos;URL de musique sera masquée et invisible pour tous les utilisateurs non autorisés des informations de cette parcelle."/>
 			<text name="Sound:">
 				Son :
 			</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
index 29b61fc98d162de987d6bac88ccd0d27979de62f..f2eb3cb6bc59ed51f65a0a0508f8d880f3d7bbe4 100644
--- a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
@@ -24,16 +24,10 @@
 	<text name="LabelCreatorTitle">
 		Créateur :
 	</text>
-	<text name="LabelCreatorName">
-		Nicole Linden
-	</text>
 	<button label="Profil..." label_selected="" name="BtnCreator"/>
 	<text name="LabelOwnerTitle">
 		Propriétaire :
 	</text>
-	<text name="LabelOwnerName">
-		Thrax Linden
-	</text>
 	<button label="Profil..." label_selected="" name="BtnOwner"/>
 	<text name="LabelAcquiredTitle">
 		Acquis :
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index 46a27e960cf5742098fe8114fbff081b0c44a148..01274b4cbcc590ab4992c73b4a630f9fd0c1e8e9 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -170,15 +170,9 @@
 			<text name="Creator:">
 				Créateur :
 			</text>
-			<text name="Creator Name">
-				Mrs. Esbee Linden (esbee.linden)
-			</text>
 			<text name="Owner:">
 				Propriétaire :
 			</text>
-			<text name="Owner Name">
-				Mrs. Erica &quot;Moose&quot; Linden (erica.linden)
-			</text>
 			<text name="Group:">
 				Groupe :
 			</text>
diff --git a/indra/newview/skins/default/xui/fr/inspect_avatar.xml b/indra/newview/skins/default/xui/fr/inspect_avatar.xml
index f34ca1f8ddd05e4224ef5f96ed191f12467c5065..553646f8e97afe51139fab7756b005236b88ee61 100644
--- a/indra/newview/skins/default/xui/fr/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/fr/inspect_avatar.xml
@@ -10,9 +10,6 @@
 	<string name="Details">
 		[SL_PROFILE]
 	</string>
-	<text name="user_name_small" value="Grumpity ProductEngine with a long name"/>
-	<text name="user_name" value="Grumpity ProductEngine"/>
-	<text name="user_slid" value="james.linden"/>
 	<text name="user_subtitle" value="11 mois, 3 jours"/>
 	<text name="user_details">
 		This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
diff --git a/indra/newview/skins/default/xui/fr/inspect_group.xml b/indra/newview/skins/default/xui/fr/inspect_group.xml
index 4519c380c5a0b74503bb66536af56abba44816d1..e8c528c1ac6eb9007b6d8a9b24980378a0cc694c 100644
--- a/indra/newview/skins/default/xui/fr/inspect_group.xml
+++ b/indra/newview/skins/default/xui/fr/inspect_group.xml
@@ -16,9 +16,6 @@
 	<string name="YouAreMember">
 		Vous êtes membre
 	</string>
-	<text name="group_name">
-		Groupe grognon des Orignaux Grumpity
-	</text>
 	<text name="group_subtitle">
 		123 membres
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_activeim_row.xml b/indra/newview/skins/default/xui/fr/panel_activeim_row.xml
deleted file mode 100644
index 84272752cfb816ddebe9d3c7b4cd9cae4cd9c9bb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/fr/panel_activeim_row.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_activeim_row">
-	<text name="contact_name">
-		Grumpity ProductEngine
-	</text>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_chat_header.xml b/indra/newview/skins/default/xui/fr/panel_chat_header.xml
index babbff3132519e6978721ec137bd3f9aa1ed48d3..7916bf5155aa4d15b741094ca413575a3d7e529b 100644
--- a/indra/newview/skins/default/xui/fr/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/fr/panel_chat_header.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="im_header" name="im_header">
-	<text_editor name="user_name" value="Ericag Vader"/>
 	<text name="time_box" value="23:30"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
index ef65d2fe242fd3c0a82a0fa6abdcca976c6901f7..9e63c8822103f50d155b4908e2760afdceff54c9 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
@@ -29,11 +29,7 @@
 				<text name="display_name_label" value="Nom d&apos;affichage :"/>
 				<text name="solo_username_label" value="Nom d&apos;utilisateur :"/>
 				<button name="set_name" tool_tip="Définir un nom d&apos;affichage"/>
-				<text name="solo_user_name" value="Hamilton Hitchings"/>
-				<text name="user_name" value="Hamilton Hitchings"/>
-				<text name="user_name_small" value="Hamilton Hitchings"/>
 				<text name="user_label" value="Nom d&apos;utilisateur :"/>
-				<text name="user_slid" value="hamilton.linden"/>
 				<panel name="lifes_images_panel">
 					<panel name="second_life_image_panel">
 						<text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_instant_message.xml b/indra/newview/skins/default/xui/fr/panel_instant_message.xml
index bf3720f4111c76a5f3264d88c89199f43d03efb3..305d2d853c6afc6aed63379adfc5738286e206f5 100644
--- a/indra/newview/skins/default/xui/fr/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/fr/panel_instant_message.xml
@@ -4,7 +4,6 @@
 		6
 	</string>
 	<panel label="im_header" name="im_header">
-		<text name="user_name" value="Erica Vader"/>
 		<text name="time_box" value="23:30"/>
 	</panel>
 	<button label="Répondre" name="reply"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_profile_view.xml b/indra/newview/skins/default/xui/fr/panel_profile_view.xml
index 044761842047ff10804f68c8c1960f3c1459b478..76ba44e8990a492d337af9bb9530feb447eef2e9 100644
--- a/indra/newview/skins/default/xui/fr/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/fr/panel_profile_view.xml
@@ -10,10 +10,8 @@
 	<text name="solo_username_label" value="Nom d&apos;utilisateur :"/>
 	<text name="status" value="En ligne"/>
 	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
-	<text name="user_name" value="Jack Linden"/>
 	<button name="copy_to_clipboard" tool_tip="Copier dans le presse-papiers"/>
 	<text name="user_label" value="Nom d&apos;utilisateur :"/>
-	<text name="user_slid" value="jack.linden"/>
 	<tab_container name="tabs">
 		<panel label="PROFIL" name="panel_profile"/>
 		<panel label="FAVORIS" name="panel_picks"/>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
index c8e76118a1f1db4b27b79934cf805095e4036dd0..bd8a39fe169360f1045d75e6bc8ff48d4f002809 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml
@@ -48,15 +48,9 @@
 		<text name="CreatorNameLabel">
 			Créateur :
 		</text>
-		<text name="Creator Name">
-			Erica Linden
-		</text>
 		<text name="Owner:">
 			Propriétaire :
 		</text>
-		<text name="Owner Name">
-			Erica Linden
-		</text>
 		<text name="Group_label">
 			Groupe :
 		</text>
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
index d6834fa70a15e5e28cfa6a9a1b1119ecd42ffe4d..186ed59e36888f5e807703e5584e397a8225de26 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -87,15 +87,11 @@ Vai al menu Mondo &gt; Informazioni sul terreno oppure seleziona un altro appezz
 			<text name="Owner:">
 				Proprietario:
 			</text>
-			<text left="119" name="OwnerText" width="227">
-				Leyla Linden
-			</text>
+			<text left="119" name="OwnerText" width="227"/>
 			<text name="Group:">
 				Gruppo:
 			</text>
-			<text left="119" name="GroupText" width="227">
-				Leyla Linden
-			</text>
+			<text left="119" name="GroupText" width="227"/>
 			<button label="Imposta" name="Set..."/>
 			<check_box label="Permetti cessione al gruppo" left="119" name="check deed" tool_tip="Un funzionario del gruppo può cedere questa terra al gruppo stesso cosicchè essa sarà  supportata  dalle terre del gruppo."/>
 			<button label="Cedi" name="Deed..." tool_tip="Puoi solo offrire terra se sei un funzionario del gruppo selezionato."/>
@@ -401,7 +397,6 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 			</text>
 			<line_editor left="97" name="media_url"/>
 			<button label="Imposta" name="set_media_url"/>
-			<check_box label="Nascondi indirizzo URL Media" left="94" name="hide_media_url" tool_tip="Abilitando questa opzione nasconderai l&apos;indirizzo url dei media a tutte le persone non autorizzate a vedere le informazioni del terreno. Nota che questo non è disponibile per contenuto di tipo HTML."/>
 			<text name="Description:">
 				Descrizione:
 			</text>
@@ -433,7 +428,6 @@ Media:
 			<text name="MusicURL:">
 				URL musica:
 			</text>
-			<check_box label="Nascondi URL" name="hide_music_url" tool_tip="Questa opzione consente di nascondere l&apos;url della musica a chi non è autorizzato a visionare le informazioni di questo parcel."/>
 			<text name="Sound:">
 				Audio:
 			</text>
diff --git a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml
index d3dc4d7eae45960aa9479d9a93b3314a023d8657..7ed3486b9b67cea009a7b00f1d22fe476cef6dd2 100644
--- a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml
@@ -24,16 +24,10 @@
 	<text name="LabelCreatorTitle">
 		Creatore:
 	</text>
-	<text name="LabelCreatorName">
-		Nicole Linden
-	</text>
 	<button label="Profilo..." label_selected="" name="BtnCreator"/>
 	<text name="LabelOwnerTitle">
 		proprietario:
 	</text>
-	<text name="LabelOwnerName">
-		Thrax Linden
-	</text>
 	<button label="Profilo..." label_selected="" name="BtnOwner"/>
 	<text name="LabelAcquiredTitle">
 		Acquisito:
diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml
index a8c985cb124fa412d9341b5cfb82ce3a80e2efa5..fc13e09d1cb4a602322cfba80ac263b1281c9983 100644
--- a/indra/newview/skins/default/xui/it/floater_tools.xml
+++ b/indra/newview/skins/default/xui/it/floater_tools.xml
@@ -171,15 +171,9 @@
 			<text name="Creator:">
 				Creatore:
 			</text>
-			<text name="Creator Name">
-				Thrax Linden
-			</text>
 			<text name="Owner:">
 				Proprietario:
 			</text>
-			<text name="Owner Name">
-				Thrax Linden
-			</text>
 			<text name="Group:">
 				Gruppo:
 			</text>
diff --git a/indra/newview/skins/default/xui/it/panel_profile_view.xml b/indra/newview/skins/default/xui/it/panel_profile_view.xml
index 20c62d4ceb2b72e8075a6f36082a3c6df5a899d2..cf65aabebc07d2b72d9161d1502dbc6888dd5af7 100644
--- a/indra/newview/skins/default/xui/it/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/it/panel_profile_view.xml
@@ -6,7 +6,6 @@
 	<string name="status_offline">
 		Offline
 	</string>
-	<text_editor name="user_name" value="(Caricamento in corso...)"/>
 	<text name="status" value="Online"/>
 	<tab_container name="tabs">
 		<panel label="PROFILO" name="panel_profile"/>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
index 67870d9b76569009523c0543b6fb994e0011380b..cfabdc81b01f812090c4c5a9e422fa34d4c49b87 100644
--- a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml
@@ -48,15 +48,9 @@
 		<text name="CreatorNameLabel">
 			Ideatore:
 		</text>
-		<text name="Creator Name">
-			Erica Linden
-		</text>
 		<text name="Owner:">
 			Proprietario:
 		</text>
-		<text name="Owner Name">
-			Erica Linden
-		</text>
 		<text name="Group_label">
 			Gruppo:
 		</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index 2de9e781d4abf7aa7d7c5da18d9d4ee3c46d8af2..eefe71c9a5a584bba3210667ca5f5c8da48706ff 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -87,15 +87,9 @@
 			<text name="Owner:">
 				所有者:
 			</text>
-			<text name="OwnerText">
-				Leyla Linden
-			</text>
 			<text name="Group:">
 				グループ:
 			</text>
-			<text name="GroupText">
-				Leyla Linden
-			</text>
 			<button label="設定" label_selected="設定..." name="Set..."/>
 			<check_box label="グループへの譲渡を許可" name="check deed" tool_tip="グループのオフィサーはこの土地をグループに譲渡できます。グループの土地割り当てによってサポートされます。"/>
 			<button label="譲渡" label_selected="譲渡..." name="Deed..." tool_tip="選択したグループのオフィサーのみ、土地を譲渡できます。"/>
@@ -399,7 +393,6 @@
 				ホームページ:
 			</text>
 			<button label="設定" name="set_media_url"/>
-			<check_box label="URL を非表示" name="hide_media_url" tool_tip="このオプションをオンにすると、許可なしでこの区画情報にアクセスしているユーザーにはメディア URL が表示されません。 これは HTML タイプには使用できませんのでご注意ください。"/>
 			<text name="Description:">
 				説明:
 			</text>
@@ -429,7 +422,6 @@
 			<text name="MusicURL:">
 				音楽 URL:
 			</text>
-			<check_box label="URL を非表示にする" name="hide_music_url" tool_tip="このオプションにチェックを入れると、権限のない人が区画情報を見たときに音楽の URL が隠れます。"/>
 			<text name="Sound:">
 				サウンド:
 			</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml
index 7480b048569cf3aff231b6186249b9ec30cf0117..725214086a57ca1878349298e6fe762b991b6bef 100644
--- a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml
@@ -24,16 +24,10 @@
 	<text name="LabelCreatorTitle">
 		クリエーター
 	</text>
-	<text name="LabelCreatorName">
-		Nicole Linden
-	</text>
 	<button label="情報" label_selected="" name="BtnCreator"/>
 	<text name="LabelOwnerTitle">
 		オーナー:
 	</text>
-	<text name="LabelOwnerName">
-		Thrax Linden
-	</text>
 	<button label="情報" label_selected="" name="BtnOwner"/>
 	<text name="LabelAcquiredTitle">
 		入手日時:
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index bbd78fb818e48dc1757b032a7b18302f034d4177..2272234d7a29f8945fbdf5762539f86c4c47e18d 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -170,15 +170,9 @@
 			<text name="Creator:">
 				制作者:
 			</text>
-			<text name="Creator Name">
-				Esbee Linden
-			</text>
 			<text name="Owner:">
 				所有者:
 			</text>
-			<text name="Owner Name">
-				Erica Linden
-			</text>
 			<text name="Group:">
 				グループ:
 			</text>
diff --git a/indra/newview/skins/default/xui/ja/inspect_avatar.xml b/indra/newview/skins/default/xui/ja/inspect_avatar.xml
index fb4937242bf2ddfd3610fb3bc5706a2079d28b96..f3ea794bc7ba1d519c056db63dacb09cc6075200 100644
--- a/indra/newview/skins/default/xui/ja/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/ja/inspect_avatar.xml
@@ -10,7 +10,6 @@
 	<string name="Details">
 		[SL_PROFILE]
 	</string>
-	<text name="user_name" value="Grumpity ProductEngine"/>
 	<text name="user_subtitle" value="11 Months, 3 days old"/>
 	<text name="user_details">
 		This is my second life description and I really think it is great.
diff --git a/indra/newview/skins/default/xui/ja/inspect_group.xml b/indra/newview/skins/default/xui/ja/inspect_group.xml
index b461b93f650d4ed1b4351d82b27baa29acb48aad..be628befdff4b793dfb6b92b279a053c49a92d4a 100644
--- a/indra/newview/skins/default/xui/ja/inspect_group.xml
+++ b/indra/newview/skins/default/xui/ja/inspect_group.xml
@@ -16,9 +16,6 @@
 	<string name="YouAreMember">
 		あなたはメンバーです
 	</string>
-	<text name="group_name">
-		Grumpity&apos;s Grumpy Group of Moose
-	</text>
 	<text name="group_subtitle">
 		123 メートル
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_activeim_row.xml b/indra/newview/skins/default/xui/ja/panel_activeim_row.xml
deleted file mode 100644
index 84272752cfb816ddebe9d3c7b4cd9cae4cd9c9bb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/ja/panel_activeim_row.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_activeim_row">
-	<text name="contact_name">
-		Grumpity ProductEngine
-	</text>
-</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_chat_header.xml b/indra/newview/skins/default/xui/ja/panel_chat_header.xml
index babbff3132519e6978721ec137bd3f9aa1ed48d3..7916bf5155aa4d15b741094ca413575a3d7e529b 100644
--- a/indra/newview/skins/default/xui/ja/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/ja/panel_chat_header.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="im_header" name="im_header">
-	<text_editor name="user_name" value="Ericag Vader"/>
 	<text name="time_box" value="23:30"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_instant_message.xml b/indra/newview/skins/default/xui/ja/panel_instant_message.xml
index 9fd0cb3b0d61cbe6e368e5e19d2fdfc6bfbd4571..bf4cbcdc46e12bf84cf28ffaf36179e55a8908c9 100644
--- a/indra/newview/skins/default/xui/ja/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/ja/panel_instant_message.xml
@@ -4,7 +4,6 @@
 		6
 	</string>
 	<panel label="im_header" name="im_header">
-		<text name="user_name" value="Erica Vader"/>
 		<text name="time_box" value="23:30"/>
 	</panel>
 	<button label="返信" name="reply"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_profile_view.xml b/indra/newview/skins/default/xui/ja/panel_profile_view.xml
index 5666a93cf0f2781de13c78804cec40e1c97fc449..82807bc8fc79f05e29a09a8ff554301c5b25c2c9 100644
--- a/indra/newview/skins/default/xui/ja/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/ja/panel_profile_view.xml
@@ -6,7 +6,6 @@
 	<string name="status_offline">
 		オフライン
 	</string>
-	<text_editor name="user_name" value="(ローディング...)"/>
 	<text name="status" value="オンライン"/>
 	<tab_container name="tabs">
 		<panel label="プロフィール" name="panel_profile"/>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
index ff9b5dc6aa5030fe96d3b68254579fe07f6078ca..eb2bfa993b8c59e857fbe8cce613c33a81babfe6 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml
@@ -48,15 +48,9 @@
 		<text name="CreatorNameLabel">
 			制作者:
 		</text>
-		<text name="Creator Name">
-			Erica Linden
-		</text>
 		<text name="Owner:">
 			所有者:
 		</text>
-		<text name="Owner Name">
-			Erica Linden
-		</text>
 		<text name="Group_label">
 			グループ:
 		</text>
diff --git a/indra/newview/skins/default/xui/nl/floater_about_land.xml b/indra/newview/skins/default/xui/nl/floater_about_land.xml
index 4271ad5b82a05e9663ec6664bfe4e107c5ac16a6..d51ea1c0f85e9af6ea2d7acd128629ba20e27b87 100644
--- a/indra/newview/skins/default/xui/nl/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/nl/floater_about_land.xml
@@ -23,9 +23,7 @@
 			<text name="Owner:">
 				Eigenaar:
 			</text>
-			<text name="OwnerText" left="102" width="242">
-				Leyla Linden
-			</text>
+			<text name="OwnerText" left="102" width="242"/>
 			<button label="Profiel" name="Profile..."/>
 			<text name="Group:">
 				Groep:
@@ -427,8 +425,6 @@ hebt geklikt.)
 			</text>
 			<check_box label="Automatisch schalen" name="media_auto_scale" tool_tip="Het aanvinken van deze optie zal de inhoud voor dit perceel automatisch schalen. Het kan enigszins trager zijn en de visuele kwaliteit kan iets lager zijn, maar er zal geen andere textuurschaling of uitlijning nodig zijn."/>
 			<check_box label="Herhaal media" name="media_loop" tool_tip="Speel media af in een lus. Wanneer de media klaar is met afspelen zal het herstarten vanaf het begin."/>
-			<check_box label="Verberg media URL" name="hide_media_url" tool_tip="Het aanvinken van deze optie zal de media URL verbergen voor alle niet-geautoriseerde bekijkers van de perceelinformatie. Let op: dit is niet beschikbaar voor HTML types."/>
-			<check_box label="Verberg muziek URL" name="hide_music_url" tool_tip="Het aanvinken van deze optie zal de muziek URL verbergen voor alle niet-geautoriseerde bekijkers van de perceelinformatie."/>
 			<text name="media_size" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard." width="120">
 				Media grootte:
 			</text>
diff --git a/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml
index 63cfafab8112a7133cb5f75655634b14c9163975..81a823acd44ed94b338f211e1f1475a5f61d8541 100644
--- a/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml
@@ -9,16 +9,10 @@
 	<text name="LabelCreatorTitle">
 		Maker:
 	</text>
-	<text name="LabelCreatorName">
-		Nicole Linden
-	</text>
 	<button label="Profiel..." label_selected="" name="BtnCreator"/>
 	<text name="LabelOwnerTitle">
 		Eigenaar
 	</text>
-	<text name="LabelOwnerName">
-		Thrax Linden
-	</text>
 	<button label="Profiel..." label_selected="" name="BtnOwner"/>
 	<text name="LabelAcquiredTitle">
 		Verworven:
diff --git a/indra/newview/skins/default/xui/nl/floater_tools.xml b/indra/newview/skins/default/xui/nl/floater_tools.xml
index 4ffe675831579ddd98bfd2299914a398b9cc6b4d..98339383e4b58798424d01b7da278f758ac3df9a 100644
--- a/indra/newview/skins/default/xui/nl/floater_tools.xml
+++ b/indra/newview/skins/default/xui/nl/floater_tools.xml
@@ -98,16 +98,10 @@
 			<text name="Creator:">
 				Maker:
 			</text>
-			<text name="Creator Name">
-				Thrax Linden
-			</text>
 			<button label="Profiel..." label_selected="Profiel..." name="button creator profile"/>
 			<text name="Owner:">
 				Eigenaar:
 			</text>
-			<text name="Owner Name">
-				Thrax Linden
-			</text>
 			<button label="Profiel..." label_selected="Profiel..." name="button owner profile"/>
 			<text name="Group:">
 				Groep:
diff --git a/indra/newview/skins/default/xui/pl/floater_about_land.xml b/indra/newview/skins/default/xui/pl/floater_about_land.xml
index 0974518a1f618965db6168bd59dc619779ae2838..b935615fcb4034e9b7e806e65aff77a7c67baba4 100644
--- a/indra/newview/skins/default/xui/pl/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pl/floater_about_land.xml
@@ -87,15 +87,9 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 			<text name="Owner:">
 				Właściciel:
 			</text>
-			<text name="OwnerText">
-				Leyla Linden
-			</text>
 			<text name="Group:">
 				Grupa:
 			</text>
-			<text name="GroupText">
-				Leyla Linden
-			</text>
 			<button label="Ustaw" name="Set..."/>
 			<check_box label="Udostępnij przypisywanie na Grupę" name="check deed" tool_tip="Oficer Grupy ma prawo przepisać prawo własności Posiadłości na Grupę. Posiadłość wspierana jest przez przydziały pochodzące od członków Grupy."/>
 			<button label="Przypisz" name="Deed..." tool_tip="Prawo przypisania Posiadłości na Grupę może dokonać jedynie oficer Grupy."/>
@@ -399,7 +393,6 @@ Jedynie większe posiadłości mogą być umieszczone w bazie wyszukiwarki.
 				URL mediów:
 			</text>
 			<button label="Ustaw" name="set_media_url"/>
-			<check_box label="Ukryj URL mediów" name="hide_media_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów wszystkim nieautoryzowanym Rezydentom. Nie dotyczy to jednak typów HTML."/>
 			<text name="Description:">
 				Opis:
 			</text>
@@ -428,7 +421,6 @@ Mediów:
 			<check_box label="Powtórka Odtwarzania" name="media_loop" tool_tip="Odtwarzaj media z powtórką. Po wyświetleniu materialu, rozpocznie się odtwarzanie od początku."/>
 		</panel>
 		<panel label="DŹWIĘK" name="land_audio_panel">
-			<check_box label="Ukryj URL muzyki" name="hide_music_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów muzycznych w posiadłości wszystkim nieautoryzowanym Użytkownikom"/>
 			<check_box label="Rozmowy dozwolone" name="parcel_enable_voice_channel"/>
 			<check_box label="Rozmowy dozwolone (ustawione przez MajÄ…tek)" name="parcel_enable_voice_channel_is_estate_disabled"/>
 			<check_box label="Ogranicz komunikację głosową w tej Posiadłości." name="parcel_enable_voice_channel_local"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml
index 1e63987585f816905c2a92555d30540899266a76..054d74b2347a4c286c75136c59e3794bbbfd5826 100644
--- a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml
@@ -24,16 +24,10 @@
 	<text name="LabelCreatorTitle">
 		Twórca:
 	</text>
-	<text name="LabelCreatorName">
-		Nicole Linden
-	</text>
 	<button label="Profil..." label_selected="" name="BtnCreator"/>
 	<text name="LabelOwnerTitle">
 		Właściciel:
 	</text>
-	<text name="LabelOwnerName">
-		Thrax Linden
-	</text>
 	<button label="Profil..." label_selected="" name="BtnOwner"/>
 	<text name="LabelAcquiredTitle">
 		Nabyte:
diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml
index 7c1ced0eaee7349f6de61cef899a7760a383da45..337998efc989bfaf01679650c1bb165e040c19a4 100644
--- a/indra/newview/skins/default/xui/pl/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pl/floater_tools.xml
@@ -173,15 +173,9 @@
 			<text name="Creator:">
 				Twórca:
 			</text>
-			<text name="Creator Name">
-				Pani Esbee Linden (esbee.linden)
-			</text>
 			<text name="Owner:">
 				Właściciel:
 			</text>
-			<text name="Owner Name">
-				Pani Erica &quot;Moose&quot; Linden (erica.linden)
-			</text>
 			<text name="Group:">
 				Grupa:
 			</text>
diff --git a/indra/newview/skins/default/xui/pl/inspect_avatar.xml b/indra/newview/skins/default/xui/pl/inspect_avatar.xml
index 1db333935293e3ea685a8b2f963a5a139f8c9592..5e982c0185f9d0f1959bc9de4460c4eb48850623 100644
--- a/indra/newview/skins/default/xui/pl/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/pl/inspect_avatar.xml
@@ -10,8 +10,6 @@
 	<string name="Details">
 		[SL_PROFILE]
 	</string>
-	<text name="user_name_small" value="Grumpity ProductEngine with a long name"/>
-	<text name="user_slid" value="james.linden"/>
 	<text name="user_details">
 		To jest mój opis w Second Life.
 	</text>
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
index c409666ec92b307772d1a1673ffd95064197e0c9..e6fd8b18f8d05adacdf5a679783c6d7adc22b5c2 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
@@ -25,11 +25,7 @@
 				<text name="display_name_label" value="Wyświetlana nazwa:"/>
 				<text name="solo_username_label" value="Nazwa użytkownika:"/>
 				<button name="set_name" tool_tip="Ustaw wyświetlanią nazwę."/>
-				<text name="solo_user_name" value="Hamilton Hitchings"/>
-				<text name="user_name" value="Hamilton Hitchings"/>
-				<text name="user_name_small" value="Hamilton Hitchings"/>
 				<text name="user_label" value="Nazwa użytkownika:"/>
-				<text name="user_slid" value="hamilton.linden"/>
 				<panel name="lifes_images_panel">
 					<icon label="" name="2nd_life_edit_icon" tool_tip="Kliknij aby wybrać teksturę"/>
 				</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_profile_view.xml b/indra/newview/skins/default/xui/pl/panel_profile_view.xml
index 3590e9222e523dd2597db5c4da71356cb9c4250c..1fd6bc1d109140f31d380d12552cd86e9a85338f 100644
--- a/indra/newview/skins/default/xui/pl/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/pl/panel_profile_view.xml
@@ -10,10 +10,8 @@
 	<text name="solo_username_label" value="Nazwa użytkownika:"/>
 	<text name="status" value="Obecnie w SL"/>
 	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
-	<text name="user_name" value="Jack Linden"/>
 	<button name="copy_to_clipboard" tool_tip="Kopiuj do schowka"/>
 	<text name="user_label" value="Nazwa użytkownika:"/>
-	<text name="user_slid" value="jack.linden"/>
 	<tab_container name="tabs">
 		<panel label="PROFIL" name="panel_profile"/>
 		<panel label="ULUBIONE" name="panel_picks"/>
diff --git a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml
index d8cf456c6462fd1277f08ecb4ab2a0029c25f6a9..eb8c9cdbbbd2a59b5fd039d918f4ebb8b03c58de 100644
--- a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml
@@ -48,15 +48,9 @@
 		<text name="CreatorNameLabel">
 			Twórca:
 		</text>
-		<text name="Creator Name">
-			Erica Linden
-		</text>
 		<text name="Owner:">
 			Właściciel:
 		</text>
-		<text name="Owner Name">
-			Erica Linden
-		</text>
 		<text name="Group_label">
 			Grupa:
 		</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml
index 3fb4bc272e2ca4a09cbdf3c0f6ff098747029f0e..ffd1cce76c61d98e97295ca0a77b4abb336fbbc2 100644
--- a/indra/newview/skins/default/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml
@@ -87,15 +87,9 @@ Vá para o menu Mundo &gt; Sobre o terreno ou selecione outro lote para mostrar
 			<text name="Owner:">
 				Proprietário:
 			</text>
-			<text name="OwnerText">
-				Leyla Linden
-			</text>
 			<text name="Group:">
 				Grupo:
 			</text>
-			<text name="GroupText">
-				Leyla Linden
-			</text>
 			<button label="Ajustar" name="Set..."/>
 			<check_box label="Permitir doação para o grupo" name="check deed" tool_tip="Oficiais do grupo podem doar esse terreno ao grupo, passando a administração para o gestor da ilha"/>
 			<button label="Passar" name="Deed..." tool_tip="Você só pode doar o terreno se você for um dos oficiais do grupo selecionado."/>
@@ -398,7 +392,6 @@ Apenas lotes maiores podem ser listados na busca.
 			</text>
 			<line_editor left="97" name="media_url"/>
 			<button label="Definir..." label_selected="Definir..." name="set_media_url"/>
-			<check_box label="Esconder a URL da mídia" left="97" name="hide_media_url" tool_tip="Ativando esta opção, a URL da mídia se ocultará para quaisquer visualizadores não autorizados a ver esta informação do lote. Notar que isto não está disponível para tipos HTML."/>
 			<text name="Description:">
 				Descrição:
 			</text>
@@ -430,7 +423,6 @@ Mídia:
 			<text name="MusicURL:">
 				URL de música:
 			</text>
-			<check_box label="Ocultar URL" name="hide_music_url" tool_tip="Selecionar esta opção oculta o URL de música a visitantes não autorizados aos dados do terreno."/>
 			<text name="Sound:">
 				Som:
 			</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml
index 8fe69c097dd07d15dac6a6b64c342bd2e9fe0c7d..8a8f1f5b3406d17e296b690efb0652067abea189 100644
--- a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml
@@ -24,16 +24,10 @@
 	<text name="LabelCreatorTitle">
 		Criador:
 	</text>
-	<text name="LabelCreatorName">
-		Nicole Linden
-	</text>
 	<button label="Perfil..." label_selected="" name="BtnCreator"/>
 	<text name="LabelOwnerTitle">
 		Dono:
 	</text>
-	<text name="LabelOwnerName">
-		Thrax Linden
-	</text>
 	<button label="Perfil..." label_selected="" name="BtnOwner"/>
 	<text name="LabelAcquiredTitle">
 		Adquirido:
diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml
index bd5fbf80d13ece103f164ebab873ac30e2188147..f90097bf222182b75345c1939817e04ae9bd9755 100644
--- a/indra/newview/skins/default/xui/pt/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tools.xml
@@ -170,15 +170,9 @@
 			<text name="Creator:">
 				Criador:
 			</text>
-			<text name="Creator Name">
-				Mrs. Esbee Linden (esbee.linden)
-			</text>
 			<text name="Owner:">
 				Proprietário:
 			</text>
-			<text name="Owner Name">
-				Mrs. Erica &quot;Moose&quot; Linden (erica.linden)
-			</text>
 			<text name="Group:">
 				Grupo:
 			</text>
diff --git a/indra/newview/skins/default/xui/pt/inspect_avatar.xml b/indra/newview/skins/default/xui/pt/inspect_avatar.xml
index a95d5ff31a6a1f9f69b5ae9820b3f936c6c982e6..a199c58c152ebbe58c9ad5de78a8044ff1d85f6b 100644
--- a/indra/newview/skins/default/xui/pt/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/pt/inspect_avatar.xml
@@ -10,8 +10,6 @@
 	<string name="Details">
 		[PERFIL_SL]
 	</string>
-	<text name="user_name_small" value="Grumpity ProductEngine with a long name"/>
-	<text name="user_slid" value="james.linden"/>
 	<text name="user_details">
 		This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
 	</text>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml
index 4066842b2526dc3708653a6000ee45d5d3e9bed9..0ba73828456c582b7438b2e9663641fecf669bc1 100644
--- a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml
@@ -25,11 +25,7 @@
 				<text name="display_name_label" value="Nome de tela:"/>
 				<text name="solo_username_label" value="Nome de usuário:"/>
 				<button name="set_name" tool_tip="Definir nome de tela"/>
-				<text name="solo_user_name" value="Hamilton Hitchings"/>
-				<text name="user_name" value="Hamilton Hitchings"/>
-				<text name="user_name_small" value="Hamilton Hitchings"/>
 				<text name="user_label" value="Nome de usuário:"/>
-				<text name="user_slid" value="hamilton.linden"/>
 				<panel name="lifes_images_panel">
 					<icon label="" name="2nd_life_edit_icon" tool_tip="Selecione uma imagem"/>
 				</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_roles.xml b/indra/newview/skins/default/xui/pt/panel_group_roles.xml
index c861e296240a100465b1e71c1e8c0ff809923a74..11a31570d1120e6e1d1c71f5306210df76d6ac20 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_roles.xml
@@ -6,8 +6,8 @@
 	<panel.string name="want_apply_text">
 		Deseja salvar essas mudanças?
 	</panel.string>
-	<tab_container height="164" name="roles_tab_container">
-		<panel height="148" label="MEMBROS" name="members_sub_tab" tool_tip="Membros">
+	<tab_container name="roles_tab_container">
+		<panel label="MEMBROS" name="members_sub_tab" tool_tip="Membros">
 			<panel.string name="help_text">
 				Você pode adicionar ou remover as funções designadas aos membros. Selecione vários membros, segurando a tecla Ctrl e clicando em seus nomes.
 			</panel.string>
@@ -15,15 +15,15 @@
 				[AREA] m²
 			</panel.string>
 			<filter_editor label="Filtrar por membro" name="filter_input"/>
-			<name_list bottom_delta="-105" height="104" name="member_list">
+			<name_list name="member_list">
 				<name_list.columns label="Membro" name="name"/>
 				<name_list.columns label="Doações" name="donated"/>
 				<name_list.columns label="Status" name="online"/>
 			</name_list>
-			<button label="Convidar" name="member_invite" width="165"/>
+			<button label="Convidar" name="member_invite" />
 			<button label="Ejetar" name="member_eject"/>
 		</panel>
-		<panel height="148" label="CARGOS" name="roles_sub_tab">
+		<panel label="CARGOS" name="roles_sub_tab">
 			<panel.string name="help_text">
 				Cada cargo tem um nome e uma lista das funções que membros designados podem desempenhar.
  Os membros podem ter um ou mais cargos.
@@ -36,7 +36,7 @@
 				Inv_FolderClosed
 			</panel.string>
 			<filter_editor label="Filtrar por cargo" name="filter_input"/>
-			<scroll_list bottom_delta="-104" height="104" name="role_list">
+			<scroll_list name="role_list">
 				<scroll_list.columns label="Cargo" name="name"/>
 				<scroll_list.columns label="Título" name="title"/>
 				<scroll_list.columns label="#" name="members"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_profile_view.xml b/indra/newview/skins/default/xui/pt/panel_profile_view.xml
index d3ec9b82bc21a9699d433b519e87ebad0e7c8f7d..d81ee08e6cf8f3982ac3e3a0c1d11ff74d719bd0 100644
--- a/indra/newview/skins/default/xui/pt/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/pt/panel_profile_view.xml
@@ -10,10 +10,8 @@
 	<text name="solo_username_label" value="Nome de usuário:"/>
 	<text name="status" value="Conectado"/>
 	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
-	<text name="user_name" value="Jack Linden"/>
 	<button name="copy_to_clipboard" tool_tip="Copiar para área de transferência"/>
 	<text name="user_label" value="Nome de usuário:"/>
-	<text name="user_slid" value="jack.linden"/>
 	<tab_container name="tabs">
 		<panel label="PERFIL" name="panel_profile"/>
 		<panel label="DESTAQUES" name="panel_picks"/>
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
index dd65810b224adfc0de845de86a94c13530a32f57..8092e6c1454fc9fbd18e59421f69419bc629b6d1 100644
--- a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml
@@ -48,15 +48,9 @@
 		<text name="CreatorNameLabel">
 			Criador:
 		</text>
-		<text name="Creator Name">
-			Erica Linden
-		</text>
 		<text name="Owner:">
 			Proprietário:
 		</text>
-		<text name="Owner Name">
-			Erica Linden
-		</text>
 		<text name="Group_label">
 			Grupo:
 		</text>
diff --git a/indra/newview/tests/test_llxmlrpc_peer.py b/indra/newview/tests/test_llxmlrpc_peer.py
index aeebb0cfd18b758c6e449c77f986de9a7684a184..1c7204a6b639cad20ee9761709be0095f632f1fe 100644
--- a/indra/newview/tests/test_llxmlrpc_peer.py
+++ b/indra/newview/tests/test_llxmlrpc_peer.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 """\
 @file   test_llxmlrpc_peer.py
 @author Nat Goodspeed
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 338c62b9fb3a7193971a511872c108a16fd69be4..1722c84d342831e2d03384f056581484a267b377 100644
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1,29 +1,31 @@
-#!/usr/bin/python
-# @file viewer_manifest.py
-# @author Ryan Williams
-# @brief Description of all installer viewer files, and methods for packaging
-#        them into installers for all supported platforms.
-#
-# $LicenseInfo:firstyear=2006&license=viewerlgpl$
-# Second Life Viewer Source Code
-# Copyright (C) 2010, Linden Research, Inc.
-# 
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation;
-# version 2.1 of the License only.
-# 
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-# 
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-# 
-# Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
-# $/LicenseInfo$
+#!/usr/bin/env python
+"""\
+@file viewer_manifest.py
+@author Ryan Williams
+@brief Description of all installer viewer files, and methods for packaging
+       them into installers for all supported platforms.
+
+$LicenseInfo:firstyear=2006&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2006-2011, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
 import sys
 import os.path
 import re
diff --git a/indra/test/test_llmanifest.py b/indra/test/test_llmanifest.py
index 89c36f95ddaf40cdf1c1db5f85aa1680f6073664..a97abbc6eed3292fad3af64d5ac746ec2cfb20fd 100644
--- a/indra/test/test_llmanifest.py
+++ b/indra/test/test_llmanifest.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 """
 @file test_llmanifest.py
 @author Ryan Williams
diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt
index b4043b0fd9cd892778cb66da7c248f93d1995a9c..02d7031b81834622d0fef264202556f2ccf43e3f 100644
--- a/indra/test_apps/llplugintest/CMakeLists.txt
+++ b/indra/test_apps/llplugintest/CMakeLists.txt
@@ -1,5 +1,4 @@
 # -*- cmake -*-
-
 project(llplugintest)
 
 include(00-Common)
diff --git a/scripts/build_version.py b/scripts/build_version.py
index 4bef290b7dd0c932a6b709ef05587d563436850b..203d76fe9ee904d0f8ffe73f04da66d251bda019 100755
--- a/scripts/build_version.py
+++ b/scripts/build_version.py
@@ -1,16 +1,39 @@
 #!/usr/bin/env python
-#
-# Print the build information embedded in a header file.
-#
-# Expects to be invoked from the command line with a file name and a
-# list of directories to search.  The file name will be one of the
-# following:
-#
-#   llversionserver.h
-#   llversionviewer.h
-#
-# The directory list that follows will include indra/llcommon, where
-# these files live.
+"""\
+@file   build_version.py
+@brief Print the build information embedded in a header file.
+
+  Expects to be invoked from the command line with a file name and a
+  list of directories to search.  The file name will be one of the
+  following:
+
+    llversionserver.h
+    llversionviewer.h
+
+  The directory list that follows will include indra/llcommon, where
+  these files live.
+
+$LicenseInfo:firstyear=2010&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2010-2011, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
 
 import errno, os, re
 
diff --git a/scripts/md5check.py b/scripts/md5check.py
index 951fe0105ca8a7106c0ac9649b6f4d050b016402..1a54a2844c395e037a321a789f7015e642a0faa6 100755
--- a/scripts/md5check.py
+++ b/scripts/md5check.py
@@ -1,32 +1,27 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 """\
 @file md5check.py
 @brief Replacement for message template compatibility verifier.
 
-$LicenseInfo:firstyear=20i10&license=viewergpl$
-Copyright (c) 2010, Linden Research, Inc.
-
+$LicenseInfo:firstyear=2010&license=viewerlgpl$
 Second Life Viewer Source Code
-The source code in this file ("Source Code") is provided by Linden Lab
-to you under the terms of the GNU General Public License, version 2.0
-("GPL"), unless you have obtained a separate licensing agreement
-("Other License"), formally executed by you and Linden Lab.  Terms of
-the GPL can be found in doc/GPL-license.txt in this distribution, or
-online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
-
-There are special exceptions to the terms and conditions of the GPL as
-it is applied to this Source Code. View the full text of the exception
-in the file doc/FLOSS-exception.txt in this software distribution, or
-online at
-http://secondlifegrid.net/programs/open_source/licensing/flossexception
-
-By copying, modifying or distributing this software, you acknowledge
-that you have read and understood your obligations described above,
-and agree to abide by those obligations.
-
-ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
-WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
-COMPLETENESS OR PERFORMANCE.
+Copyright (C) 2010-2011, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
 $/LicenseInfo$
 """
 
diff --git a/scripts/setup-path.py b/scripts/setup-path.py
index 55e0f1a85f91665048ee46c475fbf5a496ed4d41..ce83d815bf8d0ac3c743d8848e715da48d2b29bb 100644
--- a/scripts/setup-path.py
+++ b/scripts/setup-path.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 """\
 @file setup-path.py
 @brief Get the python library directory in the path, so we don't have
diff --git a/scripts/template_verifier.py b/scripts/template_verifier.py
index ddb050fbbbb604626d3f3a89d6831b54e990a901..7f3fed88a92bc1ce2cb72e8f9159ad3f4288ec28 100644
--- a/scripts/template_verifier.py
+++ b/scripts/template_verifier.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
 """\
 @file template_verifier.py
 @brief Message template compatibility verifier.
diff --git a/scripts/update_version_files.py b/scripts/update_version_files.py
index da60fd105a93e35059e62a63107481f20bdcfec1..87036dc1c05e2a0f632c768e827fc27894a16418 100755
--- a/scripts/update_version_files.py
+++ b/scripts/update_version_files.py
@@ -1,8 +1,30 @@
-#!/usr/bin/python
-#
-# Update all of the various files in the repository to a new version number,
-# instead of having to figure it out by hand
-#
+#!/usr/bin/env python
+"""\
+@file   update_version_files.py
+@brief  Update all of the various files in the repository to a new version number,
+instead of having to figure it out by hand
+
+$LicenseInfo:firstyear=2010&license=viewerlgpl$
+Second Life Viewer Source Code
+Copyright (C) 2010-2011, Linden Research, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+version 2.1 of the License only.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+$/LicenseInfo$
+"""
 
 import sys
 import os.path
@@ -37,9 +59,6 @@ def add_indra_lib_path():
 import getopt, os, re, commands
 from indra.util import llversion
 
-svn = os.path.expandvars("${SVN}")
-if not svn or svn == "${SVN}": svn = "svn"
-
 def usage():
     print "Usage:"
     print sys.argv[0] + """ [options]
@@ -68,7 +87,7 @@ def usage():
    Print this message and exit.
 
 Common Uses:
-   # Update server and viewer build numbers to the current SVN revision:
+   # Update server and viewer build numbers to the current hg revision:
    update_version_files.py
 
    # Update build numbers unless we are on a release branch:
@@ -80,7 +99,7 @@ def usage():
    # Update just the viewer version number explicitly:
    update_version_files.py --viewer --version=1.18.1.6     
 
-   # Update just the server build number to the current SVN revision:
+   # Update just the server build number to the current hg revision:
    update_version_files.py --server
                                
    # Update the viewer channel
@@ -152,9 +171,7 @@ def _getstatusoutput(cmd):
       'CFBundleGetInfoString = "Second Life version %(VER_MAJOR)s.%(VER_MINOR)s.%(VER_PATCH)s.%(VER_BUILD)s'))
 
 
-version_re      = re.compile('(\d+).(\d+).(\d+).(\d+)')
-svn_branch_re   = re.compile('^URL:\s+\S+/([^/\s]+)$', re.MULTILINE)
-svn_revision_re = re.compile('^Last Changed Rev: (\d+)$', re.MULTILINE)
+version_re = re.compile('(\d+).(\d+).(\d+).(\d+)')
 
 def main():
     script_path = os.path.dirname(__file__)
@@ -249,13 +266,7 @@ def main():
             server_version = new_version
     else:
 
-        if llversion.using_svn():
-            if new_revision:
-                revision = new_revision
-            else:
-                revision = llversion.get_svn_revision()
-            branch = llversion.get_svn_branch()
-        elif llversion.using_hg():
+        if llversion.using_hg():
             if new_revision:
                 revision = new_revision
             else:
@@ -327,5 +338,6 @@ def main():
             print "File %(filename)s not present, skipping..." % locals()
     return 0
 
-main()
+if __name__ == '__main__':
+    sys.exit(main())