diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index aa7c8c789aa4a300215d33753af1a8c500e76a5e..0fc5ca1ad6e79575c157b9f7e59db634423a0f21 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -168,8 +168,8 @@ U8* LLImageBase::allocateData(S32 size)
 		}
 		else
 		{
-		llerrs << "LLImageBase::allocateData: bad size: " << size << llendl;
-	}
+			llerrs << "LLImageBase::allocateData: bad size: " << size << llendl;
+		}
 	}
 	if (!mData || size != mDataSize)
 	{
@@ -267,10 +267,6 @@ LLImageRaw::LLImageRaw(U16 width, U16 height, S8 components)
 {
 	mMemType = LLMemType::MTYPE_IMAGERAW;
 	//llassert( S32(width) * S32(height) * S32(components) <= MAX_IMAGE_DATA_SIZE );
-	if(S32(width) * S32(height) * S32(components) > MAX_IMAGE_DATA_SIZE)
-	{
-		llwarns << "over size: width: " << (S32)width << " height: " << (S32)height << " components: " << (S32)components << llendl ;
-	}
 	allocateDataSize(width, height, components);
 	++sRawImageCount;
 }
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index 3a1e9f19faf7d82541e6c6a819254e51ae4b19af..237d42090ff97904dcd60aa5d053c163777cc832 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -68,8 +68,9 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)
  , mSelectedTab( NULL )
  , mTabComparator( NULL )
  , mNoVisibleTabsHelpText(NULL)
+ , mNoVisibleTabsOrigString(params.no_visible_tabs_text.initial_value().asString())
 {
-	initNoTabsWidget(params.empty_accordion_text);
+	initNoTabsWidget(params.no_matched_tabs_text);
 
 	mSingleExpansion = params.single_expansion;
 	if(mFitParent && !mSingleExpansion)
@@ -379,7 +380,7 @@ void	LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params)
 {
 	LLTextBox::Params tp = tb_params;
 	tp.rect(getLocalRect());
-	mNoVisibleTabsOrigString = tp.initial_value().asString();
+	mNoMatchedTabsOrigString = tp.initial_value().asString();
 	mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this);
 }
 
@@ -820,7 +821,7 @@ void	LLAccordionCtrl::setFilterSubString(const std::string& filter_string)
 {
 	LLStringUtil::format_map_t args;
 	args["[SEARCH_TERM]"] = LLURI::escape(filter_string);
-	std::string text = filter_string.empty() ? LLStringUtil::null : mNoVisibleTabsOrigString;
+	std::string text = filter_string.empty() ? mNoVisibleTabsOrigString : mNoMatchedTabsOrigString;
 	LLStringUtil::format(text, args);
 
 	mNoVisibleTabsHelpText->setValue(text);
diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h
index 677b598a3221f80bd62b9d33da63b9cf82850587..3ad52740855790a03aa1845d84a5f944e6f5e92a 100644
--- a/indra/llui/llaccordionctrl.h
+++ b/indra/llui/llaccordionctrl.h
@@ -78,12 +78,14 @@ class LLAccordionCtrl: public LLPanel
 								accordion tabs are responsible for scrolling their content.
 								*NOTE fit_parent works best when combined with single_expansion.
 								Accordion view should implement getRequiredRect() and provide valid height*/
-		Optional<LLTextBox::Params>	empty_accordion_text;
+		Optional<LLTextBox::Params>	no_matched_tabs_text;
+		Optional<LLTextBox::Params>	no_visible_tabs_text;
 
 		Params()
 			: single_expansion("single_expansion",false)
 			, fit_parent("fit_parent", false)
-			, empty_accordion_text("empty_accordion_text")
+			, no_matched_tabs_text("no_matched_tabs_text")
+			, no_visible_tabs_text("no_visible_tabs_text")
 		{};
 	};
 
@@ -180,6 +182,8 @@ class LLAccordionCtrl: public LLPanel
 	bool			mAutoScrolling;
 	F32				mAutoScrollRate;
 	LLTextBox*		mNoVisibleTabsHelpText;
+
+	std::string		mNoMatchedTabsOrigString;
 	std::string		mNoVisibleTabsOrigString;
 
 	LLAccordionCtrlTab*		mSelectedTab;
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 5b70e4bcb06b098ee2fa678f0847de0b9764cad2..fe6bd8eef0aad6c628df63e0a36388ec00ff4588 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -6609,7 +6609,7 @@
       <key>Type</key>
       <string>S32</string>
       <key>Value</key>
-      <integer>35</integer>
+      <integer>12</integer>
     </map>
     <key>RenderAvatarVP</key>
     <map>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index de4d787d658819ffbcf95a9af1ffe0288bef71af..e8591ca0867a4e3a6b93fc5bfb184496bf33e09f 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -26,7 +26,7 @@ list all
 RenderAnisotropic			1	0
 RenderAvatarCloth			1	1
 RenderAvatarLODFactor		1	1.0
-RenderAvatarMaxVisible      1   35
+RenderAvatarMaxVisible      1   12
 RenderAvatarVP				1	1
 RenderCubeMap				1	1
 RenderDelayVBUpdate			1	0
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index adda7cec4dd435392605cfd83d9fb635e013f4c3..779490c9f76adc898cd2e910ae0dc05037348b12 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -26,7 +26,7 @@ list all
 RenderAnisotropic			1	0
 RenderAvatarCloth			1	1
 RenderAvatarLODFactor		1	1.0
-RenderAvatarMaxVisible      1   35
+RenderAvatarMaxVisible      1   12
 RenderAvatarVP				1	1
 RenderCubeMap				1	1
 RenderDelayVBUpdate			1	0
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 82886d7e2cb115579f6431709ffecc0dcbf48be9..47033efc47046fa3f107b4367bd19c83784fac16 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -26,7 +26,7 @@ list all
 RenderAnisotropic				1	0
 RenderAvatarCloth				0	0
 RenderAvatarLODFactor			1	1.0
-RenderAvatarMaxVisible          1   35
+RenderAvatarMaxVisible          1   12
 RenderAvatarVP					1	0
 RenderCubeMap					1	1
 RenderDelayVBUpdate				1	0
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 3c267b33089c0321390089a6b362291ec93a512a..52a5587a1622e21373b363fba9eb9fa462ec6978 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -201,7 +201,9 @@ void LLUpdateAppearanceOnDestroy::fire(const LLUUID& inv_item)
 {
 	LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getItem(inv_item);
 	const std::string item_name = item ? item->getName() : "ITEM NOT FOUND";
+#ifndef LL_RELEASE_FOR_DOWNLOAD
 	llinfos << "callback fired [ name:" << item_name << " UUID:" << inv_item << " count:" << mFireCount << " ] " << llendl;
+#endif
 	mFireCount++;
 }
 
@@ -652,7 +654,15 @@ bool LLWearableHoldingPattern::pollMissingWearables()
 	if (done)
 	{
 		gAgentAvatarp->debugWearablesLoaded();
-		clearCOFLinksForMissingWearables();
+
+		// BAP - if we don't call clearCOFLinksForMissingWearables()
+		// here, we won't have to add the link back in later if the
+		// wearable arrives late.  This is to avoid corruption of
+		// wearable ordering info.  Also has the effect of making
+		// unworn item links visible in the COF under some
+		// circumstances.
+
+		//clearCOFLinksForMissingWearables();
 		onAllComplete();
 	}
 	return done;
@@ -698,8 +708,13 @@ void LLWearableHoldingPattern::handleLateArrivals()
 				data.mWearable = wearable;
 
 				replaced_types.insert(data.mWearableType);
-				
-				LLAppearanceMgr::instance().addCOFItemLink(data.mItemID,false);
+
+				// BAP - if we didn't call
+				// clearCOFLinksForMissingWearables() earlier, we
+				// don't need to restore the link here.  Fixes
+				// wearable ordering problems.
+
+				// LLAppearanceMgr::instance().addCOFItemLink(data.mItemID,false);
 
 				// BAP failing this means inventory or asset server
 				// are corrupted in a way we don't handle.
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index f4004d5664c7d83da641d203d4a3d4d52d8e3610..7be69ba04d014aef4af00944d7dac7b161a70caf 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -412,7 +412,7 @@ static void settings_to_globals()
 	LLVolumeImplFlexible::sUpdateFactor = gSavedSettings.getF32("RenderFlexTimeFactor");
 	LLVOTree::sTreeFactor				= gSavedSettings.getF32("RenderTreeLODFactor");
 	LLVOAvatar::sLODFactor				= gSavedSettings.getF32("RenderAvatarLODFactor");
