Quantcast

Dealing with libs

Darthpred [08-21-15 - 10:44]
Dealing with libs
Filename
ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.lua
ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.xml
ElvUI_SLE/libs/AceConfig-3.0/AceConfig-3.0.lua
ElvUI_SLE/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua
ElvUI_SLE/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua
ElvUI_SLE/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua
ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.lua
ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.xml
ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.lua
ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.xml
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r48-release.txt
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r52-release.txt
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/AceGUI-3.0.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua
ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua
ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
ElvUI_SLE/modules/loot.lua
ElvUI_SLE/modules/screensaver.lua
ElvUI_SLE/modules/sledatatexts/friends.lua
ElvUI_SLE/modules/sledatatexts/guild.lua
ElvUI_SLE/modules/sledatatexts/version.lua
ElvUI_SLE/modules/uibuttons.lua
ElvUI_SLE/modules/vehicle.lua
ElvUI_SLE/options/core_c.lua
ElvUI_SLE/options/errorframe_c.lua
diff --git a/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.lua b/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.lua
deleted file mode 100644
index a7f7279..0000000
--- a/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.lua
+++ /dev/null
@@ -1,674 +0,0 @@
---- **AceAddon-3.0** provides a template for creating addon objects.
--- It'll provide you with a set of callback functions that allow you to simplify the loading
--- process of your addon.\\
--- Callbacks provided are:\\
--- * **OnInitialize**, which is called directly after the addon is fully loaded.
--- * **OnEnable** which gets called during the PLAYER_LOGIN event, when most of the data provided by the game is already present.
--- * **OnDisable**, which is only called when your addon is manually being disabled.
--- @usage
--- -- A small (but complete) addon, that doesn't do anything,
--- -- but shows usage of the callbacks.
--- local MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon")
---
--- function MyAddon:OnInitialize()
---   -- do init tasks here, like loading the Saved Variables,
---   -- or setting up slash commands.
--- end
---
--- function MyAddon:OnEnable()
---   -- Do more initialization here, that really enables the use of your addon.
---   -- Register Events, Hook functions, Create Frames, Get information from
---   -- the game that wasn't available in OnInitialize
--- end
---
--- function MyAddon:OnDisable()
---   -- Unhook, Unregister Events, Hide frames that you created.
---   -- You would probably only use an OnDisable if you want to
---   -- build a "standby" mode, or be able to toggle modules on/off.
--- end
--- @class file
--- @name AceAddon-3.0.lua
--- @release $Id: AceAddon-3.0.lua 1084 2013-04-27 20:14:11Z nevcairiel $
-
-local MAJOR, MINOR = "AceAddon-3.0", 12
-local AceAddon, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
-
-if not AceAddon then return end -- No Upgrade needed.
-
-AceAddon.frame = AceAddon.frame or CreateFrame("Frame", "AceAddon30Frame") -- Our very own frame
-AceAddon.addons = AceAddon.addons or {} -- addons in general
-AceAddon.statuses = AceAddon.statuses or {} -- statuses of addon.
-AceAddon.initializequeue = AceAddon.initializequeue or {} -- addons that are new and not initialized
-AceAddon.enablequeue = AceAddon.enablequeue or {} -- addons that are initialized and waiting to be enabled
-AceAddon.embeds = AceAddon.embeds or setmetatable({}, {__index = function(tbl, key) tbl[key] = {} return tbl[key] end }) -- contains a list of libraries embedded in an addon
-
--- Lua APIs
-local tinsert, tconcat, tremove = table.insert, table.concat, table.remove
-local fmt, tostring = string.format, tostring
-local select, pairs, next, type, unpack = select, pairs, next, type, unpack
-local loadstring, assert, error = loadstring, assert, error
-local setmetatable, getmetatable, rawset, rawget = setmetatable, getmetatable, rawset, rawget
-
--- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
--- List them here for Mikk's FindGlobals script
--- GLOBALS: LibStub, IsLoggedIn, geterrorhandler
-
---[[
-	 xpcall safecall implementation
-]]
-local xpcall = xpcall
-
-local function errorhandler(err)
-	return geterrorhandler()(err)
-end
-
-local function CreateDispatcher(argCount)
-	local code = [[
-		local xpcall, eh = ...
-		local method, ARGS
-		local function call() return method(ARGS) end
-
-		local function dispatch(func, ...)
-			 method = func
-			 if not method then return end
-			 ARGS = ...
-			 return xpcall(call, eh)
-		end
-
-		return dispatch
-	]]
-
-	local ARGS = {}
-	for i = 1, argCount do ARGS[i] = "arg"..i end
-	code = code:gsub("ARGS", tconcat(ARGS, ", "))
-	return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(xpcall, errorhandler)
-end
-
-local Dispatchers = setmetatable({}, {__index=function(self, argCount)
-	local dispatcher = CreateDispatcher(argCount)
-	rawset(self, argCount, dispatcher)
-	return dispatcher
-end})
-Dispatchers[0] = function(func)
-	return xpcall(func, errorhandler)
-end
-
-local function safecall(func, ...)
-	-- we check to see if the func is passed is actually a function here and don't error when it isn't
-	-- this safecall is used for optional functions like OnInitialize OnEnable etc. When they are not
-	-- present execution should continue without hinderance
-	if type(func) == "function" then
-		return Dispatchers[select('#', ...)](func, ...)
-	end
-end
-
--- local functions that will be implemented further down
-local Enable, Disable, EnableModule, DisableModule, Embed, NewModule, GetModule, GetName, SetDefaultModuleState, SetDefaultModuleLibraries, SetEnabledState, SetDefaultModulePrototype
-
--- used in the addon metatable
-local function addontostring( self ) return self.name end
-
--- Check if the addon is queued for initialization
-local function queuedForInitialization(addon)
-	for i = 1, #AceAddon.initializequeue do
-		if AceAddon.initializequeue[i] == addon then
-			return true
-		end
-	end
-	return false
-end
-
---- Create a new AceAddon-3.0 addon.
--- Any libraries you specified will be embeded, and the addon will be scheduled for
--- its OnInitialize and OnEnable callbacks.
--- The final addon object, with all libraries embeded, will be returned.
--- @paramsig [object ,]name[, lib, ...]
--- @param object Table to use as a base for the addon (optional)
--- @param name Name of the addon object to create
--- @param lib List of libraries to embed into the addon
--- @usage
--- -- Create a simple addon object
--- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon", "AceEvent-3.0")
---
--- -- Create a Addon object based on the table of a frame
--- local MyFrame = CreateFrame("Frame")
--- MyAddon = LibStub("AceAddon-3.0"):NewAddon(MyFrame, "MyAddon", "AceEvent-3.0")
-function AceAddon:NewAddon(objectorname, ...)
-	local object,name
-	local i=1
-	if type(objectorname)=="table" then
-		object=objectorname
-		name=...
-		i=2
-	else
-		name=objectorname
-	end
-	if type(name)~="string" then
-		error(("Usage: NewAddon([object,] name, [lib, lib, lib, ...]): 'name' - string expected got '%s'."):format(type(name)), 2)
-	end
-	if self.addons[name] then
-		error(("Usage: NewAddon([object,] name, [lib, lib, lib, ...]): 'name' - Addon '%s' already exists."):format(name), 2)
-	end
-
-	object = object or {}
-	object.name = name
-
-	local addonmeta = {}
-	local oldmeta = getmetatable(object)
-	if oldmeta then
-		for k, v in pairs(oldmeta) do addonmeta[k] = v end
-	end
-	addonmeta.__tostring = addontostring
-
-	setmetatable( object, addonmeta )
-	self.addons[name] = object
-	object.modules = {}
-	object.orderedModules = {}
-	object.defaultModuleLibraries = {}
-	Embed( object ) -- embed NewModule, GetModule methods
-	self:EmbedLibraries(object, select(i,...))
-
-	-- add to queue of addons to be initialized upon ADDON_LOADED
-	tinsert(self.initializequeue, object)
-	return object
-end
-
-
---- Get the addon object by its name from the internal AceAddon registry.
--- Throws an error if the addon object cannot be found (except if silent is set).
--- @param name unique name of the addon object
--- @param silent if true, the addon is optional, silently return nil if its not found
--- @usage
--- -- Get the Addon
--- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon")
-function AceAddon:GetAddon(name, silent)
-	if not silent and not self.addons[name] then
-		error(("Usage: GetAddon(name): 'name' - Cannot find an AceAddon '%s'."):format(tostring(name)), 2)
-	end
-	return self.addons[name]
-end
-
--- - Embed a list of libraries into the specified addon.
--- This function will try to embed all of the listed libraries into the addon
--- and error if a single one fails.
---
--- **Note:** This function is for internal use by :NewAddon/:NewModule
--- @paramsig addon, [lib, ...]
--- @param addon addon object to embed the libs in
--- @param lib List of libraries to embed into the addon
-function AceAddon:EmbedLibraries(addon, ...)
-	for i=1,select("#", ... ) do
-		local libname = select(i, ...)
-		self:EmbedLibrary(addon, libname, false, 4)
-	end
-end
-
--- - Embed a library into the addon object.
--- This function will check if the specified library is registered with LibStub
--- and if it has a :Embed function to call. It'll error if any of those conditions
--- fails.
---
--- **Note:** This function is for internal use by :EmbedLibraries
--- @paramsig addon, libname[, silent[, offset]]
--- @param addon addon object to embed the library in
--- @param libname name of the library to embed
--- @param silent marks an embed to fail silently if the library doesn't exist (optional)
--- @param offset will push the error messages back to said offset, defaults to 2 (optional)
-function AceAddon:EmbedLibrary(addon, libname, silent, offset)
-	local lib = LibStub:GetLibrary(libname, true)
-	if not lib and not silent then
-		error(("Usage: EmbedLibrary(addon, libname, silent, offset): 'libname' - Cannot find a library instance of %q."):format(tostring(libname)), offset or 2)
-	elseif lib and type(lib.Embed) == "function" then
-		lib:Embed(addon)
-		tinsert(self.embeds[addon], libname)
-		return true
-	elseif lib then
-		error(("Usage: EmbedLibrary(addon, libname, silent, offset): 'libname' - Library '%s' is not Embed capable"):format(libname), offset or 2)
-	end
-end
-
---- Return the specified module from an addon object.
--- Throws an error if the addon object cannot be found (except if silent is set)
--- @name //addon//:GetModule
--- @paramsig name[, silent]
--- @param name unique name of the module
--- @param silent if true, the module is optional, silently return nil if its not found (optional)
--- @usage
--- -- Get the Addon
--- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon")
--- -- Get the Module
--- MyModule = MyAddon:GetModule("MyModule")
-function GetModule(self, name, silent)
-	if not self.modules[name] and not silent then
-		error(("Usage: GetModule(name, silent): 'name' - Cannot find module '%s'."):format(tostring(name)), 2)
-	end
-	return self.modules[name]
-end
-
-local function IsModuleTrue(self) return true end
-
---- Create a new module for the addon.
--- The new module can have its own embeded libraries and/or use a module prototype to be mixed into the module.\\
--- A module has the same functionality as a real addon, it can have modules of its own, and has the same API as
--- an addon object.
--- @name //addon//:NewModule
--- @paramsig name[, prototype|lib[, lib, ...]]
--- @param name unique name of the module
--- @param prototype object to derive this module from, methods and values from this table will be mixed into the module (optional)
--- @param lib List of libraries to embed into the addon
--- @usage
--- -- Create a module with some embeded libraries
--- MyModule = MyAddon:NewModule("MyModule", "AceEvent-3.0", "AceHook-3.0")
---
--- -- Create a module with a prototype
--- local prototype = { OnEnable = function(self) print("OnEnable called!") end }
--- MyModule = MyAddon:NewModule("MyModule", prototype, "AceEvent-3.0", "AceHook-3.0")
-function NewModule(self, name, prototype, ...)
-	if type(name) ~= "string" then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'name' - string expected got '%s'."):format(type(name)), 2) end
-	if type(prototype) ~= "string" and type(prototype) ~= "table" and type(prototype) ~= "nil" then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'prototype' - table (prototype), string (lib) or nil expected got '%s'."):format(type(prototype)), 2) end
-
-	if self.modules[name] then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'name' - Module '%s' already exists."):format(name), 2) end
-
-	-- modules are basically addons. We treat them as such. They will be added to the initializequeue properly as well.
-	-- NewModule can only be called after the parent addon is present thus the modules will be initialized after their parent is.
-	local module = AceAddon:NewAddon(fmt("%s_%s", self.name or tostring(self), name))
-
-	module.IsModule = IsModuleTrue
-	module:SetEnabledState(self.defaultModuleState)
-	module.moduleName = name
-
-	if type(prototype) == "string" then
-		AceAddon:EmbedLibraries(module, prototype, ...)
-	else
-		AceAddon:EmbedLibraries(module, ...)
-	end
-	AceAddon:EmbedLibraries(module, unpack(self.defaultModuleLibraries))
-
-	if not prototype or type(prototype) == "string" then
-		prototype = self.defaultModulePrototype or nil
-	end
-
-	if type(prototype) == "table" then
-		local mt = getmetatable(module)
-		mt.__index = prototype
-		setmetatable(module, mt)  -- More of a Base class type feel.
-	end
-
-	safecall(self.OnModuleCreated, self, module) -- Was in Ace2 and I think it could be a cool thing to have handy.
-	self.modules[name] = module
-	tinsert(self.orderedModules, module)
-
-	return module
-end
-
---- Returns the real name of the addon or module, without any prefix.
--- @name //addon//:GetName
--- @paramsig
--- @usage
--- print(MyAddon:GetName())
--- -- prints "MyAddon"
-function GetName(self)
-	return self.moduleName or self.name
-end
-
---- Enables the Addon, if possible, return true or false depending on success.
--- This internally calls AceAddon:EnableAddon(), thus dispatching a OnEnable callback
--- and enabling all modules of the addon (unless explicitly disabled).\\
--- :Enable() also sets the internal `enableState` variable to true
--- @name //addon//:Enable
--- @paramsig
--- @usage
--- -- Enable MyModule
--- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon")
--- MyModule = MyAddon:GetModule("MyModule")
--- MyModule:Enable()
-function Enable(self)
-	self:SetEnabledState(true)
-
-	-- nevcairiel 2013-04-27: don't enable an addon/module if its queued for init still
-	-- it'll be enabled after the init process
-	if not queuedForInitialization(self) then
-		return AceAddon:EnableAddon(self)
-	end
-end
-
---- Disables the Addon, if possible, return true or false depending on success.
--- This internally calls AceAddon:DisableAddon(), thus dispatching a OnDisable callback
--- and disabling all modules of the addon.\\
--- :Disable() also sets the internal `enableState` variable to false
--- @name //addon//:Disable
--- @paramsig
--- @usage
--- -- Disable MyAddon
--- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon")
--- MyAddon:Disable()
-function Disable(self)
-	self:SetEnabledState(false)
-	return AceAddon:DisableAddon(self)
-end
-
---- Enables the Module, if possible, return true or false depending on success.
--- Short-hand function that retrieves the module via `:GetModule` and calls `:Enable` on the module object.
--- @name //addon//:EnableModule
--- @paramsig name
--- @usage
--- -- Enable MyModule using :GetModule
--- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon")
--- MyModule = MyAddon:GetModule("MyModule")
--- MyModule:Enable()
---
--- -- Enable MyModule using the short-hand
--- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon")
--- MyAddon:EnableModule("MyModule")
-function EnableModule(self, name)
-	local module = self:GetModule( name )
-	return module:Enable()
-end
-
---- Disables the Module, if possible, return true or false depending on success.
--- Short-hand function that retrieves the module via `:GetModule` and calls `:Disable` on the module object.
--- @name //addon//:DisableModule
--- @paramsig name
--- @usage
--- -- Disable MyModule using :GetModule
--- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon")
--- MyModule = MyAddon:GetModule("MyModule")
--- MyModule:Disable()
---
--- -- Disable MyModule using the short-hand
--- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon")
--- MyAddon:DisableModule("MyModule")
-function DisableModule(self, name)
-	local module = self:GetModule( name )
-	return module:Disable()
-end
-
---- Set the default libraries to be mixed into all modules created by this object.
--- Note that you can only change the default module libraries before any module is created.
--- @name //addon//:SetDefaultModuleLibraries
--- @paramsig lib[, lib, ...]
--- @param lib List of libraries to embed into the addon
--- @usage
--- -- Create the addon object
--- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon")
--- -- Configure default libraries for modules (all modules need AceEvent-3.0)
--- MyAddon:SetDefaultModuleLibraries("AceEvent-3.0")
--- -- Create a module
--- MyModule = MyAddon:NewModule("MyModule")
-function SetDefaultModuleLibraries(self, ...)
-	if next(self.modules) then
-		error("Usage: SetDefaultModuleLibraries(...): cannot change the module defaults after a module has been registered.", 2)
-	end
-	self.defaultModuleLibraries = {...}
-end
-
---- Set the default state in which new modules are being created.
--- Note that you can only change the default state before any module is created.
--- @name //addon//:SetDefaultModuleState
--- @paramsig state
--- @param state Default state for new modules, true for enabled, false for disabled
--- @usage
--- -- Create the addon object
--- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon")
--- -- Set the default state to "disabled"
--- MyAddon:SetDefaultModuleState(false)
--- -- Create a module and explicilty enable it
--- MyModule = MyAddon:NewModule("MyModule")
--- MyModule:Enable()
-function SetDefaultModuleState(self, state)
-	if next(self.modules) then
-		error("Usage: SetDefaultModuleState(state): cannot change the module defaults after a module has been registered.", 2)
-	end
-	self.defaultModuleState = state
-end
-
---- Set the default prototype to use for new modules on creation.
--- Note that you can only change the default prototype before any module is created.
--- @name //addon//:SetDefaultModulePrototype
--- @paramsig prototype
--- @param prototype Default prototype for the new modules (table)
--- @usage
--- -- Define a prototype
--- local prototype = { OnEnable = function(self) print("OnEnable called!") end }
--- -- Set the default prototype
--- MyAddon:SetDefaultModulePrototype(prototype)
--- -- Create a module and explicitly Enable it
--- MyModule = MyAddon:NewModule("MyModule")
--- MyModule:Enable()
--- -- should print "OnEnable called!" now
--- @see NewModule
-function SetDefaultModulePrototype(self, prototype)
-	if next(self.modules) then
-		error("Usage: SetDefaultModulePrototype(prototype): cannot change the module defaults after a module has been registered.", 2)
-	end
-	if type(prototype) ~= "table" then
-		error(("Usage: SetDefaultModulePrototype(prototype): 'prototype' - table expected got '%s'."):format(type(prototype)), 2)
-	end
-	self.defaultModulePrototype = prototype
-end
-
---- Set the state of an addon or module
--- This should only be called before any enabling actually happend, e.g. in/before OnInitialize.
--- @name //addon//:SetEnabledState
--- @paramsig state
--- @param state the state of an addon or module  (enabled=true, disabled=false)
-function SetEnabledState(self, state)
-	self.enabledState = state
-end
-
-
---- Return an iterator of all modules associated to the addon.
--- @name //addon//:IterateModules
--- @paramsig
--- @usage
--- -- Enable all modules
--- for name, module in MyAddon:IterateModules() do
---    module:Enable()
--- end
-local function IterateModules(self) return pairs(self.modules) end
-
--- Returns an iterator of all embeds in the addon
--- @name //addon//:IterateEmbeds
--- @paramsig
-local function IterateEmbeds(self) return pairs(AceAddon.embeds[self]) end
-
---- Query the enabledState of an addon.
--- @name //addon//:IsEnabled
--- @paramsig
--- @usage
--- if MyAddon:IsEnabled() then
---     MyAddon:Disable()
--- end
-local function IsEnabled(self) return self.enabledState end
-local mixins = {
-	NewModule = NewModule,
-	GetModule = GetModule,
-	Enable = Enable,
-	Disable = Disable,
-	EnableModule = EnableModule,
-	DisableModule = DisableModule,
-	IsEnabled = IsEnabled,
-	SetDefaultModuleLibraries = SetDefaultModuleLibraries,
-	SetDefaultModuleState = SetDefaultModuleState,
-	SetDefaultModulePrototype = SetDefaultModulePrototype,
-	SetEnabledState = SetEnabledState,
-	IterateModules = IterateModules,
-	IterateEmbeds = IterateEmbeds,
-	GetName = GetName,
-}
-local function IsModule(self) return false end
-local pmixins = {
-	defaultModuleState = true,
-	enabledState = true,
-	IsModule = IsModule,
-}
--- Embed( target )
--- target (object) - target object to embed aceaddon in
---
--- this is a local function specifically since it's meant to be only called internally
-function Embed(target, skipPMixins)
-	for k, v in pairs(mixins) do
-		target[k] = v
-	end
-	if not skipPMixins then
-		for k, v in pairs(pmixins) do
-			target[k] = target[k] or v
-		end
-	end
-end
-
-
--- - Initialize the addon after creation.
--- This function is only used internally during the ADDON_LOADED event
--- It will call the **OnInitialize** function on the addon object (if present),
--- and the **OnEmbedInitialize** function on all embeded libraries.
---
--- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing.
--- @param addon addon object to intialize
-function AceAddon:InitializeAddon(addon)
-	safecall(addon.OnInitialize, addon)
-
-	local embeds = self.embeds[addon]
-	for i = 1, #embeds do
-		local lib = LibStub:GetLibrary(embeds[i], true)
-		if lib then safecall(lib.OnEmbedInitialize, lib, addon) end
-	end
-
-	-- we don't call InitializeAddon on modules specifically, this is handled
-	-- from the event handler and only done _once_
-end
-
--- - Enable the addon after creation.
--- Note: This function is only used internally during the PLAYER_LOGIN event, or during ADDON_LOADED,
--- if IsLoggedIn() already returns true at that point, e.g. for LoD Addons.
--- It will call the **OnEnable** function on the addon object (if present),
--- and the **OnEmbedEnable** function on all embeded libraries.\\
--- This function does not toggle the enable state of the addon itself, and will return early if the addon is disabled.
---
--- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing.
--- Use :Enable on the addon itself instead.
--- @param addon addon object to enable
-function AceAddon:EnableAddon(addon)
-	if type(addon) == "string" then addon = AceAddon:GetAddon(addon) end
-	if self.statuses[addon.name] or not addon.enabledState then return false end
-
-	-- set the statuses first, before calling the OnEnable. this allows for Disabling of the addon in OnEnable.
-	self.statuses[addon.name] = true
-
-	safecall(addon.OnEnable, addon)
-
-	-- make sure we're still enabled before continueing
-	if self.statuses[addon.name] then
-		local embeds = self.embeds[addon]
-		for i = 1, #embeds do
-			local lib = LibStub:GetLibrary(embeds[i], true)
-			if lib then safecall(lib.OnEmbedEnable, lib, addon) end
-		end
-
-		-- enable possible modules.
-		local modules = addon.orderedModules
-		for i = 1, #modules do
-			self:EnableAddon(modules[i])
-		end
-	end
-	return self.statuses[addon.name] -- return true if we're disabled
-end
-
--- - Disable the addon
--- Note: This function is only used internally.
--- It will call the **OnDisable** function on the addon object (if present),
--- and the **OnEmbedDisable** function on all embeded libraries.\\
--- This function does not toggle the enable state of the addon itself, and will return early if the addon is still enabled.
---
--- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing.
--- Use :Disable on the addon itself instead.
--- @param addon addon object to enable
-function AceAddon:DisableAddon(addon)
-	if type(addon) == "string" then addon = AceAddon:GetAddon(addon) end
-	if not self.statuses[addon.name] then return false end
-
-	-- set statuses first before calling OnDisable, this allows for aborting the disable in OnDisable.
-	self.statuses[addon.name] = false
-
-	safecall( addon.OnDisable, addon )
-
-	-- make sure we're still disabling...
-	if not self.statuses[addon.name] then
-		local embeds = self.embeds[addon]
-		for i = 1, #embeds do
-			local lib = LibStub:GetLibrary(embeds[i], true)
-			if lib then safecall(lib.OnEmbedDisable, lib, addon) end
-		end
-		-- disable possible modules.
-		local modules = addon.orderedModules
-		for i = 1, #modules do
-			self:DisableAddon(modules[i])
-		end
-	end
-
-	return not self.statuses[addon.name] -- return true if we're disabled
-end
-
---- Get an iterator over all registered addons.
--- @usage
--- -- Print a list of all installed AceAddon's
--- for name, addon in AceAddon:IterateAddons() do
---   print("Addon: " .. name)
--- end
-function AceAddon:IterateAddons() return pairs(self.addons) end
-
---- Get an iterator over the internal status registry.
--- @usage
--- -- Print a list of all enabled addons
--- for name, status in AceAddon:IterateAddonStatus() do
---   if status then
---     print("EnabledAddon: " .. name)
---   end
--- end
-function AceAddon:IterateAddonStatus() return pairs(self.statuses) end
-
--- Following Iterators are deprecated, and their addon specific versions should be used
--- e.g. addon:IterateEmbeds() instead of :IterateEmbedsOnAddon(addon)
-function AceAddon:IterateEmbedsOnAddon(addon) return pairs(self.embeds[addon]) end
-function AceAddon:IterateModulesOfAddon(addon) return pairs(addon.modules) end
-
--- Event Handling
-local function onEvent(this, event, arg1)
-	-- 2011-08-17 nevcairiel - ignore the load event of Blizzard_DebugTools, so a potential startup error isn't swallowed up
-	if (event == "ADDON_LOADED"  and arg1 ~= "Blizzard_DebugTools") or event == "PLAYER_LOGIN" then
-		-- if a addon loads another addon, recursion could happen here, so we need to validate the table on every iteration
-		while(#AceAddon.initializequeue > 0) do
-			local addon = tremove(AceAddon.initializequeue, 1)
-			-- this might be an issue with recursion - TODO: validate
-			if event == "ADDON_LOADED" then addon.baseName = arg1 end
-			AceAddon:InitializeAddon(addon)
-			tinsert(AceAddon.enablequeue, addon)
-		end
-
-		if IsLoggedIn() then
-			while(#AceAddon.enablequeue > 0) do
-				local addon = tremove(AceAddon.enablequeue, 1)
-				AceAddon:EnableAddon(addon)
-			end
-		end
-	end
-end
-
-AceAddon.frame:RegisterEvent("ADDON_LOADED")
-AceAddon.frame:RegisterEvent("PLAYER_LOGIN")
-AceAddon.frame:SetScript("OnEvent", onEvent)
-
--- upgrade embeded
-for name, addon in pairs(AceAddon.addons) do
-	Embed(addon, true)
-end
-
--- 2010-10-27 nevcairiel - add new "orderedModules" table
-if oldminor and oldminor < 10 then
-	for name, addon in pairs(AceAddon.addons) do
-		addon.orderedModules = {}
-		for module_name, module in pairs(addon.modules) do
-			tinsert(addon.orderedModules, module)
-		end
-	end
-end
diff --git a/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.xml b/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.xml
deleted file mode 100644
index e6ad639..0000000
--- a/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
-..\FrameXML\UI.xsd">
-	<Script file="AceAddon-3.0.lua"/>
-</Ui>
\ No newline at end of file
diff --git a/ElvUI_SLE/libs/AceConfig-3.0/AceConfig-3.0.lua b/ElvUI_SLE/libs/AceConfig-3.0/AceConfig-3.0.lua
index 3bedf8c..f581e95 100644
--- a/ElvUI_SLE/libs/AceConfig-3.0/AceConfig-3.0.lua
+++ b/ElvUI_SLE/libs/AceConfig-3.0/AceConfig-3.0.lua
@@ -12,13 +12,13 @@ Very light wrapper library that combines all the AceConfig subcomponents into on

 ]]

