diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index f76b471c9c7c5d1bb5f9a3287a0f31945d5eb2d9..c9b5631d54f859deba37dc46e6032ec0e20c4bb2 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4,13 +4,14 @@
     <key>AFKTimeout</key>
     <map>
       <key>Comment</key>
-      <string>Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never)</string>
+      <string>Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never). 
+        Valid values are: 0, 120, 300, 600, 1800</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
       <string>S32</string>
       <key>Value</key>
-      <real>0</real>
+      <real>300</real>
     </map>
     <key>AdvanceSnapshot</key>
     <map>
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 407c5b6153eba2bea7ab4991d27a457b608c5ba3..c7a5691d70ea24ed977d9a280735ae17e216c05d 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -32,13 +32,18 @@
 
 #include "llviewerprecompiledheaders.h"
 
+// common
+#include "lltrans.h"
+
 #include "llavatarlist.h"
 #include "llagentdata.h" // for comparator
 
 // newview
+#include "llavatariconctrl.h"
 #include "llcallingcard.h" // for LLAvatarTracker
 #include "llcachename.h"
 #include "llrecentpeople.h"
+#include "lltextutil.h"
 #include "lluuid.h"
 #include "llvoiceclient.h"
 #include "llviewercontrol.h"	// for gSavedSettings
@@ -193,6 +198,18 @@ void LLAvatarList::setDirty(bool val /*= true*/, bool force_refresh /*= false*/)
 	}
 }
 
+void LLAvatarList::addAvalineItem(const LLUUID& item_id, const LLUUID& session_id, const std::string& item_name)
+{
+	LL_DEBUGS("Avaline") << "Adding avaline item into the list: " << item_name << "|" << item_id << ", session: " << session_id << LL_ENDL;
+	LLAvalineListItem* item = new LLAvalineListItem;
+	item->setAvatarId(item_id, session_id, true, false);
+	item->setName(item_name);
+
+	addItem(item, item_id);
+	mIDs.push_back(item_id);
+	sort();
+}
+
 //////////////////////////////////////////////////////////////////////////
 // PROTECTED SECTION
 //////////////////////////////////////////////////////////////////////////
@@ -471,3 +488,61 @@ bool LLAvatarItemAgentOnTopComparator::doCompare(const LLAvatarListItem* avatar_
 	}
 	return LLAvatarItemNameComparator::doCompare(avatar_item1,avatar_item2);
 }
+
+/************************************************************************/
+/*             class LLAvalineListItem                                  */
+/************************************************************************/
+LLAvalineListItem::LLAvalineListItem(bool hide_number/* = true*/) : LLAvatarListItem(false)
+, mIsHideNumber(hide_number)
+{
+	// should not use buildPanel from the base class to ensure LLAvalineListItem::postBuild is called.
+	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_list_item.xml");
+}
+
+BOOL LLAvalineListItem::postBuild()
+{
+	BOOL rv = LLAvatarListItem::postBuild();
+
+	if (rv)
+	{
+		setOnline(true);
+		showLastInteractionTime(false);
+		setShowProfileBtn(false);
+		setShowInfoBtn(false);
+		mAvatarIcon->setValue("Avaline_Icon");
+		mAvatarIcon->setToolTip(std::string(""));
+	}
+	return rv;
+}
+
+// to work correctly this method should be called AFTER setAvatarId for avaline callers with hidden phone number
+void LLAvalineListItem::setName(const std::string& name)
+{
+	if (mIsHideNumber)
+	{
+		static U32 order = 0;
+		typedef std::map<LLUUID, U32> avaline_callers_nums_t;
+		static avaline_callers_nums_t mAvalineCallersNums;
+
+		llassert(getAvatarId() != LLUUID::null);
+
+		const LLUUID &uuid = getAvatarId();
+
+		if (mAvalineCallersNums.find(uuid) == mAvalineCallersNums.end())
+		{
+			mAvalineCallersNums[uuid] = ++order;
+			LL_DEBUGS("Avaline") << "Set name for new avaline caller: " << uuid << ", order: " << order << LL_ENDL;
+		}
+		LLStringUtil::format_map_t args;
+		args["[ORDER]"] = llformat("%u", mAvalineCallersNums[uuid]);
+		std::string hidden_name = LLTrans::getString("AvalineCaller", args);
+
+		LL_DEBUGS("Avaline") << "Avaline caller: " << uuid << ", name: " << hidden_name << LL_ENDL;
+		LLAvatarListItem::setName(hidden_name);
+	}
+	else
+	{
+		const std::string& formatted_phone = LLTextUtil::formatPhoneNumber(name);
+		LLAvatarListItem::setName(formatted_phone);
+	}
+}
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 0203617867ffeccebbfbbea026ecbbc071f34ea7..528f796b8bcedfcf6a79e26d09ae2281a8af1c54 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -96,6 +96,8 @@ class LLAvatarList : public LLFlatListView
 
 	virtual S32 notifyParent(const LLSD& info);
 
+	void addAvalineItem(const LLUUID& item_id, const LLUUID& session_id, const std::string& item_name);
+
 protected:
 	void refresh();
 
@@ -175,4 +177,27 @@ class LLAvatarItemAgentOnTopComparator : public LLAvatarItemNameComparator
 	virtual bool doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const;
 };
 
+/**
+ * Represents Avaline caller in Avatar list in Voice Control Panel and group chats.
+ */
+class LLAvalineListItem : public LLAvatarListItem
+{
+public:
+
+	/**
+	 * Constructor
+	 *
+	 * @param hide_number - flag indicating if number should be hidden.
+	 *		In this case It will be shown as "Avaline Caller 1", "Avaline Caller 1", etc.
+	 */
+	LLAvalineListItem(bool hide_number = true);
+
+	/*virtual*/ BOOL postBuild();
+
+	/*virtual*/ void setName(const std::string& name);
+
+private:
+	bool mIsHideNumber;
+};
+
 #endif // LL_LLAVATARLIST_H
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 44f88cce297802607a590398f419ac729572ada4..2a51eeacfcd415934c3d2fb5e1bfce098cc85948 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -212,21 +212,25 @@ void LLAvatarListItem::setState(EItemState item_style)
 	mAvatarIcon->setColor(item_icon_color_map[item_style]);
 }
 
-void LLAvatarListItem::setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes)
+void LLAvatarListItem::setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes/* = false*/, bool is_resident/* = true*/)
 {
 	if (mAvatarId.notNull())
 		LLAvatarTracker::instance().removeParticularFriendObserver(mAvatarId, this);
 
 	mAvatarId = id;
-	mAvatarIcon->setValue(id);
 	mSpeakingIndicator->setSpeakerId(id, session_id);
 
 	// We'll be notified on avatar online status changes
 	if (!ignore_status_changes && mAvatarId.notNull())
 		LLAvatarTracker::instance().addParticularFriendObserver(mAvatarId, this);
 
-	// Set avatar name.
-	gCacheName->get(id, FALSE, boost::bind(&LLAvatarListItem::onNameCache, this, _2, _3));
+	if (is_resident)
+	{
+		mAvatarIcon->setValue(id);
+
+		// Set avatar name.
+		gCacheName->get(id, FALSE, boost::bind(&LLAvatarListItem::onNameCache, this, _2, _3));
+	}
 }
 
 void LLAvatarListItem::showLastInteractionTime(bool show)
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index 2db6484a30b74042935b27c8f41145f37a632fcb..3ba2c7a3e3d4aba4553ef15a04ea816209c81c95 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -100,7 +100,7 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 	void setName(const std::string& name);
 	void setHighlight(const std::string& highlight);
 	void setState(EItemState item_style);