-	LLVOAvatar::sMaxVisible				= gSavedSettings.getS32("RenderAvatarMaxVisible");
+	LLVOAvatar::sMaxVisible				= (U32)gSavedSettings.getS32("RenderAvatarMaxVisible");
 	LLVOAvatar::sVisibleInFirstPerson	= gSavedSettings.getBOOL("FirstPersonAvatarVisible");
 	// clamp auto-open time to some minimum usable value
 	LLFolderView::sAutoOpenTime			= llmax(0.25f, gSavedSettings.getF32("FolderAutoOpenDelay"));
diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp
index 87b8d807c4e8f78f46abc4d6d0ff372273ab6727..abb79b53a7548d1c5c3bd0e2a71e6223b2b60f32 100644
--- a/indra/newview/llavatariconctrl.cpp
+++ b/indra/newview/llavatariconctrl.cpp
@@ -244,7 +244,10 @@ void LLAvatarIconCtrl::setValue(const LLSD& value)
 		LLIconCtrl::setValue(value);
 	}
 
-	gCacheName->get(mAvatarId, FALSE, boost::bind(&LLAvatarIconCtrl::nameUpdatedCallback, this, _1, _2, _3, _4));
+	if  (gCacheName)
+	{
+		gCacheName->get(mAvatarId, FALSE, boost::bind(&LLAvatarIconCtrl::nameUpdatedCallback, this, _1, _2, _3, _4));
+	}
 }
 
 bool LLAvatarIconCtrl::updateFromCache()
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 880d79222bc101a1bea2d1adbb597fa5839e81a2..46d2e0a5db6fab967e0cf9b88a6bbaa8763bfe5c 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -576,7 +576,9 @@ void LLCOFWearables::clear()
 
 LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()
 {
-	static std::map<std::string, LLAssetType::EType> type_map;
+	typedef std::map<std::string, LLAssetType::EType> type_map_t;
+
+	static type_map_t type_map;
 	static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");
 
 	if (type_map.empty())
@@ -587,14 +589,16 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()
 	}
 
 	const LLAccordionCtrlTab* tab = accordion_ctrl->getExpandedTab();
+	LLAssetType::EType result = LLAssetType::AT_NONE;
 
-	if (!tab)
+	if (tab)
 	{
-		llwarns << "No accordion is expanded" << llendl;
-		return LLAssetType::AT_NONE;
+		type_map_t::iterator i = type_map.find(tab->getName());
+		llassert(i != type_map.end());
+		result = i->second;
 	}
 
-	return type_map[tab->getName()];
+	return result;
 }
 
 void LLCOFWearables::onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContextMenu* menu)
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 56bc4a79338189cc65223267209f33ba5786d3ae..4bd3151f2edf3c9ff83468508c1ace3668797345 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -135,10 +135,10 @@ BOOL LLFloaterAbout::postBuild()
 
 	// Render the LLSD from getInfo() as a format_map_t
 	LLStringUtil::format_map_t args;
-	// For reasons I don't yet understand, [ReleaseNotes] is not part of the
-	// default substitution strings whereas [APP_NAME] is. But it works to
-	// simply copy it into these specific args.
+
+	// allow the "Release Notes" URL label to be localized
 	args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes");
+
 	for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap());
 		 ii != iend; ++ii)
 	{
@@ -293,14 +293,14 @@ LLSD LLFloaterAbout::getInfo()
 
 static std::string get_viewer_release_notes_url()
 {
-	LLSD query;
-	query["channel"] = gSavedSettings.getString("VersionChannelName");
-	query["version"] = LLVersionInfo::getVersion();
-
-	std::ostringstream url;
-	url << LLTrans::getString("RELEASE_NOTES_BASE_URL") << LLURI::mapToQueryString(query);
-
-	return LLWeb::escapeURL(url.str());
+	// return a URL to the release notes for this viewer, such as:
+	// http://wiki.secondlife.com/wiki/Release_Notes/Second Life Beta Viewer/2.1.0
+	std::string url = LLTrans::getString("RELEASE_NOTES_BASE_URL");
+	if (! LLStringUtil::endsWith(url, "/"))
+		url += "/";
+	url += gSavedSettings.getString("VersionChannelName") + "/";
+	url += LLVersionInfo::getShortVersion();
+	return LLWeb::escapeURL(url);
 }
 
 class LLFloaterAboutListener: public LLEventAPI
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index ec367c1746f0b6ed517ef836144f8eb2a05b41ae..c8d66549b7ed87c63cabcb12ebbd52ddafd8b2a9 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -4496,6 +4496,7 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 						items.push_back(std::string("Wearable Wear"));
 						items.push_back(std::string("Wearable Add"));
 						disabled_items.push_back(std::string("Take Off"));
+						disabled_items.push_back(std::string("Wearable Edit"));
 					}
 					break;
 				default:
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 68fc86467c9305fb3e0ed49e0b6f8ae0c2a17619..c784ca3a9c84f1fe6781a839b4d8186856317612 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -327,6 +327,11 @@ BOOL get_is_category_renameable(const LLInventoryModel* model, const LLUUID& id)
 	return FALSE;
 }
 
+void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id)
+{
+	LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD().with("id", item_uuid).with("object", object_id));
+}
+
 void show_item_profile(const LLUUID& item_uuid)
 {
 	LLUUID linked_uuid = gInventory.getLinkedItemID(item_uuid);
@@ -335,24 +340,34 @@ void show_item_profile(const LLUUID& item_uuid)
 
 void show_item_original(const LLUUID& item_uuid)
 {
+	//sidetray inventory panel
+	LLSidepanelInventory *sidepanel_inventory =
+		dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+
 	bool reset_inventory_filter = !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory");
 
 	LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel();
-	if (!active_panel) return;
+	if (!active_panel) 
+	{
+		//this may happen when there is no floatera and other panel is active in inventory tab
+
+		if	(sidepanel_inventory)
+		{
+			sidepanel_inventory->showInventoryPanel();
+		}
+	}
+	
+	active_panel = LLInventoryPanel::getActiveInventoryPanel();
+	if (!active_panel) 
+	{
+		return;
+	}
 	active_panel->setSelection(gInventory.getLinkedItemID(item_uuid), TAKE_FOCUS_NO);
 	
 	if(reset_inventory_filter)
 	{
-		LLSidepanelInventory *sidepanel_inventory =
-			dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-		if(sidepanel_inventory)
-		{
-			LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel();
-
-			main_inventory->onFilterEdit("");
-		}
-
-		//now for inventory floater
+		//inventory floater
+		bool floater_inventory_visible = false;
 
 		LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
 		for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
@@ -364,8 +379,19 @@ void show_item_original(const LLUUID& item_uuid)
 
 				main_inventory->onFilterEdit("");
 			}
+
+			if(floater_inventory->getVisible())
+			{
+				floater_inventory_visible = true;
+			}
+
 		}
+		if(sidepanel_inventory && !floater_inventory_visible)
+		{
+			LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel();
 
+			main_inventory->onFilterEdit("");
+		}
 	}
 }
 
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index 93c56e1b8a6075dde112fdaaf443ce2ff6422b4b..aa4ac98241f632e1312bee8f38e05a4cffe8adca 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -53,6 +53,7 @@ BOOL get_is_category_removable(const LLInventoryModel* model, const LLUUID& id);
 BOOL get_is_category_renameable(const LLInventoryModel* model, const LLUUID& id);
 
 void show_item_profile(const LLUUID& item_uuid);
+void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id);
 
 void show_item_original(const LLUUID& item_uuid);
 
diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp
index 23ea786484a0e1b718fe600f056b940aa0d2400b..384b24210cf80328d191aef248d19c65e94d0856 100644
--- a/indra/newview/llinventoryitemslist.cpp
+++ b/indra/newview/llinventoryitemslist.cpp
@@ -288,6 +288,8 @@ void LLPanelInventoryListItemBase::setIconImage(const LLUIImagePtr& image)
 
 void LLPanelInventoryListItemBase::setTitle(const std::string& title, const std::string& highlit_text)
 {
+	setToolTip(title);
+
 	LLTextUtil::textboxSetHighlightedVal(
 		mTitleCtrl,
 		LLStyle::Params(),
@@ -295,6 +297,16 @@ void LLPanelInventoryListItemBase::setTitle(const std::string& title, const std:
 		highlit_text);
 }
 
+BOOL LLPanelInventoryListItemBase::handleToolTip( S32 x, S32 y, MASK mask)
+{
+	LLTextBox* item_name = getChild<LLTextBox>("item_name");
+	if (item_name->getRect().getWidth() < item_name->getTextPixelWidth())
+	{
+		return LLPanel::handleToolTip(x,y,mask);
+	}
+	return FALSE;
+}
+
 void LLPanelInventoryListItemBase::reshapeLeftWidgets()
 {
 	S32 widget_left = 0;
diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h
index d6132717e86716a7f877743a6177cfa3828dee81..489a82829c8cc20ae049fc3f7218832e65b6c9d5 100644
--- a/indra/newview/llinventoryitemslist.h
+++ b/indra/newview/llinventoryitemslist.h
@@ -179,6 +179,10 @@ class LLPanelInventoryListItemBase : public LLPanel
 	/** Set item title - inventory item name usually */
 	virtual void setTitle(const std::string& title, const std::string& highlit_text);
 
+	/**
+	 * Show tool tip if item name text size > panel size
+	 */
+	virtual BOOL handleToolTip( S32 x, S32 y, MASK mask);
 
 	LLViewerInventoryItem* mItem;
 
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 7c54dbcf7498a9c10e23e13500a41013c68043df..b9e9f0fc0b12b693472c754108f621338a601633 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -2447,7 +2447,9 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**)
 	}
 	LLUUID tid;
 	msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_TransactionID, tid);
+#ifndef LL_RELEASE_FOR_DOWNLOAD
 	llinfos << "Bulk inventory: " << tid << llendl;
+#endif
 
 	update_map_t update;
 	cat_array_t folders;
diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp
index bd3525967071f6cb5fbea40aa5bf59a7ef8f5f7e..0ac8fbcb152c093e809eff4666fa9c4e25f8f771 100644
--- a/indra/newview/llinventoryobserver.cpp
+++ b/indra/newview/llinventoryobserver.cpp
@@ -308,7 +308,16 @@ void LLInventoryFetchItemsObserver::startFetch()
 			// assume it's agent inventory.
 			owner_id = gAgent.getID();
 		}
-		
+
+		// Ignore categories since they're not items.  We
+		// could also just add this to mComplete but not sure what the
+		// side-effects would be, so ignoring to be safe.
+		LLViewerInventoryCategory* cat = gInventory.getCategory(*it);
+		if (cat)
+		{
+			continue;
+		}
+
 		// It's incomplete, so put it on the incomplete container, and
 		// pack this on the message.
 		mIncomplete.push_back(*it);
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index da809b7baaaadeeecea1f0f1d30da7c07b3ab0d5..f683cbc8d0c0f771585f3142ffbb054f68507d35 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -176,17 +176,7 @@ LLInventoryItem* LLTaskInvFVBridge::findItem() const
 
 void LLTaskInvFVBridge::showProperties()
 {
-	show_item_profile(mUUID);
-
-	// Disable old properties floater; this is replaced by the sidepanel.
-	/*
-	LLFloaterProperties* floater = LLFloaterReg::showTypedInstance<LLFloaterProperties>("properties", mUUID);
-	if (floater)
-	{
-		floater->setObjectID(mPanel->getTaskUUID());
-	}
-	*/
-	
+	show_task_item_profile(mUUID, mPanel->getTaskUUID());
 }
 
 struct LLBuyInvItemData
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index f16d1d8fda659208e99fb0120c5630e9758cd2a5..6dd800c0c6a4612eb9c4f7d32859183d17847075 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -1450,7 +1450,7 @@ void LLPanelPeople::showFriendsAccordionsIfNeeded()
 		LLAccordionCtrl* accordion = getChild<LLAccordionCtrl>("friends_accordion");
 		accordion->arrange();
 
-		// *TODO: new empty_accordion_text attribute was implemented in accordion (EXT-7368).
+		// *TODO: new no_matched_tabs_text attribute was implemented in accordion (EXT-7368).
 		// this code should be refactored to use it
 		// keep help text in a synchronization with accordions visibility.
 		updateFriendListHelpText();
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 028440562d9175abdc0b71d0fdbf439388eeda0a..705b196ef1114661dbcce961f13ad0f333c5a21b 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -1038,7 +1038,7 @@ void LLPanelPlaces::showAddedLandmarkInfo(const uuid_vec_t& items)
 		 ++item_iter)
 	{
 		const LLUUID& item_id = (*item_iter);
-		if(!highlight_offered_item(item_id))
+		if(!highlight_offered_object(item_id))
 		{
 			continue;
 		}
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 494cba8c6f7d10e12ea0b664e4866695113dd0a0..1048e3fcc017876357eb94a89850bf34e9dae67e 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -648,16 +648,18 @@ void LLTeleportHistoryPanel::refresh()
 	LLDate tab_boundary_date =  LLDate::now();
 
 	LLFlatListView* curr_flat_view = NULL;
+	std::string filter_string = sFilterSubString;
+	LLStringUtil::toUpper(filter_string);
 
 	U32 added_items = 0;
 	while (mCurrentItem >= 0)
 	{
 		// Filtering
-		if (!sFilterSubString.empty())
+		if (!filter_string.empty())
 		{
 			std::string landmark_title(items[mCurrentItem].mTitle);
 			LLStringUtil::toUpper(landmark_title);
-			if( std::string::npos == landmark_title.find(sFilterSubString) )
+			if( std::string::npos == landmark_title.find(filter_string) )
 			{
 				mCurrentItem--;
 				continue;
@@ -706,7 +708,7 @@ void LLTeleportHistoryPanel::refresh()
 				.getFlatItemForPersistentItem(&mContextMenu,
 											  items[mCurrentItem],
 											  mCurrentItem,
-											  sFilterSubString);
+											  filter_string);
 			if ( !curr_flat_view->addItem(item, LLUUID::null, ADD_BOTTOM, false) )
 				llerrs << "Couldn't add flat item to teleport history." << llendl;
 			if (mLastSelectedItemIndex == mCurrentItem)
@@ -729,6 +731,8 @@ void LLTeleportHistoryPanel::refresh()
 		}
 	}
 
+	mHistoryAccordion->setFilterSubString(sFilterSubString);
+
 	mHistoryAccordion->arrange();
 
 	updateVerbs();
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index d315f40ff3ba07da0865f523837bee111447674e..668c04cf159b28bba94a3818565fe269108672c3 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -257,7 +257,6 @@ class LLObjectSelection : public LLRefCount
 	LLObjectSelection();
 
 	void updateEffects();
-	void cleanupNodes();
 
 	BOOL isEmpty() const;
 
@@ -281,11 +280,6 @@ class LLObjectSelection : public LLRefCount
 	template <typename T> bool getSelectedTEValue(LLSelectedTEGetFunctor<T>* func, T& res);
 	template <typename T> bool isMultipleTEValue(LLSelectedTEGetFunctor<T>* func, const T& ignore_value);
 	
-	void addNode(LLSelectNode *nodep);
-	void addNodeAtEnd(LLSelectNode *nodep);
-	void moveNodeToFront(LLSelectNode *nodep);
-	void removeNode(LLSelectNode *nodep);
-	void deleteAllNodes();			// Delete all nodes
 	S32 getNumNodes();
 	LLSelectNode* findNode(LLViewerObject* objectp);
 
@@ -312,6 +306,15 @@ class LLObjectSelection : public LLRefCount
 
 	ESelectType getSelectType() const { return mSelectType; }
 
+private:
+	void addNode(LLSelectNode *nodep);
+	void addNodeAtEnd(LLSelectNode *nodep);
+	void moveNodeToFront(LLSelectNode *nodep);
+	void removeNode(LLSelectNode *nodep);
+	void deleteAllNodes();
+	void cleanupNodes();
+
+
 private:
 	list_t mList;
 	const LLObjectSelection &operator=(const LLObjectSelection &);
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index fc5143d33bddbe81e3e7ed7178ed4df6511c4258..63b6fe5ef0e4fcd2a0a7e967d9fe5cb35b19eec4 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -88,6 +88,8 @@ BOOL LLSidepanelInventory::postBuild()
 		
 		mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
 		mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2));