-local MAJOR, MINOR = "AceConfig-3.0", 2
+local MAJOR, MINOR = "AceConfig-3.0-ElvUI", 1
 local AceConfig = LibStub:NewLibrary(MAJOR, MINOR)

 if not AceConfig then return end

-local cfgreg = LibStub("AceConfigRegistry-3.0")
-local cfgcmd = LibStub("AceConfigCmd-3.0")
+local cfgreg = LibStub("AceConfigRegistry-3.0-ElvUI")
+local cfgcmd = LibStub("AceConfigCmd-3.0-ElvUI")
 --TODO: local cfgdlg = LibStub("AceConfigDialog-3.0", true)
 --TODO: local cfgdrp = LibStub("AceConfigDropdown-3.0", true)

diff --git a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua
index 2023981..8e1f93f 100644
--- a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua
+++ b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua
@@ -15,7 +15,7 @@ REQUIRES: AceConsole-3.0 for command registration (loaded on demand)
 -- TODO: plugin args


-local MAJOR, MINOR = "AceConfigCmd-3.0", 13
+local MAJOR, MINOR = "AceConfigCmd-3.0-ElvUI", 1
 local AceConfigCmd = LibStub:NewLibrary(MAJOR, MINOR)

 if not AceConfigCmd then return end