-	void setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes = false);
+	void setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes = false, bool is_resident = true);
 	void setLastInteractionTime(U32 secs_since);
 	//Show/hide profile/info btn, translating speaker indicator and avatar name coordinates accordingly
 	void setShowProfileBtn(bool show);
diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp
index 01a699506e870d358e90f8d9d1c9a396552a9d71..d1e99fbd61e96529b4ac1150194ea4d1e26117d1 100644
--- a/indra/newview/llfloateravatarpicker.cpp
+++ b/indra/newview/llfloateravatarpicker.cpp
@@ -451,8 +451,8 @@ void LLFloaterAvatarPicker::processAvatarPickerReply(LLMessageSystem* msg, void*
 	
 	LLFloaterAvatarPicker* floater = LLFloaterReg::findTypedInstance<LLFloaterAvatarPicker>("avatar_picker");
 
-	// these are not results from our last request
-	if (query_id != floater->mQueryID)
+	// floater is closed or these are not results from our last request
+	if (NULL == floater || query_id != floater->mQueryID)
 	{
 		return;
 	}
diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp
index 97ebab34258d7c495b48eaa7d63180a45d43a2b3..560cc29080ce32dd7f169366c6696bdc136af012 100644
--- a/indra/newview/llfloaterevent.cpp
+++ b/indra/newview/llfloaterevent.cpp
@@ -113,7 +113,6 @@ BOOL LLFloaterEvent::postBuild()
 	mTBDuration = getChild<LLTextBox>("event_duration");
 
 	mTBDesc = getChild<LLExpandableTextBox>("event_desc");
-	mTBDesc->setEnabled(FALSE);
 
 	mTBRunBy = getChild<LLTextBox>("event_runby");
 	mTBLocation = getChild<LLTextBox>("event_location");
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 3ec8d11fb0cd7c72b5bb092085f2f359494e7276..19dbc564d17fa61fa1e541fb804f731eac5ea3d2 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -499,8 +499,8 @@ void LLIMFloater::setVisible(BOOL visible)
 	{
 		//only if floater was construced and initialized from xml
 		updateMessages();
-		//prevent steal focus when IM opened in multitab mode
-		if (!isChatMultiTab())
+		//prevent stealing focus when opening a background IM tab (EXT-5387, checking focus for EXT-6781)
+		if (!isChatMultiTab() || hasFocus())
 		{
 			mInputEditor->setFocus(TRUE);
 		}
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 0f22a500937828a934dd8d1b5f3566d9e3bba558..4ccf5e1c7bb8f8fd6c5e893e259f30adc38eba82 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -200,7 +200,8 @@ void LLFloaterMove::setFlyingMode(BOOL fly)
 	if (instance)
 	{
 		instance->setFlyingModeImpl(fly);
-		instance->showModeButtons(!fly);
+		BOOL is_sitting = isAgentAvatarValid() && gAgentAvatarp->isSitting();
+		instance->showModeButtons(!fly && !is_sitting);
 	}
 	if (fly)
 	{
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 026be882ed7aec9483eef7b66fd0ca71c833a875..53f92f7ad1d7d887ae81b4090a8fc9647ae1e6a2 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -50,6 +50,145 @@
 
 static const LLAvatarItemAgentOnTopComparator AGENT_ON_TOP_NAME_COMPARATOR;
 
+// See EXT-4301.
+/**
+ * class LLAvalineUpdater - observe the list of voice participants in session and check
+ *  presence of Avaline Callers among them.
+ *
+ * LLAvalineUpdater is a LLVoiceClientParticipantObserver. It provides two kinds of validation:
+ *	- whether Avaline caller presence among participants;
+ *	- whether watched Avaline caller still exists in voice channel.
+ * Both validations have callbacks which will notify subscriber if any of event occur.
+ *
+ * @see findAvalineCaller()
+ * @see checkIfAvalineCallersExist()
+ */
+class LLAvalineUpdater : public LLVoiceClientParticipantObserver
+{
+public:
+	typedef boost::function<void(const LLUUID& speaker_id)> process_avaline_callback_t;
+
+	LLAvalineUpdater(process_avaline_callback_t found_cb, process_avaline_callback_t removed_cb)
+		: mAvalineFoundCallback(found_cb)
+		, mAvalineRemovedCallback(removed_cb)
+	{
+		LLVoiceClient::getInstance()->addObserver(this);
+	}
+	~LLAvalineUpdater()
+	{
+		if (LLVoiceClient::instanceExists())
+		{
+			LLVoiceClient::getInstance()->removeObserver(this);
+		}
+	}
+
+	/**
+	 * Adds UUID of Avaline caller to watch.
+	 *
+	 * @see checkIfAvalineCallersExist().
+	 */
+	void watchAvalineCaller(const LLUUID& avaline_caller_id)
+	{
+		mAvalineCallers.insert(avaline_caller_id);
+	}
+
+	void onChange()
+	{
+		uuid_set_t participant_uuids;
+		LLVoiceClient::getInstance()->getParticipantsUUIDSet(participant_uuids);
+
+
+		// check whether Avaline caller exists among voice participants
+		// and notify Participant List
+		findAvalineCaller(participant_uuids);
+
+		// check whether watched Avaline callers still present among voice participant
+		// and remove if absents.
+		checkIfAvalineCallersExist(participant_uuids);
+	}
+
+private:
+	typedef std::set<LLUUID> uuid_set_t;
+
+	/**
+	 * Finds Avaline callers among voice participants and calls mAvalineFoundCallback.
+	 *
+	 * When Avatar is in group call with Avaline caller and then ends call Avaline caller stays
+	 * in Group Chat floater (exists in LLSpeakerMgr). If Avatar starts call with that group again
+	 * Avaline caller is added to voice channel AFTER Avatar is connected to group call.
+	 * But Voice Control Panel (VCP) is filled from session LLSpeakerMgr and there is no information
+	 * if a speaker is Avaline caller.
+	 *
+	 * In this case this speaker is created as avatar and will be recreated when it appears in
+	 * Avatar's Voice session.
+	 *
+	 * @see LLParticipantList::onAvalineCallerFound()
+	 */
+	void findAvalineCaller(const uuid_set_t& participant_uuids)
+	{
+		uuid_set_t::const_iterator it = participant_uuids.begin(), it_end = participant_uuids.end();
+
+		for(; it != it_end; ++it)
+		{
+			const LLUUID& participant_id = *it;
+			if (!LLVoiceClient::getInstance()->isParticipantAvatar(participant_id))
+			{
+				LL_DEBUGS("Avaline") << "Avaline caller found among voice participants: " << participant_id << LL_ENDL;
+
+				if (mAvalineFoundCallback)
+				{
+					mAvalineFoundCallback(participant_id);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Finds Avaline callers which are not anymore among voice participants and calls mAvalineRemovedCallback.
+	 *
+	 * The problem is when Avaline caller ends a call it is removed from Voice Client session but
+	 * still exists in LLSpeakerMgr. Server does not send such information.
+	 * This method implements a HUCK to notify subscribers that watched Avaline callers by class
+	 * are not anymore in the call.
+	 *
+	 * @see LLParticipantList::onAvalineCallerRemoved()
+	 */
+	void checkIfAvalineCallersExist(const uuid_set_t& participant_uuids)
+	{
+		uuid_set_t::iterator it = mAvalineCallers.begin();
+		uuid_set_t::const_iterator participants_it_end = participant_uuids.end();
+
+		while (it != mAvalineCallers.end())
+		{
+			const LLUUID participant_id = *it;
+			LL_DEBUGS("Avaline") << "Check avaline caller: " << participant_id << LL_ENDL;
+			bool not_found = participant_uuids.find(participant_id) == participants_it_end;
+			if (not_found)
+			{
+				LL_DEBUGS("Avaline") << "Watched Avaline caller is not found among voice participants: " << participant_id << LL_ENDL;
+
+				// notify Participant List
+				if (mAvalineRemovedCallback)
+				{
+					mAvalineRemovedCallback(participant_id);
+				}
+
+				// remove from the watch list
+				mAvalineCallers.erase(it++);
+			}
+			else
+			{
+				++it;
+			}
+		}
+	}
+
+	process_avaline_callback_t mAvalineFoundCallback;
+	process_avaline_callback_t mAvalineRemovedCallback;
+
+	uuid_set_t mAvalineCallers;
+};
+
 LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* avatar_list,  bool use_context_menu/* = true*/,
 		bool exclude_agent /*= true*/, bool can_toggle_icons /*= true*/):
 	mSpeakerMgr(data_source),
@@ -59,6 +198,9 @@ LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* av
 ,	mExcludeAgent(exclude_agent)
 ,	mValidateSpeakerCallback(NULL)
 {
+	mAvalineUpdater = new LLAvalineUpdater(boost::bind(&LLParticipantList::onAvalineCallerFound, this, _1),
+		boost::bind(&LLParticipantList::onAvalineCallerRemoved, this, _1));
+
 	mSpeakerAddListener = new SpeakerAddListener(*this);
 	mSpeakerRemoveListener = new SpeakerRemoveListener(*this);
 	mSpeakerClearListener = new SpeakerClearListener(*this);
@@ -137,6 +279,9 @@ LLParticipantList::~LLParticipantList()
 	}
 
 	mAvatarList->setContextMenu(NULL);
+	mAvatarList->setComparator(NULL);
+
+	delete mAvalineUpdater;
 }
 
 void LLParticipantList::setSpeakingIndicatorsVisible(BOOL visible)
@@ -210,6 +355,55 @@ void LLParticipantList::onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param)
 	}
 }
 
+/*
+Seems this method is not necessary after onAvalineCallerRemoved was implemented;
+
+It does nothing because list item is always created with correct class type for Avaline caller.
+For now Avaline Caller is removed from the LLSpeakerMgr List when it is removed from the Voice Client
+session.
+This happens in two cases: if Avaline Caller ends call itself or if Resident ends group call.
+
+Probably Avaline caller should be removed from the LLSpeakerMgr list ONLY if it ends call itself.
+Asked in EXT-4301.
+*/
+void LLParticipantList::onAvalineCallerFound(const LLUUID& participant_id)
+{
+	LLPanel* item = mAvatarList->getItemByValue(participant_id);
+
+	if (NULL == item)
+	{
+		LL_WARNS("Avaline") << "Something wrong. Unable to find item for: " << participant_id << LL_ENDL;
+		return;
+	}
+
+	if (typeid(*item) == typeid(LLAvalineListItem))
+	{
+		LL_DEBUGS("Avaline") << "Avaline caller has already correct class type for: " << participant_id << LL_ENDL;
+		// item representing an Avaline caller has a correct type already.
+		return;
+	}
+
+	LL_DEBUGS("Avaline") << "remove item from the list and re-add it: " << participant_id << LL_ENDL;
+
+	// remove UUID from LLAvatarList::mIDs to be able add it again.
+	uuid_vec_t& ids = mAvatarList->getIDs();
+	uuid_vec_t::iterator pos = std::find(ids.begin(), ids.end(), participant_id);
+	ids.erase(pos);
+
+	// remove item directly
+	mAvatarList->removeItem(item);
+
+	// re-add avaline caller with a correct class instance.
+	addAvatarIDExceptAgent(participant_id);
+}
+
+void LLParticipantList::onAvalineCallerRemoved(const LLUUID& participant_id)
+{
+	LL_DEBUGS("Avaline") << "Removing avaline caller from the list: " << participant_id << LL_ENDL;
+
+	mSpeakerMgr->removeAvalineSpeaker(participant_id);
+}
+
 void LLParticipantList::setSortOrder(EParticipantSortOrder order)
 {
 	if ( mSortOrder != order )
@@ -355,8 +549,20 @@ void LLParticipantList::addAvatarIDExceptAgent(const LLUUID& avatar_id)
 	if (mExcludeAgent && gAgent.getID() == avatar_id) return;
 	if (mAvatarList->contains(avatar_id)) return;
 
-	mAvatarList->getIDs().push_back(avatar_id);
-	mAvatarList->setDirty();
+	bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(avatar_id);
+
+	if (is_avatar)
+	{
+		mAvatarList->getIDs().push_back(avatar_id);
+		mAvatarList->setDirty();
+	}
+	else
+	{
+		LLVoiceClient::participantState *participant = LLVoiceClient::getInstance()->findParticipantByID(avatar_id);
+
+		mAvatarList->addAvalineItem(avatar_id, mSpeakerMgr->getSessionID(), participant ? participant->mAccountName : LLTrans::getString("AvatarNameWaiting"));
+		mAvalineUpdater->watchAvalineCaller(avatar_id);
+	}
 	adjustParticipant(avatar_id);
 }
 
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
index 953dff455167e420a3efa95e71692b8ee2e65878..9e5a2cbc1fb86cedac9ac2ed4673e69701799c8f 100644
--- a/indra/newview/llparticipantlist.h
+++ b/indra/newview/llparticipantlist.h
@@ -38,6 +38,7 @@
 class LLSpeakerMgr;
 class LLAvatarList;
 class LLUICtrl;
+class LLAvalineUpdater;
 
 class LLParticipantList
 {
@@ -235,6 +236,9 @@ class LLParticipantList
 		void onAvatarListDoubleClicked(LLUICtrl* ctrl);
 		void onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param);
 
+		void onAvalineCallerFound(const LLUUID& participant_id);
+		void onAvalineCallerRemoved(const LLUUID& participant_id);
+
 		/**
 		 * Adjusts passed participant to work properly.
 		 *
@@ -272,4 +276,5 @@ class LLParticipantList
 
 		LLPointer<LLAvatarItemRecentSpeakerComparator> mSortByRecentSpeakers;
 		validate_speaker_callback_t mValidateSpeakerCallback;
+		LLAvalineUpdater* mAvalineUpdater;
 };
diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h
index b924fb2f2ce6cd9dc37d92c5015b256b030e5aad..2bb160b7ce9d4b6264ece7cb3ec506dcf8b68a7b 100644
--- a/indra/newview/llspeakers.h
+++ b/indra/newview/llspeakers.h
@@ -234,6 +234,14 @@ class LLSpeakerMgr : public LLOldEvents::LLObservable
 	LLVoiceChannel* getVoiceChannel() { return mVoiceChannel; }
 	const LLUUID getSessionID();
 
+	/**
+	 * Removes avaline speaker.
+	 *
+	 * This is a HACK due to server does not send information that Avaline caller ends call.
+	 * It can be removed when server is updated. See EXT-4301 for details
+	 */
+	bool removeAvalineSpeaker(const LLUUID& speaker_id) { return removeSpeaker(speaker_id); }
+
 protected:
 	virtual void updateSpeakerList();
 	void setSpeakerNotInChannel(LLSpeaker* speackerp);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 9542bebde56f9b2e42df938bd86b123718878879..f55edd76b076fa5e073b8a25b86c1f42b25e2819 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -32,6 +32,7 @@
 
 #include "llviewerprecompiledheaders.h"
 #include "llviewermessage.h"
+#include "boost/lexical_cast.hpp"
 
 #include "llanimationstates.h"
 #include "llaudioengine.h" 
@@ -1856,6 +1857,53 @@ class LLPostponedServerObjectNotification: public LLPostponedNotification
 	}
 };
 