+		LLTabContainer* tabs = mPanelMainInventory->getChild<LLTabContainer>("inventory filter tabs");
+		tabs->setCommitCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this));
 
 		/* 
 		   EXT-4846 : "Can we suppress the "Landmarks" and "My Favorites" folder since they have their own Task Panel?"
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index a038f9985347c2c04bbe679da9bc6dc8e08b2f6b..13275d14c05a3bb096df824e05d88b40f67c8c2e 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -54,6 +54,10 @@ class LLSidepanelInventory : public LLPanel
 	LLPanelMainInventory* getMainInventoryPanel() const { return mPanelMainInventory; }
 	BOOL isMainInventoryPanelActive() const;
 
+	void showItemInfoPanel();
+	void showTaskInfoPanel();
+	void showInventoryPanel();
+
 protected:
 	// Tracks highlighted (selected) item in inventory panel.
 	LLInventoryItem *getSelectedItem();
@@ -63,9 +67,6 @@ class LLSidepanelInventory : public LLPanel
 	void performActionOnSelection(const std::string &action);
 	bool canShare();
 
-	void showItemInfoPanel();
-	void showTaskInfoPanel();
-	void showInventoryPanel();
 	void updateVerbs();
 
 	//
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index e76397671bfe790c92c9df8a6f9a0f06f29bcb56..3ab71eac64f8d37a9db1833579e577f5a7244f78 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -80,6 +80,7 @@ static LLRegisterPanelClassWrapper<LLSidepanelTaskInfo> t_task_info("sidepanel_t
 LLSidepanelTaskInfo::LLSidepanelTaskInfo()
 {
 	setMouseOpaque(FALSE);
+	LLSelectMgr::instance().mUpdateSignal.connect(boost::bind(&LLSidepanelTaskInfo::refreshAll, this));
 }
 
 
@@ -271,7 +272,6 @@ void LLSidepanelTaskInfo::refresh()
 	// BUG: fails if a root and non-root are both single-selected.
 	const BOOL is_perm_modify = (mObjectSelection->getFirstRootNode() && LLSelectMgr::getInstance()->selectGetRootsModify()) ||
 		LLSelectMgr::getInstance()->selectGetModify();
-	const LLFocusableElement* keyboard_focus_view = gFocusMgr.getKeyboardFocus();
 
 	S32 string_index = 0;
 	std::string MODIFY_INFO_STRINGS[] =
@@ -365,14 +365,14 @@ void LLSidepanelTaskInfo::refresh()
 
 	if (is_one_object)
 	{
-		if (keyboard_focus_view != LineEditorObjectName)
+		if (!LineEditorObjectName->hasFocus())
 		{
 			childSetText("Object Name",nodep->mName);
 		}
 
 		if (LineEditorObjectDesc)
 		{
-			if (keyboard_focus_view != LineEditorObjectDesc)
+			if (!LineEditorObjectDesc->hasFocus())
 			{
 				LineEditorObjectDesc->setText(nodep->mDescription);
 			}
@@ -1178,9 +1178,30 @@ void LLSidepanelTaskInfo::save()
 	onCommitIncludeInSearch(getChild<LLCheckBoxCtrl>("search_check"), this);
 }
 
+// removes keyboard focus so that all fields can be updated
+// and then restored focus
+void LLSidepanelTaskInfo::refreshAll()
+{
+	// update UI as soon as we have an object
+	// but remove keyboard focus first so fields are free to update
+	LLFocusableElement* focus = NULL;
+	if (hasFocus())
+	{
+		focus = gFocusMgr.getKeyboardFocus();
+		setFocus(FALSE);
+	}
+	refresh();
+	if (focus)
+	{
+		focus->setFocus(TRUE);
+	}
+}
+
+
 void LLSidepanelTaskInfo::setObjectSelection(LLObjectSelectionHandle selection)
 {
 	mObjectSelection = selection;
+	refreshAll();
 }
 
 LLSidepanelTaskInfo* LLSidepanelTaskInfo::getActivePanel()
diff --git a/indra/newview/llsidepaneltaskinfo.h b/indra/newview/llsidepaneltaskinfo.h
index 15274c90db7ef00ef5a4eddde27b1361bb36d5de..010173e84e2a144818a9875eae5e86162a839b85 100644
--- a/indra/newview/llsidepaneltaskinfo.h
+++ b/indra/newview/llsidepaneltaskinfo.h
@@ -67,6 +67,8 @@ class LLSidepanelTaskInfo : public LLSidepanelInventorySubpanel
 	/*virtual*/ void save();
 	/*virtual*/ void updateVerbs();
 
+	void refreshAll(); // ignore current keyboard focus and update all fields
+
 	// statics
 	static void onClickClaim(void*);
 	static void onClickRelease(void*);
@@ -120,7 +122,7 @@ class LLSidepanelTaskInfo : public LLSidepanelInventorySubpanel
 	LLViewerObject*				getObject();
 private:
 	LLViewerObject*				mObject;
-	LLObjectSelectionHandle mObjectSelection;
+	LLObjectSelectionHandle		mObjectSelection;
 	static LLSidepanelTaskInfo* sActivePanel;
 };
 
diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp
index ff7e479368a6a5ace6f0f8ff46e3dd99aa9666a9..0df7035f849d1ca2df01832e3524329c4a87e6d4 100644
--- a/indra/newview/llslurl.cpp
+++ b/indra/newview/llslurl.cpp
@@ -48,8 +48,9 @@ const char* LLSLURL::SLURL_COM		         = "slurl.com";
 // text with www.slurl.com or a link explicitly pointing at www.slurl.com so testing for this
 // version is required also.
 
-const char* LLSLURL::WWW_SLURL_COM		 = "www.slurl.com";
-const char* LLSLURL::MAPS_SECONDLIFE_COM	 = "maps.secondlife.com";	
+const char* LLSLURL::WWW_SLURL_COM				 = "www.slurl.com";
+const char* LLSLURL::SECONDLIFE_COM				 = "secondlife.com";
+const char* LLSLURL::MAPS_SECONDLIFE_COM		 = "maps.secondlife.com";
 const char* LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME = "x-grid-location-info";
 const char* LLSLURL::SLURL_APP_PATH              = "app";
 const char* LLSLURL::SLURL_REGION_PATH           = "region";
@@ -187,6 +188,15 @@ LLSLURL::LLSLURL(const std::string& slurl)
 		   (slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) || 
 		   (slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME))
 		{
+			// *HACK: ignore http://secondlife.com/ URLs so that we can use
+			// http://secondlife.com/app/ redirect URLs
+			// This is only necessary while the server returns Release Note
+			// urls using this format rather that pointing to the wiki
+			if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME ||
+				 slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) &&
+				slurl_uri.hostName() == LLSLURL::SECONDLIFE_COM)
+			  return;
+
 		    // We're dealing with either a Standalone style slurl or slurl.com slurl
 		  if ((slurl_uri.hostName() == LLSLURL::SLURL_COM) ||
 		      (slurl_uri.hostName() == LLSLURL::WWW_SLURL_COM) || 
diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h
index 1210c398f17e4ad4e6976c5b16bd2c97f4df70d1..e9b0e7f52a3527dcfc2f7d38316c354ec268f6f2 100644
--- a/indra/newview/llslurl.h
+++ b/indra/newview/llslurl.h
@@ -47,6 +47,7 @@ class LLSLURL
 	static const char* SLURL_SECONDLIFE_PATH;
 	static const char* SLURL_COM;
 	static const char* WWW_SLURL_COM;
+	static const char* SECONDLIFE_COM;
 	static const char* MAPS_SECONDLIFE_COM;
 	static const char* SLURL_X_GRID_LOCATION_INFO_SCHEME;
 	static LLSLURL START_LOCATION;
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index df5be34e39c0dde4eba74c12ca7ce2f0213cabff..3ef190f766104edb8856f9a84d63c4b48dabcde4 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1116,8 +1116,6 @@ bool idle_startup()
 				LLVoiceClient::getInstance()->userAuthorized(gUserCredential->userID(), gAgentID);
 				// create the default proximal channel
 				LLVoiceChannel::initClass();
-				// update the voice settings
-				LLVoiceClient::getInstance()->updateSettings();
 				LLGridManager::getInstance()->setFavorite(); 
 				LLStartUp::setStartupState( STATE_WORLD_INIT);
 			}