@@ -23,7 +23,7 @@ if not AceConfigCmd then return end
 AceConfigCmd.commands = AceConfigCmd.commands or {}
 local commands = AceConfigCmd.commands

-local cfgreg = LibStub("AceConfigRegistry-3.0")
+local cfgreg = LibStub("AceConfigRegistry-3.0-ElvUI")
 local AceConsole -- LoD
 local AceConsoleName = "AceConsole-3.0"

diff --git a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua
index 1c28821..cc8dc5d 100644
--- a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua
+++ b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua
@@ -1,10 +1,10 @@
 --- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables.
 -- @class file
 -- @name AceConfigDialog-3.0
--- @release $Id: AceConfigDialog-3.0.lua 1089 2013-09-13 14:32:35Z nevcairiel $
+-- @release $Id: AceConfigDialog-3.0.lua 1126 2014-11-10 06:38:01Z nevcairiel $

 local LibStub = LibStub
-local MAJOR, MINOR = "AceConfigDialog-3.0", 58
+local MAJOR, MINOR = "AceConfigDialog-3.0-ElvUI", 1
 local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR)

 if not AceConfigDialog then return end
@@ -18,7 +18,7 @@ AceConfigDialog.frame.closing = AceConfigDialog.frame.closing or {}
 AceConfigDialog.frame.closeAllOverride = AceConfigDialog.frame.closeAllOverride or {}

 local gui = LibStub("AceGUI-3.0")
-local reg = LibStub("AceConfigRegistry-3.0")
+local reg = LibStub("AceConfigRegistry-3.0-ElvUI")

 -- Lua APIs
 local tconcat, tinsert, tsort, tremove, tsort = table.concat, table.insert, table.sort, table.remove, table.sort
@@ -242,21 +242,21 @@ local function GetOptionsMemberValue(membername, option, options, path, appName,
 		info.uiType = "dialog"
 		info.uiName = MAJOR

-		local a, b, c ,d
+		local a, b, c ,d, e, f, g, h
 		--using 4 returns for the get of a color type, increase if a type needs more
 		if type(member) == "function" then
 			--Call the function
-			a,b,c,d = member(info, ...)
+			a,b,c,d, e, f, g, h = member(info, ...)
 		else
 			--Call the method
 			if handler and handler[member] then
-				a,b,c,d = handler[member](handler, info, ...)
+				a,b,c,d,e, f, g, h = handler[member](handler, info, ...)
 			else
 				error(format("Method %s doesn't exist in handler for type %s", member, membername))
 			end
 		end
 		del(info)
-		return a,b,c,d
+		return a,b,c,d,e, f, g, h
 	else
 		--The value isnt a function to call, return it
 		return member
@@ -542,16 +542,16 @@ local function OptionOnMouseOver(widget, event)

 	if descStyle and descStyle ~= "tooltip" then return end

-	GameTooltip:SetText(name, 1, .82, 0, 1)
+	GameTooltip:SetText(name, 1, .82, 0, true)

 	if opt.type == "multiselect" then
-		GameTooltip:AddLine(user.text,0.5, 0.5, 0.8, 1)
+		GameTooltip:AddLine(user.text, 0.5, 0.5, 0.8, true)
 	end
 	if type(desc) == "string" then
-		GameTooltip:AddLine(desc, 1, 1, 1, 1)
+		GameTooltip:AddLine(desc, 1, 1, 1, true)
 	end
 	if type(usage) == "string" then
-		GameTooltip:AddLine("Usage: "..usage, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1)
+		GameTooltip:AddLine("Usage: "..usage, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, true)
 	end

 	GameTooltip:Show()
@@ -1320,7 +1320,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
 					del(valuesort)

 				elseif v.type == "color" then
-					control = gui:Create("ColorPicker")
+					control = gui:Create("ColorPicker-ElvUI")
 					control:SetLabel(name)
 					control:SetHasAlpha(GetOptionsMemberValue("hasAlpha",v, options, path, appName))
 					control:SetColor(GetOptionsMemberValue("get",v, options, path, appName))
@@ -1441,17 +1441,17 @@ local function TreeOnButtonEnter(widget, event, uniquevalue, button)
 	local name = GetOptionsMemberValue("name", group, options, feedpath, appName)
 	local desc = GetOptionsMemberValue("desc", group, options, feedpath, appName)

-	GameTooltip:SetOwner(button, "ANCHOR_NONE")
+	GameTooltip:SetOwner(button, "ANCHOR_CURSOR")
 	if widget.type == "TabGroup" then
 		GameTooltip:SetPoint("BOTTOM",button,"TOP")
 	else
 		GameTooltip:SetPoint("LEFT",button,"RIGHT")
 	end

-	GameTooltip:SetText(name, 1, .82, 0, 1)
+	GameTooltip:SetText(name, 1, .82, 0, true)

 	if type(desc) == "string" then
-		GameTooltip:AddLine(desc, 1, 1, 1, 1)
+		GameTooltip:AddLine(desc, 1, 1, 1, true)
 	end

 	GameTooltip:Show()
@@ -1817,6 +1817,13 @@ function AceConfigDialog:Open(appName, container, ...)
 		tinsert(path, (select(n, ...)))
 	end

+	local option = options
+	if type(container) == "table" and container.type == "BlizOptionsGroup" and #path > 0 then
+		for i = 1, #path do
+			option = options.args[path[i]]
+		end
+		name = format("%s - %s", name, GetOptionsMemberValue("name", option, options, path, appName))
+	end
 	--if a container is given feed into that
 	if container then
 		f = container
diff --git a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua
index 74f4880..eea5365 100644
--- a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua
+++ b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua
@@ -8,8 +8,8 @@
 -- :IterateOptionsTables() (and :GetOptionsTable() if only given one argument) return a function reference that the requesting config handling addon must call with valid "uiType", "uiName".
 -- @class file
 -- @name AceConfigRegistry-3.0
--- @release $Id: AceConfigRegistry-3.0.lua 1045 2011-12-09 17:58:40Z nevcairiel $
-local MAJOR, MINOR = "AceConfigRegistry-3.0", 14
+-- @release $Id: AceConfigRegistry-3.0.lua 1105 2013-12-08 22:11:58Z nevcairiel $
+local MAJOR, MINOR = "AceConfigRegistry-3.0-ElvUI", 1
 local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR)

 if not AceConfigRegistry then return end