+static void parse_lure_bucket(const std::string& bucket,
+							  U64& region_handle,
+							  LLVector3& pos,
+							  LLVector3& look_at,
+							  U8& region_access)
+{
+	// tokenize the bucket
+	typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
+	boost::char_separator<char> sep("|", "", boost::keep_empty_tokens);
+	tokenizer tokens(bucket, sep);
+	tokenizer::iterator iter = tokens.begin();
+
+	S32 gx = boost::lexical_cast<S32>((*(iter)).c_str());
+	S32 gy = boost::lexical_cast<S32>((*(++iter)).c_str());
+	S32 rx = boost::lexical_cast<S32>((*(++iter)).c_str());
+	S32 ry = boost::lexical_cast<S32>((*(++iter)).c_str());
+	S32 rz = boost::lexical_cast<S32>((*(++iter)).c_str());
+	S32 lx = boost::lexical_cast<S32>((*(++iter)).c_str());
+	S32 ly = boost::lexical_cast<S32>((*(++iter)).c_str());
+	S32 lz = boost::lexical_cast<S32>((*(++iter)).c_str());
+
+	// Grab region access
+	region_access = SIM_ACCESS_MIN;
+	if (++iter != tokens.end())
+	{
+		std::string access_str((*iter).c_str());
+		LLStringUtil::trim(access_str);
+		if ( access_str == "A" )
+		{
+			region_access = SIM_ACCESS_ADULT;
+		}
+		else if ( access_str == "M" )
+		{
+			region_access = SIM_ACCESS_MATURE;
+		}
+		else if ( access_str == "PG" )
+		{
+			region_access = SIM_ACCESS_PG;
+		}
+	}
+
+	pos.setVec((F32)rx, (F32)ry, (F32)rz);
+	look_at.setVec((F32)lx, (F32)ly, (F32)lz);
+
+	region_handle = to_region_handle(gx, gy);
+}
+
 void process_improved_im(LLMessageSystem *msg, void **user_data)
 {
 	if (gNoRender)
@@ -2487,10 +2535,19 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			}
 			else
 			{
+				LLVector3 pos, look_at;
+				U64 region_handle;
+				U8 region_access;
+				std::string region_info = ll_safe_string((char*)binary_bucket, binary_bucket_size);
+				parse_lure_bucket(region_info, region_handle, pos, look_at, region_access);
+
+				std::string region_access_str = LLViewerRegion::accessToString(region_access);
+
 				LLSD args;
 				// *TODO: Translate -> [FIRST] [LAST] (maybe)
 				args["NAME_SLURL"] = LLSLURL::buildCommand("agent", from_id, "about");
 				args["MESSAGE"] = message;
+				args["MATURITY"] = region_access_str;
 				LLSD payload;
 				payload["from_id"] = from_id;
 				payload["lure_id"] = session_id;
diff --git a/indra/newview/skins/default/xui/en/floater_joystick.xml b/indra/newview/skins/default/xui/en/floater_joystick.xml
index b8156a174d1905a2e52859d6444923d2c86d4ac8..6e1bb8fcd02fa9b8469766331d618122832b4911 100644
--- a/indra/newview/skins/default/xui/en/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/en/floater_joystick.xml
@@ -6,7 +6,7 @@
  name="Joystick"
  help_topic="joystick"
  title="JOYSTICK CONFIGURATION"
- width="550">
+ width="569">
     <floater.string
      name="NoDevice">
         no device detected
@@ -148,7 +148,7 @@
      halign="right"
      height="10"
      layout="topleft"
-     left="12"
+     left="37"
      mouse_opaque="false"
      name="Control Modes:"
      top="110"
@@ -161,7 +161,7 @@
      halign="center"
      label="Avatar"
      layout="topleft"
-     left="125"
+     left="150"
      name="JoystickAvatarEnabled"
      width="60" />
     <check_box
@@ -170,7 +170,7 @@
      halign="center"
      label="Build"
      layout="topleft"
-     left="194"
+     left="219"
      name="JoystickBuildEnabled"
      width="60" />
     <check_box
@@ -179,14 +179,14 @@
      halign="center"
      label="Flycam"
      layout="topleft"
-     left="262"
+     left="289"
      name="JoystickFlycamEnabled"
      width="60" />
     <stat_view
      height="250"
      label="Joystick Monitor"
      layout="topleft"
-     left="340"
+     left="359"
      name="axis_view"
      show_label="true"
      top="142"
@@ -250,9 +250,9 @@
      bottom="144"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="XScale"
-     width="94">
+     width="140">
         X Scale
     </text>
     <spinner
@@ -261,7 +261,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="125"
+     left="150"
      max_val="50"
      min_val="-50"
      name="AvatarAxisScale1"
@@ -272,7 +272,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      max_val="1024"
      min_val="-1024"
      name="BuildAxisScale1"
@@ -283,7 +283,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      max_val="1024"
      min_val="-1024"
      name="FlycamAxisScale1"
@@ -294,9 +294,9 @@
      bottom="164"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="YScale"
-     width="94">
+     width="140">
         Y Scale
     </text>
     <spinner
@@ -305,7 +305,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="125"
+     left="150"
      max_val="50"
      min_val="-50"
      name="AvatarAxisScale2"
@@ -316,7 +316,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      max_val="1024"
      min_val="-1024"
      name="BuildAxisScale2"
@@ -327,7 +327,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      max_val="1024"
      min_val="-1024"
      name="FlycamAxisScale2"
@@ -338,9 +338,9 @@
      bottom="184"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="ZScale"
-     width="94">
+     width="140">
         Z Scale
     </text>
     <spinner
@@ -349,7 +349,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="125"
+     left="150"
      max_val="50"
      min_val="-50"
      name="AvatarAxisScale0"
@@ -360,7 +360,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      max_val="1024"
      min_val="-1024"
      name="BuildAxisScale0"
@@ -371,7 +371,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      max_val="1024"
      min_val="-1024"
      name="FlycamAxisScale0"
@@ -382,9 +382,9 @@
      bottom="204"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="PitchScale"
-     width="94">
+     width="140">
         Pitch Scale
     </text>
     <spinner
@@ -393,7 +393,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="125"
+     left="150"
      max_val="1024"
      min_val="-1024"
      name="AvatarAxisScale4"
@@ -404,7 +404,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      max_val="1024"
      min_val="-1024"
      name="BuildAxisScale4"
@@ -415,7 +415,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      max_val="1024"
      min_val="-1024"
      name="FlycamAxisScale4"
@@ -426,9 +426,9 @@
      bottom="224"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="YawScale"
-     width="94">
+     width="140">
         Yaw Scale
     </text>
     <spinner
@@ -437,7 +437,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="125"
+     left="150"
      max_val="1024"
      min_val="-1024"
      name="AvatarAxisScale5"
@@ -448,7 +448,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      max_val="1024"
      min_val="-1024"
      name="BuildAxisScale5"
@@ -459,7 +459,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      max_val="1024"
      min_val="-1024"
      name="FlycamAxisScale5"
@@ -470,9 +470,9 @@
      bottom="244"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="RollScale"
-     width="94">
+     width="140">
         Roll Scale
     </text>
     <spinner
@@ -481,7 +481,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      max_val="1024"
      min_val="-1024"
      name="BuildAxisScale3"
@@ -492,7 +492,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      max_val="1024"
      min_val="-1024"
      name="FlycamAxisScale3"
@@ -503,9 +503,9 @@
      bottom="274"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="XDeadZone"
-     width="94">
+     width="140">
         X Dead Zone
     </text>
     <spinner
@@ -515,7 +515,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="125"
+     left="150"
      name="AvatarAxisDeadZone1"
      width="56" />
     <spinner
@@ -525,7 +525,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      name="BuildAxisDeadZone1"
      width="56" />
     <spinner
@@ -535,7 +535,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      name="FlycamAxisDeadZone1"
      width="56" />
     <text
@@ -544,9 +544,9 @@
      bottom="294"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="YDeadZone"
-     width="94">
+     width="140">
         Y Dead Zone
     </text>
     <spinner
@@ -556,7 +556,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="125"
+     left="150"
      name="AvatarAxisDeadZone2"
      width="56" />
     <spinner
@@ -566,7 +566,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      name="BuildAxisDeadZone2"
      width="56" />
     <spinner
@@ -576,7 +576,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      name="FlycamAxisDeadZone2"
      width="56" />
     <text
@@ -585,9 +585,9 @@
      bottom="314"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="ZDeadZone"
-     width="94">
+     width="140">
         Z Dead Zone
     </text>
     <spinner
@@ -597,7 +597,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="125"
+     left="150"
      name="AvatarAxisDeadZone0"
      width="56" />
     <spinner
@@ -607,7 +607,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      name="BuildAxisDeadZone0"
      width="56" />
     <spinner
@@ -617,7 +617,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      name="FlycamAxisDeadZone0"
      width="56" />
     <text
@@ -626,9 +626,9 @@
      bottom="334"
      halign="right"
      layout="topleft"
-     left="20"
+     left="2"
      name="PitchDeadZone"
-     width="94">
+     width="140">
         Pitch Dead Zone
     </text>
     <spinner
@@ -638,7 +638,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="125"
+     left="150"
      name="AvatarAxisDeadZone4"
      width="56" />
     <spinner
@@ -648,7 +648,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      name="BuildAxisDeadZone4"
      width="56" />
     <spinner
@@ -658,7 +658,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      name="FlycamAxisDeadZone4"
      width="56" />
     <text
@@ -667,9 +667,9 @@
      bottom="354"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="YawDeadZone"
-     width="94">
+     width="140">
         Yaw Dead Zone
     </text>
     <spinner
@@ -679,7 +679,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="125"
+     left="150"
      name="AvatarAxisDeadZone5"
      width="56" />
     <spinner
@@ -689,7 +689,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      name="BuildAxisDeadZone5"
      width="56" />
     <spinner
@@ -699,7 +699,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      name="FlycamAxisDeadZone5"
      width="56" />
     <text
@@ -708,9 +708,9 @@
      bottom="374"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="RollDeadZone"
-     width="94">
+     width="140">
         Roll Dead Zone
     </text>
     <spinner
@@ -720,7 +720,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="195"
+     left="220"
      name="BuildAxisDeadZone3"
      width="56" />
     <spinner
@@ -730,7 +730,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      name="FlycamAxisDeadZone3"
      width="56" />
     <text
@@ -739,9 +739,9 @@
      bottom="402"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="Feathering"
-     width="94">
+     width="140">
         Feathering
     </text>
     <slider
@@ -752,7 +752,7 @@
      increment="1"
      initial_value="0.7"
      layout="topleft"
-     left="116"
+     left="141"
      max_val="32"
      min_val="1"
      name="AvatarFeathering"
@@ -795,9 +795,9 @@
      bottom="430"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="ZoomScale2"
-     width="94">
+     width="140">
         Zoom Scale
     </text>
     <spinner
@@ -806,7 +806,7 @@
      decimal_digits="2"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      max_val="1024"
      min_val="-1024"
      name="FlycamAxisScale6"
@@ -817,9 +817,9 @@
      bottom="450"
      halign="right"
      layout="topleft"
-     left="20"
+     left="3"
      name="ZoomDeadZone"
-     width="96">
+     width="140">
         Zoom Dead Zone
     </text>
     <spinner
@@ -829,7 +829,7 @@
      increment="0.01"
      label_width="0"
      layout="topleft"
-     left="265"
+     left="290"
      name="FlycamAxisDeadZone6"
      width="56" />
     <button
@@ -837,10 +837,10 @@
      height="22"
      label="SpaceNavigator Defaults"
      layout="topleft"
-     left="340"
+     left="359"
      name="SpaceNavigatorDefaults"
      top="429"
-     width="184" />
+     width="200" />
     <button
      follows="right|bottom"
      height="20"
@@ -850,7 +850,7 @@
      left_delta="0"
      name="ok_btn"
      top_pad="9"
-     width="90" />
+     width="98" />
     <button
      follows="right|bottom"
      height="20"
@@ -860,5 +860,5 @@
      left_pad="4"
      name="cancel_btn"
      top_delta="0"
-     width="90" />
+     width="98" />
 </floater>
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 9ee4e13f3c792364359026d1e7704cac75632c35..6c9564c8cf9585b8ae462dc168643f0c66199efc 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5165,7 +5165,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th
    type="offer">
 [NAME_SLURL] has offered to teleport you to their location:
 
-[MESSAGE]
+[MESSAGE], ([MATURITY])
     <form name="form">
       <button
        index="0"
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index 7ec1ca2e2e87f16f6a31aecd4720e6f327548a2b..96c76576c0cbf09271718a5dfa43441fbc5670b8 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -119,7 +119,7 @@
 	     commit_on_focus_lost="false"
 	     follows="right|top"
 	     halign="right"
-	     height="22"
+	     height="23"
 	     label="Search"
 	     layout="topleft"
 	     right="-10"
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index a43b244fa0970c6530f21fe2911f10c694865626..9725e9952aec620e2c1db2d1b5146675df04e621 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -321,6 +321,7 @@
              follows="all"
              height="223"
              layout="topleft"
+             single_expansion="true"
              left="0"
              name="advanced_info_accordion"
              top_pad="10"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index b0bf51c21485d322272cdfed9379a43a0baa9584..813f59ff8963523a083f7ef8940a6c137dfff1f2 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -148,6 +148,8 @@
 	<!-- Group name: text shown for LLUUID::null -->
 	<string name="GroupNameNone">(none)</string>
 
+	<string name="AvalineCaller">Avaline Caller [ORDER]</string>
+
 	<!-- Asset errors. Used in llassetstorage.cpp, translation from error code to error message. -->
 	<string name="AssetErrorNone">No error</string>
 	<string name="AssetErrorRequestFailed">Asset request: failed</string>
diff --git a/indra/newview/skins/default/xui/es/floater_joystick.xml b/indra/newview/skins/default/xui/es/floater_joystick.xml
index dbd2e4f04eda1c3c461d1b6a69cb2a32669013d6..2c1804bd90eef57c6f926dd6865eac052a6e26a2 100644
--- a/indra/newview/skins/default/xui/es/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/es/floater_joystick.xml
@@ -16,7 +16,7 @@
 		Modos de control:
 	</text>
 	<check_box label="Avatar" name="JoystickAvatarEnabled"/>
-	<check_box label="Construir" left="192" name="JoystickBuildEnabled"/>
+	<check_box label="Construir" name="JoystickBuildEnabled"/>
 	<check_box label="Flycam" name="JoystickFlycamEnabled"/>
 	<text name="XScale">
 		Escala: X
@@ -27,7 +27,7 @@
 	<text name="ZScale">
 		Escala: Z
 	</text>
-	<text left="3" name="PitchScale" width="115">
+	<text name="PitchScale">
 		Escala: arriba/abajo
 	</text>
 	<text name="YawScale">
@@ -45,10 +45,10 @@
 	<text name="ZDeadZone">
 		Zona muerta Z
 	</text>
-	<text left="3" name="PitchDeadZone" width="115">
+	<text name="PitchDeadZone">
 		Zona muerta arri./aba.
 	</text>
-	<text left="3" name="YawDeadZone" width="115">
+	<text name="YawDeadZone">
 		Zona muerta izq./der.
 	</text>
 	<text name="RollDeadZone">
@@ -63,7 +63,7 @@
 	<text name="ZoomDeadZone">
 		Zona muerta zoom
 	</text>
-	<button font="SansSerifSmall" label="Por defecto del SpaceNavigator" left="330" name="SpaceNavigatorDefaults" width="210"/>
+	<button font="SansSerifSmall" label="Por defecto del SpaceNavigator" name="SpaceNavigatorDefaults"/>
 	<button label="OK" label_selected="OK" left="330" name="ok_btn"/>
 	<button label="Cancelar" label_selected="Cancelar" left_delta="120" name="cancel_btn"/>
 	<stat_view label="Monitor del joystick" name="axis_view">
diff --git a/indra/newview/skins/default/xui/fr/floater_joystick.xml b/indra/newview/skins/default/xui/fr/floater_joystick.xml
index e00f9564e8e2cef022aa0197cf1ee3e223f0e17b..02ac21bf827fe59738e53566e36b0e09d9164919 100644
--- a/indra/newview/skins/default/xui/fr/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/fr/floater_joystick.xml
@@ -26,7 +26,7 @@
 	<text name="ZScale">
 		Échelle des Z
 	</text>
-	<text left="9" name="PitchScale" width="104">
+	<text name="PitchScale">
 		Échelle du tangage
 	</text>
 	<text name="YawScale">
@@ -44,13 +44,13 @@
 	<text name="ZDeadZone">
 		Zone neutre Z
 	</text>
-	<text left="4" name="PitchDeadZone" width="116">
+	<text name="PitchDeadZone">
 		Zone neutre tangage
 	</text>
-	<text name="YawDeadZone" left="10" width="104">
+	<text name="YawDeadZone">
 		Zone neutre lacet
 	</text>
-	<text name="RollDeadZone" left="10" width="104">
+	<text name="RollDeadZone">
 		Zone neutre roulis
 	</text>
 	<text name="Feathering">
@@ -59,7 +59,7 @@
 	<text name="ZoomScale2">
 		Échelle du zoom
 	</text>
-	<text left="6" name="ZoomDeadZone" width="120">
+	<text name="ZoomDeadZone">
 		Zone neutre du zoom
 	</text>
 	<button label="Options par défaut du joystick" name="SpaceNavigatorDefaults"/>
diff --git a/indra/newview/skins/default/xui/it/floater_joystick.xml b/indra/newview/skins/default/xui/it/floater_joystick.xml
index 3eff0cfcebe7bec2dc5e05812f1bed8a8c413d3d..3d60ded7ab35eb2fb2274a4bd9cdbaf8f73a2ca8 100644
--- a/indra/newview/skins/default/xui/it/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/it/floater_joystick.xml
@@ -16,7 +16,7 @@
 		Modalità di controllo:
 	</text>
 	<check_box label="Avatar" name="JoystickAvatarEnabled"/>
-	<check_box label="Costruire" left="192" name="JoystickBuildEnabled"/>
+	<check_box label="Costruire" name="JoystickBuildEnabled"/>
 	<check_box label="Camera dall&apos;alto" name="JoystickFlycamEnabled"/>
 	<text name="XScale">
 		Regolazione X
@@ -27,13 +27,13 @@
 	<text name="ZScale">
 		Regolazione Z
 	</text>
-	<text left="3" name="PitchScale" width="112">
+	<text name="PitchScale">
 		Regolazione: Pitch
 	</text>
-	<text left="3" name="YawScale" width="112">
+	<text name="YawScale">
 		Regolazione: Yaw
 	</text>
-	<text left="3" name="RollScale" width="112">
+	<text name="RollScale">
 		Regolazione: Roll
 	</text>
 	<text name="XDeadZone">
@@ -45,22 +45,22 @@
 	<text name="ZDeadZone">
 		Angolo morto Z
 	</text>
-	<text left="3" name="PitchDeadZone" width="112">
+	<text name="PitchDeadZone">
 		Angolo morto: Pitch
 	</text>
-	<text left="3" name="YawDeadZone" width="112">
+	<text name="YawDeadZone">
 		Angolo morto: Yaw
 	</text>
-	<text left="3" name="RollDeadZone" width="112">
+	<text name="RollDeadZone">
 		Angolo morto: Roll
 	</text>
 	<text name="Feathering">
 		Smussamento
 	</text>
-	<text left="6" name="ZoomScale2" width="135">
+	<text  name="ZoomScale2">
 		Regolazione dello zoom
 	</text>
-	<text left="6" name="ZoomDeadZone" width="135">
+	<text name="ZoomDeadZone" width="140">
 		Angolo morto dello zoom
 	</text>
 	<button label="SpaceNavigator Defaults" name="SpaceNavigatorDefaults"/>
diff --git a/indra/newview/skins/default/xui/nl/floater_joystick.xml b/indra/newview/skins/default/xui/nl/floater_joystick.xml
index 505e3cd719d56899bd04616913bc5934976a9571..1d590dc1f3a29ff3424c041bdb802057412a8e04 100644
--- a/indra/newview/skins/default/xui/nl/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/nl/floater_joystick.xml
@@ -45,7 +45,7 @@
 	<text name="ZDeadZone">
 		Z dode zone
 	</text>
-	<text name="PitchDeadZone" left="4" width="110">
+	<text name="PitchDeadZone">
 		Stampen dode zone
 	</text>
 	<text name="YawDeadZone">
diff --git a/indra/newview/skins/default/xui/pl/floater_joystick.xml b/indra/newview/skins/default/xui/pl/floater_joystick.xml
index 78742c39d1dc13667835f531574f6b6f602ad14c..2b1e362b9831afaef897ecd7f687b17ac319388e 100644
--- a/indra/newview/skins/default/xui/pl/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/pl/floater_joystick.xml
@@ -1,108 +1,108 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Joystick" title="KONFIGURACJA JOYSTICKA" width="590">
+<floater name="Joystick" title="KONFIGURACJA JOYSTICKA">
 	<check_box label="Aktywuj Joystick:" name="enable_joystick"/>
 	<text left="130" name="joystick_type" width="360"/>
 	<spinner label="Kalibracja Osi X" label_width="130" left="20" name="JoystickAxis1" width="170"/>
 	<spinner label="Kalibracja Osi Y" label_width="130" left="210" name="JoystickAxis2" width="170"/>
-	<spinner label="Kalibracja Osi Z" label_width="130" left="400" name="JoystickAxis0" width="170"/>
+	<spinner label="Kalibracja Osi Z" label_width="100" left="400" name="JoystickAxis0" width="140"/>
 	<spinner label="Kalibracja wznoszenia" label_width="130" left="20" name="JoystickAxis4" width="170"/>
 	<spinner label="Kalibracja wychylania" label_width="130" left="210" name="JoystickAxis5" width="170"/>
-	<spinner label="Kalibracja obrotu" label_width="130" left="400" name="JoystickAxis3" width="170"/>
+	<spinner label="Kalibracja obrotu" label_width="100" left="400" name="JoystickAxis3" width="140"/>
 	<spinner label="Kalibracja powiększania" label_width="130" name="JoystickAxis6" width="170"/>
 	<check_box label="Bezpośrednie" left="205" name="ZoomDirect"/>
 	<check_box label="Kursor 3D" left="340" name="Cursor3D"/>
 	<check_box label="Automatyczne" left="450" name="AutoLeveling"/>
-	<text left="22" name="Control Modes:">
+	<text name="Control Modes:">
 		Kontroluj:
 	</text>
-	<check_box label="Awatara" left="130" name="JoystickAvatarEnabled" width="90"/>
-	<check_box label="Budowanie" left="205" name="JoystickBuildEnabled" width="90"/>
-	<check_box label="KamerÄ™ podczas latania" left="282" name="JoystickFlycamEnabled" width="90"/>
-	<text name="XScale" width="104">
+	<check_box label="Awatara" name="JoystickAvatarEnabled" width="90"/>
+	<check_box label="Budowanie" name="JoystickBuildEnabled" width="90"/>
+	<check_box label="KamerÄ™ podczas latania" left="300" name="JoystickFlycamEnabled" width="90"/>
+	<text name="XScale">
 		Skala X
 	</text>
-	<spinner left="133" name="AvatarAxisScale1"/>
-	<spinner left="208" name="BuildAxisScale1"/>
-	<spinner left="283" name="FlycamAxisScale1"/>
-	<text name="YScale" width="104">
+	<spinner name="AvatarAxisScale1"/>
+	<spinner name="BuildAxisScale1"/>
+	<spinner left="300" name="FlycamAxisScale1"/>
+	<text name="YScale">
 		Skala Y
 	</text>
-	<spinner left="133" name="AvatarAxisScale2"/>
-	<spinner left="208" name="BuildAxisScale2"/>
-	<spinner left="283" name="FlycamAxisScale2"/>
-	<text name="ZScale" width="104">
+	<spinner name="AvatarAxisScale2"/>
+	<spinner name="BuildAxisScale2"/>
+	<spinner left="300" name="FlycamAxisScale2"/>
+	<text name="ZScale">
 		Skala Z
 	</text>
-	<spinner left="133" name="AvatarAxisScale0"/>
-	<spinner left="208" name="BuildAxisScale0"/>
-	<spinner left="283" name="FlycamAxisScale0"/>
-	<text name="PitchScale" width="104">
+	<spinner name="AvatarAxisScale0"/>
+	<spinner name="BuildAxisScale0"/>
+	<spinner left="300" name="FlycamAxisScale0"/>
+	<text name="PitchScale">
 		Skala wznoszenia
 	</text>
-	<spinner left="133" name="AvatarAxisScale4"/>
-	<spinner left="208" name="BuildAxisScale4"/>
-	<spinner left="283" name="FlycamAxisScale4"/>
-	<text name="YawScale" width="104">
+	<spinner name="AvatarAxisScale4"/>
+	<spinner name="BuildAxisScale4"/>
+	<spinner left="300" name="FlycamAxisScale4"/>
+	<text name="YawScale">
 		Skala odchylania
 	</text>
-	<spinner left="133" name="AvatarAxisScale5"/>
-	<spinner left="208" name="BuildAxisScale5"/>
-	<spinner left="283" name="FlycamAxisScale5"/>
-	<text name="RollScale" width="104">
+	<spinner name="AvatarAxisScale5"/>
+	<spinner name="BuildAxisScale5"/>
+	<spinner left="300" name="FlycamAxisScale5"/>
+	<text name="RollScale">
 		Skala obrotu
 	</text>
-	<spinner left="208" name="BuildAxisScale3"/>
-	<spinner left="283" name="FlycamAxisScale3"/>
-	<text name="XDeadZone" width="104">
+	<spinner name="BuildAxisScale3"/>
+	<spinner left="300" name="FlycamAxisScale3"/>
+	<text name="XDeadZone">
 		Tolerancja osi X
 	</text>
-	<spinner left="133" name="AvatarAxisDeadZone1"/>
-	<spinner left="208" name="BuildAxisDeadZone1"/>
-	<spinner left="283" name="FlycamAxisDeadZone1"/>
-	<text name="YDeadZone" width="104">
+	<spinner name="AvatarAxisDeadZone1"/>
+	<spinner name="BuildAxisDeadZone1"/>
+	<spinner left="300" name="FlycamAxisDeadZone1"/>
+	<text name="YDeadZone">
 		Tolerancja osi Y
 	</text>
-	<spinner left="133" name="AvatarAxisDeadZone2"/>
-	<spinner left="208" name="BuildAxisDeadZone2"/>
-	<spinner left="283" name="FlycamAxisDeadZone2"/>
-	<text name="ZDeadZone" width="104">
+	<spinner name="AvatarAxisDeadZone2"/>
+	<spinner name="BuildAxisDeadZone2"/>
+	<spinner left="300" name="FlycamAxisDeadZone2"/>
+	<text name="ZDeadZone">
 		Tolerancja osi Z
 	</text>
-	<spinner left="133" name="AvatarAxisDeadZone0"/>
-	<spinner left="208" name="BuildAxisDeadZone0"/>
-	<spinner left="283" name="FlycamAxisDeadZone0"/>
-	<text name="PitchDeadZone" width="104">
+	<spinner name="AvatarAxisDeadZone0"/>
+	<spinner name="BuildAxisDeadZone0"/>
+	<spinner left="300" name="FlycamAxisDeadZone0"/>
+	<text name="PitchDeadZone">
 		Tolerancja wznoszenia
 	</text>
-	<spinner left="133" name="AvatarAxisDeadZone4"/>
-	<spinner left="208" name="BuildAxisDeadZone4"/>
-	<spinner left="283" name="FlycamAxisDeadZone4"/>
-	<text name="YawDeadZone" width="104">
+	<spinner name="AvatarAxisDeadZone4"/>
+	<spinner name="BuildAxisDeadZone4"/>
+	<spinner left="300" name="FlycamAxisDeadZone4"/>
+	<text name="YawDeadZone">
 		Tolerancja odchylania
 	</text>
-	<spinner left="133" name="AvatarAxisDeadZone5"/>
-	<spinner left="208" name="BuildAxisDeadZone5"/>
-	<spinner left="283" name="FlycamAxisDeadZone5"/>
-	<text name="RollDeadZone" width="104">
+	<spinner name="AvatarAxisDeadZone5"/>
+	<spinner name="BuildAxisDeadZone5"/>
+	<spinner left="300" name="FlycamAxisDeadZone5"/>
+	<text name="RollDeadZone">
 		Tolerancja obrotu
 	</text>
-	<spinner left="208" name="BuildAxisDeadZone3"/>
-	<spinner left="283" name="FlycamAxisDeadZone3"/>
-	<text name="Feathering" width="104">
+	<spinner name="BuildAxisDeadZone3"/>
+	<spinner left="300" name="FlycamAxisDeadZone3"/>
+	<text name="Feathering">
 		Przenikanie
 	</text>
-	<slider label="" left="125" name="AvatarFeathering"/>
-	<slider label="" left="200" name="BuildFeathering"/>
-	<slider label="" left="275" name="FlycamFeathering"/>
-	<text name="ZoomScale2" width="104">
+	<slider label="" name="AvatarFeathering"/>
+	<slider label="" name="BuildFeathering"/>
+	<slider label="" left_delta="81" name="FlycamFeathering"/>
+	<text name="ZoomScale2">
 		Skala powiększania
 	</text>
-	<spinner label="" left="283" name="FlycamAxisScale6"/>
-	<text name="ZoomDeadZone" width="104">
+	<spinner label="" left="300" name="FlycamAxisScale6"/>
+	<text name="ZoomDeadZone">
 		Tolerancja powiększania
 	</text>
-	<spinner label="" left="283" name="FlycamAxisDeadZone6"/>
-	<button label="Ustawienia domyślne" left="366" name="SpaceNavigatorDefaults"/>
+	<spinner label="" left="300" name="FlycamAxisDeadZone6"/>
+	<button label="Ustawienia domyślne" name="SpaceNavigatorDefaults"/>
 	<button label="OK" label_selected="OK" left="366" name="ok_btn"/>
 	<button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/>
 	<stat_view label="Monitor Joysticka" name="axis_view">
diff --git a/indra/newview/skins/default/xui/pt/floater_joystick.xml b/indra/newview/skins/default/xui/pt/floater_joystick.xml
index ecc4fcc9e9690cac58a04d5183466f008ef20b9a..98d8c0e3191657877a0d7fd6f0a0ab7f909ea1db 100644
--- a/indra/newview/skins/default/xui/pt/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/pt/floater_joystick.xml
@@ -16,7 +16,7 @@
 		Modos de Controle:
 	</text>
 	<check_box label="Avatar" name="JoystickAvatarEnabled"/>
-	<check_box label="Construir" left="192" name="JoystickBuildEnabled"/>
+	<check_box label="Construir" name="JoystickBuildEnabled"/>
 	<check_box label="Camera aérea" name="JoystickFlycamEnabled"/>
 	<text name="XScale">
 		Escala X
@@ -27,13 +27,13 @@
 	<text name="ZScale">
 		Escala Z
 	</text>
-	<text left="3" name="PitchScale" width="115">
+	<text name="PitchScale">
 		Escala de Elevação
 	</text>
-	<text left="3" name="YawScale" width="115">
+	<text name="YawScale">
 		Escala da Guinada
 	</text>
-	<text left="3" name="RollScale" width="115">
+	<text name="RollScale">
 		Escala de Rolagem
 	</text>
 	<text name="XDeadZone">
@@ -45,13 +45,13 @@
 	<text name="ZDeadZone">
 		Zona Morta Z
 	</text>
-	<text left="3" name="PitchDeadZone" width="115">
+	<text name="PitchDeadZone">
 		Zona Morta: Elevação
 	</text>
-	<text left="3" name="YawDeadZone" width="115">
+	<text name="YawDeadZone">
 		Zona Morta: Guinada
 	</text>
-	<text left="3" name="RollDeadZone" width="115">
+	<text name="RollDeadZone">
 		Zona Morta: Rolagem
 	</text>
 	<text name="Feathering">
@@ -60,7 +60,7 @@
 	<text name="ZoomScale2">
 		Escala de Zoom
 	</text>
-	<text left="4" name="ZoomDeadZone" width="110">
+	<text name="ZoomDeadZone">
 		Zona Morta de Zoom
 	</text>
 	<button font="SansSerifSmall" label="Padrões do SpaceNavigator" name="SpaceNavigatorDefaults"/>