@@ -1300,6 +1298,10 @@ bool idle_startup()
             LLAppViewer::instance()->loadNameCache();
 		}
 
+		// update the voice settings *after* gCacheName initialization
+		// so that we can construct voice UI that relies on the name cache
+		LLVoiceClient::getInstance()->updateSettings();
+
 		//gCacheName is required for nearby chat history loading
 		//so I just moved nearby history loading a few states further
 		if (!gNoRender && gSavedPerAccountSettings.getBOOL("LogShowHistory"))
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 52d227f82796d20296d8f732f72590e972291bf6..ceed90e21018087b8aa6f846fe1a4b3214436ef5 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -582,14 +582,26 @@ bool LLTextureFetchWorker::doWork(S32 param)
 {
 	LLMutexLock lock(&mWorkMutex);
 
-	if ((mFetcher->isQuitting() || mImagePriority < 1.0f || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED)))
+	if ((mFetcher->isQuitting() || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED)))
 	{
 		if (mState < DECODE_IMAGE)
 		{
 			return true; // abort
 		}
 	}
-	
+	if(mImagePriority < 1.0f)
+	{
+		if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR)
+		{
+			return true; // abort
+		}
+	}
+	if(mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP)
+	{
+		//nowhere to get data, abort.
+		return true ;
+	}
+
 	if (mFetcher->mDebugPause)
 	{
 		return false; // debug: don't do any work
@@ -777,7 +789,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			}
 			// don't return, fall through to next state
 		}
-		else if (mSentRequest == UNSENT)
+		else if (mSentRequest == UNSENT && mCanUseNET)
 		{
 			// Add this to the network queue and sit here.
 			// LLTextureFetch::update() will send off a request which will change our state
@@ -830,6 +842,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 	
 	if (mState == SEND_HTTP_REQ)
 	{
+		if(mCanUseHTTP)
 		{
 			const S32 HTTP_QUEUE_MAX_SIZE = 8;
 			// *TODO: Integrate this with llviewerthrottle
@@ -895,6 +908,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			}
 			// fall through
 		}
+		else //can not use http fetch.
+		{
+			return true ; //abort
+		}
 	}
 	
 	if (mState == WAIT_HTTP_REQ)
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 3482ac508ed9940035f47734e1e0317d78477bb4..ab6ff880738d2f936996071d1ceeab265f218134 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -597,7 +597,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 
 		LLPipeline::sFastAlpha = gSavedSettings.getBOOL("RenderFastAlpha");
 		LLPipeline::sUseFarClip = gSavedSettings.getBOOL("RenderUseFarClip");
-		LLVOAvatar::sMaxVisible = gSavedSettings.getS32("RenderAvatarMaxVisible");
+		LLVOAvatar::sMaxVisible = (U32)gSavedSettings.getS32("RenderAvatarMaxVisible");
 		LLPipeline::sDelayVBUpdate = gSavedSettings.getBOOL("RenderDelayVBUpdate");
 
 		S32 occlusion = LLPipeline::sUseOcclusion;
@@ -699,8 +699,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 		// Doing this here gives hardware occlusion queries extra time to complete
 		LLAppViewer::instance()->pingMainloopTimeout("Display:UpdateImages");
 		LLError::LLCallStacks::clear() ;
-		llpushcallstacks ;
-
+		
 		{
 			LLMemType mt_iu(LLMemType::MTYPE_DISPLAY_IMAGE_UPDATE);
 			LLFastTimer t(FTM_IMAGE_UPDATE);
@@ -718,7 +717,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			LLImageGL::deleteDeadTextures();
 			stop_glerror();
 		}
-		llpushcallstacks ;
 		///////////////////////////////////
 		//
 		// StateSort
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 59e21d05903d5b46eaace1e59dffd577921e27e4..9290b4c5a6b55f65b0d522e5cf6fcfe1dbc4db35 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -7209,7 +7209,7 @@ void handle_web_browser_test(const LLSD& param)
 	{
 		url = "about:blank";
 	}
-	LLWeb::loadURL(url);
+	LLWeb::loadURLInternal(url);
 }
 
 void handle_buy_currency_test(void*)
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 3d107555bf7ce886c58d924dec505e06c0c9cb3a..d81fa5ee1cffce335531fe5a59985241533be3f4 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -702,7 +702,7 @@ static void highlight_inventory_items_in_panel(const std::vector<LLUUID>& items,
 		++item_iter)
 	{
 		const LLUUID& item_id = (*item_iter);
-		if(!highlight_offered_item(item_id))
+		if(!highlight_offered_object(item_id))
 		{
 			continue;
 		}
@@ -753,6 +753,18 @@ class LLOpenAgentOffer : public LLInventoryFetchItemsObserver
 					 const std::string& from_name) : 
 		LLInventoryFetchItemsObserver(object_id),
 		mFromName(from_name) {}
+	/*virtual*/ void startFetch()
+	{
+		for (uuid_vec_t::const_iterator it = mIDs.begin(); it < mIDs.end(); ++it)
+		{
+			LLViewerInventoryCategory* cat = gInventory.getCategory(*it);
+			if (cat)
+			{
+				mComplete.push_back((*it));
+			}
+		}
+		LLInventoryFetchItemsObserver::startFetch();
+	}
 	/*virtual*/ void done()
 	{
 		open_inventory_offer(mComplete, mFromName);
@@ -1065,111 +1077,119 @@ bool check_offer_throttle(const std::string& from_name, bool check_only)
 	}
 }
  