@@ -163,6 +163,7 @@ local typedkeys={
 	},
 	color={
 		hasAlpha=optmethodbool,
+		reset=opttable,
 	},
 	keybinding={
 		-- TODO
@@ -288,7 +289,8 @@ end
 -- @param appName The application name as given to `:RegisterOptionsTable()`
 -- @param options The options table, OR a function reference that generates it on demand. \\
 -- See the top of the page for info on arguments passed to such functions.
-function AceConfigRegistry:RegisterOptionsTable(appName, options)
+-- @param skipValidation Skip options table validation (primarily useful for extremely huge options, with a noticeable slowdown)
+function AceConfigRegistry:RegisterOptionsTable(appName, options, skipValidation)
 	if type(options)=="table" then
 		if options.type~="group" then	-- quick sanity checker
 			error(MAJOR..": RegisterOptionsTable(appName, options): 'options' - missing type='group' member in root group", 2)
@@ -296,7 +298,7 @@ function AceConfigRegistry:RegisterOptionsTable(appName, options)
 		AceConfigRegistry.tables[appName] = function(uiType, uiName, errlvl)
 			errlvl=(errlvl or 0)+1
 			validateGetterArgs(uiType, uiName, errlvl)
-			if not AceConfigRegistry.validated[uiType][appName] then
+			if not AceConfigRegistry.validated[uiType][appName] and not skipValidation then
 				AceConfigRegistry:ValidateOptionsTable(options, appName, errlvl)	-- upgradable
 				AceConfigRegistry.validated[uiType][appName] = true
 			end
@@ -307,7 +309,7 @@ function AceConfigRegistry:RegisterOptionsTable(appName, options)
 			errlvl=(errlvl or 0)+1
 			validateGetterArgs(uiType, uiName, errlvl)
 			local tab = assert(options(uiType, uiName, appName))
-			if not AceConfigRegistry.validated[uiType][appName] then
+			if not AceConfigRegistry.validated[uiType][appName] and not skipValidation then
 				AceConfigRegistry:ValidateOptionsTable(tab, appName, errlvl)	-- upgradable
 				AceConfigRegistry.validated[uiType][appName] = true
 			end
diff --git a/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.lua b/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.lua
deleted file mode 100644
index c001123..0000000
--- a/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.lua
+++ /dev/null
@@ -1,250 +0,0 @@
---- **AceConsole-3.0** provides registration facilities for slash commands.
--- You can register slash commands to your custom functions and use the `GetArgs` function to parse them
--- to your addons individual needs.
---
--- **AceConsole-3.0** can be embeded into your addon, either explicitly by calling AceConsole:Embed(MyAddon) or by
--- specifying it as an embeded library in your AceAddon. All functions will be available on your addon object
--- and can be accessed directly, without having to explicitly call AceConsole itself.\\
--- It is recommended to embed AceConsole, otherwise you'll have to specify a custom `self` on all calls you
--- make into AceConsole.
--- @class file
--- @name AceConsole-3.0
--- @release $Id: AceConsole-3.0.lua 878 2009-11-02 18:51:58Z nevcairiel $
-local MAJOR,MINOR = "AceConsole-3.0", 7
-
-local AceConsole, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
-
-if not AceConsole then return end -- No upgrade needed
-
-AceConsole.embeds = AceConsole.embeds or {} -- table containing objects AceConsole is embedded in.
-AceConsole.commands = AceConsole.commands or {} -- table containing commands registered
-AceConsole.weakcommands = AceConsole.weakcommands or {} -- table containing self, command => func references for weak commands that don't persist through enable/disable
-
--- Lua APIs
-local tconcat, tostring, select = table.concat, tostring, select
-local type, pairs, error = type, pairs, error
-local format, strfind, strsub = string.format, string.find, string.sub
-local max = math.max
-
--- WoW APIs
-local _G = _G
-
--- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
--- List them here for Mikk's FindGlobals script
--- GLOBALS: DEFAULT_CHAT_FRAME, SlashCmdList, hash_SlashCmdList
-
-local tmp={}
-local function Print(self,frame,...)
-	local n=0
-	if self ~= AceConsole then
-		n=n+1
-		tmp[n] = "|cff33ff99"..tostring( self ).."|r:"
-	end
-	for i=1, select("#", ...) do
-		n=n+1
-		tmp[n] = tostring(select(i, ...))
-	end
-	frame:AddMessage( tconcat(tmp," ",1,n) )
-end
-
---- Print to DEFAULT_CHAT_FRAME or given ChatFrame (anything with an .AddMessage function)
--- @paramsig [chatframe ,] ...
--- @param chatframe Custom ChatFrame to print to (or any frame with an .AddMessage function)
--- @param ... List of any values to be printed
-function AceConsole:Print(...)
-	local frame = ...
-	if type(frame) == "table" and frame.AddMessage then	-- Is first argument something with an .AddMessage member?
-		return Print(self, frame, select(2,...))
-	else
-		return Print(self, DEFAULT_CHAT_FRAME, ...)
-	end
-end
-
-
---- Formatted (using format()) print to DEFAULT_CHAT_FRAME or given ChatFrame (anything with an .AddMessage function)
--- @paramsig [chatframe ,] "format"[, ...]
--- @param chatframe Custom ChatFrame to print to (or any frame with an .AddMessage function)
--- @param format Format string - same syntax as standard Lua format()
--- @param ... Arguments to the format string
-function AceConsole:Printf(...)
-	local frame = ...
-	if type(frame) == "table" and frame.AddMessage then	-- Is first argument something with an .AddMessage member?
-		return Print(self, frame, format(select(2,...)))
-	else
-		return Print(self, DEFAULT_CHAT_FRAME, format(...))
-	end
-end
-
-
-
-
---- Register a simple chat command
--- @param command Chat command to be registered WITHOUT leading "/"
--- @param func Function to call when the slash command is being used (funcref or methodname)
--- @param persist if false, the command will be soft disabled/enabled when aceconsole is used as a mixin (default: true)
-function AceConsole:RegisterChatCommand( command, func, persist )
-	if type(command)~="string" then error([[Usage: AceConsole:RegisterChatCommand( "command", func[, persist ]): 'command' - expected a string]], 2) end
-
-	if persist==nil then persist=true end	-- I'd rather have my addon's "/addon enable" around if the author screws up. Having some extra slash regged when it shouldnt be isn't as destructive. True is a better default. /Mikk
-
-	local name = "ACECONSOLE_"..command:upper()
-
-	if type( func ) == "string" then
-		SlashCmdList[name] = function(input, editBox)
-			self[func](self, input, editBox)
-		end
-	else
-		SlashCmdList[name] = func
-	end
-	_G["SLASH_"..name.."1"] = "/"..command:lower()
-	AceConsole.commands[command] = name
-	-- non-persisting commands are registered for enabling disabling
-	if not persist then
-		if not AceConsole.weakcommands[self] then AceConsole.weakcommands[self] = {} end
-		AceConsole.weakcommands[self][command] = func
-	end
-	return true
-end
-
---- Unregister a chatcommand
--- @param command Chat command to be unregistered WITHOUT leading "/"
-function AceConsole:UnregisterChatCommand( command )
-	local name = AceConsole.commands[command]
-	if name then
-		SlashCmdList[name] = nil
-		_G["SLASH_" .. name .. "1"] = nil
-		hash_SlashCmdList["/" .. command:upper()] = nil
-		AceConsole.commands[command] = nil
-	end
-end
-
---- Get an iterator over all Chat Commands registered with AceConsole
--- @return Iterator (pairs) over all commands
-function AceConsole:IterateChatCommands() return pairs(AceConsole.commands) end
-
-
-local function nils(n, ...)
-	if n>1 then
-		return nil, nils(n-1, ...)
-	elseif n==1 then
-		return nil, ...
-	else
-		return ...
-	end
-end
-
-
---- Retreive one or more space-separated arguments from a string.
--- Treats quoted strings and itemlinks as non-spaced.
--- @param string The raw argument string
--- @param numargs How many arguments to get (default 1)
--- @param startpos Where in the string to start scanning (default  1)
--- @return Returns arg1, arg2, ..., nextposition\\
--- Missing arguments will be returned as nils. 'nextposition' is returned as 1e9 at the end of the string.
-function AceConsole:GetArgs(str, numargs, startpos)
-	numargs = numargs or 1
-	startpos = max(startpos or 1, 1)
-
-	local pos=startpos
-
-	-- find start of new arg
-	pos = strfind(str, "[^ ]", pos)
-	if not pos then	-- whoops, end of string
-		return nils(numargs, 1e9)
-	end
-
-	if numargs<1 then
-		return pos
-	end
-
-	-- quoted or space separated? find out which pattern to use
-	local delim_or_pipe
-	local ch = strsub(str, pos, pos)
-	if ch=='"' then
-		pos = pos + 1
-		delim_or_pipe='([|"])'
-	elseif ch=="'" then
-		pos = pos + 1
-		delim_or_pipe="([|'])"
-	else
-		delim_or_pipe="([| ])"
-	end
-
-	startpos = pos
-
-	while true do
-		-- find delimiter or hyperlink
-		local ch,_
-		pos,_,ch = strfind(str, delim_or_pipe, pos)
-
-		if not pos then break end
-
-		if ch=="|" then
-			-- some kind of escape
-
-			if strsub(str,pos,pos+1)=="|H" then
-				-- It's a |H....|hhyper link!|h
-				pos=strfind(str, "|h", pos+2)	-- first |h
-				if not pos then break end
-
-				pos=strfind(str, "|h", pos+2)	-- second |h
-				if not pos then break end
-			elseif strsub(str,pos, pos+1) == "|T" then
-				-- It's a |T....|t  texture
-				pos=strfind(str, "|t", pos+2)
-				if not pos then break end
-			end
-
-			pos=pos+2 -- skip past this escape (last |h if it was a hyperlink)
-
-		else
-			-- found delimiter, done with this arg
-			return strsub(str, startpos, pos-1), AceConsole:GetArgs(str, numargs-1, pos+1)
-		end
-
-	end
-
-	-- search aborted, we hit end of string. return it all as one argument. (yes, even if it's an unterminated quote or hyperlink)
-	return strsub(str, startpos), nils(numargs-1, 1e9)
-end
-
-
---- embedding and embed handling
-
-local mixins = {
-	"Print",
-	"Printf",
-	"RegisterChatCommand",
-	"UnregisterChatCommand",
-	"GetArgs",
-}
-
--- Embeds AceConsole into the target object making the functions from the mixins list available on target:..
--- @param target target object to embed AceBucket in
-function AceConsole:Embed( target )
-	for k, v in pairs( mixins ) do
-		target[v] = self[v]
-	end
-	self.embeds[target] = true
-	return target
-end
-
-function AceConsole:OnEmbedEnable( target )
-	if AceConsole.weakcommands[target] then
-		for command, func in pairs( AceConsole.weakcommands[target] ) do
-			target:RegisterChatCommand( command, func, false, true ) -- nonpersisting and silent registry
-		end
-	end
-end
-
-function AceConsole:OnEmbedDisable( target )
-	if AceConsole.weakcommands[target] then
-		for command, func in pairs( AceConsole.weakcommands[target] ) do
-			target:UnregisterChatCommand( command ) -- TODO: this could potentially unregister a command from another application in case of command conflicts. Do we care?
-		end
-	end
-end
-
-for addon in pairs(AceConsole.embeds) do
-	AceConsole:Embed(addon)
-end
diff --git a/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.xml b/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.xml
deleted file mode 100644
index be9f47c..0000000
--- a/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
-..\FrameXML\UI.xsd">
-	<Script file="AceConsole-3.0.lua"/>
-</Ui>
\ No newline at end of file
diff --git a/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.lua b/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.lua
deleted file mode 100644
index 79f4b39..0000000
--- a/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.lua
+++ /dev/null
@@ -1,745 +0,0 @@
---- **AceDB-3.0** manages the SavedVariables of your addon.
--- It offers profile management, smart defaults and namespaces for modules.\\
--- Data can be saved in different data-types, depending on its intended usage.
--- The most common data-type is the `profile` type, which allows the user to choose
--- the active profile, and manage the profiles of all of his characters.\\
--- The following data types are available:
--- * **char** Character-specific data. Every character has its own database.
--- * **realm** Realm-specific data. All of the players characters on the same realm share this database.
--- * **class** Class-specific data. All of the players characters of the same class share this database.
--- * **race** Race-specific data. All of the players characters of the same race share this database.
--- * **faction** Faction-specific data. All of the players characters of the same faction share this database.
--- * **factionrealm** Faction and realm specific data. All of the players characters on the same realm and of the same faction share this database.
--- * **global** Global Data. All characters on the same account share this database.
--- * **profile** Profile-specific data. All characters using the same profile share this database. The user can control which profile should be used.
---
--- Creating a new Database using the `:New` function will return a new DBObject. A database will inherit all functions
--- of the DBObjectLib listed here. \\
--- If you create a new namespaced child-database (`:RegisterNamespace`), you'll get a DBObject as well, but note
--- that the child-databases cannot individually change their profile, and are linked to their parents profile - and because of that,
--- the profile related APIs are not available. Only `:RegisterDefaults` and `:ResetProfile` are available on child-databases.
---
--- For more details on how to use AceDB-3.0, see the [[AceDB-3.0 Tutorial]].
---
--- You may also be interested in [[libdualspec-1-0|LibDualSpec-1.0]] to do profile switching automatically when switching specs.
---
--- @usage
--- MyAddon = LibStub("AceAddon-3.0"):NewAddon("DBExample")
---
--- -- declare defaults to be used in the DB
--- local defaults = {
---   profile = {
---     setting = true,
---   }
--- }
---
--- function MyAddon:OnInitialize()
---   -- Assuming the .toc says ## SavedVariables: MyAddonDB
---   self.db = LibStub("AceDB-3.0"):New("MyAddonDB", defaults, true)
--- end
--- @class file
--- @name AceDB-3.0.lua
--- @release $Id: AceDB-3.0.lua 1115 2014-09-21 11:52:35Z kaelten $
-local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 25
-local AceDB, oldminor = LibStub:NewLibrary(ACEDB_MAJOR, ACEDB_MINOR)
-
-if not AceDB then return end -- No upgrade needed
-
--- Lua APIs
-local type, pairs, next, error = type, pairs, next, error
-local setmetatable, getmetatable, rawset, rawget = setmetatable, getmetatable, rawset, rawget
-
--- WoW APIs
-local _G = _G
-
--- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
--- List them here for Mikk's FindGlobals script
--- GLOBALS: LibStub
-
-AceDB.db_registry = AceDB.db_registry or {}
-AceDB.frame = AceDB.frame or CreateFrame("Frame")
-
-local CallbackHandler
-local CallbackDummy = { Fire = function() end }
-
-local DBObjectLib = {}
-
---[[-------------------------------------------------------------------------
-	AceDB Utility Functions
----------------------------------------------------------------------------]]
-
--- Simple shallow copy for copying defaults
-local function copyTable(src, dest)
-	if type(dest) ~= "table" then dest = {} end
-	if type(src) == "table" then
-		for k,v in pairs(src) do
-			if type(v) == "table" then
-				-- try to index the key first so that the metatable creates the defaults, if set, and use that table
-				v = copyTable(v, dest[k])
-			end
-			dest[k] = v
-		end
-	end
-	return dest
-end
-
--- Called to add defaults to a section of the database
---
--- When a ["*"] default section is indexed with a new key, a table is returned
--- and set in the host table.  These tables must be cleaned up by removeDefaults
--- in order to ensure we don't write empty default tables.
-local function copyDefaults(dest, src)
-	-- this happens if some value in the SV overwrites our default value with a non-table
-	--if type(dest) ~= "table" then return end
-	for k, v in pairs(src) do
-		if k == "*" or k == "**" then
-			if type(v) == "table" then
-				-- This is a metatable used for table defaults
-				local mt = {
-					-- This handles the lookup and creation of new subtables
-					__index = function(t,k)
-							if k == nil then return nil end
-							local tbl = {}
-							copyDefaults(tbl, v)
-							rawset(t, k, tbl)
-							return tbl
-						end,
-				}
-				setmetatable(dest, mt)
-				-- handle already existing tables in the SV
-				for dk, dv in pairs(dest) do
-					if not rawget(src, dk) and type(dv) == "table" then
-						copyDefaults(dv, v)
-					end
-				end
-			else
-				-- Values are not tables, so this is just a simple return
-				local mt = {__index = function(t,k) return k~=nil and v or nil end}
-				setmetatable(dest, mt)
-			end
-		elseif type(v) == "table" then
-			if not rawget(dest, k) then rawset(dest, k, {}) end
-			if type(dest[k]) == "table" then
-				copyDefaults(dest[k], v)
-				if src['**'] then
-					copyDefaults(dest[k], src['**'])
-				end
-			end
-		else
-			if rawget(dest, k) == nil then
-				rawset(dest, k, v)
-			end
-		end
-	end
-end
-
--- Called to remove all defaults in the default table from the database
-local function removeDefaults(db, defaults, blocker)
-	-- remove all metatables from the db, so we don't accidentally create new sub-tables through them
-	setmetatable(db, nil)
-	-- loop through the defaults and remove their content
-	for k,v in pairs(defaults) do
-		if k == "*" or k == "**" then
-			if type(v) == "table" then
-				-- Loop through all the actual k,v pairs and remove
-				for key, value in pairs(db) do
-					if type(value) == "table" then
-						-- if the key was not explicitly specified in the defaults table, just strip everything from * and ** tables
-						if defaults[key] == nil and (not blocker or blocker[key] == nil) then
-							removeDefaults(value, v)
-							-- if the table is empty afterwards, remove it
-							if next(value) == nil then
-								db[key] = nil
-							end
-						-- if it was specified, only strip ** content, but block values which were set in the key table
-						elseif k == "**" then
-							removeDefaults(value, v, defaults[key])
-						end
-					end
-				end
-			elseif k == "*" then
-				-- check for non-table default
-				for key, value in pairs(db) do
-					if defaults[key] == nil and v == value then
-						db[key] = nil
-					end
-				end
-			end
-		elseif type(v) == "table" and type(db[k]) == "table" then
-			-- if a blocker was set, dive into it, to allow multi-level defaults
-			removeDefaults(db[k], v, blocker and blocker[k])
-			if next(db[k]) == nil then
-				db[k] = nil
-			end
-		else
-			-- check if the current value matches the default, and that its not blocked by another defaults table
-			if db[k] == defaults[k] and (not blocker or blocker[k] == nil) then
-				db[k] = nil
-			end
-		end
-	end
-end
-
--- This is called when a table section is first accessed, to set up the defaults
-local function initSection(db, section, svstore, key, defaults)
-	local sv = rawget(db, "sv")
-
-	local tableCreated
-	if not sv[svstore] then sv[svstore] = {} end
-	if not sv[svstore][key] then
-		sv[svstore][key] = {}
-		tableCreated = true
-	end
-
-	local tbl = sv[svstore][key]
-
-	if defaults then
-		copyDefaults(tbl, defaults)
-	end
-	rawset(db, section, tbl)
-
-	return tableCreated, tbl
-end
-
--- Metatable to handle the dynamic creation of sections and copying of sections.
-local dbmt = {
-	__index = function(t, section)
-			local keys = rawget(t, "keys")
-			local key = keys[section]
-			if key then
-				local defaultTbl = rawget(t, "defaults")
-				local defaults = defaultTbl and defaultTbl[section]
-
-				if section == "profile" then
-					local new = initSection(t, section, "profiles", key, defaults)
-					if new then
-						-- Callback: OnNewProfile, database, newProfileKey
-						t.callbacks:Fire("OnNewProfile", t, key)
-					end
-				elseif section == "profiles" then
-					local sv = rawget(t, "sv")
-					if not sv.profiles then sv.profiles = {} end
-					rawset(t, "profiles", sv.profiles)
-				elseif section == "global" then
-					local sv = rawget(t, "sv")
-					if not sv.global then sv.global = {} end
-					if defaults then
-						copyDefaults(sv.global, defaults)
-					end
-					rawset(t, section, sv.global)
-				else
-					initSection(t, section, section, key, defaults)
-				end
-			end
-
-			return rawget(t, section)
-		end
-}
-
-local function validateDefaults(defaults, keyTbl, offset)
-	if not defaults then return end
-	offset = offset or 0
-	for k in pairs(defaults) do
-		if not keyTbl[k] or k == "profiles" then
-			error(("Usage: AceDBObject:RegisterDefaults(defaults): '%s' is not a valid datatype."):format(k), 3 + offset)
-		end
-	end
-end
-
-local preserve_keys = {
-	["callbacks"] = true,
-	["RegisterCallback"] = true,
-	["UnregisterCallback"] = true,
-	["UnregisterAllCallbacks"] = true,
-	["children"] = true,
-}
-
-local realmKey = GetRealmName()
-local charKey = UnitName("player") .. " - " .. realmKey
-local _, classKey = UnitClass("player")
-local _, raceKey = UnitRace("player")
-local factionKey = UnitFactionGroup("player")
-local factionrealmKey = factionKey .. " - " .. realmKey
-local localeKey = GetLocale():lower()
-
-local regionTable = { "US", "KR", "EU", "TW", "CN" }
-local regionKey = _G["GetCurrentRegion"] and regionTable[GetCurrentRegion()] or string.sub(GetCVar("realmList"), 1, 2):upper()
-local factionrealmregionKey = factionrealmKey .. " - " .. regionKey
-
--- Actual database initialization function
-local function initdb(sv, defaults, defaultProfile, olddb, parent)
-	-- Generate the database keys for each section
-
-	-- map "true" to our "Default" profile
-	if defaultProfile == true then defaultProfile = "Default" end
-
-	local profileKey
-	if not parent then
-		-- Make a container for profile keys
-		if not sv.profileKeys then sv.profileKeys = {} end
-
-		-- Try to get the profile selected from the char db
-		profileKey = sv.profileKeys[charKey] or defaultProfile or charKey
-
-		-- save the selected profile for later
-		sv.profileKeys[charKey] = profileKey
-	else
-		-- Use the profile of the parents DB
-		profileKey = parent.keys.profile or defaultProfile or charKey
-
-		-- clear the profileKeys in the DB, namespaces don't need to store them
-		sv.profileKeys = nil
-	end
-
-	-- This table contains keys that enable the dynamic creation
-	-- of each section of the table.  The 'global' and 'profiles'
-	-- have a key of true, since they are handled in a special case
-	local keyTbl= {
-		["char"] = charKey,
-		["realm"] = realmKey,
-		["class"] = classKey,
-		["race"] = raceKey,
-		["faction"] = factionKey,
-		["factionrealm"] = factionrealmKey,
-		["factionrealmregion"] = factionrealmregionKey,
-		["profile"] = profileKey,
-        ["locale"] = localeKey,
-		["global"] = true,
-		["profiles"] = true,
-	}
-
-	validateDefaults(defaults, keyTbl, 1)
-
-	-- This allows us to use this function to reset an entire database
-	-- Clear out the old database
-	if olddb then
-		for k,v in pairs(olddb) do if not preserve_keys[k] then olddb[k] = nil end end
-	end
-
-	-- Give this database the metatable so it initializes dynamically
-	local db = setmetatable(olddb or {}, dbmt)
-
-	if not rawget(db, "callbacks") then
-		-- try to load CallbackHandler-1.0 if it loaded after our library
-		if not CallbackHandler then CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0", true) end
-		db.callbacks = CallbackHandler and CallbackHandler:New(db) or CallbackDummy
-	end
-
-	-- Copy methods locally into the database object, to avoid hitting
-	-- the metatable when calling methods
-
-	if not parent then
-		for name, func in pairs(DBObjectLib) do
-			db[name] = func
-		end
-	else
-		-- hack this one in
-		db.RegisterDefaults = DBObjectLib.RegisterDefaults
-		db.ResetProfile = DBObjectLib.ResetProfile
-	end
-
-	-- Set some properties in the database object
-	db.profiles = sv.profiles
-	db.keys = keyTbl
-	db.sv = sv
-	--db.sv_name = name
-	db.defaults = defaults
-	db.parent = parent
-
-	-- store the DB in the registry
-	AceDB.db_registry[db] = true
-
-	return db
-end
-
--- handle PLAYER_LOGOUT
--- strip all defaults from all databases
--- and cleans up empty sections
-local function logoutHandler(frame, event)
-	if event == "PLAYER_LOGOUT" then
-		for db in pairs(AceDB.db_registry) do
-			db.callbacks:Fire("OnDatabaseShutdown", db)
-			db:RegisterDefaults(nil)
-
-			-- cleanup sections that are empty without defaults
-			local sv = rawget(db, "sv")
-			for section in pairs(db.keys) do
-				if rawget(sv, section) then
-					-- global is special, all other sections have sub-entrys
-					-- also don't delete empty profiles on main dbs, only on namespaces
-					if section ~= "global" and (section ~= "profiles" or rawget(db, "parent")) then
-						for key in pairs(sv[section]) do
-							if not next(sv[section][key]) then
-								sv[section][key] = nil
-							end
-						end
-					end
-					if not next(sv[section]) then
-						sv[section] = nil
-					end
-				end
-			end
-		end
-	end
-end
-
-AceDB.frame:RegisterEvent("PLAYER_LOGOUT")
-AceDB.frame:SetScript("OnEvent", logoutHandler)
-
-
---[[-------------------------------------------------------------------------
-	AceDB Object Method Definitions
----------------------------------------------------------------------------]]
-
---- Sets the defaults table for the given database object by clearing any
--- that are currently set, and then setting the new defaults.
--- @param defaults A table of defaults for this database
-function DBObjectLib:RegisterDefaults(defaults)
-	if defaults and type(defaults) ~= "table" then
-		error("Usage: AceDBObject:RegisterDefaults(defaults): 'defaults' - table or nil expected.", 2)
-	end
-
-	validateDefaults(defaults, self.keys)
-
-	-- Remove any currently set defaults
-	if self.defaults then
-		for section,key in pairs(self.keys) do
-			if self.defaults[section] and rawget(self, section) then
-				removeDefaults(self[section], self.defaults[section])
-			end
-		end
-	end
-
-	-- Set the DBObject.defaults table
-	self.defaults = defaults
-
-	-- Copy in any defaults, only touching those sections already created
-	if defaults then
-		for section,key in pairs(self.keys) do
-			if defaults[section] and rawget(self, section) then
-				copyDefaults(self[section], defaults[section])
-			end
-		end
-	end
-end
-
---- Changes the profile of the database and all of it's namespaces to the
--- supplied named profile
--- @param name The name of the profile to set as the current profile
-function DBObjectLib:SetProfile(name)
-	if type(name) ~= "string" then
-		error("Usage: AceDBObject:SetProfile(name): 'name' - string expected.", 2)
-	end
-
-	-- changing to the same profile, dont do anything
-	if name == self.keys.profile then return end
-
-	local oldProfile = self.profile
-	local defaults = self.defaults and self.defaults.profile
-
-	-- Callback: OnProfileShutdown, database
-	self.callbacks:Fire("OnProfileShutdown", self)
-
-	if oldProfile and defaults then
-		-- Remove the defaults from the old profile
-		removeDefaults(oldProfile, defaults)
-	end
-
-	self.profile = nil
-	self.keys["profile"] = name
-
-	-- if the storage exists, save the new profile
-	-- this won't exist on namespaces.
-	if self.sv.profileKeys then
-		self.sv.profileKeys[charKey] = name
-	end
-
-	-- populate to child namespaces
-	if self.children then
-		for _, db in pairs(self.children) do
-			DBObjectLib.SetProfile(db, name)
-		end
-	end
-
-	-- Callback: OnProfileChanged, database, newProfileKey
-	self.callbacks:Fire("OnProfileChanged", self, name)
-end
-
---- Returns a table with the names of the existing profiles in the database.
--- You can optionally supply a table to re-use for this purpose.
--- @param tbl A table to store the profile names in (optional)
-function DBObjectLib:GetProfiles(tbl)
-	if tbl and type(tbl) ~= "table" then
-		error("Usage: AceDBObject:GetProfiles(tbl): 'tbl' - table or nil expected.", 2)
-	end
-
-	-- Clear the container table
-	if tbl then
-		for k,v in pairs(tbl) do tbl[k] = nil end
-	else
-		tbl = {}
-	end
-
-	local curProfile = self.keys.profile
-
-	local i = 0
-	for profileKey in pairs(self.profiles) do
-		i = i + 1
-		tbl[i] = profileKey
-		if curProfile and profileKey == curProfile then curProfile = nil end
-	end
-
-	-- Add the current profile, if it hasn't been created yet
-	if curProfile then
-		i = i + 1
-		tbl[i] = curProfile
-	end
-
-	return tbl, i
-end
-
---- Returns the current profile name used by the database
-function DBObjectLib:GetCurrentProfile()
-	return self.keys.profile
-end
-
---- Deletes a named profile.  This profile must not be the active profile.
--- @param name The name of the profile to be deleted
--- @param silent If true, do not raise an error when the profile does not exist
-function DBObjectLib:DeleteProfile(name, silent)
-	if type(name) ~= "string" then
-		error("Usage: AceDBObject:DeleteProfile(name): 'name' - string expected.", 2)
-	end
-
-	if self.keys.profile == name then
-		error("Cannot delete the active profile in an AceDBObject.", 2)
-	end
-
-	if not rawget(self.profiles, name) and not silent then
-		error("Cannot delete profile '" .. name .. "'. It does not exist.", 2)
-	end
-
-	self.profiles[name] = nil
-
-	-- populate to child namespaces
-	if self.children then
-		for _, db in pairs(self.children) do
-			DBObjectLib.DeleteProfile(db, name, true)
-		end
-	end
-
-	-- switch all characters that use this profile back to the default
-	if self.sv.profileKeys then
-		for key, profile in pairs(self.sv.profileKeys) do
-			if profile == name then
-				self.sv.profileKeys[key] = nil
-			end
-		end
-	end
-
-	-- Callback: OnProfileDeleted, database, profileKey
-	self.callbacks:Fire("OnProfileDeleted", self, name)
-end
-
---- Copies a named profile into the current profile, overwriting any conflicting
--- settings.
--- @param name The name of the profile to be copied into the current profile
--- @param silent If true, do not raise an error when the profile does not exist
-function DBObjectLib:CopyProfile(name, silent)
-	if type(name) ~= "string" then
-		error("Usage: AceDBObject:CopyProfile(name): 'name' - string expected.", 2)
-	end
-
-	if name == self.keys.profile then
-		error("Cannot have the same source and destination profiles.", 2)
-	end
-
-	if not rawget(self.profiles, name) and not silent then
-		error("Cannot copy profile '" .. name .. "'. It does not exist.", 2)
-	end
-
-	-- Reset the profile before copying
-	DBObjectLib.ResetProfile(self, nil, true)
-
-	local profile = self.profile
-	local source = self.profiles[name]
-
-	copyTable(source, profile)
-
-	-- populate to child namespaces
-	if self.children then
-		for _, db in pairs(self.children) do
-			DBObjectLib.CopyProfile(db, name, true)
-		end
-	end
-
-	-- Callback: OnProfileCopied, database, sourceProfileKey
-	self.callbacks:Fire("OnProfileCopied", self, name)
-end
-
---- Resets the current profile to the default values (if specified).
--- @param noChildren if set to true, the reset will not be populated to the child namespaces of this DB object
--- @param noCallbacks if set to true, won't fire the OnProfileReset callback
-function DBObjectLib:ResetProfile(noChildren, noCallbacks)
-	local profile = self.profile
-
-	for k,v in pairs(profile) do
-		profile[k] = nil
-	end
-
-	local defaults = self.defaults and self.defaults.profile
-	if defaults then
-		copyDefaults(profile, defaults)
-	end
-
-	-- populate to child namespaces
-	if self.children and not noChildren then
-		for _, db in pairs(self.children) do
-			DBObjectLib.ResetProfile(db, nil, noCallbacks)
-		end
-	end
-
-	-- Callback: OnProfileReset, database
-	if not noCallbacks then
-		self.callbacks:Fire("OnProfileReset", self)
-	end
-end
-
---- Resets the entire database, using the string defaultProfile as the new default
--- profile.
--- @param defaultProfile The profile name to use as the default
-function DBObjectLib:ResetDB(defaultProfile)
-	if defaultProfile and type(defaultProfile) ~= "string" then
-		error("Usage: AceDBObject:ResetDB(defaultProfile): 'defaultProfile' - string or nil expected.", 2)
-	end
-
-	local sv = self.sv
-	for k,v in pairs(sv) do
-		sv[k] = nil
-	end
-
-	local parent = self.parent
-
-	initdb(sv, self.defaults, defaultProfile, self)
-
-	-- fix the child namespaces
-	if self.children then
-		if not sv.namespaces then sv.namespaces = {} end
-		for name, db in pairs(self.children) do
-			if not sv.namespaces[name] then sv.namespaces[name] = {} end
-			initdb(sv.namespaces[name], db.defaults, self.keys.profile, db, self)
-		end
-	end
-
-	-- Callback: OnDatabaseReset, database
-	self.callbacks:Fire("OnDatabaseReset", self)
-	-- Callback: OnProfileChanged, database, profileKey
-	self.callbacks:Fire("OnProfileChanged", self, self.keys["profile"])
-
-	return self
-end
-
---- Creates a new database namespace, directly tied to the database.  This
--- is a full scale database in it's own rights other than the fact that
--- it cannot control its profile individually
--- @param name The name of the new namespace
--- @param defaults A table of values to use as defaults
-function DBObjectLib:RegisterNamespace(name, defaults)
-	if type(name) ~= "string" then
-		error("Usage: AceDBObject:RegisterNamespace(name, defaults): 'name' - string expected.", 2)
-	end
-	if defaults and type(defaults) ~= "table" then
-		error("Usage: AceDBObject:RegisterNamespace(name, defaults): 'defaults' - table or nil expected.", 2)
-	end
-	if self.children and self.children[name] then
-		error ("Usage: AceDBObject:RegisterNamespace(name, defaults): 'name' - a namespace with that name already exists.", 2)
-	end
-
-	local sv = self.sv
-	if not sv.namespaces then sv.namespaces = {} end
-	if not sv.namespaces[name] then
-		sv.namespaces[name] = {}
-	end
-
-	local newDB = initdb(sv.namespaces[name], defaults, self.keys.profile, nil, self)
-
-	if not self.children then self.children = {} end
-	self.children[name] = newDB
-	return newDB
-end
-
---- Returns an already existing namespace from the database object.
--- @param name The name of the new namespace
--- @param silent if true, the addon is optional, silently return nil if its not found
--- @usage
--- local namespace = self.db:GetNamespace('namespace')
--- @return the namespace object if found
-function DBObjectLib:GetNamespace(name, silent)
-	if type(name) ~= "string" then
-		error("Usage: AceDBObject:GetNamespace(name): 'name' - string expected.", 2)
-	end
-	if not silent and not (self.children and self.children[name]) then
-		error ("Usage: AceDBObject:GetNamespace(name): 'name' - namespace does not exist.", 2)
-	end
-	if not self.children then self.children = {} end
-	return self.children[name]
-end
-
---[[-------------------------------------------------------------------------
-	AceDB Exposed Methods
----------------------------------------------------------------------------]]
-
---- Creates a new database object that can be used to handle database settings and profiles.
--- By default, an empty DB is created, using a character specific profile.
---
--- You can override the default profile used by passing any profile name as the third argument,
--- or by passing //true// as the third argument to use a globally shared profile called "Default".
---
--- Note that there is no token replacement in the default profile name, passing a defaultProfile as "char"
--- will use a profile named "char", and not a character-specific profile.
--- @param tbl The name of variable, or table to use for the database
--- @param defaults A table of database defaults
--- @param defaultProfile The name of the default profile. If not set, a character specific profile will be used as the default.
--- You can also pass //true// to use a shared global profile called "Default".
--- @usage
--- -- Create an empty DB using a character-specific default profile.
--- self.db = LibStub("AceDB-3.0"):New("MyAddonDB")
--- @usage
--- -- Create a DB using defaults and using a shared default profile
--- self.db = LibStub("AceDB-3.0"):New("MyAddonDB", defaults, true)
-function AceDB:New(tbl, defaults, defaultProfile)
-	if type(tbl) == "string" then
-		local name = tbl
-		tbl = _G[name]
-		if not tbl then
-			tbl = {}
-			_G[name] = tbl
-		end
-	end
-
-	if type(tbl) ~= "table" then
-		error("Usage: AceDB:New(tbl, defaults, defaultProfile): 'tbl' - table expected.", 2)
-	end
-
-	if defaults and type(defaults) ~= "table" then
-		error("Usage: AceDB:New(tbl, defaults, defaultProfile): 'defaults' - table expected.", 2)
-	end
-
-	if defaultProfile and type(defaultProfile) ~= "string" and defaultProfile ~= true then
-		error("Usage: AceDB:New(tbl, defaults, defaultProfile): 'defaultProfile' - string or true expected.", 2)
-	end
-
-	return initdb(tbl, defaults, defaultProfile)
-end
-
--- upgrade existing databases
-for db in pairs(AceDB.db_registry) do
-	if not db.parent then
-		for name,func in pairs(DBObjectLib) do
-			db[name] = func
-		end
-	else
-		db.RegisterDefaults = DBObjectLib.RegisterDefaults
-		db.ResetProfile = DBObjectLib.ResetProfile
-	end
-end
diff --git a/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.xml b/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.xml
deleted file mode 100644
index 46b20ba..0000000
--- a/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
-..\FrameXML\UI.xsd">
-	<Script file="AceDB-3.0.lua"/>
-</Ui>
\ No newline at end of file
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc
index 54c8141..49e6398 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc
@@ -1,5 +1,5 @@
-## Interface: 50300
-## X-Curse-Packaged-Version: r48-release
+## Interface: 60200
+## X-Curse-Packaged-Version: r52-release
 ## X-Curse-Project-Name: AceGUI-3.0-SharedMediaWidgets
 ## X-Curse-Project-ID: ace-gui-3-0-shared-media-widgets
 ## X-Curse-Repository-ID: wow/ace-gui-3-0-shared-media-widgets/mainline
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua
index e181b23..0b75952 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua
@@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0")

 do
 	local widgetType = "LSM30_Background"
-	local widgetVersion = 10
+	local widgetVersion = 11

 	local contentFrameCache = {}
 	local function ReturnSelf(self)
@@ -57,8 +57,8 @@ do
 				local font, size = text:GetFont()
 				text:SetFont(font,size,"OUTLINE")

-				text:SetPoint("LEFT", check, "RIGHT", 1, 0)
-				text:SetPoint("RIGHT", frame, "RIGHT", -2, 0)
+				text:SetPoint("TOPLEFT", check, "TOPRIGHT", 1, 0)
+				text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 0)
 				text:SetJustifyH("LEFT")
 				text:SetText("Test Test Test Test Test Test Test")
 			frame.text = text
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua
index 0f06117..0cd2959 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua
@@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0")

 do
 	local widgetType = "LSM30_Border"
-	local widgetVersion = 10
+	local widgetVersion = 11

 	local contentFrameCache = {}
 	local function ReturnSelf(self)
@@ -55,8 +55,8 @@ do
 				check:Hide()
 			frame.check = check
 			local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite")
-				text:SetPoint("LEFT", check, "RIGHT", 1, 0)
-				text:SetPoint("RIGHT", frame, "RIGHT", -2, 0)
+				text:SetPoint("TOPLEFT", check, "TOPRIGHT", 1, 0)
+				text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 0)
 				text:SetJustifyH("LEFT")
 				text:SetText("Test Test Test Test Test Test Test")
 			frame.text = text
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r48-release.txt b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r48-release.txt
deleted file mode 100644
index 2163c0d..0000000
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r48-release.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-------------------------------------------------------------------------
-r48 | funkydude | 2013-05-26 11:10:27 +0000 (Sun, 26 May 2013) | 1 line
-Changed paths:
-   A /tags/r48-release (from /trunk:47)
-
-Tagging as r48-release
-------------------------------------------------------------------------
-r47 | funkydude | 2013-05-26 11:09:17 +0000 (Sun, 26 May 2013) | 1 line
-Changed paths:
-   M /trunk/AceGUI-3.0-SharedMediaWidgets.toc
-
-bump toc
-------------------------------------------------------------------------
-r46 | Phanx | 2013-01-02 06:47:48 +0000 (Wed, 02 Jan 2013) | 1 line
-Changed paths:
-   M /trunk/AceGUI-3.0-SharedMediaWidgets/prototypes.lua
-
-Fixed an anchoring issue that could prevent interaction with menu buttons.
-------------------------------------------------------------------------
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r52-release.txt b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r52-release.txt
new file mode 100644
index 0000000..3da384a
--- /dev/null
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r52-release.txt
@@ -0,0 +1,29 @@
+------------------------------------------------------------------------
+r52 | nevcairiel | 2015-07-22 14:19:41 +0000 (Wed, 22 Jul 2015) | 1 line
+Changed paths:
+   A /tags/r52-release (from /trunk:51)
+
+Tagging as r52-release
+------------------------------------------------------------------------
+r51 | nevcairiel | 2015-07-22 14:19:21 +0000 (Wed, 22 Jul 2015) | 1 line
+Changed paths:
+   M /trunk/AceGUI-3.0-SharedMediaWidgets.toc
+
+Update TOC for 6.2
+------------------------------------------------------------------------
+r50 | nevcairiel | 2015-07-22 14:18:01 +0000 (Wed, 22 Jul 2015) | 1 line
+Changed paths:
+   M /trunk/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua
+   M /trunk/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua
+   M /trunk/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua
+   M /trunk/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua
+   M /trunk/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua
+
+Fix font anchoring to avoid word-wraps in the dropdown
+------------------------------------------------------------------------
+r49 | funkydude | 2014-10-14 20:00:37 +0000 (Tue, 14 Oct 2014) | 1 line
+Changed paths:
+   M /trunk/AceGUI-3.0-SharedMediaWidgets.toc
+
+bump toc
+------------------------------------------------------------------------
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua
index 1cd19e4..eadf35f 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua
@@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0")

 do
 	local widgetType = "LSM30_Font"
