diff --git a/.hgtags b/.hgtags
index 993ae0d7d60e49cfb2ccff6fdf766dfd469e109f..db450a1a145a2bb628955a10ea887a365af552de 100644
--- a/.hgtags
+++ b/.hgtags
@@ -147,10 +147,10 @@ a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release
 19a498fa62570f352d7d246f17e3c81cc1d82d8b 2.7.5-start
 09984bfa6cae17e0f72d02b75c1b7393c65eecfc DRTVWR-69_2.7.5-beta1
 09984bfa6cae17e0f72d02b75c1b7393c65eecfc 2.7.5-beta1
-6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release
-6866d9df6efbd441c66451debd376d21211de39c 2.7.5-release
 e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-start
 502f6a5deca9365ddae57db4f1e30172668e171e 2.8.1-start
+6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release
+6866d9df6efbd441c66451debd376d21211de39c 2.7.5-release
 e1ed60913230dd64269a7f7fc52cbc6004f6d52c DRTVWR-71_2.8.0-beta1
 e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-beta1
 493d9127ee50e84ba08a736a65a23ca86f7a5b01 DRTVWR-70_2.8.0-release
@@ -159,3 +159,11 @@ e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-beta1
 2c7e459e0c883f8e406b932e41e60097e9ee077e 2.8.1-beta1
 29e93d7e19991011bd12b5748142b11a5dcb4370 DRTVWR-72_2.8.1-release
 29e93d7e19991011bd12b5748142b11a5dcb4370 2.8.1-release
+4780e3bd2b3042f91be3426151f28c30d199bb3b DRTVWR-76_2.8.1-hotfix
+4780e3bd2b3042f91be3426151f28c30d199bb3b 2.8.1-hotfix
+54bc7823ad4e3a436fef79710f685a7372bbf795 2.8.2-start
+ac0f1a132d35c02a58861d37cca75b0429ac9137 2.8.3-start
+599677276b227357140dda35bea4a2c18e2e67b5 DRTVWR-75_2.8.3-beta1
+599677276b227357140dda35bea4a2c18e2e67b5 2.8.3-beta1
+fb85792b84bf28428889c4cc966469d92e5dac4c DRTVWR-74_2.8.3-release
+fb85792b84bf28428889c4cc966469d92e5dac4c 2.8.3-release
diff --git a/BuildParams b/BuildParams
index 9433e335fe118da0949c9d47aa5e9e8ae54caa90..ad2f71e336c8ceea5504c4daa79d95a616bf6559 100644
--- a/BuildParams
+++ b/BuildParams
@@ -14,8 +14,8 @@ public_build = true
 # skip windows debug build until we can get a fix in.
 build_CYGWIN_Debug = false
 
-# Update Public Inworld Build Status Indicators
-email_status_this_is_os = false
+# Update Public Inworld Build Status Indicators (setting should mirror "public_build")
+email_status_this_is_os = true
 
 # Limit extent of codeticket updates to revisions after...
 codeticket_since = 2.2.0-release
@@ -163,6 +163,7 @@ viewer-asset-delivery-metrics.build_server_tests = false
 # Simon says
 # ========================================
 simon_viewer-dev-private.public_build = false
+simon_viewer-dev-private.email_status_this_is_os = false
 
 
 # eof
diff --git a/build.sh b/build.sh
index 4268c76e78affe3e73432526d3f3e8b0056cce7e..c7c89fe3c2bdc40376b04230c94f1e8defe4937a 100755
--- a/build.sh
+++ b/build.sh
@@ -209,7 +209,7 @@ do
       end_section BuildParallel
     else
       begin_section "Build$variant"
-      build "$variant" "$build_dir" 2>&1 | tee -a "$build_log" | grep --line-buffered "^##teamcity"
+      build "$variant" "$build_dir" 2>&1 | tee -a "$build_log" | sed -n 's/^ *\(##teamcity.*\)/\1/p'
       if `cat "$build_dir/build_ok"`
       then
         echo so far so good.
@@ -238,7 +238,7 @@ then
     begin_section "Build$variant"
     build_dir=`build_dir_$arch $variant`
     build_dir_stubs="$build_dir/win_setup/$variant"
-    tee -a $build_log < "$build_dir/build.log" | grep --line-buffered "^##teamcity"
+    tee -a $build_log < "$build_dir/build.log" | sed -n 's/^ *\(##teamcity.*\)/\1/p'
     if `cat "$build_dir/build_ok"`
     then
       echo so far so good.
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 68b0a4279f009de4473124bb1ff48296007ee323..ee56ef36653ac97c63c93a8929d8d4d9f3f3e3e9 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -219,6 +219,7 @@ Boroondas Gupte
 	VWR-20891
 	VWR-23455
 	VWR-24487
+	VWR-26066
 	WEB-262
 Bulli Schumann
 	CT-218
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 9910281b649b472107be29397c4293f80377ab53..c755020a64e28f13c1f85b560b8a4ef2e3e69e27 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -317,7 +317,8 @@ if (LL_TESTS)
   LL_ADD_INTEGRATION_TEST(lllazy "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llprocessor "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llrand "" "${test_libs}")
-  LL_ADD_INTEGRATION_TEST(llsdserialize "" "${test_libs}")
+  LL_ADD_INTEGRATION_TEST(llsdserialize "" "${test_libs}"
+                          "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/tests/setpython.py")
   LL_ADD_INTEGRATION_TEST(llstring "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(lltreeiterators "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(lluri "" "${test_libs}")
diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp
index bd594b06cfd5094cd28aa3b1ec56ee59f755a954..675eda2fc580a19be813e0f09c69d492f12ab14e 100644
--- a/indra/llcommon/llfasttimer_class.cpp
+++ b/indra/llcommon/llfasttimer_class.cpp
@@ -228,6 +228,14 @@ void LLFastTimer::DeclareTimer::updateCachedPointers()
 		// update cached pointer
 		it->mFrameState = &it->mTimer.getFrameState();
 	}
+
+	// also update frame states of timers on stack
+	LLFastTimer* cur_timerp = LLFastTimer::sCurTimerData.mCurTimer;
+	while(cur_timerp->mLastTimerData.mCurTimer != cur_timerp)	
+	{
+		cur_timerp->mFrameState = &cur_timerp->mFrameState->mTimer->getFrameState();
+		cur_timerp = cur_timerp->mLastTimerData.mCurTimer;
+	}
 }
 
 //static
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 99e61433c65c748cd48286f9b09c7e4dc7e86499..8807bf1bf8a5b5ee9ad0e9a1627279cf9b9c3d86 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -1003,184 +1003,6 @@ LLSD LLMemoryInfo::loadStatsMap()
 		LL_WARNS("LLMemoryInfo") << "Unable to collect hw.memsize memory information" << LL_ENDL;
 	}
 
-	FILE* pout = popen("vm_stat 2>&1", "r");
-	if (! pout)                     // popen() couldn't run vm_stat
-	{
-		// Save errno right away.
-		int popen_errno(errno);
-		LL_WARNS("LLMemoryInfo") << "Unable to collect vm_stat memory information: ";
-		char buffer[256];
-		if (0 == strerror_r(popen_errno, buffer, sizeof(buffer)))
-		{
-			LL_CONT << buffer;
-		}
-		else
-		{
-			LL_CONT << "errno " << popen_errno;
-		}
-		LL_CONT << LL_ENDL;
-	}
-	else                            // popen() launched vm_stat
-	{
-		// Mach Virtual Memory Statistics: (page size of 4096 bytes)
-		// Pages free:					 462078.
-		// Pages active:				 142010.
-		// Pages inactive:				 220007.
-		// Pages wired down:			 159552.
-		// "Translation faults":	  220825184.
-		// Pages copy-on-write:			2104153.
-		// Pages zero filled:		  167034876.
-		// Pages reactivated:			  65153.
-		// Pageins:						2097212.
-		// Pageouts:					  41759.
-		// Object cache: 841598 hits of 7629869 lookups (11% hit rate)
-
-		// Intentionally don't pass the boost::no_except flag. These
-		// boost::regex objects are constructed with string literals, so they
-		// should be valid every time. If they become invalid, we WANT an
-		// exception, hopefully even before the dev checks in.
-		boost::regex pagesize_rx("\\(page size of ([0-9]+) bytes\\)");
-		boost::regex stat_rx("(.+): +([0-9]+)\\.");
-		boost::regex cache_rx("Object cache: ([0-9]+) hits of ([0-9]+) lookups "
-							  "\\(([0-9]+)% hit rate\\)");
-		boost::cmatch matched;
-		LLSD::Integer pagesizekb(4096/1024);
-
-		// Here 'pout' is vm_stat's stdout. Search it for relevant data.
-		char line[100];
-		line[sizeof(line)-1] = '\0';
-		while (fgets(line, sizeof(line)-1, pout))
-		{
-			size_t linelen(strlen(line));
-			// Truncate any trailing newline
-			if (line[linelen - 1] == '\n')
-			{
-				line[--linelen] = '\0';
-			}
-			LL_DEBUGS("LLMemoryInfo") << line << LL_ENDL;
-			if (regex_search_no_exc(line, matched, pagesize_rx))
-			{
-				// "Mach Virtual Memory Statistics: (page size of 4096 bytes)"
-				std::string pagesize_str(matched[1].first, matched[1].second);
-				try
-				{
-					// Reasonable to assume that pagesize will always be a
-					// multiple of 1Kb?
-					pagesizekb = boost::lexical_cast<LLSD::Integer>(pagesize_str)/1024;
-				}
-				catch (const boost::bad_lexical_cast&)
-				{
-					LL_WARNS("LLMemoryInfo") << "couldn't parse '" << pagesize_str
-											 << "' in vm_stat line: " << line << LL_ENDL;
-					continue;
-				}
-				stats.add("page size", pagesizekb);
-			}
-			else if (regex_match_no_exc(line, matched, stat_rx))
-			{
-				// e.g. "Pages free:					 462078."
-				// Strip double-quotes off certain statistic names
-				const char *key_begin(matched[1].first), *key_end(matched[1].second);
-				if (key_begin[0] == '"' && key_end[-1] == '"')
-				{
-					++key_begin;
-					--key_end;
-				}
-				LLSD::String key(key_begin, key_end);
-				LLSD::String value_str(matched[2].first, matched[2].second);
-				LLSD::Integer value(0);
-				try
-				{
-					value = boost::lexical_cast<LLSD::Integer>(value_str);
-				}
-				catch (const boost::bad_lexical_cast&)
-				{
-					LL_WARNS("LLMemoryInfo") << "couldn't parse '" << value_str
-											 << "' in vm_stat line: " << line << LL_ENDL;
-					continue;
-				}
-				// Store this statistic.
-				stats.add(key, value);
-				// Is this in units of pages? If so, convert to Kb.
-				static const LLSD::String pages("Pages ");
-				if (key.substr(0, pages.length()) == pages)
-				{
-					// Synthesize a new key with kb in place of Pages
-					LLSD::String kbkey("kb ");
-					kbkey.append(key.substr(pages.length()));
-					stats.add(kbkey, value * pagesizekb);
-				}
-			}
-			else if (regex_match_no_exc(line, matched, cache_rx))
-			{
-				// e.g. "Object cache: 841598 hits of 7629869 lookups (11% hit rate)"
-				static const char* cache_keys[] = { "cache hits", "cache lookups", "cache hit%" };
-				std::vector<LLSD::Integer> cache_values;
-				for (size_t i = 0; i < (sizeof(cache_keys)/sizeof(cache_keys[0])); ++i)
-				{
-					LLSD::String value_str(matched[i+1].first, matched[i+1].second);
-					LLSD::Integer value(0);
-					try
-					{
-						value = boost::lexical_cast<LLSD::Integer>(value_str);
-					}
-					catch (boost::bad_lexical_cast&)
-					{
-						LL_WARNS("LLMemoryInfo") << "couldn't parse '" << value_str
-												 << "' in vm_stat line: " << line << LL_ENDL;
-						continue;
-					}
-					stats.add(cache_keys[i], value);
-				}
-			}
-			else
-			{
-				LL_WARNS("LLMemoryInfo") << "unrecognized vm_stat line: " << line << LL_ENDL;
-			}
-		}
-		int status(pclose(pout));
-		if (status == -1)           // pclose() couldn't retrieve rc
-		{
-			// Save errno right away.
-			int pclose_errno(errno);
-			// The ECHILD error happens so frequently that unless filtered,
-			// the warning below spams the log file. This is too bad, because
-			// sometimes the logic above fails to produce any output derived
-			// from vm_stat, but we've been unable to observe any specific
-			// error indicating the problem.
-			if (pclose_errno != ECHILD)
-			{
-				LL_WARNS("LLMemoryInfo") << "Unable to obtain vm_stat termination code: ";
-				char buffer[256];
-				if (0 == strerror_r(pclose_errno, buffer, sizeof(buffer)))
-				{
-					LL_CONT << buffer;
-				}
-				else
-				{
-					LL_CONT << "errno " << pclose_errno;
-				}
-				LL_CONT << LL_ENDL;
-			}
-		}
-		else                        // pclose() retrieved rc; analyze
-		{
-			if (WIFEXITED(status))
-			{
-				int rc(WEXITSTATUS(status));
-				if (rc != 0)
-				{
-					LL_WARNS("LLMemoryInfo") << "vm_stat terminated with rc " << rc << LL_ENDL;
-				}
-			}
-			else if (WIFSIGNALED(status))
-			{
-				LL_WARNS("LLMemoryInfo") << "vm_stat terminated by signal " << WTERMSIG(status)
-										 << LL_ENDL;
-			}
-		}
-	}
-
 #elif LL_SOLARIS
 	U64 phys = 0;
 
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
index d9400fb5b325f1cbe05f57fb477def27eab36b86..4063cc730b49e5b470c6f534f19dc49b4e015218 100644
--- a/indra/llcommon/llthread.cpp
+++ b/indra/llcommon/llthread.cpp
@@ -323,7 +323,8 @@ LLMutex::LLMutex(apr_pool_t *poolp) :
 LLMutex::~LLMutex()
 {
 #if MUTEX_DEBUG
-	llassert_always(!isLocked()); // better not be locked!
+	//bad assertion, the subclass LLSignal might be "locked", and that's OK
+	//llassert_always(!isLocked()); // better not be locked!
 #endif
 	apr_thread_mutex_destroy(mAPRMutexp);
 	mAPRMutexp = NULL;
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index 0018b8e844a18b7941a65594f222dbe42f9e8c1b..f98a5398c3ba8ec41f7d0b0ddcd57618b922c871 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -29,7 +29,7 @@
 
 const S32 LL_VERSION_MAJOR = 2;
 const S32 LL_VERSION_MINOR = 8;
-const S32 LL_VERSION_PATCH = 1;
+const S32 LL_VERSION_PATCH = 3;
 const S32 LL_VERSION_BUILD = 0;
 
 const char * const LL_CHANNEL = "Second Life Developer";
diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp
index 7b4c7d6a48652edb1e2bcfd4428ec5faecfdbc18..72322c3b727a46b9f24a9527badfa76657eb2229 100644
--- a/indra/llcommon/tests/llsdserialize_test.cpp
+++ b/indra/llcommon/tests/llsdserialize_test.cpp
@@ -25,35 +25,293 @@
  * $/LicenseInfo$
  */
 
-#if !LL_WINDOWS
+
+#include "linden_common.h"
+
+#if LL_WINDOWS
+#include <winsock2.h>
+typedef U32 uint32_t;
+#include <process.h>
+#include <io.h>
+#else
+#include <unistd.h>
 #include <netinet/in.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include "llprocesslauncher.h"
 #endif
 
-#include "linden_common.h"
+#include <sstream>
+
+/*==========================================================================*|
+// Whoops, seems Linden's Boost package and the viewer are built with
+// different settings of VC's /Zc:wchar_t switch! Using Boost.Filesystem
+// pathname operations produces Windows link errors:
+// unresolved external symbol "private: static class std::codecvt<unsigned short,
+// char,int> const * & __cdecl boost::filesystem3::path::wchar_t_codecvt_facet()"
+// unresolved external symbol "void __cdecl boost::filesystem3::path_traits::convert()"
+// See:
+// http://boost.2283326.n4.nabble.com/filesystem-v3-unicode-and-std-codecvt-linker-error-td3455549.html
+// which points to:
+// http://msdn.microsoft.com/en-us/library/dh8che7s%28v=VS.100%29.aspx
+
+// As we're not trying to preserve compatibility with old Boost.Filesystem
+// code, but rather writing brand-new code, use the newest available
+// Filesystem API.
+#define BOOST_FILESYSTEM_VERSION 3
+#include "boost/filesystem.hpp"
+#include "boost/filesystem/v3/fstream.hpp"
+|*==========================================================================*/
+#include "boost/range.hpp"
+#include "boost/foreach.hpp"
+#include "boost/function.hpp"
+#include "boost/lambda/lambda.hpp"
+#include "boost/lambda/bind.hpp"
+namespace lambda = boost::lambda;
+/*==========================================================================*|
+// Aaaarrgh, Linden's Boost package doesn't even include Boost.Iostreams!
+#include "boost/iostreams/stream.hpp"
+#include "boost/iostreams/device/file_descriptor.hpp"
+|*==========================================================================*/
+
 #include "../llsd.h"
 #include "../llsdserialize.h"
+#include "llsdutil.h"
 #include "../llformat.h"
 
 #include "../test/lltut.h"
+#include "stringize.h"
 
+std::vector<U8> string_to_vector(const std::string& str)
+{
+	return std::vector<U8>(str.begin(), str.end());
+}
 
-#if LL_WINDOWS
-#include <winsock2.h>
-typedef U32 uint32_t;
-#endif
+#if ! LL_WINDOWS
+// We want to call strerror_r(), but alarmingly, there are two different
+// variants. The one that returns int always populates the passed buffer
+// (except in case of error), whereas the other one always returns a valid
+// char* but might or might not populate the passed buffer. How do we know
+// which one we're getting? Define adapters for each and let the compiler
+// select the applicable adapter.
 
-std::vector<U8> string_to_vector(std::string str)
+// strerror_r() returns char*
+std::string message_from(int /*orig_errno*/, const char* /*buffer*/, const char* strerror_ret)
 {
-	// bc LLSD can't...
-	size_t len = (size_t)str.length();
-	std::vector<U8> v(len);
-	for (size_t i = 0; i < len ; i++)
-	{
-		v[i] = str[i];
-	}
-	return v;
+    return strerror_ret;
 }
 
+// strerror_r() returns int
+std::string message_from(int orig_errno, const char* buffer, int strerror_ret)
+{
+    if (strerror_ret == 0)
+    {
+        return buffer;
+    }
+    // Here strerror_r() has set errno. Since strerror_r() has already failed,
+    // seems like a poor bet to call it again to diagnose its own error...
+    int stre_errno = errno;
+    if (stre_errno == ERANGE)
+    {
+        return STRINGIZE("strerror_r() can't explain errno " << orig_errno
+                         << " (buffer too small)");
+    }
+    if (stre_errno == EINVAL)
+    {
+        return STRINGIZE("unknown errno " << orig_errno);
+    }
+    // Here we don't even understand the errno from strerror_r()!
+    return STRINGIZE("strerror_r() can't explain errno " << orig_errno
+                     << " (error " << stre_errno << ')');
+}
+#endif  // ! LL_WINDOWS
+
+// boost::filesystem::temp_directory_path() isn't yet in Boost 1.45! :-(
+std::string temp_directory_path()
+{
+#if LL_WINDOWS
+    char buffer[4096];
+    GetTempPathA(sizeof(buffer), buffer);
+    return buffer;
+
+#else  // LL_DARWIN, LL_LINUX
+    static const char* vars[] = { "TMPDIR", "TMP", "TEMP", "TEMPDIR" };
+    BOOST_FOREACH(const char* var, vars)
+    {
+        const char* found = getenv(var);
+        if (found)
+            return found;
+    }
+    return "/tmp";
+#endif // LL_DARWIN, LL_LINUX
+}
+
+// Windows presents a kinda sorta compatibility layer. Code to the yucky
+// Windows names because they're less likely than the Posix names to collide
+// with any other names in this source.
+#if LL_WINDOWS
+#define _remove   DeleteFileA
+#else  // ! LL_WINDOWS
+#define _open     open
+#define _write    write
+#define _close    close
+#define _remove   remove
+#endif  // ! LL_WINDOWS
+
+// Create a text file with specified content "somewhere in the
+// filesystem," cleaning up when it goes out of scope.
+class NamedTempFile
+{
+public:
+    // Function that accepts an ostream ref and (presumably) writes stuff to
+    // it, e.g.:
+    // (lambda::_1 << "the value is " << 17 << '\n')
+    typedef boost::function<void(std::ostream&)> Streamer;
+
+    NamedTempFile(const std::string& ext, const std::string& content):
+        mPath(temp_directory_path())
+    {
+        createFile(ext, lambda::_1 << content);
+    }
+
+    // Disambiguate when passing string literal
+    NamedTempFile(const std::string& ext, const char* content):
+        mPath(temp_directory_path())
+    {
+        createFile(ext, lambda::_1 << content);
+    }
+
+    NamedTempFile(const std::string& ext, const Streamer& func):
+        mPath(temp_directory_path())
+    {
+        createFile(ext, func);
+    }
+
+    ~NamedTempFile()
+    {
+        _remove(mPath.c_str());
+    }
+
+    std::string getName() const { return mPath; }
+
+private:
+    void createFile(const std::string& ext, const Streamer& func)
+    {
+        // Silly maybe, but use 'ext' as the name prefix. Strip off a leading
+        // '.' if present.
+        int pfx_offset = ((! ext.empty()) && ext[0] == '.')? 1 : 0;
+
+#if ! LL_WINDOWS
+        // Make sure mPath ends with a directory separator, if it doesn't already.
+        if (mPath.empty() ||
+            ! (mPath[mPath.length() - 1] == '\\' || mPath[mPath.length() - 1] == '/'))
+        {
+            mPath.append("/");
+        }
+
+        // mkstemp() accepts and modifies a char* template string. Generate
+        // the template string, then copy to modifiable storage.
+        // mkstemp() requires its template string to end in six X's.
+        mPath += ext.substr(pfx_offset) + "XXXXXX";
+        // Copy to vector<char>
+        std::vector<char> pathtemplate(mPath.begin(), mPath.end());
+        // append a nul byte for classic-C semantics
+        pathtemplate.push_back('\0');
+        // std::vector promises that a pointer to the 0th element is the same
+        // as a pointer to a contiguous classic-C array
+        int fd(mkstemp(&pathtemplate[0]));
+        if (fd == -1)
+        {
+            // The documented errno values (http://linux.die.net/man/3/mkstemp)
+            // are used in a somewhat unusual way, so provide context-specific
+            // errors.
+            if (errno == EEXIST)
+            {
+                LL_ERRS("NamedTempFile") << "mkstemp(\"" << mPath
+                                         << "\") could not create unique file " << LL_ENDL;
+            }
+            if (errno == EINVAL)
+            {
+                LL_ERRS("NamedTempFile") << "bad mkstemp() file path template '"
+                                         << mPath << "'" << LL_ENDL;
+            }
+            // Shrug, something else
+            int mkst_errno = errno;
+            char buffer[256];
+            LL_ERRS("NamedTempFile") << "mkstemp(\"" << mPath << "\") failed: "
+                                     << message_from(mkst_errno, buffer,
+                                                     strerror_r(mkst_errno, buffer, sizeof(buffer)))
+                                     << LL_ENDL;
+        }
+        // mkstemp() seems to have worked! Capture the modified filename.
+        // Avoid the nul byte we appended.
+        mPath.assign(pathtemplate.begin(), (pathtemplate.end()-1));
+
+/*==========================================================================*|
+        // Define an ostream on the open fd. Tell it to close fd on destruction.
+        boost::iostreams::stream<boost::iostreams::file_descriptor_sink>
+            out(fd, boost::iostreams::close_handle);
+|*==========================================================================*/
+
+        // Write desired content.
+        std::ostringstream out;
+        // Stream stuff to it.
+        func(out);
+
+        std::string data(out.str());
+        int written(_write(fd, data.c_str(), data.length()));
+        int closed(_close(fd));
+        llassert_always(written == data.length() && closed == 0);
+
+#else // LL_WINDOWS
+        // GetTempFileName() is documented to require a MAX_PATH buffer.
+        char tempname[MAX_PATH];
+        // Use 'ext' as filename prefix, but skip leading '.' if any.
+        // The 0 param is very important: requests iterating until we get a
+        // unique name.
+        if (0 == GetTempFileNameA(mPath.c_str(), ext.c_str() + pfx_offset, 0, tempname))
+        {
+            // I always have to look up this call...  :-P
+            LPSTR msgptr;
+            FormatMessageA(
+                FORMAT_MESSAGE_ALLOCATE_BUFFER | 
+                FORMAT_MESSAGE_FROM_SYSTEM |
+                FORMAT_MESSAGE_IGNORE_INSERTS,
+                NULL,
+                GetLastError(),
+                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+                LPSTR(&msgptr),     // have to cast (char**) to (char*)
+                0, NULL );
+            LL_ERRS("NamedTempFile") << "GetTempFileName(\"" << mPath << "\", \""
+                                     << (ext.c_str() + pfx_offset) << "\") failed: "
+                                     << msgptr << LL_ENDL;
+            LocalFree(msgptr);
+        }
+        // GetTempFileName() appears to have worked! Capture the actual
+        // filename.
+        mPath = tempname;
+        // Open the file and stream content to it. Destructor will close.
+        std::ofstream out(tempname);
+        func(out);
+
+#endif  // LL_WINDOWS
+    }
+
+    void peep()
+    {
+        std::cout << "File '" << mPath << "' contains:\n";
+        std::ifstream reader(mPath.c_str());
+        std::string line;
+        while (std::getline(reader, line))
+            std::cout << line << '\n';
+        std::cout << "---\n";
+    }
+
+    std::string mPath;
+};
+
 namespace tut
 {
 	struct sd_xml_data
@@ -1494,5 +1752,223 @@ namespace tut
 		ensureBinaryAndNotation("map", test);
 		ensureBinaryAndXML("map", test);
 	}
-}
 
+    struct TestPythonCompatible
+    {
+        TestPythonCompatible():
+            // Note the peculiar insertion of __FILE__ into this string. Since
+            // this script is being written into a platform-dependent temp
+            // directory, we can't locate indra/lib/python relative to
+            // Python's __file__. Use __FILE__ instead, navigating relative
+            // to this C++ source file. Use Python raw-string syntax so
+            // Windows pathname backslashes won't mislead Python's string
+            // scanner.
+            import_llsd("import os.path\n"
+                        "import sys\n"
+                        "sys.path.insert(0,\n"
+                        "    os.path.join(os.path.dirname(r'" __FILE__ "'),\n"
+                        "                 os.pardir, os.pardir, 'lib', 'python'))\n"
+                        "try:\n"
+                        "    from llbase import llsd\n"
+                        "except ImportError:\n"
+                        "    from indra.base import llsd\n")
+        {}
+        ~TestPythonCompatible() {}
+
+        std::string import_llsd;
+
+        template <typename CONTENT>
+        void python(const std::string& desc, const CONTENT& script, int expect=0)
+        {
+            const char* PYTHON(getenv("PYTHON"));
+            ensure("Set $PYTHON to the Python interpreter", PYTHON);
+
+            NamedTempFile scriptfile(".py", script);
+
+#if LL_WINDOWS
+            std::string q("\"");
+            std::string qPYTHON(q + PYTHON + q);
+            std::string qscript(q + scriptfile.getName() + q);
+            int rc = _spawnl(_P_WAIT, PYTHON, qPYTHON.c_str(), qscript.c_str(), NULL);
+            if (rc == -1)
+            {
+                char buffer[256];
+                strerror_s(buffer, errno); // C++ can infer the buffer size!  :-O
+                ensure(STRINGIZE("Couldn't run Python " << desc << "script: " << buffer), false);
+            }
+            else
+            {
+                ensure_equals(STRINGIZE(desc << " script terminated with rc " << rc), rc, expect);
+            }
+
+#else  // LL_DARWIN, LL_LINUX
+            LLProcessLauncher py;
+            py.setExecutable(PYTHON);
+            py.addArgument(scriptfile.getName());
+            ensure_equals(STRINGIZE("Couldn't launch " << desc << " script"), py.launch(), 0);
+            // Implementing timeout would mean messing with alarm() and
+            // catching SIGALRM... later maybe...
+            int status(0);
+            if (waitpid(py.getProcessID(), &status, 0) == -1)
+            {
+                int waitpid_errno(errno);
+                ensure_equals(STRINGIZE("Couldn't retrieve rc from " << desc << " script: "
+                                        "waitpid() errno " << waitpid_errno),
+                              waitpid_errno, ECHILD);
+            }
+            else
+            {
+                if (WIFEXITED(status))
+                {
+                    int rc(WEXITSTATUS(status));
+                    ensure_equals(STRINGIZE(desc << " script terminated with rc " << rc),
+                                  rc, expect);
+                }
+                else if (WIFSIGNALED(status))
+                {
+                    ensure(STRINGIZE(desc << " script terminated by signal " << WTERMSIG(status)),
+                           false);
+                }
+                else
+                {
+                    ensure(STRINGIZE(desc << " script produced impossible status " << status),
+                           false);
+                }
+            }
+#endif
+        }
+    };
+
+    typedef tut::test_group<TestPythonCompatible> TestPythonCompatibleGroup;
+    typedef TestPythonCompatibleGroup::object TestPythonCompatibleObject;
+    TestPythonCompatibleGroup pycompat("LLSD serialize Python compatibility");
+
+    template<> template<>
+    void TestPythonCompatibleObject::test<1>()
+    {
+        set_test_name("verify python()");
+        python("hello",
+               "import sys\n"
+               "sys.exit(17)\n",
+               17);                 // expect nonzero rc
+    }
+
+    template<> template<>
+    void TestPythonCompatibleObject::test<2>()
+    {
+        set_test_name("verify NamedTempFile");
+        python("platform",
+               "import sys\n"
+               "print 'Running on', sys.platform\n");
+    }
+
+    template<> template<>
+    void TestPythonCompatibleObject::test<3>()
+    {
+        set_test_name("verify sequence to Python");
+
+        LLSD cdata(LLSDArray(17)(3.14)
+                  ("This string\n"
+                   "has several\n"
+                   "lines."));
+
+        const char pydata[] =
+            "def verify(iterable):\n"
+            "    it = iter(iterable)\n"
+            "    assert it.next() == 17\n"
+            "    assert abs(it.next() - 3.14) < 0.01\n"
+            "    assert it.next() == '''\\\n"
+            "This string\n"
+            "has several\n"
+            "lines.'''\n"
+            "    try:\n"
+            "        it.next()\n"
+            "    except StopIteration:\n"
+            "        pass\n"
+            "    else:\n"
+            "        assert False, 'Too many data items'\n";
+
+        // Create a something.llsd file containing 'data' serialized to
+        // notation. It's important to separate with newlines because Python's
+        // llsd module doesn't support parsing from a file stream, only from a
+        // string, so we have to know how much of the file to read into a
+        // string.
+        NamedTempFile file(".llsd",
+                           // NamedTempFile's boost::function constructor
+                           // takes a callable. To this callable it passes the
+                           // std::ostream with which it's writing the
+                           // NamedTempFile. This lambda-based expression
+                           // first calls LLSD::Serialize() with that ostream,
+                           // then streams a newline to it, etc.
+                           (lambda::bind(LLSDSerialize::toNotation, cdata[0], lambda::_1),
+                            lambda::_1 << '\n',
+                            lambda::bind(LLSDSerialize::toNotation, cdata[1], lambda::_1),
+                            lambda::_1 << '\n',
+                            lambda::bind(LLSDSerialize::toNotation, cdata[2], lambda::_1),
+                            lambda::_1 << '\n'));
+
+        python("read C++ notation",
+               lambda::_1 <<
+               import_llsd <<
+               "def parse_each(iterable):\n"
+               "    for item in iterable:\n"
+               "        yield llsd.parse(item)\n" <<
+               pydata <<
+               // Don't forget raw-string syntax for Windows pathnames.
+               "verify(parse_each(open(r'" << file.getName() << "')))\n");
+    }
+
+    template<> template<>
+    void TestPythonCompatibleObject::test<4>()
+    {
+        set_test_name("verify sequence from Python");
+
+        // Create an empty data file. This is just a placeholder for our
+        // script to write into. Create it to establish a unique name that
+        // we know.
+        NamedTempFile file(".llsd", "");
+
+        python("write Python notation",
+               lambda::_1 <<
+               "from __future__ import with_statement\n" <<
+               import_llsd <<
+               "DATA = [\n"
+               "    17,\n"
+               "    3.14,\n"
+               "    '''\\\n"
+               "This string\n"
+               "has several\n"
+               "lines.''',\n"
+               "]\n"
+               // Don't forget raw-string syntax for Windows pathnames.
+               // N.B. Using 'print' implicitly adds newlines.
+               "with open(r'" << file.getName() << "', 'w') as f:\n"
+               "    for item in DATA:\n"
+               "        print >>f, llsd.format_notation(item)\n");
+
+        std::ifstream inf(file.getName().c_str());
+        LLSD item;
+        // Notice that we're not doing anything special to parse out the
+        // newlines: LLSDSerialize::fromNotation ignores them. While it would
+        // seem they're not strictly necessary, going in this direction, we
+        // want to ensure that notation-separated-by-newlines works in both
+        // directions -- since in practice, a given file might be read by
+        // either language.
+        ensure_equals("Failed to read LLSD::Integer from Python",
+                      LLSDSerialize::fromNotation(item, inf, LLSDSerialize::SIZE_UNLIMITED),
+                      1);
+        ensure_equals(item.asInteger(), 17);
+        ensure_equals("Failed to read LLSD::Real from Python",
+                      LLSDSerialize::fromNotation(item, inf, LLSDSerialize::SIZE_UNLIMITED),
+                      1);
+        ensure_approximately_equals("Bad LLSD::Real value from Python",
+                                    item.asReal(), 3.14, 7); // 7 bits ~= 0.01
+        ensure_equals("Failed to read LLSD::String from Python",
+                      LLSDSerialize::fromNotation(item, inf, LLSDSerialize::SIZE_UNLIMITED),
+                      1);
+        ensure_equals(item.asString(), 
+                      "This string\n"
+                      "has several\n"
+                      "lines.");
+    }
+}
diff --git a/indra/llcommon/tests/setpython.py b/indra/llcommon/tests/setpython.py
new file mode 100644
index 0000000000000000000000000000000000000000..df7b90428e929614b0d45986e875801bf5d0e1f4
--- /dev/null
+++ b/indra/llcommon/tests/setpython.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python
+"""\
+@file   setpython.py
+@author Nat Goodspeed
+@date   2011-07-13
+@brief  Set PYTHON environment variable for tests that care.
+
+$LicenseInfo:firstyear=2011&license=viewerlgpl$
+Copyright (c) 2011, Linden Research, Inc.
+$/LicenseInfo$
+"""
+
+import os
+import sys
+import subprocess
+
+if __name__ == "__main__":
+    os.environ["PYTHON"] = sys.executable
+    sys.exit(subprocess.call(sys.argv[1:]))
diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp
index 7c8b7e3584b6818309a3c5936dc768a3cdb43278..0735842dcd2e625eef829b73e580d70cec4d2128 100644
--- a/indra/llmessage/llcurl.cpp
+++ b/indra/llmessage/llcurl.cpp
@@ -579,11 +579,18 @@ void LLCurl::Easy::prepRequest(const std::string& url,
 
 ////////////////////////////////////////////////////////////////////////////
 
-class LLCurl::Multi
+class LLCurl::Multi : public LLThread
 {
 	LOG_CLASS(Multi);
 public:
-	
+
+	typedef enum
+	{
+		PERFORM_STATE_READY=0,
+		PERFORM_STATE_PERFORMING=1,
+		PERFORM_STATE_COMPLETED=2
+	} ePerformState;
+
 	Multi();
 	~Multi();
 
@@ -593,13 +600,20 @@ class LLCurl::Multi
 	void removeEasy(Easy* easy);
 
 	S32 process();
-	S32 perform();
+	void perform();
 	
+	virtual void run();
+
 	CURLMsg* info_read(S32* msgs_in_queue);
 
 	S32 mQueued;
 	S32 mErrorCount;
 	
+	S32 mPerformState;
+
+	LLCondition* mSignal;
+	bool mQuitting;
+
 private:
 	void easyFree(Easy*);
 	
@@ -614,9 +628,14 @@ class LLCurl::Multi
 };
 
 LLCurl::Multi::Multi()
-	: mQueued(0),
-	  mErrorCount(0)
+	: LLThread("Curl Multi"),
+	  mQueued(0),
+	  mErrorCount(0),
+	  mPerformState(PERFORM_STATE_READY)
 {
+	mQuitting = false;
+	mSignal = new LLCondition(NULL);
+
 	mCurlMultiHandle = curl_multi_init();
 	if (!mCurlMultiHandle)
 	{
@@ -630,6 +649,11 @@ LLCurl::Multi::Multi()
 
 LLCurl::Multi::~Multi()
 {
+	llassert(isStopped());
+
+	delete mSignal;
+	mSignal = NULL;
+
 	// Clean up active
 	for(easy_active_list_t::iterator iter = mEasyActiveList.begin();
 		iter != mEasyActiveList.end(); ++iter)
@@ -655,30 +679,50 @@ CURLMsg* LLCurl::Multi::info_read(S32* msgs_in_queue)
 	return curlmsg;
 }
 
+void LLCurl::Multi::perform()
+{
+	if (mPerformState == PERFORM_STATE_READY)
+	{
+		mSignal->signal();
+	}
+}
 
-S32 LLCurl::Multi::perform()
+void LLCurl::Multi::run()
 {
-	S32 q = 0;
-	for (S32 call_count = 0;
-		 call_count < MULTI_PERFORM_CALL_REPEAT;
-		 call_count += 1)
+	while (!mQuitting)
 	{
-		CURLMcode code = curl_multi_perform(mCurlMultiHandle, &q);
-		if (CURLM_CALL_MULTI_PERFORM != code || q == 0)
+		mSignal->wait();
+		mPerformState = PERFORM_STATE_PERFORMING;
+		if (!mQuitting)
 		{
-			check_curl_multi_code(code);
-			break;
-		}
+			S32 q = 0;
+			for (S32 call_count = 0;
+				 call_count < MULTI_PERFORM_CALL_REPEAT;
+				 call_count += 1)
+			{
+				CURLMcode code = curl_multi_perform(mCurlMultiHandle, &q);
+				if (CURLM_CALL_MULTI_PERFORM != code || q == 0)
+				{
+					check_curl_multi_code(code);
+					break;
+				}
 	
+			}
+			mQueued = q;
+			mPerformState = PERFORM_STATE_COMPLETED;
+		}
 	}
-	mQueued = q;
-	return q;
 }
 
 S32 LLCurl::Multi::process()
 {
 	perform();
-	
+
+	if (mPerformState != PERFORM_STATE_COMPLETED)
+	{
+		return 0;
+	}
+
 	CURLMsg* msg;
 	int msgs_in_queue;
 
@@ -709,6 +753,8 @@ S32 LLCurl::Multi::process()
 			}
 		}
 	}
+
+	mPerformState = PERFORM_STATE_READY;
 	return processed;
 }
 
@@ -787,6 +833,18 @@ LLCurlRequest::LLCurlRequest() :
 LLCurlRequest::~LLCurlRequest()
 {
 	llassert_always(mThreadID == LLThread::currentID());
+
+	//stop all Multi handle background threads
+	for (curlmulti_set_t::iterator iter = mMultiSet.begin(); iter != mMultiSet.end(); ++iter)
+	{
+		LLCurl::Multi* multi = *iter;
+		multi->mQuitting = true;
+		while (!multi->isStopped())
+		{
+			multi->mSignal->signal();
+			apr_sleep(1000);
+		}
+	}
 	for_each(mMultiSet.begin(), mMultiSet.end(), DeletePointer());
 }
 
@@ -794,6 +852,7 @@ void LLCurlRequest::addMulti()
 {
 	llassert_always(mThreadID == LLThread::currentID());
 	LLCurl::Multi* multi = new LLCurl::Multi();
+	multi->start();
 	mMultiSet.insert(multi);
 	mActiveMulti = multi;
 	mActiveRequestCount = 0;
@@ -923,6 +982,13 @@ S32 LLCurlRequest::process()
 		if (multi != mActiveMulti && tres == 0 && multi->mQueued == 0)
 		{
 			mMultiSet.erase(curiter);
+			multi->mQuitting = true;
+			while (!multi->isStopped())
+			{
+				multi->mSignal->signal();
+				apr_sleep(1000);
+			}
+
 			delete multi;
 		}
 	}
@@ -953,6 +1019,7 @@ LLCurlEasyRequest::LLCurlEasyRequest()
 	  mResultReturned(false)
 {
 	mMulti = new LLCurl::Multi();
+	mMulti->start();
 	mEasy = mMulti->allocEasy();
 	if (mEasy)
 	{
@@ -963,6 +1030,12 @@ LLCurlEasyRequest::LLCurlEasyRequest()
 
 LLCurlEasyRequest::~LLCurlEasyRequest()
 {
+	mMulti->mQuitting = true;
+	while (!mMulti->isStopped())
+	{
+		mMulti->mSignal->signal();
+		apr_sleep(1000);
+	}
 	delete mMulti;
 }
 	
@@ -1059,14 +1132,20 @@ void LLCurlEasyRequest::requestComplete()
 	}
 }
 
-S32 LLCurlEasyRequest::perform()
+void LLCurlEasyRequest::perform()
 {
-	return mMulti->perform();
+	mMulti->perform();
 }
 
 // Usage: Call getRestult until it returns false (no more messages)
 bool LLCurlEasyRequest::getResult(CURLcode* result, LLCurl::TransferInfo* info)
 {
+	if (mMulti->mPerformState != LLCurl::Multi::PERFORM_STATE_COMPLETED)
+	{ //we're busy, try again later
+		return false;
+	}
+	mMulti->mPerformState = LLCurl::Multi::PERFORM_STATE_READY;
+
 	if (!mEasy)
 	{
 		// Special case - we failed to initialize a curl_easy (can happen if too many open files)
diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h
index 4ce3fa10780b4c7021432280acd548531e9fc1f9..2f951d6ab8eb0ebd905ac8438e13805c899cd348 100644
--- a/indra/llmessage/llcurl.h
+++ b/indra/llmessage/llcurl.h
@@ -236,7 +236,7 @@ class LLCurlEasyRequest
 	void slist_append(const char* str);
 	void sendRequest(const std::string& url);
 	void requestComplete();
-	S32 perform();
+	void perform();
 	bool getResult(CURLcode* result, LLCurl::TransferInfo* info = NULL);
 	std::string getErrorString();
 
diff --git a/indra/llmessage/llfiltersd2xmlrpc.cpp b/indra/llmessage/llfiltersd2xmlrpc.cpp
index 812ef7c151e680ed32dada0949a1269053456b72..e0ca056a5f698afb11ad860f0be48c2e291cc0a4 100644
--- a/indra/llmessage/llfiltersd2xmlrpc.cpp
+++ b/indra/llmessage/llfiltersd2xmlrpc.cpp
@@ -308,6 +308,7 @@ LLFilterSD2XMLRPCResponse::~LLFilterSD2XMLRPCResponse()
 }
 
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_SD2XMLRPC_RESPONSE("SD2XMLRPC Response");
 // virtual
 LLIOPipe::EStatus LLFilterSD2XMLRPCResponse::process_impl(
 	const LLChannelDescriptors& channels,
@@ -316,6 +317,8 @@ LLIOPipe::EStatus LLFilterSD2XMLRPCResponse::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_SD2XMLRPC_RESPONSE);
+
 	PUMP_DEBUG;
 	// This pipe does not work if it does not have everyting. This
 	// could be addressed by making a stream parser for llsd which
@@ -382,6 +385,8 @@ LLFilterSD2XMLRPCRequest::~LLFilterSD2XMLRPCRequest()
 {
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_SD2XMLRPC_REQUEST("S22XMLRPC Request");
+
 // virtual
 LLIOPipe::EStatus LLFilterSD2XMLRPCRequest::process_impl(
 	const LLChannelDescriptors& channels,
@@ -390,6 +395,7 @@ LLIOPipe::EStatus LLFilterSD2XMLRPCRequest::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_SD2XMLRPC_REQUEST);
 	// This pipe does not work if it does not have everyting. This
 	// could be addressed by making a stream parser for llsd which
 	// handled partial information.
@@ -586,6 +592,8 @@ LLFilterXMLRPCResponse2LLSD::~LLFilterXMLRPCResponse2LLSD()
 {
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_XMLRPC2LLSD_RESPONSE("XMLRPC2LLSD Response");
+
 LLIOPipe::EStatus LLFilterXMLRPCResponse2LLSD::process_impl(
 	const LLChannelDescriptors& channels,
 	buffer_ptr_t& buffer,
@@ -593,6 +601,8 @@ LLIOPipe::EStatus LLFilterXMLRPCResponse2LLSD::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_XMLRPC2LLSD_RESPONSE);
+
 	PUMP_DEBUG;
 	if(!eos) return STATUS_BREAK;
 	if(!buffer) return STATUS_ERROR;
@@ -668,6 +678,7 @@ LLFilterXMLRPCRequest2LLSD::~LLFilterXMLRPCRequest2LLSD()
 {
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_XMLRPC2LLSD_REQUEST("XMLRPC2LLSD Request");
 LLIOPipe::EStatus LLFilterXMLRPCRequest2LLSD::process_impl(
 	const LLChannelDescriptors& channels,
 	buffer_ptr_t& buffer,
@@ -675,6 +686,7 @@ LLIOPipe::EStatus LLFilterXMLRPCRequest2LLSD::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_XMLRPC2LLSD_REQUEST);
 	PUMP_DEBUG;
 	if(!eos) return STATUS_BREAK;
 	if(!buffer) return STATUS_ERROR;
diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp
index 3b18a9177cf055e244953b36373016eb05619b6c..73e8a690851800ca5bf7a69314e15ee446bc316e 100644
--- a/indra/llmessage/lliohttpserver.cpp
+++ b/indra/llmessage/lliohttpserver.cpp
@@ -140,6 +140,7 @@ class LLHTTPPipe : public LLIOPipe
 	LLSD mHeaders;
 };
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_HTTP_PIPE("HTTP Pipe");
 LLIOPipe::EStatus LLHTTPPipe::process_impl(
 	const LLChannelDescriptors& channels,
     buffer_ptr_t& buffer,
@@ -147,6 +148,7 @@ LLIOPipe::EStatus LLHTTPPipe::process_impl(
     LLSD& context,
     LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_HTTP_PIPE);
 	PUMP_DEBUG;
     lldebugs << "LLSDHTTPServer::process_impl" << llendl;
 
@@ -428,6 +430,9 @@ class LLHTTPResponseHeader : public LLIOPipe
 /**
  * LLHTTPResponseHeader
  */
+
+static LLFastTimer::DeclareTimer FTM_PROCESS_HTTP_HEADER("HTTP Header");
+
 // virtual
 LLIOPipe::EStatus LLHTTPResponseHeader::process_impl(
 	const LLChannelDescriptors& channels,
@@ -436,6 +441,7 @@ LLIOPipe::EStatus LLHTTPResponseHeader::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_HTTP_HEADER);
 	PUMP_DEBUG;
 	LLMemType m1(LLMemType::MTYPE_IO_HTTP_SERVER);
 	if(eos)
@@ -630,6 +636,8 @@ void LLHTTPResponder::markBad(
 		<< "</body>\n</html>\n";
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_HTTP_RESPONDER("HTTP Responder");
+
 // virtual
 LLIOPipe::EStatus LLHTTPResponder::process_impl(
 	const LLChannelDescriptors& channels,
@@ -638,6 +646,7 @@ LLIOPipe::EStatus LLHTTPResponder::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_HTTP_RESPONDER);
 	PUMP_DEBUG;
 	LLMemType m1(LLMemType::MTYPE_IO_HTTP_SERVER);
 	LLIOPipe::EStatus status = STATUS_OK;
diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp
index 8c752fbe301e74f2767e4203555d6cc4bc7fd868..b717e321bfe9eef182eba707001dc171837c6c03 100644
--- a/indra/llmessage/lliosocket.cpp
+++ b/indra/llmessage/lliosocket.cpp
@@ -301,6 +301,8 @@ LLIOSocketReader::~LLIOSocketReader()
 	//lldebugs << "Destroying LLIOSocketReader" << llendl;
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_SOCKET_READER("Socket Reader");
+
 // virtual
 LLIOPipe::EStatus LLIOSocketReader::process_impl(
 	const LLChannelDescriptors& channels,
@@ -309,6 +311,7 @@ LLIOPipe::EStatus LLIOSocketReader::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_SOCKET_READER);
 	PUMP_DEBUG;
 	LLMemType m1(LLMemType::MTYPE_IO_TCP);
 	if(!mSource) return STATUS_PRECONDITION_NOT_MET;
@@ -401,6 +404,7 @@ LLIOSocketWriter::~LLIOSocketWriter()
 	//lldebugs << "Destroying LLIOSocketWriter" << llendl;
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_SOCKET_WRITER("Socket Writer");
 // virtual
 LLIOPipe::EStatus LLIOSocketWriter::process_impl(
 	const LLChannelDescriptors& channels,
@@ -409,6 +413,7 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_SOCKET_WRITER);
 	PUMP_DEBUG;
 	LLMemType m1(LLMemType::MTYPE_IO_TCP);
 	if(!mDestination) return STATUS_PRECONDITION_NOT_MET;
@@ -555,6 +560,7 @@ void LLIOServerSocket::setResponseTimeout(F32 timeout_secs)
 	mResponseTimeout = timeout_secs;
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_SERVER_SOCKET("Server Socket");
 // virtual
 LLIOPipe::EStatus LLIOServerSocket::process_impl(
 	const LLChannelDescriptors& channels,
@@ -563,6 +569,7 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_SERVER_SOCKET);
 	PUMP_DEBUG;
 	LLMemType m1(LLMemType::MTYPE_IO_TCP);
 	if(!pump)
diff --git a/indra/llmessage/llioutil.cpp b/indra/llmessage/llioutil.cpp
index 2e6ee59ff2cdfb160e1c820c9a2bd75b75c0abc3..8c50fd50693a1e62ab70d57c8649465d2ebecd21 100644
--- a/indra/llmessage/llioutil.cpp
+++ b/indra/llmessage/llioutil.cpp
@@ -43,6 +43,8 @@ LLIOPipe::EStatus LLIOFlush::process_impl(
 	return STATUS_OK;
 }
 
+
+static LLFastTimer::DeclareTimer FTM_PROCESS_SLEEP("IO Sleep");
 /** 
  * @class LLIOSleep
  */
@@ -53,6 +55,7 @@ LLIOPipe::EStatus LLIOSleep::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_SLEEP);
 	if(mSeconds > 0.0)
 	{
 		if(pump) pump->sleepChain(mSeconds);
@@ -62,6 +65,7 @@ LLIOPipe::EStatus LLIOSleep::process_impl(
 	return STATUS_DONE;
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_ADD_CHAIN("Add Chain");
 /** 
  * @class LLIOAddChain
  */
@@ -72,6 +76,7 @@ LLIOPipe::EStatus LLIOAddChain::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_ADD_CHAIN);
 	pump->addChain(mChain, mTimeout);
 	return STATUS_DONE;
 }
diff --git a/indra/llmessage/llsdrpcclient.cpp b/indra/llmessage/llsdrpcclient.cpp
index 86fe5c79122f026244107999b7a22a2a258441b2..91fd070f0744b6ac24252ee1563cdc3d06f0e545 100644
--- a/indra/llmessage/llsdrpcclient.cpp
+++ b/indra/llmessage/llsdrpcclient.cpp
@@ -82,6 +82,8 @@ bool LLSDRPCResponse::extractResponse(const LLSD& sd)
 	return rv;
 }
 
+static LLFastTimer::DeclareTimer FTM_SDRPC_RESPONSE("SDRPC Response");
+
 // virtual
 LLIOPipe::EStatus LLSDRPCResponse::process_impl(
 	const LLChannelDescriptors& channels,
@@ -90,6 +92,7 @@ LLIOPipe::EStatus LLSDRPCResponse::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_SDRPC_RESPONSE);
 	PUMP_DEBUG;
 	LLMemType m1(LLMemType::MTYPE_IO_SD_CLIENT);
 	if(mIsError)
@@ -178,6 +181,8 @@ bool LLSDRPCClient::call(
 	return true;
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_SDRPC_CLIENT("SDRPC Client");
+
 // virtual
 LLIOPipe::EStatus LLSDRPCClient::process_impl(
 	const LLChannelDescriptors& channels,
@@ -186,6 +191,7 @@ LLIOPipe::EStatus LLSDRPCClient::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_SDRPC_CLIENT);
 	PUMP_DEBUG;
 	LLMemType m1(LLMemType::MTYPE_IO_SD_CLIENT);
 	if((STATE_NONE == mState) || (!pump))
diff --git a/indra/llmessage/llsdrpcserver.cpp b/indra/llmessage/llsdrpcserver.cpp
index f87c418fb152c5aece31c7e3c0ce73245a18ebba..9f776aca72a252220fbf4b9f659d376a88a18125 100644
--- a/indra/llmessage/llsdrpcserver.cpp
+++ b/indra/llmessage/llsdrpcserver.cpp
@@ -97,6 +97,8 @@ void LLSDRPCServer::clearLock()
 	}
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_SDRPC_SERVER("SDRPC Server");
+
 // virtual
 LLIOPipe::EStatus LLSDRPCServer::process_impl(
 	const LLChannelDescriptors& channels,
@@ -105,6 +107,7 @@ LLIOPipe::EStatus LLSDRPCServer::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_SDRPC_SERVER);
 	PUMP_DEBUG;
 	LLMemType m1(LLMemType::MTYPE_IO_SD_SERVER);
 //	lldebugs << "LLSDRPCServer::process_impl" << llendl;
diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp
index 28bd09fc4cb10615f60d1f224411b2249fa1770a..e8e35d00a21aa5808c6e5b35047e007751fc66f1 100644
--- a/indra/llmessage/llurlrequest.cpp
+++ b/indra/llmessage/llurlrequest.cpp
@@ -270,6 +270,8 @@ LLIOPipe::EStatus LLURLRequest::handleError(
 	return status;
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_URL_REQUEST("URL Request");
+
 // virtual
 LLIOPipe::EStatus LLURLRequest::process_impl(
 	const LLChannelDescriptors& channels,
@@ -278,6 +280,7 @@ LLIOPipe::EStatus LLURLRequest::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_URL_REQUEST);
 	PUMP_DEBUG;
 	LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
 	//llinfos << "LLURLRequest::process_impl()" << llendl;
@@ -288,6 +291,8 @@ LLIOPipe::EStatus LLURLRequest::process_impl(
 	const S32 MIN_ACCUMULATION = 100000;
 	if(pump && (mDetail->mByteAccumulator > MIN_ACCUMULATION))
 	{
+		static LLFastTimer::DeclareTimer FTM_URL_ADJUST_TIMEOUT("Adjust Timeout");
+		LLFastTimer t(FTM_URL_ADJUST_TIMEOUT);
 		 // This is a pretty sloppy calculation, but this
 		 // tries to make the gross assumption that if data
 		 // is coming in at 56kb/s, then this transfer will
@@ -335,16 +340,30 @@ LLIOPipe::EStatus LLURLRequest::process_impl(
 	{
 		PUMP_DEBUG;
 		LLIOPipe::EStatus status = STATUS_BREAK;
-		mDetail->mCurlRequest->perform();
+		static LLFastTimer::DeclareTimer FTM_URL_PERFORM("Perform");
+		{
+			LLFastTimer t(FTM_URL_PERFORM);
+			mDetail->mCurlRequest->perform();
+		}
+
 		while(1)
 		{
 			CURLcode result;
-			bool newmsg = mDetail->mCurlRequest->getResult(&result);
+
+			static LLFastTimer::DeclareTimer FTM_PROCESS_URL_REQUEST_GET_RESULT("Get Result");
+
+			bool newmsg = false;
+			{
+				LLFastTimer t(FTM_PROCESS_URL_REQUEST_GET_RESULT);
+				newmsg = mDetail->mCurlRequest->getResult(&result);
+			}
+		
 			if(!newmsg)
 			{
 				// keep processing
 				break;
 			}
+		
 
 			mState = STATE_HAVE_RESPONSE;
 			context[CONTEXT_REQUEST][CONTEXT_TRANSFERED_BYTES] = mRequestTransferedBytes;
@@ -370,7 +389,11 @@ LLIOPipe::EStatus LLURLRequest::process_impl(
 						link.mChannels = LLBufferArray::makeChannelConsumer(
 							channels);
 						chain.push_back(link);
-						pump->respond(chain, buffer, context);
+						static LLFastTimer::DeclareTimer FTM_PROCESS_URL_PUMP_RESPOND("Pump Respond");
+						{
+							LLFastTimer t(FTM_PROCESS_URL_PUMP_RESPOND);
+							pump->respond(chain, buffer, context);
+						}
 						mCompletionCallback = NULL;
 					}
 					break;
@@ -422,8 +445,11 @@ void LLURLRequest::initialize()
 	mResponseTransferedBytes = 0;
 }
 
+static LLFastTimer::DeclareTimer FTM_URL_REQUEST_CONFIGURE("URL Configure");
 bool LLURLRequest::configure()
 {
+	LLFastTimer t(FTM_URL_REQUEST_CONFIGURE);
+	
 	LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
 	bool rv = false;
 	S32 bytes = mDetail->mResponseBuffer->countAfter(
@@ -624,6 +650,7 @@ static size_t headerCallback(void* data, size_t size, size_t nmemb, void* user)
 	return header_len;
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_URL_EXTRACTOR("URL Extractor");
 /**
  * LLContextURLExtractor
  */
@@ -635,6 +662,7 @@ LLIOPipe::EStatus LLContextURLExtractor::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_URL_EXTRACTOR);
 	PUMP_DEBUG;
 	LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
 	// The destination host is in the context.
@@ -713,6 +741,7 @@ void LLURLRequestComplete::responseStatus(LLIOPipe::EStatus status)
 	mRequestStatus = status;
 }
 
+static LLFastTimer::DeclareTimer FTM_PROCESS_URL_COMPLETE("URL Complete");
 // virtual
 LLIOPipe::EStatus LLURLRequestComplete::process_impl(
 	const LLChannelDescriptors& channels,
@@ -721,6 +750,7 @@ LLIOPipe::EStatus LLURLRequestComplete::process_impl(
 	LLSD& context,
 	LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_PROCESS_URL_COMPLETE);
 	PUMP_DEBUG;
 	complete(channels, buffer);
 	return STATUS_OK;
diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp
index fb22d7f1f581dbf3ea70ae301ff4a83bc8ca0fab..1b10354c22919e597b2ee67d0660cf579d6c30fb 100644
--- a/indra/llrender/llcubemap.cpp
+++ b/indra/llrender/llcubemap.cpp
@@ -259,7 +259,7 @@ void LLCubeMap::setMatrix(S32 stage)
 	
 	if (mMatrixStage < 0) return;
 	
-	if (stage > 0)
+	//if (stage > 0)
 	{
 		gGL.getTexUnit(stage)->activate();
 	}
@@ -278,17 +278,17 @@ void LLCubeMap::setMatrix(S32 stage)
 	glLoadMatrixf((F32 *)trans.mMatrix);
 	glMatrixMode(GL_MODELVIEW);
 	
-	if (stage > 0)
+	/*if (stage > 0)
 	{
 		gGL.getTexUnit(0)->activate();
-	}
+	}*/
 }
 
 void LLCubeMap::restoreMatrix()
 {
 	if (mMatrixStage < 0) return;
 
-	if (mMatrixStage > 0)
+	//if (mMatrixStage > 0)
 	{
 		gGL.getTexUnit(mMatrixStage)->activate();
 	}
@@ -296,10 +296,10 @@ void LLCubeMap::restoreMatrix()
 	glPopMatrix();
 	glMatrixMode(GL_MODELVIEW);
 	
-	if (mMatrixStage > 0)
+	/*if (mMatrixStage > 0)
 	{
 		gGL.getTexUnit(0)->activate();
-	}
+	}*/
 }
 
 void LLCubeMap::setReflection (void)
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index c224ab0e9bb20a8c6aefb7517315e1c9cf1a6180..89377262091d981cf80ba0cba2a3c16b3e4d68b6 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -128,9 +128,21 @@ PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB = NULL;
 PFNGLGETBUFFERPOINTERVARBPROC		glGetBufferPointervARB = NULL;
 
 // GL_ARB_map_buffer_range
-PFNGLMAPBUFFERRANGEPROC			glMapBufferRange;
-PFNGLFLUSHMAPPEDBUFFERRANGEPROC	glFlushMappedBufferRange;
-
+PFNGLMAPBUFFERRANGEPROC			glMapBufferRange = NULL;
+PFNGLFLUSHMAPPEDBUFFERRANGEPROC	glFlushMappedBufferRange = NULL;
+
+// GL_ARB_sync
+PFNGLFENCESYNCPROC				glFenceSync = NULL;
+PFNGLISSYNCPROC					glIsSync = NULL;
+PFNGLDELETESYNCPROC				glDeleteSync = NULL;
+PFNGLCLIENTWAITSYNCPROC			glClientWaitSync = NULL;
+PFNGLWAITSYNCPROC				glWaitSync = NULL;
+PFNGLGETINTEGER64VPROC			glGetInteger64v = NULL;
+PFNGLGETSYNCIVPROC				glGetSynciv = NULL;
+
+// GL_APPLE_flush_buffer_range
+PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE = NULL;
+PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE = NULL;
 
 // vertex object prototypes
 PFNGLNEWOBJECTBUFFERATIPROC			glNewObjectBufferATI = NULL;
@@ -334,9 +346,10 @@ LLGLManager::LLGLManager() :
 	mHasFramebufferObject(FALSE),
 	mMaxSamples(0),
 	mHasBlendFuncSeparate(FALSE),
-
+	mHasSync(FALSE),
 	mHasVertexBufferObject(FALSE),
 	mHasMapBufferRange(FALSE),
+	mHasFlushBufferRange(FALSE),
 	mHasPBuffer(FALSE),
 	mHasShaderObjects(FALSE),
 	mHasVertexShader(FALSE),
@@ -774,7 +787,9 @@ void LLGLManager::initExtensions()
 	mHasOcclusionQuery = ExtensionExists("GL_ARB_occlusion_query", gGLHExts.mSysExts);
 	mHasOcclusionQuery2 = ExtensionExists("GL_ARB_occlusion_query2", gGLHExts.mSysExts);
 	mHasVertexBufferObject = ExtensionExists("GL_ARB_vertex_buffer_object", gGLHExts.mSysExts);
+	mHasSync = ExtensionExists("GL_ARB_sync", gGLHExts.mSysExts);
 	mHasMapBufferRange = ExtensionExists("GL_ARB_map_buffer_range", gGLHExts.mSysExts);
+	mHasFlushBufferRange = ExtensionExists("GL_APPLE_flush_buffer_range", gGLHExts.mSysExts);
 	mHasDepthClamp = ExtensionExists("GL_ARB_depth_clamp", gGLHExts.mSysExts) || ExtensionExists("GL_NV_depth_clamp", gGLHExts.mSysExts);
 	// mask out FBO support when packed_depth_stencil isn't there 'cause we need it for LLRenderTarget -Brad
 #ifdef GL_ARB_framebuffer_object
@@ -969,6 +984,16 @@ void LLGLManager::initExtensions()
 			mHasVertexBufferObject = FALSE;
 		}
 	}
+	if (mHasSync)
+	{
+		glFenceSync = (PFNGLFENCESYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glFenceSync");
+		glIsSync = (PFNGLISSYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glIsSync");
+		glDeleteSync = (PFNGLDELETESYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteSync");
+		glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glClientWaitSync");
+		glWaitSync = (PFNGLWAITSYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glWaitSync");
+		glGetInteger64v = (PFNGLGETINTEGER64VPROC) GLH_EXT_GET_PROC_ADDRESS("glGetInteger64v");
+		glGetSynciv = (PFNGLGETSYNCIVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetSynciv");
+	}
 	if (mHasMapBufferRange)
 	{
 		glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC) GLH_EXT_GET_PROC_ADDRESS("glMapBufferRange");
@@ -1354,6 +1379,8 @@ void LLGLState::checkStates(const std::string& msg)
 	glGetIntegerv(GL_BLEND_SRC, &src);
 	glGetIntegerv(GL_BLEND_DST, &dst);
 	
+	stop_glerror();
+
 	BOOL error = FALSE;
 
 	if (src != GL_SRC_ALPHA || dst != GL_ONE_MINUS_SRC_ALPHA)
@@ -1374,7 +1401,9 @@ void LLGLState::checkStates(const std::string& msg)
 	{
 		LLGLenum state = iter->first;
 		LLGLboolean cur_state = iter->second;
+		stop_glerror();
 		LLGLboolean gl_state = glIsEnabled(state);
+		stop_glerror();
 		if(cur_state != gl_state)
 		{
 			dumpStates();
@@ -1399,11 +1428,11 @@ void LLGLState::checkStates(const std::string& msg)
 
 void LLGLState::checkTextureChannels(const std::string& msg)
 {
+#if 0
 	if (!gDebugGL)
 	{
 		return;
 	}
-
 	stop_glerror();
 
 	GLint activeTexture;
@@ -1569,6 +1598,7 @@ void LLGLState::checkTextureChannels(const std::string& msg)
 			LL_GL_ERRS << "GL texture state corruption detected.  " << msg << LL_ENDL;
 		}
 	}
+#endif
 }
 
 void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask)
@@ -1685,7 +1715,7 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask)
 		}
 	}
 
-	if (glIsEnabled(GL_TEXTURE_2D))
+	/*if (glIsEnabled(GL_TEXTURE_2D))
 	{
 		if (!(data_mask & 0x0008))
 		{
@@ -1708,7 +1738,7 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask)
 				gFailLog << "GL does not have GL_TEXTURE_2D enabled on channel 1." << std::endl;
 			}
 		}
-	}
+	}*/
 
 	glClientActiveTextureARB(GL_TEXTURE0_ARB);
 	gGL.getTexUnit(0)->activate();
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h
index d1bee001617b33f0c3447b6571c50cefeff5949b..d736133f3ffc14ba21ec732be273c5338bcf0e76 100644
--- a/indra/llrender/llgl.h
+++ b/indra/llrender/llgl.h
@@ -88,7 +88,9 @@ class LLGLManager
 		
 	// ARB Extensions
 	BOOL mHasVertexBufferObject;
+	BOOL mHasSync;
 	BOOL mHasMapBufferRange;
+	BOOL mHasFlushBufferRange;
 	BOOL mHasPBuffer;
 	BOOL mHasShaderObjects;
 	BOOL mHasVertexShader;
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
index f35f329f002488b8b8ce61cd2149f462b253be47..851a75629e184e60767390c843360156d7d8515a 100644
--- a/indra/llrender/llglheaders.h
+++ b/indra/llrender/llglheaders.h
@@ -68,6 +68,19 @@ extern PFNGLUNMAPBUFFERARBPROC		glUnmapBufferARB;
 extern PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB;
 extern PFNGLGETBUFFERPOINTERVARBPROC	glGetBufferPointervARB;
 
+// GL_ARB_sync
+extern PFNGLFENCESYNCPROC				glFenceSync;
+extern PFNGLISSYNCPROC					glIsSync;
+extern PFNGLDELETESYNCPROC				glDeleteSync;
+extern PFNGLCLIENTWAITSYNCPROC			glClientWaitSync;
+extern PFNGLWAITSYNCPROC				glWaitSync;
+extern PFNGLGETINTEGER64VPROC			glGetInteger64v;
+extern PFNGLGETSYNCIVPROC				glGetSynciv;
+
+// GL_APPLE_flush_buffer_range
+extern PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE;
+extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE;
+
 // GL_ARB_map_buffer_range
 extern PFNGLMAPBUFFERRANGEPROC			glMapBufferRange;
 extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC	glFlushMappedBufferRange;
@@ -310,6 +323,19 @@ extern PFNGLUNMAPBUFFERARBPROC		glUnmapBufferARB;
 extern PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB;
 extern PFNGLGETBUFFERPOINTERVARBPROC	glGetBufferPointervARB;
 
+// GL_ARB_sync
+extern PFNGLFENCESYNCPROC				glFenceSync;
+extern PFNGLISSYNCPROC					glIsSync;
+extern PFNGLDELETESYNCPROC				glDeleteSync;
+extern PFNGLCLIENTWAITSYNCPROC			glClientWaitSync;
+extern PFNGLWAITSYNCPROC				glWaitSync;
+extern PFNGLGETINTEGER64VPROC			glGetInteger64v;
+extern PFNGLGETSYNCIVPROC				glGetSynciv;
+
+// GL_APPLE_flush_buffer_range
+extern PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE;
+extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE;
+
 // GL_ARB_map_buffer_range
 extern PFNGLMAPBUFFERRANGEPROC			glMapBufferRange;
 extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC	glFlushMappedBufferRange;
@@ -519,6 +545,19 @@ extern PFNGLUNMAPBUFFERARBPROC		glUnmapBufferARB;
 extern PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB;
 extern PFNGLGETBUFFERPOINTERVARBPROC	glGetBufferPointervARB;
 
+// GL_ARB_sync
+extern PFNGLFENCESYNCPROC				glFenceSync;
+extern PFNGLISSYNCPROC					glIsSync;
+extern PFNGLDELETESYNCPROC				glDeleteSync;
+extern PFNGLCLIENTWAITSYNCPROC			glClientWaitSync;
+extern PFNGLWAITSYNCPROC				glWaitSync;
+extern PFNGLGETINTEGER64VPROC			glGetInteger64v;
+extern PFNGLGETSYNCIVPROC				glGetSynciv;
+
+// GL_APPLE_flush_buffer_range
+extern PFNGLBUFFERPARAMETERIAPPLEPROC	glBufferParameteriAPPLE;
+extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE;
+
 // GL_ARB_map_buffer_range
 extern PFNGLMAPBUFFERRANGEPROC			glMapBufferRange;
 extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC	glFlushMappedBufferRange;
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index ad2c662dfcacf784d89fa681003cb956d4bd3d6d..80c93bb0d2335ba015f7d7b663b03347c7e6773d 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -49,6 +49,11 @@ using std::make_pair;
 using std::string;
 
 GLhandleARB LLGLSLShader::sCurBoundShader = 0;
+bool LLGLSLShader::sNoFixedFunction = false;
+
+//UI shader -- declared here so llui_libtest will link properly
+LLGLSLShader	gUIProgram;
+LLGLSLShader	gSolidColorProgram;
 
 BOOL shouldChange(const LLVector4& v1, const LLVector4& v2)
 {
@@ -376,6 +381,7 @@ BOOL LLGLSLShader::link(BOOL suppress_errors)
 
 void LLGLSLShader::bind()
 {
+	gGL.flush();
 	if (gGLManager.mHasShaderObjects)
 	{
 		glUseProgramObjectARB(mProgramObject);
@@ -390,6 +396,7 @@ void LLGLSLShader::bind()
 
 void LLGLSLShader::unbind()
 {
+	gGL.flush();
 	if (gGLManager.mHasShaderObjects)
 	{
 		stop_glerror();
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
index 4922eb6d6725bd0eee38177a2d776231c9e27ed1..621e0b82eeabb98a5e9b50927922bb02d9dbe350 100644
--- a/indra/llrender/llglslshader.h
+++ b/indra/llrender/llglslshader.h
@@ -67,6 +67,7 @@ class LLGLSLShader
 	LLGLSLShader();
 
 	static GLhandleARB sCurBoundShader;
+	static bool sNoFixedFunction;
 
 	void unload();
 	BOOL createShader(std::vector<std::string> * attributes,
@@ -141,4 +142,10 @@ class LLGLSLShader
 	std::string mName;
 };
 
+//UI shader (declared here so llui_libtest will link properly)
+extern LLGLSLShader			gUIProgram;
+//output vec4(color.rgb,color.a*tex0[tc0].a)
+extern LLGLSLShader			gSolidColorProgram;
+
+
 #endif
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 60a5962234054aa34b64ea9d543759f54113beb6..9ca3a23d52cd4665e76c792b8c3158d65c45a1e5 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -1414,6 +1414,8 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
 
 void LLImageGL::deleteDeadTextures()
 {
+	bool reset = false;
+
 	while (!sDeadTextureList.empty())
 	{
 		GLuint tex = sDeadTextureList.front();
@@ -1426,12 +1428,22 @@ void LLImageGL::deleteDeadTextures()
 			{
 				tex_unit->unbind(tex_unit->getCurrType());
 				stop_glerror();
+
+				if (i > 0)
+				{
+					reset = true;
+				}
 			}
 		}
 		
 		glDeleteTextures(1, &tex);
 		stop_glerror();
 	}
+
+	if (reset)
+	{
+		gGL.getTexUnit(0)->activate();
+	}
 }
 		
 void LLImageGL::destroyGLTexture()
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index 1d82dda30f6b4e3b289a15c8bd108c7885184613..70df1dd1d184522b5f716509c8ed9600c20fbb01 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -46,6 +46,7 @@ S32	gGLViewport[4];
 
 U32 LLRender::sUICalls = 0;
 U32 LLRender::sUIVerts = 0;
+U32 LLTexUnit::sWhiteTexture = 0;
 
 static const U32 LL_NUM_TEXTURE_LAYERS = 32; 
 static const U32 LL_NUM_LIGHT_UNITS = 8;
@@ -126,7 +127,8 @@ void LLTexUnit::refreshState(void)
 	// Per apple spec, don't call glEnable/glDisable when index exceeds max texture units
 	// http://www.mailinglistarchive.com/html/mac-opengl@lists.apple.com/2008-07/msg00653.html
 	//
-	bool enableDisable = (mIndex < gGLManager.mNumTextureUnits) && mCurrTexType != LLTexUnit::TT_MULTISAMPLE_TEXTURE;
+	bool enableDisable = !LLGLSLShader::sNoFixedFunction && 
+		(mIndex < gGLManager.mNumTextureUnits) && mCurrTexType != LLTexUnit::TT_MULTISAMPLE_TEXTURE;
 		
 	if (mCurrTexType != TT_NONE)
 	{
@@ -184,7 +186,8 @@ void LLTexUnit::enable(eTextureType type)
 		mCurrTexType = type;
 
 		gGL.flush();
-		if (type != LLTexUnit::TT_MULTISAMPLE_TEXTURE &&
+		if (!LLGLSLShader::sNoFixedFunction && 
+			type != LLTexUnit::TT_MULTISAMPLE_TEXTURE &&
 			mIndex < gGLManager.mNumTextureUnits)
 		{
 			glEnable(sGLTextureType[type]);
@@ -201,7 +204,8 @@ void LLTexUnit::disable(void)
 		activate();
 		unbind(mCurrTexType);
 		gGL.flush();
-		if (mCurrTexType != LLTexUnit::TT_MULTISAMPLE_TEXTURE &&
+		if (!LLGLSLShader::sNoFixedFunction &&
+			mCurrTexType != LLTexUnit::TT_MULTISAMPLE_TEXTURE &&
 			mIndex < gGLManager.mNumTextureUnits)
 		{
 			glDisable(sGLTextureType[mCurrTexType]);
@@ -403,7 +407,14 @@ void LLTexUnit::unbind(eTextureType type)
 
 		activate();
 		mCurrTexture = 0;
-		glBindTexture(sGLTextureType[type], 0);
+		if (LLGLSLShader::sNoFixedFunction && type == LLTexUnit::TT_TEXTURE)
+		{
+			glBindTexture(sGLTextureType[type], sWhiteTexture);
+		}
+		else
+		{
+			glBindTexture(sGLTextureType[type], 0);
+		}
 		stop_glerror();
 	}
 }
@@ -474,6 +485,11 @@ void LLTexUnit::setTextureFilteringOption(LLTexUnit::eTextureFilterOptions optio
 
 void LLTexUnit::setTextureBlendType(eTextureBlendType type)
 {
+	if (LLGLSLShader::sNoFixedFunction)
+	{ //texture blend type means nothing when using shaders
+		return;
+	}
+
 	if (mIndex < 0) return;
 
 	// Do nothing if it's already correctly set.
@@ -594,6 +610,11 @@ GLint LLTexUnit::getTextureSourceType(eTextureBlendSrc src, bool isAlpha)
 
 void LLTexUnit::setTextureCombiner(eTextureBlendOp op, eTextureBlendSrc src1, eTextureBlendSrc src2, bool isAlpha)
 {
+	if (LLGLSLShader::sNoFixedFunction)
+	{ //register combiners do nothing when not using fixed function
+		return;
+	}	
+
 	if (mIndex < 0) return;
 
 	activate();
diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h
index 41e7b35341d17f27b77ccd761d44bca95463e399..9eedebe2ce08efb9d74d45871c70466b5883da86 100644
--- a/indra/llrender/llrender.h
+++ b/indra/llrender/llrender.h
@@ -52,6 +52,8 @@ class LLTexUnit
 {
 	friend class LLRender;
 public:
+	static U32 sWhiteTexture;
+
 	typedef enum
 	{
 		TT_TEXTURE = 0,			// Standard 2D Texture
diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp
index b6463309e111f81db4805915fe472577ec435f20..8c0d3592df9fde28330dbc706d6a70bdf5d5595a 100644
--- a/indra/llrender/llrendertarget.cpp
+++ b/indra/llrender/llrendertarget.cpp
@@ -72,11 +72,11 @@ LLRenderTarget::~LLRenderTarget()
 	release();
 }
 
-void LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, bool stencil, LLTexUnit::eTextureType usage, bool use_fbo, S32 samples)
+bool LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, bool stencil, LLTexUnit::eTextureType usage, bool use_fbo, S32 samples)
 {
 	stop_glerror();
-	
 	release();
+	stop_glerror();
 
 	mResX = resx;
 	mResY = resy;
@@ -103,9 +103,11 @@ void LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, boo
 	{
 		if (depth)
 		{
-			stop_glerror();
-			allocateDepth();
-			stop_glerror();
+			if (!allocateDepth())
+			{
+				llwarns << "Failed to allocate depth buffer for render target." << llendl;
+				return false;
+			}
 		}
 
 		glGenFramebuffers(1, (GLuint *) &mFBO);
@@ -131,14 +133,14 @@ void LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, boo
 		stop_glerror();
 	}
 
-	addColorAttachment(color_fmt);
+	return addColorAttachment(color_fmt);
 }
 
-void LLRenderTarget::addColorAttachment(U32 color_fmt)
+bool LLRenderTarget::addColorAttachment(U32 color_fmt)
 {
 	if (color_fmt == 0)
 	{
-		return;
+		return true;
 	}
 
 	U32 offset = mTex.size();
@@ -158,14 +160,26 @@ void LLRenderTarget::addColorAttachment(U32 color_fmt)
 #ifdef GL_ARB_texture_multisample
 	if (mSamples > 1)
 	{
+		clear_glerror();
 		glTexImage2DMultisample(LLTexUnit::getInternalType(mUsage), mSamples, color_fmt, mResX, mResY, GL_TRUE);
+		if (glGetError() != GL_NO_ERROR)
+		{
+			llwarns << "Could not allocate multisample color buffer for render target." << llendl;
+			return false;
+		}
 	}
 	else
 #else
 	llassert_always(mSamples <= 1);
 #endif
 	{
+		clear_glerror();
 		LLImageGL::setManualImage(LLTexUnit::getInternalType(mUsage), 0, color_fmt, mResX, mResY, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+		if (glGetError() != GL_NO_ERROR)
+		{
+			llwarns << "Could not allocate color buffer for render target." << llendl;
+			return false;
+		}
 	}
 	
 	stop_glerror();
@@ -217,15 +231,18 @@ void LLRenderTarget::addColorAttachment(U32 color_fmt)
 		flush();
 	}
 
+	return true;
 }
 
-void LLRenderTarget::allocateDepth()
+bool LLRenderTarget::allocateDepth()
 {
 	if (mStencil)
 	{
 		//use render buffers where stencil buffers are in play
 		glGenRenderbuffers(1, (GLuint *) &mDepth);
 		glBindRenderbuffer(GL_RENDERBUFFER, mDepth);
+		stop_glerror();
+		clear_glerror();
 		glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, mResX, mResY);
 		glBindRenderbuffer(GL_RENDERBUFFER, 0);
 	}
@@ -237,17 +254,29 @@ void LLRenderTarget::allocateDepth()
 		{
 			U32 internal_type = LLTexUnit::getInternalType(mUsage);
 			gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
+			stop_glerror();
+			clear_glerror();
 			LLImageGL::setManualImage(internal_type, 0, GL_DEPTH_COMPONENT32, mResX, mResY, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
 		}
 #ifdef GL_ARB_texture_multisample
 		else
 		{
+			stop_glerror();
+			clear_glerror();
 			glTexImage2DMultisample(LLTexUnit::getInternalType(mUsage), mSamples, GL_DEPTH_COMPONENT32, mResX, mResY, GL_TRUE);
 		}
 #else
 		llassert_always(mSamples <= 1);
 #endif
 	}
+
+	if (glGetError() != GL_NO_ERROR)
+	{
+		llwarns << "Unable to allocate depth buffer for render target." << llendl;
+		return false;
+	}
+
+	return true;
 }
 
 void LLRenderTarget::shareDepthBuffer(LLRenderTarget& target)
diff --git a/indra/llrender/llrendertarget.h b/indra/llrender/llrendertarget.h
index 094b58b562cabcab805cbfc7415c7805714d9940..dea1de12d80953a2f519e337a62b4805bb1fc068 100644
--- a/indra/llrender/llrendertarget.h
+++ b/indra/llrender/llrendertarget.h
@@ -66,30 +66,30 @@ class LLRenderTarget
 	static bool sUseFBO; 
 
 	LLRenderTarget();
-	virtual ~LLRenderTarget();
+	~LLRenderTarget();
 
 	//allocate resources for rendering
 	//must be called before use
 	//multiple calls will release previously allocated resources
-	void allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, bool stencil, LLTexUnit::eTextureType usage = LLTexUnit::TT_TEXTURE, bool use_fbo = false, S32 samples = 0);
+	bool allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, bool stencil, LLTexUnit::eTextureType usage = LLTexUnit::TT_TEXTURE, bool use_fbo = false, S32 samples = 0);
 
 	//add color buffer attachment
 	//limit of 4 color attachments per render target
-	virtual void addColorAttachment(U32 color_fmt);
+	bool addColorAttachment(U32 color_fmt);
 
 	//allocate a depth texture
-	virtual void allocateDepth();
+	bool allocateDepth();
 
 	//share depth buffer with provided render target
-	virtual void shareDepthBuffer(LLRenderTarget& target);
+	void shareDepthBuffer(LLRenderTarget& target);
 
 	//free any allocated resources
 	//safe to call redundantly
-	virtual void release();
+	void release();
 
 	//bind target for rendering
 	//applies appropriate viewport
-	virtual void bindTarget();
+	void bindTarget();
 
 	//unbind target for rendering
 	static void unbindTarget();
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 4a0b964e616bb06644ed4bbe6b5f011ca2fdb021..1180afa6313758f760a643c10f078e69ba5f8a52 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -35,6 +35,8 @@
 #include "llmemtype.h"
 #include "llrender.h"
 #include "llvector4a.h"
+#include "llglslshader.h"
+
 
 //============================================================================
 
@@ -65,6 +67,60 @@ S32	LLVertexBuffer::sWeight4Loc = -1;
 std::vector<U32> LLVertexBuffer::sDeleteList;
 
 
+const U32 FENCE_WAIT_TIME_NANOSECONDS = 10000;  //1 ms
+
+class LLGLSyncFence : public LLGLFence
+{
+public:
+#ifdef GL_ARB_sync
+	GLsync mSync;
+#endif
+	
+	LLGLSyncFence()
+	{
+#ifdef GL_ARB_sync
+		mSync = 0;
+#endif
+	}
+
+	~LLGLSyncFence()
+	{
+#ifdef GL_ARB_sync
+		if (mSync)
+		{
+			glDeleteSync(mSync);
+		}
+#endif
+	}
+
+	void placeFence()
+	{
+#ifdef GL_ARB_sync
+		if (mSync)
+		{
+			glDeleteSync(mSync);
+		}
+		mSync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
+#endif
+	}
+
+	void wait()
+	{
+#ifdef GL_ARB_sync
+		if (mSync)
+		{
+			while (glClientWaitSync(mSync, 0, FENCE_WAIT_TIME_NANOSECONDS) == GL_TIMEOUT_EXPIRED)
+			{ //track the number of times we've waited here
+				static S32 waits = 0;
+				waits++;
+			}
+		}
+#endif
+	}
+
+
+};
+
 S32 LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_MAX] =
 {
 	sizeof(LLVector4), // TYPE_VERTEX,
@@ -309,6 +365,7 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi
 	glDrawRangeElements(sGLMode[mode], start, end, count, GL_UNSIGNED_SHORT, 
 		idx);
 	stop_glerror();
+	placeFence();
 }
 
 void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
@@ -340,6 +397,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
 	glDrawElements(sGLMode[mode], count, GL_UNSIGNED_SHORT,
 		((U16*) getIndicesPointer()) + indices_offset);
 	stop_glerror();
+	placeFence();
 }
 
 void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
@@ -365,6 +423,7 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
 	stop_glerror();
 	glDrawArrays(sGLMode[mode], first, count);
 	stop_glerror();
+	placeFence();
 }
 
 //static
@@ -444,9 +503,11 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
 	mFilthy(FALSE),
 	mEmpty(TRUE),
 	mResized(FALSE),
-	mDynamicSize(FALSE)
+	mDynamicSize(FALSE),
+	mFence(NULL)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_CONSTRUCTOR);
+	mFence = NULL;
 	if (!sEnableVBOs)
 	{
 		mUsage = 0 ; 
@@ -527,9 +588,40 @@ LLVertexBuffer::~LLVertexBuffer()
 	destroyGLIndices();
 	sCount--;
 
+	if (mFence)
+	{
+		delete mFence;
+	}
+	
+	mFence = NULL;
+
 	llassert_always(!mMappedData && !mMappedIndexData) ;
 };
 
+void LLVertexBuffer::placeFence() const
+{
+	/*if (!mFence && useVBOs())
+	{
+		if (gGLManager.mHasSync)
+		{
+			mFence = new LLGLSyncFence();
+		}
+	}
+
+	if (mFence)
+	{
+		mFence->placeFence();
+	}*/
+}
+
+void LLVertexBuffer::waitFence() const
+{
+	/*if (mFence)
+	{
+		mFence->wait();
+	}*/
+}
+
 //----------------------------------------------------------------------------
 
 void LLVertexBuffer::genBuffer()
@@ -892,17 +984,11 @@ BOOL LLVertexBuffer::useVBOs() const
 {
 	//it's generally ineffective to use VBO for things that are streaming on apple
 		
-#if LL_DARWIN
-	if (!mUsage || mUsage == GL_STREAM_DRAW_ARB)
-	{
-		return FALSE;
-	}
-#else
 	if (!mUsage)
 	{
 		return FALSE;
 	}
-#endif
+
 	return TRUE;
 }
 
@@ -967,8 +1053,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 		
 	if (useVBOs())
 	{
-
-		if (sDisableVBOMapping || gGLManager.mHasMapBufferRange)
+		if (sDisableVBOMapping || gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange)
 		{
 			if (count == -1)
 			{
@@ -1008,6 +1093,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 			LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_VERTICES);
 			setBuffer(0, type);
 			mVertexLocked = TRUE;
+			sMappedCount++;
 			stop_glerror();	
 
 			if(sDisableVBOMapping)
@@ -1018,29 +1104,50 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 			else
 			{
 				U8* src = NULL;
-#ifdef GL_ARB_map_buffer_range
+				waitFence();
 				if (gGLManager.mHasMapBufferRange)
 				{
 					if (map_range)
 					{
+#ifdef GL_ARB_map_buffer_range
 						S32 offset = mOffsets[type] + sTypeSize[type]*index;
 						S32 length = (sTypeSize[type]*count+0xF) & ~0xF;
-						src = (U8*) glMapBufferRange(GL_ARRAY_BUFFER_ARB, offset, length, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT | GL_MAP_INVALIDATE_RANGE_BIT);
+						src = (U8*) glMapBufferRange(GL_ARRAY_BUFFER_ARB, offset, length, 
+							GL_MAP_WRITE_BIT | 
+							GL_MAP_FLUSH_EXPLICIT_BIT | 
+							GL_MAP_INVALIDATE_RANGE_BIT);
+#endif
 					}
 					else
 					{
-						src = (U8*) glMapBufferRange(GL_ARRAY_BUFFER_ARB, 0, mSize, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT);
+#ifdef GL_ARB_map_buffer_range
+						src = (U8*) glMapBufferRange(GL_ARRAY_BUFFER_ARB, 0, mSize, 
+							GL_MAP_WRITE_BIT | 
+							GL_MAP_FLUSH_EXPLICIT_BIT);
+#endif
+					}
+				}
+				else if (gGLManager.mHasFlushBufferRange)
+				{
+					if (map_range)
+					{
+						glBufferParameteriAPPLE(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_FALSE);
+						glBufferParameteriAPPLE(GL_ARRAY_BUFFER_ARB, GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE);
+						src = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
+					}
+					else
+					{
+						src = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
 					}
 				}
 				else
-#else
-				llassert_always(!gGLManager.mHasMapBufferRange);
-#endif
 				{
 					map_range = false;
 					src = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
 				}
 
+				llassert(src != NULL);
+
 				mMappedData = LL_NEXT_ALIGNED_ADDRESS<U8>(src);
 				mAlignedOffset = mMappedData - src;
 			
@@ -1082,7 +1189,6 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 					llerrs << "memory allocation for vertex data failed." << llendl ;
 				}
 			}
-			sMappedCount++;
 		}
 	}
 	else
@@ -1090,7 +1196,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 		map_range = false;
 	}
 	
-	if (map_range && !sDisableVBOMapping)
+	if (map_range && gGLManager.mHasMapBufferRange && !sDisableVBOMapping)
 	{
 		return mMappedData;
 	}
@@ -1114,7 +1220,7 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 
 	if (useVBOs())
 	{
-		if (sDisableVBOMapping || gGLManager.mHasMapBufferRange)
+		if (sDisableVBOMapping || gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange)
 		{
 			if (count == -1)
 			{
@@ -1152,6 +1258,7 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 
 			setBuffer(0, TYPE_INDEX);
 			mIndexLocked = TRUE;
+			sMappedCount++;
 			stop_glerror();	
 
 			if(sDisableVBOMapping)
@@ -1162,29 +1269,51 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 			else
 			{
 				U8* src = NULL;
-#ifdef GL_ARB_map_buffer_range
+				waitFence();
 				if (gGLManager.mHasMapBufferRange)
 				{
 					if (map_range)
 					{
+#ifdef GL_ARB_map_buffer_range
 						S32 offset = sizeof(U16)*index;
 						S32 length = sizeof(U16)*count;
-						src = (U8*) glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT | GL_MAP_INVALIDATE_RANGE_BIT);
+						src = (U8*) glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length, 
+							GL_MAP_WRITE_BIT | 
+							GL_MAP_FLUSH_EXPLICIT_BIT | 
+							GL_MAP_INVALIDATE_RANGE_BIT);
+#endif
+					}
+					else
+					{
+#ifdef GL_ARB_map_buffer_range
+						src = (U8*) glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, sizeof(U16)*mNumIndices, 
+							GL_MAP_WRITE_BIT | 
+							GL_MAP_FLUSH_EXPLICIT_BIT);
+#endif
+					}
+				}
+				else if (gGLManager.mHasFlushBufferRange)
+				{
+					if (map_range)
+					{
+						glBufferParameteriAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_FALSE);
+						glBufferParameteriAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE);
+						src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
 					}
 					else
 					{
-						src = (U8*) glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, sizeof(U16)*mNumIndices, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT);
+						src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
 					}
 				}
 				else
-#else
-				llassert_always(!gGLManager.mHasMapBufferRange);
-#endif
 				{
 					map_range = false;
 					src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
 				}
 
+				llassert(src != NULL);
+
+
 				mMappedIndexData = src; //LL_NEXT_ALIGNED_ADDRESS<U8>(src);
 				mAlignedIndexOffset = mMappedIndexData - src;
 				stop_glerror();
@@ -1211,15 +1340,13 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 				llerrs << "memory allocation for Index data failed. " << llendl ;
 			}
 		}
-
-		sMappedCount++;
 	}
 	else
 	{
 		map_range = false;
 	}
 
-	if (map_range && !sDisableVBOMapping)
+	if (map_range && gGLManager.mHasMapBufferRange && !sDisableVBOMapping)
 	{
 		return mMappedIndexData;
 	}
@@ -1268,8 +1395,7 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 		}
 		else
 		{
-#ifdef GL_ARB_map_buffer_range
-			if (gGLManager.mHasMapBufferRange)
+			if (gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange)
 			{
 				if (!mMappedVertexRegions.empty())
 				{
@@ -1279,16 +1405,22 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 						const MappedRegion& region = mMappedVertexRegions[i];
 						S32 offset = region.mIndex >= 0 ? mOffsets[region.mType]+sTypeSize[region.mType]*region.mIndex : 0;
 						S32 length = sTypeSize[region.mType]*region.mCount;
-						glFlushMappedBufferRange(GL_ARRAY_BUFFER_ARB, offset, length);
+						if (gGLManager.mHasMapBufferRange)
+						{
+#ifdef GL_ARB_map_buffer_range
+							glFlushMappedBufferRange(GL_ARRAY_BUFFER_ARB, offset, length);
+#endif
+						}
+						else if (gGLManager.mHasFlushBufferRange)
+						{
+							glFlushMappedBufferRangeAPPLE(GL_ARRAY_BUFFER_ARB, offset, length);
+						}
 						stop_glerror();
 					}
 
 					mMappedVertexRegions.clear();
 				}
 			}
-#else
-			llassert_always(!gGLManager.mHasMapBufferRange);
-#endif
 			stop_glerror();
 			glUnmapBufferARB(GL_ARRAY_BUFFER_ARB);
 			stop_glerror();
@@ -1326,8 +1458,7 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 		}
 		else
 		{
-#ifdef GL_ARB_map_buffer_range
-			if (gGLManager.mHasMapBufferRange)
+			if (gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange)
 			{
 				if (!mMappedIndexRegions.empty())
 				{
@@ -1336,16 +1467,24 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 						const MappedRegion& region = mMappedIndexRegions[i];
 						S32 offset = region.mIndex >= 0 ? sizeof(U16)*region.mIndex : 0;
 						S32 length = sizeof(U16)*region.mCount;
-						glFlushMappedBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length);
+						if (gGLManager.mHasMapBufferRange)
+						{
+#ifdef GL_ARB_map_buffer_range
+							glFlushMappedBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length);
+#endif
+						}
+						else if (gGLManager.mHasFlushBufferRange)
+						{
+#ifdef GL_APPLE_flush_buffer_range
+							glFlushMappedBufferRangeAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length);
+#endif
+						}
 						stop_glerror();
 					}
 
 					mMappedIndexRegions.clear();
 				}
 			}
-#else
-			llassert_always(!gGLManager.mHasMapBufferRange);
-#endif
 			stop_glerror();
 			glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB);
 			stop_glerror();
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index aa5df305a66f0eda5bf8b31caa304311f454e4d1..cc5d11e1c29018ff1ec085da20c4e7045d33600d 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -70,6 +70,12 @@ class LLVBOPool : public LLGLNamePool
 	}
 };
 
+class LLGLFence
+{
+public:
+	virtual void placeFence() = 0;
+	virtual void wait() = 0;
+};
 
 //============================================================================
 // base class 
@@ -270,6 +276,12 @@ class LLVertexBuffer : public LLRefCount
 	std::vector<MappedRegion> mMappedVertexRegions;
 	std::vector<MappedRegion> mMappedIndexRegions;
 
+	mutable LLGLFence* mFence;
+
+	void placeFence() const;
+	void waitFence() const;
+
+
 public:
 	static S32 sCount;
 	static S32 sGLCount;
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 349dbc340537bd9d3a559445dc261ccaf4f98d3c..919364be632a6dce3b38ae2f7885770366fe97e5 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -2024,8 +2024,17 @@ S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round,
 		}
 		else if (hit_past_end_of_line && segmentp->getEnd() >= line_iter->mDocIndexEnd)
 		{
-			// segment wraps to next line, so just set doc pos to the end of the line
-			pos = llclamp(line_iter->mDocIndexEnd - 1, 0, getLength());
+			if (getLineNumFromDocIndex(line_iter->mDocIndexEnd - 1) == line_iter->mLineNum)
+			{
+				// if segment wraps to the next line we should step one char back
+				// to compensate for the space char between words
+				// which is removed due to wrapping
+				pos = llclamp(line_iter->mDocIndexEnd - 1, 0, getLength());
+			}
+			else
+			{
+				pos = llclamp(line_iter->mDocIndexEnd, 0, getLength());
+			}
 			break;
 		}
 		start_x += text_width;
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 8020ca802bd2df162653bc2acd89318fd088c58a..28d7e0a5ba6cc93486895b31778f3b6447bdf196 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -95,7 +95,6 @@ static LLDefaultChildRegistry::Register<LLSearchEditor> register_search_editor("
 // register other widgets which otherwise may not be linked in
 static LLDefaultChildRegistry::Register<LLLoadingIndicator> register_loading_indicator("loading_indicator");
 
-
 //
 // Functions
 //
@@ -524,8 +523,15 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
 	
 	if (solid_color)
 	{
-		gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
-		gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gSolidColorProgram.bind();
+		}
+		else
+		{
+			gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+			gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
+		}
 	}
 
 	gGL.getTexUnit(0)->bind(image);
@@ -699,7 +705,14 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
 
 	if (solid_color)
 	{
-		gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.bind();
+		}
+		else
+		{
+			gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+		}
 	}
 }
 
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index c583d58d5a5076645fc797bf4bc556eb36879deb..a04b232a28190dd7569582eb2462a3cdc8cf9e5b 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -33,6 +33,7 @@
 #include "llrect.h"
 #include "llcontrol.h"
 #include "llcoord.h"
+#include "llglslshader.h"
 #include "llinitparam.h"
 #include "llregistry.h"
 #include "lluicolor.h"
@@ -47,6 +48,7 @@
 // for initparam specialization
 #include "llfontgl.h"
 
+
 class LLColor4; 
 class LLVector3;
 class LLVector2;
@@ -484,4 +486,7 @@ namespace LLInitParam
 	};
 }
 
+extern LLGLSLShader gSolidColorProgram;
+extern LLGLSLShader gUIProgram;
+
 #endif
diff --git a/indra/llvfs/lldiriterator.cpp b/indra/llvfs/lldiriterator.cpp
index 25550321f0218f93a931e5d2448c4ceb057a9481..ff92cbb7fde4fa011fc678d53b92126168d03881 100644
--- a/indra/llvfs/lldiriterator.cpp
+++ b/indra/llvfs/lldiriterator.cpp
@@ -52,8 +52,20 @@ LLDirIterator::Impl::Impl(const std::string &dirname, const std::string &mask)
 {
 	fs::path dir_path(dirname);
 
-	// Check if path exists.
-	if (!fs::exists(dir_path))
+	bool is_dir = false;
+
+	// Check if path is a directory.
+	try
+	{
+		is_dir = fs::is_directory(dir_path);
+	}
+	catch (fs::basic_filesystem_error<fs::path>& e)
+	{
+		llwarns << e.what() << llendl;
+		return;
+	}
+
+	if (!is_dir)
 	{
 		llwarns << "Invalid path: \"" << dir_path.string() << "\"" << llendl;
 		return;
@@ -66,7 +78,7 @@ LLDirIterator::Impl::Impl(const std::string &dirname, const std::string &mask)
 	}
 	catch (fs::basic_filesystem_error<fs::path>& e)
 	{
-		llerrs << e.what() << llendl;
+		llwarns << e.what() << llendl;
 		return;
 	}
 
@@ -82,7 +94,7 @@ LLDirIterator::Impl::Impl(const std::string &dirname, const std::string &mask)
 	}
 	catch (boost::regex_error& e)
 	{
-		llerrs << "\"" << exp << "\" is not a valid regular expression: "
+		llwarns << "\"" << exp << "\" is not a valid regular expression: "
 				<< e.what() << llendl;
 		return;
 	}
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index 9f4e89691f1ba3dc5628c63dcbce4a028983d77c..ae72dee9002f13939ae85e7e919eb40a7749c614 100644
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -44,7 +44,6 @@
 						<array>
 							<!-- sample entry for debugging a specific item	-->
 <!--						<string>Voice</string>							-->
-              <string>Capabilities</string>
 						</array>
 				</map>
 			</array>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 27c3e42a37d1b8b2b344db03d8c4e07707c2fff2..34890b23eb91806fd47c3e26435eaffd5282a59a 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -3848,7 +3848,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>https://www.xstreetsl.com/modules.php?name=Marketplace&amp;CategoryID=233</string>
+      <string>https://marketplace.secondlife.com/products/search?search[category_id]=200&amp;search[maturity][]=General&amp;search[page]=1&amp;search[per_page]=12</string>
     </map>
     <key>GridCrossSections</key>
     <map>
@@ -4872,7 +4872,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://viewer-login.agni.lindenlab.com/</string>
+      <string/>
     </map>
     <key>LosslessJ2CUpload</key>
     <map>
@@ -12578,7 +12578,7 @@
     <key>WatchdogEnabled</key>
     <map>
       <key>Comment</key>
-      <string>Controls whether the thread watchdog timer is activated.</string>
+      <string>Controls whether the thread watchdog timer is activated. Value is boolean. Set to -1 to defer to built-in default.</string>
       <key>Persist</key>
       <integer>0</integer>
       <key>Type</key>
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index 60082f40d691feee85946a50b180123a28c6b45a..d327216a0cbd16e54c9c20e4da40ac5b25a8248a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -270,72 +270,41 @@ void main()
 	vec4 diffuse = texture2DRect(diffuseRect, tc);
 	vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
 	
-	calcAtmospherics(pos.xyz, 1.0);
+	vec3 col;
+	float bloom = 0.0;
+	if (diffuse.a < 0.9)
+	{
+		calcAtmospherics(pos.xyz, 1.0);
+	
+		col = atmosAmbient(vec3(0));
+		col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a));
 	
-	vec3 col = atmosAmbient(vec3(0));
-	col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a));
+		col *= diffuse.rgb;
 	
-	col *= diffuse.rgb;
+		if (spec.a > 0.0) // specular reflection
+		{
+			// the old infinite-sky shiny reflection
+			//
+			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+			float sa = dot(refnormpersp, vary_light.xyz);
+			vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a;
+			
+			// add the two types of shiny together
+			vec3 spec_contrib = dumbshiny * spec.rgb;
+			bloom = dot(spec_contrib, spec_contrib);
+			col += spec_contrib;
+		}
 	
-	if (spec.a > 0.0) // specular reflection
+		col = atmosLighting(col);
+		col = scaleSoftClip(col);
+
+		col = mix(col.rgb, diffuse.rgb, diffuse.a);
+	}
+	else
 	{
-		// the old infinite-sky shiny reflection
-		//
-		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
-		float sa = dot(refnormpersp, vary_light.xyz);
-		vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a;
-
-		/*
-		// screen-space cheap fakey reflection map
-		//
-		vec3 refnorm = normalize(reflect(vec3(0,0,-1), norm.xyz));
-		depth -= 0.5; // unbias depth
-		// first figure out where we'll make our 2D guess from
-		vec2 ref2d = (0.25 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth;
-		// Offset the guess source a little according to a trivial
-		// checkerboard dither function and spec.a.
-		// This is meant to be similar to sampling a blurred version
-		// of the diffuse map.  LOD would be better in that regard.
-		// The goal of the blur is to soften reflections in surfaces
-		// with low shinyness, and also to disguise our lameness.
-		float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0
-		float checkoffset = (3.0 + (7.0*(1.0-spec.a)))*(checkerboard-0.5);
-		ref2d += vec2(checkoffset, checkoffset);
-		ref2d += tc.xy; // use as offset from destination
-		// Get attributes from the 2D guess point.
-		// We average two samples of diffuse (not of anything else) per
-		// pixel to try to reduce aliasing some more.
-		vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb +
-				     texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb);
-		float refdepth = texture2DRect(depthMap, ref2d).a;
-		vec3 refpos = getPosition_d(ref2d, refdepth).xyz;
-		vec3 refn = texture2DRect(normalMap, ref2d).rgb;
-		refn = normalize(vec3((refn.xy-0.5)*2.0,refn.z)); // unpack norm
-		// figure out how appropriate our guess actually was
-		float refapprop = max(0.0, dot(-refnorm, normalize(pos - refpos)));
-		// darken reflections from points which face away from the reflected ray - our guess was a back-face
-		//refapprop *= step(dot(refnorm, refn), 0.0);
-		refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant
-		// get appropriate light strength for guess-point.
-		// reflect light direction to increase the illusion that
-		// these are reflections.
-		vec3 reflight = reflect(lightnorm.xyz, norm.xyz);
-		float reflit = max(dot(refn, reflight.xyz), 0.0);
-		// apply sun color to guess-point, dampen according to inappropriateness of guess
-		float refmod = min(refapprop, reflit);
-		vec3 refprod = vary_SunlitColor * refcol.rgb * refmod;
-		vec3 ssshiny = (refprod * spec.a);
-		ssshiny *= 0.3; // dampen it even more
-		*/
-		vec3 ssshiny = vec3(0,0,0);
-
-		// add the two types of shiny together
-		col += (ssshiny + dumbshiny) * spec.rgb;
+		col = diffuse.rgb;
 	}
-	
-	col = atmosLighting(col);
-	col = scaleSoftClip(col);
-		
+
 	gl_FragColor.rgb = col;
-	gl_FragColor.a = 0.0;
+	gl_FragColor.a = bloom;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl
index 9dfacfb520cd8638b252a2845d3560f5806a4a7e..2cce43e2bfb322c3b7412cacf03149ef24481047 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl
@@ -266,7 +266,7 @@ void main()
 	vec2 tc = vary_fragcoord.xy;
 	ivec2 itc = ivec2(tc);
 
-	vec3 fcol = vec3(0,0,0);
+	vec4 fcol = vec4(0,0,0,0);
 
 	for (int i = 0; i < samples; ++i)
 	{
@@ -280,17 +280,16 @@ void main()
 		float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
 	
 		vec4 diffuse = texelFetch(diffuseRect, itc, i);
-		if (diffuse.a >= 1.0)
-		{
-			fcol += diffuse.rgb;
-		}
-		else
+		vec3 col;
+		float bloom = 0.0;
+
+		if (diffuse.a < 0.9)
 		{
 			vec4 spec = texelFetch(specularRect, itc, i);
 	
 			calcAtmospherics(pos.xyz, 1.0);
 	
-			vec3 col = atmosAmbient(vec3(0));
+			col = atmosAmbient(vec3(0));
 			col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a));
 	
 			col *= diffuse.rgb;
@@ -304,15 +303,22 @@ void main()
 				vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a;
 
 				// add the two types of shiny together
-				col += dumbshiny * spec.rgb;
+				vec3 spec_contrib = dumbshiny * spec.rgb;
+				bloom = dot(spec_contrib, spec_contrib);
+				col += spec_contrib;
 			}
 
 			col = atmosLighting(col);
 			col = scaleSoftClip(col);
-			fcol += col;
+			col = mix(col, diffuse.rgb, diffuse.a);
 		}
+		else
+		{
+			col = diffuse.rgb;
+		}
+
+		fcol += vec4(col, bloom);
 	}
 				
-	gl_FragColor.rgb = fcol.rgb/samples;
-	gl_FragColor.a = 0.0;
+	gl_FragColor = fcol/samples;
 }
diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..3827c72f4cdd5df65393f15aedaa834482d95032
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
@@ -0,0 +1,17 @@
+/** 
+ * @file customalphaF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+uniform sampler2D diffuseMap;
+
+uniform float custom_alpha;
+
+void main() 
+{
+	vec4 color = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
+	color.a *= custom_alpha;
+	gl_FragColor = color;
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..04bfff22c1298a7dd592e5d9ded26f7b2d24fde8
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl
@@ -0,0 +1,16 @@
+/** 
+ * @file customalphaV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+
+
+void main()
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+	gl_TexCoord[0] = gl_MultiTexCoord0;
+	gl_FrontColor = gl_Color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..a60fb1eaa7d54edbf4bbb4c3a7af51393f6f6c5e
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
@@ -0,0 +1,17 @@
+/** 
+ * @file glowcombineF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+#extension GL_ARB_texture_rectangle : enable
+
+uniform sampler2D glowMap;
+uniform sampler2DRect screenMap;
+
+void main() 
+{
+	gl_FragColor = texture2D(glowMap, gl_TexCoord[0].xy) +
+					texture2DRect(screenMap, gl_TexCoord[1].xy);
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..ce183ec15421c999aa0913b6f8cdebc143ea574b
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl
@@ -0,0 +1,15 @@
+/** 
+ * @file glowcombineV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+
+void main()
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+	gl_TexCoord[0] = gl_MultiTexCoord0;
+	gl_TexCoord[1] = gl_MultiTexCoord1;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..b140712f181ff1d0b0a6666f65d85aa37a5694c1
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
@@ -0,0 +1,11 @@
+/** 
+ * @file occlusionF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+void main() 
+{
+	gl_FragColor = vec4(1,1,1,1);
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..5a5d0ec506bd1b9f231b659f2fe43cc34d2b79aa
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl
@@ -0,0 +1,12 @@
+/** 
+ * @file uiV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+
+void main()
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..5b7cc5757498f2a745fbf4a210fce97b68996007
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
@@ -0,0 +1,15 @@
+/** 
+ * @file twotextureaddF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+uniform sampler2D tex0;
+
+void main() 
+{
+	float alpha = texture2D(tex0, gl_TexCoord[0].xy).a * gl_Color.a;
+
+	gl_FragColor = vec4(gl_Color.rgb, alpha);
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..8401208e28244ddb060a756c73605cb582551b23
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl
@@ -0,0 +1,16 @@
+/** 
+ * @file solidcolorV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+
+
+void main()
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+	gl_FrontColor = gl_Color;
+	gl_TexCoord[0] = gl_MultiTexCoord0;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..d81b56fdb9856ef52419bd67042d09fb9491d970
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
@@ -0,0 +1,14 @@
+/** 
+ * @file twotextureaddF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+uniform sampler2D tex0;
+uniform sampler2D tex1;
+
+void main() 
+{
+	gl_FragColor = texture2D(tex0, gl_TexCoord[0].xy)+texture2D(tex1, gl_TexCoord[1].xy);
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..f685b112b4517394932db079809b66678e170f20
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl
@@ -0,0 +1,16 @@
+/** 
+ * @file twotextureaddV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+
+
+void main()
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+	gl_TexCoord[0] = gl_MultiTexCoord0;
+	gl_TexCoord[1] = gl_MultiTexCoord1;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..9dec7a56ba78141f456fc12da420494dffac85e8
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
@@ -0,0 +1,13 @@
+/** 
+ * @file uiF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+uniform sampler2D diffuseMap;
+
+void main() 
+{
+	gl_FragColor = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/uiV.glsl b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..9ca6cae5c5f78586532b46afc9069c67c7b83423
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl
@@ -0,0 +1,16 @@
+/** 
+ * @file uiV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+
+
+void main()
+{
+	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+	gl_TexCoord[0] = gl_MultiTexCoord0;
+	gl_FrontColor = gl_Color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..587ab93a80e20a25532451268df65485d4b8179c
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
@@ -0,0 +1,17 @@
+/** 
+ * @file bumpF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+uniform sampler2D texture0;
+uniform sampler2D texture1;
+
+void main() 
+{
+	float tex0 = texture2D(texture0, gl_TexCoord[0].xy).a;
+	float tex1 = texture2D(texture1, gl_TexCoord[1].xy).a;
+
+	gl_FragColor = vec4(tex0+(1.0-tex1)-0.5);
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..056d1a9582e3694c343ec6e9cc0d7fb80a645b9e
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl
@@ -0,0 +1,16 @@
+/** 
+ * @file bumpV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * $/LicenseInfo$
+ */
+ 
+
+void main()
+{
+	//transform vertex
+	gl_Position = gl_ModelViewProjectionMatrix*gl_Vertex;
+	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	gl_TexCoord[1] = gl_TextureMatrix[1] * gl_MultiTexCoord1;
+	gl_FrontColor = gl_Color;
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
index f44a5ce32e5ab4760f27269a464b65a7ee5f9121..5283e80407ff188ba4c692c81c0c0c505eacfbb2 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
@@ -10,8 +10,6 @@
 void calcAtmospherics(vec3 inPositionEye);
 mat4 getObjectSkinnedTransform();
 
-attribute vec4 object_weight;
-
 void main()
 {
 	mat4 mat = getObjectSkinnedTransform();
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
index e5dafa8c789e07ee9069ba1ae34ec30718888004..1db79791de38741a6b2d9e85f957de858f634f91 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
@@ -10,8 +10,6 @@
 void calcAtmospherics(vec3 inPositionEye);
 mat4 getObjectSkinnedTransform();
 
-attribute vec4 object_weight;
-
 void main()
 {
 	//transform vertex
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
index cd655f3bb51cde3cf018f6cfa20cef2f5efa5416..eea41bb4f0d2c70543dc2a7c32d6c964ecb4ec4e 100644
--- a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
@@ -11,8 +11,6 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 void calcAtmospherics(vec3 inPositionEye);
 mat4 getObjectSkinnedTransform();
 
-attribute vec4 object_weight;
-
 void main()
 {
 	mat4 mat = getObjectSkinnedTransform();
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
index 900448035c44a78a29fde95f33dff7b05852efe8..af92e5e00268a7b8242410914f3601de747adebb 100644
--- a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
@@ -11,8 +11,6 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 void calcAtmospherics(vec3 inPositionEye);
 mat4 getObjectSkinnedTransform();
 
-attribute vec4 object_weight;
-
 void main()
 {
 	//transform vertex
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 66a1a8515f257bf4fc7fa610edb12afe455d20cb..f0c9b01671fc2dcfbae8b2bc11ffcf7471cab439 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -267,34 +267,49 @@ void main()
 	float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
 	
 	vec4 diffuse = texture2DRect(diffuseRect, tc);
-	vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
-	
-	vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
-	float scol = max(scol_ambocc.r, diffuse.a); 
-	float ambocc = scol_ambocc.g;
+
+	vec3 col;
+	float bloom = 0.0;
+
+	if (diffuse.a < 0.9)
+	{
+		vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
+		
+		vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
+		float scol = max(scol_ambocc.r, diffuse.a); 
+		float ambocc = scol_ambocc.g;
 	
-	calcAtmospherics(pos.xyz, ambocc);
+		calcAtmospherics(pos.xyz, ambocc);
 	
-	vec3 col = atmosAmbient(vec3(0));
-	col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
+		col = atmosAmbient(vec3(0));
+		col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
 	
-	col *= diffuse.rgb;
+		col *= diffuse.rgb;
 	
-	if (spec.a > 0.0) // specular reflection
+		if (spec.a > 0.0) // specular reflection
+		{
+			// the old infinite-sky shiny reflection
+			//
+			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+			float sa = dot(refnormpersp, vary_light.xyz);
+			vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
+
+			// add the two types of shiny together
+			vec3 spec_contrib = dumbshiny * spec.rgb;
+			bloom = dot(spec_contrib, spec_contrib);
+			col += spec_contrib;
+		}
+			
+		col = atmosLighting(col);
+		col = scaleSoftClip(col);
+
+		col = mix(col, diffuse.rgb, diffuse.a);
+	}
+	else
 	{
-		// the old infinite-sky shiny reflection
-		//
-		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
-		float sa = dot(refnormpersp, vary_light.xyz);
-		vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
-
-		// add the two types of shiny together
-		col += dumbshiny * spec.rgb;
+		col = diffuse.rgb;
 	}
-	
-	col = atmosLighting(col);
-	col = scaleSoftClip(col);
 		
 	gl_FragColor.rgb = col;
-	gl_FragColor.a = 0.0;
+	gl_FragColor.a = bloom;
 }
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
index 0bae10ca7d218a844f7fd4562548a6cb9881fb0d..3b572320c3298fee827b083bd40dbdb19e77bef7 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
@@ -255,7 +255,7 @@ void main()
 	vec2 tc = vary_fragcoord.xy;
 	ivec2 itc = ivec2(tc);
 
-	vec3 fcol = vec3(0,0,0);
+	vec4 fcol = vec4(0,0,0,0);
 
 	vec2 scol_ambocc = texture2DRect(lightMap, tc).rg;
 	float ambocc = scol_ambocc.g;
@@ -270,38 +270,50 @@ void main()
 		float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
 	
 		vec4 diffuse = texelFetch(diffuseRect, itc, i);
-		vec4 spec = texelFetch(specularRect, itc, i);
+		vec3 col;
+		float bloom = 0.0;
+		if (diffuse.a < 0.9)
+		{
+			vec4 spec = texelFetch(specularRect, itc, i);
 	
-		float amb = 0;
+			float amb = 0;
 
-		float scol = max(scol_ambocc.r, diffuse.a); 
-		amb += ambocc;
+			float scol = max(scol_ambocc.r, diffuse.a); 
+			amb += ambocc;
 
-		calcAtmospherics(pos.xyz, ambocc);
+			calcAtmospherics(pos.xyz, ambocc);
+	
+			col = atmosAmbient(vec3(0));
+			col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
 	
-		vec3 col = atmosAmbient(vec3(0));
-		col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
+			col *= diffuse.rgb;
 	
-		col *= diffuse.rgb;
+			if (spec.a > 0.0) // specular reflection
+			{
+				// the old infinite-sky shiny reflection
+				//
+				vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+				float sa = dot(refnormpersp, vary_light.xyz);
+				vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
+
+				// add the two types of shiny together
+				vec3 spec_contrib = dumbshiny * spec.rgb;
+				bloom = dot(spec_contrib, spec_contrib);
+				col += spec_contrib;
+			}
 	
-		if (spec.a > 0.0) // specular reflection
+			col = atmosLighting(col);
+			col = scaleSoftClip(col);
+
+			col = mix(col, diffuse.rgb, diffuse.a);
+		}
+		else
 		{
-			// the old infinite-sky shiny reflection
-			//
-			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
-			float sa = dot(refnormpersp, vary_light.xyz);
-			vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
-
-			// add the two types of shiny together
-			col += dumbshiny * spec.rgb;
+			col = diffuse.rgb;
 		}
-	
-		col = atmosLighting(col);
-		col = scaleSoftClip(col);
 
-		fcol += col;
+		fcol += vec4(col, bloom);
 	}
 		
-	gl_FragColor.rgb = fcol/samples; 
-	gl_FragColor.a = 0.0;
+	gl_FragColor = fcol/samples; 
 }
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
index d38d33cc2193cd64280e863bdd958d8beb595954..1ae10a5faaea8f78a964e073161ead5dd9a28e27 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
@@ -268,91 +268,50 @@ void main()
 	float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
 	
 	vec4 diffuse = texture2DRect(diffuseRect, tc);
-	vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
+	vec3 col;
+	float bloom = 0.0;
+
+	if (diffuse.a < 0.9)
+	{
+		vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
 	
-	da = texture2D(lightFunc, vec2(da, 0.0)).a;
+		da = texture2D(lightFunc, vec2(da, 0.0)).a;
 		
-	vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
-	float scol = max(scol_ambocc.r, diffuse.a); 
-	float ambocc = scol_ambocc.g;
+		vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
+		float scol = max(scol_ambocc.r, diffuse.a); 
+		float ambocc = scol_ambocc.g;
 	
-	calcAtmospherics(pos.xyz, ambocc);
+		calcAtmospherics(pos.xyz, ambocc);
 	
-	vec3 col = atmosAmbient(vec3(0));
-	col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
+		col = atmosAmbient(vec3(0));
+		col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
 	
-	col *= diffuse.rgb;
+		col *= diffuse.rgb;
 	
-	if (spec.a > 0.0) // specular reflection
+		if (spec.a > 0.0) // specular reflection
+		{
+			// the old infinite-sky shiny reflection
+			//
+			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+			float sa = dot(refnormpersp, vary_light.xyz);
+			vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a;
+		
+			// add the two types of shiny together
+			vec3 spec_contrib = dumbshiny * spec.rgb;
+			bloom = dot(spec_contrib, spec_contrib);
+			col += spec_contrib;		
+		}
+	
+		col = atmosLighting(col);
+		col = scaleSoftClip(col);
+
+		col = mix(col, diffuse.rgb, diffuse.a);
+	}
+	else
 	{
-		// the old infinite-sky shiny reflection
-		//
-		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
-		float sa = dot(refnormpersp, vary_light.xyz);
-		vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a;
-
-		/*
-		// screen-space cheap fakey reflection map
-		//
-		vec3 refnorm = normalize(reflect(vec3(0,0,-1), norm.xyz));
-		depth -= 0.5; // unbias depth
-		// first figure out where we'll make our 2D guess from
-		vec2 ref2d = (0.25 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth;
-		// Offset the guess source a little according to a trivial
-		// checkerboard dither function and spec.a.
-		// This is meant to be similar to sampling a blurred version
-		// of the diffuse map.  LOD would be better in that regard.
-		// The goal of the blur is to soften reflections in surfaces
-		// with low shinyness, and also to disguise our lameness.
-		float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0
-		float checkoffset = (3.0 + (7.0*(1.0-spec.a)))*(checkerboard-0.5);
-
-		ref2d += vec2(checkoffset, checkoffset);
-		ref2d += tc.xy; // use as offset from destination
-		// Get attributes from the 2D guess point.
-		// We average two samples of diffuse (not of anything else) per
-		// pixel to try to reduce aliasing some more.
-		vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb +
-				     texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb);
-		float refdepth = texture2DRect(depthMap, ref2d).a;
-		vec3 refpos = getPosition_d(ref2d, refdepth).xyz;
-		float refshad = texture2DRect(lightMap, ref2d).r;
-		vec3 refn = texture2DRect(normalMap, ref2d).rgb;
-		refn = vec3((refn.xy-0.5)*2.0,refn.z); // unpack norm
-		refn = normalize(refn);
-		// figure out how appropriate our guess actually was
-		float refapprop = max(0.0, dot(-refnorm, normalize(pos - refpos)));
-		// darken reflections from points which face away from the reflected ray - our guess was a back-face
-		//refapprop *= step(dot(refnorm, refn), 0.0);
-		refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant
-		// get appropriate light strength for guess-point.
-		// reflect light direction to increase the illusion that
-		// these are reflections.
-		vec3 reflight = reflect(lightnorm.xyz, norm.xyz);
-		float reflit = min(max(dot(refn, reflight.xyz), 0.0), refshad);
-		// apply sun color to guess-point, dampen according to inappropriateness of guess
-		float refmod = min(refapprop, reflit);
-		vec3 refprod = vary_SunlitColor * refcol.rgb * refmod;
-		vec3 ssshiny = (refprod * spec.a);
-		ssshiny *= 0.3; // dampen it even more
-		*/
-		vec3 ssshiny = vec3(0,0,0);
-
-		// add the two types of shiny together
-		col += (ssshiny + dumbshiny) * spec.rgb;
+		col = diffuse.rgb;
 	}
-	
-	col = atmosLighting(col);
-	col = scaleSoftClip(col);
 		
 	gl_FragColor.rgb = col;
-	
-	//gl_FragColor.rgb = gi_col.rgb;
-	gl_FragColor.a = 0.0;
-	
-	//gl_FragColor.rg = scol_ambocc.rg;
-	//gl_FragColor.rgb = texture2DRect(lightMap, vary_fragcoord.xy).rgb;
-	//gl_FragColor.rgb = norm.rgb*0.5+0.5;
-	//gl_FragColor.rgb = vec3(ambocc);
-	//gl_FragColor.rgb = vec3(scol);
+	gl_FragColor.a = bloom;
 }
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 22c79a4cbd2c18ed3b74842c5539f91a9a27ac7a..1f9dc6e4e5113bb0bd57a0fd1364c707bfc3d382 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -1,6 +1,6 @@
-version 30
+version 32
 
-// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
+// NOTE: This is mostly identical to featuretable_mac.txt with a few differences 
 // Should be combined into one table
 
 //
@@ -244,10 +244,10 @@ RenderDeferredSSAO			0	0
 RenderShadowDetail			0	0
 
 //
-// No GL_ARB_map_buffer_range
+// GL_ARB_map_buffer_range exists
 //
-list NoMapBufferRange
-RenderVBOMappingDisable		1	0
+list MapBufferRange
+RenderVBOMappingDisable		1	1
 
 
 //
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index 649f5ebd186838cdf8c1d43a4c2b45e123a5a2ca..6e962f3c567e2063b1dc4e4710d27dd2a0edcae9 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -1,4 +1,4 @@
-version 25
+version 27
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
 // Should be combined into one table
@@ -242,10 +242,10 @@ RenderDeferredSSAO			0	0
 RenderShadowDetail			0	0
 
 //
-// No GL_ARB_map_buffer_range
+// GL_ARB_map_buffer_range exists
 //
-list NoMapBufferRange
-RenderVBOMappingDisable		1	0
+list MapBufferRange
+RenderVBOMappingDisable		1	1
 
 
 
diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt
index ba74f9a6c24b9ec6f5b72faf254f64137557906b..a0245f5369070dd5ed6fee3f49f594584a6065b6 100644
--- a/indra/newview/featuretable_xp.txt
+++ b/indra/newview/featuretable_xp.txt
@@ -1,4 +1,4 @@
-version 30
+version 31
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
 // Should be combined into one table
@@ -244,10 +244,10 @@ RenderDeferredSSAO			0	0
 RenderShadowDetail			0	0
 
 //
-// No GL_ARB_map_buffer_range
+// GL_ARB_map_buffer_range exists
 //
-list NoMapBufferRange
-RenderVBOMappingDisable		1	0
+list MapBufferRange
+RenderVBOMappingDisable		1	1
 
 
 //
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 492cfe7c1ba8cde93ca0be2c85d29a8a76030e4b..642a1907f0078f10a7ae7f3eb317a90e1b792150 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -3356,8 +3356,8 @@ bool LLAgent::teleportCore(bool is_local)
 	// hide the Region/Estate floater
 	LLFloaterReg::hideInstance("region_info");
 
-	// hide the search floater (EXT-8276)
-	LLFloaterReg::hideInstance("search");
+	// minimize the Search floater (STORM-1474)
+	LLFloaterReg::getInstance("search")->setMinimized(TRUE);
 
 	LLViewerParcelMgr::getInstance()->deselectLand();
 	LLViewerMediaFocus::getInstance()->clearFocus();
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 862fc49c0e6c2f78df34ab69b285f2da6b0ee297..b65933f8a1d1866c3f953bf038031453df713d45 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -4003,6 +4003,8 @@ class LLFrameStatsTimer : public LLFrameTimer
 
 static LLFastTimer::DeclareTimer FTM_AUDIO_UPDATE("Update Audio");
 static LLFastTimer::DeclareTimer FTM_CLEANUP("Cleanup");
+static LLFastTimer::DeclareTimer FTM_CLEANUP_DRAWABLES("Drawables");
+static LLFastTimer::DeclareTimer FTM_CLEANUP_OBJECTS("Objects");
 static LLFastTimer::DeclareTimer FTM_IDLE_CB("Idle Callbacks");
 static LLFastTimer::DeclareTimer FTM_LOD_UPDATE("Update LOD");
 static LLFastTimer::DeclareTimer FTM_OBJECTLIST_UPDATE("Update Objectlist");
@@ -4279,8 +4281,14 @@ void LLAppViewer::idle()
 
 	{
 		LLFastTimer t(FTM_CLEANUP);
-		gObjectList.cleanDeadObjects();
-		LLDrawable::cleanupDeadDrawables();
+		{
+			LLFastTimer t(FTM_CLEANUP_OBJECTS);
+			gObjectList.cleanDeadObjects();
+		}
+		{
+			LLFastTimer t(FTM_CLEANUP_DRAWABLES);
+			LLDrawable::cleanupDeadDrawables();
+		}
 	}
 	
 	//
diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp
index 18ae6107e7d74e8aa1d6106c03291499b9e122e4..c7fc45f61ee68347beffcb6cf3397d73ec3d419f 100644
--- a/indra/newview/lldateutil.cpp
+++ b/indra/newview/lldateutil.cpp
@@ -27,10 +27,16 @@
 
 #include "lldateutil.h"
 
+#include <boost/date_time/gregorian/gregorian.hpp>
+#include <boost/date_time/posix_time/ptime.hpp>
+
 // Linden libraries
 #include "lltrans.h"
 #include "llui.h"
 
+using namespace boost::gregorian;
+using namespace boost::posix_time;
+
 static S32 DAYS_PER_MONTH_NOLEAP[] =
 	{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
 static S32 DAYS_PER_MONTH_LEAP[] =
@@ -186,3 +192,24 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string)
 //{
 //	return ageFromDateISO(date_string, LLDate::now());
 //}
+
+S32 LLDateUtil::secondsSinceEpochFromString(const std::string& format, const std::string& str)
+{
+	date_input_facet *facet = new date_input_facet(format);
+
+	std::stringstream ss;
+	ss << str;
+	ss.imbue(std::locale(ss.getloc(), facet));
+
+	date d;
+	ss >> d;
+
+	ptime time_t_date(d);
+	ptime time_t_epoch(date(1970,1,1));
+
+	// We assume that the date defined by str is in UTC, so the difference
+	// is calculated with no time zone corrections.
+	time_duration diff = time_t_date - time_t_epoch;
+
+	return diff.total_seconds();
+}
diff --git a/indra/newview/lldateutil.h b/indra/newview/lldateutil.h
index 2843a357c9a245efabc786c4003caedc6e344da0..f027d360f7aadd1cc149f095e4d196f9d453679e 100644
--- a/indra/newview/lldateutil.h
+++ b/indra/newview/lldateutil.h
@@ -69,6 +69,20 @@ namespace LLDateUtil
 	//std::string ageFromDateISO(const std::string& date_string);
 
 	//std::string ageFromDate(S32 born_year, S32 born_month, S32 born_day, const LLDate& now);
+
+	/**
+	 * Convert a string of a specified date format into seconds since the Epoch.
+	 *
+	 * Many of the format flags are those used by strftime(...), but not all.
+	 * For the full list of supported time format specifiers
+	 * see http://www.boost.org/doc/libs/1_47_0/doc/html/date_time/date_time_io.html#date_time.format_flags
+	 *
+	 * @param format Format characters string. Example: "%A %b %d, %Y"
+	 * @param str    Date string containing the time in specified format.
+	 *
+	 * @return Number of seconds since 01/01/1970 UTC.
+	 */
+	S32 secondsSinceEpochFromString(const std::string& format, const std::string& str);
 }
 
 #endif
diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp
index fa7d6e2a40fd237ab548af78265f8f61b80027ff..286284f828e13af883bce36d6ce5dba52da5fd27 100644
--- a/indra/newview/lldrawpool.cpp
+++ b/indra/newview/lldrawpool.cpp
@@ -190,15 +190,16 @@ void LLDrawPool::renderPostDeferred(S32 pass)
 //virtual
 void LLDrawPool::endRenderPass( S32 pass )
 {
-	for (U32 i = 0; i < gGLManager.mNumTextureImageUnits; i++)
+	/*for (U32 i = 0; i < gGLManager.mNumTextureImageUnits; i++)
 	{ //dummy cleanup of any currently bound textures
 		if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE)
 		{
 			gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType());
 			gGL.getTexUnit(i)->disable();
 		}
-	}
+	}*/
 
+	//make sure channel 0 is active channel
 	gGL.getTexUnit(0)->activate();
 }
 
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index ad7e3ad59352c33b4cb4db805e24ddad83aca306..ddcf42e5233e19e9e4ae872e36d6dfa12dd1350d 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -138,6 +138,7 @@ void LLDrawPoolAlpha::beginPostDeferredPass(S32 pass)
 		gPipeline.mDeferredDepth.bindTarget();
 		simple_shader = NULL;
 		fullbright_shader = NULL;
+		gObjectFullbrightProgram.bind();
 	}
 
 	deferred_render = TRUE;
@@ -156,6 +157,7 @@ void LLDrawPoolAlpha::endPostDeferredPass(S32 pass)
 	{
 		gPipeline.mDeferredDepth.flush();
 		gPipeline.mScreen.bindTarget();
+		gObjectFullbrightProgram.unbind();
 	}
 
 	deferred_render = FALSE;
@@ -238,7 +240,7 @@ void LLDrawPoolAlpha::render(S32 pass)
 				fullbright_shader->bind();
 			}
 			pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
-			LLGLSLShader::bindNoShader();
+			//LLGLSLShader::bindNoShader();
 		}
 		else
 		{
diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index 813b3820ee8948c05e566754853c8531af581281..d801f6df18a6518b1beac2f4cf6e1f20e8c50f36 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -464,11 +464,15 @@ void LLDrawPoolBump::unbindCubeMap(LLGLSLShader* shader, S32 shader_level, S32&
 			}
 		}
 	}
-	gGL.getTexUnit(diffuse_channel)->disable();
-	gGL.getTexUnit(cube_channel)->disable();
 
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+	if (!LLGLSLShader::sNoFixedFunction)
+	{
+		gGL.getTexUnit(diffuse_channel)->disable();
+		gGL.getTexUnit(cube_channel)->disable();
+
+		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+		gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+	}
 }
 
 void LLDrawPoolBump::endShiny(bool invisible)
@@ -583,19 +587,19 @@ void LLDrawPoolBump::endFullbrightShiny()
 		cube_map->disable();
 		cube_map->restoreMatrix();
 
-		if (diffuse_channel != 0)
+		/*if (diffuse_channel != 0)
 		{
 			shader->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
 		}
 		gGL.getTexUnit(0)->activate();
-		gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
+		gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);*/
 
 		shader->unbind();
-		gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+		//gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
 	}
 	
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+	//gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+	//gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
 
 	diffuse_channel = -1;
 	cube_channel = 0;
@@ -706,36 +710,44 @@ void LLDrawPoolBump::beginBump(U32 pass)
 	// Optional second pass: emboss bump map
 	stop_glerror();
 
-	// TEXTURE UNIT 0
-	// Output.rgb = texture at texture coord 0
-	gGL.getTexUnit(0)->activate();
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gObjectBumpProgram.bind();
+	}
+	else
+	{
+		// TEXTURE UNIT 0
+		// Output.rgb = texture at texture coord 0
+		gGL.getTexUnit(0)->activate();
 
-	gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
-	gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
+		gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
+		gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
 
-	// TEXTURE UNIT 1
-	gGL.getTexUnit(1)->activate();
+		// TEXTURE UNIT 1
+		gGL.getTexUnit(1)->activate();
  
-	gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
+		gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
+
+		gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD_SIGNED, LLTexUnit::TBS_PREV_COLOR, LLTexUnit::TBS_ONE_MINUS_TEX_ALPHA);
+		gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
 
-	gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD_SIGNED, LLTexUnit::TBS_PREV_COLOR, LLTexUnit::TBS_ONE_MINUS_TEX_ALPHA);
-	gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
+		// src	= tex0 + (1 - tex1) - 0.5
+		//		= (bump0/2 + 0.5) + (1 - (bump1/2 + 0.5)) - 0.5
+		//		= (1 + bump0 - bump1) / 2
 
-	// src	= tex0 + (1 - tex1) - 0.5
-	//		= (bump0/2 + 0.5) + (1 - (bump1/2 + 0.5)) - 0.5
-	//		= (1 + bump0 - bump1) / 2
 
+		// Blend: src * dst + dst * src
+		//		= 2 * src * dst
+		//		= 2 * ((1 + bump0 - bump1) / 2) * dst   [0 - 2 * dst]
+		//		= (1 + bump0 - bump1) * dst.rgb
+		//		= dst.rgb + dst.rgb * (bump0 - bump1)
+
+		gGL.getTexUnit(0)->activate();
+		gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
+	}
 
-	// Blend: src * dst + dst * src
-	//		= 2 * src * dst
-	//		= 2 * ((1 + bump0 - bump1) / 2) * dst   [0 - 2 * dst]
-	//		= (1 + bump0 - bump1) * dst.rgb
-	//		= dst.rgb + dst.rgb * (bump0 - bump1)
 	gGL.setSceneBlendType(LLRender::BT_MULT_X2);
-	gGL.getTexUnit(0)->activate();
 	stop_glerror();
-
-	gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
 }
 
 //static
@@ -765,14 +777,21 @@ void LLDrawPoolBump::endBump(U32 pass)
 		return;
 	}
 
-	// Disable texture unit 1
-	gGL.getTexUnit(1)->activate();
-	gGL.getTexUnit(1)->disable();
-	gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT);
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gObjectBumpProgram.unbind();
+	}
+	else
+	{
+		// Disable texture blending on unit 1
+		gGL.getTexUnit(1)->activate();
+		//gGL.getTexUnit(1)->disable();
+		gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT);
 
-	// Disable texture unit 0
-	gGL.getTexUnit(0)->activate();
-	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+		// Disable texture blending on unit 0
+		gGL.getTexUnit(0)->activate();
+		gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+	}
 	
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
 }
@@ -1407,6 +1426,11 @@ void LLDrawPoolInvisible::render(S32 pass)
 { //render invisiprims
 	LLFastTimer t(FTM_RENDER_INVISIBLE);
   
+	if (gPipeline.canUseVertexShaders())
+	{
+		gOcclusionProgram.bind();
+	}
+
 	U32 invisi_mask = LLVertexBuffer::MAP_VERTEX;
 	glStencilMask(0);
 	gGL.setColorMask(false, false);
@@ -1414,6 +1438,11 @@ void LLDrawPoolInvisible::render(S32 pass)
 	gGL.setColorMask(true, false);
 	glStencilMask(0xFFFFFFFF);
 
+	if (gPipeline.canUseVertexShaders())
+	{
+		gOcclusionProgram.unbind();
+	}
+
 	if (gPipeline.hasRenderBatches(LLRenderPass::PASS_INVISI_SHINY))
 	{
 		beginShiny(true);
diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp
index 5dbb27cabb84e174b0dcb0b9a7f4c82daa266ec6..224f149c6bdf8d51b5903104006f664174fc7cad 100644
--- a/indra/newview/lldrawpoolsimple.cpp
+++ b/indra/newview/lldrawpoolsimple.cpp
@@ -49,6 +49,8 @@ void LLDrawPoolGlow::beginPostDeferredPass(S32 pass)
 	gDeferredFullbrightProgram.bind();
 }
 
+static LLFastTimer::DeclareTimer FTM_RENDER_GLOW_PUSH("Glow Push");
+
 void LLDrawPoolGlow::renderPostDeferred(S32 pass)
 {
 	LLFastTimer t(FTM_RENDER_GLOW);
@@ -62,7 +64,11 @@ void LLDrawPoolGlow::renderPostDeferred(S32 pass)
 	
 	LLGLDepthTest depth(GL_TRUE, GL_FALSE);
 	gGL.setColorMask(false, true);
-	pushBatches(LLRenderPass::PASS_GLOW, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
+
+	{
+		LLFastTimer t(FTM_RENDER_GLOW_PUSH);
+		pushBatches(LLRenderPass::PASS_GLOW, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
+	}
 	
 	gGL.setColorMask(true, false);
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);	
@@ -374,10 +380,14 @@ void LLDrawPoolFullbright::endRenderPass(S32 pass)
 	LLFastTimer t(FTM_RENDER_FULLBRIGHT);
 	LLRenderPass::endRenderPass(pass);
 
+	stop_glerror();
+
 	if (mVertexShaderLevel > 0)
 	{
 		fullbright_shader->unbind();
 	}
+
+	stop_glerror();
 }
 
 void LLDrawPoolFullbright::render(S32 pass)
@@ -385,6 +395,8 @@ void LLDrawPoolFullbright::render(S32 pass)
 	LLFastTimer t(FTM_RENDER_FULLBRIGHT);
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
 
+	stop_glerror();
+
 	if (mVertexShaderLevel > 0)
 	{
 		fullbright_shader->bind();
@@ -398,6 +410,8 @@ void LLDrawPoolFullbright::render(S32 pass)
 		U32 fullbright_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_COLOR;
 		renderTexture(LLRenderPass::PASS_FULLBRIGHT, fullbright_mask);
 	}
+
+	stop_glerror();
 }
 
 S32 LLDrawPoolFullbright::getNumPasses()
diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp
index 030d6e11107369865b0699351e70bbf4d530c512..efffb2df9e705ab96682a8c6c7c8ea3f8abe4288 100644
--- a/indra/newview/lldrawpoolsky.cpp
+++ b/indra/newview/lldrawpoolsky.cpp
@@ -82,6 +82,10 @@ void LLDrawPoolSky::render(S32 pass)
 		mShader = &gObjectFullbrightWaterProgram;
 		mShader->bind();
 	}
+	else if (LLGLSLShader::sNoFixedFunction)
+	{ //just use the UI shader (generic single texture no lighting)
+		gUIProgram.bind();
+	}
 	else
 	{
 		// don't use shaders!
@@ -139,6 +143,7 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side)
 
 	if (LLSkyTex::doInterpolate())
 	{
+		
 		LLGLEnable blend(GL_BLEND);
 		mSkyTex[side].bindTexture(FALSE);
 		glColor4f(1, 1, 1, LLSkyTex::getInterpVal()); // lighting is disabled
diff --git a/indra/newview/lldrawpooltree.cpp b/indra/newview/lldrawpooltree.cpp
index 81c796b14630f19aea34b1fcdaac174baf95688b..429e06b22786d9933c9f09e1e3143d3f3830aace 100644
--- a/indra/newview/lldrawpooltree.cpp
+++ b/indra/newview/lldrawpooltree.cpp
@@ -73,7 +73,7 @@ void LLDrawPoolTree::beginRenderPass(S32 pass)
 		shader = &gObjectSimpleNonIndexedProgram;
 	}
 
-	if (gPipeline.canUseWindLightShadersOnObjects())
+	if (gPipeline.canUseVertexShaders())
 	{
 		shader->bind();
 	}
diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
index bf79c2100c40e125ff64f2ad01cbba509b9fd053..a219386b530c02fc109fd4169949f1060a3fc0a9 100644
--- a/indra/newview/lldrawpoolwlsky.cpp
+++ b/indra/newview/lldrawpoolwlsky.cpp
@@ -62,13 +62,24 @@ LLDrawPoolWLSky::LLDrawPoolWLSky(void) :
 		llerrs << "Error: Failed to load cloud noise image " << cloudNoiseFilename << llendl;
 	}
 
-	cloudNoiseFile->load(cloudNoiseFilename);
-
-	sCloudNoiseRawImage = new LLImageRaw();
+	if(cloudNoiseFile->load(cloudNoiseFilename))
+	{
+		sCloudNoiseRawImage = new LLImageRaw();
 
-	cloudNoiseFile->decode(sCloudNoiseRawImage, 0.0f);
+		if(cloudNoiseFile->decode(sCloudNoiseRawImage, 0.0f))
+		{
+			//debug use			
+			lldebugs << "cloud noise raw image width: " << sCloudNoiseRawImage->getWidth() << " : height: " << sCloudNoiseRawImage->getHeight() << " : components: " << 
+				(S32)sCloudNoiseRawImage->getComponents() << " : data size: " << sCloudNoiseRawImage->getDataSize() << llendl ;
+			llassert_always(sCloudNoiseRawImage->getData()) ;
 
-	sCloudNoiseTexture = LLViewerTextureManager::getLocalTexture(sCloudNoiseRawImage.get(), TRUE);
+			sCloudNoiseTexture = LLViewerTextureManager::getLocalTexture(sCloudNoiseRawImage.get(), TRUE);
+		}
+		else
+		{
+			sCloudNoiseRawImage = NULL ;
+		}
+	}
 
 	LLWLParamManager::getInstance()->propagateParameters();
 }
@@ -189,21 +200,36 @@ void LLDrawPoolWLSky::renderStars(void) const
 	glRotatef(gFrameTimeSeconds*0.01f, 0.f, 0.f, 1.f);
 	// gl_FragColor.rgb = gl_Color.rgb;
 	// gl_FragColor.a = gl_Color.a * star_alpha.a;
-	gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR);
-	gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT_X2, LLTexUnit::TBS_CONST_ALPHA, LLTexUnit::TBS_TEX_ALPHA);
-	glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, star_alpha.mV);
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gCustomAlphaProgram.bind();
+		gCustomAlphaProgram.uniform1f("custom_alpha", star_alpha.mV[3]);
+	}
+	else
+	{
+		gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR);
+		gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT_X2, LLTexUnit::TBS_CONST_ALPHA, LLTexUnit::TBS_TEX_ALPHA);
+		glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, star_alpha.mV);
+	}
 
 	gSky.mVOWLSkyp->drawStars();
 
 	gGL.popMatrix();
-	
-	// and disable the combiner states
-	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gCustomAlphaProgram.unbind();
+	}
+	else
+	{
+		// and disable the combiner states
+		gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+	}
 }
 
 void LLDrawPoolWLSky::renderSkyClouds(F32 camHeightLocal) const
 {
-	if (gPipeline.canUseWindLightShaders() && gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS))
+	if (gPipeline.canUseWindLightShaders() && gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS) && sCloudNoiseTexture.notNull())
 	{
 		LLGLEnable blend(GL_BLEND);
 		gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -242,6 +268,10 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()
 
 	if (gSky.mVOSkyp->getMoon().getDraw() && face->getGeomCount())
 	{
+		if (gPipeline.canUseVertexShaders())
+		{
+			gUIProgram.bind();
+		}
 		// *NOTE: even though we already bound this texture above for the
 		// stars register combiners, we bind again here for defensive reasons,
 		// since LLImageGL::bind detects that it's a noop, and optimizes it out.
@@ -257,6 +287,11 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()
 		
 		LLFacePool::LLOverrideFaceColor color_override(this, color);
 		face->renderIndexed();
+
+		if (gPipeline.canUseVertexShaders())
+		{
+			gUIProgram.unbind();
+		}
 	}
 }
 
@@ -375,5 +410,8 @@ void LLDrawPoolWLSky::cleanupGL()
 //static
 void LLDrawPoolWLSky::restoreGL()
 {
-	sCloudNoiseTexture = LLViewerTextureManager::getLocalTexture(sCloudNoiseRawImage.get(), TRUE);
+	if(sCloudNoiseRawImage.notNull())
+	{
+		sCloudNoiseTexture = LLViewerTextureManager::getLocalTexture(sCloudNoiseRawImage.get(), TRUE);
+	}
 }
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index 5501b8c2ac24639da7e1b1a55fe84b992e9e57f8..2abfbf37ca9c3e347cfdd792b52902ac33d6c403 100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -415,6 +415,15 @@ void LLExpandableTextBox::onTopLost()
 	LLUICtrl::onTopLost();
 }
 
+void LLExpandableTextBox::updateTextShape()
+{
+	// I guess this should be done on every reshape(),
+	// but adding this code to reshape() currently triggers bug VWR-26455,
+	// which makes the text virtually unreadable.
+	llassert(!mExpanded);
+	updateTextBoxRect();
+}
+
 void LLExpandableTextBox::setValue(const LLSD& value)
 {
 	collapseTextBox();
diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h
index f75ef954ffa6210f9f1cf6bcb8c679dd17f64e76..399e48bea2b0ac2119cc9cd4722371bec233d588 100644
--- a/indra/newview/llexpandabletextbox.h
+++ b/indra/newview/llexpandabletextbox.h
@@ -143,6 +143,10 @@ class LLExpandableTextBox : public LLUICtrl
 	 */
 	/*virtual*/ void onTopLost();
 
+	/**
+	 * *HACK: Update the inner textbox shape.
+	 */
+	void updateTextShape();
 
 	/**
 	 * Draws text box, collapses text box if its expanded and its parent's position changed
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index b6566fcbd094da1b4c887f89ac667fafd942b1ba..432e61f6d8479c593e6b3025529d155a56308a84 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -1051,6 +1051,13 @@ bool LLFace::canRenderAsMask()
 
 
 static LLFastTimer::DeclareTimer FTM_FACE_GET_GEOM("Face Geom");
+static LLFastTimer::DeclareTimer FTM_FACE_GEOM_POSITION("Position");
+static LLFastTimer::DeclareTimer FTM_FACE_GEOM_NORMAL("Normal");
+static LLFastTimer::DeclareTimer FTM_FACE_GEOM_TEXTURE("Texture");
+static LLFastTimer::DeclareTimer FTM_FACE_GEOM_COLOR("Color");
+static LLFastTimer::DeclareTimer FTM_FACE_GEOM_WEIGHTS("Weights");
+static LLFastTimer::DeclareTimer FTM_FACE_GEOM_BINORMAL("Binormal");
+static LLFastTimer::DeclareTimer FTM_FACE_GEOM_INDEX("Index");
 
 BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 							   const S32 &f,
@@ -1064,6 +1071,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 	S32 num_vertices = (S32)vf.mNumVertices;
 	S32 num_indices = (S32) vf.mNumIndices;
 	
+	bool map_range = gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange;
+
 	if (mVertexBuffer.notNull())
 	{
 		if (num_indices + (S32) mIndicesIndex > mVertexBuffer->getNumIndices())
@@ -1182,7 +1191,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 	// INDICES
 	if (full_rebuild)
 	{
-		mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex, mIndicesCount, true);
+		LLFastTimer t(FTM_FACE_GEOM_INDEX);
+		mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex, mIndicesCount, map_range);
 
 		__m128i* dst = (__m128i*) indicesp.get();
 		__m128i* src = (__m128i*) vf.mIndices;
@@ -1201,7 +1211,10 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 			indicesp[i] = vf.mIndices[i]+index_offset;
 		}
 
-		mVertexBuffer->setBuffer(0);
+		if (map_range)
+		{
+			mVertexBuffer->setBuffer(0);
+		}
 	}
 	
 	LLMatrix4a mat_normal;
@@ -1215,6 +1228,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 
 	if (rebuild_tcoord)
 	{
+		LLFastTimer t(FTM_FACE_GEOM_TEXTURE);
 		bool do_xform;
 			
 		if (tep)
@@ -1422,11 +1436,14 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 				}
 			}
 
-			mVertexBuffer->setBuffer(0);
+			if (map_range)
+			{
+				mVertexBuffer->setBuffer(0);
+			}
 		}
 		else
 		{ //either bump mapped or in atlas, just do the whole expensive loop
-			mVertexBuffer->getTexCoord0Strider(tex_coords, mGeomIndex, mGeomCount, true);
+			mVertexBuffer->getTexCoord0Strider(tex_coords, mGeomIndex, mGeomCount, map_range);
 
 			std::vector<LLVector2> bump_tc;
 		
@@ -1566,12 +1583,14 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 				}
 			}
 
-			mVertexBuffer->setBuffer(0);
-
+			if (map_range)
+			{
+				mVertexBuffer->setBuffer(0);
+			}
 
 			if (do_bump)
 			{
-				mVertexBuffer->getTexCoord1Strider(tex_coords2, mGeomIndex, mGeomCount, true);
+				mVertexBuffer->getTexCoord1Strider(tex_coords2, mGeomIndex, mGeomCount, map_range);
 		
 				for (S32 i = 0; i < num_vertices; i++)
 				{
@@ -1601,14 +1620,20 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 					*tex_coords2++ = tc;
 				}
 
-				mVertexBuffer->setBuffer(0);
+				if (map_range)
+				{
+					mVertexBuffer->setBuffer(0);
+				}
 			}
 		}
 	}
 
 	if (rebuild_pos)
 	{
-		mVertexBuffer->getVertexStrider(vert, mGeomIndex, mGeomCount, true);
+		LLFastTimer t(FTM_FACE_GEOM_POSITION);
+		llassert(num_vertices > 0);
+		
+		mVertexBuffer->getVertexStrider(vert, mGeomIndex, mGeomCount, map_range);
 		vertices = (LLVector4a*) vert.get();
 	
 		LLMatrix4a mat_vert;
@@ -1636,13 +1661,25 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 			index_dst += 4;
 		}
 		while (index_dst < index_end);
-
-		mVertexBuffer->setBuffer(0);
+		
+		S32 aligned_pad_vertices = mGeomCount - num_vertices;
+		LLVector4a* last_vec = end - 1;
+		while (aligned_pad_vertices > 0)
+		{
+			--aligned_pad_vertices;
+			*dst++ = *last_vec;
+		}
+		
+		if (map_range)
+		{
+			mVertexBuffer->setBuffer(0);
+		}
 	}
 		
 	if (rebuild_normal)
 	{
-		mVertexBuffer->getNormalStrider(norm, mGeomIndex, mGeomCount, true);
+		LLFastTimer t(FTM_FACE_GEOM_NORMAL);
+		mVertexBuffer->getNormalStrider(norm, mGeomIndex, mGeomCount, map_range);
 		normals = (LLVector4a*) norm.get();
 	
 		for (S32 i = 0; i < num_vertices; i++)
@@ -1653,12 +1690,16 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 			normals[i] = normal;
 		}
 
-		mVertexBuffer->setBuffer(0);
+		if (map_range)
+		{
+			mVertexBuffer->setBuffer(0);
+		}
 	}
 		
 	if (rebuild_binormal)
 	{
-		mVertexBuffer->getBinormalStrider(binorm, mGeomIndex, mGeomCount, true);
+		LLFastTimer t(FTM_FACE_GEOM_BINORMAL);
+		mVertexBuffer->getBinormalStrider(binorm, mGeomIndex, mGeomCount, map_range);
 		binormals = (LLVector4a*) binorm.get();
 		
 		for (S32 i = 0; i < num_vertices; i++)
@@ -1669,20 +1710,28 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 			binormals[i] = binormal;
 		}
 
-		mVertexBuffer->setBuffer(0);
+		if (map_range)
+		{
+			mVertexBuffer->setBuffer(0);
+		}
 	}
 	
 	if (rebuild_weights && vf.mWeights)
 	{
-		mVertexBuffer->getWeight4Strider(wght, mGeomIndex, mGeomCount, true);
+		LLFastTimer t(FTM_FACE_GEOM_WEIGHTS);
+		mVertexBuffer->getWeight4Strider(wght, mGeomIndex, mGeomCount, map_range);
 		weights = (LLVector4a*) wght.get();
 		LLVector4a::memcpyNonAliased16((F32*) weights, (F32*) vf.mWeights, num_vertices*4*sizeof(F32));
-		mVertexBuffer->setBuffer(0);
+		if (map_range)
+		{
+			mVertexBuffer->setBuffer(0);
+		}
 	}
 
 	if (rebuild_color)
 	{
-		mVertexBuffer->getColorStrider(colors, mGeomIndex, mGeomCount, true);
+		LLFastTimer t(FTM_FACE_GEOM_COLOR);
+		mVertexBuffer->getColorStrider(colors, mGeomIndex, mGeomCount, map_range);
 
 		LLVector4a src;
 
@@ -1703,7 +1752,10 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 			dst[i] = src;
 		}
 
-		mVertexBuffer->setBuffer(0);
+		if (map_range)
+		{
+			mVertexBuffer->setBuffer(0);
+		}
 	}
 
 	if (rebuild_tcoord)
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index 83844048d1d2c14f3877b4131a6354bcc6ddc4ab..0ea0e41dfae9fbff54752eb5ee30f9802fec1f67 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -769,6 +769,10 @@ void LLFeatureManager::applyBaseMasks()
 	{
 		maskFeatures("TexUnit8orLess");
 	}
+	if (gGLManager.mHasMapBufferRange)
+	{
+		maskFeatures("MapBufferRange");
+	}
 
 	// now mask by gpu string
 	// Replaces ' ' with '_' in mGPUString to deal with inability for parser to handle spaces
diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp
index 610142b5a9c63bc51825c8f5cff04c3f09e73be7..5cfdd69f7b6cde8e84d1252c44c961d95fad48c5 100644
--- a/indra/newview/llfloaterbuyland.cpp
+++ b/indra/newview/llfloaterbuyland.cpp
@@ -529,7 +529,7 @@ void LLFloaterBuyLandUI::updateCovenantInfo()
 	LLTextBox* region_type = getChild<LLTextBox>("region_type_text");
 	if (region_type)
 	{
-		region_type->setText(region->getSimProductName());
+		region_type->setText(region->getLocalizedSimProductName());
 	}
 	
 	LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause");
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 9b7593ce615bba15ada99a43c20efc5bcd78a9c0..4746f93009295e937f69219028357237e2ae928b 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -566,10 +566,7 @@ void LLPanelLandGeneral::refresh()
 		if (regionp)
 		{
 			insert_maturity_into_textbox(mContentRating, gFloaterView->getParentFloater(this), MATURITY);
-
-			std::string land_type;
-			bool is_land_type_localized = LLTrans::findString(land_type, regionp->getSimProductName());
-			mLandType->setText(is_land_type_localized ? land_type : regionp->getSimProductName());
+			mLandType->setText(regionp->getLocalizedSimProductName());
 		}
 
 		// estate owner/manager cannot edit other parts of the parcel
@@ -2883,13 +2880,7 @@ void LLPanelLandCovenant::refresh()
 	}
 
 	LLTextBox* region_landtype = getChild<LLTextBox>("region_landtype_text");
-	if (region_landtype)
-	{
-		std::string land_type;
-		bool is_land_type_localized = LLTrans::findString(land_type, region->getSimProductName());
-
-		region_landtype->setText(is_land_type_localized ? land_type : region->getSimProductName());
-	}
+	region_landtype->setText(region->getLocalizedSimProductName());
 	
 	LLTextBox* region_maturity = getChild<LLTextBox>("region_maturity_text");
 	if (region_maturity)
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 538c5e3b884de7997f791585408699921773bcc4..9a99417e9389cd23809f31abed4e745c8dd267f7 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -336,7 +336,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
 	LLViewerRegion* region = gAgent.getRegion();
 	BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate());
 
-	// *TODO: Replace parcing msg with accessing the region info model.
+	// *TODO: Replace parsing msg with accessing the region info model.
 	LLRegionInfoModel& region_info = LLRegionInfoModel::instance();
 
 	// extract message
@@ -368,6 +368,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
 		msg->getSize("RegionInfo2", "ProductName") > 0)
 	{
 		msg->getString("RegionInfo2", "ProductName", sim_type);
+		LLTrans::findString(sim_type, sim_type); // try localizing sim product name
 	}
 
 	// GENERAL PANEL
@@ -2409,11 +2410,7 @@ bool LLPanelEstateCovenant::refreshFromRegion(LLViewerRegion* region)
 	}
 	
 	LLTextBox* region_landtype = getChild<LLTextBox>("region_landtype_text");
-	if (region_landtype)
-	{
-		region_landtype->setText(region->getSimProductName());
-	}
-	
+	region_landtype->setText(region->getLocalizedSimProductName());
 	
 	// let the parent class handle the general data collection. 
 	bool rv = LLPanelRegionInfo::refreshFromRegion(region);
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index eb3c7ee46991a81d8f3643f5d369bf2a4708dd11..d5f0648f3b98edb453e42600c1fa960eb161a3ba 100755
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -70,7 +70,7 @@
 #include "llappviewer.h"
 #include "llmapimagetype.h"
 #include "llweb.h"
-#include "llslider.h"
+#include "llsliderctrl.h"
 #include "message.h"
 #include "llwindow.h"			// copyTextToClipboard()
 #include <algorithm>
@@ -1029,7 +1029,7 @@ void LLFloaterWorldMap::adjustZoomSliderBounds()
 	
 	F32 min_power = log(pixels_per_region/256.f)/log(2.f);
 	
-	getChild<LLSlider>("zoom slider")->setMinValue(min_power);
+	getChild<LLSliderCtrl>("zoom slider")->setMinValue(min_power);
 }
 
 
diff --git a/indra/newview/llhudnametag.cpp b/indra/newview/llhudnametag.cpp
index 82e1f2dfb5ed2ae947e830ef714171ce498686df..482294c8a614bf2aec9ba73251aefadd607cc684 100644
--- a/indra/newview/llhudnametag.cpp
+++ b/indra/newview/llhudnametag.cpp
@@ -477,7 +477,7 @@ void LLHUDNameTag::renderText(BOOL for_select)
 		
 	// Render label
 	{
-		gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+		//gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
 
 		for(std::vector<LLHUDTextSegment>::iterator segment_iter = mLabelSegments.begin();
 			segment_iter != mLabelSegments.end(); ++segment_iter )
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 75d4c4e80d4b6da20f7c62c6bfb381df38ce3c06..9f093b8a34497f0f6fac08b36cc9cd704b1e54b0 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -2514,6 +2514,11 @@ void LLFolderBridge::folderOptionsMenu()
 		}
 	}
 
+	if (!isItemRemovable())
+	{
+		disabled_items.push_back(std::string("Delete"));
+	}
+
 #ifndef LL_RELEASE_FOR_DOWNLOAD
 	if (LLFolderType::lookupIsProtectedType(type))
 	{
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index 8d8d9bc1c4452247dec00b9e3dcae314beff3a7a..eddd6e554dd0fe04fd230ea7fb415f8970427af0 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -35,6 +35,7 @@
 #include "llqueryflags.h"
 
 #include "llagent.h"
+#include "lldateutil.h"
 #include "lliconctrl.h"
 #include "llfloaterreg.h"
 #include "lllineeditor.h"
@@ -1056,6 +1057,14 @@ void LLGroupMoneyDetailsTabEventHandler::processReply(LLMessageSystem* msg,
 	msg->getS32Fast(_PREHASH_MoneyData, _PREHASH_CurrentInterval, current_interval );
 	msg->getStringFast(_PREHASH_MoneyData, _PREHASH_StartDate, start_date);
 
+	std::string time_str = LLTrans::getString("GroupMoneyDate");
+	LLSD substitution;
+
+	// We don't do time zone corrections of the calculated number of seconds
+	// because we don't have a full time stamp, only a date.
+	substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%A %b %d, %Y", start_date);
+	LLStringUtil::format (time_str, substitution);
+
 	if ( interval_days != mImplementationp->mIntervalLength || 
 		 current_interval != mImplementationp->mCurrentInterval )
 	{
@@ -1064,7 +1073,7 @@ void LLGroupMoneyDetailsTabEventHandler::processReply(LLMessageSystem* msg,
 		return;
 	}
 
-	std::string text = start_date;
+	std::string text = time_str;
 	text.append("\n\n");
 
 	S32 total_amount = 0;
@@ -1203,7 +1212,15 @@ void LLGroupMoneySalesTabEventHandler::processReply(LLMessageSystem* msg,
 	// Start with the date.
 	if (text == mImplementationp->mLoadingText)
 	{
-		text = start_date + "\n\n";
+		std::string time_str = LLTrans::getString("GroupMoneyDate");
+		LLSD substitution;
+
+		// We don't do time zone corrections of the calculated number of seconds
+		// because we don't have a full time stamp, only a date.
+		substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%A %b %d, %Y", start_date);
+		LLStringUtil::format (time_str, substitution);
+
+		text = time_str + "\n\n";
 	}
 
 	S32 transactions = msg->getNumberOfBlocksFast(_PREHASH_HistoryData);
@@ -1408,12 +1425,26 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
 	}
 
 	text.append(LLTrans::getString("SummaryForTheWeek"));
-	text.append(start_date);
+
+	std::string date_format_str = LLTrans::getString("GroupPlanningDate");
+	std::string time_str = date_format_str;
+	LLSD substitution;
+	// We don't do time zone corrections of the calculated number of seconds
+	// because we don't have a full time stamp, only a date.
+	substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", start_date);
+	LLStringUtil::format (time_str, substitution);
+
+	text.append(time_str);
 
 	if (current_interval == 0)
 	{
 		text.append(LLTrans::getString("NextStipendDay"));
-		text.append(next_stipend_date);
+
+		time_str = date_format_str;
+		substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", next_stipend_date);
+		LLStringUtil::format (time_str, substitution);
+
+		text.append(time_str);
 		text.append("\n\n");
 		text.append(llformat("%-24sL$%6d\n", LLTrans::getString("GroupMoneyBalance").c_str(), balance ));
 		text.append(1, '\n');
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index 1e9ce582373d692c5f5dbe986b327c9a6f7ff611..ce8057eeaddd74746192e9c2130466569081b133 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -32,6 +32,7 @@
 #include "llparcel.h"
 #include "message.h"
 
+#include "llexpandabletextbox.h"
 #include "lliconctrl.h"
 #include "lllineeditor.h"
 #include "lltextbox.h"
@@ -227,6 +228,34 @@ void LLPanelPlaceProfile::setInfoType(EInfoType type)
 
 	getChild<LLAccordionCtrl>("advanced_info_accordion")->setVisible(is_info_type_agent);
 
+	// If we came from search we want larger description area, approx. 10 lines (see STORM-1311).
+	// Don't use the maximum available space because that leads to nasty artifacts
+	// in text editor and expandable text box.
+	{
+		const S32 SEARCH_DESC_HEIGHT = 150;
+
+		// Remember original geometry (once).
+		static const S32 sOrigDescVPad = getChildView("parcel_title")->getRect().mBottom - mDescEditor->getRect().mTop;
+		static const S32 sOrigDescHeight = mDescEditor->getRect().getHeight();
+		static const S32 sOrigMRIconVPad = mDescEditor->getRect().mBottom - mMaturityRatingIcon->getRect().mTop;
+		static const S32 sOrigMRTextVPad = mDescEditor->getRect().mBottom - mMaturityRatingText->getRect().mTop;
+
+		// Resize the description.
+		const S32 desc_height = is_info_type_agent ? sOrigDescHeight : SEARCH_DESC_HEIGHT;
+		const S32 desc_top = getChildView("parcel_title")->getRect().mBottom - sOrigDescVPad;
+		LLRect desc_rect = mDescEditor->getRect();
+		desc_rect.setOriginAndSize(desc_rect.mLeft, desc_top - desc_height, desc_rect.getWidth(), desc_height);
+		mDescEditor->reshape(desc_rect.getWidth(), desc_rect.getHeight());
+		mDescEditor->setRect(desc_rect);
+		mDescEditor->updateTextShape();
+
+		// Move the maturity rating icon/text accordingly.
+		const S32 mr_icon_bottom = mDescEditor->getRect().mBottom - sOrigMRIconVPad - mMaturityRatingIcon->getRect().getHeight();
+		const S32 mr_text_bottom = mDescEditor->getRect().mBottom - sOrigMRTextVPad - mMaturityRatingText->getRect().getHeight();
+		mMaturityRatingIcon->setOrigin(mMaturityRatingIcon->getRect().mLeft, mr_icon_bottom);
+		mMaturityRatingText->setOrigin(mMaturityRatingText->getRect().mLeft, mr_text_bottom);
+	}
+
 	switch(type)
 	{
 		case AGENT:
@@ -434,7 +463,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 	}
 
 	mRegionNameText->setText(region->getName());
-	mRegionTypeText->setText(region->getSimProductName());
+	mRegionTypeText->setText(region->getLocalizedSimProductName());
 
 	// Determine parcel owner
 	if (parcel->isPublic())
diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp
index 4a80bbbe5ef7d175193adcaf381eab8b78596ef8..6be2ea6481cc0fa5e8563173fe23c6307c214f79 100644
--- a/indra/newview/llpanelvoicedevicesettings.cpp
+++ b/indra/newview/llpanelvoicedevicesettings.cpp
@@ -41,6 +41,7 @@
 
 
 static LLRegisterPanelClassWrapper<LLPanelVoiceDeviceSettings> t_panel_group_general("panel_voice_device_settings");
+static const std::string DEFAULT_DEVICE("Default");
 
 
 LLPanelVoiceDeviceSettings::LLPanelVoiceDeviceSettings()
@@ -68,10 +69,17 @@ BOOL LLPanelVoiceDeviceSettings::postBuild()
 	// set mic volume tuning slider based on last mic volume setting
 	volume_slider->setValue(mMicVolume);
 
-	getChild<LLComboBox>("voice_input_device")->setCommitCallback(
+	mCtrlInputDevices = getChild<LLComboBox>("voice_input_device");
+	mCtrlOutputDevices = getChild<LLComboBox>("voice_output_device");
+
+	mCtrlInputDevices->setCommitCallback(
 		boost::bind(&LLPanelVoiceDeviceSettings::onCommitInputDevice, this));
-	getChild<LLComboBox>("voice_output_device")->setCommitCallback(
+	mCtrlOutputDevices->setCommitCallback(
 		boost::bind(&LLPanelVoiceDeviceSettings::onCommitOutputDevice, this));
+
+	mLocalizedDeviceNames[DEFAULT_DEVICE]				= getString("default_text");
+	mLocalizedDeviceNames["No Device"]					= getString("name_no_device");
+	mLocalizedDeviceNames["Default System Device"]		= getString("name_default_system_device");
 	
 	return TRUE;
 }
@@ -138,14 +146,14 @@ void LLPanelVoiceDeviceSettings::apply()
 	std::string s;
 	if(mCtrlInputDevices)
 	{
-		s = mCtrlInputDevices->getSimple();
+		s = mCtrlInputDevices->getValue().asString();
 		gSavedSettings.setString("VoiceInputAudioDevice", s);
 		mInputDevice = s;
 	}
 
 	if(mCtrlOutputDevices)
 	{
-		s = mCtrlOutputDevices->getSimple();
+		s = mCtrlOutputDevices->getValue().asString();
 		gSavedSettings.setString("VoiceOutputAudioDevice", s);
 		mOutputDevice = s;
 	}
@@ -166,10 +174,10 @@ void LLPanelVoiceDeviceSettings::cancel()
 	gSavedSettings.setString("VoiceOutputAudioDevice", mOutputDevice);
 
 	if(mCtrlInputDevices)
-		mCtrlInputDevices->setSimple(mInputDevice);
+		mCtrlInputDevices->setValue(mInputDevice);
 
 	if(mCtrlOutputDevices)
-		mCtrlOutputDevices->setSimple(mOutputDevice);
+		mCtrlOutputDevices->setValue(mOutputDevice);
 
 	gSavedSettings.setF32("AudioLevelMic", mMicVolume);
 	LLSlider* volume_slider = getChild<LLSlider>("mic_volume_slider");
@@ -188,9 +196,6 @@ void LLPanelVoiceDeviceSettings::refresh()
 	LLVoiceClient::getInstance()->tuningSetMicVolume(current_volume);
 
 	// Fill in popup menus
-	mCtrlInputDevices = getChild<LLComboBox>("voice_input_device");
-	mCtrlOutputDevices = getChild<LLComboBox>("voice_output_device");
-
 	bool device_settings_available = LLVoiceClient::getInstance()->deviceSettingsAvailable();
 
 	if (mCtrlInputDevices)
@@ -212,14 +217,14 @@ void LLPanelVoiceDeviceSettings::refresh()
 		if(mCtrlInputDevices)
 		{
 			mCtrlInputDevices->removeall();
-			mCtrlInputDevices->add( mInputDevice, ADD_BOTTOM );
-			mCtrlInputDevices->setSimple(mInputDevice);
+			mCtrlInputDevices->add(getLocalizedDeviceName(mInputDevice), mInputDevice, ADD_BOTTOM);
+			mCtrlInputDevices->setValue(mInputDevice);
 		}
 		if(mCtrlOutputDevices)
 		{
 			mCtrlOutputDevices->removeall();
-			mCtrlOutputDevices->add( mOutputDevice, ADD_BOTTOM );
-			mCtrlOutputDevices->setSimple(mOutputDevice);
+			mCtrlOutputDevices->add(getLocalizedDeviceName(mOutputDevice), mOutputDevice, ADD_BOTTOM);
+			mCtrlOutputDevices->setValue(mOutputDevice);
 		}
 		mDevicesUpdated = FALSE;
 	}
@@ -230,35 +235,41 @@ void LLPanelVoiceDeviceSettings::refresh()
 		if(mCtrlInputDevices)
 		{
 			mCtrlInputDevices->removeall();
-			mCtrlInputDevices->add( getString("default_text"), ADD_BOTTOM );
+			mCtrlInputDevices->add(getLocalizedDeviceName(DEFAULT_DEVICE), DEFAULT_DEVICE, ADD_BOTTOM);
 
 			for(iter=LLVoiceClient::getInstance()->getCaptureDevices().begin(); 
 				iter != LLVoiceClient::getInstance()->getCaptureDevices().end();
 				iter++)
 			{
-				mCtrlInputDevices->add( *iter, ADD_BOTTOM );
+				mCtrlInputDevices->add(getLocalizedDeviceName(*iter), *iter, ADD_BOTTOM);
 			}
 
-			if(!mCtrlInputDevices->setSimple(mInputDevice))
+			// Fix invalid input audio device preference.
+			if (!mCtrlInputDevices->setSelectedByValue(mInputDevice, TRUE))
 			{
-				mCtrlInputDevices->setSimple(getString("default_text"));
+				mCtrlInputDevices->setValue(DEFAULT_DEVICE);
+				gSavedSettings.setString("VoiceInputAudioDevice", DEFAULT_DEVICE);
+				mInputDevice = DEFAULT_DEVICE;
 			}
 		}
 		
 		if(mCtrlOutputDevices)
 		{
 			mCtrlOutputDevices->removeall();
-			mCtrlOutputDevices->add( getString("default_text"), ADD_BOTTOM );
+			mCtrlOutputDevices->add(getLocalizedDeviceName(DEFAULT_DEVICE), DEFAULT_DEVICE, ADD_BOTTOM);
 
 			for(iter= LLVoiceClient::getInstance()->getRenderDevices().begin(); 
 				iter !=  LLVoiceClient::getInstance()->getRenderDevices().end(); iter++)
 			{
-				mCtrlOutputDevices->add( *iter, ADD_BOTTOM );
+				mCtrlOutputDevices->add(getLocalizedDeviceName(*iter), *iter, ADD_BOTTOM);
 			}
 
-			if(!mCtrlOutputDevices->setSimple(mOutputDevice))
+			// Fix invalid output audio device preference.
+			if (!mCtrlOutputDevices->setSelectedByValue(mOutputDevice, TRUE))
 			{
-				mCtrlOutputDevices->setSimple(getString("default_text"));
+				mCtrlOutputDevices->setValue(DEFAULT_DEVICE);
+				gSavedSettings.setString("VoiceOutputAudioDevice", DEFAULT_DEVICE);
+				mOutputDevice = DEFAULT_DEVICE;
 			}
 		}
 		mDevicesUpdated = TRUE;
@@ -292,12 +303,19 @@ void LLPanelVoiceDeviceSettings::cleanup()
 	}
 }
 
+// returns English name if no translation found
+std::string LLPanelVoiceDeviceSettings::getLocalizedDeviceName(const std::string& en_dev_name)
+{
+	std::map<std::string, std::string>::const_iterator it = mLocalizedDeviceNames.find(en_dev_name);
+	return it != mLocalizedDeviceNames.end() ? it->second : en_dev_name;
+}
+
 void LLPanelVoiceDeviceSettings::onCommitInputDevice()
 {
 	if(LLVoiceClient::getInstance())
 	{
 		LLVoiceClient::getInstance()->setCaptureDevice(
-			getChild<LLComboBox>("voice_input_device")->getValue().asString());
+			mCtrlInputDevices->getValue().asString());
 	}
 }
 
@@ -306,6 +324,6 @@ void LLPanelVoiceDeviceSettings::onCommitOutputDevice()
 	if(LLVoiceClient::getInstance())
 	{
 		LLVoiceClient::getInstance()->setRenderDevice(
-			getChild<LLComboBox>("voice_output_device")->getValue().asString());
+			mCtrlInputDevices->getValue().asString());
 	}
 }
diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h
index d09476d469742d94ae3d6c69ccb9b9c17b58269a..ba3bcad0dc2c486af8fbc83840df51b23bd23a8c 100644
--- a/indra/newview/llpanelvoicedevicesettings.h
+++ b/indra/newview/llpanelvoicedevicesettings.h
@@ -49,6 +49,8 @@ class LLPanelVoiceDeviceSettings : public LLPanel
 	void setUseTuningMode(bool use) { mUseTuningMode = use; };
 	
 protected:
+	std::string getLocalizedDeviceName(const std::string& en_dev_name);
+
 	void onCommitInputDevice();
 	void onCommitOutputDevice();
 
@@ -59,6 +61,7 @@ class LLPanelVoiceDeviceSettings : public LLPanel
 	class LLComboBox		*mCtrlOutputDevices;
 	BOOL mDevicesUpdated;
 	bool mUseTuningMode;
+	std::map<std::string, std::string> mLocalizedDeviceNames;
 };
 
 #endif // LL_LLPANELVOICEDEVICESETTINGS_H
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index f99afa923b9a4275f02eb9651b84fb1e3f4a6a58..e23b431457470e1a3ef5fc699a8019b1486a9b55 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -47,6 +47,7 @@
 #include "llvoavatar.h"
 #include "llvolumemgr.h"
 #include "lltextureatlas.h"
+#include "llglslshader.h"
 
 static LLFastTimer::DeclareTimer FTM_FRUSTUM_CULL("Frustum Culling");
 static LLFastTimer::DeclareTimer FTM_CULL_REBOUND("Cull Rebound");
@@ -3176,6 +3177,8 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 				glColor4fv(line_color.mV);
 				LLVertexBuffer::unbind();
 
+				llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShader != 0);
+
 				glVertexPointer(3, GL_FLOAT, 16, phys_volume->mHullPoints);
 				glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);
 				
@@ -3257,7 +3260,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 		if (phys_volume->mHullPoints && phys_volume->mHullIndices)
 		{
 			glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-			
+			llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShader != 0);
 			LLVertexBuffer::unbind();
 			glVertexPointer(3, GL_FLOAT, 16, phys_volume->mHullPoints);
 			glColor4fv(line_color.mV);
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index bd41aa64f0a6df82afab3b367e54d6218a2b7398..e8abee2fb76c07d55ef61f92ca5642f3792d6010 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -45,6 +45,7 @@
 #include "llagentwearables.h"
 #include "llwearable.h"
 #include "llviewercontrol.h"
+#include "llviewershadermgr.h"
 #include "llviewervisualparam.h"
 
 //#include "../tools/imdebug/imdebug.h"
@@ -294,11 +295,17 @@ BOOL LLTexLayerSetBuffer::render()
 	
 	BOOL success = TRUE;
 
+	//hack to use fixed function when updating tex layer sets
+	bool no_ff = LLGLSLShader::sNoFixedFunction;
+	LLGLSLShader::sNoFixedFunction = false;
+	
 	// Composite the color data
 	LLGLSUIDefault gls_ui;
 	success &= mTexLayerSet->render( mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight );
 	gGL.flush();
 
+	LLGLSLShader::sNoFixedFunction = no_ff;
+	
 	if(upload_now)
 	{
 		if (!success)
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 911fc8e1ed56ebcd5d660b054db753ed92c498ca..39053fe9e4b2889545f93311b363666c6add65b2 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -616,6 +616,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 				&& LLFeatureManager::getInstance()->isFeatureAvailable("UseOcclusion") 
 				&& gSavedSettings.getBOOL("UseOcclusion") 
 				&& gGLManager.mHasOcclusionQuery) ? 2 : 0;
+		LLTexUnit::sWhiteTexture = LLViewerFetchedTexture::sWhiteImagep->getTexName();
 
 		/*if (LLPipeline::sUseOcclusion && LLPipeline::sRenderDeferred)
 		{ //force occlusion on for all render types if doing deferred render (tighter shadow frustum)
@@ -709,6 +710,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
 		}
 
+		LLGLState::checkStates();
+		LLGLState::checkClientArrays();
+
 		//if (!for_snapshot)
 		{
 			LLMemType mt_gw(LLMemType::MTYPE_DISPLAY_GEN_REFLECTION);
@@ -717,6 +721,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			gPipeline.generateHighlight(*LLViewerCamera::getInstance());
 		}
 
+		LLGLState::checkStates();
+		LLGLState::checkClientArrays();
+
 		//////////////////////////////////////
 		//
 		// Update images, using the image stats generated during object update/culling
@@ -743,6 +750,10 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			LLImageGL::deleteDeadTextures();
 			stop_glerror();
 		}
+
+		LLGLState::checkStates();
+		LLGLState::checkClientArrays();
+
 		///////////////////////////////////
 		//
 		// StateSort
@@ -770,6 +781,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			}
 		}
 
+		LLGLState::checkStates();
+		LLGLState::checkClientArrays();
+
 		LLPipeline::sUseOcclusion = occlusion;
 
 		{
@@ -828,6 +842,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 		LLPipeline::sUnderWaterRender = LLViewerCamera::getInstance()->cameraUnderWater() ? TRUE : FALSE;
 		LLPipeline::refreshRenderDeferred();
 		
+		LLGLState::checkStates();
+		LLGLState::checkClientArrays();
+
 		stop_glerror();
 
 		if (to_texture)
@@ -878,6 +895,14 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			stop_glerror();
 		}
 
+		for (U32 i = 0; i < gGLManager.mNumTextureImageUnits; i++)
+		{ //dummy cleanup of any currently bound textures
+			if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE)
+			{
+				gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType());
+				gGL.getTexUnit(i)->disable();
+			}
+		}
 		LLAppViewer::instance()->pingMainloopTimeout("Display:RenderFlush");		
 		
 		if (to_texture)
@@ -1339,7 +1364,7 @@ void render_ui_2d()
 	}
 
 	stop_glerror();
-	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+	//gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
 
 	// render outline for HUD
 	if (isAgentAvatarValid() && gAgentCamera.mHUDCurZoom < 0.98f)
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 22666cec0d59b9893a13ff46aa06a05eb815e189..c532346e6b1f74f51f84d1740e2e5580d0e6e91e 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -418,6 +418,9 @@ void LLViewerInventoryItem::fetchFromServer(void) const
 BOOL LLViewerInventoryItem::unpackMessage(LLSD item)
 {
 	BOOL rv = LLInventoryItem::fromLLSD(item);
+
+	LLLocalizedInventoryItemsDictionary::getInstance()->localizeInventoryObjectName(mName);
+
 	mIsComplete = TRUE;
 	return rv;
 }
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index a37f8ad0d8c017e5be2482e0b57d2df8cb2c4aa1..f74bcafc5c530c9353c02f0b4b9e0a21c45cd7d0 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -44,6 +44,7 @@
 #include "llbottomtray.h"
 #include "llcompilequeue.h"
 #include "llconsole.h"
+#include "lldaycyclemanager.h"
 #include "lldebugview.h"
 #include "llenvmanager.h"
 #include "llfilepicker.h"
@@ -100,6 +101,7 @@
 #include "llworldmap.h"
 #include "pipeline.h"
 #include "llviewerjoystick.h"
+#include "llwaterparammanager.h"
 #include "llwlanimator.h"
 #include "llwlparammanager.h"
 #include "llfloatercamera.h"
@@ -7667,6 +7669,40 @@ class LLWorldEnvPreset : public view_listener_t
 	}
 };
 
+class LLWorldEnableEnvPreset : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		std::string item = userdata.asString();
+
+		if (item == "delete_water")
+		{
+			LLWaterParamManager::preset_name_list_t user_waters;
+			LLWaterParamManager::instance().getUserPresetNames(user_waters);
+			return !user_waters.empty();
+		}
+		else if (item == "delete_sky")
+		{
+			LLWLParamManager::preset_name_list_t user_skies;
+			LLWLParamManager::instance().getUserPresetNames(user_skies);
+			return !user_skies.empty();
+		}
+		else if (item == "delete_day_cycle")
+		{
+			LLDayCycleManager::preset_name_list_t user_days;
+			LLDayCycleManager::instance().getUserPresetNames(user_days);
+			return !user_days.empty();
+		}
+		else
+		{
+			llwarns << "Unknown item" << llendl;
+		}
+
+		return false;
+	}
+};
+
+
 /// Post-Process callbacks
 class LLWorldPostProcess : public view_listener_t
 {
@@ -7906,6 +7942,7 @@ void initialize_menus()
 	
 	view_listener_t::addMenu(new LLWorldEnvSettings(), "World.EnvSettings");
 	view_listener_t::addMenu(new LLWorldEnvPreset(), "World.EnvPreset");
+	view_listener_t::addMenu(new LLWorldEnableEnvPreset(), "World.EnableEnvPreset");
 	view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess");
 
 	view_listener_t::addMenu(new LLWorldToggleMovementControls(), "World.Toggle.MovementControls");
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index 9f882ee73276baadc9bba275194bb7089b5409cc..48ccc7d0354d078f902ddfcdd05f7be19f3fd230 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -1339,18 +1339,29 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer)
 
 	S32 num_removed = 0;
 	LLViewerObject *objectp;
-	for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); )
+	
+	vobj_list_t::reverse_iterator target = mObjects.rbegin();
+
+	vobj_list_t::iterator iter = mObjects.begin();
+	for ( ; iter != mObjects.end(); )
 	{
-		// Scan for all of the dead objects and remove any "global" references to them.
+		// Scan for all of the dead objects and put them all on the end of the list with no ref count ops
 		objectp = *iter;
+		if (objectp == NULL)
+		{ //we caught up to the dead tail
+			break;
+		}
+
 		if (objectp->isDead())
 		{
-			iter = mObjects.erase(iter);
+			LLPointer<LLViewerObject>::swap(*iter, *target);
+			*target = NULL;
+			++target;
 			num_removed++;
 
-			if (num_removed == mNumDeadObjects)
+			if (num_removed == mNumDeadObjects || iter->isNull())
 			{
-				// We've cleaned up all of the dead objects.
+				// We've cleaned up all of the dead objects or caught up to the dead tail
 				break;
 			}
 		}
@@ -1360,6 +1371,11 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer)
 		}
 	}
 
+	llassert(num_removed == mNumDeadObjects);
+
+	//erase as a block
+	mObjects.erase(mObjects.begin()+(mObjects.size()-mNumDeadObjects), mObjects.end());
+
 	// We've cleaned the global object list, now let's do some paranoia testing on objects
 	// before blowing away the dead list.
 	mDeadObjects.clear();
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index bb7170e0f73959a5c2271c6ddb522b2cb09429a1..d4e0831c333c2dc0692b7eb0e4736383e63ad7f7 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -558,6 +558,11 @@ const std::string LLViewerRegion::getSimAccessString() const
 	return accessToString(mSimAccess);
 }
 
+std::string LLViewerRegion::getLocalizedSimProductName() const
+{
+	std::string localized_spn;
+	return LLTrans::findString(localized_spn, mProductName) ? localized_spn : mProductName;
+}
 
 // static
 std::string LLViewerRegion::regionFlagsToString(U32 flags)
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index f68b51ea658d436eecb9bfb4a9def61cc7c53360..a105ff625d0c0cde9d0518aabdf060df3e3a2408 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -192,7 +192,7 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	S32 getSimCPURatio()                   const { return mCPURatio; }
 	const std::string& getSimColoName()    const { return mColoName; }
 	const std::string& getSimProductSKU()  const { return mProductSKU; }
-	const std::string& getSimProductName() const { return mProductName; }
+	std::string getLocalizedSimProductName() const;
 
 	// Returns "Sandbox", "Expensive", etc.
 	static std::string regionFlagsToString(U32 flags);
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index e473901609c0b1d9fc70e78cc89949a33bf82d58..62d83b516fb820be71eb7e275b0423aff5631a4a 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -61,6 +61,12 @@ BOOL				LLViewerShaderMgr::sInitialized = FALSE;
 
 LLVector4			gShinyOrigin;
 
+//utility shaders
+LLGLSLShader	gOcclusionProgram;
+LLGLSLShader	gCustomAlphaProgram;
+LLGLSLShader	gGlowCombineProgram;
+LLGLSLShader	gTwoTextureAddProgram;
+
 //object shaders
 LLGLSLShader		gObjectSimpleProgram;
 LLGLSLShader		gObjectSimpleWaterProgram;
@@ -70,6 +76,7 @@ LLGLSLShader		gObjectFullbrightShinyProgram;
 LLGLSLShader		gObjectFullbrightShinyWaterProgram;
 LLGLSLShader		gObjectShinyProgram;
 LLGLSLShader		gObjectShinyWaterProgram;
+LLGLSLShader		gObjectBumpProgram;
 
 LLGLSLShader		gObjectSimpleNonIndexedProgram;
 LLGLSLShader		gObjectSimpleNonIndexedWaterProgram;
@@ -166,14 +173,24 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
 	mShaderList.push_back(&gWLCloudProgram);
 	mShaderList.push_back(&gAvatarProgram);
 	mShaderList.push_back(&gObjectShinyProgram);
+	mShaderList.push_back(&gObjectShinyNonIndexedProgram);
 	mShaderList.push_back(&gWaterProgram);
 	mShaderList.push_back(&gAvatarEyeballProgram); 
 	mShaderList.push_back(&gObjectSimpleProgram);
+	mShaderList.push_back(&gObjectBumpProgram);
+	mShaderList.push_back(&gUIProgram);
+	mShaderList.push_back(&gCustomAlphaProgram);
+	mShaderList.push_back(&gGlowCombineProgram);
+	mShaderList.push_back(&gTwoTextureAddProgram);
+	mShaderList.push_back(&gSolidColorProgram);
+	mShaderList.push_back(&gOcclusionProgram);
 	mShaderList.push_back(&gObjectFullbrightProgram);
 	mShaderList.push_back(&gObjectFullbrightShinyProgram);
 	mShaderList.push_back(&gObjectFullbrightShinyWaterProgram);
 	mShaderList.push_back(&gObjectSimpleNonIndexedProgram);
+	mShaderList.push_back(&gObjectSimpleNonIndexedWaterProgram);
 	mShaderList.push_back(&gObjectFullbrightNonIndexedProgram);
+	mShaderList.push_back(&gObjectFullbrightNonIndexedWaterProgram);
 	mShaderList.push_back(&gObjectFullbrightShinyNonIndexedProgram);
 	mShaderList.push_back(&gObjectFullbrightShinyNonIndexedWaterProgram);
 	mShaderList.push_back(&gSkinnedObjectSimpleProgram);
@@ -190,6 +207,7 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
 	mShaderList.push_back(&gObjectFullbrightWaterProgram);
 	mShaderList.push_back(&gAvatarWaterProgram);
 	mShaderList.push_back(&gObjectShinyWaterProgram);
+	mShaderList.push_back(&gObjectShinyNonIndexedWaterProgram);
 	mShaderList.push_back(&gUnderWaterProgram);
 	mShaderList.push_back(&gDeferredSunProgram);
 	mShaderList.push_back(&gDeferredBlurLightProgram);
@@ -410,9 +428,13 @@ void LLViewerShaderMgr::setShaders()
 	}
 	mMaxAvatarShaderLevel = 0;
 
+	LLGLSLShader::sNoFixedFunction = false;
 	if (LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable") 
 		&& gSavedSettings.getBOOL("VertexShaderEnable"))
 	{
+		//using shaders, disable fixed function
+		LLGLSLShader::sNoFixedFunction = true;
+
 		S32 light_class = 2;
 		S32 env_class = 2;
 		S32 obj_class = 2;
@@ -554,6 +576,7 @@ void LLViewerShaderMgr::setShaders()
 		}
 		else
 		{
+			LLGLSLShader::sNoFixedFunction = false;
 			gPipeline.mVertexShadersEnabled = FALSE;
 			gPipeline.mVertexShadersLoaded = 0;
 			mVertexShaderLevel[SHADER_LIGHTING] = 0;
@@ -568,6 +591,7 @@ void LLViewerShaderMgr::setShaders()
 	}
 	else
 	{
+		LLGLSLShader::sNoFixedFunction = false;
 		gPipeline.mVertexShadersEnabled = FALSE;
 		gPipeline.mVertexShadersLoaded = 0;
 		mVertexShaderLevel[SHADER_LIGHTING] = 0;
@@ -591,7 +615,15 @@ void LLViewerShaderMgr::setShaders()
 
 void LLViewerShaderMgr::unloadShaders()
 {
+	gOcclusionProgram.unload();
+	gUIProgram.unload();
+	gCustomAlphaProgram.unload();
+	gGlowCombineProgram.unload();
+	gTwoTextureAddProgram.unload();
+	gSolidColorProgram.unload();
+
 	gObjectSimpleProgram.unload();
+	gObjectBumpProgram.unload();
 	gObjectSimpleWaterProgram.unload();
 	gObjectFullbrightProgram.unload();
 	gObjectFullbrightWaterProgram.unload();
@@ -1581,6 +1613,7 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		gObjectFullbrightShinyWaterProgram.unload();
 		gObjectShinyWaterProgram.unload();
 		gObjectSimpleProgram.unload();
+		gObjectBumpProgram.unload();
 		gObjectSimpleWaterProgram.unload();
 		gObjectFullbrightProgram.unload();
 		gObjectFullbrightWaterProgram.unload();
@@ -1751,6 +1784,22 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		success = gObjectSimpleProgram.createShader(NULL, NULL);
 	}
 	
+	if (success)
+	{
+		gObjectBumpProgram.mName = "Bump Shader";
+		/*gObjectBumpProgram.mFeatures.calculatesLighting = true;
+		gObjectBumpProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectBumpProgram.mFeatures.hasGamma = true;
+		gObjectBumpProgram.mFeatures.hasAtmospherics = true;
+		gObjectBumpProgram.mFeatures.hasLighting = true;
+		gObjectBumpProgram.mFeatures.mIndexedTextureChannels = 0;*/
+		gObjectBumpProgram.mShaderFiles.clear();
+		gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectBumpProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		success = gObjectBumpProgram.createShader(NULL, NULL);
+	}
+	
 	if (success)
 	{
 		gObjectSimpleWaterProgram.mName = "Simple Water Shader";
@@ -2135,6 +2184,85 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
 		success = gHighlightProgram.createShader(NULL, NULL);
 	}
 
+	if (success)
+	{
+		gUIProgram.mName = "UI Shader";
+		gUIProgram.mShaderFiles.clear();
+		gUIProgram.mShaderFiles.push_back(make_pair("interface/uiV.glsl", GL_VERTEX_SHADER_ARB));
+		gUIProgram.mShaderFiles.push_back(make_pair("interface/uiF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gUIProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gUIProgram.createShader(NULL, NULL);
+	}
+
+	if (success)
+	{
+		gCustomAlphaProgram.mName = "Custom Alpha Shader";
+		gCustomAlphaProgram.mShaderFiles.clear();
+		gCustomAlphaProgram.mShaderFiles.push_back(make_pair("interface/customalphaV.glsl", GL_VERTEX_SHADER_ARB));
+		gCustomAlphaProgram.mShaderFiles.push_back(make_pair("interface/customalphaF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gCustomAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gCustomAlphaProgram.createShader(NULL, NULL);
+	}
+
+	if (success)
+	{
+		gGlowCombineProgram.mName = "Glow Combine Shader";
+		gGlowCombineProgram.mShaderFiles.clear();
+		gGlowCombineProgram.mShaderFiles.push_back(make_pair("interface/glowcombineV.glsl", GL_VERTEX_SHADER_ARB));
+		gGlowCombineProgram.mShaderFiles.push_back(make_pair("interface/glowcombineF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gGlowCombineProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gGlowCombineProgram.createShader(NULL, NULL);
+		if (success)
+		{
+			gGlowCombineProgram.bind();
+			gGlowCombineProgram.uniform1i("glowMap", 0);
+			gGlowCombineProgram.uniform1i("screenMap", 1);
+			gGlowCombineProgram.unbind();
+		}
+	}
+
+	if (success)
+	{
+		gTwoTextureAddProgram.mName = "Two Texture Add Shader";
+		gTwoTextureAddProgram.mShaderFiles.clear();
+		gTwoTextureAddProgram.mShaderFiles.push_back(make_pair("interface/twotextureaddV.glsl", GL_VERTEX_SHADER_ARB));
+		gTwoTextureAddProgram.mShaderFiles.push_back(make_pair("interface/twotextureaddF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gTwoTextureAddProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gTwoTextureAddProgram.createShader(NULL, NULL);
+		if (success)
+		{
+			gTwoTextureAddProgram.bind();
+			gTwoTextureAddProgram.uniform1i("tex0", 0);
+			gTwoTextureAddProgram.uniform1i("tex1", 1);
+		}
+	}
+
+	if (success)
+	{
+		gSolidColorProgram.mName = "Solid Color Shader";
+		gSolidColorProgram.mShaderFiles.clear();
+		gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorV.glsl", GL_VERTEX_SHADER_ARB));
+		gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gSolidColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gSolidColorProgram.createShader(NULL, NULL);
+		if (success)
+		{
+			gSolidColorProgram.bind();
+			gSolidColorProgram.uniform1i("tex0", 0);
+			gSolidColorProgram.unbind();
+		}
+	}
+
+	if (success)
+	{
+		gOcclusionProgram.mName = "Occlusion Shader";
+		gOcclusionProgram.mShaderFiles.clear();
+		gOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionV.glsl", GL_VERTEX_SHADER_ARB));
+		gOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gOcclusionProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gOcclusionProgram.createShader(NULL, NULL);
+	}
+
 	if( !success )
 	{
 		mVertexShaderLevel[SHADER_INTERFACE] = 0;
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
index efef9ec5b272a20ac52f374742e11e7d6c3b2293..93a0ecc4f04307cc4aad5fc5d0f197692142e3b1 100644
--- a/indra/newview/llviewershadermgr.h
+++ b/indra/newview/llviewershadermgr.h
@@ -287,6 +287,14 @@ inline bool operator != (LLViewerShaderMgr::shader_iter const & a, LLViewerShade
 
 extern LLVector4			gShinyOrigin;
 
+//utility shaders
+extern LLGLSLShader			gOcclusionProgram;
+extern LLGLSLShader			gCustomAlphaProgram;
+extern LLGLSLShader			gGlowCombineProgram;
+
+//output tex0[tc0] + tex1[tc1]
+extern LLGLSLShader			gTwoTextureAddProgram;
+								
 //object shaders
 extern LLGLSLShader			gObjectSimpleProgram;
 extern LLGLSLShader			gObjectSimpleWaterProgram;
@@ -296,6 +304,7 @@ extern LLGLSLShader			gObjectFullbrightProgram;
 extern LLGLSLShader			gObjectFullbrightWaterProgram;
 extern LLGLSLShader			gObjectFullbrightNonIndexedProgram;
 extern LLGLSLShader			gObjectFullbrightNonIndexedWaterProgram;
+extern LLGLSLShader			gObjectBumpProgram;
 
 extern LLGLSLShader			gObjectSimpleLODProgram;
 extern LLGLSLShader			gObjectFullbrightLODProgram;
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 4da0f80a00281beff887a3fd191d8ebf6cb14942..5fcc57bc91dc82841a5710e390a8516e64f57fd9 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -599,7 +599,7 @@ bool LLViewerTexture::bindDefaultImage(S32 stage)
 	}
 	if (!res && LLViewerTexture::sNullImagep.notNull() && (this != LLViewerTexture::sNullImagep))
 	{
-		res = gGL.getTexUnit(stage)->bind(LLViewerTexture::sNullImagep) ;
+		res = gGL.getTexUnit(stage)->bind(LLViewerTexture::sNullImagep);
 	}
 	if (!res)
 	{
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index d24174adeae4552368b4c70da3c55d687fb02234..30ef8b8a292b23b3a89022e68b425e93e8847d24 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -115,7 +115,7 @@ void LLViewerTextureList::doPreloadImages()
 	
 	// Set the "white" image
 	LLViewerFetchedTexture::sWhiteImagep = LLViewerTextureManager::getFetchedTextureFromFile("white.tga", MIPMAP_NO, LLViewerFetchedTexture::BOOST_UI);
-	
+	LLTexUnit::sWhiteTexture = LLViewerFetchedTexture::sWhiteImagep->getTexName();
 	LLUIImageList* image_list = LLUIImageList::getInstance();
 
 	image_list->initFromFile();
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index c31e1c3ba9a64e340aa753d851adcf5fe4833118..988c4ed1a234f4600152a45d5f8d3572cd3900e7 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2302,6 +2302,11 @@ void LLViewerWindow::draw()
 	// Draw all nested UI views.
 	// No translation needed, this view is glued to 0,0
 
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.bind();
+	}
+
 	gGL.pushMatrix();
 	LLUI::pushMatrix();
 	{
@@ -2376,6 +2381,11 @@ void LLViewerWindow::draw()
 	LLUI::popMatrix();
 	gGL.popMatrix();
 
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.unbind();
+	}
+
 //#if LL_DEBUG
 	LLView::sIsDrawing = FALSE;
 //#endif
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index cd2bbad620951b4d2ec0121b958e0a3b40755562..0db0010688369ee1f21417d407b42888b99148c1 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -7049,6 +7049,8 @@ LLVivoxProtocolParser::~LLVivoxProtocolParser()
 		XML_ParserFree(parser);
 }
 
+static LLFastTimer::DeclareTimer FTM_VIVOX_PROCESS("Vivox Process");
+
 // virtual
 LLIOPipe::EStatus LLVivoxProtocolParser::process_impl(
 													  const LLChannelDescriptors& channels,
@@ -7057,6 +7059,7 @@ LLIOPipe::EStatus LLVivoxProtocolParser::process_impl(
 													  LLSD& context,
 													  LLPumpIO* pump)
 {
+	LLFastTimer t(FTM_VIVOX_PROCESS);
 	LLBufferStream istr(channels, buffer.get());
 	std::ostringstream ostr;
 	while (istr.good())
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 66ba6249d3a135fb2d2b279b01a0cc54e4b3da32..ef21e7373e48a0e51890ef919a12d9a56183182a 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -755,6 +755,11 @@ void LLVOSky::calcSkyColorWLVert(LLVector3 & Pn, LLColor3 & vary_HazeColor, LLCo
 	// project the direction ray onto the sky dome.
 	F32 phi = acos(Pn[1]);
 	F32 sinA = sin(F_PI - phi);
+	if (fabsf(sinA) < 0.01f)
+	{ //avoid division by zero
+		sinA = 0.01f;
+	}
+
 	F32 Plen = dome_radius * sin(F_PI + phi + asin(dome_offset_ratio * sinA)) / sinA;
 
 	Pn *= Plen;
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index 3c7fe708e61e5537d342c72f269567777e426914..890861df71fa2bfe79afc48848dc47bf7ea0d822 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -51,6 +51,7 @@
 #include "llspatialpartition.h"
 #include "llnotificationsutil.h"
 #include "raytrace.h"
+#include "llglslshader.h"
 
 extern LLPipeline gPipeline;
 
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index e6da8eb89d8ec90617d1f70d354adff65008b19e..4c137d339479ef2906916846f5e699777d9d50c9 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -3743,6 +3743,11 @@ bool can_batch_texture(LLFace* facep)
 		return false;
 	}
 
+	if (facep->getTexture() && facep->getTexture()->getPrimaryFormat() == GL_ALPHA)
+	{ //can't batch invisiprims
+		return false;
+	}
+
 	if (facep->isState(LLFace::TEXTURE_ANIM) && facep->getVirtualSize() > MIN_TEX_ANIM_SIZE)
 	{ //texture animation breaks batches
 		return false;
@@ -4361,6 +4366,8 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
 
 		group->mBuilt = 1.f;
 		
+		std::set<LLVertexBuffer*> mapped_buffers;
+
 		for (LLSpatialGroup::element_iter drawable_iter = group->getData().begin(); drawable_iter != group->getData().end(); ++drawable_iter)
 		{
 			LLFastTimer t(FTM_VOLUME_GEOM_PARTIAL);
@@ -4375,35 +4382,31 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
 				for (S32 i = 0; i < drawablep->getNumFaces(); ++i)
 				{
 					LLFace* face = drawablep->getFace(i);
-					if (face && face->getVertexBuffer())
+					if (face)
 					{
-						face->getGeometryVolume(*volume, face->getTEOffset(), 
-							vobj->getRelativeXform(), vobj->getRelativeXformInvTrans(), face->getGeomIndex());
+						LLVertexBuffer* buff = face->getVertexBuffer();
+						if (buff)
+						{
+							face->getGeometryVolume(*volume, face->getTEOffset(), 
+								vobj->getRelativeXform(), vobj->getRelativeXformInvTrans(), face->getGeomIndex());
+
+							if (buff->isLocked())
+							{
+								mapped_buffers.insert(buff);
+							}
+						}
 					}
 				}
-
+				
 				drawablep->clearState(LLDrawable::REBUILD_ALL);
 			}
 		}
 		
-		//unmap all the buffers
-		for (LLSpatialGroup::buffer_map_t::iterator i = group->mBufferMap.begin(); i != group->mBufferMap.end(); ++i)
+		for (std::set<LLVertexBuffer*>::iterator iter = mapped_buffers.begin(); iter != mapped_buffers.end(); ++iter)
 		{
-			LLSpatialGroup::buffer_texture_map_t& map = i->second;
-			for (LLSpatialGroup::buffer_texture_map_t::iterator j = map.begin(); j != map.end(); ++j)
-			{
-				LLSpatialGroup::buffer_list_t& list = j->second;
-				for (LLSpatialGroup::buffer_list_t::iterator k = list.begin(); k != list.end(); ++k)
-				{
-					LLVertexBuffer* buffer = *k;
-					if (buffer->isLocked())
-					{
-						buffer->setBuffer(0);
-					}
-				}
-			}
+			(*iter)->setBuffer(0);
 		}
-		
+
 		// don't forget alpha
 		if(group != NULL && 
 		   !group->mVertexBuffer.isNull() && 
@@ -4713,6 +4716,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
 			}
 
 			const LLTextureEntry* te = facep->getTextureEntry();
+			tex = facep->getTexture();
 
 			BOOL is_alpha = (facep->getPoolType() == LLDrawPool::POOL_ALPHA) ? TRUE : FALSE;
 		
diff --git a/indra/newview/llvowater.cpp b/indra/newview/llvowater.cpp
index 69ebad61ac49cb1fd7d8a85b04e953efb7fbac39..e70ac0a2e747600e753a26b59617e02cd6b0886a 100644
--- a/indra/newview/llvowater.cpp
+++ b/indra/newview/llvowater.cpp
@@ -282,6 +282,11 @@ void LLVOWater::updateSpatialExtents(LLVector4a &newMin, LLVector4a& newMax)
 
 U32 LLVOWater::getPartitionType() const
 { 
+	if (mIsEdgePatch)
+	{
+		return LLViewerRegion::PARTITION_VOIDWATER;
+	}
+
 	return LLViewerRegion::PARTITION_WATER; 
 }
 
@@ -300,6 +305,7 @@ LLWaterPartition::LLWaterPartition()
 
 LLVoidWaterPartition::LLVoidWaterPartition()
 {
+	mOcclusionEnabled = FALSE;
 	mDrawableType = LLPipeline::RENDER_TYPE_VOIDWATER;
 	mPartitionType = LLViewerRegion::PARTITION_VOIDWATER;
 }
diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp
index 257884d921ba1f887e45a4034c9eb1fa08429524..bd1d2ed7a7b7e325eb625a50048afcefc6239eee 100644
--- a/indra/newview/llxmlrpctransaction.cpp
+++ b/indra/newview/llxmlrpctransaction.cpp
@@ -394,16 +394,18 @@ bool LLXMLRPCTransaction::Impl::process()
 		}
 	}
 	
-	const F32 MAX_PROCESSING_TIME = 0.05f;
-	LLTimer timer;
+	//const F32 MAX_PROCESSING_TIME = 0.05f;
+	//LLTimer timer;
 
-	while (mCurlRequest->perform() > 0)
+	mCurlRequest->perform();
+
+	/*while (mCurlRequest->perform() > 0)
 	{
 		if (timer.getElapsedTimeF32() >= MAX_PROCESSING_TIME)
 		{
 			return false;
 		}
-	}
+	}*/
 
 	while(1)
 	{
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index e74bf2a6203d46a7ab7470744806d761902e2d47..0abeed988c4c9d0a1aaf902f4f778fc2adf0073f 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -336,10 +336,10 @@ static const U32 gl_cube_face[] =
 void validate_framebuffer_object();
 
 
-void addDeferredAttachments(LLRenderTarget& target)
+bool addDeferredAttachments(LLRenderTarget& target)
 {
-	target.addColorAttachment(GL_RGBA); //specular
-	target.addColorAttachment(GL_RGBA); //normal+z	
+	return target.addColorAttachment(GL_RGBA) && //specular
+			target.addColorAttachment(GL_RGBA); //normal+z	
 }
 
 LLPipeline::LLPipeline() :
@@ -586,18 +586,61 @@ void LLPipeline::allocatePhysicsBuffer()
 
 void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 {
-	// remember these dimensions
-	mScreenWidth = resX;
-	mScreenHeight = resY;
-	
-	//cap samples at 4 for render targets to avoid out of memory errors
 	U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"));
 
 	if (gGLManager.mIsATI)
-	{ //disable multisampling of render targets where ATI is involved
+	{ //ATI doesn't like the way we use multisample texture
 		samples = 0;
 	}
 
+	//try to allocate screen buffers at requested resolution and samples
+	// - on failure, shrink number of samples and try again
+	// - if not multisampled, shrink resolution and try again (favor X resolution over Y)
+	// Make sure to call "releaseScreenBuffers" after each failure to cleanup the partially loaded state
+
+	if (!allocateScreenBuffer(resX, resY, samples))
+	{
+		releaseScreenBuffers();
+		//reduce number of samples 
+		while (samples > 0)
+		{
+			samples /= 2;
+			if (allocateScreenBuffer(resX, resY, samples))
+			{ //success
+				return;
+			}
+			releaseScreenBuffers();
+		}
+
+		//reduce resolution
+		while (resY > 0 && resX > 0)
+		{
+			resY /= 2;
+			if (allocateScreenBuffer(resX, resY, samples))
+			{
+				return;
+			}
+			releaseScreenBuffers();
+
+			resX /= 2;
+			if (allocateScreenBuffer(resX, resY, samples))
+			{
+				return;
+			}
+			releaseScreenBuffers();
+		}
+
+		llwarns << "Unable to allocate screen buffer at any resolution!" << llendl;
+	}
+}
+
+
+bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
+{
+	// remember these dimensions
+	mScreenWidth = resX;
+	mScreenHeight = resY;
+	
 	U32 res_mod = gSavedSettings.getU32("RenderResolutionDivisor");
 
 	if (res_mod > 1 && res_mod < resX && res_mod < resY)
@@ -608,7 +651,10 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 
 	if (gSavedSettings.getBOOL("RenderUIBuffer"))
 	{
-		mUIScreen.allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
+		if (!mUIScreen.allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE))
+		{
+			return false;
+		}
 	}	
 
 	if (LLPipeline::sRenderDeferred)
@@ -618,22 +664,22 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 		bool gi = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED);
 
 		//allocate deferred rendering color buffers
-		mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples);
-		mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples);
-		addDeferredAttachments(mDeferredScreen);
+		if (!mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
+		if (!mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
+		if (!addDeferredAttachments(mDeferredScreen)) return false;
 	
-		mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples);		
+		if (!mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
 		
 #if LL_DARWIN
 		// As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO
-		mEdgeMap.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
+		if (!mEdgeMap.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
 #else
-		mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
+		if (!mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
 #endif
 
 		if (shadow_detail > 0 || ssao)
 		{ //only need mDeferredLight[0] for shadows OR ssao
-			mDeferredLight[0].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
+			if (!mDeferredLight[0].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
 		}
 		else
 		{
@@ -642,7 +688,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 
 		if (ssao)
 		{ //only need mDeferredLight[1] for ssao
-			mDeferredLight[1].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false);
+			if (!mDeferredLight[1].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false)) return false;
 		}
 		else
 		{
@@ -651,14 +697,14 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 
 		if (gi)
 		{ //only need mDeferredLight[2] and mGIMapPost for gi
-			mDeferredLight[2].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false);
+			if (!mDeferredLight[2].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false)) return false;
 			for (U32 i = 0; i < 2; i++)
 			{
 #if LL_DARWIN
 				// As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO
-				mGIMapPost[i].allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
+				if (!mGIMapPost[i].allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
 #else
-				mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
+				if (!mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
 #endif
 			}
 		}
@@ -685,7 +731,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 		{ //allocate 4 sun shadow maps
 			for (U32 i = 0; i < 4; i++)
 			{
-				mShadow[i].allocate(U32(resX*scale),U32(resY*scale), shadow_fmt, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
+				if (!mShadow[i].allocate(U32(resX*scale),U32(resY*scale), shadow_fmt, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
 			}
 		}
 		else
@@ -703,7 +749,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 		{ //allocate two spot shadow maps
 			for (U32 i = 4; i < 6; i++)
 			{
-				mShadow[i].allocate(width, height, shadow_fmt, TRUE, FALSE);
+				if (!mShadow[i].allocate(width, height, shadow_fmt, TRUE, FALSE)) return false;
 			}
 		}
 		else
@@ -716,7 +762,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 
 		width = nhpo2(resX)/2;
 		height = nhpo2(resY)/2;
-		mLuminanceMap.allocate(width,height, GL_RGBA, FALSE, FALSE);
+		if (!mLuminanceMap.allocate(width,height, GL_RGBA, FALSE, FALSE)) return false;
 	}
 	else
 	{
@@ -738,7 +784,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 		mEdgeMap.release();
 		mLuminanceMap.release();
 		
-		mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE);		
+		if (!mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;		
 	}
 	
 	if (LLPipeline::sRenderDeferred)
@@ -750,6 +796,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 
 	stop_glerror();
 
+	return true;
 }
 
 //static
@@ -800,9 +847,23 @@ void LLPipeline::releaseGLBuffers()
 
 	mWaterRef.release();
 	mWaterDis.release();
+	
+	for (U32 i = 0; i < 3; i++)
+	{
+		mGlow[i].release();
+	}
+
+	releaseScreenBuffers();
+
+	gBumpImageList.destroyGL();
+	LLVOAvatar::resetImpostors();
+}
+
+void LLPipeline::releaseScreenBuffers()
+{
+	mUIScreen.release();
 	mScreen.release();
 	mPhysicsDisplay.release();
-	mUIScreen.release();
 	mDeferredScreen.release();
 	mDeferredDepth.release();
 	for (U32 i = 0; i < 3; i++)
@@ -821,16 +882,9 @@ void LLPipeline::releaseGLBuffers()
 	{
 		mShadow[i].release();
 	}
-
-	for (U32 i = 0; i < 3; i++)
-	{
-		mGlow[i].release();
-	}
-
-	gBumpImageList.destroyGL();
-	LLVOAvatar::resetImpostors();
 }
 
+
 void LLPipeline::createGLBuffers()
 {
 	LLMemType mt_cb(LLMemType::MTYPE_PIPELINE_CREATE_BUFFERS);
@@ -1983,6 +2037,14 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
 
 	LLGLDepthTest depth(GL_TRUE, GL_FALSE);
 
+	bool bound_shader = false;
+	if (gPipeline.canUseVertexShaders() && LLGLSLShader::sCurBoundShader == 0)
+	{ //if no shader is currently bound, use the occlusion shader instead of fixed function if we can
+		// (shadow render uses a special shader that clamps to clip planes)
+		bound_shader = true;
+		gOcclusionProgram.bind();
+	}
+	
 	for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); 
 			iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
 	{
@@ -2010,6 +2072,11 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
 		}
 	}
 
+	if (bound_shader)
+	{
+		gOcclusionProgram.unbind();
+	}
+
 	camera.disableUserClipPlane();
 
 	if (hasRenderType(LLPipeline::RENDER_TYPE_SKY) && 
@@ -2133,7 +2200,21 @@ void LLPipeline::doOcclusion(LLCamera& camera)
 		LLGLDepthTest depth(GL_TRUE, GL_FALSE);
 
 		LLGLDisable cull(GL_CULL_FACE);
+
 		
+		bool bind_shader = LLGLSLShader::sNoFixedFunction && LLGLSLShader::sCurBoundShader == 0;
+		if (bind_shader)
+		{
+			if (LLPipeline::sShadowRender)
+			{
+				gDeferredShadowProgram.bind();
+			}
+			else
+			{
+				gOcclusionProgram.bind();
+			}
+		}
+
 		for (LLCullResult::sg_list_t::iterator iter = sCull->beginOcclusionGroups(); iter != sCull->endOcclusionGroups(); ++iter)
 		{
 			LLSpatialGroup* group = *iter;
@@ -2141,6 +2222,18 @@ void LLPipeline::doOcclusion(LLCamera& camera)
 			group->clearOcclusionState(LLSpatialGroup::ACTIVE_OCCLUSION);
 		}
 	
+		if (bind_shader)
+		{
+			if (LLPipeline::sShadowRender)
+			{
+				gDeferredShadowProgram.unbind();
+			}
+			else
+			{
+				gOcclusionProgram.unbind();
+			}
+		}
+
 		gGL.setColorMask(true, false);
 	}
 }
@@ -3249,6 +3342,11 @@ void render_hud_elements()
 	gGL.color4f(1,1,1,1);
 	if (!LLPipeline::sReflectionRender && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
 	{
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.bind();
+		}
+
 		LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
 		gViewerWindow->renderSelections(FALSE, FALSE, FALSE); // For HUD version in render_ui_3d()
 	
@@ -3262,6 +3360,10 @@ void render_hud_elements()
 	
 		// Render name tags.
 		LLHUDObject::renderAll();
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.unbind();
+		}
 	}
 	else if (gForceRenderLandFence)
 	{
@@ -3599,8 +3701,8 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 						check_stack_depth(stack_depth);
 						std::string msg = llformat("pass %d", i);
 						LLGLState::checkStates(msg);
-						LLGLState::checkTextureChannels(msg);
-						LLGLState::checkClientArrays(msg);
+						//LLGLState::checkTextureChannels(msg);
+						//LLGLState::checkClientArrays(msg);
 					}
 				}
 			}
@@ -3638,71 +3740,64 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 
 	LLVertexBuffer::unbind();
 	LLGLState::checkStates();
-	LLGLState::checkTextureChannels();
-	LLGLState::checkClientArrays();
-
-	
-
-	stop_glerror();
-		
-	LLGLState::checkStates();
-	LLGLState::checkTextureChannels();
-	LLGLState::checkClientArrays();
-
-	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderHighlights");
 
-	if (!sReflectionRender)
+	if (!LLPipeline::sImpostorRender)
 	{
-		renderHighlights();
-	}
+		LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderHighlights");
 
-	// Contains a list of the faces of objects that are physical or
-	// have touch-handlers.
-	mHighlightFaces.clear();
+		if (!sReflectionRender)
+		{
+			renderHighlights();
+		}
 
-	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderDebug");
+		// Contains a list of the faces of objects that are physical or
+		// have touch-handlers.
+		mHighlightFaces.clear();
+
+		LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderDebug");
 	
-	renderDebug();
+		renderDebug();
 
-	LLVertexBuffer::unbind();
+		LLVertexBuffer::unbind();
 	
-	if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred)
-	{
-		if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
+		if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred)
 		{
-			// Render debugging beacons.
-			gObjectList.renderObjectBeacons();
-			gObjectList.resetObjectBeacons();
+			if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
+			{
+				// Render debugging beacons.
+				gObjectList.renderObjectBeacons();
+				gObjectList.resetObjectBeacons();
+			}
+			else
+			{
+				// Make sure particle effects disappear
+				LLHUDObject::renderAllForTimer();
+			}
 		}
 		else
 		{
 			// Make sure particle effects disappear
 			LLHUDObject::renderAllForTimer();
 		}
-	}
-	else
-	{
-		// Make sure particle effects disappear
-		LLHUDObject::renderAllForTimer();
-	}
 
-	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd");
+		LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd");
 
-	//HACK: preserve/restore matrices around HUD render
-	if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD))
-	{
-		for (U32 i = 0; i < 16; i++)
+		//HACK: preserve/restore matrices around HUD render
+		if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD))
 		{
-			gGLModelView[i] = saved_modelview[i];
-			gGLProjection[i] = saved_projection[i];
+			for (U32 i = 0; i < 16; i++)
+			{
+				gGLModelView[i] = saved_modelview[i];
+				gGLProjection[i] = saved_projection[i];
+			}
 		}
 	}
 
 	LLVertexBuffer::unbind();
 
 	LLGLState::checkStates();
-	LLGLState::checkTextureChannels();
-	LLGLState::checkClientArrays();
+//	LLGLState::checkTextureChannels();
+//	LLGLState::checkClientArrays();
 }
 
 void LLPipeline::renderGeomDeferred(LLCamera& camera)
@@ -3785,8 +3880,6 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
 						llerrs << "GL matrix stack corrupted!" << llendl;
 					}
 					LLGLState::checkStates();
-					LLGLState::checkTextureChannels();
-					LLGLState::checkClientArrays();
 				}
 			}
 		}
@@ -3879,8 +3972,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
 						llerrs << "GL matrix stack corrupted!" << llendl;
 					}
 					LLGLState::checkStates();
-					LLGLState::checkTextureChannels();
-					LLGLState::checkClientArrays();
 				}
 			}
 		}
@@ -3955,8 +4046,6 @@ void LLPipeline::renderGeomShadow(LLCamera& camera)
 				LLVertexBuffer::unbind();
 
 				LLGLState::checkStates();
-				LLGLState::checkTextureChannels();
-				LLGLState::checkClientArrays();
 			}
 		}
 		else
@@ -6449,30 +6538,39 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 
 		LLGLDisable blend(GL_BLEND);
 
-		//tex unit 0
-		gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_COLOR);
-	
-		gGL.getTexUnit(0)->bind(&mGlow[1]);
-		gGL.getTexUnit(1)->activate();
-		gGL.getTexUnit(1)->enable(LLTexUnit::TT_RECT_TEXTURE);
-
-
-		//tex unit 1
-		gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR);
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gGlowCombineProgram.bind();
+		}
+		else
+		{
+			//tex unit 0
+			gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_COLOR);
+			//tex unit 1
+			gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR);
+		}
 		
+		gGL.getTexUnit(0)->bind(&mGlow[1]);
 		gGL.getTexUnit(1)->bind(&mScreen);
-		gGL.getTexUnit(1)->activate();
 		
 		LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
 		
 		buff->setBuffer(mask);
 		buff->drawArrays(LLRender::TRIANGLE_STRIP, 0, 3);
 		
-		gGL.getTexUnit(1)->disable();
-		gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT);
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gGlowCombineProgram.unbind();
+		}
+		else
+		{
+			gGL.getTexUnit(1)->disable();
+			gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT);
 
-		gGL.getTexUnit(0)->activate();
-		gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+			gGL.getTexUnit(0)->activate();
+			gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+		}
+		
 	}
 
 	if (LLRenderTarget::sUseFBO)
@@ -6485,6 +6583,11 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 
 	if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES))
 	{
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.bind();
+		}
+
 		gGL.setColorMask(true, false);
 
 		LLVector2 tc1(0,0);
@@ -6508,6 +6611,12 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 		
 		gGL.end();
 		gGL.flush();
+
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.unbind();
+		}
+
 	}
 
 	glMatrixMode(GL_PROJECTION);
@@ -7923,7 +8032,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 
 			static LLCullResult ref_result;
 
-			if (LLDrawPoolWater::sNeedsDistortionUpdate)
+			if (LLDrawPoolWater::sNeedsReflectionUpdate)
 			{
 				//initial sky pass (no user clip plane)
 				{ //mask out everything but the sky
@@ -8063,8 +8172,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 		LLViewerCamera::getInstance()->setUserClipPlane(npnorm);
 		
 		LLGLState::checkStates();
-		LLGLState::checkTextureChannels();
-		LLGLState::checkClientArrays();
 
 		if (!skip_avatar_update)
 		{
@@ -8197,6 +8304,10 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
 	LLVertexBuffer::unbind();
 
 	{
+		if (!use_shader)
+		{ //occlusion program is general purpose depth-only no-textures
+			gOcclusionProgram.bind();
+		}
 		LLFastTimer ftm(FTM_SHADOW_SIMPLE);
 		LLGLDisable test(GL_ALPHA_TEST);
 		gGL.getTexUnit(0)->disable();
@@ -8205,6 +8316,10 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
 			renderObjects(types[i], LLVertexBuffer::MAP_VERTEX, FALSE);
 		}
 		gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
+		if (!use_shader)
+		{
+			gOcclusionProgram.unbind();
+		}
 	}
 	
 	if (use_shader)
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index e9da25e544b93e9d686e5c90300be610b6021a83..28e6526acd960dc761e6cc3644798f736e6945d0 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -113,9 +113,11 @@ class LLPipeline
 	void resetVertexBuffers();
 	void resizeScreenTexture();
 	void releaseGLBuffers();
+	void releaseScreenBuffers();
 	void createGLBuffers();
 
 	void allocateScreenBuffer(U32 resX, U32 resY);
+	bool allocateScreenBuffer(U32 resX, U32 resY, U32 samples);
 	void allocatePhysicsBuffer();
 	
 	void resetVertexBuffers(LLDrawable* drawable);
diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml
index 4c0fbd280b394d26eb33bb1695ca6853d5c6e27b..c3999501eb8852e41d6a9264000b97f6aa3fea2c 100644
--- a/indra/newview/skins/default/xui/da/notifications.xml
+++ b/indra/newview/skins/default/xui/da/notifications.xml
@@ -454,6 +454,7 @@ Købsprisen for dette land er ikke refunderet til ejeren. Hvis en dedikeret parv
 Dediker disse [AREA] m² land til gruppen &apos;[GROUP_NAME]&apos;?
 	</notification>
 	<notification name="ErrorMessage">
+		[ERROR_MESSAGE]
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="AvatarMovedDesired">
diff --git a/indra/newview/skins/default/xui/da/panel_places.xml b/indra/newview/skins/default/xui/da/panel_places.xml
index fe8ca69f344d2f384c2691f3f01a2592448de23f..c555f2fb0943d9d93593694bc552f8bf12962cb9 100644
--- a/indra/newview/skins/default/xui/da/panel_places.xml
+++ b/indra/newview/skins/default/xui/da/panel_places.xml
@@ -24,7 +24,7 @@
 						<menu_button label="â–¼" name="overflow_btn" tool_tip="Vis flere valg"/>
 					</layout_panel>
 				</layout_stack>
-				<layout_stack name="bottom_bar_ls3">
+				<layout_stack name="bottom_bar_profile_ls">
 					<layout_panel name="profile_btn_lp">
 						<button label="Profil" name="profile_btn" tool_tip="Vis profil for sted"/>
 					</layout_panel>
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 f0fa4386d2770ea370cb64c17cd4372ceeeb001b..c65dc5f41d6ad981c9c1bb8709d5345ac284682c 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -133,12 +133,12 @@
 				0
 			</text>
 			<button label="Land kaufen" label_selected="Land kaufen..." name="Buy Land..."/>
+			<button label="Linden-Verkauf" label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/>
 			<button label="Skriptinfo" name="Scripts..."/>
 			<button label="Für Gruppe kaufen" label_selected="Für Gruppe kaufen..." name="Buy For Group..."/>
 			<button label="Pass kaufen" label_selected="Pass kaufen..." name="Buy Pass..." tool_tip="Ein Pass gibt Ihnen zeitbegrenzten Zugang zu diesem Land."/>
 			<button label="Land aufgeben" label_selected="Land aufgeben..." name="Abandon Land..."/>
 			<button label="Land in Besitz nehmen" label_selected="Land in Besitz nehmen..." name="Reclaim Land..."/>
-			<button label="Linden-Verkauf" label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/>
 		</panel>
 		<panel label="VERTRAG" name="land_covenant_panel">
 			<panel.string name="can_resell">
@@ -309,6 +309,9 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 			<panel.string name="push_restrict_region_text">
 				Kein Stoßen (regional)
 			</panel.string>
+			<panel.string name="see_avs_text">
+				Auf dieser Parzelle Einwohner sehen und mit ihnen chatten
+			</panel.string>
 			<text name="allow_label">
 				Anderen Einwohnern gestatten:
 			</text>
@@ -371,6 +374,10 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				Foto:
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
+			<text name="allow_label5">
+				Einwohnern auf anderen Parzellen Folgendes gestatten:
+			</text>
+			<check_box label="Avatare sehen" name="SeeAvatarsCheck" tool_tip="Gestattet sowohl Einwohnern auf anderen Parzellen, Einwohner auf dieser Parzelle zu sehen und mit ihnen zu chatten, als auch Ihnen, diese Einwohner auf anderen Parzellen zu sehen und mit ihnen zu chatten."/>
 			<text name="landing_point">
 				Landepunkt: [LANDING]
 			</text>
@@ -427,6 +434,11 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				Sound:
 			</text>
 			<check_box label="Gesten- und Objektgeräusche auf diese Parzelle beschränken" name="check sound local"/>
+			<text name="Avatar Sounds:">
+				Avatarsounds:
+			</text>
+			<check_box label="Jeder" name="all av sound check"/>
+			<check_box label="Gruppe" name="group av sound check"/>
 			<text name="Voice settings:">
 				Voice:
 			</text>
diff --git a/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c92471652330929ff6acb91d3902352d40bb1496
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<floater name="Delete Env Preset" title="UMGEB.VOREINST. LÖSCHEN">
+	<string name="title_water">
+		Wasser-Voreinstellung löschen
+	</string>
+	<string name="title_sky">
+		Hilmmel-Voreinstellung löschen
+	</string>
+	<string name="title_day_cycle">
+		Tageszyklus löschen
+	</string>
+	<string name="label_water">
+		Voreinstellung:
+	</string>
+	<string name="label_sky">
+		Voreinstellung:
+	</string>
+	<string name="label_day_cycle">
+		Tageszyklus:
+	</string>
+	<string name="msg_confirm_deletion">
+		Möchten Sie die ausgewählte Voreinstellung wirklich löschen?
+	</string>
+	<string name="msg_sky_is_referenced">
+		Eine Voreinstellung, auf die sich ein Tageszyklus bezieht, kann nicht gelöscht werden.
+	</string>
+	<string name="combo_label">
+		-Voreinstellung auswählen-
+	</string>
+	<text name="label">
+		Voreinstellung:
+	</text>
+	<button label="Löschen" name="delete"/>
+	<button label="Abbrechen" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8b29428c24106c1da6e13f8d3a23aeb8810754d7
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Day cycle" title="Tageszyklus bearbeiten">
+	<string name="title_new">
+		Neuen Tageszyklus erstellen
+	</string>
+	<string name="title_edit">
+		Tageszyklus bearbeiten
+	</string>
+	<string name="hint_new">
+		Geben Sie einen Namen für den Tageszyklus ein, passen Sie die Steuerungen an, um den Tageszyklus zu erstellen, und klicken Sie auf „Speichern“.
+	</string>
+	<string name="hint_edit">
+		Um den Tageszyklus zu bearbeiten, passen Sie die Steuerungen unten an und klicken Sie auf „Speichern“.
+	</string>
+	<string name="combo_label">
+		-Voreinstellung auswählen-
+	</string>
+	<text name="label">
+		Name der Voreinstellung:
+	</text>
+	<text name="note">
+		Hinweis: Wenn Sie den Namen Ihrer Voreinstellung ändern, entsteht eine neue Voreinstellung; die vorhandene Voreinstellung wird nicht geändert.
+	</text>
+	<text name="hint_item1">
+		- Klicken Sie auf eine Registerkarte, um die Himmeleinstellungen und die Uhrzeit zu bearbeiten.
+	</text>
+	<text name="hint_item2">
+		- Klicken und ziehen Sie die Registerkarten, um die Ãœbergangszeiten einzustellen.
+	</text>
+	<text name="hint_item3">
+		- Anhand des Scrubbers können Sie eine Vorschau Ihres Tageszyklus anzeigen.
+	</text>
+	<panel name="day_cycle_slider_panel">
+		<multi_slider initial_value="0" name="WLTimeSlider"/>
+		<multi_slider initial_value="0" name="WLDayCycleKeys"/>
+		<button label="Schlüssel hinzufügen" label_selected="Schlüssel hinzufügen" name="WLAddKey"/>
+		<button label="Schlüssel löschen" label_selected="Schlüssel löschen" name="WLDeleteKey"/>
+		<text name="WL12am">
+			0:00
+		</text>
+		<text name="WL3am">
+			3:00
+		</text>
+		<text name="WL6am">
+			6:00
+		</text>
+		<text name="WL9amHash">
+			9:00
+		</text>
+		<text name="WL12pmHash">
+			12:00
+		</text>
+		<text name="WL3pm">
+			15:00
+		</text>
+		<text name="WL6pm">
+			18:00
+		</text>
+		<text name="WL9pm">
+			21:00
+		</text>
+		<text name="WL12am2">
+			0:00
+		</text>
+		<text name="WL12amHash">
+			|
+		</text>
+		<text name="WL3amHash">
+			I
+		</text>
+		<text name="WL6amHash">
+			|
+		</text>
+		<text name="WL9amHash2">
+			I
+		</text>
+		<text name="WL12pmHash2">
+			|
+		</text>
+		<text name="WL3pmHash">
+			I
+		</text>
+		<text name="WL6pmHash">
+			|
+		</text>
+		<text name="WL9pmHash">
+			I
+		</text>
+		<text name="WL12amHash2">
+			|
+		</text>
+	</panel>
+	<text name="WLCurKeyPresetText">
+		Himmeleinstellung:
+	</text>
+	<combo_box label="Voreinstellung" name="WLSkyPresets"/>
+	<text name="WLCurKeyTimeText">
+		Uhrzeit:
+	</text>
+	<time name="time" value="6:00"/>
+	<check_box label="Zu meinem neuen Tageszyklus machen" name="make_default_cb"/>
+	<button label="Speichern" name="save"/>
+	<button label="Abbrechen" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ea4c5f7ebc2c1d5ba061dde7e68d84cf14c4c9e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Sky Preset" title="Himmel-Voreinstellung bearbeiten">
+	<string name="title_new">
+		Neue Himmel-Voreinstellung erstellen
+	</string>
+	<string name="title_edit">
+		Himmel-Voreinstellung bearbeiten
+	</string>
+	<string name="hint_new">
+		Geben Sie einen Namen für die Voreinstellung ein, passen Sie die Steuerungen an, um die Voreinstellung zu erstellen, und klicken Sie dann auf „Speichern“.
+	</string>
+	<string name="hint_edit">
+		Um Ihre Himmel-Voreinstellung zu bearbeiten, passen Sie die Steuerungen an und klicken Sie auf „Speichern“.
+	</string>
+	<string name="combo_label">
+		-Voreinstellung auswählen-
+	</string>
+	<text name="hint">
+		Um Ihre Voreinstellung zu bearbeiten, passen Sie die Steuerungen an und klicken Sie auf „Speichern“.
+	</text>
+	<text name="label">
+		Name der Voreinstellung:
+	</text>
+	<text name="note">
+		Hinweis: Wenn Sie den Namen Ihrer Voreinstellung ändern, entsteht eine neue Voreinstellung; die vorhandene Voreinstellung wird nicht geändert.
+	</text>
+	<tab_container name="WindLight Tabs">
+		<panel label="ATMOSPHÄRE" name="Atmosphere">
+			<text name="BHText">
+				Blauer Horizont
+			</text>
+			<text name="BDensText">
+				Horizonttrübung
+			</text>
+			<text name="BDensText2">
+				Farbintensität
+			</text>
+			<text name="HDText">
+				Trübungsintensität
+			</text>
+			<text name="DensMultText">
+				Dichtemultiplikator
+			</text>
+			<text name="WLDistanceMultText">
+				Entfernungsmultiplikator
+			</text>
+			<text name="MaxAltText">
+				Max. Höhe
+			</text>
+		</panel>
+		<panel label="BELEUCHTUNG" name="Lighting">
+			<text name="SLCText">
+				Sonne/Mond-Farbe
+			</text>
+			<text name="WLAmbientText">
+				Umgebung
+			</text>
+			<text name="SunGlowText">
+				Sonnenleuchtkraft
+			</text>
+			<slider label="Fokus" name="WLGlowB"/>
+			<slider label="Größe" name="WLGlowR"/>
+			<text name="WLStarText">
+				Sternenleuchtkraft
+			</text>
+			<text name="SceneGammaText">
+				Gamma in Szene
+			</text>
+			<text name="TODText">
+				Sonne/Mond-Stand
+			</text>
+			<multi_slider initial_value="0" name="WLSunPos"/>
+			<text name="WL12amHash">
+				|
+			</text>
+			<text name="WL6amHash">
+				|
+			</text>
+			<text name="WL12pmHash2">
+				|
+			</text>
+			<text name="WL6pmHash">
+				|
+			</text>
+			<text name="WL12amHash2">
+				|
+			</text>
+			<text name="WL12am">
+				0:00
+			</text>
+			<text name="WL6am">
+				3:00
+			</text>
+			<text name="WL12pmHash">
+				12:00
+			</text>
+			<text name="WL6pm">
+				18:00
+			</text>
+			<text name="WL12am2">
+				0:00
+			</text>
+			<time name="WLDayTime" value="6:00"/>
+			<text name="WLEastAngleText">
+				Ostausrichtung
+			</text>
+		</panel>
+		<panel label="WOLKEN" name="Clouds">
+			<text name="WLCloudColorText">
+				Wolkenfarbe
+			</text>
+			<text name="WLCloudColorText2">
+				Wolken-XY/Dichte
+			</text>
+			<slider label="X" name="WLCloudX"/>
+			<slider label="Y" name="WLCloudY"/>
+			<slider label="D" name="WLCloudDensity"/>
+			<text name="WLCloudCoverageText">
+				Wolkendichte
+			</text>
+			<text name="WLCloudScaleText">
+				Wolkenskalierung
+			</text>
+			<text name="WLCloudDetailText">
+				Wolkendetails (XY/Dichte)
+			</text>
+			<slider label="X" name="WLCloudDetailX"/>
+			<slider label="Y" name="WLCloudDetailY"/>
+			<slider label="D" name="WLCloudDetailDensity"/>
+			<text name="WLCloudScrollXText">
+				Wolkenbewegung X
+			</text>
+			<check_box label="Sperren" name="WLCloudLockX"/>
+			<text name="WLCloudScrollYText">
+				Wolkenbewegung Y
+			</text>
+			<check_box label="Sperren" name="WLCloudLockY"/>
+		</panel>
+	</tab_container>
+	<check_box label="Diese Voreinstellung zu meiner neuen Himmeleinstellung machen" name="make_default_cb"/>
+	<button label="Speichern" name="save"/>
+	<button label="Abbrechen" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9b9d5e7d7789d0f4cdd024e83be0ce6b9e004fef
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Water Preset" title="Wasser-Voreinstellung bearbeiten">
+	<string name="title_new">
+		Neue Wasser-Voreinstellung erstellen
+	</string>
+	<string name="title_edit">
+		Wasser-Voreinstellung bearbeiten
+	</string>
+	<string name="hint_new">
+		Geben Sie einen Namen für die Voreinstellung ein, passen Sie die Steuerungen an, um die Voreinstellung zu erstellen, und klicken Sie dann auf „Speichern“.
+	</string>
+	<string name="hint_edit">
+		Um Ihre Wasser-Voreinstellung zu bearbeiten, passen Sie die Steuerungen an und klicken Sie auf „Speichern“.
+	</string>
+	<string name="combo_label">
+		-Voreinstellung auswählen-
+	</string>
+	<text name="hint">
+		Um Ihre Voreinstellung zu bearbeiten, passen Sie die Steuerungen an und klicken Sie auf „Speichern“.
+	</text>
+	<text name="label">
+		Name der Voreinstellung:
+	</text>
+	<text name="note">
+		Hinweis: Wenn Sie den Namen Ihrer Voreinstellung ändern, entsteht eine neue Voreinstellung; die vorhandene Voreinstellung wird nicht geändert.
+	</text>
+	<panel name="panel_water_preset">
+		<text name="water_color_label">
+			Trübungsfarbe
+		</text>
+		<text name="water_fog_density_label">
+			Exponent für Trübungsdichte
+		</text>
+		<text name="underwater_fog_modifier_label">
+			Modifikator für Wassertrübung
+		</text>
+		<text name="BHText">
+			Richtung für große Wellen
+		</text>
+		<slider label="X" name="WaterWave1DirX"/>
+		<slider label="Y" name="WaterWave1DirY"/>
+		<text name="BDensText">
+			Reflexionswellengröße
+		</text>
+		<text name="HDText">
+			Fresnel-Skalierung
+		</text>
+		<text name="FresnelOffsetText">
+			Fresnel-Versatz
+		</text>
+		<text name="BHText2">
+			Richtung für kleine Wellen
+		</text>
+		<slider label="X" name="WaterWave2DirX"/>
+		<slider label="Y" name="WaterWave2DirY"/>
+		<text name="DensMultText">
+			Brechungsstärke oben
+		</text>
+		<text name="WaterScaleBelowText">
+			Brechungsstärke unten
+		</text>
+		<text name="MaxAltText">
+			Mischungsmultiplikator
+		</text>
+		<text name="BHText3">
+			Normal-Map
+		</text>
+	</panel>
+	<check_box label="Diese Voreinstellung zu meiner neuen Wassereinstellung machen" name="make_default_cb"/>
+	<button label="Speichern" name="save"/>
+	<button label="Abbrechen" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_environment_settings.xml b/indra/newview/skins/default/xui/de/floater_environment_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..946416980a001969d1eb4fba53048fe26ecd06e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_environment_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="UMGEBUNGSEINSTELLUNGEN">
+	<text name="note">
+		Anhand der Optionen unten können Sie die Umgebungseinstellungen für Ihren Viewer anpassen.
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Regionseinstellungen verwenden" name="use_region_settings"/>
+		<radio_item label="Meine Umgebung anpassen" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="note">
+			Hinweis: Ihre benutzerdefinierten Einstellungen sind für andere Benutzer nicht sichtbar.
+		</text>
+		<text name="water_settings_title">
+			Wassereinstellung
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Voreinstellung auswählen-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Himmel / Tageszyklus
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Fester Himmel" name="my_sky_settings"/>
+			<radio_item label="Tageszyklus" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Voreinstellung auswählen-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Voreinstellung auswählen-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="OK" name="ok_btn"/>
+	<button label="Abbrechen" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml
index 83c51132ee2128b18d318bbe05fc60a136fda9af..24e2788e0baa220a80946f8ea96f1ed50e3ec796 100644
--- a/indra/newview/skins/default/xui/de/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_model_preview.xml
@@ -3,6 +3,9 @@
 	<string name="status_idle">
 		Inaktiv
 	</string>
+	<string name="status_parse_error">
+		DAE-Parsing-Fehler. Details siehe Protokoll.
+	</string>
 	<string name="status_reading_file">
 		Laden...
 	</string>
@@ -12,6 +15,9 @@
 	<string name="status_vertex_number_overflow">
 		Fehler: Anzahl von Vertices überschreitet 65534. Operation abgebrochen.
 	</string>
+	<string name="bad_element">
+		Fehler: ungültiges Element.
+	</string>
 	<string name="high">
 		Hoch
 	</string>
diff --git a/indra/newview/skins/default/xui/de/floater_model_wizard.xml b/indra/newview/skins/default/xui/de/floater_model_wizard.xml
index 2c7b45906e9353732a930334c7f01091e5752c03..618b60e0ec8aa3aa15d0ebeef6b42b265d8a8145 100644
--- a/indra/newview/skins/default/xui/de/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/de/floater_model_wizard.xml
@@ -193,6 +193,9 @@
 	<string name="status_idle">
 		Inaktiv
 	</string>
+	<string name="status_parse_error">
+		DAE-Parsing-Fehler. Details siehe Protokoll.
+	</string>
 	<string name="status_reading_file">
 		Laden...
 	</string>
@@ -202,6 +205,9 @@
 	<string name="status_vertex_number_overflow">
 		Fehler: Anzahl von Vertices überschreitet 65534. Operation abgebrochen.
 	</string>
+	<string name="bad_element">
+		Fehler: ungültiges Element.
+	</string>
 	<string name="high">
 		Hoch
 	</string>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index 338b6093436983cc6816fdadb64d18ecc4af2aa4..00f983b77c357af0ac15f0f545750b17b9d710ee 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -66,7 +66,7 @@
 	<check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/>
 	<button label="Link" name="link_btn" width="30"/>
 	<button label="Verknüpfung auflösen" name="unlink_btn" width="126"/>
-	<text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt" left_pad="0">
+	<text left_pad="0" name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt">
 		þ: [COUNT]
 	</text>
 	<check_box label="" name="checkbox uniform"/>
@@ -408,7 +408,7 @@
 			</combo_box>
 			<spinner label="Schwerkraft" name="Physics Gravity"/>
 			<spinner label="Reibung" name="Physics Friction"/>
-			<spinner label="Dichte" name="Physics Density"/>
+			<spinner label="Dichte in 100 kg/m^3" name="Physics Density"/>
 			<spinner label="Restitution" name="Physics Restitution"/>
 		</panel>
 		<panel label="Textur" name="Texture">
diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml
index a373e15338cfbf48542d28af416d46d167ffc902..d932234cd1b03a7529cb9709f38ce76410f4882b 100644
--- a/indra/newview/skins/default/xui/de/menu_login.xml
+++ b/indra/newview/skins/default/xui/de/menu_login.xml
@@ -18,7 +18,7 @@
 		<menu_item_call label="Servicebedingungen anzeigen" name="TOS"/>
 		<menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/>
 		<menu_item_call label="Test Medienbrowser" name="Web Browser Test"/>
-		<menu_item_call label="Test Webinhalt-Floater" name="Web Content Floater Test"/>
+		<menu_item_call label="Web Content Floater Debug Test" name="Web Content Floater Debug Test"/>
 		<menu_item_check label="Grid-Auswahl anzeigen" name="Show Grid Picker"/>
 		<menu_item_call label="Benachrichtigungs-Konsole anzeigen" name="Show Notifications Console"/>
 	</menu>
diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml
index 0f252ab46d977ce46c7796b7e48b4dd47c97c9cd..a001544f3eded006859967d499fe962e19c7542f 100644
--- a/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
+<toggleable_menu name="menu_group_plus">
 	<menu_item_check label="Nach letzten Sprechern sortieren" name="sort_by_recent_speakers"/>
 	<menu_item_check label="Nach Name sortieren" name="sort_name"/>
 	<menu_item_check label="Nach Entfernung sortieren" name="sort_distance"/>
 	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
+	<menu_item_check label="Karte anzeigen" name="view_map"/>
 	<menu_item_call label="Ignorierte Einwohner &amp; Objekte anzeigen" name="show_blocked_list"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index 05f9f94c8af7f57667340b53ed0a9a3d892b122f..de4c269be68d510851bd5601e819f145994ba61c 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -31,6 +31,7 @@
 		<menu_item_call label="Meine Gruppen" name="My Groups"/>
 		<menu_item_check label="Chat in der Nähe" name="Nearby Chat"/>
 		<menu_item_call label="Leute in der Nähe" name="Active Speakers"/>
+		<menu_item_check label="Stimme in der Nähe" name="Nearby Voice"/>
 	</menu>
 	<menu label="Welt" name="World">
 		<menu_item_check label="Minikarte" name="Mini-Map"/>
@@ -63,8 +64,24 @@
 			<menu_item_call label="Mittag" name="Noon"/>
 			<menu_item_call label="Sonnenuntergang" name="Sunset"/>
 			<menu_item_call label="Mitternacht" name="Midnight"/>
-			<menu_item_call label="Grundbesitzzeit" name="Revert to Region Default"/>
-			<menu_item_call label="Umwelt-Editor" name="Environment Editor"/>
+		</menu>
+		<menu label="Umgebungs-Editor" name="Enviroment Editor">
+			<menu_item_call label="Umgebungseinstellungen..." name="Enviroment Settings"/>
+			<menu label="Wasser-Voreinstellungen" name="Water Presets">
+				<menu_item_call label="Neue Voreinstellung..." name="new_water_preset"/>
+				<menu_item_call label="Voreinstellung bearbeiten..." name="edit_water_preset"/>
+				<menu_item_call label="Voreinstellung löschen..." name="delete_water_preset"/>
+			</menu>
+			<menu label="Himmel-Voreinstellungen" name="Sky Presets">
+				<menu_item_call label="Neue Voreinstellung..." name="new_sky_preset"/>
+				<menu_item_call label="Voreinstellung bearbeiten..." name="edit_sky_preset"/>
+				<menu_item_call label="Voreinstellung löschen..." name="delete_sky_preset"/>
+			</menu>
+			<menu label="Tag-Voreinstellungen" name="Day Presets">
+				<menu_item_call label="Neue Voreinstellung..." name="new_day_preset"/>
+				<menu_item_call label="Voreinstellung bearbeiten..." name="edit_day_preset"/>
+				<menu_item_call label="Voreinstellung löschen..." name="delete_day_preset"/>
+			</menu>
 		</menu>
 	</menu>
 	<menu label="Bauen" name="BuildTools">
diff --git a/indra/newview/skins/default/xui/de/menu_wearing_gear.xml b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml
index 80d4ff4d9fa0ff1a33604ccb928f53afb5ed8701..dacf898b6a4231578cdade8cd38a556c931f97c0 100644
--- a/indra/newview/skins/default/xui/de/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
+<toggleable_menu name="Gear Wearing">
 	<menu_item_call label="Outfit bearbeiten" name="edit"/>
 	<menu_item_call label="Ausziehen" name="takeoff"/>
-</menu>
+	<menu_item_call label="Outfitliste in Zwischenablage kopieren" name="copy"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 75f26c6990a246dc364cf850b81076ee9a5f3009..05e47cd31a3c96002d7ed7d58be56b3bd293c37b 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -1565,6 +1565,11 @@ Versuchen Sie es später erneut.
 			<button name="Cancel" text="Abbrechen"/>
 		</form>
 	</notification>
+	<notification name="TooManyTeleportOffers">
+		Sie haben versucht, [OFFERS] Teleport-Angebote zu machen,
+womit Sie die Höchstgrenze von [LIMIT] überschreiten.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="OfferTeleportFromGod">
 		Einwohner zu Ihrem Standort einladen?
 		<form name="form">
@@ -1986,6 +1991,10 @@ Möchten Sie den Bechäftigt-Modus verlassen, bevor Sie diese Transaktion abschl
 		Sind Sie sicher, dass Sie Ihren Reise-, Internet- und Suchverlauf löschen möchten?
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
 	</notification>
+	<notification name="ConfirmClearCache">
+		Möchten Sie Ihren Viewer-Cache wirklich leeren?
+		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmClearCookies">
 		Sind Sie sicher, dass Sie Ihre Cookies löschen möchten?
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/>
@@ -2011,48 +2020,30 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies
 		Die gespeicherte Voreinstellung überschreiben?
 		<usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
 	</notification>
-	<notification name="WLDeletePresetAlert">
-		[SKY] löschen?
-		<usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
-	</notification>
 	<notification name="WLNoEditDefault">
 		Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden.
 	</notification>
 	<notification name="WLMissingSky">
 		Diese Tageszyklusdatei verweist auf eine fehlende Himmel-Datei: [SKY].
 	</notification>
-	<notification name="PPSaveEffectAlert">
-		Post-Processing-Effekt bereits vorhanden. Möchten Sie ihn überschreiben?
-		<usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
-	</notification>
-	<notification name="NewSkyPreset">
-		Wählen Sie einen Namen für den neuen Himmel.
-		<form name="form">
-			<input name="message">
-				Neue Voreinstellung
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Abbrechen"/>
-		</form>
+	<notification name="WLRegionApplyFail">
+		Die Einstellungen konnten nicht auf die Region angewendet werden.  Verlassen Sie die Region und kehren Sie zurück, um das Problem zu beheben.  Angegebener Grund: [FAIL_REASON]
 	</notification>
-	<notification name="ExistsSkyPresetAlert">
-		Voreinstellung bereits vorhanden!
+	<notification name="EnvCannotDeleteLastDayCycleKey">
+		Der letzte Schlüssel in diesem Tageszyklus kann nicht gelöscht werden, da ein Tageszyklus nicht leer sein kann.  Statt den letzten verbleibenden Schlüssel zu löschen, versuchen Sie stattdessen, ihn zu modifizieren und dann einen neuen zu erstellen.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="NewWaterPreset">
-		Wählen Sie einen Namen für die neue Wasservoreinstellung.
-		<form name="form">
-			<input name="message">
-				Neue Voreinstellung
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Abbrechen"/>
-		</form>
+	<notification name="DayCycleTooManyKeyframes">
+		Sie können diesem Tageszyklus keine Keyframes mehr hinzufügen.  Die Höchstzahl an Keyframes für Tageszyklen mit Umfang [SCOPE] beträgt [MAX].
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="ExistsWaterPresetAlert">
-		Voreinstellung bereits vorhanden!
+	<notification name="EnvUpdateRate">
+		Sie können die Umgebungseinstellungen der Region nur alle [WAIT] Sekunden aktualisieren.  Warten Sie mindestens so lange und versuchen Sie es dann erneut.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="WaterNoEditDefault">
-		Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden.
+	<notification name="PPSaveEffectAlert">
+		Post-Processing-Effekt bereits vorhanden. Möchten Sie ihn überschreiben?
+		<usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/>
 	</notification>
 	<notification name="ChatterBoxSessionStartError">
 		Neue Chat-Sitzung mit [RECIPIENT] konnte nicht gestartet werden.
@@ -2343,6 +2334,9 @@ Fliegen ist hier nicht möglich.
 	<notification name="NoBuild">
 		In diesem Bereich ist das Bauen deaktiviert. Sie können keine Objekte bauen oder rezzen.
 	</notification>
+	<notification name="SeeAvatars">
+		Diese Parzelle verbirgt Avatare und Text-Chat vor einer anderen Parzelle.   Sie können Einwohner außerhalb dieser Parzelle weder sehen noch von ihnen gesehen werden.  Regulärer Text-Chat auf Kanal 0 ist ebenfalls blockiert.
+	</notification>
 	<notification name="ScriptsStopped">
 		Ein Administrator hat die Skriptausführung in dieser Region vorübergehend deaktiviert.
 	</notification>
@@ -2771,7 +2765,9 @@ Die Schaltfläche wird angezeigt, wenn genügend Platz vorhanden ist.
 		Wählen Sie Einwohner aus, für die Sie das Objekt freigeben möchten.
 	</notification>
 	<notification name="MeshUploadError">
-		[LABEL] konnte nicht hochgeladen werden: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER]
+		[LABEL] konnte nicht hochgeladen werden: [MESSAGE] [IDENTIFIER] 
+
+Details finden Sie in der Protokolldatei.
 	</notification>
 	<notification name="ShareItemsConfirmation">
 		Möchten Sie wirklich die folgenden Objekte:
diff --git a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml
index 632f414747c9570165c465cfdc95c4c59800c7fb..1af0492aa165beedee93b9d37903d6251e66fdd7 100644
--- a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml
@@ -46,8 +46,8 @@
 	</panel>
 	<panel name="save_revert_button_bar">
 		<layout_stack name="button_bar_ls">
-			<layout_panel name="save_btn_lp">
-				<button label="Speichern" name="save_btn"/>
+			<layout_panel name="save_btn_lp" width="61">
+				<button label="Speichern" name="save_btn" width="60" />
 			</layout_panel>
 			<layout_panel name="revert_btn_lp">
 				<button label="Änderungen rückgängig machen" name="revert_btn" tool_tip="Zur zuletzt gespeicherten Version zurückkehren"/>
diff --git a/indra/newview/skins/default/xui/de/panel_outfits_list.xml b/indra/newview/skins/default/xui/de/panel_outfits_list.xml
index 65a38ea34245c8f0e8cee63fd726181eeccef9e7..ea3a938be99fe0a192827d2d787ff45f8125a711 100644
--- a/indra/newview/skins/default/xui/de/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/de/panel_outfits_list.xml
@@ -1,7 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Outfits">
+	<accordion name="outfits_accordion">
+		<no_matched_tabs_text name="no_matched_outfits_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/all/[SEARCH_TERM] Suche]."/>
+		<no_visible_tabs_text name="no_outfits_msg" value="Sie haben noch keine Outfits. Versuchen Sie es mit der [secondlife:///app/search/all/ ] Suche]."/>
+	</accordion>
 	<panel name="bottom_panel">
-		<button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
+		<menu_button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
 		<button name="trash_btn" tool_tip="Ausgewähltes Outfit löschen"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml
index 63a832a16555790e12363d895d317b51ce965282..4e76147746ca34a78eedc5ea33e116f6b3b4dea7 100644
--- a/indra/newview/skins/default/xui/de/panel_people.xml
+++ b/indra/newview/skins/default/xui/de/panel_people.xml
@@ -67,13 +67,13 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte].
 				<button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/>
 			</layout_panel>
 			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="Instant Messenger öffnen"/>
+				<button label="IM" name="im_btn" tool_tip="IM-Sitzung öffnen"/>
 			</layout_panel>
 			<layout_panel name="call_btn_lp">
 				<button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/>
 			</layout_panel>
 			<layout_panel name="share_btn_lp">
-				<button label="Teilen" name="share_btn" tool_tip="Inventarobjekt teilen"/>
+				<button label="Freigeben" name="share_btn" tool_tip="Inventarobjekt freigeben"/>
 			</layout_panel>
 			<layout_panel name="teleport_btn_lp">
 				<button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/>
diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml
index 555fa56d577e81b38b56c1dc1ea6642afb9169c2..4077fdab360ee1e605c94f8238fa935ca2b84610 100644
--- a/indra/newview/skins/default/xui/de/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml
@@ -68,6 +68,8 @@
 						<text name="scripts_value" value="Ein"/>
 						<text name="damage_label" value="Schaden:"/>
 						<text name="damage_value" value="Aus"/>
+						<text name="see_avatars_label" value="Avatare sehen:"/>
+						<text name="see_avatars_value" value="Aus"/>
 						<button label="Ãœber Land" name="about_land_btn"/>
 					</panel>
 				</accordion_tab>
diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml
index 36c77d4fe1023747b71a4136b805927e48709187..602ffff94d42763e29ba2decd58b9f0071685fe9 100644
--- a/indra/newview/skins/default/xui/de/panel_places.xml
+++ b/indra/newview/skins/default/xui/de/panel_places.xml
@@ -24,7 +24,7 @@
 						<menu_button label="▼" name="overflow_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
 					</layout_panel>
 				</layout_stack>
-				<layout_stack name="bottom_bar_ls3">
+				<layout_stack name="bottom_bar_profile_ls">
 					<layout_panel name="profile_btn_lp">
 						<button label="Profil" name="profile_btn" tool_tip="Ortsprofil anzeigen"/>
 					</layout_panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
index 0a596f2b2536b22b4abc47c109f9d31c3a2572b0..8a5c175f2fcdd38b8b1c88803d8862545e27cff7 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
@@ -3,6 +3,19 @@
 	<panel.string name="aspect_ratio_text">
 		[NUM]:[DEN]
 	</panel.string>
+	<text name="Cache:">
+		Cache:
+	</text>
+	<spinner label="Cache-Größe (64 – 9.984 MB)" name="cachesizespinner"/>
+	<text name="text_box5">
+		MB
+	</text>
+	<button label="Cache leeren" label_selected="Cache leeren" name="clear_cache"/>
+	<text name="Cache location">
+		Cache-Ordner:
+	</text>
+	<button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/>
+	<button label="Vorgabestandort" label_selected="Vorgabestandort" name="default_cache_location"/>
 	<text name="UI Size:">
 		UI-Größe:
 	</text>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
index c118e4e4dd21a51f7935749b3931b0acfe91cb50..1e6a03c99f3b5456a14ac750b6104a3bae6f3053 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml
@@ -19,6 +19,7 @@
 	<check_box label="Aktiviert" name="enable_voice_check"/>
 	<check_box label="Automatische Wiedergabe zulassen" name="media_auto_play_btn" tool_tip="Hier aktivieren, um Medien automatisch wiederzugeben." value="true"/>
 	<check_box label="Medien, die an andere Avatare angehängt sind, wiedergeben." name="media_show_on_others_btn" tool_tip="Diese Option deaktivieren, um Medien für andere Avataren, die sich in der Nähe befinden, auszublenden." value="true"/>
+	<check_box label="Sounds von Gesten abspielen" name="gesture_audio_play_btn" tool_tip="Markieren, um Sounds von Gesten zu hören" value="true"/>
 	<text name="voice_chat_settings">
 		Voice-Chat-Einstellungen
 	</text>
@@ -35,28 +36,5 @@
 	<button label="Taste festlegen" name="set_voice_hotkey_button"/>
 	<button name="set_voice_middlemouse_button" tool_tip="Auf mittlere Maustaste zurücksetzen"/>
 	<button label="Eingabe-/Ausgabegeräte" name="device_settings_btn"/>
-	<panel label="Geräte-Einstellungen" name="device_settings_panel">
-		<panel.string name="default_text">
-			Standard
-		</panel.string>
-		<panel.string name="default system device">
-			Standardgerät
-		</panel.string>
-		<panel.string name="no device">
-			Kein Gerät
-		</panel.string>
-		<text name="Input">
-			Eingabe
-		</text>
-		<text name="My volume label">
-			Meine Lautstärke:
-		</text>
-		<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Ändern Sie die Lautstärke mit dem Regler"/>
-		<text name="wait_text">
-			Bitte warten
-		</text>
-		<text name="Output">
-			Ausgabe
-		</text>
-	</panel>
+	<panel label="Geräte-Einstellungen" name="device_settings_panel"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_region_environment.xml b/indra/newview/skins/default/xui/de/panel_region_environment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..daadd30f62fb1e7519a3c996d8fe69e586101c83
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_region_environment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Umgebung" name="panel_env_info">
+	<text name="water_settings_title">
+		Wählen Sie die Wasser- und Himmel-/Tageszykluseinstellungen aus, die alle Besucher Ihrer Region sehen sollen.  Mehr Infos
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Second Life-Standard verwenden" name="use_sl_default_settings"/>
+		<radio_item label="Folgende Einstellungen verwenden" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="water_settings_title">
+			Wassereinstellung
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Voreinstellung auswählen-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Himmel / Tageszyklus
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Fester Himmel" name="my_sky_settings"/>
+			<radio_item label="Tageszyklus" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Voreinstellung auswählen-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Voreinstellung auswählen-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="Anwenden" name="apply_btn"/>
+	<button label="Abbrechen" name="cancel_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_region_terrain.xml b/indra/newview/skins/default/xui/de/panel_region_terrain.xml
index 01721791a705236f0fb064d2183dfed7f76684c5..7801be30e482860200f5b456a2bdedd9cb85e2f0 100644
--- a/indra/newview/skins/default/xui/de/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_terrain.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Terrain" name="Terrain">
 	<text name="region_text_lbl">
 		Region:
@@ -6,25 +6,55 @@
 	<text name="region_text">
 		unbekannt
 	</text>
-	<spinner label="Wasserhöhe" name="water_height_spin" />
-	<button label="?" name="water_height_help" />
-	<spinner label="Obere Terraingrenze" name="terrain_raise_spin" />
-	<button label="?" name="terrain_raise_help" />
-	<spinner label="Untere Terraingrenze" name="terrain_lower_spin" />
-	<button label="?" name="terrain_lower_help" />
-	<check_box label="Grundbesitzsonne verwenden" name="use_estate_sun_check" />
-	<button label="?" name="use_estate_sun_help" />
-	<check_box label="Sonne fest" name="fixed_sun_check" />
-	<button label="?" name="fixed_sun_help" />
-	<slider label="Phase" name="sun_hour_slider" />
-	<button label="Ãœbernehmen" name="apply_btn" />
-	<button label="RAW-Terrain herunterladen..." name="download_raw_btn"
-	     tool_tip="Nur für Grundbesitzeigentümer verfügbar, nicht für Verwalter" />
-	<button label="?" name="download_raw_help" />
-	<button label="RAW-Terrain hochladen..." name="upload_raw_btn"
-	     tool_tip="Nur für Grundbesitzeigentümer verfügbar, nicht für Verwalter" />
-	<button label="?" name="upload_raw_help" />
-	<button label="Terrain formen" name="bake_terrain_btn"
-	     tool_tip="Das aktuelle Terrain zum Mittelpunkt für die oberen/unteren Terraingrenzen machen" />
-	<button label="?" name="bake_terrain_help" />
+	<spinner label="Wasserhöhe" name="water_height_spin"/>
+	<spinner label="Obere Terraingrenze" name="terrain_raise_spin"/>
+	<spinner label="Untere Terraingrenze" name="terrain_lower_spin"/>
+	<text name="detail_texture_text">
+		Terraintexturen (erfordert 24-Bit-.tga-Dateien mit einer Größe von 512x512)
+	</text>
+	<text name="height_text_lbl">
+		1 (niedrig)
+	</text>
+	<text name="height_text_lbl2">
+		2
+	</text>
+	<text name="height_text_lbl3">
+		3
+	</text>
+	<text name="height_text_lbl4">
+		4 (Hoch)
+	</text>
+	<text name="height_text_lbl5">
+		Texturhöhenbereich
+	</text>
+	<text name="height_text_lbl10">
+		Diese Werte geben den Mischungsgrad für die obigen Texturen an.
+	</text>
+	<text name="height_text_lbl11">
+		In Metern gemessen. Der Wert „Niedrig“ ist die maximale Höhe von Textur 1, der Wert „Hoch“ die Mindesthöhe von Textur 4.
+	</text>
+	<text name="height_text_lbl6">
+		Nordwest
+	</text>
+	<text name="height_text_lbl7">
+		Nordost
+	</text>
+	<spinner label="Niedrig" name="height_start_spin_1"/>
+	<spinner label="Niedrig" name="height_start_spin_3"/>
+	<spinner label="Hoch" name="height_range_spin_1"/>
+	<spinner label="Hoch" name="height_range_spin_3"/>
+	<text name="height_text_lbl8">
+		Südwest
+	</text>
+	<text name="height_text_lbl9">
+		Südost
+	</text>
+	<spinner label="Niedrig" name="height_start_spin_0"/>
+	<spinner label="Niedrig" name="height_start_spin_2"/>
+	<spinner label="Hoch" name="height_range_spin_0"/>
+	<spinner label="Hoch" name="height_range_spin_2"/>
+	<button label="RAW-Terrain herunterladen..." name="download_raw_btn" tool_tip="Nur für Grundbesitzeigentümer verfügbar, nicht für Verwalter"/>
+	<button label="RAW-Terrain hochladen..." name="upload_raw_btn" tool_tip="Nur für Grundbesitzeigentümer verfügbar, nicht für Verwalter"/>
+	<button label="Terrain formen" name="bake_terrain_btn" tool_tip="Das aktuelle Terrain zum Mittelpunkt für die oberen/unteren Terraingrenzen machen"/>
+	<button label="Ãœbernehmen" name="apply_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml
index d817d1df90c423b0ebb4aeb0cdac5055a3b21bea..3dd1bfb357f4a545891d5168a248d7cf804d3dca 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml
@@ -1,6 +1,38 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Sonstiges" name="objects panel">
 	<panel label="" name="sidepanel__inventory_panel">
+		<layout_stack name="inventory_layout_stack">
+			<layout_panel name="inbox_layout_panel">
+				<panel label="" name="marketplace_inbox">
+					<string name="InboxLabelWithArg">
+						Erhaltene Objekte ([NUM])
+					</string>
+					<string name="InboxLabelNoArg">
+						Erhaltene Objekte
+					</string>
+					<button label="Erhaltene Objekte" name="inbox_btn"/>
+					<text name="inbox_fresh_new_count">
+						[NUM] neu
+					</text>
+					<panel tool_tip="Drag and drop items to your inventory to manage and use them">
+						<text name="inbox_inventory_placeholder">
+							Einkäufe auf dem Marktplatz werden hierher geliefert.
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+			<layout_panel name="outbox_layout_panel">
+				<panel label="" name="marketplace_outbox">
+					<button label="Händler-Outbox" name="outbox_btn"/>
+					<button label="" name="outbox_sync_btn" tool_tip="Zu meiner Marktplatz-Storefront verschieben"/>
+					<panel tool_tip="Drag and drop items here to prepare them for sale on your storefront">
+						<text name="outbox_inventory_placeholder">
+							Richtigen Sie ein Händlerkonto ein, um diese Funktion zu verwenden.
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+		</layout_stack>
 		<panel name="button_panel">
 			<layout_stack name="button_panel_ls">
 				<layout_panel name="info_btn_lp">
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index ed382674661f9cc2fd411a2ea05f75193c93f8c8..e1c9ad0e5cbbcf803c82ffe30dd5e48a7f58e405 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -1192,6 +1192,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="InventoryNoTexture">
 		Sie haben keine Kopie dieser Textur in Ihrem Inventar.
 	</string>
+	<string name="InventoryInboxNoItems">
+		Objekte, die auf dem Marktplatz gekauft wurden, werden hierher geliefert.
+	</string>
+	<string name="InventoryOutboxNoItems">
+		Objekte hierher ziehen, um Sie in Ihrer Marktplatz-Storefront zum Verkauf anzubieten.
+	</string>
 	<string name="no_transfer" value=" (kein Transferieren)"/>
 	<string name="no_modify" value=" (kein Bearbeiten)"/>
 	<string name="no_copy" value=" (kein Kopieren)"/>
@@ -1322,6 +1328,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="InvFolder All">
 		Alle
 	</string>
+	<string name="no_attachments">
+		Keine Anhänge getragen
+	</string>
 	<string name="Buy">
 		Kaufen
 	</string>
@@ -1657,6 +1666,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="IMTeen">
 		Teen
 	</string>
+	<string name="Anyone">
+		jeder
+	</string>
 	<string name="RegionInfoError">
 		Fehler
 	</string>
@@ -1879,6 +1891,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="Public">
 		Öffentlich
 	</string>
+	<string name="LocalSettings">
+		Lokale Einstellungen
+	</string>
+	<string name="RegionSettings">
+		Regionseinstellungen
+	</string>
 	<string name="ClassifiedClicksTxt">
 		Klicks: [TELEPORT] teleportieren, [MAP] Karte, [PROFILE] Profil
 	</string>
@@ -3724,6 +3742,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="LocationCtrlGeneralIconTooltip">
 		Generelle Region
 	</string>
+	<string name="LocationCtrlSeeAVsTooltip">
+		Avatare sichtbar; Chat außerhalb dieser Parzelle gestattet
+	</string>
 	<string name="UpdaterWindowTitle">
 		[APP_NAME] Aktualisierung
 	</string>
diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
index 8770ede7e9f920348ed84c0d0536357d0ecf8ff5..c7b26c59c7f619750660b5cc66ce2ec8d2c05c26 100644
--- a/indra/newview/skins/default/xui/en/floater_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_search.xml
@@ -38,6 +38,7 @@
          user_resize="false"
          width="630">
             <web_browser
+             tab_stop="true"
               trusted_content="true" 
              follows="left|right|top|bottom"
              layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
index 304987c3d59c1470f7820dc744beee4ee8c506f9..74e01f359c6ce29b80bdab6d0f98cb72ebe7e1fb 100644
--- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
@@ -15,14 +15,14 @@
  layout="topleft"
  name="floater_sound_devices"
  title="Sound Devices"
- width="315">
+ width="490">
   <panel
     layout="topleft"
     follows="all"
     filename="panel_sound_devices.xml"
     name="device_settings_panel"
     width="400"
-    left="2"
+    left="10"
     top="26"
     class="panel_voice_device_settings"/>
   <text
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index e00586811b3d8188098324b342a92a2d7912f3b6..ab5c5433761e45fd55d60c01438769ec9c425b63 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -557,6 +557,9 @@
 	     	 	 	<menu_item_call.on_click
 	     	 	 	function="World.EnvPreset"
 	     	 	 	parameter="delete_water"/>
+	     	 	 	<menu_item_call.on_enable
+	     	 	 	function="World.EnableEnvPreset"
+	     	 	 	parameter="delete_water"/>
 	     	 	</menu_item_call>
 	     	</menu>
 	     	
@@ -583,6 +586,9 @@
 	     	 	 	<menu_item_call.on_click
 	     	 	 	function="World.EnvPreset"
 	     	 	 	parameter="delete_sky"/>
+	     	 	 	<menu_item_call.on_enable
+	     	 	 	function="World.EnableEnvPreset"
+	     	 	 	parameter="delete_sky"/>
 	     	 	</menu_item_call>
 	     	</menu>
 	     	
@@ -609,6 +615,9 @@
 	     	 	 	<menu_item_call.on_click
 	     	 	 	function="World.EnvPreset"
 	     	 	 	parameter="delete_day_cycle"/>
+	     	 	 	<menu_item_call.on_enable
+	     	 	 	function="World.EnableEnvPreset"
+	     	 	 	parameter="delete_day_cycle"/>
 	     	 	</menu_item_call>
 	     	</menu>
 	    </menu>
@@ -2931,18 +2940,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 />
 
             <menu_item_check
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index daf571297f29f9a6bf74a02494c7fc2ff9fe0e85..b6b8a337a121d3df9267b6184012f630a4379c63 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -234,7 +234,7 @@ background_visible="true"
 				height="23"
 				layout="topleft"
 				mouse_opaque="false"
-				name="bottom_bar_ls3"
+				name="bottom_bar_profile_ls"
 				left="0"
 				orientation="horizontal"
 				top="0"
diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
index 0a20a4a96569012a13a4ad138e8bda07c91fb3bb..46cbc1e87fdf91c127c8cf898191a5b0a3e0bd1a 100644
--- a/indra/newview/skins/default/xui/en/panel_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
@@ -11,6 +11,14 @@
       name="default_text">
         Default
     </panel.string>
+    <string
+     name="name_no_device">
+        No Device
+    </string>
+    <string
+     name="name_default_system_device">
+        Default System Device
+    </string>
     <icon
      follows="left|top"
      height="18"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index c1c1151eb97a302f6e8cf447d916ac4c93eac399..ee6317f367b676c7e85f06d7870398bae092671f 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2238,6 +2238,7 @@ Returns a string with the requested data about the region
 	<string name="Unknown">(Unknown)</string>
 	<string name="SummaryForTheWeek"    value="Summary for this week, beginning on " />
 	<string name="NextStipendDay"       value="The next stipend day is " />
+	<string name="GroupPlanningDate">[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]</string>
 	<string name="GroupIndividualShare" value="                      Group       Individual Share" />
 	<string name="GroupColumn"          value="                      Group" />
 	<string name="Balance">Balance</string>
@@ -2394,6 +2395,7 @@ Returns a string with the requested data about the region
 	<string name="GroupMoneyBalance">Balance</string>
 	<string name="GroupMoneyCredits">Credits</string>
 	<string name="GroupMoneyDebits">Debits</string>
+	<string name="GroupMoneyDate">[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]</string>
 
 	<!-- viewer object -->
 	<string name="ViewerObjectContents">Contents</string>
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 1c4b965f4694c805a02c2fdc10f6774a7ae197c5..83749fc5359164220146850268c9c2e650bac8bd 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -133,12 +133,12 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
 				0
 			</text>
 			<button label="Comprar terreno" left="130" name="Buy Land..." width="125"/>
+			<button label="Venta Linden" name="Linden Sale..." tool_tip="El terreno debe estar en propiedad, con contenido, y no estar en subasta."/>
 			<button label="Información de scripts" name="Scripts..."/>
 			<button label="Comprar para el grupo" name="Buy For Group..."/>
 			<button label="Comprar un pase" left="130" name="Buy Pass..." tool_tip="Un pase le da acceso temporal a este terreno." width="125"/>
 			<button label="Abandonar el terreno" name="Abandon Land..."/>
 			<button label="Reclamar el terreno" name="Reclaim Land..."/>
-			<button label="Venta Linden" name="Linden Sale..." tool_tip="El terreno debe estar en propiedad, con contenido, y no estar en subasta."/>
 		</panel>
 		<panel label="CONTRATO" name="land_covenant_panel">
 			<panel.string name="can_resell">
@@ -308,6 +308,9 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
 			<panel.string name="push_restrict_region_text">
 				Sin &apos;empujones&apos; (prevalece lo marcado en la región)
 			</panel.string>
+			<panel.string name="see_avs_text">
+				Ver a los residentes de esta parcela y chatear con ellos
+			</panel.string>
 			<text name="allow_label">
 				Permitir a otros Residentes:
 			</text>
@@ -370,6 +373,10 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
 				Foto:
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="Pulse para elegir una imagen"/>
+			<text name="allow_label5">
+				Permitir a los residentes de otras parcelas:
+			</text>
+			<check_box label="Ver los avatares" name="SeeAvatarsCheck" tool_tip="Permite que los residentes de otras parcelas vean a los residentes de ésta y chateen con ellos, y también que tú puedas verles y chatear con ellos."/>
 			<text name="landing_point">
 				Punto de llegada: [LANDING]
 			</text>
@@ -429,6 +436,11 @@ los media:
 				Sonido:
 			</text>
 			<check_box label="Restringir sonidos de objetos y gestos a esta parcela" name="check sound local"/>
+			<text name="Avatar Sounds:">
+				Sonidos de avatar:
+			</text>
+			<check_box label="Todos" name="all av sound check"/>
+			<check_box label="Grupo" name="group av sound check"/>
 			<text name="Voice settings:">
 				Voz:
 			</text>
diff --git a/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5e7df8530e198b190902fd58f7d9e3eef79e63dd
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<floater name="Delete Env Preset" title="ELIMINAR EL ENV PREDEFINIDO">
+	<string name="title_water">
+		Eliminar el agua predefinida
+	</string>
+	<string name="title_sky">
+		Eliminar cielo predefinido
+	</string>
+	<string name="title_day_cycle">
+		Eliminar ciclo del día
+	</string>
+	<string name="label_water">
+		Predefinido:
+	</string>
+	<string name="label_sky">
+		Predefinido:
+	</string>
+	<string name="label_day_cycle">
+		Ciclo del día:
+	</string>
+	<string name="msg_confirm_deletion">
+		¿Estás seguro de que quieres eliminar el valor predefinido seleccionado?
+	</string>
+	<string name="msg_sky_is_referenced">
+		No se puede quitar un valor predefinido al que se hace referencia en otro u otros ciclos del día.
+	</string>
+	<string name="combo_label">
+		-Selecciona un valor predefinido-
+	</string>
+	<text name="label">
+		Predefinido:
+	</text>
+	<button label="Borrar" name="delete"/>
+	<button label="Cancelar" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6ac46351dbbb681acbbdccab4b7d1c2e1551a480
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Day cycle" title="Editar ciclo del día">
+	<string name="title_new">
+		Crear un ciclo del día nuevo
+	</string>
+	<string name="title_edit">
+		Editar ciclo del día
+	</string>
+	<string name="hint_new">
+		Asigna un nombre al ciclo del día, ajusta los controles para crearlo y selecciona &quot;Guardar&quot;.
+	</string>
+	<string name="hint_edit">
+		Para editar el ciclo del día, ajusta los controles siguientes y selecciona &quot;Guardar&quot;.
+	</string>
+	<string name="combo_label">
+		-Selecciona un valor predefinido-
+	</string>
+	<text name="label">
+		Nombre predefinido:
+	</text>
+	<text name="note">
+		Nota: Si cambias el nombre del valor predefinido, crearás un predefinido nuevo y el actual no se modificará.
+	</text>
+	<text name="hint_item1">
+		- Pulsa en una pestaña para editar la configuración y el tiempo de un cielo determinado.
+	</text>
+	<text name="hint_item2">
+		- Pulsa y arrastra las pestañas para ajustar los tiempos de transición.
+	</text>
+	<text name="hint_item3">
+		- Usa el depurador para obtener una vista previa del ciclo del día.
+	</text>
+	<panel name="day_cycle_slider_panel">
+		<multi_slider initial_value="0" name="WLTimeSlider"/>
+		<multi_slider initial_value="0" name="WLDayCycleKeys"/>
+		<button label="Añadir clave" label_selected="Añadir clave" name="WLAddKey"/>
+		<button label="Eliminar clave" label_selected="Eliminar clave" name="WLDeleteKey"/>
+		<text name="WL12am">
+			12 AM
+		</text>
+		<text name="WL3am">
+			3 AM
+		</text>
+		<text name="WL6am">
+			6 AM
+		</text>
+		<text name="WL9amHash">
+			9 AM
+		</text>
+		<text name="WL12pmHash">
+			12 PM
+		</text>
+		<text name="WL3pm">
+			3 PM
+		</text>
+		<text name="WL6pm">
+			6 PM
+		</text>
+		<text name="WL9pm">
+			9 PM
+		</text>
+		<text name="WL12am2">
+			12 AM
+		</text>
+		<text name="WL12amHash">
+			|
+		</text>
+		<text name="WL3amHash">
+			I
+		</text>
+		<text name="WL6amHash">
+			|
+		</text>
+		<text name="WL9amHash2">
+			I
+		</text>
+		<text name="WL12pmHash2">
+			|
+		</text>
+		<text name="WL3pmHash">
+			I
+		</text>
+		<text name="WL6pmHash">
+			|
+		</text>
+		<text name="WL9pmHash">
+			I
+		</text>
+		<text name="WL12amHash2">
+			|
+		</text>
+	</panel>
+	<text name="WLCurKeyPresetText">
+		Configuración del cielo:
+	</text>
+	<combo_box label="Predefinido" name="WLSkyPresets"/>
+	<text name="WLCurKeyTimeText">
+		Hora:
+	</text>
+	<time name="time" value="6 AM"/>
+	<check_box label="Convertir en mi nuevo ciclo del día" name="make_default_cb"/>
+	<button label="Guardar" name="save"/>
+	<button label="Cancelar" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d2197b80fa561063abb061d413336bde6ba46396
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Sky Preset" title="Editar cielo predefinido">
+	<string name="title_new">
+		Crear un nuevo cielo predefinido
+	</string>
+	<string name="title_edit">
+		Editar cielo predefinido
+	</string>
+	<string name="hint_new">
+		Asigna un nombre al valor predefinido, ajusta los controles para crearlo y selecciona &quot;Guardar&quot;.
+	</string>
+	<string name="hint_edit">
+		Para editar el cielo predefinido, ajusta los controles y selecciona &quot;Guardar&quot;.
+	</string>
+	<string name="combo_label">
+		-Selecciona un valor predefinido-
+	</string>
+	<text name="hint">
+		Para editar el valor predefinido, ajusta los controles y selecciona &quot;Guardar&quot;.
+	</text>
+	<text name="label">
+		Nombre predefinido:
+	</text>
+	<text name="note">
+		Nota: Si cambias el nombre del valor predefinido, crearás un predefinido nuevo y el actual no se modificará.
+	</text>
+	<tab_container name="WindLight Tabs">
+		<panel label="ATMÓSFERA" name="Atmosphere">
+			<text name="BHText">
+				Horizonte azul
+			</text>
+			<text name="BDensText">
+				Cantidad de bruma
+			</text>
+			<text name="BDensText2">
+				Saturación
+			</text>
+			<text name="HDText">
+				Densidad de la bruma
+			</text>
+			<text name="DensMultText">
+				Densidad
+			</text>
+			<text name="WLDistanceMultText">
+				Distancia
+			</text>
+			<text name="MaxAltText">
+				Altitud máx.
+			</text>
+		</panel>
+		<panel label="LUZ" name="Lighting">
+			<text name="SLCText">
+				Color del sol y de la luna
+			</text>
+			<text name="WLAmbientText">
+				Ambiental
+			</text>
+			<text name="SunGlowText">
+				Resplandor del sol
+			</text>
+			<slider label="Visión" name="WLGlowB"/>
+			<slider label="Tamaño" name="WLGlowR"/>
+			<text name="WLStarText">
+				Brillo de las estrellas
+			</text>
+			<text name="SceneGammaText">
+				Gamma de la escena
+			</text>
+			<text name="TODText">
+				Posición del sol y la luna
+			</text>
+			<multi_slider initial_value="0" name="WLSunPos"/>
+			<text name="WL12amHash">
+				|
+			</text>
+			<text name="WL6amHash">
+				|
+			</text>
+			<text name="WL12pmHash2">
+				|
+			</text>
+			<text name="WL6pmHash">
+				|
+			</text>
+			<text name="WL12amHash2">
+				|
+			</text>
+			<text name="WL12am">
+				12 AM
+			</text>
+			<text name="WL6am">
+				6 AM
+			</text>
+			<text name="WL12pmHash">
+				12 PM
+			</text>
+			<text name="WL6pm">
+				6 PM
+			</text>
+			<text name="WL12am2">
+				12 AM
+			</text>
+			<time name="WLDayTime" value="6:00 AM"/>
+			<text name="WLEastAngleText">
+				Ángulo de elevación
+			</text>
+		</panel>
+		<panel label="NUBES" name="Clouds">
+			<text name="WLCloudColorText">
+				Color de las nubes
+			</text>
+			<text name="WLCloudColorText2">
+				Posición/Densidad de las nubes
+			</text>
+			<slider label="X" name="WLCloudX"/>
+			<slider label="Y" name="WLCloudY"/>
+			<slider label="D" name="WLCloudDensity"/>
+			<text name="WLCloudCoverageText">
+				Nubosidad
+			</text>
+			<text name="WLCloudScaleText">
+				Altitud de las nubes
+			</text>
+			<text name="WLCloudDetailText">
+				Detalle de las nubes (Posición/Densidad)
+			</text>
+			<slider label="X" name="WLCloudDetailX"/>
+			<slider label="Y" name="WLCloudDetailY"/>
+			<slider label="D" name="WLCloudDetailDensity"/>
+			<text name="WLCloudScrollXText">
+				Velocidad de las nubes: X
+			</text>
+			<check_box label="Lock" name="WLCloudLockX"/>
+			<text name="WLCloudScrollYText">
+				Velocidad de las nubes: Y
+			</text>
+			<check_box label="Lock" name="WLCloudLockY"/>
+		</panel>
+	</tab_container>
+	<check_box label="Convertir este valor predefinido en mi nueva configuración de cielo" name="make_default_cb"/>
+	<button label="Guardar" name="save"/>
+	<button label="Cancelar" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f90ad59f781828468bb04452e80784c93aec9585
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Water Preset" title="Editar el agua predefinida">
+	<string name="title_new">
+		Crear una nueva agua predefinida
+	</string>
+	<string name="title_edit">
+		Editar el agua predefinida
+	</string>
+	<string name="hint_new">
+		Asigna un nombre al valor predefinido, ajusta los controles para crearlo y selecciona &quot;Guardar&quot;.
+	</string>
+	<string name="hint_edit">
+		Para editar el agua predefinida, ajusta los controles y selecciona &quot;Guardar&quot;.
+	</string>
+	<string name="combo_label">
+		-Selecciona un valor predefinido-
+	</string>
+	<text name="hint">
+		Para editar el valor predefinido, ajusta los controles y selecciona &quot;Guardar&quot;.
+	</text>
+	<text name="label">
+		Nombre predefinido:
+	</text>
+	<text name="note">
+		Nota: Si cambias el nombre del valor predefinido, crearás un predefinido nuevo y el actual no se modificará.
+	</text>
+	<panel name="panel_water_preset">
+		<text name="water_color_label">
+			Color del agua
+		</text>
+		<text name="water_fog_density_label">
+			Transparencia
+		</text>
+		<text name="underwater_fog_modifier_label">
+			Modificar la claridad del agua
+		</text>
+		<text name="BHText">
+			Sentido de las olas grandes
+		</text>
+		<slider label="X" name="WaterWave1DirX"/>
+		<slider label="Y" name="WaterWave1DirY"/>
+		<text name="BDensText">
+			Tamaño de las ondulaciones
+		</text>
+		<text name="HDText">
+			Escala de Fresnel
+		</text>
+		<text name="FresnelOffsetText">
+			Coeficiente de reflexión
+		</text>
+		<text name="BHText2">
+			Sentido de las olas pequeñas
+		</text>
+		<slider label="X" name="WaterWave2DirX"/>
+		<slider label="Y" name="WaterWave2DirY"/>
+		<text name="DensMultText">
+			Refracción de la superficie
+		</text>
+		<text name="WaterScaleBelowText">
+			Refracción bajo la superficie
+		</text>
+		<text name="MaxAltText">
+			Desenfoque
+		</text>
+		<text name="BHText3">
+			Vista Normal
+		</text>
+	</panel>
+	<check_box label="Convertir este valor predefinido en mi nueva configuración de agua" name="make_default_cb"/>
+	<button label="Guardar" name="save"/>
+	<button label="Cancelar" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_environment_settings.xml b/indra/newview/skins/default/xui/es/floater_environment_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a9c5705d52e104563e1e6c71cbbc51d52cfe6662
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_environment_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="CONFIGURACIÓN DE ENTORNO">
+	<text name="note">
+		Puedes personalizar la configuración del entorno de tu visor con las opciones siguientes.
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Usar configuración de región" name="use_region_settings"/>
+		<radio_item label="Personalizar mi entorno" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="note">
+			Nota: La configuración personalizada no estará visible para otros usuarios.
+		</text>
+		<text name="water_settings_title">
+			Configuración de agua
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Selecciona un valor predefinido-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Cielo/Ciclo del día
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Cielo invariable" name="my_sky_settings"/>
+			<radio_item label="Ciclo del día" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Selecciona un valor predefinido-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Selecciona un valor predefinido-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="OK" name="ok_btn"/>
+	<button label="Cancelar" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_model_preview.xml b/indra/newview/skins/default/xui/es/floater_model_preview.xml
index 6208db75f93fe0205edb8be99079262edff78eff..0af44e1d91ffad42e6a5a3ef18aba4ffb01d2457 100644
--- a/indra/newview/skins/default/xui/es/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/es/floater_model_preview.xml
@@ -3,6 +3,9 @@
 	<string name="status_idle">
 		Inactivo
 	</string>
+	<string name="status_parse_error">
+		Problema de análisis de DAE - consulta los datos en el registro.
+	</string>
 	<string name="status_reading_file">
 		Cargando...
 	</string>
@@ -12,6 +15,9 @@
 	<string name="status_vertex_number_overflow">
 		Error: El número de intersección es superior a 65534. Cancelado.
 	</string>
+	<string name="bad_element">
+		Error: el elemento no es válido
+	</string>
 	<string name="high">
 		Alto
 	</string>
diff --git a/indra/newview/skins/default/xui/es/floater_model_wizard.xml b/indra/newview/skins/default/xui/es/floater_model_wizard.xml
index 019c2d382909c33c12dea09eaf58a772fe4d7b79..a2c6c456eb2adb00f4e0bcdcf82b8d4b3a458d98 100644
--- a/indra/newview/skins/default/xui/es/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/es/floater_model_wizard.xml
@@ -193,6 +193,9 @@
 	<string name="status_idle">
 		Inactivo
 	</string>
+	<string name="status_parse_error">
+		Problema de análisis de DAE - consulta los datos en el registro.
+	</string>
 	<string name="status_reading_file">
 		Cargando...
 	</string>
@@ -202,6 +205,9 @@
 	<string name="status_vertex_number_overflow">
 		Error: El número de intersección es superior a 65534. Cancelado.
 	</string>
+	<string name="bad_element">
+		Error: el elemento no es válido
+	</string>
 	<string name="high">
 		Alto
 	</string>
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index 78f18b745cabdca2ee78f6969e77e4307c0ef285..70eac1e2c54a215e76082f2f61f9153af3e5860f 100644
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -405,7 +405,7 @@
 			</combo_box>
 			<spinner label="Gravedad" name="Physics Gravity"/>
 			<spinner label="Fricción" name="Physics Friction"/>
-			<spinner label="Densidad" name="Physics Density"/>
+			<spinner label="Densidad en 100 kg/m^3" name="Physics Density"/>
 			<spinner label="Reemplazo" name="Physics Restitution"/>
 		</panel>
 		<panel label="Textura" name="Texture">
diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml
index c27d6247324206eca98b8f563d0203df1213653f..cabcacaed52295d2e16f5e3e6e306aa2551867dc 100644
--- a/indra/newview/skins/default/xui/es/menu_login.xml
+++ b/indra/newview/skins/default/xui/es/menu_login.xml
@@ -17,7 +17,7 @@
 		<menu_item_call label="Mostrar los &apos;TOS&apos;" name="TOS"/>
 		<menu_item_call label="Mostrar mensaje crítico" name="Critical"/>
 		<menu_item_call label="Prueba de navegadores de medios" name="Web Browser Test"/>
-		<menu_item_call label="Prueba de ventanas de contenidos web" name="Web Content Floater Test"/>
+		<menu_item_call label="Prueba de depuración de ventanas de contenido web" name="Web Content Floater Debug Test"/>
 		<menu_item_check label="Mostrar el selector de Grid" name="Show Grid Picker"/>
 		<menu_item_call label="Mostrar la consola de notificaciones" name="Show Notifications Console"/>
 	</menu>
diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml
index f0fe383c0c39c5e11a96d8b6038d719e6c215b31..1403e4db011cee81e24cbe4150c67e193d35bfca 100644
--- a/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
+<toggleable_menu name="menu_group_plus">
 	<menu_item_check label="Ordenar según las intervenciones recientes" name="sort_by_recent_speakers"/>
 	<menu_item_check label="Ordenar alfabéticamente" name="sort_name"/>
 	<menu_item_check label="Ordenar según distancia" name="sort_distance"/>
 	<menu_item_check label="Ver los iconos de la gente" name="view_icons"/>
+	<menu_item_check label="Ver mapa" name="view_map"/>
 	<menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index 0824e386d5f125a5f85450d1dabdef75a754c446..049a89aa068c2da9df93aaaedc550581a4a49302 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -31,6 +31,7 @@
 		<menu_item_call label="Mis grupos" name="My Groups"/>
 		<menu_item_check label="Chat" name="Nearby Chat"/>
 		<menu_item_call label="Gente cerca" name="Active Speakers"/>
+		<menu_item_check label="Chat de voz" name="Nearby Voice"/>
 	</menu>
 	<menu label="Mundo" name="World">
 		<menu_item_check label="Minimapa" name="Mini-Map"/>
@@ -63,8 +64,24 @@
 			<menu_item_call label="Mediodía" name="Noon"/>
 			<menu_item_call label="Atardecer" name="Sunset"/>
 			<menu_item_call label="Medianoche" name="Midnight"/>
-			<menu_item_call label="Hora del Estado" name="Revert to Region Default"/>
-			<menu_item_call label="Editor del entorno" name="Environment Editor"/>
+		</menu>
+		<menu label="Editor de entorno" name="Enviroment Editor">
+			<menu_item_call label="Configuración de entorno..." name="Enviroment Settings"/>
+			<menu label="Agua predefinida" name="Water Presets">
+				<menu_item_call label="Nuevo predefinido..." name="new_water_preset"/>
+				<menu_item_call label="Editar predefinido..." name="edit_water_preset"/>
+				<menu_item_call label="Eliminar predefinido..." name="delete_water_preset"/>
+			</menu>
+			<menu label="Cielos predefinidos" name="Sky Presets">
+				<menu_item_call label="Nuevo predefinido..." name="new_sky_preset"/>
+				<menu_item_call label="Editar predefinido..." name="edit_sky_preset"/>
+				<menu_item_call label="Eliminar predefinido..." name="delete_sky_preset"/>
+			</menu>
+			<menu label="Días predefinidos" name="Day Presets">
+				<menu_item_call label="Nuevo predefinido..." name="new_day_preset"/>
+				<menu_item_call label="Editar predefinido..." name="edit_day_preset"/>
+				<menu_item_call label="Eliminar predefinido..." name="delete_day_preset"/>
+			</menu>
 		</menu>
 	</menu>
 	<menu label="Construir" name="BuildTools">
diff --git a/indra/newview/skins/default/xui/es/menu_wearing_gear.xml b/indra/newview/skins/default/xui/es/menu_wearing_gear.xml
index 9d9ce75e5390b3958046209acabaf95f819c9e12..ec13f99a0161643010214dc8ab91cb6eca2d5b38 100644
--- a/indra/newview/skins/default/xui/es/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_wearing_gear.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
+<toggleable_menu name="Gear Wearing">
 	<menu_item_call label="Editar el vestuario" name="edit"/>
 	<menu_item_call label="Quitarme" name="takeoff"/>
-</menu>
+	<menu_item_call label="Copiar la lista del vestuario al portapapeles" name="copy"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index b2131fc038af04ea8fbdaef97a52eb87a4072fd3..a1cd6761428fe95325f0fd112b0cfe5f2b64ec70 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -1560,6 +1560,11 @@ Vuelve a intentarlo más tarde.
 			<button name="Cancel" text="Cancelar"/>
 		</form>
 	</notification>
+	<notification name="TooManyTeleportOffers">
+		Has intentado hacer [OFFERS] ofertas de teleporte,
+excediendo el límite de [LIMIT].
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="OfferTeleportFromGod">
 		¿Obligar a este Residente a ir a tu localización?
 		<form name="form">
@@ -1980,6 +1985,10 @@ Linden Lab
 		¿Estás seguro de que quieres borrar tu historial web, de viajes y de búsquedas?
 		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
 	</notification>
+	<notification name="ConfirmClearCache">
+		¿Estás seguro de que quieres vaciar la caché del visor?
+		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmClearCookies">
 		¿Estás seguro de que quieres limpiar tus cookies?
 		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sí"/>
@@ -2005,48 +2014,30 @@ Publícala en una página web para que otros puedan acceder fácilmente a esta p
 		¿Quieres sobrescribir la preselección guardada?
 		<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
 	</notification>
-	<notification name="WLDeletePresetAlert">
-		¿Quieres borrar [SKY]?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
-	</notification>
 	<notification name="WLNoEditDefault">
 		No puedes editar ni borrar una preselección por defecto.
 	</notification>
 	<notification name="WLMissingSky">
 		Este archivo del ciclo de un día se refiere a un archivo perdido de cielo: [SKY].
 	</notification>
-	<notification name="PPSaveEffectAlert">
-		Ya existe un efecto de procesamiento. ¿Quieres sobreescribirlo?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
-	</notification>
-	<notification name="NewSkyPreset">
-		Dame un nombre para el cielo nuevo.
-		<form name="form">
-			<input name="message">
-				Preselección nueva
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Cancelar"/>
-		</form>
+	<notification name="WLRegionApplyFail">
+		No se pudo aplicar la configuración a la región. El problema podría solucionarse saliendo de la región y regresando a ella. La razón especificada fue: [FAIL_REASON]
 	</notification>
-	<notification name="ExistsSkyPresetAlert">
-		¡Esa preselección ya existe!
+	<notification name="EnvCannotDeleteLastDayCycleKey">
+		No se puede eliminar la última clave de este ciclo del día, ya que no puedes vaciar la caché del día. En lugar de intentar eliminar la última clave restante y después intentar crear una nueva, debes modificarla.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="NewWaterPreset">
-		Dame un nombre para la nueva preselección de agua.
-		<form name="form">
-			<input name="message">
-				Preselección nueva
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Cancelar"/>
-		</form>
+	<notification name="DayCycleTooManyKeyframes">
+		No se pueden añadir más fotogramas clave a este ciclo del día. El número máximo de fotogramas clave para ciclos del día de alcance [SCOPE] es [MAX].
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="ExistsWaterPresetAlert">
-		¡Esa preselección ya existe!
+	<notification name="EnvUpdateRate">
+		La configuración de entorno de la región sólo puede actualizarse cada [WAIT] segundos. Espera por lo menos este tiempo y vuelve intentarlo.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="WaterNoEditDefault">
-		No puedes editar o borrar una preselección por defecto.
+	<notification name="PPSaveEffectAlert">
+		Ya existe un efecto de procesamiento. ¿Quieres sobreescribirlo?
+		<usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/>
 	</notification>
 	<notification name="ChatterBoxSessionStartError">
 		No se puede empezar una nueva sesión de chat con [RECIPIENT].
@@ -2337,6 +2328,9 @@ Aquí no puedes volar.
 	<notification name="NoBuild">
 		Este terreno tiene desactivado el poder construir. Aquí no puedes ni construir ni crear objetos.
 	</notification>
+	<notification name="SeeAvatars">
+		Esta parcela oculta los avatares y el chat de texto de otras parcelas. No podrás ver a los residentes que estén fuera la parcela ni ellos podrán verte a ti. El chat de texto regular del canal 0 también está bloqueado.
+	</notification>
 	<notification name="ScriptsStopped">
 		Un administrador ha detenido temporalmente los scripts en esta región.
 	</notification>
@@ -2763,7 +2757,9 @@ Se mostrará cuando haya suficiente espacio.
 		Selecciona los residentes con quienes deseas compartir.
 	</notification>
 	<notification name="MeshUploadError">
-		No se ha cargado [ETIQUETA]: [MENSAJE] [IDENTIFICADOR] [IDENTIFICADOR_FALTA_VALIDEZ]
+		[LABEL] no se pudo subir: [MESSAGE] [IDENTIFIER] 
+
+Consulta los detalles en el archivo de registro.
 	</notification>
 	<notification name="ShareItemsConfirmation">
 		¿Estás seguro de que quieres compartir los elementos siguientes?
diff --git a/indra/newview/skins/default/xui/es/panel_outfits_list.xml b/indra/newview/skins/default/xui/es/panel_outfits_list.xml
index 661b44e419fdc6d068251e9cac214956a804a633..3f8057f242ef62167ca2571b2002478b85b44958 100644
--- a/indra/newview/skins/default/xui/es/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/es/panel_outfits_list.xml
@@ -1,7 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Outfits">
+	<accordion name="outfits_accordion">
+		<no_matched_tabs_text name="no_matched_outfits_msg" value="¿No encuentras lo que buscas? Inténtalo con [secondlife:///app/search/all/[SEARCH_TERM] Buscar]."/>
+		<no_visible_tabs_text name="no_outfits_msg" value="Todavía no tienes vestuario. Inténtalo con [secondlife:///app/search/all/ Buscar]"/>
+	</accordion>
 	<panel name="bottom_panel">
-		<button name="options_gear_btn" tool_tip="Ver más opciones"/>
+		<menu_button name="options_gear_btn" tool_tip="Ver más opciones"/>
 		<button name="trash_btn" tool_tip="Eliminar el vestuario seleccionado"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
index a9d38dca2502807bae6ed8b37651ad1bf088cdbd..2fcbb00aed1f6d251010f0112cfa80871cf1a1bc 100644
--- a/indra/newview/skins/default/xui/es/panel_people.xml
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -76,7 +76,7 @@
 				<button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/>
 			</layout_panel>
 			<layout_panel name="teleport_btn_lp">
-				<button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
+				<button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
 			</layout_panel>
 		</layout_stack>
 		<layout_stack name="bottom_bar_ls1">
diff --git a/indra/newview/skins/default/xui/es/panel_place_profile.xml b/indra/newview/skins/default/xui/es/panel_place_profile.xml
index 3c363859a40754b7f5ca4b0d723963fc4616e417..e1cf1332e28515f96092f14fc8a4e700dc285162 100644
--- a/indra/newview/skins/default/xui/es/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/es/panel_place_profile.xml
@@ -64,6 +64,8 @@
 						<text name="scripts_value" value="Sí"/>
 						<text name="damage_label" value="Daño:"/>
 						<text name="damage_value" value="No"/>
+						<text name="see_avatars_label" value="Ver los avatares:"/>
+						<text name="see_avatars_value" value="No"/>
 						<button label="Acerca del terreno" name="about_land_btn"/>
 					</panel>
 				</accordion_tab>
diff --git a/indra/newview/skins/default/xui/es/panel_places.xml b/indra/newview/skins/default/xui/es/panel_places.xml
index 4c90a7e6b4636318e1022242dd986045aa28acf6..e9984b45123f5383a2a3e875af002ddcc7e08294 100644
--- a/indra/newview/skins/default/xui/es/panel_places.xml
+++ b/indra/newview/skins/default/xui/es/panel_places.xml
@@ -24,7 +24,7 @@
 						<menu_button label="▼" name="overflow_btn" tool_tip="Ver más opciones"/>
 					</layout_panel>
 				</layout_stack>
-				<layout_stack name="bottom_bar_ls3">
+				<layout_stack name="bottom_bar_profile_ls">
 					<layout_panel name="profile_btn_lp">
 						<button label="Perfil" name="profile_btn" tool_tip="Mostrar el perfil del lugar"/>
 					</layout_panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml
index 96e63e6fa027c0827485e295b726d67f4b27a4a0..620a95de4de5f40f5223ab71d2d63d9153c45ea2 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml
@@ -3,6 +3,19 @@
 	<panel.string name="aspect_ratio_text">
 		[NUM]:[DEN]
 	</panel.string>
+	<text name="Cache:">
+		Caché:
+	</text>
+	<spinner label="Tamaño de la caché (64 - 9984 MB)" name="cachesizespinner"/>
+	<text name="text_box5">
+		MB
+	</text>
+	<button label="Vaciar la caché" label_selected="Vaciar la caché" name="clear_cache"/>
+	<text name="Cache location">
+		Localización de la caché:
+	</text>
+	<button label="Elegir" label_selected="Elegir" name="set_cache"/>
+	<button label="Ubicación predeterminada" label_selected="Ubicación predeterminada" name="default_cache_location"/>
 	<text name="UI Size:">
 		Tamaño de la UI:
 	</text>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
index 75d175b262b261881a3b137f4f8a16dd3cdee3fa..5cb1654c70302d8e70c45ff2ddbfdeb41c9cbaa9 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
@@ -19,6 +19,7 @@
 	<check_box label="Activado" name="enable_voice_check"/>
 	<check_box label="Permitir la ejecución automática de los media" name="media_auto_play_btn" tool_tip="Marcar esto para permitir la ejecución automática de los media" value="true"/>
 	<check_box label="Ejecutar para otros avatares los media anexados" name="media_show_on_others_btn" tool_tip="Al desmarcar esto se esconderán los media anexados a otros avatares cercanos" value="true"/>
+	<check_box label="Reproducir sonidos de los gestos" name="gesture_audio_play_btn" tool_tip="Selecciona esta opción para escuchar los sonidos de los gestos" value="verdadero"/>
 	<text name="voice_chat_settings">
 		Configuración del chat de voz
 	</text>
@@ -35,28 +36,5 @@
 	<button label="Elegir la tecla" name="set_voice_hotkey_button"/>
 	<button name="set_voice_middlemouse_button" tool_tip="Reconfigurarlo al botón medio del ratón"/>
 	<button label="Dispositivos de entrada y salida" name="device_settings_btn" width="210"/>
-	<panel label="Configuración de dispositivos" name="device_settings_panel">
-		<panel.string name="default_text">
-			Por defecto
-		</panel.string>
-		<panel.string name="default system device">
-			Dispositivo del sistema por defecto
-		</panel.string>
-		<panel.string name="no device">
-			Ningún dispositivo
-		</panel.string>
-		<text name="Input">
-			Entrada
-		</text>
-		<text name="My volume label">
-			Mi volumen:
-		</text>
-		<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Cambia el volumen usando este deslizable"/>
-		<text name="wait_text">
-			Por favor, espera
-		</text>
-		<text name="Output">
-			Salida
-		</text>
-	</panel>
+	<panel label="Configuración de dispositivos" name="device_settings_panel"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_region_environment.xml b/indra/newview/skins/default/xui/es/panel_region_environment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a73f1deed40dbd0a014c210da6fce226b4cf4342
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_region_environment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Entorno" name="panel_env_info">
+	<text name="water_settings_title">
+		Selecciona la configuración de agua y cielo/ciclo del día que deseas que vean todos los visitantes de tu región. Más información
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Usar los valores predeterminados de Second Life" name="use_sl_default_settings"/>
+		<radio_item label="Usar la configuración siguiente" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="water_settings_title">
+			Configuración de agua
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Selecciona un valor predefinido-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Cielo/Ciclo del día
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Cielo invariable" name="my_sky_settings"/>
+			<radio_item label="Ciclo del día" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Selecciona un valor predefinido-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Selecciona un valor predefinido-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="Aplicar" name="apply_btn"/>
+	<button label="Cancelar" name="cancel_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_region_terrain.xml b/indra/newview/skins/default/xui/es/panel_region_terrain.xml
index 98b10e4895c8adc191e2c75a52513a6b079ca9e2..cb6c03dbb5fa2f6d67c2fbabf4838d0883115844 100644
--- a/indra/newview/skins/default/xui/es/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_terrain.xml
@@ -7,21 +7,56 @@
 		desconocida
 	</text>
 	<spinner label="Nivel del agua" name="water_height_spin"/>
-	<button label="?" name="water_height_help"/>
-	<spinner label="Límite de elevación &#10;del terreno" name="terrain_raise_spin"/>
-	<button label="?" name="terrain_raise_help"/>
-	<spinner label="Límite de bajada del &#10;terreno" name="terrain_lower_spin" bottom_delta="-34"/>
-	<button label="?" name="terrain_lower_help"/>
-	<check_box label="Usar el Sol del estado" name="use_estate_sun_check"/>
-	<button label="?" name="use_estate_sun_help"/>
-	<check_box label="Fijar el Sol" name="fixed_sun_check"/>
-	<button label="?" name="fixed_sun_help"/>
-	<slider label="Fase" name="sun_hour_slider"/>
+	<spinner label="Límite de elevación 
+del terreno" name="terrain_raise_spin"/>
+	<spinner bottom_delta="-34" label="Límite de bajada del 
+terreno" name="terrain_lower_spin"/>
+	<text name="detail_texture_text">
+		Texturas del terreno (requiere archivos .tga de 512x512, 24 bits)
+	</text>
+	<text name="height_text_lbl">
+		1 (bajo)
+	</text>
+	<text name="height_text_lbl2">
+		2
+	</text>
+	<text name="height_text_lbl3">
+		3
+	</text>
+	<text name="height_text_lbl4">
+		4 (alto)
+	</text>
+	<text name="height_text_lbl5">
+		Intervalos de elevación de textura
+	</text>
+	<text name="height_text_lbl10">
+		Estos valores representan la gama de mezclas para las texturas anteriores.
+	</text>
+	<text name="height_text_lbl11">
+		El valor BAJA mide en metros la altura MÁXIMA de la textura n.º 1, y el valor ALTA es la altura MÍNIMA de la textura n.º 4.
+	</text>
+	<text name="height_text_lbl6">
+		Noroeste
+	</text>
+	<text name="height_text_lbl7">
+		Noreste
+	</text>
+	<spinner label="Bajo" name="height_start_spin_1"/>
+	<spinner label="Bajo" name="height_start_spin_3"/>
+	<spinner label="Alto" name="height_range_spin_1"/>
+	<spinner label="Alto" name="height_range_spin_3"/>
+	<text name="height_text_lbl8">
+		Suroeste
+	</text>
+	<text name="height_text_lbl9">
+		Sureste
+	</text>
+	<spinner label="Bajo" name="height_start_spin_0"/>
+	<spinner label="Bajo" name="height_start_spin_2"/>
+	<spinner label="Alto" name="height_range_spin_0"/>
+	<spinner label="Alto" name="height_range_spin_2"/>
+	<button label="Descargar el RAW del terreno..." name="download_raw_btn" tool_tip="Disponible sólo para los propietarios del estado, no para los administradores" width="230"/>
+	<button label="Subir un RAW para el terreno..." name="upload_raw_btn" tool_tip="Disponible sólo para los propietarios del estado, no para los administradores" width="230"/>
+	<button label="Predeterminar este terreno" name="bake_terrain_btn" tool_tip="Definir el terreno actual como punto medio para los límites de elevación/bajada" width="230"/>
 	<button label="Aplicar" name="apply_btn"/>
-	<button width="230" label="Descargar el RAW del terreno..." name="download_raw_btn" tool_tip="Disponible sólo para los propietarios del estado, no para los administradores"/>
-	<button left="246" label="?" name="download_raw_help"/>
-	<button width="230" label="Subir un RAW para el terreno..." name="upload_raw_btn" tool_tip="Disponible sólo para los propietarios del estado, no para los administradores"/>
-	<button left="246" label="?" name="upload_raw_help"/>
-	<button width="230" label="Predeterminar este terreno" name="bake_terrain_btn" tool_tip="Definir el terreno actual como punto medio para los límites de elevación/bajada"/>
-	<button left="246" label="?" name="bake_terrain_help"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
index b233fdd7348665f8276fdaea282655683a63db45..84d19c703b101b962b5676a47f4a2234d3bc2bf1 100644
--- a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
@@ -1,6 +1,38 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Cosas" name="objects panel">
 	<panel label="" name="sidepanel__inventory_panel">
+		<layout_stack name="inventory_layout_stack">
+			<layout_panel name="inbox_layout_panel">
+				<panel label="" name="marketplace_inbox">
+					<string name="InboxLabelWithArg">
+						Objetos recibidos ([NUM])
+					</string>
+					<string name="InboxLabelNoArg">
+						Objetos recibidos
+					</string>
+					<button label="Objetos recibidos" name="inbox_btn"/>
+					<text name="inbox_fresh_new_count">
+						[NUM] Nuevos
+					</text>
+					<panel tool_tip="Drag and drop items to your inventory to manage and use them">
+						<text name="inbox_inventory_placeholder">
+							Aquí se entregarán las compras realizadas en el mercado.
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+			<layout_panel name="outbox_layout_panel">
+				<panel label="" name="marketplace_outbox">
+					<button label="Buzón de salida de comerciante" name="outbox_btn"/>
+					<button label="" name="outbox_sync_btn" tool_tip="Poner en el escaparate de Mi Mercado"/>
+					<panel tool_tip="Drag and drop items here to prepare them for sale on your storefront">
+						<text name="outbox_inventory_placeholder">
+							Configura tu cuenta de comerciante para utilizar esta función.
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+		</layout_stack>
 		<panel name="button_panel">
 			<layout_stack name="button_panel_ls">
 				<layout_panel name="info_btn_lp">
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 72d7493a0282efd296e41d8d1c70ea023e45056b..51ac3849edd54901fbe0be4ff52333ee5e679d40 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -1171,6 +1171,12 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="InventoryNoTexture">
 		No tienes en tu inventario una copia de esta textura
 	</string>
+	<string name="InventoryInboxNoItems">
+		Aquí se entregarán los objetos comprados en el mercado.
+	</string>
+	<string name="InventoryOutboxNoItems">
+		Arrastra objetos aquí para preparar una lista del escaparate de tu mercado.
+	</string>
 	<string name="no_transfer" value="(no transferible)"/>
 	<string name="no_modify" value="(no modificable)"/>
 	<string name="no_copy" value="(no copiable)"/>
@@ -1295,6 +1301,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="InvFolder All">
 		Todas
 	</string>
+	<string name="no_attachments">
+		No tienes puestos anexos
+	</string>
 	<string name="Buy">
 		Comprar
 	</string>
@@ -1630,6 +1639,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="IMTeen">
 		teen
 	</string>
+	<string name="Anyone">
+		cualquiera
+	</string>
 	<string name="RegionInfoError">
 		error
 	</string>
@@ -1846,6 +1858,12 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="Public">
 		Público
 	</string>
+	<string name="LocalSettings">
+		Configuración local
+	</string>
+	<string name="RegionSettings">
+		Configuración de la región
+	</string>
 	<string name="ClassifiedClicksTxt">
 		Clics: [TELEPORT] teleportes, [MAP] mapa, [PROFILE] perfil
 	</string>
@@ -3637,6 +3655,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="LocationCtrlGeneralIconTooltip">
 		Región General
 	</string>
+	<string name="LocationCtrlSeeAVsTooltip">
+		Los avatares están visibles y está permitido el chat fuera de esta parcela
+	</string>
 	<string name="UpdaterWindowTitle">
 		Actualizar [APP_NAME]
 	</string>
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 bef41bb1bab19669dc31f3ef7726f6a55384a53b..55dd913a22a27f8ad67a465784ddb5fbbd34023b 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -135,12 +135,12 @@
 				0
 			</text>
 			<button label="Acheter du terrain" label_selected="Acheter le terrain..." left_delta="60" name="Buy Land..." width="125"/>
+			<button label="Vente Linden" label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d&apos;un résident, avoir un contenu défini et ne pas être aux enchères."/>
 			<button label="Infos sur les scripts" name="Scripts..." width="110"/>
 			<button label="Acheter pour le groupe" label_selected="Acheter pour le groupe..." name="Buy For Group..."/>
 			<button label="Acheter un pass" label_selected="Acheter un pass..." left_delta="-127" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/>
 			<button label="Abandonner le terrain" label_selected="Abandonner le terrain..." name="Abandon Land..."/>
 			<button label="Récupérer le terrain" label_selected="Redemander le terrain…" name="Reclaim Land..."/>
-			<button label="Vente Linden" label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d&apos;un résident, avoir un contenu défini et ne pas être aux enchères."/>
 		</panel>
 		<panel label="RÈGLEMENT" name="land_covenant_panel">
 			<panel.string name="can_resell">
@@ -312,6 +312,9 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 			<panel.string name="push_restrict_region_text">
 				Pas de bousculades (les règles de la région priment)
 			</panel.string>
+			<panel.string name="see_avs_text">
+				Voir et chatter avec les résidents sur cette parcelle
+			</panel.string>
 			<text name="allow_label">
 				Autoriser les autres résidents à :
 			</text>
@@ -374,6 +377,10 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 				Photo :
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="Cliquez pour sélectionner une image"/>
+			<text name="allow_label5">
+				Autoriser les résidents sur les autres parcelles à :
+			</text>
+			<check_box label="Voir les avatars" name="SeeAvatarsCheck" tool_tip="Permettre aux résidents présents sur d&apos;autres parcelles de voir et chatter avec les résidents présents sur cette parcelle et vous permettre de les voir et de chatter avec eux."/>
 			<text name="landing_point">
 				Lieu d&apos;arrivée : [LANDING]
 			</text>
@@ -434,6 +441,11 @@ musique :
 				Son :
 			</text>
 			<check_box label="Limiter les gestes et sons d&apos;objet à cette parcelle" name="check sound local"/>
+			<text name="Avatar Sounds:">
+				Sons d&apos;avatar :
+			</text>
+			<check_box label="Tout le monde" name="all av sound check"/>
+			<check_box label="Groupe" name="group av sound check"/>
 			<text name="Voice settings:">
 				Voix :
 			</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..035bdbe5f36679474e4b8411c0cc4e0b6a15332d
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<floater name="Delete Env Preset" title="SUPPRIMER PRÉRÉGLAGE ENV.">
+	<string name="title_water">
+		Supprimer un préréglage de l&apos;eau
+	</string>
+	<string name="title_sky">
+		Supprimer un préréglage du ciel
+	</string>
+	<string name="title_day_cycle">
+		Supprimer un cycle du jour
+	</string>
+	<string name="label_water">
+		Préréglage :
+	</string>
+	<string name="label_sky">
+		Préréglage :
+	</string>
+	<string name="label_day_cycle">
+		Cycle du jour :
+	</string>
+	<string name="msg_confirm_deletion">
+		Voulez-vous vraiment supprimer le préréglage sélectionné ?
+	</string>
+	<string name="msg_sky_is_referenced">
+		Impossible de supprimer un préréglage référencé dans un ou plusieurs cycles du jour.
+	</string>
+	<string name="combo_label">
+		-Effectuer une sélection-
+	</string>
+	<text name="label">
+		Préréglage :
+	</text>
+	<button label="Supprimer" name="delete"/>
+	<button label="Annuler" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0100419bc53d07119bfa4cab227118b0e278fbc3
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Day cycle" title="Modifier un cycle du jour">
+	<string name="title_new">
+		Créer un nouveau cycle du jour
+	</string>
+	<string name="title_edit">
+		Modifier un cycle du jour
+	</string>
+	<string name="hint_new">
+		Donnez un nom au cycle du jour, ajustez les contrôles afin de le créer, puis cliquez sur Enregistrer.
+	</string>
+	<string name="hint_edit">
+		Pour modifier le cycle du jour, ajustez les contrôles ci-dessous, puis cliquez sur Enregistrer.
+	</string>
+	<string name="combo_label">
+		-Effectuer une sélection-
+	</string>
+	<text name="label">
+		Nom du préréglage :
+	</text>
+	<text name="note">
+		Remarque : si vous changez votre préréglage de nom, un nouveau préréglage sera créé et celui existant restera tel quel.
+	</text>
+	<text name="hint_item1">
+		- Cliquez sur un repère pour modifier le réglage du ciel et l&apos;heure associés.
+	</text>
+	<text name="hint_item2">
+		- Cliquez sur les repères et faites-les glisser afin de définir les heures de transition.
+	</text>
+	<text name="hint_item3">
+		- Déplacez le marqueur en forme de triangle pour afficher un aperçu du cycle du jour.
+	</text>
+	<panel name="day_cycle_slider_panel">
+		<multi_slider initial_value="0" name="WLTimeSlider"/>
+		<multi_slider initial_value="0" name="WLDayCycleKeys"/>
+		<button label="Ajouter clé" label_selected="Ajouter clé" name="WLAddKey"/>
+		<button label="Supprimer clé" label_selected="Supprimer clé" name="WLDeleteKey"/>
+		<text name="WL12am">
+			Min.
+		</text>
+		<text name="WL3am">
+			3h
+		</text>
+		<text name="WL6am">
+			6h
+		</text>
+		<text name="WL9amHash">
+			9h
+		</text>
+		<text name="WL12pmHash">
+			Midi
+		</text>
+		<text name="WL3pm">
+			15h
+		</text>
+		<text name="WL6pm">
+			18h
+		</text>
+		<text name="WL9pm">
+			21h
+		</text>
+		<text name="WL12am2">
+			Min.
+		</text>
+		<text name="WL12amHash">
+			|
+		</text>
+		<text name="WL3amHash">
+			I
+		</text>
+		<text name="WL6amHash">
+			|
+		</text>
+		<text name="WL9amHash2">
+			I
+		</text>
+		<text name="WL12pmHash2">
+			|
+		</text>
+		<text name="WL3pmHash">
+			I
+		</text>
+		<text name="WL6pmHash">
+			|
+		</text>
+		<text name="WL9pmHash">
+			I
+		</text>
+		<text name="WL12amHash2">
+			|
+		</text>
+	</panel>
+	<text name="WLCurKeyPresetText">
+		Réglage du ciel :
+	</text>
+	<combo_box label="Préréglage" name="WLSkyPresets"/>
+	<text name="WLCurKeyTimeText">
+		Heure :
+	</text>
+	<time name="time" value="6h"/>
+	<check_box label="Appliquer ce nouveau cycle du jour" name="make_default_cb"/>
+	<button label="Enregistrer" name="save"/>
+	<button label="Annuler" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4ec9bbb3ddcee156c73df1c00ad8b396a374adb3
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Sky Preset" title="Modifier un préréglage du ciel">
+	<string name="title_new">
+		Créer un nouveau préréglage du ciel
+	</string>
+	<string name="title_edit">
+		Modifier un préréglage du ciel
+	</string>
+	<string name="hint_new">
+		Donnez un nom à votre préréglage, ajustez les contrôles afin de le créer, puis cliquez sur Enregistrer.
+	</string>
+	<string name="hint_edit">
+		Pour modifier le préréglage du ciel, ajustez les contrôles, puis cliquez sur Enregistrer.
+	</string>
+	<string name="combo_label">
+		-Effectuer une sélection-
+	</string>
+	<text name="hint">
+		Pour modifier le préréglage, ajustez les contrôles, puis cliquez sur Enregistrer.
+	</text>
+	<text name="label">
+		Nom du préréglage :
+	</text>
+	<text name="note">
+		Remarque : si vous changez votre préréglage de nom, un nouveau préréglage sera créé et celui existant restera tel quel.
+	</text>
+	<tab_container name="WindLight Tabs">
+		<panel label="ATMOSPHÈRE" name="Atmosphere">
+			<text name="BHText">
+				Bleu de l&apos;horizon
+			</text>
+			<text name="BDensText">
+				Quantité de brume
+			</text>
+			<text name="BDensText2">
+				Densité du bleu
+			</text>
+			<text name="HDText">
+				Densité de la brume
+			</text>
+			<text name="DensMultText">
+				Multiplicateur de densité
+			</text>
+			<text name="WLDistanceMultText">
+				Multiplicateur de distance
+			</text>
+			<text name="MaxAltText">
+				Altitude maximum
+			</text>
+		</panel>
+		<panel label="LUMIÈRE" name="Lighting">
+			<text name="SLCText">
+				Couleur soleil/lune
+			</text>
+			<text name="WLAmbientText">
+				Éclairage ambiant
+			</text>
+			<text name="SunGlowText">
+				Rayonnement du soleil
+			</text>
+			<slider label="Netteté" name="WLGlowB"/>
+			<slider label="Taille" name="WLGlowR"/>
+			<text name="WLStarText">
+				Éclat des étoiles
+			</text>
+			<text name="SceneGammaText">
+				Gamma de la scène
+			</text>
+			<text name="TODText">
+				Position soleil/lune
+			</text>
+			<multi_slider initial_value="0" name="WLSunPos"/>
+			<text name="WL12amHash">
+				|
+			</text>
+			<text name="WL6amHash">
+				|
+			</text>
+			<text name="WL12pmHash2">
+				|
+			</text>
+			<text name="WL6pmHash">
+				|
+			</text>
+			<text name="WL12amHash2">
+				|
+			</text>
+			<text name="WL12am">
+				Min.
+			</text>
+			<text name="WL6am">
+				6h
+			</text>
+			<text name="WL12pmHash">
+				Midi
+			</text>
+			<text name="WL6pm">
+				18h
+			</text>
+			<text name="WL12am2">
+				Min.
+			</text>
+			<time name="WLDayTime" value="6h"/>
+			<text name="WLEastAngleText">
+				Angle du levant
+			</text>
+		</panel>
+		<panel label="NUAGES" name="Clouds">
+			<text name="WLCloudColorText">
+				Couleur des nuages
+			</text>
+			<text name="WLCloudColorText2">
+				Nuages - XY/Densité
+			</text>
+			<slider label="X" name="WLCloudX"/>
+			<slider label="Y" name="WLCloudY"/>
+			<slider label="D" name="WLCloudDensity"/>
+			<text name="WLCloudCoverageText">
+				Couverture nuageuse
+			</text>
+			<text name="WLCloudScaleText">
+				Altitude des nuages
+			</text>
+			<text name="WLCloudDetailText">
+				Détails des nuages - XY/Densité
+			</text>
+			<slider label="X" name="WLCloudDetailX"/>
+			<slider label="Y" name="WLCloudDetailY"/>
+			<slider label="D" name="WLCloudDetailDensity"/>
+			<text name="WLCloudScrollXText">
+				Direction et vitesse X
+			</text>
+			<check_box label="Verrouiller" name="WLCloudLockX"/>
+			<text name="WLCloudScrollYText">
+				Direction et vitesse Y
+			</text>
+			<check_box label="Verrouiller" name="WLCloudLockY"/>
+		</panel>
+	</tab_container>
+	<check_box label="Appliquer ce nouveau préréglage pour le ciel" name="make_default_cb"/>
+	<button label="Enregistrer" name="save"/>
+	<button label="Annuler" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81d9d34cfb606680cec823af1f31b6a1252ddca1
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Water Preset" title="Modifier un préréglage de l&apos;eau">
+	<string name="title_new">
+		Créer un nouveau préréglage de l&apos;eau
+	</string>
+	<string name="title_edit">
+		Modifier un préréglage de l&apos;eau
+	</string>
+	<string name="hint_new">
+		Donnez un nom à votre préréglage, ajustez les contrôles afin de le créer, puis cliquez sur Enregistrer.
+	</string>
+	<string name="hint_edit">
+		Pour modifier le préréglage de l&apos;eau, ajustez les contrôles, puis cliquez sur Enregistrer.
+	</string>
+	<string name="combo_label">
+		-Effectuer une sélection-
+	</string>
+	<text name="hint">
+		Pour modifier le préréglage, ajustez les contrôles, puis cliquez sur Enregistrer.
+	</text>
+	<text name="label">
+		Nom du préréglage :
+	</text>
+	<text name="note">
+		Remarque : si vous changez votre préréglage de nom, un nouveau préréglage sera créé et celui existant restera tel quel.
+	</text>
+	<panel name="panel_water_preset">
+		<text name="water_color_label">
+			Couleur du brouillard dans l&apos;eau
+		</text>
+		<text name="water_fog_density_label">
+			Densité du brouillard
+		</text>
+		<text name="underwater_fog_modifier_label">
+			Brouillard sous-marin
+		</text>
+		<text name="BHText">
+			Direction grande vague
+		</text>
+		<slider label="X" name="WaterWave1DirX"/>
+		<slider label="Y" name="WaterWave1DirY"/>
+		<text name="BDensText">
+			Échelle des vaguelettes
+		</text>
+		<text name="HDText">
+			Échelle Fresnel
+		</text>
+		<text name="FresnelOffsetText">
+			Décalage Fresnel
+		</text>
+		<text name="BHText2">
+			Direction petite vague
+		</text>
+		<slider label="X" name="WaterWave2DirX"/>
+		<slider label="Y" name="WaterWave2DirY"/>
+		<text name="DensMultText">
+			Réfraction au-dessus
+		</text>
+		<text name="WaterScaleBelowText">
+			Réfraction en dessous
+		</text>
+		<text name="MaxAltText">
+			Multiplicateur de flou
+		</text>
+		<text name="BHText3">
+			Normal Map
+		</text>
+	</panel>
+	<check_box label="Appliquer ce nouveau préréglage pour l&apos;eau" name="make_default_cb"/>
+	<button label="Enregistrer" name="save"/>
+	<button label="Annuler" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_environment_settings.xml b/indra/newview/skins/default/xui/fr/floater_environment_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9ea47a3dd719116335791d2ea1275aca3be805f8
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_environment_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="PARAMÈTRES D&apos;ENVIRONNEMENT">
+	<text name="note">
+		Utilisez les options ci-dessous pour personnaliser l&apos;environnement de votre client.
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Utiliser les réglages de la région" name="use_region_settings"/>
+		<radio_item label="Personnaliser mon environnement" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="note">
+			Remarque : les autres utilisateurs ne pourront pas voir votre configuration personnalisée.
+		</text>
+		<text name="water_settings_title">
+			Réglage de l&apos;eau
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Effectuer une sélection-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Ciel / Cycle du jour
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Ciel fixe" name="my_sky_settings"/>
+			<radio_item label="Cycle du jour" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Effectuer une sélection-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Effectuer une sélection-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="OK" name="ok_btn"/>
+	<button label="Annuler" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_model_preview.xml b/indra/newview/skins/default/xui/fr/floater_model_preview.xml
index 213847bbd0b0153fb7bf965a474972d4938fd662..4788f674c889a7fbb8d62a264e5ce08cec5ca5de 100644
--- a/indra/newview/skins/default/xui/fr/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_model_preview.xml
@@ -3,6 +3,9 @@
 	<string name="status_idle">
 		Inactif
 	</string>
+	<string name="status_parse_error">
+		Problème d&apos;analyse de fichier .dae ; reportez-vous au journal pour plus de détails.
+	</string>
 	<string name="status_reading_file">
 		Chargement...
 	</string>
@@ -12,6 +15,9 @@
 	<string name="status_vertex_number_overflow">
 		Erreur : valeur de sommet supérieure à 65534. Opération abandonnée.
 	</string>
+	<string name="bad_element">
+		Erreur : élément non valide
+	</string>
 	<string name="high">
 		Élevé
 	</string>
diff --git a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
index bb64361959928686fe178feb4b2756258e345a6b..ebb87f3ba4087f7345c1d44daf38a80d56a3d4a5 100644
--- a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
@@ -193,6 +193,9 @@
 	<string name="status_idle">
 		Inactif
 	</string>
+	<string name="status_parse_error">
+		Problème d&apos;analyse de fichier .dae ; reportez-vous au journal pour plus de détails.
+	</string>
 	<string name="status_reading_file">
 		Chargement...
 	</string>
@@ -202,6 +205,9 @@
 	<string name="status_vertex_number_overflow">
 		Erreur : valeur de sommet supérieure à 65534. Opération abandonnée.
 	</string>
+	<string name="bad_element">
+		Erreur : élément non valide
+	</string>
 	<string name="high">
 		Élevé
 	</string>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index 09d77a8d34ca757309e5d12d4690334d36b39861..908048192e824772ca6649444c1f62af1250904d 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -405,7 +405,7 @@
 			</combo_box>
 			<spinner label="Gravité" name="Physics Gravity"/>
 			<spinner label="Friction" name="Physics Friction"/>
-			<spinner label="Densité" name="Physics Density"/>
+			<spinner label="Densité en 100 kg/m^3" name="Physics Density"/>
 			<spinner label="Restitution" name="Physics Restitution"/>
 		</panel>
 		<panel label="Texture" name="Texture">
diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml
index 400c77e51a5746e102d3cd07295a9bfae67e1be4..6b96a16e75b6173f6ff9616b3f971a97dcc949e1 100644
--- a/indra/newview/skins/default/xui/fr/menu_login.xml
+++ b/indra/newview/skins/default/xui/fr/menu_login.xml
@@ -18,7 +18,7 @@
 		<menu_item_call label="Afficher les conditions d&apos;utilisation" name="TOS"/>
 		<menu_item_call label="Afficher le message critique" name="Critical"/>
 		<menu_item_call label="Test du navigateur de médias" name="Web Browser Test"/>
-		<menu_item_call label="Test de la fenêtre flottante du contenu Web" name="Web Content Floater Test"/>
+		<menu_item_call label="Test de débogage de la fenêtre flottante du contenu Web" name="Web Content Floater Debug Test"/>
 		<menu_item_check label="Afficher le sélecteur de grille" name="Show Grid Picker"/>
 		<menu_item_call label="Afficher la console des notifications" name="Show Notifications Console"/>
 	</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml
index 45f97e062e48271c99c3f22eba1fdd32a0dcd7b4..0aad174fbdb25316f25b7993158dc464c7b589c9 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
+<toggleable_menu name="menu_group_plus">
 	<menu_item_check label="Trier par intervenants récents" name="sort_by_recent_speakers"/>
 	<menu_item_check label="Trier par nom" name="sort_name"/>
 	<menu_item_check label="Trier par distance" name="sort_distance"/>
 	<menu_item_check label="Afficher les icônes des résidents" name="view_icons"/>
+	<menu_item_check label="Afficher la carte" name="view_map"/>
 	<menu_item_call label="Afficher les résidents et les objets interdits" name="show_blocked_list"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index d614cfe00c2f69113b31d73f55a6aaf3522b8071..ccea1e45701c96f5bd1b33558f2b871c053bef72 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -31,6 +31,7 @@
 		<menu_item_call label="Mes groupes" name="My Groups"/>
 		<menu_item_check label="Chat près de moi" name="Nearby Chat"/>
 		<menu_item_call label="Personnes près de moi" name="Active Speakers"/>
+		<menu_item_check label="Chat vocal près de vous" name="Nearby Voice"/>
 	</menu>
 	<menu label="Monde" name="World">
 		<menu_item_check label="Mini-carte" name="Mini-Map"/>
@@ -63,8 +64,24 @@
 			<menu_item_call label="Milieu de journée" name="Noon"/>
 			<menu_item_call label="Coucher de soleil" name="Sunset"/>
 			<menu_item_call label="Minuit" name="Midnight"/>
-			<menu_item_call label="Heure du domaine" name="Revert to Region Default"/>
-			<menu_item_call label="Éditeur d&apos;environnement" name="Environment Editor"/>
+		</menu>
+		<menu label="Éditeur d&apos;environnement" name="Enviroment Editor">
+			<menu_item_call label="Paramètres d&apos;environnement..." name="Enviroment Settings"/>
+			<menu label="Préréglages de l&apos;eau" name="Water Presets">
+				<menu_item_call label="Nouveau préréglage..." name="new_water_preset"/>
+				<menu_item_call label="Modifier un préréglage..." name="edit_water_preset"/>
+				<menu_item_call label="Supprimer un préréglage..." name="delete_water_preset"/>
+			</menu>
+			<menu label="Préréglages du ciel" name="Sky Presets">
+				<menu_item_call label="Nouveau préréglage..." name="new_sky_preset"/>
+				<menu_item_call label="Modifier un préréglage..." name="edit_sky_preset"/>
+				<menu_item_call label="Supprimer un préréglage..." name="delete_sky_preset"/>
+			</menu>
+			<menu label="Préréglages du jour" name="Day Presets">
+				<menu_item_call label="Nouveau préréglage..." name="new_day_preset"/>
+				<menu_item_call label="Modifier un préréglage..." name="edit_day_preset"/>
+				<menu_item_call label="Supprimer un préréglage..." name="delete_day_preset"/>
+			</menu>
 		</menu>
 	</menu>
 	<menu label="Construire" name="BuildTools">
diff --git a/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml b/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml
index 0ca9fe18791d1bfe68ad9cc02f073fa7ba626fb0..c3d9d908b0e840dfe23ca3456a94c7bd0a363d89 100644
--- a/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
+<toggleable_menu name="Gear Wearing">
 	<menu_item_call label="Modifier la tenue" name="edit"/>
 	<menu_item_call label="Enlever" name="takeoff"/>
-</menu>
+	<menu_item_call label="Copier la liste de la tenue dans le presse-papiers" name="copy"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 6bfab25087a177f65f7051083b3d8e78cbb9b2ae..52b8e8569a0715e6fcae5e210b6dbf0f409cef7d 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -1550,6 +1550,11 @@ Veuillez réessayer ultérieurement.
 			<button name="Cancel" text="Annuler"/>
 		</form>
 	</notification>
+	<notification name="TooManyTeleportOffers">
+		Vous avez essayé d&apos;effectuer [OFFERS] offres de téléportation,
+or ce nombre dépasse la limite autorisée fixée à [LIMIT].
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="OfferTeleportFromGod">
 		Exiger du résident qu&apos;il vienne vous rejoindre ?
 		<form name="form">
@@ -1971,6 +1976,10 @@ Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ?
 		Êtes-vous certain de vouloir supprimer l&apos;historique de vos visites et recherches ?
 		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
 	</notification>
+	<notification name="ConfirmClearCache">
+		Voulez-vous vraiment vider le cache de votre client ?
+		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmClearCookies">
 		Êtes-vous certain de vouloir supprimer vos cookies ?
 		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/>
@@ -1996,48 +2005,30 @@ Liez-la à partir d&apos;une page web pour permettre aux autres résidents d&apo
 		Voulez-vous écraser l&apos;option précédemment enregistrée ?
 		<usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
 	</notification>
-	<notification name="WLDeletePresetAlert">
-		Voulez-vous supprimer [SKY] ?
-		<usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
-	</notification>
 	<notification name="WLNoEditDefault">
 		Vous ne pouvez pas modifier ou supprimer un préréglage par défaut.
 	</notification>
 	<notification name="WLMissingSky">
 		Une dossier semble manquer au Cycle du jour : [SKY].
 	</notification>
-	<notification name="PPSaveEffectAlert">
-		Certains effets post-traitement existent. Voulez-vous quand même écraser ce fichier ?
-		<usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
-	</notification>
-	<notification name="NewSkyPreset">
-		Nommez le nouveau ciel.
-		<form name="form">
-			<input name="message">
-				Nouveau préréglage
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuler"/>
-		</form>
+	<notification name="WLRegionApplyFail">
+		Impossible d&apos;appliquer les réglages à la région. Le problème est parfois résolu en quittant la région puis en y revenant. Motif fourni : [FAIL_REASON]
 	</notification>
-	<notification name="ExistsSkyPresetAlert">
-		Ce préréglage existe déjà !
+	<notification name="EnvCannotDeleteLastDayCycleKey">
+		Impossible de supprimer la dernière clé de ce cycle du jour car ce dernier ne peut pas être vide. Modifiez la dernière clé restante au lieu d&apos;essayer de la supprimer puis d&apos;en créer une nouvelle.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="NewWaterPreset">
-		Nommez ce nouveau préréglage d&apos;eau.
-		<form name="form">
-			<input name="message">
-				Nouveau préréglage
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuler"/>
-		</form>
+	<notification name="DayCycleTooManyKeyframes">
+		Impossible d&apos;ajouter plus d&apos;images-clés à ce cycle du jour. Un maximum de [MAX] images-clés peut être associé aux cycles du jour de type [SCOPE].
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="ExistsWaterPresetAlert">
-		Ce préréglage existe déjà !
+	<notification name="EnvUpdateRate">
+		Vous ne pouvez mettre à jour les paramètres d&apos;environnement d&apos;une région que toutes les [WAIT] secondes. Veuillez patienter pendant au moins ce délai avant de réessayer.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="WaterNoEditDefault">
-		Vous ne pouvez pas modifier ou supprimer un préréglage par défaut.
+	<notification name="PPSaveEffectAlert">
+		Certains effets post-traitement existent. Voulez-vous quand même écraser ce fichier ?
+		<usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/>
 	</notification>
 	<notification name="ChatterBoxSessionStartError">
 		Impossible de démarrer une nouvelle session de chat avec [RECIPIENT].
@@ -2329,6 +2320,9 @@ Vous ne pouvez pas voler ici.
 	<notification name="NoBuild">
 		La construction est interdite dans cette zone. Vous ne pouvez pas construite ou rezzer d&apos;objets ici.
 	</notification>
+	<notification name="SeeAvatars">
+		Cette parcelle masque les avatars et le chat écrit des autres parcelles. Vous ne pouvez pas voir les résidents qui se trouvent en dehors, et ceux qui se trouvent en dehors ne peuvent pas vous voir. Le chat écrit habituel sur le canal 0 est également bloqué.
+	</notification>
 	<notification name="ScriptsStopped">
 		Un administrateur a temporairement stoppé les scripts dans cette région.
 	</notification>
@@ -2756,7 +2750,9 @@ Le bouton sera affiché quand il y aura suffisamment de place.
 		Sélectionnez les résidents avec lesquels partager l&apos;élément.
 	</notification>
 	<notification name="MeshUploadError">
-		Échec de chargement de [LABEL] : [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER]
+		Échec de chargement de [LABEL] : [MESSAGE] [IDENTIFIER] 
+
+Voir le fichier journal pour plus de détails.
 	</notification>
 	<notification name="ShareItemsConfirmation">
 		Voulez-vous vraiment partager les articles suivants :
diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_list.xml b/indra/newview/skins/default/xui/fr/panel_outfits_list.xml
index ab352deec49f73460c0dd09300e42f2d5f5913e4..416353e1d4b71c8b1060b77c4742af1c88ee9f25 100644
--- a/indra/newview/skins/default/xui/fr/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/fr/panel_outfits_list.xml
@@ -1,7 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Outfits">
+	<accordion name="outfits_accordion">
+		<no_matched_tabs_text name="no_matched_outfits_msg" value="Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/all/[SEARCH_TERM] Rechercher]."/>
+		<no_visible_tabs_text name="no_outfits_msg" value="Aucune tenue n&apos;est actuellement en votre possession. Essayez [secondlife:///app/search/all Rechercher]."/>
+	</accordion>
 	<panel name="bottom_panel">
-		<button name="options_gear_btn" tool_tip="Afficher d&apos;autres options"/>
+		<menu_button name="options_gear_btn" tool_tip="Afficher d&apos;autres options"/>
 		<button name="trash_btn" tool_tip="Supprimer la tenue sélectionnée"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml
index b24c340708490c1e6d7eaa6d3c4c9730e16c6b0b..f035853efcdb1691bd0c5c0dbbddfed37549e393 100644
--- a/indra/newview/skins/default/xui/fr/panel_people.xml
+++ b/indra/newview/skins/default/xui/fr/panel_people.xml
@@ -67,16 +67,16 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife://
 				<button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/>
 			</layout_panel>
 			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="Ouvrir une session IM"/>
+				<button label="IM" name="im_btn" tool_tip="Ouvrir une session IM."/>
 			</layout_panel>
 			<layout_panel name="call_btn_lp">
-				<button label="Appel" name="call_btn" tool_tip="Appeler ce résident"/>
+				<button label="Appel" name="call_btn" tool_tip="Appeler ce résident."/>
 			</layout_panel>
 			<layout_panel name="share_btn_lp">
-				<button label="Partager" name="share_btn" tool_tip="Partager un article de l&apos;inventaire"/>
+				<button label="Partager" name="share_btn" tool_tip="Partager un article de l&apos;inventaire."/>
 			</layout_panel>
 			<layout_panel name="teleport_btn_lp">
-				<button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation"/>
+				<button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation."/>
 			</layout_panel>
 		</layout_stack>
 		<layout_stack name="bottom_bar_ls1">
diff --git a/indra/newview/skins/default/xui/fr/panel_place_profile.xml b/indra/newview/skins/default/xui/fr/panel_place_profile.xml
index 3c2c1b9d3740da68a70d163fe92fc3d7c16ce30e..30be83889642a81f5a37ca8d413e21aa4aa550c8 100644
--- a/indra/newview/skins/default/xui/fr/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_place_profile.xml
@@ -68,6 +68,8 @@
 						<text name="scripts_value" value="Activé"/>
 						<text name="damage_label" value="Dégâts :"/>
 						<text name="damage_value" value="Désactivé"/>
+						<text name="see_avatars_label" value="Voir les avatars :"/>
+						<text name="see_avatars_value" value="Désactivé"/>
 						<button label="À propos du terrain" name="about_land_btn"/>
 					</panel>
 				</accordion_tab>
diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml
index e252c224f83a1308ddc85d9419a13be8d5b4fce6..509d167704870a2801adab0d3125c700c3b51736 100644
--- a/indra/newview/skins/default/xui/fr/panel_places.xml
+++ b/indra/newview/skins/default/xui/fr/panel_places.xml
@@ -24,7 +24,7 @@
 						<menu_button label="â–¼" name="overflow_btn" tool_tip="Afficher d&apos;autres options"/>
 					</layout_panel>
 				</layout_stack>
-				<layout_stack name="bottom_bar_ls3">
+				<layout_stack name="bottom_bar_profile_ls">
 					<layout_panel name="profile_btn_lp">
 						<button label="Profil" name="profile_btn" tool_tip="Afficher le profil de l&apos;endroit"/>
 					</layout_panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
index 3468afbafe1a6bab46bbd8a3279e3441178b1c97..3f3d0f51f45df646499f7b5b02450053329a67a2 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
@@ -3,6 +3,19 @@
 	<panel.string name="aspect_ratio_text">
 		[NUM]:[DEN]
 	</panel.string>
+	<text name="Cache:">
+		Cache :
+	</text>
+	<spinner label="Taille du cache (64 - 9984 Mo)" name="cachesizespinner"/>
+	<text name="text_box5">
+		Mo
+	</text>
+	<button label="Vider le cache" label_selected="Vider le cache" name="clear_cache"/>
+	<text name="Cache location">
+		Emplacement du cache :
+	</text>
+	<button label="Parcourir" label_selected="Parcourir" name="set_cache"/>
+	<button label="Par défaut" label_selected="Par défaut" name="default_cache_location"/>
 	<text name="UI Size:">
 		Taille d&apos;interface :
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
index a404aae483f16c4fb303ec670332c0b317235fa4..deaec2e14fa7f46962e8f724aedb8d856e53c52d 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
@@ -19,6 +19,7 @@
 	<check_box label="Activé" name="enable_voice_check"/>
 	<check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média" value="true"/>
 	<check_box label="Lecture du média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="true"/>
+	<check_box label="Lire les sons des gestes" name="gesture_audio_play_btn" tool_tip="Cochez cette case pour entendre les sons associés aux gestes." value="true"/>
 	<text name="voice_chat_settings">
 		Paramètres du chat vocal
 	</text>
@@ -35,28 +36,5 @@
 	<button label="Définir la touche" name="set_voice_hotkey_button"/>
 	<button name="set_voice_middlemouse_button" tool_tip="Réinitialiser sur le bouton central de la souris"/>
 	<button label="Périphériques d&apos;entrée/de sortie" name="device_settings_btn"/>
-	<panel label="Paramètres du matériel" name="device_settings_panel">
-		<panel.string name="default_text">
-			Défaut
-		</panel.string>
-		<panel.string name="default system device">
-			Périphérique système par défaut
-		</panel.string>
-		<panel.string name="no device">
-			Aucun périphérique
-		</panel.string>
-		<text name="Input">
-			Entrée
-		</text>
-		<text name="My volume label">
-			Mon volume :
-		</text>
-		<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Régler le volume avec le curseur"/>
-		<text name="wait_text">
-			Veuillez patienter
-		</text>
-		<text name="Output">
-			Sortie
-		</text>
-	</panel>
+	<panel label="Paramètres du matériel" name="device_settings_panel"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_environment.xml b/indra/newview/skins/default/xui/fr/panel_region_environment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d18503db86404a87d1e195ddb2eec3da2e8d7868
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_region_environment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Environnement" name="panel_env_info">
+	<text name="water_settings_title">
+		Sélectionnez les réglages d&apos;eau et de ciel/cycle du jour que vous souhaitez afficher pour tous les résidents visitant votre région. En savoir plus
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Utiliser les réglages par défaut de Second Life" name="use_sl_default_settings"/>
+		<radio_item label="Utiliser les réglages suivants" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="water_settings_title">
+			Réglage de l&apos;eau
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Effectuer une sélection-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Ciel / Cycle du jour
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Ciel fixe" name="my_sky_settings"/>
+			<radio_item label="Cycle du jour" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Effectuer une sélection-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Effectuer une sélection-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="Appliquer" name="apply_btn"/>
+	<button label="Annuler" name="cancel_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_terrain.xml b/indra/newview/skins/default/xui/fr/panel_region_terrain.xml
index 4d7652eb6f7d87d433c741e23aee69bdfcf73eb3..d7e321d06d772635ff3d14922471a0dab22c5a30 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_terrain.xml
@@ -7,21 +7,56 @@
 		(inconnue)
 	</text>
 	<spinner label="Niveau de l&apos;eau" name="water_height_spin"/>
-	<button label="?" name="water_height_help"/>
-	<spinner label="Limite d&apos;élévation du &#10;terrain" name="terrain_raise_spin"/>
-	<button label="?" name="terrain_raise_help"/>
-	<spinner label="Limite d&apos;abaissement &#10;du terrain" name="terrain_lower_spin" bottom_delta="-34"/>
-	<button label="?" name="terrain_lower_help"/>
-	<check_box label="Utiliser le soleil du domaine" name="use_estate_sun_check"/>
-	<button label="?" name="use_estate_sun_help"/>
-	<check_box label="Soleil fixe" name="fixed_sun_check"/>
-	<button label="?" name="fixed_sun_help"/>
-	<slider label="Phase" name="sun_hour_slider"/>
-	<button label="Appliquer" name="apply_btn"/>
+	<spinner label="Limite d&apos;élévation du 
+terrain" name="terrain_raise_spin"/>
+	<spinner bottom_delta="-34" label="Limite d&apos;abaissement 
+du terrain" name="terrain_lower_spin"/>
+	<text name="detail_texture_text">
+		Textures du terrain (fichiers .tga 512 x 512, 24 bit requis)
+	</text>
+	<text name="height_text_lbl">
+		1 (Bas)
+	</text>
+	<text name="height_text_lbl2">
+		2
+	</text>
+	<text name="height_text_lbl3">
+		3
+	</text>
+	<text name="height_text_lbl4">
+		4 (Haut)
+	</text>
+	<text name="height_text_lbl5">
+		Limites d&apos;élévation de texture
+	</text>
+	<text name="height_text_lbl10">
+		Ces valeurs représentent les limites de mélange pour les textures ci-dessus.
+	</text>
+	<text name="height_text_lbl11">
+		En mètres, la valeur BAS correspond à la hauteur MAXIMUM de la texture n°1 et la valeur HAUT à la hauteur MINIMUM de la texture n°4.
+	</text>
+	<text name="height_text_lbl6">
+		Nord-ouest
+	</text>
+	<text name="height_text_lbl7">
+		Nord-est
+	</text>
+	<spinner label="Bas" name="height_start_spin_1"/>
+	<spinner label="Bas" name="height_start_spin_3"/>
+	<spinner label="Haut" name="height_range_spin_1"/>
+	<spinner label="Haut" name="height_range_spin_3"/>
+	<text name="height_text_lbl8">
+		Sud-ouest
+	</text>
+	<text name="height_text_lbl9">
+		Sud-est
+	</text>
+	<spinner label="Bas" name="height_start_spin_0"/>
+	<spinner label="Bas" name="height_start_spin_2"/>
+	<spinner label="Haut" name="height_range_spin_0"/>
+	<spinner label="Haut" name="height_range_spin_2"/>
 	<button label="Télécharger le terrain au format RAW..." name="download_raw_btn" tool_tip="Réservé aux propriétaires de domaine, pas aux gérants" width="230"/>
-	<button label="?" name="download_raw_help" left="246" />
 	<button label="Charger le terrain au format RAW..." name="upload_raw_btn" tool_tip="Réservé aux propriétaires de domaine, pas aux gérants" width="230"/>
-	<button label="?" name="upload_raw_help" left="246" />
 	<button label="Figer le terrain" name="bake_terrain_btn" tool_tip="Définir le terrain actuel comme point central pour les limites d&apos;élévation/abaissement"/>
-	<button label="?" name="bake_terrain_help"/>
+	<button label="Appliquer" name="apply_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml
index 3c4d2626c1d3e2c799c8776fc524bd70d0437bf4..83543e3d0b51a68888bb2ee986f75d696bcbc39f 100644
--- a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml
@@ -1,6 +1,38 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Choses" name="objects panel">
 	<panel label="" name="sidepanel__inventory_panel">
+		<layout_stack name="inventory_layout_stack">
+			<layout_panel name="inbox_layout_panel">
+				<panel label="" name="marketplace_inbox">
+					<string name="InboxLabelWithArg">
+						Articles reçus ([NUM])
+					</string>
+					<string name="InboxLabelNoArg">
+						Articles reçus
+					</string>
+					<button label="Articles reçus" name="inbox_btn"/>
+					<text name="inbox_fresh_new_count">
+						[NUM] nouv.
+					</text>
+					<panel tool_tip="Drag and drop items to your inventory to manage and use them">
+						<text name="inbox_inventory_placeholder">
+							Ici seront livrés les achats effectués sur la Place du marché.
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+			<layout_panel name="outbox_layout_panel">
+				<panel label="" name="marketplace_outbox">
+					<button label="Boîte d&apos;envoi vendeur" name="outbox_btn"/>
+					<button label="" name="outbox_sync_btn" tool_tip="Vers ma vitrine de la Place du marché"/>
+					<panel tool_tip="Drag and drop items here to prepare them for sale on your storefront">
+						<text name="outbox_inventory_placeholder">
+							Configurez votre compte de vendeur de façon à pouvoir utiliser cette fonctionnalité.
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+		</layout_stack>
 		<panel name="button_panel">
 			<layout_stack name="button_panel_ls">
 				<layout_panel name="info_btn_lp">
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 077e545851ff43f152fb08fbaedc11d226001555..134ea0c6bb0562015bab3d5877e575d7b44f7ab3 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1192,6 +1192,12 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="InventoryNoTexture">
 		Vous n&apos;avez pas de copie de cette texture dans votre inventaire
 	</string>
+	<string name="InventoryInboxNoItems">
+		Ici seront livrés les articles achetés sur la Place du marché.
+	</string>
+	<string name="InventoryOutboxNoItems">
+		Faites glisser des articles ici en vue de les publier sur votre vitrine de la Place du marché.
+	</string>
 	<string name="no_transfer" value=" (pas de transfert)"/>
 	<string name="no_modify" value=" (pas de modification)"/>
 	<string name="no_copy" value=" (pas de copie)"/>
@@ -1322,6 +1328,9 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="InvFolder All">
 		Tout
 	</string>
+	<string name="no_attachments">
+		Aucun élément attaché porté
+	</string>
 	<string name="Buy">
 		Acheter
 	</string>
@@ -1657,6 +1666,9 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="IMTeen">
 		teen
 	</string>
+	<string name="Anyone">
+		n&apos;importe qui
+	</string>
 	<string name="RegionInfoError">
 		erreur
 	</string>
@@ -1879,6 +1891,12 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="Public">
 		Public
 	</string>
+	<string name="LocalSettings">
+		Réglages locaux
+	</string>
+	<string name="RegionSettings">
+		Réglages de la région
+	</string>
 	<string name="ClassifiedClicksTxt">
 		Clics : [TELEPORT] téléportation, [MAP] carte, [PROFILE] profil
 	</string>
@@ -3724,6 +3742,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="LocationCtrlGeneralIconTooltip">
 		Région de type Général
 	</string>
+	<string name="LocationCtrlSeeAVsTooltip">
+		Avatars visibles et chat autorisé en dehors de cette parcelle
+	</string>
 	<string name="UpdaterWindowTitle">
 		[APP_NAME] - Mise à jour
 	</string>
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 a96433d7aa97c71aca13d063e554e417369d1c3e..cf0f8f2f6f66d35b9f18b688d84290dce1e50a38 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -136,12 +136,12 @@ Vai al menu Mondo &gt; Informazioni sul terreno oppure seleziona un altro appezz
 				0
 			</text>
 			<button label="Acquista il terreno..." label_selected="Acquista il terreno..." left="130" name="Buy Land..." width="125"/>
+			<button label="Vendita Linden" name="Linden Sale..." tool_tip="La terra deve essere di proprietà, con contenuto impostato, e non già messa all&apos;asta."/>
 			<button label="Informazioni script" name="Scripts..."/>
 			<button label="Acquista per il gruppo" name="Buy For Group..."/>
 			<button label="Compra Pass..." label_selected="Compra Pass..." left="130" name="Buy Pass..." tool_tip="Un pass ti da un accesso temporaneo in questo territorio." width="125"/>
 			<button label="Abbandona la terra" name="Abandon Land..."/>
 			<button label="Reclama la terra" name="Reclaim Land..."/>
-			<button label="Vendita Linden" name="Linden Sale..." tool_tip="La terra deve essere di proprietà, con contenuto impostato, e non già messa all&apos;asta."/>
 		</panel>
 		<panel label="REGOLAMENTO" name="land_covenant_panel">
 			<panel.string name="can_resell">
@@ -313,6 +313,9 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 			<panel.string name="push_restrict_region_text">
 				Nessuna spinta (Impostazione regionale)
 			</panel.string>
+			<panel.string name="see_avs_text">
+				Vedi i residenti in questo lotto e chatta con loro
+			</panel.string>
 			<text name="allow_label">
 				Permetti ad altri residenti di:
 			</text>
@@ -375,6 +378,10 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 				Fotografia:
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="Clicca per scegliere una immagine"/>
+			<text name="allow_label5">
+				Permetti ai residenti in altri lotti di:
+			</text>
+			<check_box label="Vedi avatar" name="SeeAvatarsCheck" tool_tip="Consente ai residenti in altri lotti di vedere i residenti in questo lotto e chattare con loro, e ti consente di vederli e chattare con loro."/>
 			<text name="landing_point">
 				Punto di atterraggio: [LANDING]
 			</text>
@@ -434,6 +441,11 @@ Media:
 				Audio:
 			</text>
 			<check_box label="Limita l&apos;audio per oggetti e gesture a questo lotto" name="check sound local"/>
+			<text name="Avatar Sounds:">
+				Suoni avatar:
+			</text>
+			<check_box label="Tutti" name="all av sound check"/>
+			<check_box label="Gruppo" name="group av sound check"/>
 			<text name="Voice settings:">
 				Voce:
 			</text>
diff --git a/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..71071825af7c4bf03835fe8bcc37daf10a1fef0a
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<floater name="Delete Env Preset" title="CANCELLA PREDEFINITO AMB">
+	<string name="title_water">
+		Cancella valore predefinito acqua
+	</string>
+	<string name="title_sky">
+		Cancella valore predefinito cielo
+	</string>
+	<string name="title_day_cycle">
+		Cancella ciclo giornata
+	</string>
+	<string name="label_water">
+		Valori predefiniti:
+	</string>
+	<string name="label_sky">
+		Valori predefiniti:
+	</string>
+	<string name="label_day_cycle">
+		Ciclo giornata:
+	</string>
+	<string name="msg_confirm_deletion">
+		Sei sicuro di volere eliminare il valore predefinito selezionato?
+	</string>
+	<string name="msg_sky_is_referenced">
+		Impossibile rimuovere un valore predefinito che viene utilizzato in uno o più cicli di giornata.
+	</string>
+	<string name="combo_label">
+		-Seleziona un valore predefinito-
+	</string>
+	<text name="label">
+		Valori predefiniti:
+	</text>
+	<button label="Elimina" name="delete"/>
+	<button label="Annulla" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c922b2e4f767fc2303b19d8609dcbf863291caca
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Day cycle" title="Modifica ciclo giornata">
+	<string name="title_new">
+		Crea un nuovo ciclo giornata
+	</string>
+	<string name="title_edit">
+		Modifica ciclo giornata
+	</string>
+	<string name="hint_new">
+		Dai un nome al ciclo della giornata, modifica i controlli per crearlo e fai clic su &quot;Salva&quot;.
+	</string>
+	<string name="hint_edit">
+		Per modificare il ciclo della giornata, modifica i controlli seguenti e fai clic su &quot;Salva&quot;.
+	</string>
+	<string name="combo_label">
+		-Seleziona un valore predefinito-
+	</string>
+	<text name="label">
+		Nome predefinito:
+	</text>
+	<text name="note">
+		Nota: se cambi il nome del valore predefinito, in realtà ne crei uno nuovo e quello esistente non viene cambiato.
+	</text>
+	<text name="hint_item1">
+		- Fai clic su una scheda per modificare gli orari e le impostazioni cielo specifiche.
+	</text>
+	<text name="hint_item2">
+		- Fai clic e trascina le schede per impostare i tempi di transizione.
+	</text>
+	<text name="hint_item3">
+		- Usa lo scrubber per visualizzare in anteprima il ciclo giornata.
+	</text>
+	<panel name="day_cycle_slider_panel">
+		<multi_slider initial_value="0" name="WLTimeSlider"/>
+		<multi_slider initial_value="0" name="WLDayCycleKeys"/>
+		<button label="Aggiungi chiave" label_selected="Aggiungi chiave" name="WLAddKey"/>
+		<button label="Tasto cancella" label_selected="Tasto cancella" name="WLDeleteKey"/>
+		<text name="WL12am">
+			00:00
+		</text>
+		<text name="WL3am">
+			03:00:00
+		</text>
+		<text name="WL6am">
+			06:00:00
+		</text>
+		<text name="WL9amHash">
+			09:00:00
+		</text>
+		<text name="WL12pmHash">
+			12:00:00
+		</text>
+		<text name="WL3pm">
+			15:00:00
+		</text>
+		<text name="WL6pm">
+			18:00:00
+		</text>
+		<text name="WL9pm">
+			21:00:00
+		</text>
+		<text name="WL12am2">
+			00:00
+		</text>
+		<text name="WL12amHash">
+			|
+		</text>
+		<text name="WL3amHash">
+			I
+		</text>
+		<text name="WL6amHash">
+			|
+		</text>
+		<text name="WL9amHash2">
+			I
+		</text>
+		<text name="WL12pmHash2">
+			|
+		</text>
+		<text name="WL3pmHash">
+			I
+		</text>
+		<text name="WL6pmHash">
+			|
+		</text>
+		<text name="WL9pmHash">
+			I
+		</text>
+		<text name="WL12amHash2">
+			|
+		</text>
+	</panel>
+	<text name="WLCurKeyPresetText">
+		Impostazioni cielo:
+	</text>
+	<combo_box label="Valori predefiniti" name="WLSkyPresets"/>
+	<text name="WLCurKeyTimeText">
+		Giorno/ora:
+	</text>
+	<time name="time" value="06:00:00"/>
+	<check_box label="Usa come nuovo ciclo giornata" name="make_default_cb"/>
+	<button label="Salva" name="save"/>
+	<button label="Annulla" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..571027fd2949ccb69cf1a089dc47e992619ae165
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Sky Preset" title="Modifica predefiniti cielo">
+	<string name="title_new">
+		Crea un nuovo valore predefinito per il cielo
+	</string>
+	<string name="title_edit">
+		Modifica predefiniti cielo
+	</string>
+	<string name="hint_new">
+		Dai un nome al valore predefinito, modifica i controlli per crearlo e fai clic su &quot;Salva&quot;.
+	</string>
+	<string name="hint_edit">
+		Per modificare il valore predefinito per il cielo, modifica i controlli e fai clic su &quot;Salva&quot;.
+	</string>
+	<string name="combo_label">
+		-Seleziona un valore predefinito-
+	</string>
+	<text name="hint">
+		Per modificare i valori predefiniti, modifica i controlli e quindi fai clic su &quot;Salva&quot;
+	</text>
+	<text name="label">
+		Nome predefinito:
+	</text>
+	<text name="note">
+		Nota: se cambi il nome del valore predefinito, in realtà ne crei uno nuovo e quello esistente non viene cambiato.
+	</text>
+	<tab_container name="WindLight Tabs">
+		<panel label="ATMOSFERA" name="Atmosphere">
+			<text name="BHText">
+				Orizzonte blu
+			</text>
+			<text name="BDensText">
+				Orizzonte foschia
+			</text>
+			<text name="BDensText2">
+				Densità blu
+			</text>
+			<text name="HDText">
+				Densità foschia
+			</text>
+			<text name="DensMultText">
+				Fattore moltiplicativo densità
+			</text>
+			<text name="WLDistanceMultText">
+				Fattore moltiplicativo distanza
+			</text>
+			<text name="MaxAltText">
+				Altitudine massima
+			</text>
+		</panel>
+		<panel label="ILLUMINAZIONE" name="Lighting">
+			<text name="SLCText">
+				Colore sole/luna
+			</text>
+			<text name="WLAmbientText">
+				Ambiente
+			</text>
+			<text name="SunGlowText">
+				Bagliore sole
+			</text>
+			<slider label="Centro focale" name="WLGlowB"/>
+			<slider label="Dimensioni" name="WLGlowR"/>
+			<text name="WLStarText">
+				Luminosità cielo
+			</text>
+			<text name="SceneGammaText">
+				Gamma scena
+			</text>
+			<text name="TODText">
+				Posizione sole/luna
+			</text>
+			<multi_slider initial_value="0" name="WLSunPos"/>
+			<text name="WL12amHash">
+				|
+			</text>
+			<text name="WL6amHash">
+				|
+			</text>
+			<text name="WL12pmHash2">
+				|
+			</text>
+			<text name="WL6pmHash">
+				|
+			</text>
+			<text name="WL12amHash2">
+				|
+			</text>
+			<text name="WL12am">
+				00:00
+			</text>
+			<text name="WL6am">
+				06:00:00
+			</text>
+			<text name="WL12pmHash">
+				12:00:00
+			</text>
+			<text name="WL6pm">
+				18:00:00
+			</text>
+			<text name="WL12am2">
+				00:00
+			</text>
+			<time name="WLDayTime" value="06:00:00"/>
+			<text name="WLEastAngleText">
+				Angolo est
+			</text>
+		</panel>
+		<panel label="NUVOLE" name="Clouds">
+			<text name="WLCloudColorText">
+				Colore nuvole
+			</text>
+			<text name="WLCloudColorText2">
+				XY/Densità nuvole
+			</text>
+			<slider label="X" name="WLCloudX"/>
+			<slider label="Y" name="WLCloudY"/>
+			<slider label="D" name="WLCloudDensity"/>
+			<text name="WLCloudCoverageText">
+				Copertura nuvole
+			</text>
+			<text name="WLCloudScaleText">
+				Scala nuvole
+			</text>
+			<text name="WLCloudDetailText">
+				Dettaglio nuvole (XY/Densità)
+			</text>
+			<slider label="X" name="WLCloudDetailX"/>
+			<slider label="Y" name="WLCloudDetailY"/>
+			<slider label="D" name="WLCloudDetailDensity"/>
+			<text name="WLCloudScrollXText">
+				Scorrimento nuvole X
+			</text>
+			<check_box label="Blocca" name="WLCloudLockX"/>
+			<text name="WLCloudScrollYText">
+				Scorrimento nuvole Y
+			</text>
+			<check_box label="Blocca" name="WLCloudLockY"/>
+		</panel>
+	</tab_container>
+	<check_box label="Usa questo valore predefinito come nuova impostazione per il cielo" name="make_default_cb"/>
+	<button label="Salva" name="save"/>
+	<button label="Annulla" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7bffc60ba288267b4842e7a031be4d04c0a9a6db
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Water Preset" title="Modifica un valore predefinito acqua">
+	<string name="title_new">
+		Crea un nuovo valore predefinito per l&apos;acqua
+	</string>
+	<string name="title_edit">
+		Modifica un valore predefinito per l&apos;acqua
+	</string>
+	<string name="hint_new">
+		Dai un nome al valore predefinito, modifica i controlli per crearlo e fai clic su &quot;Salva&quot;.
+	</string>
+	<string name="hint_edit">
+		Per modificare il valore predefinito per l&apos;acqua, modifica i controlli e fai clic su &quot;Salva&quot;.
+	</string>
+	<string name="combo_label">
+		-Seleziona un valore predefinito-
+	</string>
+	<text name="hint">
+		Per modificare i valori predefiniti, modifica i controlli e quindi fai clic su &quot;Salva&quot;
+	</text>
+	<text name="label">
+		Nome predefinito:
+	</text>
+	<text name="note">
+		Nota: se cambi il nome del valore predefinito, in realtà ne crei uno nuovo e quello esistente non viene cambiato.
+	</text>
+	<panel name="panel_water_preset">
+		<text name="water_color_label">
+			Colore nebbia acqua
+		</text>
+		<text name="water_fog_density_label">
+			Esponente densità nebbia
+		</text>
+		<text name="underwater_fog_modifier_label">
+			Modificatore nebbia sott&apos;acqua
+		</text>
+		<text name="BHText">
+			Direzione onda grande
+		</text>
+		<slider label="X" name="WaterWave1DirX"/>
+		<slider label="Y" name="WaterWave1DirY"/>
+		<text name="BDensText">
+			Scala wavelet riflesso
+		</text>
+		<text name="HDText">
+			Scala Fresnel
+		</text>
+		<text name="FresnelOffsetText">
+			Spostamento Fresnel
+		</text>
+		<text name="BHText2">
+			Direzione onda piccola
+		</text>
+		<slider label="X" name="WaterWave2DirX"/>
+		<slider label="Y" name="WaterWave2DirY"/>
+		<text name="DensMultText">
+			Scala wavelet sopra
+		</text>
+		<text name="WaterScaleBelowText">
+			Scala wavelet sotto
+		</text>
+		<text name="MaxAltText">
+			Fattore moltiplicativo blu
+		</text>
+		<text name="BHText3">
+			Mappa normale
+		</text>
+	</panel>
+	<check_box label="Usa questo valore predefinito come nuova impostazione per l&apos;acqua" name="make_default_cb"/>
+	<button label="Salva" name="save"/>
+	<button label="Annulla" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_environment_settings.xml b/indra/newview/skins/default/xui/it/floater_environment_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f191078fad54e5babce8f6551ff44de4c254bb21
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_environment_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="IMPOSTAZIONI AMBIENTE">
+	<text name="note">
+		Usa le opzioni seguenti per personalizzare le impostazioni dell&apos;ambiente per il tuo  viewer.
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Usa impostazioni regione" name="use_region_settings"/>
+		<radio_item label="Personalizza il mio ambiente" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="note">
+			Nota: gli altri utenti non vedranno le tue impostazioni personalizzate.
+		</text>
+		<text name="water_settings_title">
+			Impostazione Acqua
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Seleziona un valore predefinito-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Ciclo giornata / cielo
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Cielo fisso" name="my_sky_settings"/>
+			<radio_item label="Ciclo giornata" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Seleziona un valore predefinito-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Seleziona un valore predefinito-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="OK" name="ok_btn"/>
+	<button label="Annulla" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_model_preview.xml b/indra/newview/skins/default/xui/it/floater_model_preview.xml
index a17b8b36c2674a97231122addae15a4c39986558..69245f0755161befc3648248c6e277fd75e1c70a 100644
--- a/indra/newview/skins/default/xui/it/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/it/floater_model_preview.xml
@@ -3,6 +3,9 @@
 	<string name="status_idle">
 		Pausa
 	</string>
+	<string name="status_parse_error">
+		Problema nell&apos;elaborazione DAE - vedi il registro per informazioni al riguardo.
+	</string>
 	<string name="status_reading_file">
 		Caricamento in corso...
 	</string>
@@ -12,6 +15,9 @@
 	<string name="status_vertex_number_overflow">
 		Errore: numero di vertici maggiore di 65534, annullato.
 	</string>
+	<string name="bad_element">
+		Errore: elemento non valido
+	</string>
 	<string name="high">
 		Alto
 	</string>
diff --git a/indra/newview/skins/default/xui/it/floater_model_wizard.xml b/indra/newview/skins/default/xui/it/floater_model_wizard.xml
index b17f731089d85e3b2a6d566b77daca912a56982d..67ba452ce5248fd97120a9c88f9cefd363d5b166 100644
--- a/indra/newview/skins/default/xui/it/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/it/floater_model_wizard.xml
@@ -193,6 +193,9 @@
 	<string name="status_idle">
 		Pausa
 	</string>
+	<string name="status_parse_error">
+		Problema nell&apos;elaborazione DAE - vedi il registro per informazioni al riguardo.
+	</string>
 	<string name="status_reading_file">
 		Caricamento in corso...
 	</string>
@@ -202,6 +205,9 @@
 	<string name="status_vertex_number_overflow">
 		Errore: numero di vertici maggiore di 65534, annullato.
 	</string>
+	<string name="bad_element">
+		Errore: elemento non valido
+	</string>
 	<string name="high">
 		Alto
 	</string>
diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml
index 23e01a3943d8d4ed218636f0f5a037d7e9a1bfb4..f7c83c9e0f41d60eaeb6b8d3512e4124686888cb 100644
--- a/indra/newview/skins/default/xui/it/floater_tools.xml
+++ b/indra/newview/skins/default/xui/it/floater_tools.xml
@@ -412,7 +412,7 @@
 			</combo_box>
 			<spinner label="Gravità" name="Physics Gravity"/>
 			<spinner label="Frizione" name="Physics Friction"/>
-			<spinner label="Densità" name="Physics Density"/>
+			<spinner label="Densità in 100 kg/m^3" name="Physics Density"/>
 			<spinner label="Restituzione" name="Physics Restitution"/>
 		</panel>
 		<panel label="Texture" name="Texture">
diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml
index bdf7d2094ff8e3bdef6d5714a8d1bad75bbbbdce..fe8bf703aa8d7eddbb461204af0195d373c6233c 100644
--- a/indra/newview/skins/default/xui/it/menu_login.xml
+++ b/indra/newview/skins/default/xui/it/menu_login.xml
@@ -17,7 +17,7 @@
 		<menu_item_call label="Mostra i Termini del servizio (TOS)" name="TOS"/>
 		<menu_item_call label="Mostra messaggio critico" name="Critical"/>
 		<menu_item_call label="Test browser multimedia" name="Web Browser Test"/>
-		<menu_item_call label="Test finestra contenuti Web" name="Web Content Floater Test"/>
+		<menu_item_call label="Test debug finestra contenuti Web" name="Web Content Floater Debug Test"/>
 		<menu_item_check label="Mostra selettore griglia" name="Show Grid Picker"/>
 		<menu_item_call label="Mostra Console notifiche" name="Show Notifications Console"/>
 	</menu>
diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml
index aae23137028ad6b447454338da82b11d83d84070..2b5c235706561fd7c825d0f12e0ad5b0f536bb4a 100644
--- a/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
+<toggleable_menu name="menu_group_plus">
 	<menu_item_check label="Ordina in base a intervenuti recenti" name="sort_by_recent_speakers"/>
 	<menu_item_check label="Ordina in base al nome" name="sort_name"/>
 	<menu_item_check label="Ordina in base alla distanza" name="sort_distance"/>
 	<menu_item_check label="Icone persone" name="view_icons"/>
+	<menu_item_check label="Visualizza mappa" name="view_map"/>
 	<menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index e4df0630d927001dbd7c4cd34dcd244c90ebe9d5..daeda576ccf2eddca60ed06ca66becb3c2e697f5 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -31,6 +31,7 @@
 		<menu_item_call label="I miei gruppi" name="My Groups"/>
 		<menu_item_check label="Chat nei dintorni" name="Nearby Chat"/>
 		<menu_item_call label="Persone vicine" name="Active Speakers"/>
+		<menu_item_check label="Voce nei dintorni" name="Nearby Voice"/>
 	</menu>
 	<menu label="Mondo" name="World">
 		<menu_item_check label="Mini mappa" name="Mini-Map"/>
@@ -63,8 +64,24 @@
 			<menu_item_call label="Mezzogiorno" name="Noon"/>
 			<menu_item_call label="Tramonto" name="Sunset"/>
 			<menu_item_call label="Mezzanotte" name="Midnight"/>
-			<menu_item_call label="Orario della proprietà" name="Revert to Region Default"/>
-			<menu_item_call label="Editor dell&apos;ambiente" name="Environment Editor"/>
+		</menu>
+		<menu label="Editor ambiente" name="Enviroment Editor">
+			<menu_item_call label="Impostazioni ambiente..." name="Enviroment Settings"/>
+			<menu label="Valori predefiniti acqua" name="Water Presets">
+				<menu_item_call label="Nuovo valore predefinito..." name="new_water_preset"/>
+				<menu_item_call label="Modifica valori predefiniti..." name="edit_water_preset"/>
+				<menu_item_call label="Cancella valore predefinito..." name="delete_water_preset"/>
+			</menu>
+			<menu label="Valori predefiniti cielo" name="Sky Presets">
+				<menu_item_call label="Nuovo valore predefinito..." name="new_sky_preset"/>
+				<menu_item_call label="Modifica valori predefiniti..." name="edit_sky_preset"/>
+				<menu_item_call label="Cancella valore predefinito..." name="delete_sky_preset"/>
+			</menu>
+			<menu label="Valori predefiniti giornata" name="Day Presets">
+				<menu_item_call label="Nuovo valore predefinito..." name="new_day_preset"/>
+				<menu_item_call label="Modifica valori predefiniti..." name="edit_day_preset"/>
+				<menu_item_call label="Cancella valore predefinito..." name="delete_day_preset"/>
+			</menu>
 		</menu>
 	</menu>
 	<menu label="Costruisci" name="BuildTools">
diff --git a/indra/newview/skins/default/xui/it/menu_wearing_gear.xml b/indra/newview/skins/default/xui/it/menu_wearing_gear.xml
index 7c8eef64e5df1e71093777864ce0f2eed5687711..de25f88acacb309a8c6f614841a75a9219a6eff8 100644
--- a/indra/newview/skins/default/xui/it/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_wearing_gear.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
+<toggleable_menu name="Gear Wearing">
 	<menu_item_call label="Modifica vestiario" name="edit"/>
 	<menu_item_call label="Togli" name="takeoff"/>
-</menu>
+	<menu_item_call label="Copia gruppo vestiti negli Appunti" name="copy"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index f50051c00449daa3f1248da182e682c92d4404d8..2d5c8e3522c42555dc912bf60d580e45b9ef66a7 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -1555,6 +1555,11 @@ Riprova più tardi.
 			<button name="Cancel" text="Annulla"/>
 		</form>
 	</notification>
+	<notification name="TooManyTeleportOffers">
+		Hai cercato di fare [OFFERS] offerte di teleport,
+più del limite [LIMIT].
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="OfferTeleportFromGod">
 		Chiedere, in qualità di Admin, al residente di raggiungerti?
 		<form name="form">
@@ -1977,6 +1982,10 @@ Desideri abbandonare la modalità &apos;Occupato&apos; prima di completare quest
 		Vuoi veramente eliminare la cronologia viaggi, web e ricerche fatte?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
+	<notification name="ConfirmClearCache">
+		Sei sicuro di volere cancellare la cache del viewer?
+		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmClearCookies">
 		Confermi di volere cancellare i tuoi cookie?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
@@ -2002,48 +2011,30 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
 		Vuoi sovrascrivere le preimpostazioni salvate?
 		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
 	</notification>
-	<notification name="WLDeletePresetAlert">
-		Vuoi cancellare [SKY]?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
 	<notification name="WLNoEditDefault">
 		Non puoi modificare o cancellare una preimpostazione di fabbrica.
 	</notification>
 	<notification name="WLMissingSky">
 		Questo file di ciclo giornaliero fa riferimento ad un file di cielo mancante: [SKY].
 	</notification>
-	<notification name="PPSaveEffectAlert">
-		Effetto di post elaborazione già presente. Vuoi sovrascrivere?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="NewSkyPreset">
-		Fornisci il nome per il nuovo cielo.
-		<form name="form">
-			<input name="message">
-				Nuova preimpostazione
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
+	<notification name="WLRegionApplyFail">
+		Queste impostazioni non possono essere applicare alla regione.  Uscendo dalla regione e ritornandoci potrebbe risolvere il problema.  Il motivo fornito: [FAIL_REASON]
 	</notification>
-	<notification name="ExistsSkyPresetAlert">
-		La preimpostazione esiste già!
+	<notification name="EnvCannotDeleteLastDayCycleKey">
+		Impossibile cancellare l&apos;ultima chiave in questo ciclo giornata. Il ciclo giornata non può essere vuoto.  Invece di cancellare la chiave restante, modificala e quindi creane una nuova.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="NewWaterPreset">
-		Fornisci il nome per la nuova preregolazione del livello dell&apos;acqua.
-		<form name="form">
-			<input name="message">
-				Nuova preimpostazione
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
+	<notification name="DayCycleTooManyKeyframes">
+		Non puoi aggiungere altri frame chiave a questo ciclo giornata.  Il numero massimo di frame chiave per i cicli giornata nell&apos;ambito [SCOPE] è [MAX].
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="ExistsWaterPresetAlert">
-		La preimpostazione esiste già!
+	<notification name="EnvUpdateRate">
+		Puoi aggiornare le impostazioni dell&apos;ambiente della regione ogni [WAIT] secondi.  Attendi e riprova.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="WaterNoEditDefault">
-		Non puoi modificare o cancellare una preimpostazione.
+	<notification name="PPSaveEffectAlert">
+		Effetto di post elaborazione già presente. Vuoi sovrascrivere?
+		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="ChatterBoxSessionStartError">
 		Impossibile iniziare una nuova sessione di chat con [RECIPIENT].
@@ -2334,6 +2325,9 @@ Qui non puoi volare.
 	<notification name="NoBuild">
 		In questa zona è proibita la costruzione. Qui non puoi costruire né rezzare oggetti.
 	</notification>
+	<notification name="SeeAvatars">
+		In questo lotto non si possono vedere avatar e chat di testo presenti in altri lotti.   Non puoi vedere altri residenti fuori dal lotto e loro non possono vederti.  Viene bloccata anche la normale chat di testo sul canale 0.
+	</notification>
 	<notification name="ScriptsStopped">
 		Un amministratore ha temporaneamente disabilitato gli script in questa regione.
 	</notification>
@@ -2758,7 +2752,9 @@ Il pulsante verrà visualizzato quando lo spazio sarà sufficiente.
 		Scegli i residenti con i quali condividere.
 	</notification>
 	<notification name="MeshUploadError">
-		[LABEL] non è stato caricato: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER]
+		[LABEL] non è stato caricato: [MESSAGE] [IDENTIFIER] 
+
+Per informazioni dettagliate, vedi il file del registro.
 	</notification>
 	<notification name="ShareItemsConfirmation">
 		Sei sicuro di volere condividere gli oggetti
diff --git a/indra/newview/skins/default/xui/it/panel_outfits_list.xml b/indra/newview/skins/default/xui/it/panel_outfits_list.xml
index e5194e95d7b83c9f83b892c8710bdfc6a30a2259..d0c275e29fe028a661ddb50d9d88c55351a4173f 100644
--- a/indra/newview/skins/default/xui/it/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/it/panel_outfits_list.xml
@@ -1,7 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Outfits">
+	<accordion name="outfits_accordion">
+		<no_matched_tabs_text name="no_matched_outfits_msg" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/all/[SEARCH_TERM] Cerca]."/>
+		<no_visible_tabs_text name="no_outfits_msg" value="Non hai ancora vestiario da indossare. Prova [secondlife:///app/search/all Cerca]."/>
+	</accordion>
 	<panel name="bottom_panel">
-		<button name="options_gear_btn" tool_tip="Mostra ulteriori opzioni"/>
+		<menu_button name="options_gear_btn" tool_tip="Mostra ulteriori opzioni"/>
 		<button name="trash_btn" tool_tip="Elimina il vestiario selezionato"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_place_profile.xml b/indra/newview/skins/default/xui/it/panel_place_profile.xml
index c4ffe6af85ac79f820c7fd60bfd1d7550d37ee25..890dfc24587da62afbee5cd798377f6a98e2b507 100644
--- a/indra/newview/skins/default/xui/it/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/it/panel_place_profile.xml
@@ -64,6 +64,8 @@
 						<text name="scripts_value" value="Attivo"/>
 						<text name="damage_label" value="Danni:"/>
 						<text name="damage_value" value="Disattivato"/>
+						<text name="see_avatars_label" value="Vedi avatar:"/>
+						<text name="see_avatars_value" value="Disattiva"/>
 						<button label="Informazioni sui terreni" name="about_land_btn"/>
 					</panel>
 				</accordion_tab>
diff --git a/indra/newview/skins/default/xui/it/panel_places.xml b/indra/newview/skins/default/xui/it/panel_places.xml
index 61830f186f0cd5ae01849984963e8c713c726cf3..69995fb5de29623de0c250d11d51c9bec753d0dc 100644
--- a/indra/newview/skins/default/xui/it/panel_places.xml
+++ b/indra/newview/skins/default/xui/it/panel_places.xml
@@ -24,7 +24,7 @@
 						<menu_button label="â–¼" name="overflow_btn" tool_tip="Mostra ulteriori opzioni"/>
 					</layout_panel>
 				</layout_stack>
-				<layout_stack name="bottom_bar_ls3">
+				<layout_stack name="bottom_bar_profile_ls">
 					<layout_panel name="profile_btn_lp">
 						<button label="Profilo" name="profile_btn" tool_tip="Mostra il profilo del luogo"/>
 					</layout_panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
index b628a29206642dc39accc866848be51fdc4837a0..224780f2348c7b7d3aa0be1593782a406c590666 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml
@@ -3,6 +3,19 @@
 	<panel.string name="aspect_ratio_text">
 		[NUM]:[DEN]
 	</panel.string>
+	<text name="Cache:">
+		Cache:
+	</text>
+	<spinner label="Dimensione cache (64 - 9984 MB)" name="cachesizespinner"/>
+	<text name="text_box5">
+		MB
+	</text>
+	<button label="Pulizia della cache" label_selected="Pulizia della cache" name="clear_cache"/>
+	<text name="Cache location">
+		Ubicazione della cache:
+	</text>
+	<button label="Sfoglia" label_selected="Sfoglia" name="set_cache"/>
+	<button label="Posizione predefinita" label_selected="Posizione predefinita" name="default_cache_location"/>
 	<text name="UI Size:">
 		Dimensioni UI:
 	</text>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
index bbfae5e9e84e28cef22cb38ea71ea6dae63c2cfb..d00512aaf7488317d47c1e3dc2a4c95d53326465 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
@@ -19,6 +19,7 @@
 	<check_box label="Abilitato" name="enable_voice_check"/>
 	<check_box label="Consenti riproduzione multimediale automatica" name="media_auto_play_btn" tool_tip="Seleziona qui per consentire la riproduzione multimediale automatica" value="true"/>
 	<check_box label="Riproduci media in uso da altri avatar" name="media_show_on_others_btn" tool_tip="Deseleziona qui per nascondere i media in uso dagli altri avatar nei dintorni" value="true"/>
+	<check_box label="Riproduci suoni dai gesti" name="gesture_audio_play_btn" tool_tip="Seleziona per ascoltare i suoni dai gesti" value="true"/>
 	<text name="voice_chat_settings">
 		Impostazioni Chat vocale
 	</text>
@@ -35,28 +36,5 @@
 	<button label="Imposta tasto" name="set_voice_hotkey_button"/>
 	<button name="set_voice_middlemouse_button" tool_tip="Reimposta sul pulsante centrale del mouse"/>
 	<button label="Dispositivi di Input/Output" name="device_settings_btn" width="165"/>
-	<panel label="Impostazioni del dispositivo" name="device_settings_panel">
-		<panel.string name="default_text">
-			Predefinito
-		</panel.string>
-		<panel.string name="default system device">
-			Dispositivo di sistema predefinito
-		</panel.string>
-		<panel.string name="no device">
-			Nessun dispositivo
-		</panel.string>
-		<text name="Input">
-			Input
-		</text>
-		<text name="My volume label">
-			Il mio volume:
-		</text>
-		<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Cambia il volume utilizzando questa barra"/>
-		<text name="wait_text">
-			Attendi
-		</text>
-		<text name="Output">
-			Output
-		</text>
-	</panel>
+	<panel label="Impostazioni del dispositivo" name="device_settings_panel"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_region_environment.xml b/indra/newview/skins/default/xui/it/panel_region_environment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81bc8253f425c74dad094650b337dcad0d983700
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_region_environment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ambiente" name="panel_env_info">
+	<text name="water_settings_title">
+		Seleziona le impostazioni del ciclo dell&apos;acqua e del cielo/giornata che vuoi che vedano tutti coloro che visitano la tua regione.  Maggiori informazioni
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Usa valori predefiniti di Second Life" name="use_sl_default_settings"/>
+		<radio_item label="Usa le impostazioni seguenti" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="water_settings_title">
+			Impostazione Acqua
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Seleziona un valore predefinito-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Ciclo cielo / giornata
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Cielo fisso" name="my_sky_settings"/>
+			<radio_item label="Ciclo giornata" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Seleziona un valore predefinito-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Seleziona un valore predefinito-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="Applica" name="apply_btn"/>
+	<button label="Annulla" name="cancel_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_region_terrain.xml b/indra/newview/skins/default/xui/it/panel_region_terrain.xml
index 92044bae115e0154b3a56a43a6aa0d0e1e509ae8..c61ac3eccecac77b4a9433210d33498e9293c366 100644
--- a/indra/newview/skins/default/xui/it/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/it/panel_region_terrain.xml
@@ -7,21 +7,56 @@
 		sconosciuto
 	</text>
 	<spinner label="Altezza dell&apos;acqua" name="water_height_spin"/>
-	<button label="?" name="water_height_help"/>
-	<spinner label="Limite di altezza del &#10;terreno" name="terrain_raise_spin"/>
-	<button label="?" name="terrain_raise_help"/>
-	<spinner label="Limite di abbassamento &#10;del terreno" name="terrain_lower_spin" bottom_delta="-34"/>
-	<button label="?" name="terrain_lower_help"/>
-	<check_box label="Usa il sole della regione" name="use_estate_sun_check"/>
-	<button label="?" name="use_estate_sun_help"/>
-	<check_box label="Sole fisso" name="fixed_sun_check"/>
-	<button label="?" name="fixed_sun_help"/>
-	<slider label="Fase" name="sun_hour_slider"/>
-	<button label="Applica" name="apply_btn"/>
+	<spinner label="Limite di altezza del 
+terreno" name="terrain_raise_spin"/>
+	<spinner bottom_delta="-34" label="Limite di abbassamento 
+del terreno" name="terrain_lower_spin"/>
+	<text name="detail_texture_text">
+		Texture terreno (richiede file 512x512, 24 bit .tga)
+	</text>
+	<text name="height_text_lbl">
+		1 (basso)
+	</text>
+	<text name="height_text_lbl2">
+		2
+	</text>
+	<text name="height_text_lbl3">
+		3
+	</text>
+	<text name="height_text_lbl4">
+		4 (Alto)
+	</text>
+	<text name="height_text_lbl5">
+		Intervalli altitudine texture
+	</text>
+	<text name="height_text_lbl10">
+		Questi valori indicano la gamma di miscele per le texture di cui sopra.
+	</text>
+	<text name="height_text_lbl11">
+		Misurato in metri, il valore BASSO è la MASSIMA altezza della texture n. 1, e il valore ALTO è l&apos;altezza MINIMA della texture n. 4.
+	</text>
+	<text name="height_text_lbl6">
+		Nordovest
+	</text>
+	<text name="height_text_lbl7">
+		Nordest
+	</text>
+	<spinner label="Basso" name="height_start_spin_1"/>
+	<spinner label="Basso" name="height_start_spin_3"/>
+	<spinner label="Alto" name="height_range_spin_1"/>
+	<spinner label="Alto" name="height_range_spin_3"/>
+	<text name="height_text_lbl8">
+		Sudovest
+	</text>
+	<text name="height_text_lbl9">
+		Sudest
+	</text>
+	<spinner label="Basso" name="height_start_spin_0"/>
+	<spinner label="Basso" name="height_start_spin_2"/>
+	<spinner label="Alto" name="height_range_spin_0"/>
+	<spinner label="Alto" name="height_range_spin_2"/>
 	<button label="Scarica terreno RAW..." name="download_raw_btn" tool_tip="Disponibile solo per i proprietari del terreno, non per i manager"/>
-	<button label="?" name="download_raw_help"/>
 	<button label="Carica terreno RAW..." name="upload_raw_btn" tool_tip="Disponibile solo per i proprietari del terreno, non per i manager"/>
-	<button label="?" name="upload_raw_help"/>
-	<button width="170" label="Trasforma il terreno" name="bake_terrain_btn" tool_tip="Imposta il terreno corrente come punto medio per i limiti di innalzamento/abbassamento"/>
-	<button left="190" label="?" name="bake_terrain_help"/>
+	<button label="Trasforma il terreno" name="bake_terrain_btn" tool_tip="Imposta il terreno corrente come punto medio per i limiti di innalzamento/abbassamento" width="170"/>
+	<button label="Applica" name="apply_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
index 1c1744d94b0fd10b1607a289ce8da744f8d4819c..72ca2f6d680db262021a92da8844ff9058c48408 100644
--- a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
@@ -1,6 +1,38 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Cose" name="objects panel">
 	<panel label="" name="sidepanel__inventory_panel">
+		<layout_stack name="inventory_layout_stack">
+			<layout_panel name="inbox_layout_panel">
+				<panel label="" name="marketplace_inbox">
+					<string name="InboxLabelWithArg">
+						Elementi ricevuti ([NUM])
+					</string>
+					<string name="InboxLabelNoArg">
+						Elementi ricevuti
+					</string>
+					<button label="Elementi ricevuti" name="inbox_btn"/>
+					<text name="inbox_fresh_new_count">
+						[NUM] nuovi
+					</text>
+					<panel tool_tip="Drag and drop items to your inventory to manage and use them">
+						<text name="inbox_inventory_placeholder">
+							Gli acquisti dal mercato verranno consegnati qui.
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+			<layout_panel name="outbox_layout_panel">
+				<panel label="" name="marketplace_outbox">
+					<button label="Casella uscita commercianti" name="outbox_btn"/>
+					<button label="" name="outbox_sync_btn" tool_tip="Sposta al mercato"/>
+					<panel tool_tip="Drag and drop items here to prepare them for sale on your storefront">
+						<text name="outbox_inventory_placeholder">
+							Imposta il tuo account commercianti per usare questa funzione.
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+		</layout_stack>
 		<panel name="button_panel">
 			<layout_stack name="button_panel_ls">
 				<layout_panel name="info_btn_lp">
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 6af515d82d0b10fe5184ea27ad30a4c5a2a4e721..4bcb4dd88f6eb11d08aa9d6f510c77db89544ada 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -1177,6 +1177,12 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="InventoryNoTexture">
 		Non hai una copia di questa texture nel tuo inventario
 	</string>
+	<string name="InventoryInboxNoItems">
+		Gli elementi acquistati attraverso il mercato verranno consegnati qui
+	</string>
+	<string name="InventoryOutboxNoItems">
+		Trascina gli elementi qui per poi elencarli nel tuo mercato.
+	</string>
 	<string name="no_transfer" value="(nessun trasferimento)"/>
 	<string name="no_modify" value="(nessuna modifica)"/>
 	<string name="no_copy" value="(nessuna copia)"/>
@@ -1301,6 +1307,9 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="InvFolder All">
 		Tutto
 	</string>
+	<string name="no_attachments">
+		Nessun allegato indossato
+	</string>
 	<string name="Buy">
 		Acquista
 	</string>
@@ -1636,6 +1645,9 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="IMTeen">
 		teen
 	</string>
+	<string name="Anyone">
+		chiunque
+	</string>
 	<string name="RegionInfoError">
 		errore
 	</string>
@@ -1852,6 +1864,12 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="Public">
 		Pubblica
 	</string>
+	<string name="LocalSettings">
+		Impostazioni locali
+	</string>
+	<string name="RegionSettings">
+		Impostazioni regione
+	</string>
 	<string name="ClassifiedClicksTxt">
 		Clicca: [TELEPORT] teleport, [MAP] mappa, [PROFILE] profilo
 	</string>
@@ -3640,6 +3658,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="LocationCtrlGeneralIconTooltip">
 		Regione generale
 	</string>
+	<string name="LocationCtrlSeeAVsTooltip">
+		Avatar visibili e chat consentita fuori di questo lotto
+	</string>
 	<string name="UpdaterWindowTitle">
 		Aggiornamento [APP_NAME]
 	</string>
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 2f578862d34880b0b34c21d6cc84e2b7b67c6d8f..e870a8ace931b22b1c5719c7f928d5e3c63f21c6 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -133,12 +133,12 @@
 				誤
 			</text>
 			<button label="土地の購入" label_selected="土地を購入..." left="130" name="Buy Land..." width="100"/>
+			<button label="リンデンセール" label_selected="Linden セール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/>
 			<button label="スクリプト情報" name="Scripts..." width="100"/>
 			<button label="グループに購入" label_selected="グループ用に購入..." name="Buy For Group..."/>
 			<button label="入場許可を購入" label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="100"/>
 			<button label="土地の放棄" label_selected="土地を放棄..." name="Abandon Land..."/>
 			<button label="土地を取り戻す" label_selected="土地の返還を要求..." name="Reclaim Land..."/>
-			<button label="リンデンセール" label_selected="Linden セール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/>
 		</panel>
 		<panel label="約款" name="land_covenant_panel">
 			<panel.string name="can_resell">
@@ -310,6 +310,9 @@
 			<panel.string name="push_restrict_region_text">
 				プッシュ禁止 (地域設定優先)
 			</panel.string>
+			<panel.string name="see_avs_text">
+				この区画にいる住人と会ってチャットする
+			</panel.string>
 			<text name="allow_label">
 				他の住人への許可:
 			</text>
@@ -372,6 +375,10 @@
 				スナップショット:
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="写真をクリックして選択"/>
+			<text name="allow_label5">
+				他の区画にいる住人への許可:
+			</text>
+			<check_box label="アバターを表示" name="SeeAvatarsCheck" tool_tip="他の区画の住人が、この区画にいる住人に会ってチャットすることを許可し、あなたもそれら住人に会ってチャットできるようにします。"/>
 			<text name="landing_point">
 				着地点: [LANDING]
 			</text>
@@ -428,6 +435,11 @@
 				サウンド:
 			</text>
 			<check_box label="ジェスチャーとオブジェクトの音をこの区画だけに限定する" name="check sound local"/>
+			<text name="Avatar Sounds:">
+				アバターのサウンド:
+			</text>
+			<check_box label="全員" name="all av sound check"/>
+			<check_box label="グループ" name="group av sound check"/>
 			<text name="Voice settings:">
 				ボイス:
 			</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eb39d1b3361c38bc8c214d0bddca66988fdd0bf8
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<floater name="Delete Env Preset" title="環境の事前設定を削除">
+	<string name="title_water">
+		水の事前設定を削除
+	</string>
+	<string name="title_sky">
+		空の事前設定を削除
+	</string>
+	<string name="title_day_cycle">
+		デイサイクルを削除
+	</string>
+	<string name="label_water">
+		事前設定:
+	</string>
+	<string name="label_sky">
+		事前設定:
+	</string>
+	<string name="label_day_cycle">
+		デイサイクル:
+	</string>
+	<string name="msg_confirm_deletion">
+		選択された事前設定を削除しますか?
+	</string>
+	<string name="msg_sky_is_referenced">
+		デイサイクルの参照先として使われている事前設定は削除できません。
+	</string>
+	<string name="combo_label">
+		- 事前設定を選択 -
+	</string>
+	<text name="label">
+		事前設定:
+	</text>
+	<button label="削除" name="delete"/>
+	<button label="取り消し" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fd601672b68e37b451c85c1ec20cec7810861d8f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Day cycle" title="デイサイクルを編集">
+	<string name="title_new">
+		新たなデイサイクルを作成
+	</string>
+	<string name="title_edit">
+		デイサイクルを編集
+	</string>
+	<string name="hint_new">
+		新しいデイサイクルに名前をつけ、希望の設定に調節して、「保存」をクリックします。
+	</string>
+	<string name="hint_edit">
+		自分で作成したデイサイクルを編集するには、希望の設定に調節して、「保存」をクリックします。
+	</string>
+	<string name="combo_label">
+		- 事前設定を選択 -
+	</string>
+	<text name="label">
+		事前設定の名前:
+	</text>
+	<text name="note">
+		注意:自分で作成した事前設定の名前を変更すると、新しい事前設定が別に作成されるだけで、元の事前設定は変更されません。
+	</text>
+	<text name="hint_item1">
+		- 特定の空の設定や時間を編集するにはタブを1つクリックします。
+	</text>
+	<text name="hint_item2">
+		- 移行時間を設定するにはタブをクリックしてドラッグします。
+	</text>
+	<text name="hint_item3">
+		- デイサイクルをプレビューするにはスクラバーを使います。
+	</text>
+	<panel name="day_cycle_slider_panel">
+		<multi_slider initial_value="0" name="WLTimeSlider"/>
+		<multi_slider initial_value="0" name="WLDayCycleKeys"/>
+		<button label="キーの追加" label_selected="キーの追加" name="WLAddKey"/>
+		<button label="キーの削除" label_selected="キーの削除" name="WLDeleteKey"/>
+		<text name="WL12am">
+			12am
+		</text>
+		<text name="WL3am">
+			3am
+		</text>
+		<text name="WL6am">
+			6am
+		</text>
+		<text name="WL9amHash">
+			9am
+		</text>
+		<text name="WL12pmHash">
+			12pm
+		</text>
+		<text name="WL3pm">
+			3pm
+		</text>
+		<text name="WL6pm">
+			6pm
+		</text>
+		<text name="WL9pm">
+			9pm
+		</text>
+		<text name="WL12am2">
+			12am
+		</text>
+		<text name="WL12amHash">
+			|
+		</text>
+		<text name="WL3amHash">
+			I
+		</text>
+		<text name="WL6amHash">
+			|
+		</text>
+		<text name="WL9amHash2">
+			I
+		</text>
+		<text name="WL12pmHash2">
+			|
+		</text>
+		<text name="WL3pmHash">
+			I
+		</text>
+		<text name="WL6pmHash">
+			|
+		</text>
+		<text name="WL9pmHash">
+			I
+		</text>
+		<text name="WL12amHash2">
+			|
+		</text>
+	</panel>
+	<text name="WLCurKeyPresetText">
+		空の設定:
+	</text>
+	<combo_box label="事前設定" name="WLSkyPresets"/>
+	<text name="WLCurKeyTimeText">
+		時間:
+	</text>
+	<time name="time" value="6:00 AM"/>
+	<check_box label="これを新しいデイサイクルにする" name="make_default_cb"/>
+	<button label="保存" name="save"/>
+	<button label="取り消し" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..68d0c70baa51c291d6af5db4ab8a170153003824
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Sky Preset" title="空の事前設定を編集">
+	<string name="title_new">
+		新しい空の事前設定を作成
+	</string>
+	<string name="title_edit">
+		空の事前設定を編集
+	</string>
+	<string name="hint_new">
+		新しい事前設定に名前をつけ、希望の設定に調節して、「保存」をクリックします。
+	</string>
+	<string name="hint_edit">
+		空の事前設定を編集するには、希望の設定に調節して、「保存」をクリックします。
+	</string>
+	<string name="combo_label">
+		- 事前設定を選択 -
+	</string>
+	<text name="hint">
+		事前設定を編集するには、希望の設定に調節して、「保存」をクリックします。
+	</text>
+	<text name="label">
+		事前設定の名前:
+	</text>
+	<text name="note">
+		注意:自分で作成した事前設定の名前を変更すると、新しい事前設定が別に作成されるだけで、元の事前設定は変更されません。
+	</text>
+	<tab_container name="WindLight Tabs">
+		<panel label="大気" name="Atmosphere">
+			<text name="BHText">
+				空の配色
+			</text>
+			<text name="BDensText">
+				空と遠景の露光
+			</text>
+			<text name="BDensText2">
+				空の配色と濃度
+			</text>
+			<text name="HDText">
+				大気の不透明度
+			</text>
+			<text name="DensMultText">
+				大気の不透明度の増幅
+			</text>
+			<text name="WLDistanceMultText">
+				視界の増幅
+			</text>
+			<text name="MaxAltText">
+				最大高度
+			</text>
+		</panel>
+		<panel label="ライティング" name="Lighting">
+			<text name="SLCText">
+				太陽/月の色
+			</text>
+			<text name="WLAmbientText">
+				風
+			</text>
+			<text name="SunGlowText">
+				太陽の輝き
+			</text>
+			<slider label="焦点" name="WLGlowB"/>
+			<slider label="サイズ" name="WLGlowR"/>
+			<text name="WLStarText">
+				星の輝き
+			</text>
+			<text name="SceneGammaText">
+				風景ガンマ
+			</text>
+			<text name="TODText">
+				太陽/月の位置
+			</text>
+			<multi_slider initial_value="0" name="WLSunPos"/>
+			<text name="WL12amHash">
+				|
+			</text>
+			<text name="WL6amHash">
+				|
+			</text>
+			<text name="WL12pmHash2">
+				|
+			</text>
+			<text name="WL6pmHash">
+				|
+			</text>
+			<text name="WL12amHash2">
+				|
+			</text>
+			<text name="WL12am">
+				12am
+			</text>
+			<text name="WL6am">
+				6am
+			</text>
+			<text name="WL12pmHash">
+				12pm
+			</text>
+			<text name="WL6pm">
+				6pm
+			</text>
+			<text name="WL12am2">
+				12am
+			</text>
+			<time name="WLDayTime" value="6:00 AM"/>
+			<text name="WLEastAngleText">
+				東の角度
+			</text>
+		</panel>
+		<panel label="雲" name="Clouds">
+			<text name="WLCloudColorText">
+				雲の色
+			</text>
+			<text name="WLCloudColorText2">
+				雲のXY/密度
+			</text>
+			<slider label="X" name="WLCloudX"/>
+			<slider label="Y" name="WLCloudY"/>
+			<slider label="D" name="WLCloudDensity"/>
+			<text name="WLCloudCoverageText">
+				雲の量
+			</text>
+			<text name="WLCloudScaleText">
+				雲のスケール
+			</text>
+			<text name="WLCloudDetailText">
+				雲の詳細(XY/密度)
+			</text>
+			<slider label="X" name="WLCloudDetailX"/>
+			<slider label="Y" name="WLCloudDetailY"/>
+			<slider label="D" name="WLCloudDetailDensity"/>
+			<text name="WLCloudScrollXText">
+				雲の移動速度(X方向)
+			</text>
+			<check_box label="ロック" name="WLCloudLockX"/>
+			<text name="WLCloudScrollYText">
+				雲の移動速度(Y 方向)
+			</text>
+			<check_box label="ロック" name="WLCloudLockY"/>
+		</panel>
+	</tab_container>
+	<check_box label="この事前設定を新しい空の設定にする" name="make_default_cb"/>
+	<button label="保存" name="save"/>
+	<button label="取り消し" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eddfbd4298dc950a4d444aef1a9173a6897b7865
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Water Preset" title="水の事前設定を編集">
+	<string name="title_new">
+		新しい水の事前設定を作成
+	</string>
+	<string name="title_edit">
+		水の事前設定を編集
+	</string>
+	<string name="hint_new">
+		新しい事前設定に名前をつけ、希望の設定に調節して、「保存」をクリックします。
+	</string>
+	<string name="hint_edit">
+		水の事前設定を編集するには、希望の設定に調節して、「保存」をクリックします。
+	</string>
+	<string name="combo_label">
+		- 事前設定を選択 -
+	</string>
+	<text name="hint">
+		事前設定を編集するには、希望の設定に調節して、「保存」をクリックします。
+	</text>
+	<text name="label">
+		事前設定の名前:
+	</text>
+	<text name="note">
+		注意:自分で作成した事前設定の名前を変更すると、新しい事前設定が別に作成されるだけで、元の事前設定は変更されません。
+	</text>
+	<panel name="panel_water_preset">
+		<text name="water_color_label">
+			水中のフォグ効果の色
+		</text>
+		<text name="water_fog_density_label">
+			水中の透明度指数
+		</text>
+		<text name="underwater_fog_modifier_label">
+			水中のフォグ効果加減
+		</text>
+		<text name="BHText">
+			大波の方向
+		</text>
+		<slider label="X" name="WaterWave1DirX"/>
+		<slider label="Y" name="WaterWave1DirY"/>
+		<text name="BDensText">
+			さざ波の反射スケール
+		</text>
+		<text name="HDText">
+			フレネル・スケール
+		</text>
+		<text name="FresnelOffsetText">
+			フレネル・オフセット
+		</text>
+		<text name="BHText2">
+			小波の方向
+		</text>
+		<slider label="X" name="WaterWave2DirX"/>
+		<slider label="Y" name="WaterWave2DirY"/>
+		<text name="DensMultText">
+			水面の屈折スケール
+		</text>
+		<text name="WaterScaleBelowText">
+			水中の屈折スケール
+		</text>
+		<text name="MaxAltText">
+			不透明度の増幅
+		</text>
+		<text name="BHText3">
+			ノーマル・マップ
+		</text>
+	</panel>
+	<check_box label="この事前設定を新しい水の設定にする" name="make_default_cb"/>
+	<button label="保存" name="save"/>
+	<button label="取り消し" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_environment_settings.xml b/indra/newview/skins/default/xui/ja/floater_environment_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0e3803119f11e68026069814d7aa23edfef2b4ea
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_environment_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="自然環境の設定">
+	<text name="note">
+		ビューワの自然環境の設定は以下のオプションを使ってカスタマイズできます。
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="リージョンの設定を使用" name="use_region_settings"/>
+		<radio_item label="自然環境をカスタマイズ" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="note">
+			注意:カスタム設定は他のユーザーには見えません。
+		</text>
+		<text name="water_settings_title">
+			水の設定
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="- 事前設定を選択 -" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			空 / デイサイクル
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="空の固定" name="my_sky_settings"/>
+			<radio_item label="デイサイクル" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="- 事前設定を選択 -" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="- 事前設定を選択 -" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="OK" name="ok_btn"/>
+	<button label="取り消し" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_model_preview.xml b/indra/newview/skins/default/xui/ja/floater_model_preview.xml
index 5eb141a28cf994e219e1b7c583f2bb36e3087d98..d0580b752c71393d0a4dca9735660e3fd7fc934d 100644
--- a/indra/newview/skins/default/xui/ja/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_model_preview.xml
@@ -3,6 +3,9 @@
 	<string name="status_idle">
 		待機状態
 	</string>
+	<string name="status_parse_error">
+		Dae に問題が見つかりました - 詳細についてはログをご参照ください。
+	</string>
 	<string name="status_reading_file">
 		ローディング...
 	</string>
@@ -12,6 +15,9 @@
 	<string name="status_vertex_number_overflow">
 		エラー:頂点の数が65534を超過したので中止されました。
 	</string>
+	<string name="bad_element">
+		エラー:要素が無効です
+	</string>
 	<string name="high">
 		高
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
index a785172f20c064fd0e52bc2e03351cee652d4c1b..249d9f22b9aa20849b2c7822f0ab78698685f71c 100644
--- a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
@@ -193,6 +193,9 @@
 	<string name="status_idle">
 		待機状態
 	</string>
+	<string name="status_parse_error">
+		Dae に問題が見つかりました - 詳細についてはログをご参照ください。
+	</string>
 	<string name="status_reading_file">
 		ローディング...
 	</string>
@@ -202,6 +205,9 @@
 	<string name="status_vertex_number_overflow">
 		エラー:頂点の数が65534を超過したので中止されました。
 	</string>
+	<string name="bad_element">
+		エラー:要素が無効です
+	</string>
 	<string name="high">
 		高
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index f7d77d351edda100c1e392d15f3b5996e88fd01d..0cb5c2d8bbc45e52bee21bd82982b294eee13a78 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -75,7 +75,7 @@
 	</text>
 	<check_box initial_value="true" label="テクスチャを引き延ばす" name="checkbox stretch textures"/>
 	<check_box initial_value="true" label="グリッドにスナップ" name="checkbox snap to grid"/>
-	<combo_box name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラを選択します" >
+	<combo_box name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラを選択します">
 		<combo_box.item label="インワールドグリッド" name="World"/>
 		<combo_box.item label="ローカルグリッド" name="Local"/>
 		<combo_box.item label="リファレンスグリッド" name="Reference"/>
@@ -137,7 +137,7 @@
 	<text name="object_cost" tool_tip="[prims] / [physics complexity] として現在選択されているオブジェクトのコスト">
 		料金: [COST] / [PHYSICS]
 	</text>
-	<tab_container name="Object Info Tabs" >
+	<tab_container name="Object Info Tabs">
 		<panel label="一般" name="General">
 			<panel.string name="text deed continued">
 				譲渡
@@ -379,22 +379,22 @@
 				オブジェクトの特徴を編集:
 			</text>
 			<check_box label="フレキシブルパス" name="Flexible1D Checkbox Ctrl" tool_tip="Z 軸を中心にオブジェクトの屈曲を有効にします(クライアント側のみ)"/>
-			<spinner label="柔軟性" name="FlexNumSections" />
-			<spinner label="重力" name="FlexGravity" />
-			<spinner label="ドラッグ" name="FlexFriction" />
-			<spinner label="風" name="FlexWind" />
-			<spinner label="ç·Šå¼µ" name="FlexTension" />
-			<spinner label="X 軸方向の力" name="FlexForceX" />
-			<spinner label="Y 軸方向の力" name="FlexForceY" />
-			<spinner label="Z 軸方向の力" name="FlexForceZ" />
+			<spinner label="柔軟性" name="FlexNumSections"/>
+			<spinner label="重力" name="FlexGravity"/>
+			<spinner label="ドラッグ" name="FlexFriction"/>
+			<spinner label="風" name="FlexWind"/>
+			<spinner label="ç·Šå¼µ" name="FlexTension"/>
+			<spinner label="X 軸方向の力" name="FlexForceX"/>
+			<spinner label="Y 軸方向の力" name="FlexForceY"/>
+			<spinner label="Z 軸方向の力" name="FlexForceZ"/>
 			<check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光します"/>
 			<color_swatch label="" name="colorswatch" tool_tip="クリックしてカラーピッカーを開きます"/>
 			<texture_picker label="" name="light texture control" tool_tip="クリックで投影画を選択します(遅延レンダリング有効時のみ)"/>
-			<spinner label="輝度" name="Light Intensity" />
+			<spinner label="輝度" name="Light Intensity"/>
 			<spinner label="FOV" name="Light FOV"/>
-			<spinner label="半径" name="Light Radius" />
+			<spinner label="半径" name="Light Radius"/>
 			<spinner label="焦点" name="Light Focus"/>
-			<spinner label="弱まる" name="Light Falloff" />
+			<spinner label="弱まる" name="Light Falloff"/>
 			<spinner label="環境" name="Light Ambiance"/>
 			<text name="label physicsshapetype">
 				実像の種類:
@@ -411,7 +411,7 @@
 			</combo_box>
 			<spinner label="重力" name="Physics Gravity"/>
 			<spinner label="摩擦" name="Physics Friction"/>
-			<spinner label="密度" name="Physics Density"/>
+			<spinner label="密度(100 kg/m^3)" name="Physics Density"/>
 			<spinner label="復元" name="Physics Restitution"/>
 		</panel>
 		<panel label="材質" name="Texture">
@@ -496,18 +496,18 @@
 			</panel>
 		</panel>
 		<panel label="中身" name="Contents">
-			<button label="新しいスクリプト" label_selected="新規スクリプト" name="button new script" />
-			<button label="権限" name="button permissions" />
+			<button label="新しいスクリプト" label_selected="新規スクリプト" name="button new script"/>
+			<button label="権限" name="button permissions"/>
 		</panel>
 	</tab_container>
 	<panel name="land info panel">
 		<text name="label_parcel_info">
 			区画情報
 		</text>
-		<text name="label_area_price" >
+		<text name="label_area_price">
 			価格: [AREA] 平方メートル L$ [PRICE]
 		</text>
-		<text name="label_area" >
+		<text name="label_area">
 			面積: [AREA] 平方メートル
 		</text>
 		<button label="土地情報" label_selected="土地情報" name="button about land"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml
index 265f3ebcd0dc884d03bf3ba72fe46d168205f61b..dca872e9b8d01bd9e882b041d48e353cd76fa0e7 100644
--- a/indra/newview/skins/default/xui/ja/menu_login.xml
+++ b/indra/newview/skins/default/xui/ja/menu_login.xml
@@ -18,7 +18,7 @@
 		<menu_item_call label="利用規約を表示" name="TOS"/>
 		<menu_item_call label="クリティカルメッセージを表示" name="Critical"/>
 		<menu_item_call label="メディアブラウザのテスト" name="Web Browser Test"/>
-		<menu_item_call label="Web コンテンツフローターのテスト" name="Web Content Floater Test"/>
+		<menu_item_call label="Web コンテンツフローターのデバッグテスト" name="Web Content Floater Debug Test"/>
 		<menu_item_check label="グリッドピッカーを表示する" name="Show Grid Picker"/>
 		<menu_item_call label="通知コンソールを表示する" name="Show Notifications Console"/>
 	</menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml
index a31480158a86ec7226e65438bff1c7ed6b4ce86e..44c543850958f18c7dfa4584c952724fe97179a3 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
+<toggleable_menu name="menu_group_plus">
 	<menu_item_check label="最近の発言者で並べ替え" name="sort_by_recent_speakers"/>
 	<menu_item_check label="名前で並べ替え" name="sort_name"/>
 	<menu_item_check label="距離で並べ替え" name="sort_distance"/>
 	<menu_item_check label="人のアイコン表示" name="view_icons"/>
+	<menu_item_check label="地図を表示" name="view_map"/>
 	<menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index ec9db02522bc67e86699278e8753f9b5015eb108..09b315b02601d6a3b586b94fa4604e6a87988553 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -31,6 +31,7 @@
 		<menu_item_call label="所属グループ" name="My Groups"/>
 		<menu_item_check label="近くのチャット" name="Nearby Chat"/>
 		<menu_item_call label="近くにいる人" name="Active Speakers"/>
+		<menu_item_check label="近くのボイス" name="Nearby Voice"/>
 	</menu>
 	<menu label="世界" name="World">
 		<menu_item_check label="ミニマップ" name="Mini-Map"/>
@@ -63,8 +64,24 @@
 			<menu_item_call label="正午" name="Noon"/>
 			<menu_item_call label="日没" name="Sunset"/>
 			<menu_item_call label="深夜" name="Midnight"/>
-			<menu_item_call label="エステートタイム" name="Revert to Region Default"/>
-			<menu_item_call label="自然環境エディター" name="Environment Editor"/>
+		</menu>
+		<menu label="自然環境エディター" name="Enviroment Editor">
+			<menu_item_call label="環境の設定..." name="Enviroment Settings"/>
+			<menu label="水の事前設定" name="Water Presets">
+				<menu_item_call label="新しい事前設定..." name="new_water_preset"/>
+				<menu_item_call label="事前設定を編集..." name="edit_water_preset"/>
+				<menu_item_call label="事前設定を削除..." name="delete_water_preset"/>
+			</menu>
+			<menu label="空の事前設定" name="Sky Presets">
+				<menu_item_call label="新しい事前設定..." name="new_sky_preset"/>
+				<menu_item_call label="事前設定を編集..." name="edit_sky_preset"/>
+				<menu_item_call label="事前設定を削除..." name="delete_sky_preset"/>
+			</menu>
+			<menu label="デイの事前設定" name="Day Presets">
+				<menu_item_call label="新しい事前設定..." name="new_day_preset"/>
+				<menu_item_call label="事前設定を編集..." name="edit_day_preset"/>
+				<menu_item_call label="事前設定を削除..." name="delete_day_preset"/>
+			</menu>
 		</menu>
 	</menu>
 	<menu label="制作" name="BuildTools">
diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml
index 7a97538117311823ec6676c3a5ce1127bff656b7..5334042dc9a135d821c5f7cdecb71333ddebfbf8 100644
--- a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
+<toggleable_menu name="Gear Wearing">
 	<menu_item_call label="アウトフットの編集" name="edit"/>
 	<menu_item_call label="取り外す" name="takeoff"/>
-</menu>
+	<menu_item_call label="アウトフィットのリストをクリップボードにコピー" name="copy"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index d63ca8403513552dc42fbc88bc210221ab467baf..a471e4941da0fd6d6b49ea81f966204d0ea4c5bc 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -1590,6 +1590,11 @@ http://wiki.secondlife.com/wiki/Setting_your_display_name を参照してくだ
 			<button name="Cancel" text="取り消し"/>
 		</form>
 	</notification>
+	<notification name="TooManyTeleportOffers">
+		[OFFERS] 回にわたってテレポートを送ろうとしましたが、
+それは限度数 [LIMIT] を超えています。
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="OfferTeleportFromGod">
 		現在地に住人をゴッドサモンしますか?
 		<form name="form">
@@ -2018,6 +2023,10 @@ Linden Lab
 		トラベル、Web、検索の履歴をすべて削除しますか?
 		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
 	</notification>
+	<notification name="ConfirmClearCache">
+		ビューワのキャッシュをクリアしますか?
+		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmClearCookies">
 		本当にクッキーをクリアしますか?
 		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
@@ -2043,48 +2052,30 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 		保存された事前設定を上書きしますか?
 		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
 	</notification>
-	<notification name="WLDeletePresetAlert">
-		「 [SKY] 」を削除しますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
 	<notification name="WLNoEditDefault">
 		デフォルトの設定を編集したり削除したりすることはできません。
 	</notification>
 	<notification name="WLMissingSky">
 		このデイサイクルのファイルは次の存在しない「空」ファイルを参照しています: [SKY]。
 	</notification>
-	<notification name="PPSaveEffectAlert">
-		ポストプロセス効果が存在します。 上書きしますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="NewSkyPreset">
-		新しい空の名前を指定してください。
-		<form name="form">
-			<input name="message">
-				新しい事前設定
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="キャンセル"/>
-		</form>
+	<notification name="WLRegionApplyFail">
+		申し訳ございませんが、設定をリージョンに適用できませんでした。一度リージョンを出てから戻ると、問題が解決されるかもしれません。問題の発生した理由:[FAIL_REASON]
 	</notification>
-	<notification name="ExistsSkyPresetAlert">
-		事前設定がすでに存在します!
+	<notification name="EnvCannotDeleteLastDayCycleKey">
+		デイサイクルを空にはできないので、このデイサイクルの最後のキーを削除することはできません。最後のキーを削除して新しいキーを作成するのではなく、最後のキーを変更してください。
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="NewWaterPreset">
-		新しい水の事前設定の名前を指定してください。
-		<form name="form">
-			<input name="message">
-				新しい事前設定
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="キャンセル"/>
-		</form>
+	<notification name="DayCycleTooManyKeyframes">
+		このデイサイクルにはこれ以上キーフレームを追加できません。[SCOPE] の範囲のデイサイクルに追加できるキーフレーム数は最高 [MAX] です。
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="ExistsWaterPresetAlert">
-		事前設定がすでに存在します!
+	<notification name="EnvUpdateRate">
+		リージョンの自然環境の設定は [WAIT] 秒ごとにしか更新できません。その間隔を置いてからもう一度お試しください。
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="WaterNoEditDefault">
-		デフォルトの設定を編集したり削除したりすることはできません。
+	<notification name="PPSaveEffectAlert">
+		ポストプロセス効果が存在します。 上書きしますか?
+		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
 	</notification>
 	<notification name="ChatterBoxSessionStartError">
 		[RECIPIENT] と新しいチャットを開始することができません。
@@ -2378,6 +2369,9 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 	<notification name="NoBuild">
 		このエリアでは制作が禁止されています。 オブジェクトを制作したり Rez することはできません。
 	</notification>
+	<notification name="SeeAvatars">
+		この区画にいるアバターやこの区画内で行われる文字チャットは、他の区画から見えません。あなたには、この区画外にいる住人が見えず、外の住人にはあなたの姿が見えません。チャンネル 0 での通常の文字チャットもブロックされます。
+	</notification>
 	<notification name="ScriptsStopped">
 		管理者がこのリージョンのスクリプトを一時停止しました。
 	</notification>
@@ -2802,7 +2796,9 @@ M キーを押して変更します。
 		共有する住人を選択します。
 	</notification>
 	<notification name="MeshUploadError">
-		[LABEL] をアップロードできませんでした: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER]
+		[LABEL] をアップロードできませんでした:[MESSAGE] [IDENTIFIER] 
+
+詳細についてはログをご覧ください。
 	</notification>
 	<notification name="ShareItemsConfirmation">
 		次のアイテムを共有しますか?
diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml
index e9e36e4842dc7fb0c94b8db8c33a372295b55b9e..df9ef40113bf212e4ee287dc557ea22a0d2dca7c 100644
--- a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml
@@ -1,7 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Outfits">
+	<accordion name="outfits_accordion">
+		<no_matched_tabs_text name="no_matched_outfits_msg" value="お探しのものは見つかりましたか?[secondlife:///app/search/all/[SEARCH_TERM] 検索] をお試しください。"/>
+		<no_visible_tabs_text name="no_outfits_msg" value="アウトフィットがまだありません。[secondlife:///app/search/all 検索] をお試しください。"/>
+	</accordion>
 	<panel name="bottom_panel">
-		<button name="options_gear_btn" tool_tip="オプションを表示します"/>
+		<menu_button name="options_gear_btn" tool_tip="オプションを表示します"/>
 		<button name="trash_btn" tool_tip="選択したアウトフィットを削除する"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
index 8a40d7aa5a7334dc708f94109db86a106596cf18..7235bc0f18f80d99d9b7ff68627129df93e50092 100644
--- a/indra/newview/skins/default/xui/ja/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
@@ -68,6 +68,8 @@
 						<text name="scripts_value" value="オン"/>
 						<text name="damage_label" value="ダメージ:"/>
 						<text name="damage_value" value="オフ"/>
+						<text name="see_avatars_label" value="アバターを表示:"/>
+						<text name="see_avatars_value" value="オフ"/>
 						<button label="土地情報" name="about_land_btn"/>
 					</panel>
 				</accordion_tab>
diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml
index e19b86e55231ed6e898b227af5d6fd7cd90e8176..9d3925afdcf60c5e5199296a4439adcde659f3d0 100644
--- a/indra/newview/skins/default/xui/ja/panel_places.xml
+++ b/indra/newview/skins/default/xui/ja/panel_places.xml
@@ -24,7 +24,7 @@
 						<menu_button label="▼" name="overflow_btn" tool_tip="オプションを表示します"/>
 					</layout_panel>
 				</layout_stack>
-				<layout_stack name="bottom_bar_ls3">
+				<layout_stack name="bottom_bar_profile_ls">
 					<layout_panel name="profile_btn_lp">
 						<button label="プロフィール" name="profile_btn" tool_tip="場所のプロフィールを表示"/>
 					</layout_panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml
index ccc5c3908b578f8434dc59dc1e6bc196864bffd7..dcaa23fee51e3e91c1ea75cf34a1caffba0fdae3 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml
@@ -3,6 +3,19 @@
 	<panel.string name="aspect_ratio_text">
 		[NUM]:[DEN]
 	</panel.string>
+	<text name="Cache:">
+		キャッシュ:
+	</text>
+	<spinner label="キャッシュサイズ(64~9,984MB)" name="cachesizespinner"/>
+	<text name="text_box5">
+		MB
+	</text>
+	<button label="キャッシュをクリア" label_selected="キャッシュをクリア" name="clear_cache"/>
+	<text name="Cache location">
+		キャッシュの保存場所:
+	</text>
+	<button label="参照" label_selected="参照" name="set_cache"/>
+	<button label="デフォルトの場所" label_selected="デフォルトの場所" name="default_cache_location"/>
 	<text name="UI Size:">
 		UI サイズ:
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
index c11e636875b0c886ac808a73ec85266bd91ad677..3a4c360ccc32b4ff0ba5b9a4f21168a55d68c042 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml
@@ -19,6 +19,7 @@
 	<check_box label="有効" name="enable_voice_check"/>
 	<check_box label="メディアを自動再生する" name="media_auto_play_btn" tool_tip="ここにチェックを入れてメディアの自動再生を許可します" value="true"/>
 	<check_box label="他のアバターに取り付けられたメディアを再生する" name="media_show_on_others_btn" tool_tip="このチェックを外すと、近くにいる他のアバターに取り付けられたメディアを非表示にします" value="true"/>
+	<check_box label="ジェスチャーの音を再生" name="gesture_audio_play_btn" tool_tip="ジェスチャーの音を聞くにはこれを選択" value="true"/>
 	<text name="voice_chat_settings">
 		ボイスチャットの設定
 	</text>
@@ -35,28 +36,5 @@
 	<button label="キー設定" name="set_voice_hotkey_button"/>
 	<button name="set_voice_middlemouse_button" tool_tip="マウスの中央ボタンにリセット"/>
 	<button label="入力・出力機器" name="device_settings_btn"/>
-	<panel label="機器の設定" name="device_settings_panel">
-		<panel.string name="default_text">
-			デフォルト
-		</panel.string>
-		<panel.string name="default system device">
-			デフォルトのシステム機器
-		</panel.string>
-		<panel.string name="no device">
-			機器が設定されていません
-		</panel.string>
-		<text name="Input">
-			入力
-		</text>
-		<text name="My volume label">
-			私の音量:
-		</text>
-		<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="スライダーを使って音量を調節します"/>
-		<text name="wait_text">
-			しばらくお待ちください。
-		</text>
-		<text name="Output">
-			出力
-		</text>
-	</panel>
+	<panel label="機器の設定" name="device_settings_panel"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_environment.xml b/indra/newview/skins/default/xui/ja/panel_region_environment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f6ef3f09348b232449cbd1c4dc7f7cbde4d78226
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_region_environment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="環境" name="panel_env_info">
+	<text name="water_settings_title">
+		あなたのリージョンを訪れるユーザーに見せたい、水と空/デイサイクルの設定を選択します。詳細
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Second Life のデフォルト設定を使用" name="use_sl_default_settings"/>
+		<radio_item label="次の設定を使用" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="water_settings_title">
+			水の設定
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="- 事前設定を選択 -" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			空 / デイサイクル
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="空の固定" name="my_sky_settings"/>
+			<radio_item label="デイサイクル" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="- 事前設定を選択 -" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="- 事前設定を選択 -" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="適用" name="apply_btn"/>
+	<button label="取り消し" name="cancel_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_terrain.xml b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml
index 8df803b2dce487598527727b2104b9443b050c7c..fb853c1925cd73f043dc941339b29ab5a96fb4cf 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="地形" name="Terrain">
 	<text name="region_text_lbl">
 		地域:
@@ -6,25 +6,55 @@
 	<text name="region_text">
 		未知
 	</text>
-	<spinner label="水面の高さ" name="water_height_spin" />
-	<button label="?" name="water_height_help" />
-	<spinner label="地形の上昇限度" name="terrain_raise_spin" />
-	<button label="?" name="terrain_raise_help" />
-	<spinner label="地形の下降限度" name="terrain_lower_spin" />
-	<button label="?" name="terrain_lower_help" />
-	<check_box label="不動産太陽使用" name="use_estate_sun_check" />
-	<button label="?" name="use_estate_sun_help" />
-	<check_box label="太陽固定" name="fixed_sun_check" />
-	<button label="?" name="fixed_sun_help" />
-	<slider label="段階" name="sun_hour_slider" />
-	<button label="適用" name="apply_btn" />
-	<button label="RAW 地形ダウンロード..." name="download_raw_btn"
-	     tool_tip="不動産オーナーのみ利用可能、管理者は利用不可です" />
-	<button label="?" name="download_raw_help" />
-	<button label="RAW 地形アップロード..." name="upload_raw_btn"
-	     tool_tip="不動産オーナーのみ利用可能、管理者は利用不可です" />
-	<button label="?" name="upload_raw_help" />
-	<button label="地形の構築" name="bake_terrain_btn"
-	     tool_tip="現在の地形を上昇・下降範囲の中間点として設定します" />
-	<button label="?" name="bake_terrain_help" />
+	<spinner label="水面の高さ" name="water_height_spin"/>
+	<spinner label="地形の上昇限度" name="terrain_raise_spin"/>
+	<spinner label="地形の下降限度" name="terrain_lower_spin"/>
+	<text name="detail_texture_text">
+		地形テクスチャ(512x512 の 24 bit .tga ファイル)
+	</text>
+	<text name="height_text_lbl">
+		1(低)
+	</text>
+	<text name="height_text_lbl2">
+		2
+	</text>
+	<text name="height_text_lbl3">
+		3
+	</text>
+	<text name="height_text_lbl4">
+		4(高)
+	</text>
+	<text name="height_text_lbl5">
+		地形の隆起範囲
+	</text>
+	<text name="height_text_lbl10">
+		数値は上のテクスチャのブレンド範囲を示します。
+	</text>
+	<text name="height_text_lbl11">
+		計測単位はメートルで、「低」の値は、1番のテクスチャの高さの「最大値」です。「高」の値は、4番のテクスチャの高さの「最低値」です。
+	</text>
+	<text name="height_text_lbl6">
+		北西
+	</text>
+	<text name="height_text_lbl7">
+		北東
+	</text>
+	<spinner label="低" name="height_start_spin_1"/>
+	<spinner label="低" name="height_start_spin_3"/>
+	<spinner label="高" name="height_range_spin_1"/>
+	<spinner label="高" name="height_range_spin_3"/>
+	<text name="height_text_lbl8">
+		南西
+	</text>
+	<text name="height_text_lbl9">
+		南東
+	</text>
+	<spinner label="低" name="height_start_spin_0"/>
+	<spinner label="低" name="height_start_spin_2"/>
+	<spinner label="高" name="height_range_spin_0"/>
+	<spinner label="高" name="height_range_spin_2"/>
+	<button label="RAW 地形ダウンロード..." name="download_raw_btn" tool_tip="不動産オーナーのみ利用可能、管理者は利用不可です"/>
+	<button label="RAW 地形アップロード..." name="upload_raw_btn" tool_tip="不動産オーナーのみ利用可能、管理者は利用不可です"/>
+	<button label="地形の構築" name="bake_terrain_btn" tool_tip="現在の地形を上昇・下降範囲の中間点として設定します"/>
+	<button label="適用" name="apply_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml
index e26d8717d12d0dcd354294e2d068b1434ad69b92..7edda6e1a3c8790cc40c3c17633a3aef48500af7 100644
--- a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml
@@ -1,6 +1,38 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="もの" name="objects panel">
 	<panel label="" name="sidepanel__inventory_panel">
+		<layout_stack name="inventory_layout_stack">
+			<layout_panel name="inbox_layout_panel">
+				<panel label="" name="marketplace_inbox">
+					<string name="InboxLabelWithArg">
+						受け取った商品([NUM])
+					</string>
+					<string name="InboxLabelNoArg">
+						受け取った商品
+					</string>
+					<button label="受け取った商品" name="inbox_btn"/>
+					<text name="inbox_fresh_new_count">
+						[NUM] 新登場
+					</text>
+					<panel tool_tip="Drag and drop items to your inventory to manage and use them">
+						<text name="inbox_inventory_placeholder">
+							マーケットプレイスから購入した商品はここに配達されます。
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+			<layout_panel name="outbox_layout_panel">
+				<panel label="" name="marketplace_outbox">
+					<button label="マーチャントのアウトボックス" name="outbox_btn"/>
+					<button label="" name="outbox_sync_btn" tool_tip="自分のマーケットプレイス店頭に移動"/>
+					<panel tool_tip="Drag and drop items here to prepare them for sale on your storefront">
+						<text name="outbox_inventory_placeholder">
+							この機能を使用するには、マーチャントアカウントをセットアップしてください。
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+		</layout_stack>
 		<panel name="button_panel">
 			<layout_stack name="button_panel_ls">
 				<layout_panel name="info_btn_lp">
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index fa6d25d238500d97ff37ec3629860fded98dad1d..cb4fb80a55f0c38eda228db49ac6693964af1967 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -1192,6 +1192,12 @@ support@secondlife.com にお問い合わせください。
 	<string name="InventoryNoTexture">
 		「持ち物」内にこのテクスチャのコピーがありません
 	</string>
+	<string name="InventoryInboxNoItems">
+		マーケットプレイスで購入した商品はここに配達されます。
+	</string>
+	<string name="InventoryOutboxNoItems">
+		マーケットプレイス店頭に掲載するための準備として、ここに商品をドラッグします。
+	</string>
 	<string name="no_transfer" value=" (再販・プレゼント不可)"/>
 	<string name="no_modify" value=" (編集不可)"/>
 	<string name="no_copy" value=" (コピー不可)"/>
@@ -1322,6 +1328,9 @@ support@secondlife.com にお問い合わせください。
 	<string name="InvFolder All">
 		全員
 	</string>
+	<string name="no_attachments">
+		着用しているアタッチメントはありません
+	</string>
 	<string name="Buy">
 		買う
 	</string>
@@ -1657,6 +1666,9 @@ support@secondlife.com にお問い合わせください。
 	<string name="IMTeen">
 		ティーン
 	</string>
+	<string name="Anyone">
+		全員
+	</string>
 	<string name="RegionInfoError">
 		エラー
 	</string>
@@ -1879,6 +1891,12 @@ support@secondlife.com にお問い合わせください。
 	<string name="Public">
 		パブリック
 	</string>
+	<string name="LocalSettings">
+		ローカル設定
+	</string>
+	<string name="RegionSettings">
+		リージョン(地域)の設定
+	</string>
 	<string name="ClassifiedClicksTxt">
 		クリック数: [TELEPORT] テレポート、 [MAP] 地図、 [PROFILE] プロフィール
 	</string>
@@ -3724,6 +3742,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="LocationCtrlGeneralIconTooltip">
 		General リージョン
 	</string>
+	<string name="LocationCtrlSeeAVsTooltip">
+		この区画外にアバターを見えるようにして、チャットも許可
+	</string>
 	<string name="UpdaterWindowTitle">
 		[APP_NAME] アップデート
 	</string>
diff --git a/indra/newview/skins/default/xui/pl/panel_places.xml b/indra/newview/skins/default/xui/pl/panel_places.xml
index 34c105225d0774463d7ccc26782337d1099c44bd..d69d137d235755ea5aaf7a4832f925d4f79c6f72 100644
--- a/indra/newview/skins/default/xui/pl/panel_places.xml
+++ b/indra/newview/skins/default/xui/pl/panel_places.xml
@@ -24,7 +24,7 @@
 						<menu_button label="▼" name="overflow_btn" tool_tip="Pokaż opcje dodatkowe"/>
 					</layout_panel>
 				</layout_stack>
-				<layout_stack name="bottom_bar_ls3">
+				<layout_stack name="bottom_bar_profile_ls">
 					<layout_panel name="profile_btn_lp">
 						<button label="Profil" name="profile_btn" tool_tip="Pokaż profil miejsca"/>
 					</layout_panel>
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 e48cac7d1fe13f7c345cdad2f1c3b8f442cbf9ee..514c7382f83d92faabe369e915ae21fa8e5e0cab 100644
--- a/indra/newview/skins/default/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml
@@ -133,12 +133,12 @@ Vá para o menu Mundo &gt; Sobre o terreno ou selecione outro lote para mostrar
 				0
 			</text>
 			<button label="Comprar terreno..." label_selected="Comprar terreno..." left="130" name="Buy Land..." width="125"/>
+			<button label="Venda Linden" name="Linden Sale..." tool_tip="O terreno precisa ser possuído, estar com o conteúdo configurado e não estar pronto para leilão."/>
 			<button label="Dados do script" name="Scripts..."/>
 			<button label="Comprar para o grupo" name="Buy For Group..."/>
 			<button label="Comprar passe..." label_selected="Comprar passe..." left="130" name="Buy Pass..." tool_tip="Um passe concede a você acesso temporário a este terreno." width="125"/>
 			<button label="Abandonar terreno..." label_selected="Abandonar terreno..." name="Abandon Land..."/>
 			<button label="Pedir terreno" name="Reclaim Land..."/>
-			<button label="Venda Linden" name="Linden Sale..." tool_tip="O terreno precisa ser possuído, estar com o conteúdo configurado e não estar pronto para leilão."/>
 		</panel>
 		<panel label="CONTRATO" name="land_covenant_panel">
 			<panel.string name="can_resell">
@@ -308,6 +308,9 @@ Apenas lotes maiores podem ser listados na busca.
 			<panel.string name="push_restrict_region_text">
 				Proibido empurrar (regulamento da região)
 			</panel.string>
+			<panel.string name="see_avs_text">
+				Veja e bata papo com os residentes deste terreno
+			</panel.string>
 			<text name="allow_label">
 				Autorizar outros residentes a:
 			</text>
@@ -370,6 +373,10 @@ Apenas lotes maiores podem ser listados na busca.
 				Foto:
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="Clique para escolher uma imagem"/>
+			<text name="allow_label5">
+				Permitir que residentes de outros terrenos:
+			</text>
+			<check_box label="Ver avatares" name="SeeAvatarsCheck" tool_tip="Permite que residentes de outros terrenos vejam e conversem com os residentes deste terreno e vice-versa."/>
 			<text name="landing_point">
 				Ponto de Aterrissagem: [LANDING]
 			</text>
@@ -429,6 +436,11 @@ Mídia:
 				Som:
 			</text>
 			<check_box label="Limitar sons de gestos e objetos a esta parcela" name="check sound local"/>
+			<text name="Avatar Sounds:">
+				Áudio de avatares:
+			</text>
+			<check_box label="Todos" name="all av sound check"/>
+			<check_box label="Grupo" name="group av sound check"/>
 			<text name="Voice settings:">
 				Voz:
 			</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a8b5d8f67d0bf83bf4a1753daf4726567243cb57
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<floater name="Delete Env Preset" title="EXCLUIR CONF AMBIENTE">
+	<string name="title_water">
+		Excluir pré-configuração da água
+	</string>
+	<string name="title_sky">
+		Excluir pré-configuração de céu
+	</string>
+	<string name="title_day_cycle">
+		Excluir pré-configuração dos dias
+	</string>
+	<string name="label_water">
+		Pré-configuração:
+	</string>
+	<string name="label_sky">
+		Pré-configuração:
+	</string>
+	<string name="label_day_cycle">
+		Ciclo dia:
+	</string>
+	<string name="msg_confirm_deletion">
+		Tem certeza de que quer excluir esta pré-configuração?
+	</string>
+	<string name="msg_sky_is_referenced">
+		Impossível excluir pré-configuração utilizada por um ou mais ciclos de dia .
+	</string>
+	<string name="combo_label">
+		-Selecione uma pré-configuração-
+	</string>
+	<text name="label">
+		Pré-configuração:
+	</text>
+	<button label="Excluir" name="delete"/>
+	<button label="Cancelar" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e25938986d18410bf94eaafb967a5abac251d86
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Day cycle" title="Editar ciclo dos dias">
+	<string name="title_new">
+		Criar novo ciclo de dias
+	</string>
+	<string name="title_edit">
+		Editar ciclo dos dias
+	</string>
+	<string name="hint_new">
+		Dê um nome ao seu ciclo dos dias, ajuste os controles para criá-lo e clique em &quot;Salvar&quot;.
+	</string>
+	<string name="hint_edit">
+		Para editar sua configuração do dia, ajuste os controles e clique em &quot;Salvar&quot;.
+	</string>
+	<string name="combo_label">
+		-Selecione uma pré-configuração-
+	</string>
+	<text name="label">
+		Nome:
+	</text>
+	<text name="note">
+		Observação: trocar o nome de uma pré-configuração criará uma nova sem modificar a uma pré-configuração atual.
+	</text>
+	<text name="hint_item1">
+		- Clique em uma guia para editar as configurações e horário de um céu.
+	</text>
+	<text name="hint_item2">
+		- Clique e arraste as guias para definir as transições.
+	</text>
+	<text name="hint_item3">
+		- Use a seta para rever o ciclo dos dias.
+	</text>
+	<panel name="day_cycle_slider_panel">
+		<multi_slider initial_value="0" name="WLTimeSlider"/>
+		<multi_slider initial_value="0" name="WLDayCycleKeys"/>
+		<button label="Adicionar chave" label_selected="Adicionar chave" name="WLAddKey"/>
+		<button label="Excluir chave" label_selected="Excluir chave" name="WLDeleteKey"/>
+		<text name="WL12am">
+			24:00
+		</text>
+		<text name="WL3am">
+			03:00
+		</text>
+		<text name="WL6am">
+			06:00
+		</text>
+		<text name="WL9amHash">
+			09:00
+		</text>
+		<text name="WL12pmHash">
+			12:00
+		</text>
+		<text name="WL3pm">
+			15:00
+		</text>
+		<text name="WL6pm">
+			18:00
+		</text>
+		<text name="WL9pm">
+			21:00
+		</text>
+		<text name="WL12am2">
+			24:00
+		</text>
+		<text name="WL12amHash">
+			|
+		</text>
+		<text name="WL3amHash">
+			I
+		</text>
+		<text name="WL6amHash">
+			|
+		</text>
+		<text name="WL9amHash2">
+			I
+		</text>
+		<text name="WL12pmHash2">
+			|
+		</text>
+		<text name="WL3pmHash">
+			I
+		</text>
+		<text name="WL6pmHash">
+			|
+		</text>
+		<text name="WL9pmHash">
+			I
+		</text>
+		<text name="WL12amHash2">
+			|
+		</text>
+	</panel>
+	<text name="WLCurKeyPresetText">
+		Configuração do céu:
+	</text>
+	<combo_box label="Pré-configuração" name="WLSkyPresets"/>
+	<text name="WLCurKeyTimeText">
+		Hora:
+	</text>
+	<time name="time" value="06:00"/>
+	<check_box label="Usar como novo ciclo de dias" name="make_default_cb"/>
+	<button label="Salvar" name="save"/>
+	<button label="Cancelar" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1f1fbcce7e0ed4ffacd8fb1254ab64385027942f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Sky Preset" title="Editar pré-configuração do céu">
+	<string name="title_new">
+		Criar nova pré-configuração de céu
+	</string>
+	<string name="title_edit">
+		Editar pré-configuração do céu
+	</string>
+	<string name="hint_new">
+		Dê um nome à sua pré-configuração, ajuste os controles para criá-la e clique em &quot;Salvar&quot;.
+	</string>
+	<string name="hint_edit">
+		Para editar sua pré-configuração do céu, ajuste os controles e clique em &quot;Salvar&quot;.
+	</string>
+	<string name="combo_label">
+		-Selecione uma pré-configuração-
+	</string>
+	<text name="hint">
+		Para editar sua pré-configuração do céu, ajuste os controles e clique em &quot;Salvar&quot;.
+	</text>
+	<text name="label">
+		Nome:
+	</text>
+	<text name="note">
+		Observação: trocar o nome de uma pré-configuração criará uma nova sem modificar a pré-configuração atual.
+	</text>
+	<tab_container name="WindLight Tabs">
+		<panel label="ATMOSFERA" name="Atmosphere">
+			<text name="BHText">
+				Horizonte azul
+			</text>
+			<text name="BDensText">
+				Horizonte com névoa
+			</text>
+			<text name="BDensText2">
+				Densidade azul
+			</text>
+			<text name="HDText">
+				Densidade da névoa
+			</text>
+			<text name="DensMultText">
+				Multiplicador de densidade
+			</text>
+			<text name="WLDistanceMultText">
+				Multiplicador de distância
+			</text>
+			<text name="MaxAltText">
+				Altitude máxima
+			</text>
+		</panel>
+		<panel label="ILUMINAÇÃO" name="Lighting">
+			<text name="SLCText">
+				Cor do sol/lua
+			</text>
+			<text name="WLAmbientText">
+				Ambiente
+			</text>
+			<text name="SunGlowText">
+				Brilho do sol
+			</text>
+			<slider label="Foco" name="WLGlowB"/>
+			<slider label="Tamanho" name="WLGlowR"/>
+			<text name="WLStarText">
+				Brilho das estrelas
+			</text>
+			<text name="SceneGammaText">
+				Raios gama
+			</text>
+			<text name="TODText">
+				Posição do sol/lua
+			</text>
+			<multi_slider initial_value="0" name="WLSunPos"/>
+			<text name="WL12amHash">
+				|
+			</text>
+			<text name="WL6amHash">
+				|
+			</text>
+			<text name="WL12pmHash2">
+				|
+			</text>
+			<text name="WL6pmHash">
+				|
+			</text>
+			<text name="WL12amHash2">
+				|
+			</text>
+			<text name="WL12am">
+				24:00
+			</text>
+			<text name="WL6am">
+				06:00
+			</text>
+			<text name="WL12pmHash">
+				12:00
+			</text>
+			<text name="WL6pm">
+				18:00
+			</text>
+			<text name="WL12am2">
+				24:00
+			</text>
+			<time name="WLDayTime" value="06:00"/>
+			<text name="WLEastAngleText">
+				Ângulo leste
+			</text>
+		</panel>
+		<panel label="NUVENS" name="Clouds">
+			<text name="WLCloudColorText">
+				Cor das nuvens
+			</text>
+			<text name="WLCloudColorText2">
+				XY / densidade das nuvens
+			</text>
+			<slider label="X" name="WLCloudX"/>
+			<slider label="Y" name="WLCloudY"/>
+			<slider label="D" name="WLCloudDensity"/>
+			<text name="WLCloudCoverageText">
+				Cobertura das nuvens
+			</text>
+			<text name="WLCloudScaleText">
+				Escala das nuvens
+			</text>
+			<text name="WLCloudDetailText">
+				Detalhe das nuvens (XY / densidade)
+			</text>
+			<slider label="X" name="WLCloudDetailX"/>
+			<slider label="Y" name="WLCloudDetailY"/>
+			<slider label="D" name="WLCloudDetailDensity"/>
+			<text name="WLCloudScrollXText">
+				Passagem das nuvens X
+			</text>
+			<check_box label="Fixar" name="WLCloudLockX"/>
+			<text name="WLCloudScrollYText">
+				Passagem das nuvens Y
+			</text>
+			<check_box label="Fixar" name="WLCloudLockY"/>
+		</panel>
+	</tab_container>
+	<check_box label="Usar esta pré-configuração como meu novo céu" name="make_default_cb"/>
+	<button label="Salvar" name="save"/>
+	<button label="Cancelar" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7bde22851e3e3c1ceab282455cda937b1726860b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Water Preset" title="Editar pré-configuração da água">
+	<string name="title_new">
+		Criar nova pré-configuração de água
+	</string>
+	<string name="title_edit">
+		Editar pré-configuração da água
+	</string>
+	<string name="hint_new">
+		Dê um nome à sua pré-configuração, ajuste os controles para criá-la e clique em &quot;Salvar&quot;.
+	</string>
+	<string name="hint_edit">
+		Para editar sua pré-configuração de água, ajuste os controles e clique em &quot;Salvar&quot;.
+	</string>
+	<string name="combo_label">
+		-Selecione uma pré-configuração-
+	</string>
+	<text name="hint">
+		Para editar sua pré-configuração, ajuste os controles e clique em &quot;Salvar&quot;.
+	</text>
+	<text name="label">
+		Nome da pré-configuração:
+	</text>
+	<text name="note">
+		Observação: trocar o nome de uma pré-configuração criará uma nova sem modificar a configuração atual.
+	</text>
+	<panel name="panel_water_preset">
+		<text name="water_color_label">
+			Cor da névoa da água
+		</text>
+		<text name="water_fog_density_label">
+			Expoente da densidade da névoa
+		</text>
+		<text name="underwater_fog_modifier_label">
+			Modificador de névoa submerso
+		</text>
+		<text name="BHText">
+			Direção de onda grande
+		</text>
+		<slider label="X" name="WaterWave1DirX"/>
+		<slider label="Y" name="WaterWave1DirY"/>
+		<text name="BDensText">
+			Escala de ondas de reflexo
+		</text>
+		<text name="HDText">
+			Escala de Fresnel
+		</text>
+		<text name="FresnelOffsetText">
+			Recuo de Fresnel
+		</text>
+		<text name="BHText2">
+			Direção de onda pequena
+		</text>
+		<slider label="X" name="WaterWave2DirX"/>
+		<slider label="Y" name="WaterWave2DirY"/>
+		<text name="DensMultText">
+			Escala de refração acima
+		</text>
+		<text name="WaterScaleBelowText">
+			Escala de refração abaixo
+		</text>
+		<text name="MaxAltText">
+			Multiplicador de distorção
+		</text>
+		<text name="BHText3">
+			Mapa normal
+		</text>
+	</panel>
+	<check_box label="Usar esta pré-configuração na minha água" name="make_default_cb"/>
+	<button label="Salvar" name="save"/>
+	<button label="Cancelar" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_environment_settings.xml b/indra/newview/skins/default/xui/pt/floater_environment_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4055ba97ef3223b92a289ae3caf007eaa9eeec56
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_environment_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="AMBIENTE">
+	<text name="note">
+		Use as opções abaixo para personalizar as configurações de ambiente no visualizador.
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Usar configurações da região" name="use_region_settings"/>
+		<radio_item label="Personalizar meu ambiente" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="note">
+			Observação: suas configurações não se aplicam aos outros usuários.
+		</text>
+		<text name="water_settings_title">
+			Configuração de água
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Selecione uma pré-configuração-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Ciclo céu / dia
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Céu fixo" name="my_sky_settings"/>
+			<radio_item label="Ciclo dia" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Selecione uma pré-configuração-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Selecione uma pré-configuração-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="OK" name="ok_btn"/>
+	<button label="Cancelar" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_model_preview.xml b/indra/newview/skins/default/xui/pt/floater_model_preview.xml
index cdad55bded57e8b2d9d1d819b773bc96c2d2186d..fbd88500a894d48842704fc77e59d2f11c635af3 100644
--- a/indra/newview/skins/default/xui/pt/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/pt/floater_model_preview.xml
@@ -3,6 +3,9 @@
 	<string name="status_idle">
 		Inativo
 	</string>
+	<string name="status_parse_error">
+		Dae parsing - erro, detalhes no log.
+	</string>
 	<string name="status_reading_file">
 		Carregando...
 	</string>
@@ -12,6 +15,9 @@
 	<string name="status_vertex_number_overflow">
 		Erro: Número de Vertex acima de 65534. Abortado.
 	</string>
+	<string name="bad_element">
+		Erro: elemento inválido
+	</string>
 	<string name="high">
 		Alto
 	</string>
diff --git a/indra/newview/skins/default/xui/pt/floater_model_wizard.xml b/indra/newview/skins/default/xui/pt/floater_model_wizard.xml
index 1064e16e8339fa001782c20c52a8465832923d77..e8d5fcdc056b529282f40fa83d97a1d84865afc7 100644
--- a/indra/newview/skins/default/xui/pt/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/pt/floater_model_wizard.xml
@@ -193,6 +193,9 @@
 	<string name="status_idle">
 		Inativo
 	</string>
+	<string name="status_parse_error">
+		Dae parsing - erro, detalhes no log.
+	</string>
 	<string name="status_reading_file">
 		Carregando...
 	</string>
@@ -202,6 +205,9 @@
 	<string name="status_vertex_number_overflow">
 		Erro: Número de Vertex acima de 65534. Abortado.
 	</string>
+	<string name="bad_element">
+		Erro: elemento inválido
+	</string>
 	<string name="high">
 		Alto
 	</string>
diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml
index ed273d9f28c55b40410b2d2fc4b117b1be92e0e8..35d9a0ffabb6afb8da2d7ad2dda2c9b83bd558aa 100644
--- a/indra/newview/skins/default/xui/pt/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tools.xml
@@ -405,7 +405,7 @@
 			</combo_box>
 			<spinner label="Gravidade" name="Physics Gravity"/>
 			<spinner label="Fricção" name="Physics Friction"/>
-			<spinner label="Densidade" name="Physics Density"/>
+			<spinner label="Densidade em 100 kg/m^3" name="Physics Density"/>
 			<spinner label="Restituição" name="Physics Restitution"/>
 		</panel>
 		<panel label="Textura" name="Texture">
diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml
index 3dff3d7c8a96d76881d90f76718e9526c9572710..1d3fa48fb32137c129fe637c8baadafefd2e187c 100644
--- a/indra/newview/skins/default/xui/pt/menu_login.xml
+++ b/indra/newview/skins/default/xui/pt/menu_login.xml
@@ -17,7 +17,7 @@
 		<menu_item_call label="Mostrar TOS" name="TOS"/>
 		<menu_item_call label="Mostrar mensagem crítica" name="Critical"/>
 		<menu_item_call label="Teste de mídia do navegador" name="Web Browser Test"/>
-		<menu_item_call label="Teste de conteúdo web" name="Web Content Floater Test"/>
+		<menu_item_call label="Test de Bugs de Conteúdo Web" name="Web Content Floater Debug Test"/>
 		<menu_item_check label="Exibir seletor da grade" name="Show Grid Picker"/>
 		<menu_item_call label="Exibir painel de notificações" name="Show Notifications Console"/>
 	</menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml
index 228ce46a319c9e6909544a3e6c76bdf67ccf2e35..0d32d58de45b8154086c57039991960d18cd727d 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
+<toggleable_menu name="menu_group_plus">
 	<menu_item_check label="Ordenar por conversas mais recentes" name="sort_by_recent_speakers"/>
 	<menu_item_check label="Ordenar por nome" name="sort_name"/>
 	<menu_item_check label="Ordenar por distância" name="sort_distance"/>
 	<menu_item_check label="Ver ícones de pessoas" name="view_icons"/>
+	<menu_item_check label="Ver Mapa" name="view_map"/>
 	<menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index 4213db7440ccc414b4d9d159f7301f1173e0f055..c184fb0af3ed241ac638ea758c21c94100e6ff5d 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -31,6 +31,7 @@
 		<menu_item_call label="Meus grupos" name="My Groups"/>
 		<menu_item_check label="Bate-papo local" name="Nearby Chat"/>
 		<menu_item_call label="Pessoas por perto" name="Active Speakers"/>
+		<menu_item_check label="Voz por perto" name="Nearby Voice"/>
 	</menu>
 	<menu label="Mundo" name="World">
 		<menu_item_check label="Mini Mapa" name="Mini-Map"/>
@@ -63,8 +64,24 @@
 			<menu_item_call label="Meio-dia" name="Noon"/>
 			<menu_item_call label="Pôr-do-Sol" name="Sunset"/>
 			<menu_item_call label="Meia-noite" name="Midnight"/>
-			<menu_item_call label="Horário da propriedade" name="Revert to Region Default"/>
-			<menu_item_call label="Editor de ambiente" name="Environment Editor"/>
+		</menu>
+		<menu label="Editor de ambientes" name="Enviroment Editor">
+			<menu_item_call label="Configurações de ambiente..." name="Enviroment Settings"/>
+			<menu label="Pré-configurações de água" name="Water Presets">
+				<menu_item_call label="Nova pré-configuração..." name="new_water_preset"/>
+				<menu_item_call label="Editar pré-configuração..." name="edit_water_preset"/>
+				<menu_item_call label="Excluir pré-configuração..." name="delete_water_preset"/>
+			</menu>
+			<menu label="Pré-configurações de céu" name="Sky Presets">
+				<menu_item_call label="Nova pré-configuração..." name="new_sky_preset"/>
+				<menu_item_call label="Editar pré-configuração..." name="edit_sky_preset"/>
+				<menu_item_call label="Excluir pré-configuração..." name="delete_sky_preset"/>
+			</menu>
+			<menu label="Pré-configurações de dias" name="Day Presets">
+				<menu_item_call label="Nova pré-configuração..." name="new_day_preset"/>
+				<menu_item_call label="Editar pré-configuração..." name="edit_day_preset"/>
+				<menu_item_call label="Excluir pré-configuração..." name="delete_day_preset"/>
+			</menu>
 		</menu>
 	</menu>
 	<menu label="Construir" name="BuildTools">
diff --git a/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml b/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml
index 7b6ce4d87ec8798c1efd50ad4aebbcddd5f7ce8a..75dca703cb0c39cee995c71fd1cbb6fc68141924 100644
--- a/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
+<toggleable_menu name="Gear Wearing">
 	<menu_item_call label="Editar look" name="edit"/>
 	<menu_item_call label="Tirar" name="takeoff"/>
-</menu>
+	<menu_item_call label="Copiar lista do look para a área de transferência" name="copy"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index 56a33f51e8cd06cf2febf880afcb5efe7a0b7ad7..ffdaf8a26ff9a9f50e861b823eb32bde0b5b064f 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -1541,6 +1541,10 @@ Por favor volte mais tarde.
 			<button name="Cancel" text="Cancelar"/>
 		</form>
 	</notification>
+	<notification name="TooManyTeleportOffers">
+		Você fez [OFFERS] ofertas de teletransporte, porém o seu limite é [LIMIT].
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
 	<notification name="OfferTeleportFromGod">
 		Convocar residente à sua localização com poderes de deus?
 		<form name="form">
@@ -1962,6 +1966,10 @@ Você gostaria de deixar o modo Ocupado antes de completar esta transação?
 		Tem certeza de que quer apagar todo o histórico de viagens, web e buscas?
 		<usetemplate name="okcancelbuttons" notext="Não" yestext="OK"/>
 	</notification>
+	<notification name="ConfirmClearCache">
+		Tem certeza que deseja apagar o cache do visualizador?
+		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+	</notification>
 	<notification name="ConfirmClearCookies">
 		Você tem certeza de que deseja limpar os cookies?
 		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/>
@@ -1987,48 +1995,30 @@ Inclua um link para facilitar o acesso para visitantes. Teste o link na barra de
 		Você deseja substituir a pré-configuração salva?
 		<usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/>
 	</notification>
-	<notification name="WLDeletePresetAlert">
-		Você deseja apagar [SKY]?
-		<usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/>
-	</notification>
 	<notification name="WLNoEditDefault">
 		Você não pode editar ou excluir um padrão predefinido.
 	</notification>
 	<notification name="WLMissingSky">
 		Este arquivo de ciclo de dia se refere a um arquivo de céu faltando: [SKY].
 	</notification>
-	<notification name="PPSaveEffectAlert">
-		Existe efeito de Pós-Processamento. Você deseja substituí-lo?
-		<usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/>
-	</notification>
-	<notification name="NewSkyPreset">
-		Me dê o nome para o novo céu.
-		<form name="form">
-			<input name="message">
-				Novo padrão
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Cancelar"/>
-		</form>
+	<notification name="WLRegionApplyFail">
+		As configurações não podem ser aplicadas à região.   Talvez sair e votlar à região resolva.   Motivo:  [FAIL_REASON]
 	</notification>
-	<notification name="ExistsSkyPresetAlert">
-		Este padrão já existe!
+	<notification name="EnvCannotDeleteLastDayCycleKey">
+		Impossível excluir a última chave do ciclo pois um ciclo não pode ficar vazio.   Modifique a última chave em vez de tentar apagá-la, depois crie uma chave nova.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="NewWaterPreset">
-		Dê o nome para o novo padrão de água.
-		<form name="form">
-			<input name="message">
-				Nova Apresentação
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Cancelar"/>
-		</form>
+	<notification name="DayCycleTooManyKeyframes">
+		Não é possível adicionar mais chaves de quadro a este ciclo.   O máximo de chaves de quadro para ciclos de dia de [SCOPE] é [MAX].
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="ExistsWaterPresetAlert">
-		Este padrão já existe!
+	<notification name="EnvUpdateRate">
+		Cada configuração de ambiente só pode ser atualizada a cada [WAIT] segundos.   Aguarde pelo menos isso e tente novamente.
+		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
-	<notification name="WaterNoEditDefault">
-		Você não pode editar ou apagar um padrão predefinido.
+	<notification name="PPSaveEffectAlert">
+		Existe efeito de Pós-Processamento. Você deseja substituí-lo?
+		<usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/>
 	</notification>
 	<notification name="ChatterBoxSessionStartError">
 		Não foi possível iniciar uma nova sessão bate-papo com [RECIPIENT].
@@ -2316,6 +2306,9 @@ Logo, não é possível voar aqui.
 	<notification name="NoBuild">
 		Esta área desativou a opção de construir.  Não é possível construir ou fazer rez de objetos nesta área.
 	</notification>
+	<notification name="SeeAvatars">
+		Este terreno oculta os avatares e bate-papo de outro terreno.    Não é possível ver residentes fora do terreno e vice-versa.   O bate-papo por texto no canal 0 também está bloqueado.
+	</notification>
 	<notification name="ScriptsStopped">
 		Um administrador não permitiu scripts temporariamente nesta região.
 	</notification>
@@ -2740,7 +2733,9 @@ O botão será exibido quando houver espaço suficente.
 		Selecione os residentes com quem compartilhar.
 	</notification>
 	<notification name="MeshUploadError">
-		[LABEL] não foi carregado: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER]
+		[LABEL] não foi carregado: [MESSAGE] [IDENTIFIER] 
+
+Mais detalhes no log.
 	</notification>
 	<notification name="ShareItemsConfirmation">
 		Tem certeza de que quer compartilhar os itens abaixo?
diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_list.xml b/indra/newview/skins/default/xui/pt/panel_outfits_list.xml
index 2b2e7c1dbfddeebd531233bcb6c387c5785e682d..2d74e092a4a210f894a08c9be3264758b9465f78 100644
--- a/indra/newview/skins/default/xui/pt/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/pt/panel_outfits_list.xml
@@ -1,7 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Outfits">
+	<accordion name="outfits_accordion">
+		<no_matched_tabs_text name="no_matched_outfits_msg" value="Não encontrou o que procura? Tente fazer uma [secondlife:///app/search/people/[SEARCH_TERM] Busca]."/>
+		<no_visible_tabs_text name="no_outfits_msg" value="Você ainda não tem nenhum look. Tente encontrar um na [secondlife:///app/search/groups Busca]."/>
+	</accordion>
 	<panel name="bottom_panel">
-		<button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/>
+		<menu_button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/>
 		<button name="trash_btn" tool_tip="Excluir o look selecionado"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_place_profile.xml b/indra/newview/skins/default/xui/pt/panel_place_profile.xml
index 7fc07483c0ddc87bb2d64285a7ed6a68bc3cc3d2..8abe5797027bcffa3d3b6a3920ac8bbd2223ab35 100644
--- a/indra/newview/skins/default/xui/pt/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/pt/panel_place_profile.xml
@@ -64,6 +64,8 @@
 						<text name="scripts_value" value="Ligado"/>
 						<text name="damage_label" value="Dano:"/>
 						<text name="damage_value" value="Desligado"/>
+						<text name="see_avatars_label" value="Ver avatares:"/>
+						<text name="see_avatars_value" value="Desligar"/>
 						<button label="Sobre o terreno" name="about_land_btn"/>
 					</panel>
 				</accordion_tab>
diff --git a/indra/newview/skins/default/xui/pt/panel_places.xml b/indra/newview/skins/default/xui/pt/panel_places.xml
index 828ef3e4693dff10adadde315f919478c1cf55ff..69f0baf65f24e6382f9a06294ffbec23eedd4716 100644
--- a/indra/newview/skins/default/xui/pt/panel_places.xml
+++ b/indra/newview/skins/default/xui/pt/panel_places.xml
@@ -24,7 +24,7 @@
 						<menu_button label="▼" name="overflow_btn" tool_tip="Mostrar opções adicionais"/>
 					</layout_panel>
 				</layout_stack>
-				<layout_stack name="bottom_bar_ls3">
+				<layout_stack name="bottom_bar_profile_ls">
 					<layout_panel name="profile_btn_lp">
 						<button label="Perfil" name="profile_btn" tool_tip="Mostrar perfil do lugar"/>
 					</layout_panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
index bbe7e15ba2edcff4ba33da1f4ce0c91be3da40a3..c72928fc3523e1665c3054bd16b41e3f0c8424db 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
@@ -3,6 +3,19 @@
 	<panel.string name="aspect_ratio_text">
 		[NUM]:[DEN]
 	</panel.string>
+	<text name="Cache:">
+		Cache:
+	</text>
+	<spinner label="Cache (64 - 9984 MB)" name="cachesizespinner"/>
+	<text name="text_box5">
+		MB
+	</text>
+	<button label="Limpar cache" label_selected="Limpar cache" name="clear_cache"/>
+	<text name="Cache location">
+		Localização do cache:
+	</text>
+	<button label="Navegar" label_selected="Navegar" name="set_cache"/>
+	<button label="Localização padrão" label_selected="Localização padrão" name="default_cache_location"/>
 	<text name="UI Size:">
 		Interface:
 	</text>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
index 4164147e5c355486795b83a648cac5e615076ac1..d910a7b812e9a0e782cbad0c27f3d4a0c4de951d 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml
@@ -19,6 +19,7 @@
 	<check_box label="Ativado" name="enable_voice_check"/>
 	<check_box label="Autorizar auto-play de mídias" name="media_auto_play_btn" tool_tip="Marque esta opção para auto-executar mídias, se elas quiserem" value="true"/>
 	<check_box label="Tocar mídia anexada em outros avatares" name="media_show_on_others_btn" tool_tip="Desmarque esta opção para ocultar mídias anexadas em avatares por perto" value="true"/>
+	<check_box label="Tocar áudio de gestos" name="gesture_audio_play_btn" tool_tip="Selecione para ouvir o áudio de gestos" value="verdadeiro"/>
 	<text name="voice_chat_settings">
 		Configuração de bate-papo de voz
 	</text>
@@ -35,28 +36,5 @@
 	<button label="Definir chave" name="set_voice_hotkey_button"/>
 	<button name="set_voice_middlemouse_button" tool_tip="Redefinir como botão do meio do mouse"/>
 	<button label="Controles de entrada/saída" name="device_settings_btn" width="180"/>
-	<panel label="Configuração dos dispositivo" name="device_settings_panel">
-		<panel.string name="default_text">
-			Padrão
-		</panel.string>
-		<panel.string name="default system device">
-			Dispositivo padrão do sistema
-		</panel.string>
-		<panel.string name="no device">
-			Nenhum
-		</panel.string>
-		<text name="Input">
-			Entrada
-		</text>
-		<text name="My volume label">
-			Meu volume:
-		</text>
-		<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Mude o volume usando o controle deslizante"/>
-		<text name="wait_text">
-			Aguarde
-		</text>
-		<text name="Output">
-			Saída
-		</text>
-	</panel>
+	<panel label="Configuração dos dispositivo" name="device_settings_panel"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_region_environment.xml b/indra/newview/skins/default/xui/pt/panel_region_environment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..79eedebe5f3ae716ce1542eb3deb8d3247a1ab8a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_region_environment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ambiente" name="panel_env_info">
+	<text name="water_settings_title">
+		Selecione as configurações de Água e céu / Ciclo dos dias que todos os visitantes à sua região verão.  Mais informações
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Usar o padrão do Second Life" name="use_sl_default_settings"/>
+		<radio_item label="Usar as seguintes configurações" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="water_settings_title">
+			Configuração de água
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Selecione uma pré-configuração-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Ciclo céu / dia
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Céu fixo" name="my_sky_settings"/>
+			<radio_item label="Ciclo dia" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Selecione uma pré-configuração-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Selecione uma pré-configuração-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="Aplicar" name="apply_btn"/>
+	<button label="Cancelar" name="cancel_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_region_terrain.xml b/indra/newview/skins/default/xui/pt/panel_region_terrain.xml
index b9b0e9d90f758eef100d6962ab0569bd0acba5d9..74330a8946ee626584c145054261954f84acb626 100644
--- a/indra/newview/skins/default/xui/pt/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/pt/panel_region_terrain.xml
@@ -7,21 +7,56 @@
 		nenhum
 	</text>
 	<spinner label="Altura da água" name="water_height_spin"/>
-	<button label="?" name="water_height_help"/>
-	<spinner label="Limite do aumento do &#10;terreno" name="terrain_raise_spin"/>
-	<button label="?" name="terrain_raise_help"/>
-	<spinner label="Limite mais baixo do &#10;terreno" name="terrain_lower_spin" bottom_delta="-34"/>
-	<button label="?" name="terrain_lower_help"/>
-	<check_box label="Usar o sol da propriedade" name="use_estate_sun_check"/>
-	<button label="?" name="use_estate_sun_help"/>
-	<check_box label="Sol fixo" name="fixed_sun_check"/>
-	<button label="?" name="fixed_sun_help"/>
-	<slider label="Fase" name="sun_hour_slider"/>
-	<button label="Aplicar" name="apply_btn"/>
+	<spinner label="Limite do aumento do 
+terreno" name="terrain_raise_spin"/>
+	<spinner bottom_delta="-34" label="Limite mais baixo do 
+terreno" name="terrain_lower_spin"/>
+	<text name="detail_texture_text">
+		Texturas de terreno (exige arquivos .tga 512x512, 24 bit)
+	</text>
+	<text name="height_text_lbl">
+		1 (Baixo)
+	</text>
+	<text name="height_text_lbl2">
+		2
+	</text>
+	<text name="height_text_lbl3">
+		3
+	</text>
+	<text name="height_text_lbl4">
+		4 (Alto)
+	</text>
+	<text name="height_text_lbl5">
+		Intervalos de elevação de textura
+	</text>
+	<text name="height_text_lbl10">
+		Os valores representam o intervalo de mistura das texturas acima.
+	</text>
+	<text name="height_text_lbl11">
+		Em metros, o valor BAIXO é a altura MÁXIMA da Textura 1, e HIGH é a altura MÍNIMA da Textura 4.
+	</text>
+	<text name="height_text_lbl6">
+		Noroeste
+	</text>
+	<text name="height_text_lbl7">
+		Nordeste
+	</text>
+	<spinner label="Baixo" name="height_start_spin_1"/>
+	<spinner label="Baixo" name="height_start_spin_3"/>
+	<spinner label="Alto" name="height_range_spin_1"/>
+	<spinner label="Alto" name="height_range_spin_3"/>
+	<text name="height_text_lbl8">
+		Sudoeste
+	</text>
+	<text name="height_text_lbl9">
+		Sudeste
+	</text>
+	<spinner label="Baixo" name="height_start_spin_0"/>
+	<spinner label="Baixo" name="height_start_spin_2"/>
+	<spinner label="Alto" name="height_range_spin_0"/>
+	<spinner label="Alto" name="height_range_spin_2"/>
 	<button label="Download de terreno RAW..." name="download_raw_btn" tool_tip="Não disponível aos gerentes, somente aos proprietários."/>
-	<button label="?" name="download_raw_help"/>
 	<button label="Upload de terreno RAW..." name="upload_raw_btn" tool_tip="Não disponível aos gerentes, somente aos proprietários."/>
-	<button label="?" name="upload_raw_help"/>
-	<button width="170" label="Nivelar o terreno" name="bake_terrain_btn" tool_tip="Ajustar terreno atual como o ponto médio para os limites de aumento/decréscimo"/>
-	<button left="190" label="?" name="bake_terrain_help"/>
+	<button label="Nivelar o terreno" name="bake_terrain_btn" tool_tip="Ajustar terreno atual como o ponto médio para os limites de aumento/decréscimo" width="170"/>
+	<button label="Aplicar" name="apply_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml
index 11ac6c106a3dbfe9693a5e87b8e3f144a127144a..988e7c7076d1d507ad4fc79d9ba45b67ee00d8c7 100644
--- a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml
@@ -1,6 +1,38 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Coisas" name="objects panel">
 	<panel label="" name="sidepanel__inventory_panel">
+		<layout_stack name="inventory_layout_stack">
+			<layout_panel name="inbox_layout_panel">
+				<panel label="" name="marketplace_inbox">
+					<string name="InboxLabelWithArg">
+						Itens recebidos ([NUM])
+					</string>
+					<string name="InboxLabelNoArg">
+						Itens recebidos
+					</string>
+					<button label="Itens recebidos" name="inbox_btn"/>
+					<text name="inbox_fresh_new_count">
+						[NUM] novos
+					</text>
+					<panel tool_tip="Drag and drop items to your inventory to manage and use them">
+						<text name="inbox_inventory_placeholder">
+							Compras do marketplace serão entregues aqui.
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+			<layout_panel name="outbox_layout_panel">
+				<panel label="" name="marketplace_outbox">
+					<button label="Caixa de saída de comerciante" name="outbox_btn"/>
+					<button label="" name="outbox_sync_btn" tool_tip="Enviar para minha vitrine no Marketplace"/>
+					<panel tool_tip="Drag and drop items here to prepare them for sale on your storefront">
+						<text name="outbox_inventory_placeholder">
+							Abra uma conta de comerciante para usar este recurso.
+						</text>
+					</panel>
+				</panel>
+			</layout_panel>
+		</layout_stack>
 		<panel name="button_panel">
 			<layout_stack name="button_panel_ls">
 				<layout_panel name="info_btn_lp">
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index ed93217d597d4c2dbdb6638260fcbc1098d23d44..3b3b7041d76b447b1ed9b65b3cb21d1d49f43682 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -1132,6 +1132,12 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 	<string name="InventoryNoTexture">
 		Você não possui uma cópia desta textura no seu inventário
 	</string>
+	<string name="InventoryInboxNoItems">
+		Compras do marketplace serão entregues aqui.
+	</string>
+	<string name="InventoryOutboxNoItems">
+		Arraste seus itens aqui para preparar sua listagem na sua vitrine do Marketplace.
+	</string>
 	<string name="no_transfer" value="(não transferível)"/>
 	<string name="no_modify" value="(não modificável)"/>
 	<string name="no_copy" value="(não copiável)"/>
@@ -1256,6 +1262,9 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 	<string name="InvFolder All">
 		Tudo
 	</string>
+	<string name="no_attachments">
+		Nenhum anexo vestido
+	</string>
 	<string name="Buy">
 		Comprar
 	</string>
@@ -1591,6 +1600,9 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 	<string name="IMTeen">
 		adolescente
 	</string>
+	<string name="Anyone">
+		qualquer um
+	</string>
 	<string name="RegionInfoError">
 		erro
 	</string>
@@ -1807,6 +1819,12 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 	<string name="Public">
 		Público
 	</string>
+	<string name="LocalSettings">
+		Configurações locais
+	</string>
+	<string name="RegionSettings">
+		Configurações da região
+	</string>
 	<string name="ClassifiedClicksTxt">
 		Cliques: [TELEPORT] teletransporte, [MAP] mapa, [PROFILE] perfil
 	</string>
@@ -3594,6 +3612,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="LocationCtrlGeneralIconTooltip">
 		Região em geral
 	</string>
+	<string name="LocationCtrlSeeAVsTooltip">
+		Avatar visíveis e bate-papo permitido fora deste terreno
+	</string>
 	<string name="UpdaterWindowTitle">
 		[APP_NAME] Atualização
 	</string>
diff --git a/indra/newview/skins/default/xui/zh/panel_places.xml b/indra/newview/skins/default/xui/zh/panel_places.xml
index c141201ab2eed953cd1dec9fa5fefb3f8f2d917b..6434a7279c8b5db80501ad7a1ac168e987b13163 100644
--- a/indra/newview/skins/default/xui/zh/panel_places.xml
+++ b/indra/newview/skins/default/xui/zh/panel_places.xml
@@ -24,7 +24,7 @@
 						<menu_button name="overflow_btn" tool_tip="顯示額外選項"/>
 					</layout_panel>
 				</layout_stack>
-				<layout_stack name="bottom_bar_ls3">
+				<layout_stack name="bottom_bar_profile_ls">
 					<layout_panel name="profile_btn_lp">
 						<button label="檔案" name="profile_btn" tool_tip="顯示地點檔案"/>
 					</layout_panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_people.xml b/indra/newview/skins/minimal/xui/da/panel_people.xml
index 49cd2c71f2194a364f24c199d29ca15b61077f5a..8be4d695bdeda9b7e88bb991eee7225a642c6f1c 100644
--- a/indra/newview/skins/minimal/xui/da/panel_people.xml
+++ b/indra/newview/skins/minimal/xui/da/panel_people.xml
@@ -66,16 +66,16 @@ Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor.
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Profil" name="view_profile_btn" tool_tip="Vis billeder, grupper og anden beboer information"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="Ã…ben session med privat besked (IM)"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Opkald" name="call_btn" tool_tip="Kald til denne beboer"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teleportér" name="teleport_btn" tool_tip="Tilbyd teleport"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
index 0ef2234fecce596f0aded552d34055214657cf29..56c2310f2f9c7fadff889550fde8f0b74ffb512b 100644
--- a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
-	<text name="avatar_name" value="Unbekannt"/>
 	<layout_stack name="button_stack">
 		<layout_panel name="view_profile_btn_panel">
 			<button label="Profil" name="view_profile_btn"/>
@@ -11,20 +10,20 @@
 		<layout_panel name="teleport_btn_panel">
 			<button label="Teleportieren" name="teleport_btn" tool_tip="Dieser Person einen Teleport anbieten"/>
 		</layout_panel>
-		<layout_panel name="share_btn_panel">
-			<button label="Teilen" name="share_btn"/>
-		</layout_panel>
-		<layout_panel name="pay_btn_panel">
-			<button label="Bezahlen" name="pay_btn"/>
-		</layout_panel>
 		<layout_panel name="call_btn_panel">
 			<button label="Anrufen" name="call_btn"/>
 		</layout_panel>
 		<layout_panel name="end_call_btn_panel">
 			<button label="Anruf beenden" name="end_call_btn"/>
 		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Voice-Steuerung" name="voice_ctrls_btn"/>
+		<layout_panel name="block_btn_panel">
+			<button label="Ignorieren" name="block_btn"/>
+		</layout_panel>
+		<layout_panel name="unblock_btn_panel">
+			<button label="Freischalten" name="unblock_btn"/>
+		</layout_panel>
+		<layout_panel name="volume_ctrl_panel">
+			<slider name="volume_slider" tool_tip="Anrufvolumen" value="0,5"/>
 		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_people.xml b/indra/newview/skins/minimal/xui/de/panel_people.xml
index 4f8f70ad17a72468668e1a40041aa9b0fb8514dd..a52557236face330c15ed9297dde6ce736928b84 100644
--- a/indra/newview/skins/minimal/xui/de/panel_people.xml
+++ b/indra/newview/skins/minimal/xui/de/panel_people.xml
@@ -48,13 +48,13 @@
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="Instant Messenger öffnen"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/minimal/xui/en/panel_people.xml b/indra/newview/skins/minimal/xui/en/panel_people.xml
index 76baacb0911393eba6703651c5f8f51209637f9e..4739f86e95efd728173335ecf400169275e9f187 100644
--- a/indra/newview/skins/minimal/xui/en/panel_people.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_people.xml
@@ -428,7 +428,7 @@ Looking for people to hang out with? Try the Destinations button below.
 			height="23"
 			layout="bottomleft"
 			left_pad="3"
-			name="chat_btn_lp"
+			name="im_btn_lp"
 		    user_resize="false" 
 		    auto_resize="true"
 			width="41">
@@ -449,7 +449,7 @@ Looking for people to hang out with? Try the Destinations button below.
 			height="23"
 			layout="bottomleft"
 			left_pad="3"
-			name="chat_btn_lp"
+			name="call_btn_lp"
 		    user_resize="false" 
 		    auto_resize="true"
 			width="52">
@@ -470,7 +470,7 @@ Looking for people to hang out with? Try the Destinations button below.
 			height="23"
 			layout="bottomleft"
 			left_pad="3"
-			name="chat_btn_lp"
+			name="teleport_btn_lp"
 		    user_resize="false" 
 		    auto_resize="true"
 			width="77">
diff --git a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
index 1be6997813ebdb6ece11ffc7bc78825a2d858be1..93b6526f77a7be913da5f255b6bbce48812bf9e7 100644
--- a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
@@ -10,20 +10,20 @@
 		<layout_panel name="teleport_btn_panel">
 			<button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte a esta persona"/>
 		</layout_panel>
-		<layout_panel name="share_btn_panel">
-			<button label="Compartir" name="share_btn"/>
-		</layout_panel>
-		<layout_panel name="pay_btn_panel">
-			<button label="Pagar" name="pay_btn"/>
-		</layout_panel>
 		<layout_panel name="call_btn_panel">
 			<button label="Llamar" name="call_btn"/>
 		</layout_panel>
 		<layout_panel name="end_call_btn_panel">
 			<button label="Colgar" name="end_call_btn"/>
 		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Controles de la voz" name="voice_ctrls_btn"/>
+		<layout_panel name="block_btn_panel">
+			<button label="Ignorar" name="block_btn"/>
+		</layout_panel>
+		<layout_panel name="unblock_btn_panel">
+			<button label="No ignorar" name="unblock_btn"/>
+		</layout_panel>
+		<layout_panel name="volume_ctrl_panel">
+			<slider name="volume_slider" tool_tip="Volumen de la llamada" value="0.5"/>
 		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_people.xml b/indra/newview/skins/minimal/xui/es/panel_people.xml
index 1e1c3411aeb61c09e0e0b012f918497119c989bd..8d3d14fa895cbf6da24c66d8246c451e3b6458a7 100644
--- a/indra/newview/skins/minimal/xui/es/panel_people.xml
+++ b/indra/newview/skins/minimal/xui/es/panel_people.xml
@@ -49,13 +49,13 @@
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
index fdc5aeca4948cf1114b86f9299d23422eeef9733..1643cf3229f7691c0eda72575a7b83f855472672 100644
--- a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
-	<text name="avatar_name" value="Inconnu"/>
 	<layout_stack name="button_stack">
 		<layout_panel name="view_profile_btn_panel">
 			<button label="Profil" name="view_profile_btn"/>
@@ -11,20 +10,20 @@
 		<layout_panel name="teleport_btn_panel">
 			<button label="Téléporter" name="teleport_btn" tool_tip="Proposer de téléporter cette personne."/>
 		</layout_panel>
-		<layout_panel name="share_btn_panel">
-			<button label="Partager" name="share_btn"/>
-		</layout_panel>
-		<layout_panel name="pay_btn_panel">
-			<button label="Payer" name="pay_btn"/>
-		</layout_panel>
 		<layout_panel name="call_btn_panel">
 			<button label="Appeler" name="call_btn"/>
 		</layout_panel>
 		<layout_panel name="end_call_btn_panel">
 			<button label="Quitter l&apos;appel" name="end_call_btn"/>
 		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Contrôles vocaux" name="voice_ctrls_btn"/>
+		<layout_panel name="block_btn_panel">
+			<button label="Ignorer" name="block_btn"/>
+		</layout_panel>
+		<layout_panel name="unblock_btn_panel">
+			<button label="Ne plus ignorer" name="unblock_btn"/>
+		</layout_panel>
+		<layout_panel name="volume_ctrl_panel">
+			<slider name="volume_slider" tool_tip="Volume de l&apos;appel." value="0,5"/>
 		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_people.xml b/indra/newview/skins/minimal/xui/fr/panel_people.xml
index 72fb4d807ff1f490ba96ffdbe8fef5c881072def..4d6e31d9b534118493a6be223e5b20c3ef09fcf6 100644
--- a/indra/newview/skins/minimal/xui/fr/panel_people.xml
+++ b/indra/newview/skins/minimal/xui/fr/panel_people.xml
@@ -49,13 +49,13 @@ Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouto
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="Ouvrir une session IM"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Appeler" name="call_btn" tool_tip="Appeler ce résident."/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
index 756db84c1c718ef45e3f2628df17842ec07a02dd..269931a1a4277c5b9e207f5c4c17d2dbd447655b 100644
--- a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
@@ -10,20 +10,20 @@
 		<layout_panel name="teleport_btn_panel">
 			<button label="Teleport" name="teleport_btn" tool_tip="Offri teleport a questa persona"/>
 		</layout_panel>
-		<layout_panel name="share_btn_panel">
-			<button label="Condividi" name="share_btn"/>
-		</layout_panel>
-		<layout_panel name="pay_btn_panel">
-			<button label="Paga" name="pay_btn"/>
-		</layout_panel>
 		<layout_panel name="call_btn_panel">
 			<button label="Chiama" name="call_btn"/>
 		</layout_panel>
 		<layout_panel name="end_call_btn_panel">
 			<button label="Chiudi chiamata" name="end_call_btn"/>
 		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Regolazione voce" name="voice_ctrls_btn"/>
+		<layout_panel name="block_btn_panel">
+			<button label="Blocca" name="block_btn"/>
+		</layout_panel>
+		<layout_panel name="unblock_btn_panel">
+			<button label="Sblocca" name="unblock_btn"/>
+		</layout_panel>
+		<layout_panel name="volume_ctrl_panel">
+			<slider name="volume_slider" tool_tip="Volume chiamata" value="0.5"/>
 		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_people.xml b/indra/newview/skins/minimal/xui/it/panel_people.xml
index 068c8bb8082db9f731f67f88d037311509d13b06..81e886acf0d9a393466130d5d78d5b67994ec271 100644
--- a/indra/newview/skins/minimal/xui/it/panel_people.xml
+++ b/indra/newview/skins/minimal/xui/it/panel_people.xml
@@ -66,16 +66,16 @@ Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso.
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Profilo" name="view_profile_btn" tool_tip="Mostra immagine, gruppi e altre informazioni del residente"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="Apri una sessione messaggio istantaneo"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell&apos;inventario"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
index f2429ac12aaf4e8c239cbdaacb7f17f0992ceb5e..14c38c796f85f8f319219c1eca9cbcb263f8251c 100644
--- a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_im_control_panel">
-	<text name="avatar_name" value="不明"/>
 	<layout_stack name="button_stack">
 		<layout_panel name="view_profile_btn_panel">
 			<button label="プロフィール" name="view_profile_btn"/>
@@ -11,20 +10,20 @@
 		<layout_panel name="teleport_btn_panel">
 			<button label="テレポート" name="teleport_btn" tool_tip="この人にテレポートを送ります"/>
 		</layout_panel>
-		<layout_panel name="share_btn_panel">
-			<button label="共有" name="share_btn"/>
-		</layout_panel>
-		<layout_panel name="pay_btn_panel">
-			<button label="支払う" name="pay_btn"/>
-		</layout_panel>
 		<layout_panel name="call_btn_panel">
 			<button label="コール" name="call_btn"/>
 		</layout_panel>
 		<layout_panel name="end_call_btn_panel">
 			<button label="コール終了" name="end_call_btn"/>
 		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="ボイスコントロール" name="voice_ctrls_btn"/>
+		<layout_panel name="block_btn_panel">
+			<button label="ブロック" name="block_btn"/>
+		</layout_panel>
+		<layout_panel name="unblock_btn_panel">
+			<button label="ブロック解除" name="unblock_btn"/>
+		</layout_panel>
+		<layout_panel name="volume_ctrl_panel">
+			<slider name="volume_slider" tool_tip="コールの音量" value="0.5"/>
 		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_people.xml b/indra/newview/skins/minimal/xui/ja/panel_people.xml
index 9eb45d9a806138f61c39769579b63f6a1f51835a..5caeebc151d9a5ba59f22e3888406beec3e607c7 100644
--- a/indra/newview/skins/minimal/xui/ja/panel_people.xml
+++ b/indra/newview/skins/minimal/xui/ja/panel_people.xml
@@ -66,16 +66,16 @@
 			<layout_panel name="view_profile_btn_lp">
 				<button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="コール" name="call_btn" tool_tip="この住人にコールする"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="共有" name="share_btn" tool_tip="「持ち物」のアイテムを共有する"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_people.xml b/indra/newview/skins/minimal/xui/pl/panel_people.xml
index dbfee739f4a13e59352379695977f539d22dff99..3b3aaa0987ce7e912470aac45a06230c53a349c2 100644
--- a/indra/newview/skins/minimal/xui/pl/panel_people.xml
+++ b/indra/newview/skins/minimal/xui/pl/panel_people.xml
@@ -66,16 +66,16 @@ Chcesz spotkać ludzi? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; p
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Profil" name="view_profile_btn" tool_tip="Pokaż zdjęcie, grupy i inne informacje o Rezydencie"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="Otwórz wiadomości IM"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Dzwoń" name="call_btn" tool_tip="Zadzwoń do tego Rezydenta"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="Udostępnij" name="share_btn" tool_tip="Udostępnij obiekt z Szafy"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleport"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
index d223ee9c696d2297eb5f35a8e2999cc27d208d00..190323c3b05e08ddfac36535e3c60d3cf641a164 100644
--- a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
@@ -10,20 +10,20 @@
 		<layout_panel name="teleport_btn_panel">
 			<button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
 		</layout_panel>
-		<layout_panel name="share_btn_panel">
-			<button label="Compartilhar" name="share_btn"/>
-		</layout_panel>
-		<layout_panel name="pay_btn_panel">
-			<button label="Pagar" name="pay_btn"/>
-		</layout_panel>
 		<layout_panel name="call_btn_panel">
 			<button label="Ligar" name="call_btn"/>
 		</layout_panel>
 		<layout_panel name="end_call_btn_panel">
 			<button label="Encerrar ligação" name="end_call_btn"/>
 		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Controles de voz" name="voice_ctrls_btn"/>
+		<layout_panel name="block_btn_panel">
+			<button label="Bloquear" name="block_btn"/>
+		</layout_panel>
+		<layout_panel name="unblock_btn_panel">
+			<button label="Desbloquear" name="unblock_btn"/>
+		</layout_panel>
+		<layout_panel name="volume_ctrl_panel">
+			<slider name="volume_slider" tool_tip="Volume da ligação" value="0.5"/>
 		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_people.xml b/indra/newview/skins/minimal/xui/pt/panel_people.xml
index d46c440eb966d738d2f86635de8a4c101ade417f..0e98c586c65554a896a78b860f42271d845e4686 100644
--- a/indra/newview/skins/minimal/xui/pt/panel_people.xml
+++ b/indra/newview/skins/minimal/xui/pt/panel_people.xml
@@ -49,13 +49,13 @@ Em busca de alguém para conversar? Confira o botão Destinos abaixo.
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Ligar" name="call_btn" tool_tip="Ligar para este residente"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/shining-fixes_rev18977.patch b/shining-fixes_rev18977.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b711da870a951304979f5d0045253f82d0765185
--- /dev/null
+++ b/shining-fixes_rev18977.patch
@@ -0,0 +1,41 @@
+# HG changeset patch
+# User Dave Parks <davep@lindenlab.com>
+# Date 1308673064 18000
+# Node ID 95c5639a3f80920e8dc54703d894517dd7694edf
+# Parent  6af10678de4736222b2c3f7e010e984fb5b327de
+SH-208 Disable VBO on all intel graphics chips (stability improvement).
+
+diff -r 6af10678de47 -r 95c5639a3f80 indra/newview/featuretable.txt
+--- a/indra/newview/featuretable.txt	Mon Jun 20 16:42:31 2011 -0700
++++ b/indra/newview/featuretable.txt	Tue Jun 21 11:17:44 2011 -0500
+@@ -1,4 +1,4 @@
+-version 29
++version 30
+ 
+ // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
+ // Should be combined into one table
+@@ -297,6 +297,7 @@
+ 
+ list Intel
+ RenderAnisotropic			1	0
++RenderVBOEnable				1	0
+ 
+ list GeForce2
+ RenderAnisotropic			1	0
+diff -r 6af10678de47 -r 95c5639a3f80 indra/newview/featuretable_xp.txt
+--- a/indra/newview/featuretable_xp.txt	Mon Jun 20 16:42:31 2011 -0700
++++ b/indra/newview/featuretable_xp.txt	Tue Jun 21 11:17:44 2011 -0500
+@@ -1,4 +1,4 @@
+-version 29
++version 30
+ 
+ // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
+ // Should be combined into one table
+@@ -295,6 +295,7 @@
+ 
+ list Intel
+ RenderAnisotropic			1	0
++RenderVBOEnable				1	0
+ 
+ list GeForce2
+ RenderAnisotropic			1	0