-void open_inventory_offer(const uuid_vec_t& items, const std::string& from_name)
+void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_name)
 {
-	for (uuid_vec_t::const_iterator item_iter = items.begin();
-		 item_iter != items.end();
-		 ++item_iter)
+	for (uuid_vec_t::const_iterator obj_iter = objects.begin();
+		 obj_iter != objects.end();
+		 ++obj_iter)
 	{
-		const LLUUID& item_id = (*item_iter);
-		if(!highlight_offered_item(item_id))
+		const LLUUID& obj_id = (*obj_iter);
+		if(!highlight_offered_object(obj_id))
 		{
 			continue;
 		}
 
-		LLInventoryItem* item = gInventory.getItem(item_id);
-		llassert(item);
-		if (!item) {
+		const LLInventoryObject *obj = gInventory.getObject(obj_id);
+		if (!obj)
+		{
+			llwarns << "Cannot find object [ itemID:" << obj_id << " ] to open." << llendl;
 			continue;
 		}
 
-		////////////////////////////////////////////////////////////////////////////////
-		// Special handling for various types.
-		const LLAssetType::EType asset_type = item->getActualType();
-		if (check_offer_throttle(from_name, false)) // If we are throttled, don't display
-		{
-			LL_DEBUGS("Messaging") << "Highlighting inventory item: " << item->getUUID()  << LL_ENDL;
-			// If we opened this ourselves, focus it
-			const BOOL take_focus = from_name.empty() ? TAKE_FOCUS_YES : TAKE_FOCUS_NO;
-			switch(asset_type)
+		const LLAssetType::EType asset_type = obj->getActualType();
+
+		// Either an inventory item or a category.
+		const LLInventoryItem* item = dynamic_cast<const LLInventoryItem*>(obj);
+		if (item)
+		{
+			////////////////////////////////////////////////////////////////////////////////
+			// Special handling for various types.
+			if (check_offer_throttle(from_name, false)) // If we are throttled, don't display
 			{
-			  case LLAssetType::AT_NOTECARD:
-			  {
-				  LLFloaterReg::showInstance("preview_notecard", LLSD(item_id), take_focus);
-				  break;
-			  }
-			  case LLAssetType::AT_LANDMARK:
-			  	{
-					LLInventoryCategory* parent_folder = gInventory.getCategory(item->getParentUUID());
-					if ("inventory_handler" == from_name)
+				LL_DEBUGS("Messaging") << "Highlighting inventory item: " << item->getUUID()  << LL_ENDL;
+				// If we opened this ourselves, focus it
+				const BOOL take_focus = from_name.empty() ? TAKE_FOCUS_YES : TAKE_FOCUS_NO;
+				switch(asset_type)
+				{
+					case LLAssetType::AT_NOTECARD:
 					{
-						//we have to filter inventory_handler messages to avoid notification displaying
-						LLSideTray::getInstance()->showPanel("panel_places",
-								LLSD().with("type", "landmark").with("id", item->getUUID()));
+						LLFloaterReg::showInstance("preview_notecard", LLSD(obj_id), take_focus);
+						break;
 					}
-					else if("group_offer" == from_name)
+					case LLAssetType::AT_LANDMARK:
 					{
-						// "group_offer" is passed by LLOpenTaskGroupOffer
-						// Notification about added landmark will be generated under the "from_name.empty()" called from LLOpenTaskOffer::done().
-						LLSD args;
-						args["type"] = "landmark";
-						args["id"] = item_id;
-						LLSideTray::getInstance()->showPanel("panel_places", args);
-
-						continue;
+						LLInventoryCategory* parent_folder = gInventory.getCategory(item->getParentUUID());
+						if ("inventory_handler" == from_name)
+						{
+							//we have to filter inventory_handler messages to avoid notification displaying
+							LLSideTray::getInstance()->showPanel("panel_places",
+																 LLSD().with("type", "landmark").with("id", item->getUUID()));
+						}
+						else if("group_offer" == from_name)
+						{
+							// "group_offer" is passed by LLOpenTaskGroupOffer
+							// Notification about added landmark will be generated under the "from_name.empty()" called from LLOpenTaskOffer::done().
+							LLSD args;
+							args["type"] = "landmark";
+							args["id"] = obj_id;
+							LLSideTray::getInstance()->showPanel("panel_places", args);
+
+							continue;
+						}
+						else if(from_name.empty())
+						{
+							// we receive a message from LLOpenTaskOffer, it mean that new landmark has been added.
+							LLSD args;
+							args["LANDMARK_NAME"] = item->getName();
+							args["FOLDER_NAME"] = std::string(parent_folder ? parent_folder->getName() : "unknown");
+							LLNotificationsUtil::add("LandmarkCreated", args);
+						}
 					}
-					else if(from_name.empty())
+					break;
+					case LLAssetType::AT_TEXTURE:
 					{
-						// we receive a message from LLOpenTaskOffer, it mean that new landmark has been added.
-						LLSD args;
-						args["LANDMARK_NAME"] = item->getName();
-						args["FOLDER_NAME"] = std::string(parent_folder ? parent_folder->getName() : "unknown");
-						LLNotificationsUtil::add("LandmarkCreated", args);
+						LLFloaterReg::showInstance("preview_texture", LLSD(obj_id), take_focus);
+						break;
 					}
+					case LLAssetType::AT_ANIMATION:
+						LLFloaterReg::showInstance("preview_anim", LLSD(obj_id), take_focus);
+						break;
+					case LLAssetType::AT_SCRIPT:
+						LLFloaterReg::showInstance("preview_script", LLSD(obj_id), take_focus);
+						break;
+					case LLAssetType::AT_SOUND:
+						LLFloaterReg::showInstance("preview_sound", LLSD(obj_id), take_focus);
+						break;
+					default:
+						break;
 				}
-				break;
-			  case LLAssetType::AT_TEXTURE:
-			  {
-				  LLFloaterReg::showInstance("preview_texture", LLSD(item_id), take_focus);
-				  break;
-			  }
-			  case LLAssetType::AT_ANIMATION:
-				  LLFloaterReg::showInstance("preview_anim", LLSD(item_id), take_focus);
-				  break;
-			  case LLAssetType::AT_SCRIPT:
-				  LLFloaterReg::showInstance("preview_script", LLSD(item_id), take_focus);
-				  break;
-			  case LLAssetType::AT_SOUND:
-				  LLFloaterReg::showInstance("preview_sound", LLSD(item_id), take_focus);
-				  break;
-			  default:
-				break;
 			}
 		}
-		
+
 		////////////////////////////////////////////////////////////////////////////////
 		// Highlight item if it's not in the trash, lost+found, or COF
-		const BOOL auto_open = gSavedSettings.getBOOL("ShowInInventory") &&
+		const BOOL auto_open = 
+			gSavedSettings.getBOOL("ShowInInventory") &&
 			(asset_type != LLAssetType::AT_CALLINGCARD) &&
-			(item->getInventoryType() != LLInventoryType::IT_ATTACHMENT) &&
+			!(item && item->getInventoryType() != LLInventoryType::IT_ATTACHMENT) &&
 			!from_name.empty();
 		LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open);
 		if(active_panel)
 		{
-			LL_DEBUGS("Messaging") << "Highlighting" << item_id  << LL_ENDL;
+			LL_DEBUGS("Messaging") << "Highlighting" << obj_id  << LL_ENDL;
 			LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus();
-			active_panel->setSelection(item_id, TAKE_FOCUS_NO);
+			active_panel->setSelection(obj_id, TAKE_FOCUS_NO);
 			gFocusMgr.setKeyboardFocus(focus_ctrl);
 		}
 	}
 }
 
-bool highlight_offered_item(const LLUUID& item_id)
+bool highlight_offered_object(const LLUUID& obj_id)
 {
-	LLInventoryItem* item = gInventory.getItem(item_id);
-	if(!item)
+	const LLInventoryObject* obj = gInventory.getObject(obj_id);
+	if(!obj)
 	{
-		LL_WARNS("Messaging") << "Unable to show inventory item: " << item_id << LL_ENDL;
+		LL_WARNS("Messaging") << "Unable to show inventory item: " << obj_id << LL_ENDL;
 		return false;
 	}
 
@@ -1178,7 +1198,7 @@ bool highlight_offered_item(const LLUUID& item_id)
 	// notification (e.g. trash, cof, lost-and-found).
 	if(!gAgent.getAFK())
 	{
-		const LLViewerInventoryCategory *parent = gInventory.getFirstNondefaultParent(item_id);
+		const LLViewerInventoryCategory *parent = gInventory.getFirstNondefaultParent(obj_id);
 		if (parent)
 		{
 			const LLFolderType::EType parent_type = parent->getPreferredType();
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
index 72ad3c8926085d878fe11afdb7addc2deeb04900..eca253ee036cacc39a6bff6c2306b5de7575fe85 100644
--- a/indra/newview/llviewermessage.h
+++ b/indra/newview/llviewermessage.h
@@ -207,7 +207,7 @@ void open_inventory_offer(const uuid_vec_t& items, const std::string& from_name)
 // Returns true if item is not in certain "quiet" folder which don't need UI
 // notification (e.g. trash, cof, lost-and-found) and agent is not AFK, false otherwise.
 // Returns false if item is not found.
-bool highlight_offered_item(const LLUUID& item_id);
+bool highlight_offered_object(const LLUUID& obj_id);
 
 void set_dad_inventory_item(LLInventoryItem* inv_item, const LLUUID& into_folder_uuid);
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index eb0d4cb8ae8de120cabaaa99c598e61b032d4dc6..4ef166fb71debcf2da9788e6b1fea42e3290a426 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -595,7 +595,7 @@ LLVOAvatarSkeletonInfo* LLVOAvatar::sAvatarSkeletonInfo = NULL;
 LLVOAvatar::LLVOAvatarXmlInfo* LLVOAvatar::sAvatarXmlInfo = NULL;
 LLVOAvatarDictionary *LLVOAvatar::sAvatarDictionary = NULL;
 S32 LLVOAvatar::sFreezeCounter = 0;
-S32 LLVOAvatar::sMaxVisible = 50;
+U32 LLVOAvatar::sMaxVisible = 12;
 F32 LLVOAvatar::sRenderDistance = 256.f;
 S32	LLVOAvatar::sNumVisibleAvatars = 0;
 S32	LLVOAvatar::sNumLODChangesThisFrame = 0;
@@ -3173,23 +3173,23 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		{ // muted avatars update at 16 hz
 			mUpdatePeriod = 16;
 		}
-		else if (visible && mVisibilityRank <= LLVOAvatar::sMaxVisible * 0.25f)
+		else if (visible && mVisibilityRank <= LLVOAvatar::sMaxVisible)
 		{ //first 25% of max visible avatars are not impostored
 			mUpdatePeriod = 1;
 		}
-		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 0.75f)
-		{ //back 25% of max visible avatars are slow updating impostors
-			mUpdatePeriod = 8;
-		}
-		else if (visible && mVisibilityRank > (U32) LLVOAvatar::sMaxVisible)
+		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 4)
 		{ //background avatars are REALLY slow updating impostors
 			mUpdatePeriod = 16;
 		}
+		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 3)
+		{ //back 25% of max visible avatars are slow updating impostors
+			mUpdatePeriod = 8;
+		}
 		else if (visible && mImpostorPixelArea <= impostor_area)
 		{  // stuff in between gets an update period based on pixel area
 			mUpdatePeriod = llclamp((S32) sqrtf(impostor_area*4.f/mImpostorPixelArea), 2, 8);
 		}
-		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 0.25f)
+		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible)
 		{ // force nearby impostors in ultra crowded areas
 			mUpdatePeriod = 2;
 		}