-	local widgetVersion = 10
+	local widgetVersion = 11

 	local contentFrameCache = {}
 	local function ReturnSelf(self)
@@ -44,8 +44,8 @@ do
 				check:Hide()
 			frame.check = check
 			local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite")
-				text:SetPoint("LEFT", check, "RIGHT", 1, 0)
-				text:SetPoint("RIGHT", frame, "RIGHT", -2, 0)
+				text:SetPoint("TOPLEFT", check, "TOPRIGHT", 1, 0)
+				text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 0)
 				text:SetJustifyH("LEFT")
 				text:SetText("Test Test Test Test Test Test Test")
 			frame.text = text
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/AceGUI-3.0.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/AceGUI-3.0.lua
index 53295bb..9853644 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/AceGUI-3.0.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/AceGUI-3.0.lua
@@ -24,8 +24,8 @@
 -- f:AddChild(btn)
 -- @class file
 -- @name AceGUI-3.0
--- @release $Id: AceGUI-3.0.lua 924 2010-05-13 15:12:20Z nevcairiel $
-local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 33
+-- @release $Id: AceGUI-3.0.lua 1102 2013-10-25 14:15:23Z nevcairiel $
+local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 34
 local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR)

 if not AceGUI then return end -- No upgrade needed
@@ -673,8 +673,16 @@ AceGUI:RegisterLayout("Fill",
 		end
 	end)

