diff --git a/.hgtags b/.hgtags
index 2e439899bfdb480f1f91c262d29cfd2ad6914b58..643eda1a2bd556d3aeed685537671f188dd3aa1c 100644
--- a/.hgtags
+++ b/.hgtags
@@ -184,6 +184,13 @@ f2412ecd6740803ea9452f1d17fd872e263a0df7 3.0.2-start
 e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e DRTVWR-86_3.0.2-beta2
 e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e 3.0.2-beta2
 b95ddac176ac944efdc85cbee94ac2e1eab44c79 3.0.3-start
+1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-78_3.0.0-release
+0000000000000000000000000000000000000000 DRTVWR-78_3.0.0-release
+1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-77_3.0.0-release
 6694f3f062aa45f64ab391d25a3eb3d5eb1b0871 DRTVWR-85_3.0.3-beta1
 6694f3f062aa45f64ab391d25a3eb3d5eb1b0871 3.0.3-beta1
 586907287be581817b2422b5137971b22d54ea48 3.0.4-start
+61aa7974df089e8621fe9a4c69bcdefdb3cc208a DRTVWR-89_3.0.3-beta2
+61aa7974df089e8621fe9a4c69bcdefdb3cc208a 3.0.3-beta2
+0496d2f74043cf4e6058e76ac3db03d44cff42ce DRTVWR-84_3.0.3-release
+0496d2f74043cf4e6058e76ac3db03d44cff42ce 3.0.3-release
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 65628b0573e5417ab9d45fa1b1c58eb8d1218ce3..31a2a1dc00ce261b707af6cbd71fe2462b66c6dc 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1858,7 +1858,7 @@
     <key>Type</key>
     <string>Boolean</string>
     <key>Value</key>
-    <integer>0</integer>
+    <integer>1</integer>
   </map>
     <key>Cursor3D</key>
     <map>
@@ -4048,7 +4048,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://search.secondlife.com/viewer/[CATEGORY]/?q=[QUERY]</string>
+      <string>http://search.secondlife.com/viewer/[CATEGORY]/?q=[QUERY]&amp;p=[AUTH_TOKEN]&amp;r=[MATURITY]&amp;lang=[LANGUAGE]&amp;g=[GODLIKE]&amp;sid=[SESSION_ID]&amp;rid=[REGION_ID]&amp;pid=[PARCEL_ID]&amp;channel=[CHANNEL]&amp;version=[VERSION]&amp;major=[VERSION_MAJOR]&amp;minor=[VERSION_MINOR]&amp;patch=[VERSION_PATCH]&amp;build=[VERSION_BUILD]</string>
     </map>
     <key>WebProfileURL</key>
     <map>
diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp
index 23cc23376f965e159bd869f60443990bbd67f6e7..2a946b1edfa06048dc610ae01cc7c940361149f5 100644
--- a/indra/newview/llfloatersearch.cpp
+++ b/indra/newview/llfloatersearch.cpp
@@ -27,26 +27,16 @@
 
 #include "llviewerprecompiledheaders.h"
 
-#include "llappviewer.h"
-#include "llbase64.h"
 #include "llcommandhandler.h"
 #include "llfloaterreg.h"
 #include "llfloatersearch.h"
 #include "llmediactrl.h"
 #include "llnotificationsutil.h"
-#include "llparcel.h"
-#include "llplugincookiestore.h"
 #include "lllogininstance.h"
 #include "lluri.h"
 #include "llagent.h"
-#include "llsdserialize.h"
 #include "llui.h"
 #include "llviewercontrol.h"
-#include "llviewerregion.h"
-#include "llversioninfo.h"
-#include "llviewermedia.h"
-#include "llviewernetwork.h"
-#include "llviewerparcelmgr.h"
 #include "llweb.h"
 
 // support secondlife:///app/search/{CATEGORY}/{QUERY} SLapps
@@ -178,14 +168,12 @@ void LLFloaterSearch::search(const SearchQuery &p)
 
 	// add the permissions token that login.cgi gave us
 	// We use "search_token", and fallback to "auth_token" if not present.
-	LLSD search_cookie;
-
 	LLSD search_token = LLLoginInstance::getInstance()->getResponse("search_token");
 	if (search_token.asString().empty())
 	{
 		search_token = LLLoginInstance::getInstance()->getResponse("auth_token");
 	}
-	search_cookie["AUTH_TOKEN"] = search_token.asString();
+	subs["AUTH_TOKEN"] = search_token.asString();
 
 	// add the user's preferred maturity (can be changed via prefs)
 	std::string maturity;
@@ -201,57 +189,10 @@ void LLFloaterSearch::search(const SearchQuery &p)
 	{
 		maturity = "13";  // PG
 	}