@@ -3551,7 +3551,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 //							AUDIO_STEP_LO_SPEED, AUDIO_STEP_HI_SPEED,
 //							AUDIO_STEP_LO_GAIN, AUDIO_STEP_HI_GAIN );
 
-			const F32 STEP_VOLUME = 0.3f;
+			const F32 STEP_VOLUME = 0.1f;
 			const LLUUID& step_sound_id = getStepSound();
 
 			LLVector3d foot_pos_global = gAgent.getPosGlobalFromAgent(foot_pos_agent);
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index b30cce09f65d3930194ac3a4cbafa3ac67304d7e..4259bb8e7382018c5b79e7a1593f49d723aa24d2 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -223,8 +223,8 @@ class LLVOAvatar :
 public:
 	static S32		sRenderName;
 	static BOOL		sRenderGroupTitles;
-	static S32		sMaxVisible;
-	static F32		sRenderDistance; //distance at which avatars will render (affected by control "RenderAvatarMaxVisible")
+	static U32		sMaxVisible; //(affected by control "RenderAvatarMaxVisible")
+	static F32		sRenderDistance; //distance at which avatars will render.
 	static BOOL		sShowAnimationDebug; // show animation debug info
 	static BOOL		sUseImpostors; //use impostors for far away avatars
 	static BOOL		sShowFootPlane;	// show foot collision plane reported by server
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index 5e9c4dcec875f86c4d50f34edb92ada36df96f16..ea0c5f1d0f47100d25dd17ece70f705f7f20be44 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -647,6 +647,7 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
 
 	// *TODO: eliminate multiple traversals over the menu items
 	setMenuItemVisible(menu, "wear_add",			mask == MASK_CLOTHING && n_worn == 0);
+	setMenuItemEnabled(menu, "wear_add",			n_items == 1 && canAddWearable(ids.front()));
 	setMenuItemVisible(menu, "wear",				n_worn == 0);
 	setMenuItemVisible(menu, "edit",				!standalone && mask & (MASK_CLOTHING|MASK_BODYPART));
 	setMenuItemEnabled(menu, "edit",				n_editable == 1 && n_worn == 1 && n_items == 1);
@@ -740,4 +741,23 @@ void LLWearableItemsList::ContextMenu::createNewWearable(const LLUUID& item_id)
 	LLAgentWearables::createWearable(item->getWearableType(), true);
 }
 
+// Can we wear another wearable of the given item's wearable type?
+// static
+bool LLWearableItemsList::ContextMenu::canAddWearable(const LLUUID& item_id)
+{
+	if (!gAgentWearables.areWearablesLoaded())
+	{
+		return false;
+	}
+
+	LLViewerInventoryItem* item = gInventory.getItem(item_id);
+	if (!item || item->getType() != LLAssetType::AT_CLOTHING)
+	{
+		return false;
+	}
+
+	U32 wearable_count = gAgentWearables.getWearableCount(item->getWearableType());
+	return wearable_count < LLAgentWearables::MAX_CLOTHING_PER_TYPE;
+}
+
 // EOF
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
index fe859075c41831e782a4898dd63dd21832c75a21..69134dd6462b49511867854899648182aa073a23 100644
--- a/indra/newview/llwearableitemslist.h
+++ b/indra/newview/llwearableitemslist.h
@@ -342,6 +342,7 @@ class LLWearableItemsList : public LLInventoryItemsList
 		static void setMenuItemEnabled(LLContextMenu* menu, const std::string& name, bool val);
 		static void updateMask(U32& mask, LLAssetType::EType at);
 		static void createNewWearable(const LLUUID& item_id);
+		static bool canAddWearable(const LLUUID& item_id);
 
 		LLWearableItemsList*	mParent;
 	};
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index cc65b34a612e3eb6d4b7ed1312634457b54e2f7c..ee3a2fc34f2f7d7c302ac6af5752d2a3f1f874b0 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -2207,7 +2207,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 	//LLVertexBuffer::unbind();
 
 	grabReferences(result);
-	llpushcallstacks ;
 	for (LLCullResult::sg_list_t::iterator iter = sCull->beginDrawableGroups(); iter != sCull->endDrawableGroups(); ++iter)
 	{
 		LLSpatialGroup* group = *iter;
@@ -2225,7 +2224,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 			}
 		}
 	}
-	llpushcallstacks ;
 	for (LLCullResult::sg_list_t::iterator iter = sCull->beginVisibleGroups(); iter != sCull->endVisibleGroups(); ++iter)
 	{
 		LLSpatialGroup* group = *iter;
@@ -2241,7 +2239,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 		}
 	}
 	
-	llpushcallstacks ;
 	if (LLViewerCamera::sCurCameraID == LLViewerCamera::CAMERA_WORLD)
 	{
 		for (LLCullResult::bridge_list_t::iterator i = sCull->beginVisibleBridge(); i != sCull->endVisibleBridge(); ++i)
@@ -2268,12 +2265,13 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 			}
 		}
 	}
-
+	llpushcallstacks ;	
 	{
 		LLFastTimer ftm(FTM_CLIENT_COPY);
 		LLVertexBuffer::clientCopy();
 	}
-
+	llpushcallstacks ;
+	
 	postSort(camera);
 	llpushcallstacks ;
 }
@@ -7117,7 +7115,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 			skip_avatar_update = TRUE;
 		}
 
-		llpushcallstacks ;
 		if (!skip_avatar_update)
 		{
 			gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON);
@@ -7216,7 +7213,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 										(1 << LLPipeline::RENDER_TYPE_WL_SKY));
 					static LLCullResult result;
 					updateCull(camera, result);
-					llpushcallstacks ;
 					stateSort(camera, result);
 					mRenderTypeMask = tmp & ((1 << LLPipeline::RENDER_TYPE_SKY) |
 										(1 << LLPipeline::RENDER_TYPE_CLOUDS) |
@@ -7251,7 +7247,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 					LLGLUserClipPlane clip_plane(plane, mat, projection);
 					LLGLDisable cull(GL_CULL_FACE);
 					updateCull(camera, ref_result, 1);
-					llpushcallstacks ;
 					stateSort(camera, ref_result);
 				}
 				
@@ -7308,7 +7303,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 				LLGLUserClipPlane clip_plane(LLPlane(-pnorm, -(pd+pad)), mat, projection);
 				static LLCullResult result;
 				updateCull(camera, result, water_clip);
-				llpushcallstacks ;
 				stateSort(camera, result);
 
 				gGL.setColorMask(true, true);
@@ -7347,7 +7341,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 		{
 			gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());
 		}
-		llpushcallstacks ;
 	}
 }
 
diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml
index 70dac7e41c35746e013725ce19d08a021754fba9..c02d6075866ab69c720d1dcae353d92c9316d122 100644
--- a/indra/newview/skins/default/xui/en/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml
@@ -182,7 +182,7 @@
 			</button>
         </layout_panel>
         <layout_panel
-         height="20"
+         height="40"
          layout="topleft"
          left_delta="0"
          name="external_controls"
@@ -190,7 +190,7 @@
          user_resize="false"
          width="540">
             <web_browser
-             bottom="-10"
+             bottom="-30"
              follows="left|right|top|bottom"
              layout="topleft"
              left="0"
@@ -206,9 +206,9 @@
              name="open_browser"
              top_pad="5"
              width="185">
-				<button.commit_callback
-				function="MediaBrowser.OpenWebBrowser" />
-			</button>
+              <button.commit_callback
+                function="MediaBrowser.OpenWebBrowser" />
+            </button>
             <check_box
              control_name="UseExternalBrowser"
              follows="bottom|left"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index c1e5ae50e69fdbc34d0650f13ed6862cb4e35e55..a59070496e9f4a15715d6a325a7db43b8a2f2258 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -48,7 +48,7 @@
            mouse_opaque="true"
            name="cof_tab"
            start_folder="Current Outfit"