+local layoutrecursionblock = nil
+local function safelayoutcall(object, func, ...)
+	layoutrecursionblock = true
+	object[func](object, ...)
+	layoutrecursionblock = nil
+end
+
 AceGUI:RegisterLayout("Flow",
 	function(content, children)
+		if layoutrecursionblock then return end
 		--used height so far
 		local height = 0
 		--width used in the current row
@@ -762,7 +770,7 @@ AceGUI:RegisterLayout("Flow",
 			end

 			if child.width == "fill" then
-				child:SetWidth(width)
+				safelayoutcall(child, "SetWidth", width)
 				frame:SetPoint("RIGHT", content)

 				usedwidth = 0
@@ -776,7 +784,7 @@ AceGUI:RegisterLayout("Flow",
 				rowoffset = child.alignoffset or (rowheight / 2)
 				rowstartoffset = rowoffset
 			elseif child.width == "relative" then
-				child:SetWidth(width * child.relWidth)
+				safelayoutcall(child, "SetWidth", width * child.relWidth)

 				if child.DoLayout then
 					child:DoLayout()
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
index b6b59f0..085449b 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
@@ -2,7 +2,7 @@
 TreeGroup Container
 Container that uses a tree control to switch between groups.
 -------------------------------------------------------------------------------]]
-local Type, Version = "TreeGroup", 34
+local Type, Version = "TreeGroup", 38
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -212,7 +212,7 @@ local function Button_OnEnter(frame)
 	if self.enabletooltips then
 		GameTooltip:SetOwner(frame, "ANCHOR_NONE")
 		GameTooltip:SetPoint("LEFT",frame,"RIGHT")
-		GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, 1)
+		GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, true)

 		GameTooltip:Show()
 	end