-	search_cookie["MATURITY"] = maturity;
+	subs["MATURITY"] = maturity;
 
 	// add the user's god status
-	search_cookie["GODLIKE"] = gAgent.isGodlike() ? "1" : "0";
-	search_cookie["VERSION"] = LLVersionInfo::getVersion();
-	search_cookie["VERSION_MAJOR"] = LLVersionInfo::getMajor();
-	search_cookie["VERSION_MINOR"] = LLVersionInfo::getMinor();
-	search_cookie["VERSION_PATCH"] = LLVersionInfo::getPatch();
-	search_cookie["VERSION_BUILD"] = LLVersionInfo::getBuild();
-	search_cookie["CHANNEL"] = LLVersionInfo::getChannel();
-	search_cookie["GRID"] = LLGridManager::getInstance()->getGridLabel();
-	search_cookie["OS"] = LLAppViewer::instance()->getOSInfo().getOSStringSimple();
-	search_cookie["SESSION_ID"] = gAgent.getSessionID();
-	search_cookie["FIRST_LOGIN"] = gAgent.isFirstLogin();
-
-	std::string lang = LLUI::getLanguage();
-	if (lang == "en-us")
-	{
-		lang = "en";
-	}
-	search_cookie["LANGUAGE"] = lang;
-
-	// find the region ID
-	LLUUID region_id;
-	LLViewerRegion *region = gAgent.getRegion();
-	if (region)
-	{
-		region_id = region->getRegionID();
-	}
-	search_cookie["REGION_ID"] = region_id;
-
-	// find the parcel local ID
-	S32 parcel_id = 0;
-	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
-	if (parcel)
-	{
-		parcel_id = parcel->getLocalID();
-	}
-	search_cookie["PARCEL_ID"] = llformat("%d", parcel_id);
-
-	std::stringstream cookie_string_stream;
-	LLSDSerialize::toXML(search_cookie, cookie_string_stream);
-	std::string cookie_string = cookie_string_stream.str();
-
-	U8* cookie_string_buffer = (U8*)cookie_string.c_str();
-	std::string cookie_value = LLBase64::encode(cookie_string_buffer, cookie_string.size());
-
-	// for staging services
-	LLViewerMedia::getCookieStore()->setCookiesFromHost(std::string("viewer_session_info=") + cookie_value, ".lindenlab.com");
-	// for live services
-	LLViewerMedia::getCookieStore()->setCookiesFromHost(std::string("viewer_session_info=") + cookie_value, ".secondlife.com");
+	subs["GODLIKE"] = gAgent.isGodlike() ? "1" : "0";
 
 	// get the search URL and expand all of the substitutions
 	// (also adds things like [LANGUAGE], [VERSION], [OS], etc.)
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 251fce2333a22f3395b7393e14f9c12ec152b58d..03bdd9f07110f47725077f3aa63543a2f612a35d 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5928,7 +5928,7 @@ An object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; owned by [NAME_SLU
 [ITEM_SLURL]
     <form name="form">
       <button
-       index="4"
+       index="3"
        name="Show"
        text="Show"/>
       <button
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 0a21d8714cad316aa62c30ae501bf9898bfab775..f0bee2bfee3730dfc2eb1e87dfe4fa95715b470c 100644
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -66,12 +66,14 @@ def construct(self):
                 # include the extracted list of contributors
                 contributor_names = self.extract_names("../../doc/contributions.txt")
                 self.put_in_file(contributor_names, "contributors.txt")
+                self.file_list.append(["../../doc/contributions.txt",self.dst_path_of("contributors.txt")])
                 # include the extracted list of translators
                 translator_names = self.extract_names("../../doc/translations.txt")
                 self.put_in_file(translator_names, "translators.txt")
+                self.file_list.append(["../../doc/translations.txt",self.dst_path_of("translators.txt")])
                 # include the list of Lindens (if any)
                 #   see https://wiki.lindenlab.com/wiki/Generated_Linden_Credits
-                linden_names_path = os.getenv("linden_credits")
+                linden_names_path = os.getenv("LINDEN_CREDITS")
                 if linden_names_path :
                     try:
                         linden_file = open(linden_names_path,'r')
@@ -79,9 +81,13 @@ def construct(self):
                         linden_names = ', '.join(linden_file.readlines())
                         self.put_in_file(linden_names, "lindens.txt")
                         linden_file.close()
+                        print "Linden names extracted from '%s'" % linden_names_path
+                        self.file_list.append([linden_names_path,self.dst_path_of("lindens.txt")])
                     except IOError:
                         print "No Linden names found at '%s', using built-in list" % linden_names_path
                         pass
+                else :
+                    print "No 'LINDEN_CREDITS' specified in environment, using built-in list"
 
                 # ... and the entire windlight directory
                 self.path("windlight")