-           use_label_suffix="false" 
+           use_label_suffix="true" 
            width="315" />
    </tab_container>
 	 <panel
@@ -130,4 +130,4 @@
       width="152" />
 	 </panel>
        
-</panel>
\ No newline at end of file
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
index 5c9ae51a483e376418a43e2198a62e332f602282..d0c44c4328916c5f6c8f2e2a90f8ded7ebdabf95 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
@@ -14,7 +14,8 @@
      background_visible="true"
      bg_alpha_color="DkGray2"
      bg_opaque_color="DkGray2"
-     empty_accordion_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
+     no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
+     no_visible_tabs_text.value="There are no any outfits. Try [secondlife:///app/search/all/ Search]."
      follows="all"
      height="400"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index da28773c74c57241b1394679e53abe03a94e5426..b79ef1e287b58d2bc364b20a31cd820c8acb72e7 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -173,7 +173,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
        		 background_visible="true"
        		 bg_alpha_color="DkGray2"
        		 bg_opaque_color="DkGray2"
-             empty_accordion_text.value=""
              follows="all"
              height="356"
              layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 266fd6cb5e7e49393bbe871e9a19c9d2e4969acc..f4694180a121d36fc2eebbfba1f2a607f610da69 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -372,29 +372,17 @@
     decimal_digits="0"
     follows="left|top"
     height="16"
-    increment="2"
-    initial_value="35"
-    label="Max. avatar draw distance:"
+    increment="1"
+    initial_value="12"
+    label="Max. # of non-impostor avatars:"
     label_width="185"
     layout="topleft"
     left_delta="0"
     max_val="65"
     min_val="1"
-    name="MaxAvatarDrawDistance"
+    name="MaxNumberAvatarDrawn"
     top_pad="4"
     width="290" />
-    <text
-    type="string"
-    length="1"
-    follows="left|top"
-    height="12"
-    layout="topleft"
-    left_delta="291"
-    name="DrawDistanceMeterText3"
-    top_delta="0"
-    width="128">
-      m
-    </text>
 		<slider
 		control_name="RenderGlowResolutionPow"
 		decimal_digits="0"
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
index 21addb8e6fe9f80fed2e17ea768261aefe43aba4..daa4356c836513f96085f575cdf0a797d37eed4e 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
@@ -5,14 +5,16 @@
      background_visible="true"
      bg_alpha_color="DkGray">     
     <accordion
+     no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search]."
+     no_visible_tabs_text.value="Teleport history is empty. Try [secondlife:///app/search/places/ Search]."
      follows="left|top|right|bottom"
      height="373"
      layout="topleft"
      left="3"
      top="0"
      name="history_accordion"
-   background_visible="true"
-   bg_alpha_color="DkGray2"
+     background_visible="true"
+     bg_alpha_color="DkGray2"
      width="307">
 	    <accordion_tab
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index e2bd6f375eccaa7d5b5f80c510dd8db190b188b4..b3bc618eec4157410a002608fc9e88558bf77388 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -159,51 +159,49 @@
 		     name="LabelCreatorName"
 		     top_delta="6"
 		     width="140">
-	        Nicole Linden
-	     </text>
-	     <button
-			 follows="top|right"
-			 height="16"
-     image_selected="Inspector_I"
-     image_unselected="Inspector_I"
-			 layout="topleft"
-			 right="-5"
-			 name="BtnCreator"
-			 top_delta="-6"
-			 width="16" />
-	     <text
-			 type="string"
-			 length="1"
-			 follows="left|top"
-			 height="23"
-			 layout="topleft"
-			   left="5"
-			 name="LabelOwnerTitle"
-			   top_pad="10"
-			 width="78">
-			    Owner:
-	     </text>
-	     <avatar_icon
-			   follows="top|left"
-			   height="20"
-			   default_icon_name="Generic_Person"
-			   layout="topleft"
-			   left_pad="0"
-			   top_delta="-6"
-			   mouse_opaque="true"
-			   width="20" />
-	     <text
-			 type="string"
-			   follows="left|right|top"
-			   font="SansSerifSmall"
-			   height="15"
-			   layout="topleft"
-			   left_pad="5"
-			 name="LabelOwnerName"
-			 top_delta="6"
-			 width="140">
-			    Thrax Linden
-	     </text>
+      </text>
+      <button
+      follows="top|right"
+      height="16"
+    image_selected="Inspector_I"
+    image_unselected="Inspector_I"
+      layout="topleft"
+      right="-5"
+      name="BtnCreator"
+      top_delta="-6"
+      width="16" />
+      <text
+      type="string"
+      length="1"
+      follows="left|top"
+      height="23"
+      layout="topleft"
+        left="5"
+      name="LabelOwnerTitle"
+        top_pad="10"
+      width="78">
+        Owner:
+      </text>
+      <avatar_icon
+        follows="top|left"
+        height="20"
+        default_icon_name="Generic_Person"
+        layout="topleft"
+        left_pad="0"
+        top_delta="-6"
+        mouse_opaque="true"
+        width="20" />
+      <text
+      type="string"
+        follows="left|right|top"
+        font="SansSerifSmall"
+        height="15"
+        layout="topleft"
+        left_pad="5"
+      name="LabelOwnerName"
+      top_delta="6"
+      width="140">
+      </text>
 	     <button
 			 follows="top|right"
 			 height="16"
@@ -236,7 +234,6 @@ top_pad="10"
 			 name="LabelAcquiredDate"
 			 top_delta="0"
 			 width="222">
-			Wed May 24 12:50:46 2006
       </text>
 	 <panel
          border="false"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 294267d43b2864ce6b43d400e7e1f14c32e031f7..68eea8dc9a6b1d332d0f1a239d74f22bbe4a1386 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -136,7 +136,7 @@
 	<string name="RetrievingData">Retrieving...</string>
 
 	<string name="ReleaseNotes">Release Notes</string>
-	<string name="RELEASE_NOTES_BASE_URL">http://secondlife.com/app/releasenotes/</string>
+	<string name="RELEASE_NOTES_BASE_URL">http://wiki.secondlife.com/wiki/Release_Notes/</string>
 
 	<!-- Indicates something is being loaded. Maybe should be merged with RetrievingData -->
 	<string name="LoadingData">Loading...</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/accordion.xml b/indra/newview/skins/default/xui/en/widgets/accordion.xml
index 05d7447a6f8b5824510b569ddf34d92ec5f199dd..19f8234389d5ff034c670b4effb2c511008d7bcd 100644
--- a/indra/newview/skins/default/xui/en/widgets/accordion.xml
+++ b/indra/newview/skins/default/xui/en/widgets/accordion.xml
@@ -3,12 +3,16 @@
  height="100"
  name="accordion"
  width="200">
-    <empty_accordion_text
+    <no_matched_tabs_text
      follows="all"
      height="100"
      h_pad="10"
-     name="no_visible_items_msg"
+     name="no_matched_tabs_msg"
      v_pad="15"
      width="200"
      wrap="true "/>
+    <!-- This widget will not be created in viewer. Only its value will be used for empty accordion without filter. -->
+    <no_visible_tabs_text
+     name="no_visible_tabs_msg"
+     visible="false"/>
 </accordion>
diff --git a/install.xml b/install.xml
index 1f3e74a27ab62fb259aaa6e15ecc42710abdfc6a..5f444dd01659f64c0390730558b42ce1e64f6c46 100644
--- a/install.xml
+++ b/install.xml
@@ -981,9 +981,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>darwin</key>
           <map>
             <key>md5sum</key>
-            <string>1417e04ca4bec1ed281c43d37b613845</string>
+            <string>becffca6bd8dcb239de284ea2a8b485b</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6+cookies-darwin-20100519.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6+cookies-darwin-20100617.tar.bz2</uri>
           </map>
           <key>linux</key>
           <map>
@@ -995,9 +995,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>d682ed6232193b4eab3170657a54ebf9</string>
+            <string>df1bdd683128e060d60e435f65d8f7e8</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20100519.tar.bz2</uri>
+            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100617.tar.bz2</uri>
           </map>
         </map>
       </map>