@@ -231,7 +231,7 @@ local function OnScrollValueChanged(frame, value)
 	if frame.obj.noupdate then return end
 	local self = frame.obj
 	local status = self.status or self.localstatus
-	status.scrollvalue = value
+	status.scrollvalue = floor(value + 0.5)
 	self:RefreshTree()
 	AceGUI:ClearFocus()
 end
@@ -335,6 +335,8 @@ local methods = {
 		button.toggle.button = button
 		button.toggle:SetScript("OnClick",Expand_OnClick)

+		button.text:SetHeight(14) -- Prevents text wrapping
+
 		return button
 	end,

diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua
index fd95cb7..028e524 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua
@@ -2,7 +2,7 @@
 Button Widget
 Graphical Button.
 -------------------------------------------------------------------------------]]
-local Type, Version = "Button", 22
+local Type, Version = "Button", 23
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -45,6 +45,7 @@ local methods = {
 		self:SetHeight(24)
 		self:SetWidth(200)
 		self:SetDisabled(false)
+		self:SetAutoWidth(false)
 		self:SetText()
 	end,

@@ -52,6 +53,16 @@ local methods = {

 	["SetText"] = function(self, text)
 		self.text:SetText(text)
+		if self.autoWidth then
+			self:SetWidth(self.text:GetStringWidth() + 30)
+		end
+	end,
+
+	["SetAutoWidth"] = function(self, autoWidth)
+		self.autoWidth = autoWidth
+		if self.autoWidth then
+			self:SetWidth(self.text:GetStringWidth() + 30)
+		end
 	end,

 	["SetDisabled"] = function(self, disabled)
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
index f242437..f25d46c 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
@@ -1,7 +1,7 @@
 --[[-----------------------------------------------------------------------------
 ColorPicker Widget
 -------------------------------------------------------------------------------]]
-local Type, Version = "ColorPicker", 21
+local Type, Version = "ColorPicker", 22
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -51,6 +51,7 @@ local function ColorSwatch_OnClick(frame)
 	local self = frame.obj
 	if not self.disabled then
 		ColorPickerFrame:SetFrameStrata("FULLSCREEN_DIALOG")
+		ColorPickerFrame:SetFrameLevel(frame:GetFrameLevel() + 10)
 		ColorPickerFrame:SetClampedToScreen(true)

 		ColorPickerFrame.func = function()
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
index f46f370..0dd3bff 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
@@ -1,4 +1,4 @@
---[[ $Id: AceGUIWidget-DropDown.lua 1029 2011-06-10 23:10:58Z nevcairiel $ ]]--
+--[[ $Id: AceGUIWidget-DropDown.lua 1116 2014-10-12 08:15:46Z nevcairiel $ ]]--
 local AceGUI = LibStub("AceGUI-3.0")

 -- Lua APIs
@@ -356,17 +356,19 @@ end

 do
 	local widgetType = "Dropdown"
-	local widgetVersion = 25
+	local widgetVersion = 30

 	--[[ Static data ]]--

 	--[[ UI event handler ]]--

 	local function Control_OnEnter(this)
+		this.obj.button:LockHighlight()
 		this.obj:Fire("OnEnter")
 	end

 	local function Control_OnLeave(this)
+		this.obj.button:UnlockHighlight()
 		this.obj:Fire("OnLeave")
 	end

@@ -386,7 +388,7 @@ do
 			AceGUI:ClearFocus()
 		else
 			self.open = true
-			self.pullout:SetWidth(self.frame:GetWidth())
+			self.pullout:SetWidth(self.pulloutWidth or self.frame:GetWidth())
 			self.pullout:Open("TOPLEFT", self.frame, "BOTTOMLEFT", 0, self.label:IsShown() and -2 or 0)
 			AceGUI:SetFocus(self)
 		end
@@ -403,6 +405,7 @@ do
 		end

 		self.open = true
+		self:Fire("OnOpened")
 	end

 	local function OnPulloutClose(this)
@@ -461,6 +464,7 @@ do
 		self:SetHeight(44)
 		self:SetWidth(200)
 		self:SetLabel()
+		self:SetPulloutWidth(nil)
 	end

 	-- exported, AceGUI callback
@@ -490,9 +494,11 @@ do
 		if disabled then
 			self.text:SetTextColor(0.5,0.5,0.5)
 			self.button:Disable()
+			self.button_cover:Disable()
 			self.label:SetTextColor(0.5,0.5,0.5)
 		else
 			self.button:Enable()
+			self.button_cover:Enable()
 			self.label:SetTextColor(1,.82,0)
 			self.text:SetTextColor(1,1,1)
 		end
@@ -515,9 +521,9 @@ do
 		if text and text ~= "" then
 			self.label:SetText(text)
 			self.label:Show()
-			self.dropdown:SetPoint("TOPLEFT",self.frame,"TOPLEFT",-15,-18)
-			self:SetHeight(44)
-			self.alignoffset = 30
+			self.dropdown:SetPoint("TOPLEFT",self.frame,"TOPLEFT",-15,-14)
+			self:SetHeight(40)
+			self.alignoffset = 26
 		else
 			self.label:SetText("")
 			self.label:Hide()
@@ -635,6 +641,10 @@ do
 		return self.multiselect
 	end

+	local function SetPulloutWidth(self, width)
+		self.pulloutWidth = width
+	end
+
 	--[[ Constructor ]]--

 	local function Constructor()
@@ -666,8 +676,9 @@ do
 		self.GetMultiselect = GetMultiselect
 		self.SetItemValue = SetItemValue
 		self.SetItemDisabled = SetItemDisabled
+		self.SetPulloutWidth = SetPulloutWidth

-		self.alignoffset = 30
+		self.alignoffset = 26

 		frame:SetScript("OnHide",Dropdown_OnHide)

@@ -694,6 +705,15 @@ do
 		button:SetScript("OnLeave",Control_OnLeave)
 		button:SetScript("OnClick",Dropdown_TogglePullout)

+		local button_cover = CreateFrame("BUTTON",nil,self.frame)
+		self.button_cover = button_cover
+		button_cover.obj = self
+		button_cover:SetPoint("TOPLEFT",self.frame,"BOTTOMLEFT",0,25)
+		button_cover:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT")
+		button_cover:SetScript("OnEnter",Control_OnEnter)
+		button_cover:SetScript("OnLeave",Control_OnLeave)
+		button_cover:SetScript("OnClick",Dropdown_TogglePullout)
+
 		local text = _G[dropdown:GetName() .. "Text"]
 		self.text = text
 		text.obj = self
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua
index acd7131..c67902c 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua
@@ -1,7 +1,7 @@
 --[[-----------------------------------------------------------------------------
 EditBox Widget
 -------------------------------------------------------------------------------]]
-local Type, Version = "EditBox", 24
+local Type, Version = "EditBox", 25
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -90,6 +90,11 @@ local function EditBox_OnReceiveDrag(frame)
 		self:SetText(name)
 		self:Fire("OnEnterPressed", name)
 		ClearCursor()
+	elseif type == "macro" then
+		local name = GetMacroInfo(id)
+		self:SetText(name)
+		self:Fire("OnEnterPressed", name)
+		ClearCursor()
 	end
 	HideButton(self)
 	AceGUI:ClearFocus()
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
index 7f0bd5f..583f29d 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua
@@ -2,7 +2,7 @@
 Slider Widget
 Graphical Slider, like, for Range values.
 -------------------------------------------------------------------------------]]
-local Type, Version = "Slider", 20
+local Type, Version = "Slider", 21
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -61,6 +61,10 @@ local function Slider_OnValueChanged(frame)
 	local self = frame.obj
 	if not frame.setup then
 		local newvalue = frame:GetValue()
+		if self.step and self.step > 0 then
+			local min_value = self.min or 0
+			newvalue = floor((newvalue - min_value) / self.step + 0.5) * self.step + min_value
+		end
 		if newvalue ~= self.value and not self.disabled then
 			self.value = newvalue
 			self:Fire("OnValueChanged", newvalue)
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua
index c2d3d84..1d39c28 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua
@@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0")

 do
 	local widgetType = "LSM30_Sound"
-	local widgetVersion = 10
+	local widgetVersion = 11

 	local contentFrameCache = {}
 	local function ReturnSelf(self)
@@ -68,8 +68,8 @@ do
 			frame.speakeron = speakeron

 			local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite")
-				text:SetPoint("LEFT", check, "RIGHT", 1, 0)
-				text:SetPoint("RIGHT", soundbutton, "LEFT", -2, 0)
+				text:SetPoint("TOPLEFT", check, "TOPRIGHT", 1, 0)
+				text:SetPoint("BOTTOMRIGHT", soundbutton, "BOTTOMLEFT", -2, 0)
 				text:SetJustifyH("LEFT")
 				text:SetText("Test Test Test Test Test Test Test")
 			frame.text = text
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua
index d8930dd..2d0e32c 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua
@@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0")

 do
 	local widgetType = "LSM30_Statusbar"
-	local widgetVersion = 10
+	local widgetVersion = 11

 	local contentFrameCache = {}
 	local function ReturnSelf(self)
@@ -53,8 +53,8 @@ do
 				local font, size = text:GetFont()
 				text:SetFont(font,size,"OUTLINE")

-				text:SetPoint("LEFT", check, "RIGHT", 3, 0)
-				text:SetPoint("RIGHT", frame, "RIGHT", -2, 0)
+				text:SetPoint("TOPLEFT", check, "TOPRIGHT", 3, 0)
+				text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 0)
 				text:SetJustifyH("LEFT")
 				text:SetText("Test Test Test Test Test Test Test")
 			frame.text = text
diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua
index 0c8701b..14ccd59 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua
@@ -3,7 +3,7 @@
 local DataVersion = 9001 -- dev version always overwrites everything else :)
 --@end-debug@]===]
 --@non-debug@
-local DataVersion = 47
+local DataVersion = 51
 --@end-non-debug@
 local AGSMW = LibStub:NewLibrary("AceGUISharedMediaWidgets-1.0", DataVersion)

diff --git a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
index 6fbe066..085449b 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua
@@ -2,7 +2,7 @@
 TreeGroup Container
 Container that uses a tree control to switch between groups.
 -------------------------------------------------------------------------------]]
-local Type, Version = "TreeGroup", 36
+local Type, Version = "TreeGroup", 38
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -212,7 +212,7 @@ local function Button_OnEnter(frame)
 	if self.enabletooltips then
 		GameTooltip:SetOwner(frame, "ANCHOR_NONE")
 		GameTooltip:SetPoint("LEFT",frame,"RIGHT")
-		GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, 1)
+		GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, true)

 		GameTooltip:Show()
 	end
@@ -335,6 +335,8 @@ local methods = {
 		button.toggle.button = button
 		button.toggle:SetScript("OnClick",Expand_OnClick)

+		button.text:SetHeight(14) -- Prevents text wrapping
+
 		return button
 	end,

diff --git a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
index f242437..d172e6f 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua
@@ -1,7 +1,7 @@
 --[[-----------------------------------------------------------------------------
 ColorPicker Widget
 -------------------------------------------------------------------------------]]
-local Type, Version = "ColorPicker", 21
+local Type, Version = "ColorPicker-ElvUI", 1
 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

@@ -51,6 +51,7 @@ local function ColorSwatch_OnClick(frame)
 	local self = frame.obj
 	if not self.disabled then
 		ColorPickerFrame:SetFrameStrata("FULLSCREEN_DIALOG")
+		ColorPickerFrame:SetFrameLevel(frame:GetFrameLevel() + 10)
 		ColorPickerFrame:SetClampedToScreen(true)

 		ColorPickerFrame.func = function()
@@ -66,12 +67,20 @@ local function ColorSwatch_OnClick(frame)
 			ColorCallback(self, r, g, b, a, true)
 		end

-		local r, g, b, a = self.r, self.g, self.b, self.a
+		local r, g, b, a, dR, dG, dB, dA = self.r, self.g, self.b, self.a, self.dR, self.dG, self.dB, self.dA
 		if self.HasAlpha then
 			ColorPickerFrame.opacity = 1 - (a or 0)
 		end
 		ColorPickerFrame:SetColorRGB(r, g, b)

+		if(ColorPPDefault and self.dR and self.dG and self.dB) then
+			local alpha = 1
+			if(self.dA) then
+				alpha = 1 - self.dA
+			end
+			ColorPPDefault.colors = {r = self.dR, g = self.dG, b = self.dB, a = alpha}
+		end
+
 		ColorPickerFrame.cancelFunc = function()
 			ColorCallback(self, r, g, b, a, true)
 		end
@@ -100,11 +109,15 @@ local methods = {
 		self.text:SetText(text)
 	end,

-	["SetColor"] = function(self, r, g, b, a)
+	["SetColor"] = function(self, r, g, b, a, defaultR, defaultG, defaultB, defaultA)
 		self.r = r
 		self.g = g
 		self.b = b
 		self.a = a or 1
+		self.dR = defaultR
+		self.dG = defaultG
+		self.dB = defaultB
+		self.dA = defaultA
 		self.colorSwatch:SetVertexColor(r, g, b, a)
 	end,

diff --git a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
index 951cad7..0dd3bff 100644
--- a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
+++ b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua
@@ -1,4 +1,4 @@
---[[ $Id: AceGUIWidget-DropDown.lua 1101 2013-10-25 12:46:47Z nevcairiel $ ]]--
+--[[ $Id: AceGUIWidget-DropDown.lua 1116 2014-10-12 08:15:46Z nevcairiel $ ]]--
 local AceGUI = LibStub("AceGUI-3.0")

 -- Lua APIs
@@ -356,7 +356,7 @@ end

 do
 	local widgetType = "Dropdown"
-	local widgetVersion = 29
+	local widgetVersion = 30

 	--[[ Static data ]]--

@@ -494,9 +494,11 @@ do
 		if disabled then
 			self.text:SetTextColor(0.5,0.5,0.5)
 			self.button:Disable()
+			self.button_cover:Disable()
 			self.label:SetTextColor(0.5,0.5,0.5)
 		else
 			self.button:Enable()
+			self.button_cover:Enable()
 			self.label:SetTextColor(1,.82,0)
 			self.text:SetTextColor(1,1,1)
 		end
@@ -704,6 +706,7 @@ do
 		button:SetScript("OnClick",Dropdown_TogglePullout)

 		local button_cover = CreateFrame("BUTTON",nil,self.frame)
+		self.button_cover = button_cover
 		button_cover.obj = self
 		button_cover:SetPoint("TOPLEFT",self.frame,"BOTTOMLEFT",0,25)
 		button_cover:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT")
diff --git a/ElvUI_SLE/modules/loot.lua b/ElvUI_SLE/modules/loot.lua
index 81189d7..a1f0e64 100644
--- a/ElvUI_SLE/modules/loot.lua
+++ b/ElvUI_SLE/modules/loot.lua
@@ -1,7 +1,7 @@
 local E, L, V, P, G = unpack(ElvUI);
 local LT = E:GetModule('SLE_Loot')
 local M = E:GetModule('Misc')
-local ACD = LibStub("AceConfigDialog-3.0")
+local ACD = LibStub("AceConfigDialog-3.0-ElvUI")

 local check = false
 local t = 0
diff --git a/ElvUI_SLE/modules/screensaver.lua b/ElvUI_SLE/modules/screensaver.lua
index d63c2bc..ab1ff86 100644
--- a/ElvUI_SLE/modules/screensaver.lua
+++ b/ElvUI_SLE/modules/screensaver.lua
@@ -3,7 +3,7 @@ local SLE = E:GetModule('SLE');
 local S = E:GetModule("SLE_ScreenSaver")
 local LSM = LibStub("LibSharedMedia-3.0")
 local Sk = E:GetModule("Skins")
-local ACD = LibStub("AceConfigDialog-3.0")
+local ACD = LibStub("AceConfigDialog-3.0-ElvUI")

 local SS
 local ru = false
diff --git a/ElvUI_SLE/modules/sledatatexts/friends.lua b/ElvUI_SLE/modules/sledatatexts/friends.lua
index 9c27367..7ce395f 100644
--- a/ElvUI_SLE/modules/sledatatexts/friends.lua
+++ b/ElvUI_SLE/modules/sledatatexts/friends.lua
@@ -1,6 +1,6 @@
 local E, L, V, P, G = unpack(ElvUI);
 local LibQTip = LibStub('LibQTip-1.0')
-local ACD = LibStub("AceConfigDialog-3.0")
+local ACD = LibStub("AceConfigDialog-3.0-ElvUI")
 local DT = E:GetModule('DataTexts')
 local LDB = LibStub("LibDataBroker-1.1"):NewDataObject("S&L Friends",
 {
diff --git a/ElvUI_SLE/modules/sledatatexts/guild.lua b/ElvUI_SLE/modules/sledatatexts/guild.lua
index 1c7a87d..9a27aee 100644
--- a/ElvUI_SLE/modules/sledatatexts/guild.lua
+++ b/ElvUI_SLE/modules/sledatatexts/guild.lua
@@ -1,6 +1,6 @@
 local E, L, V, P, G = unpack(ElvUI);
 local LibQTip = LibStub('LibQTip-1.0')
-local ACD = LibStub("AceConfigDialog-3.0")
+local ACD = LibStub("AceConfigDialog-3.0-ElvUI")
 local DT = E:GetModule('DataTexts')
 local LDB = LibStub("LibDataBroker-1.1"):NewDataObject("S&L Guild",
 {
diff --git a/ElvUI_SLE/modules/sledatatexts/version.lua b/ElvUI_SLE/modules/sledatatexts/version.lua
index afb3f67..e85970c 100644
--- a/ElvUI_SLE/modules/sledatatexts/version.lua
+++ b/ElvUI_SLE/modules/sledatatexts/version.lua
@@ -2,7 +2,7 @@
 --Version datatext. Only in Russian for now.
 local DT = E:GetModule('DataTexts')
 local SLE = E:GetModule('SLE')
-local ACD = LibStub("AceConfigDialog-3.0")
+local ACD = LibStub("AceConfigDialog-3.0-ElvUI")

 local displayString = '';
 local lastPanel;
diff --git a/ElvUI_SLE/modules/uibuttons.lua b/ElvUI_SLE/modules/uibuttons.lua
index 4f14868..98599e6 100644
--- a/ElvUI_SLE/modules/uibuttons.lua
+++ b/ElvUI_SLE/modules/uibuttons.lua
@@ -1,6 +1,6 @@
 local E, L, V, P, G = unpack(ElvUI);
 local UB = E:GetModule('SLE_UIButtons');
-local ACD = LibStub("AceConfigDialog-3.0")
+local ACD = LibStub("AceConfigDialog-3.0-ElvUI")
 local lib = LibStub("LibElv-UIButtons-1.0")
 local SLE = E:GetModule("SLE")
 local S = E:GetModule("Skins")
diff --git a/ElvUI_SLE/modules/vehicle.lua b/ElvUI_SLE/modules/vehicle.lua
index 7f5b75e..0f3ea30 100644
--- a/ElvUI_SLE/modules/vehicle.lua
+++ b/ElvUI_SLE/modules/vehicle.lua
@@ -1,7 +1,7 @@
 local E, L, V, P, G = unpack(ElvUI);
 local EVB = E:GetModule("SLE_EnhancedVehicleBar")
 local AB = E:GetModule("ActionBars");
-local LAB = LibStub("LibActionButton-1.0")
+local LAB = LibStub("LibActionButton-1.0-ElvUI")

 -- Regular Button for these bars are 52. 52 * .71 = ~37.. I just rounded it up to 40 and called it good.
 function EVB:Animate(bar, x, y, duration)
diff --git a/ElvUI_SLE/options/core_c.lua b/ElvUI_SLE/options/core_c.lua
index 9ac41cf..485f077 100644
--- a/ElvUI_SLE/options/core_c.lua
+++ b/ElvUI_SLE/options/core_c.lua
@@ -1,7 +1,7 @@
 local E, L, V, P, G = unpack(ElvUI)
 local SLE = E:GetModule('SLE')
 local LT = E:GetModule('SLE_Loot')
-local ACD = LibStub("AceConfigDialog-3.0")
+local ACD = LibStub("AceConfigDialog-3.0-ElvUI")

 local function configTable()
 	E.Options.args.ElvUI_Header.name = E.Options.args.ElvUI_Header.name.." + Shadow & Light"..format(": |cff99ff33%s|r",SLE.version)
diff --git a/ElvUI_SLE/options/errorframe_c.lua b/ElvUI_SLE/options/errorframe_c.lua
index 79199ae..5f5642e 100644
--- a/ElvUI_SLE/options/errorframe_c.lua
+++ b/ElvUI_SLE/options/errorframe_c.lua
@@ -1,6 +1,6 @@
 local E, L, V, P, G = unpack(ElvUI);
 local F = E:GetModule('SLE_ErrorFrame');
-local ACD = LibStub("AceConfigDialog-3.0")
+local ACD = LibStub("AceConfigDialog-3.0-ElvUI")

 local function configTable()
 	E.Options.args.sle.args.options.args.general.args.errorframe = {