From 3071a72c31e3d4b7ecfab73696e74fd3021ce32a Mon Sep 17 00:00:00 2001 From: Safturento Date: Wed, 2 Nov 2011 15:14:55 -0500 Subject: [PATCH] Moved .git file to stop the folder-ception going on in the packaging. :P --- media/SEMPRG__.TTF | Bin 0 -> 60052 bytes media/blankTex.tga | Bin 0 -> 12332 bytes media/glowTex.tga | Bin 0 -> 8236 bytes media/normTex.tga | Bin 0 -> 14690 bytes stAddonManager.lua | 354 +++++++++++++++++++++++++++++++++++++ stAddonManager.toc | 7 + stAddonManager/media/SEMPRG__.TTF | Bin 60052 -> 0 bytes stAddonManager/media/blankTex.tga | Bin 12332 -> 0 bytes stAddonManager/media/glowTex.tga | Bin 8236 -> 0 bytes stAddonManager/media/normTex.tga | Bin 14690 -> 0 bytes stAddonManager/stAddonManager.lua | 354 ------------------------------------- stAddonManager/stAddonManager.toc | 7 - 12 files changed, 361 insertions(+), 361 deletions(-) create mode 100644 media/SEMPRG__.TTF create mode 100644 media/blankTex.tga create mode 100644 media/glowTex.tga create mode 100644 media/normTex.tga create mode 100644 stAddonManager.lua create mode 100644 stAddonManager.toc delete mode 100644 stAddonManager/media/SEMPRG__.TTF delete mode 100644 stAddonManager/media/blankTex.tga delete mode 100644 stAddonManager/media/glowTex.tga delete mode 100644 stAddonManager/media/normTex.tga delete mode 100644 stAddonManager/stAddonManager.lua delete mode 100644 stAddonManager/stAddonManager.toc diff --git a/media/SEMPRG__.TTF b/media/SEMPRG__.TTF new file mode 100644 index 0000000000000000000000000000000000000000..4bb28835059df017e2ebef34b9d96453cab82fc9 GIT binary patch literal 60052 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 F{{ebivkL$K literal 0 HcmV?d00001 diff --git a/media/normTex.tga b/media/normTex.tga new file mode 100644 index 0000000000000000000000000000000000000000..2d998376b297e97cc1264391e344cfa587574dd1 GIT binary patch literal 14690 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 S`@jA3|NixF|N57Iss0aOVMKQT literal 0 HcmV?d00001 diff --git a/stAddonManager.lua b/stAddonManager.lua new file mode 100644 index 0000000..8d9950f --- /dev/null +++ b/stAddonManager.lua @@ -0,0 +1,354 @@ +------------------------------------------------------ +-- MEDIA & CONFIG ------------------------------------ +------------------------------------------------------ +local font = { [[Interface\AddOns\stAddonManager\media\SEMPRG__.TTF]], 8, "MONOCHROMEOUTLINE" } +local barTex = [[Interface\AddOns\stAddonManager\media\normTex.tga]] +local blankTex = [[Interface\AddOns\stAddonManager\media\blankTex.tga]] +local glowTex = [[Interface\AddOns\stAddonManager\media\glowTex.tga]] + +local bordercolor = {0, 0, 0, 1} +local backdropcolor = {0.05, 0.05, 0.05, 0.9} +local backdrop = { + bgFile = blankTex, + edgeFile = blankTex, + tile = false, tileSize = 0, edgeSize = 1, + insets = { left = 1, right = 1, top = 1, bottom = 1}, +} + +------------------------------------------------------ +-- INITIAL FRAME CREATION ---------------------------- +------------------------------------------------------ +stAddonManager = CreateFrame("Frame", "stAddonManager", UIParent) +stAddonManager:SetFrameStrata("HIGH") +stAddonManager.header = CreateFrame("Frame", "stAddonmanager_Header", stAddonManager) + +stAddonManager.header:SetPoint("CENTER", UIParent, "CENTER", 0, 50) +stAddonManager:SetPoint("TOP", stAddonManager.header, "TOP", 0, 0) + +------------------------------------------------------ +-- FUNCTIONS ----------------------------------------- +------------------------------------------------------ +local function SkinFrame(frame, shadowed) + frame:SetBackdrop(backdrop) + frame:SetBackdropColor(unpack(backdropcolor)) + frame:SetBackdropBorderColor(unpack(bordercolor)) + + if shadowed and not frame.shadow then + local shadow = CreateFrame("Frame", nil, frame) + shadow:SetFrameLevel(frame:GetFrameLevel()) + shadow:SetFrameStrata(frame:GetFrameStrata()) + shadow:SetPoint("TOPLEFT", -3, 3) + shadow:SetPoint("BOTTOMLEFT", -3, -3) + shadow:SetPoint("TOPRIGHT", 3, 3) + shadow:SetPoint("BOTTOMRIGHT", 3, -3) + shadow:SetBackdrop( { + edgeFile = glowTex, edgeSize = 3, + insets = {left = 5, right = 5, top = 5, bottom = 5}, + }) + shadow:SetBackdropColor(0, 0, 0, 0) + shadow:SetBackdropBorderColor(0, 0, 0, 0.8) + frame.shadow = shadow + end +end + +local function CreateBackdrop(frame, shadowed) + if not frame.backdrop then + local backdrop = CreateFrame("Frame", nil, frame) + backdrop:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 1, 1) + backdrop:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT", -1, -1) + SkinFrame(backdrop, shadowed) + backdrop:SetFrameLevel(frame:GetFrameLevel()>0 and frame:GetFrameLevel()-1 or 0) + backdrop:SetFrameStrata(frame:GetFrameStrata()) + + frame.backdrop = backdrop + end +end + +local function StripTextures(object, kill) + for i=1, object:GetNumRegions() do + local region = select(i, object:GetRegions()) + if region:GetObjectType() == "Texture" then + region:SetTexture(nil) + end + end +end + +local function SkinScrollBar(frame, thumbTrim) + if _G[frame:GetName().."BG"] then _G[frame:GetName().."BG"]:SetTexture(nil) end + if _G[frame:GetName().."Track"] then _G[frame:GetName().."Track"]:SetTexture(nil) end + + if _G[frame:GetName().."Top"] then + _G[frame:GetName().."Top"]:SetTexture(nil) + _G[frame:GetName().."Bottom"]:SetTexture(nil) + _G[frame:GetName().."Middle"]:SetTexture(nil) + end + + local uScroll = _G[frame:GetName().."ScrollUpButton"] + local dScroll = _G[frame:GetName().."ScrollDownButton"] + local track = _G[frame:GetName().."Track"] + + if uScroll and dScroll then + StripTextures(uScroll) + StripTextures(dScroll) + dScroll:EnableMouse(false) + uScroll:EnableMouse(false) + + if frame:GetThumbTexture() then + frame:GetThumbTexture():SetTexture(nil) + if not frame.thumbbg then + frame.thumbbg = CreateFrame("Frame", nil, frame) + frame.thumbbg:SetPoint("TOPLEFT", frame:GetThumbTexture(), "TOPLEFT", 2, 14) + frame.thumbbg:SetPoint("BOTTOMRIGHT", frame:GetThumbTexture(), "BOTTOMRIGHT", -2, -14) + SkinFrame(frame.thumbbg) + if frame.trackbg then + frame.thumbbg:SetFrameLevel(frame.trackbg:GetFrameLevel()+2) + end + end + end + end +end + +function stAddonManager:UpdateAddonList(queryString) + local addons = {} + for i=1, GetNumAddOns() do + local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(i) + local lwrTitle, lwrName = strlower(title), strlower(name) + if (queryString and (strfind(lwrTitle,strlower(queryString)) or strfind(lwrName,strlower(queryString)))) or (not queryString) then + addons[i] = {} + addons[i].name = name + addons[i].title = title + addons[i].notes = notes + addons[i].enabled = enabled + end + end + return addons +end + +local function LoadWindow() + if not stAddonManager.Loaded then + local window = stAddonManager + local header = window.header + + tinsert(UISpecialFrames,window:GetName()); + + window:SetSize(300,300) + header:SetSize(300,20) + + SkinFrame(window) + SkinFrame(header) + + header:EnableMouse(true) + header:SetMovable(true) + header:SetScript("OnMouseDown", function(self) self:StartMoving() end) + header:SetScript("OnMouseUp", function(self) self:StopMovingOrSizing() end) + + local hTitle = stAddonManager.header:CreateFontString(nil, "OVERLAY") + hTitle:SetFont(unpack(font)) + hTitle:SetPoint("CENTER") + hTitle:SetText("|cff00aaffst|rAddonManager") + header.title = hTitle + + local close = CreateFrame("Button", nil, header) + close:SetPoint("RIGHT", header, "RIGHT", 0, 0) + close:SetFrameLevel(header:GetFrameLevel()+2) + close:SetSize(20, 20) + close.text = close:CreateFontString(nil, "OVERLAY") + close.text:SetFont(unpack(font)) + close.text:SetText("x") + close.text:SetPoint("CENTER", close, "CENTER", 0, 0) + close:SetScript("OnEnter", function(self) self.text:SetTextColor(0/255, 170/255, 255/255) end) + close:SetScript("OnLeave", function(self) self.text:SetTextColor(255/255, 255/255, 255/255) end) + close:SetScript("OnClick", function() window:Hide() end) + header.close = close + + addonListBG = CreateFrame("Frame", window:GetName().."_ScrollBackground", window) + addonListBG:SetPoint("TOPLEFT", header, "TOPLEFT", 10, -50) + addonListBG:SetWidth(window:GetWidth()-20) + addonListBG:SetHeight(window:GetHeight()-60) + SkinFrame(addonListBG) + + --Create scroll frame (God damn these things are a pain) + local scrollFrame = CreateFrame("ScrollFrame", window:GetName().."_ScrollFrame", window, "UIPanelScrollFrameTemplate") + scrollFrame:SetPoint("TOPLEFT", addonListBG, "TOPLEFT", 0, -2) + scrollFrame:SetWidth(addonListBG:GetWidth()-25) + scrollFrame:SetHeight(addonListBG:GetHeight()-5) + SkinScrollBar(_G[window:GetName().."_ScrollFrameScrollBar"]) + scrollFrame:SetFrameLevel(window:GetFrameLevel()+1) + + scrollFrame.Anchor = CreateFrame("Frame", window:GetName().."_ScrollAnchor", scrollFrame) + scrollFrame.Anchor:SetPoint("TOPLEFT", scrollFrame, "TOPLEFT", 0, -3) + scrollFrame.Anchor:SetWidth(window:GetWidth()-40) + scrollFrame.Anchor:SetHeight(scrollFrame:GetHeight()) + scrollFrame.Anchor:SetFrameLevel(scrollFrame:GetFrameLevel()+1) + scrollFrame:SetScrollChild(scrollFrame.Anchor) + + --Load up addon information + stAddonManager.AllAddons = stAddonManager:UpdateAddonList() + stAddonManager.FilteredAddons = stAddonManager:UpdateAddonList() + stAddonManager.showEnabled = true + stAddonManager.showDisabled = true + + stAddonManager.Buttons = {} + + --Create initial list + for i, addon in pairs(stAddonManager.AllAddons) do + local button = CreateFrame("Frame", nil, scrollFrame.Anchor) + button:SetFrameLevel(scrollFrame.Anchor:GetFrameLevel() + 1) + button:SetSize(16, 16) + SkinFrame(button) + if addon.enabled then + button:SetBackdropColor(0/255, 170/255, 255/255) + end + + if i == 1 then + button:SetPoint("TOPLEFT", scrollFrame.Anchor, "TOPLEFT", 5, -5) + else + button:SetPoint("TOP", stAddonManager.Buttons[i-1], "BOTTOM", 0, -5) + end + button.text = button:CreateFontString(nil, "OVERLAY") + button.text:SetFont(unpack(font)) + button.text:SetJustifyH("LEFT") + button.text:SetPoint("LEFT", button, "RIGHT", 8, 0) + button.text:SetPoint("RIGHT", scrollFrame.Anchor, "RIGHT", 0, 0) + button.text:SetText(addon.title) + + button:SetScript("OnEnter", function(self) + --tooltip stuff + end) + + button:SetScript("OnMouseDown", function(self) + if addon.enabled then + self:SetBackdropColor(unpack(backdropcolor)) + DisableAddOn(addon.name) + addon.enabled = false + else + self:SetBackdropColor(0/255, 170/255, 255/255) + EnableAddOn(addon.name) + addon.enabled = true + end + end) + + stAddonManager.Buttons[i] = button + end + + local function UpdateList(AddonsTable) + --Start off by hiding all of the buttons + for _, b in pairs(stAddonManager.Buttons) do b:Hide() end + + local bIndex = 1 + for i, addon in pairs(AddonsTable) do + local button = stAddonManager.Buttons[bIndex] + button:Show() + if addon.enabled then + button:SetBackdropColor(0/255, 170/255, 255/255) + else + button:SetBackdropColor(unpack(backdropcolor)) + end + + button:SetScript("OnMouseDown", function(self) + if addon.enabled then + self:SetBackdropColor(unpack(backdropcolor)) + DisableAddOn(addon.name) + addon.enabled = false + else + self:SetBackdropColor(0/255, 170/255, 255/255) + EnableAddOn(addon.name) + addon.enabled = true + end + end) + + button.text:SetText(addon.title) + bIndex = bIndex+1 + end + end + + --Search Bar + local searchBar = CreateFrame("EditBox", window:GetName().."_SearchBar", window) + searchBar:SetFrameLevel(window:GetFrameLevel()+1) + searchBar:SetPoint("TOPLEFT", header, "BOTTOMLEFT", 10, -5) + searchBar:SetWidth(200) + searchBar:SetHeight(20) + SkinFrame(searchBar) + searchBar:SetFont(unpack(font)) + searchBar:SetText("Search") + searchBar:SetAutoFocus(false) + searchBar:SetTextInsets(3, 0, 0 ,0) + searchBar:SetScript("OnEnterPressed", function(self) self:ClearFocus() end) + searchBar:SetScript("OnEscapePressed", function(self) searchBar:SetText("Search") UpdateList(stAddonManager.AllAddons) searchBar:ClearFocus() end) + searchBar:SetScript("OnEditFocusGained", function(self) self:HighlightText() end) + searchBar:SetScript("OnTextChanged", function(self, input) + if input then + stAddonManager.FilteredAddons = stAddonManager:UpdateAddonList(self:GetText()) + UpdateList(stAddonManager.FilteredAddons) + end + end) + + local sbClear = CreateFrame("Button", nil, searchBar) + sbClear:SetPoint("RIGHT", searchBar, "RIGHT", 0, 0) + sbClear:SetFrameLevel(searchBar:GetFrameLevel()+2) + sbClear:SetSize(20, 20) + sbClear.text = sbClear:CreateFontString(nil, "OVERLAY") + sbClear.text:SetFont(unpack(font)) + sbClear.text:SetText("x") + sbClear.text:SetPoint("CENTER", sbClear, "CENTER", 0, 0) + sbClear:SetScript("OnEnter", function(self) self.text:SetTextColor(0/255, 170/255, 255/255) end) + sbClear:SetScript("OnLeave", function(self) self.text:SetTextColor(255/255, 255/255, 255/255) end) + sbClear:SetScript("OnClick", function(self) searchBar:SetText("Search") UpdateList(stAddonManager.AllAddons) searchBar:ClearFocus() end) + searchBar.clear = sbClear + + local reloadButton = CreateFrame("Button", window:GetName().."_ReloadUIButton", window) + reloadButton:SetPoint("LEFT", searchBar, "RIGHT", 5, 0) + reloadButton:SetWidth(window:GetWidth()-25-searchBar:GetWidth()) + reloadButton:SetHeight(searchBar:GetHeight()) + reloadButton.text = reloadButton:CreateFontString(nil, "OVERLAY") + reloadButton.text:SetPoint("CENTER") + reloadButton.text:SetFont(unpack(font)) + reloadButton.text:SetText("ReloadUI") + reloadButton:SetScript("OnEnter", function(self) self.text:SetTextColor(0/255, 170/255, 255/255) end) + reloadButton:SetScript("OnLeave", function(self) self.text:SetTextColor(255/255, 255/255, 255/255) end) + reloadButton:SetScript("OnClick", function(self) + if InCombatLockdown() then return end + ReloadUI() + end) + SkinFrame(reloadButton) + + stAddonManager.Loaded = true + else + stAddonManager:Show() + end +end + +SLASH_STADDONMANAGER1, SLASH_STADDONMANAGER2, SLASH_STADDONMANAGER3 = "/staddonmanager", "/stam", "/staddon" +SlashCmdList["STADDONMANAGER"] = LoadWindow + +local function CheckForAddon(event, addon, addonName) + return ((event == "PLAYER_ENTERING_WORLD" and IsAddOnLoaded(addonName)) or (event == "ADDON_LOADED" and addon == addonName)) +end + +local gmbAddOns = CreateFrame("Button", "GameMenuButtonAddOns", GameMenuFrame, "GameMenuButtonTemplate") +gmbAddOns:SetSize(GameMenuButtonMacros:GetWidth(), GameMenuButtonMacros:GetHeight()) +GameMenuFrame:SetHeight(GameMenuFrame:GetHeight()+GameMenuButtonMacros:GetHeight()); +GameMenuButtonLogout:SetPoint("TOP", gmbAddOns, "BOTTOM", 0, -1) +gmbAddOns:SetPoint("TOP", GameMenuButtonMacros, "BOTTOM", 0, -1) +gmbAddOns:SetText("|cff00aaffst|rAddonManager") +gmbAddOns:SetScript("OnClick", function() + HideUIPanel(GameMenuFrame); + LoadWindow() +end) + +gmbAddOns:RegisterEvent("ADDON_LOADED") +gmbAddOns:RegisterEvent("PLAYER_ENTERING_WORLD") +gmbAddOns:SetScript("OnEvent", function(self, event, addon) + if CheckForAddon(event, addon, "Aurora") then + local F, C = unpack(Aurora) + F.Reskin(gmbAddOns) + + elseif CheckForAddon(event, addon, "Tukui") then + local T, C, L = unpack(Tukui) + T.SkinButton(gmbAddOns) + local font = {GameMenuButtonMacros:GetFontString():GetFont()} + local shadow = {GameMenuButtonMacros:GetFontString():GetShadowOffset()} + gmbAddOns:GetFontString():SetFont(unpack(font)) + gmbAddOns:GetFontString():SetShadowOffset(unpack(shadow)) + end +end) \ No newline at end of file diff --git a/stAddonManager.toc b/stAddonManager.toc new file mode 100644 index 0000000..1aeb330 --- /dev/null +++ b/stAddonManager.toc @@ -0,0 +1,7 @@ +## Interface: 40200 +## Author: Safturento +## Version: @project-version@ +## Title: |cff00aaffst|rAddonManager +## Notes: A simple and minimalistic addon to disable/enabled addons without logging out. + +stAddonManager.lua \ No newline at end of file diff --git a/stAddonManager/media/SEMPRG__.TTF b/stAddonManager/media/SEMPRG__.TTF deleted file mode 100644 index 4bb28835059df017e2ebef34b9d96453cab82fc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60052 zcmeIb34mPJS?7Ch?Ojz})z#H|Yw4D}@3yQsi$f|T&H~wpLr5TyD7I_~%eJf~ExTK` z+KHVI$60`ou!JNm0m2&A5CQ}q!!|tNF+6652h6-Yh6$O(5L<~QkJNs@|98&0_g439 z+W|6R-kYkfs@rv|Zk_Kt-~N5)J1%j~b=?)N>^}AK>o33R`aiz=cbxnCxAE?)U-7(` zylU`$jrZ{Xf9C(E-EixkgD=|ivTL3DcPq}-N;kae$igT7cIpkzRgQ4}oSP2beCwNc z{r1cGpZDCv%?Iwh=@)liH_88h<=k&SyzjU7gUO#KALH}-{e|21+`6~?lIst1e1`Kk9K8MTksJQ%^{1WtlTY&hrw$(4d+?8c z_~UP9Jn!c-&*L$ZoX4}jy~DjA93^hSeL5VMTqhX`$7OdSd22YXxP|2Wa9jl$&2U_E z+e+KRaoxGnvz;)ko38GU6F27mEF70yJt>9bvKu5X4968WmQ07^swK62-Qy_eo} z`=J~5UUu8wBkp>)*WKz4x&v;%yMf~c_e!2`c1L+Ac#2x3U4;lJ!N!XdD#{2N-%gu1SDc*{lpGW>mYHL zyy?1ypDUkx-OfGxW_Ip-!}BkFyar#~QNG2UaF4rHx0W1B?n+L6^YM6hRaYN$o6V7t zMx$IVm68O;dGO=ONTD}R;loTkJV~C^COZS$uE~4f-mas z)q{nk(HM-B>Xl03YSl`)RISupy;e&~2?U?G7rg26Yi8VYuD$%)v9tP1F2D9H|D3(n zU3o?F;(fmglQmwvZ_m#SUiq4*_pbR>*LeI>Pk-&M-eT|EUA>*pNtV`r@3F^951k!< zPU#MQTesstso%an{5Fis@0MMqUMrQ8dZkvaRg*G@N&M~S_#d9W_U!bv?y}3m4<`jb ze9g|@uHNL%-N(6|E*&~MwYsWbE!~kUg1!{a z-Uw^aPxg22-ZjnR#EBD+o;Xpu`j~(8B@GiGT6WmxWuLu(n&sPuPMcEZI4^YZ|=m)MNK9d+eIr zwVTHzrzVplOG~S(ORFo~{7dqM{C|2Ab>iIPZ-$CLWAl5l`>%t0lS?icT)J@aMdzQl zy}GSYnVp%O7_GJ&t~Um{E7Mcma>wo50Wg&dFIX%uoO{mJEhCLO)HpxaA8$32x|^D; zPhW6;ee|52Oiyjw*17WRdFMhdwTXVcTpRCI%az*2?N+%l)~#K1VW&L0W3jfdeWpCU zWxhF*bOMSXSz#l4im389inMLm`)hk13ooE^j7P*?$6b=g-X+3bAH4NJnkdik2j)B; zJqE!cpYXUmwR8$p3X6uzaFBfIzQ!D#TN+4PSa4SmTNnAY~MCl zojw0NCJ5w$)Tzl@qyF@3Ai>(@mo>{H&wR$yc0;4JXI;JPigvYi=_O<3Zf*3cE18F6 zabdpf%5e&wGkq<8LS>#fO_~_K<3y~Z-tgftb;DoI=H%M^oLp-Z4c+GM&~$dMip2eN z?7W7#N|-LA{_uABmKE@?nXs3$-?_4KFMriz$(_fJ9oOMX`Ic2Xw-R2~?A_DHj-7qq zF;3_|j7v#1+R5@BXz-L6j8!HDb5!cI2_UL)bl6^gUV5@MzfNEhGDDz-Mw~ zWvRNda@I=>UaF5gvU+UgWO8tAWo7LVaLdceNm*@Z2CoyIGw3Ik$^g?&vN^%R%LFnE zY^o=YDsh$ks4B*Xj0eGw431XiV{lE&-8{HBX}1TXrr=D_S4J98d#j1;Z@F5+G}IgQ zGQXKrQsfC&{CS0E_(Aui+Na{$`QLBr_pcH7J(1SV-edPHFWC@D{Rsk9Z!;~ZDrmOPHP80CrZM0W<3KohzrO~fX5nr`CB zOW5P5Oj(`sFP;-?8i5nVUlV3apwM>64ZE)W<6Qrei9aY_MjKItpuyN;a^Ea>e;n7@>(*v zxEt&4JCc*fk4J7h4lHGta*6x0c&CxXANxbEJZ` zAciTy#qdkQ(Cd(GU3Oy&g;OhL8L1EIkAkeUt4>}>9ynt zZnN32$w`wdU3YA7buu2|PZJEOHmw_PiV)uE}>rZ&4a z6)_rLCT4P@BrcF=gE6szNf~$>T*^RAp(;cxZf(mx<`A6!`}-FEhUrTs$~yeVQ3 zE7I8r8D9nKsah`8MjF`t^_tWNR)65z=Ul4^^Jw#8Pzqy+K{pD)#ehChUb1vz3H+TX z-6}m9MkCzKx{nTCmCVfz=H2WJ(xNijHc3+Hb`T?Guk^}eBMnSq(7%GTN4K4nfxzprz!gR-^X}&d-(oU$Y<338S?zc=G&up7Q1kQ@ zwtuzbb;0}`7#Z)?Tfi*vDrEqbsen~bZsD{{&zo~lo}8IZ@C}k?M(`2b^fiS(=Mw~& z^JZL|x%zcT8?~K;#05{%4@{M%?9191Rr(B=tm$Brdw_`+Ud=g1>BM0$L zCcWBjDnF%Dn$kp5Il0JV=k7SUyLxyzE6G2utggL-*<4NTdSqp3_4MhpSb=NZ{A_mJ zorB%R_ca{0CZiv1qdXv2b0yoYx>rH)Kg}(X01V70?0%;gO}M3{ndG-iYT+!hIpY=5WDJw>}dNW zcUd$^zbhM&->sX?8f+lsB+ikX7c*K-ZSdoW$y%dQZZ%+n$ffHBAWF$wKt*m$KiEGS z%wsYe?@8`lyB~pg^c3MV)8famq91a7_Z@@hBoh;ZNvvm0>1Z2#*wkT~LA<>&kkbb< z<2|p%%ob`9scDY1(PYt7lU*BVSTEr)=XniFlA4>ybLE6r(wbDynnt+DN6e3vWwYQ` z))aEl-%^l{-Ve}hzA8in2>~kpDRZ*M%+}CWGF~@Mr9`xDk(r7nQ|2);deKZ|%;eG? z$B#eeE!y?C^S&sS4#L)31?F5~Iief!tjv6@Bhp5|TS=${@hHTg^@C5a4t<;Au33P) ze$XXicQbRqV~V-u(nBfgnEhcs|3J_zZCDjf=#L|1(J(U4Cnu0)fHXY?SxC1B4l&(> zf*I>h^ilTHmD-3THLmxt-5v?ScpS-=ifI_hC}cfNY}76yU~v^N0U^)@_|BZDdW#Jp zS6A_fgULqZ%}q#pTeMBIfdLP)CB?V9o$efWfxCn}%+>Dc?pil+&v!3!FLCY~t{ore za(q4ye$gKB{cElaA9@!4g&zEWaS}ev7wlN?KW45EPix;1kDmJLW6)T<$8YI>e5w4r zb={kS-!e*AsnHE$87l=IZa`{sV4^^VvrQ)@Xm{a*zMA8Dlj5*Ww*v&23h-08*2DD2m@H#3)LP@c za=VqJ0ad0UX#DhbQ?~CEK>~?}a8-JgoHSK0+pF{s_Z~m{KCy;uuRQ0AFK!-OX#RLf zB2%6(*020W{*|t8HDvYTmp_p^Zm8B%Aemx!TnJw5P2=Py$1phFw)!xbMK2SA-QeTi z9DQ8*vq{iO42xtmc3};=w!j)ATPJOVNaTv}H;o0TTNLlbqf*F8b~uy2^ys6+L6#ns z^}WidQVUf%rxEwM!8u8@IcT9@geCD3s;DzRaIqb0(xbaH5N;0O5ajYScYbm4kP}xx5B$OuV zQ=Z8NiS3H>kR)S;d?bmyf%3p;-q08;^1=eyAt}w|@Wf~&xO~R!e@}z5t0NU=P_^6} z<7|8DL)ZnIkRij?Y-3+1X|>9hF}O}if)yv%$`H_@-+?#h)> z6vp|`F^S8vY&5<6E5r3W; zyvFy>BCk}_Y*hV=W)1p@GyN~^FEjt->asGK%W`K{POtcBTsgfa!_d=~xVGxPelVBR zY6F#+$P6oyk41v4k1~a!<)RHGSIaYL&D*AnA|K4a6RQY_vs3<;EI!hA_eUFgtlJqi z>j>8smq{q?`v9G>C?2^YM-|+1(;8({7@0$!q0U?ln{<*p1nlfNFVaQ|v_Xj58L1qIUQND$@a>jwIStx!w5eFgHHl)N47JMiM{4LAaccfY+sr%TZjlstvMCP} zZNs*i&n9_e5L81(gTXQya4$|S6Pz3kV}(I8%SYDSzxIf2Hrlcqb+-*Jv*<=sb{Z^^KxHU%!F-==4Pq-FlrYXqNAKKtUO#{Xx;lTpYV?KHFdK>kmY`9oYH59qhIsxrw6aK*b-56E36=>L`a}Y_(VG01cXJA ze5D0Bk`c-&<#uVR;}#a4O&>*cY~=BRhRcy!C>AZ zdIAL;%#EA^F8#yVDO9kHDCmuM4xZ~h2{~)9UxzFvQ{F(e!flWMY-gUhg&4_iL&Z2q z%98b|mw|R;-armrnAm_VUlfo|d7$8whKo2bkqKwhYSxkzNUwB98alvQy8qPa)2EWV z)*d)@Dz%#eEboY3k&nSNNd4f^2@Z4}a1co9b{IS+g#y?Hkt`oTDgZ{D=p8yg_eIb= zfh;jdAXMoVv`|uV^yy){sPEo9c(%<-OUhjFq|PYMeUXM_UzxE> zrdV8b#B${d;gv0Zl9`IBE{}4=^I4=I%|`$rDNyAyBK_DIzj>&=om3)7p6DsLYe}lsq5rHPGt~Top!7vWbCXlZf6B>%{gXXCOG#x&;Z=We=lQopNE( zOr)Sx3qbKIUQ-}~;+1KEMMYNFBHYKqdZ30fqc_gi4y9`J~p`C z>kqVrNsIY8etdR@pxp@eI;evEMv3mhek2_eauAjB%rq#oLNM5I0$HML>}ahUlCYuV zPI)>Bm599Dt7(qh|LZ>!O_U-Xa;_IK;Md=cGDIERfiGW_1){jtY_E zt7-!3Pl^1>al|Rd@XzUXK@vxu$9Yll>y-#Td9;*zsMzMrdqtU{0yS5Q6ftf=6ABq5 zA>?AzB;t_GBbn1Gm1_eC(mCQQ;;B%R2v0o3Gd>N!TKY$;0a}inV$~X7GZO1JHZBGmXXO%!qJ4A z$o2b3k&<5FLs8bB>%5v^R1PDOy%z>0gGPLtjADolk4kfC!jc0Y+Z!I)#tiSdSm8-;(NF4bg4870 z-?p;y=qkmF?=F4z%zIZ5Y*jhWw(MVbZ9gq*mo3Av|8lyc-e1ZO}k^~Z+cm9t(B zgqp;?F~TICk@H}x(mV*}yd`H|C6Zt_f@D)ln*Eo;fifX{n^PlnwmOGF+pgjfZo3K^l07-Xx-;3#T9D>=MMFxjiPJSH{y z!+Z@I!#HzRR1qFU1!dFZVs2@3D53f&9E5XrLZq;E|LQT30uizxQ+-|78wVHoS~bnN zymns}#$+?^5U|2xfRNQ$$pF_#^PW0H8caN*DtV95N=;=KaW}o^Rl@8hbk*zlUn#C;1qgFu= zG>6b!#oaS5V^`j@k$vqrxDs+Gk-&U|RsSm+2f5{ulxePPaQ4sBQ|?`_Pvgh4SN<2QKB9)?AhH!fRM?h1wodUcy}%VY9#q z=?hbGKTrWmoMDhyEFt+K>i?|>usf@3?@4YSmbjUgHP27-RaZmxtZa_iWyBTLyf^k3Dzz|F8gG7e9BtyN)%~cXWNl5#he^A@4A#3p|g;3 znS~<$%*}JqrvaY=gt_z6#O z{OAe!LzkMa#JFf6QyMZfP>))G;Fm_I3`eSipc{fWH=8!5pshTo#IYp>3RBDU#1%rO zFT^LKL3JnAN7UWmGbcGrMJn|}=wk%Vt@-RC^+8FJ1sKgSi`JzkGUdy1LALfniU%a% zm8w{K>+)MZ_m<`4OKTI!=b{BJ+o$E8YOFD%ZmFRhX`2``!cNJ0qX`khTsEGN>?_@| z)4@L|cq2i_(=gi_%HGc@>v3ikE{KMQ#Mc>PVqV(`#ZESSJ^yJG*rD)G0mL z_=8=XRqjwyMGdJGS=DNgVSh>N5X69qWV~oanJSkvA?SydBNcnY%=VOWi)7%mXKhcs zi0c*XV1*MOlLh>xwQlkS8NrdWp_#6e{cd@|!uXqN`pIF9#5f$HN%j?XX}a1aE1u4em9B4iRF<;g!Q=(MdHp<+RY=5Say5YEyqk|houD;&-55Z2bMg3%c%p5 z6qQm>y16)drU?zf5|DAK_zh5bf&$4tpbAI%U@UciXX(&s zzuFz57CoyD`@Ms&wR&ED zaa{;KZ*3%jRwD(YZc09S0 zAnv^!2VS*|(X{)};1vcLMX?PE${BZqDX&^lxdBj_mI*;QN^`{IIpq@|p2S!%jcPT+ zM{R;~dS)YUT6j3TgxLV3-Uwuq5=l}3q&GN>mPIR~XDY^a?-GD#S5_ZcSviHWO^(9X zN^;`UtQv&2g8mk_)BWDymgJms2ItO9^jWGguC>_n)wzap&kBSz&_=2iBvd~;v$(Kz zizX8X7VD|BWuE+X-HLE_Eb>Ner*N@ttLg|Bwxbp1W?4Q}>y{FhPL;d)HQMsPjWgCg z2SY2Tsy*|_$j^+PjyorB6`rHycGYHDayVFr;6ZZPbGXNgrF4Xukk;WS0WC|b$4(>q zPOq$PpvmA=bob(nXFID&R9isMYA_u zo!YUe)d8kCYUiJ`vrN>tcJ9JL zV9+c<#hCQUWQV6)|D4Uwl)E55KNo0z`cP+IbEJ7ODmCfG{Dk?kncFq_DBQV(A+Ob| z@gRA0X(@Ra@;$zK%qQ#pf#Iz5(8jJC76-CyfXQc@v@HH(gqK>=Q3MwXKL(6i-+h9b z#}nmSG+}YQ{X@t;dEe9S15`a~-BY?cQ_*9|TfgjXT*|_)(1eNl<5*O-Omlh+5lHxF zqAyP!Ldq@Jj4A>|8?JL&LwqA{(9I;E4uTm=SEW4OZS9kSias{4C7g@BvbO*xv8ND! zO;QM-TUuK?KD?rH?cJ+dXQ%H&qe&3uygcFy{rmmva6n%0U0N ziNbJRQ>|Mh+0FRu8n|qlhe+3Rnb{D=Yf&DaT6%@|*U{9iM78|&Wt~TYF>Qq$5<8mm5Y zsWDI*s5=v6_QsPLze0~U-pu%&JON=^M}rcpXRX5lc8v72U*{xAyc|72%i1+c=31#% zNr88tZ7PqD6c+nh9-MF}z90qX!Ep_Qn~pdzqPNqs6{bawYp~VL-slURl>TazEXg_q z7xB0Dj$nC(5i3S8uowY`7E@NuugWq7Pm`Uh)VMN^w#ZjiBwBrf-k<~$FWBpA4Le7# zsbrN@iLhj&FN&x=TdiprJC8_>lO&*&D_vebu4*K!N%Ec{UboM^~hN zo|sbIg#3&~Gs*-t9%)cxB+ZB}VK8rQ7Ol@2%B0Ag191dSR~}hieT3PrkV83MK5+Is zl_OdTITWjg>AItXtBj|JL0TzxGt_>YXKAatgH!1pNxA-^1s9=;pePt&YQT7%kRNcn z*qcOi+TG@w*f)kRUV+MWDEd1)rD|r2nj+%Gw+me27_3Iec|NZFy4J*`7aD)1h1U5AK0wT?Cjm7-XU{8;$}k>P|UTVM6nv*-72CqWVwVH5-EU?MaqS z@spcKTz&-hHyP%AX=vT&p%rAP$ha@7cL5RYbv4eiuAID$?^ zT_|er^cxhcSTExwW_6+rKSJQ?Jr70!FdMDjRDA$Wm~WG9XMjaP6zrW7*ofw6sCfvo z+S6$HGpsn?>VAnn8r!xFwqsdTdt2r;_gj_Ro129xRj=qvETDx6+8NQeh=y|GWH{G@{(D~GlV=) zI4C39;+Rwd0qvI6X#)MZ=U|E9iI%r`Q`$_h$}}Ml=3k3)pa}9SthwK@h&_G&mih8b z4Lf?FyuEhbx!bl<-bnyii#FzF4MVXpjK@&Gi>C?UBcq8(C&QSEXv^_pwZJ3wi+3at z0+ztrxe&`V`rBwGXv5?#)%yu&$HCaKW2d!DOug44>dv079wV-@w0ay}8RAEV#S7hE z;cHxU(coft!TF-03q?ccooh6-1;0V<*WiX8r99?PKuzjwSFJ2;-?3OZXD9s(x6!bL zIwbh#!VADKD+Ay%tXKK|{pvWYou=mJgy7kkojYjKX2wJjkp;03ILq@_szdz0;W?wa z%xoBS7v;(AqV?n!`AotCRcKzmP|I;fdXStR;p7 zjG1gvfDs$l^hH+A=j%qi0c#LP5IqZJ!pHpX)a%|TPsu3K&q6^f0L0oU1F{yNXG^Q^ z^wBJJw1^9=D|^+9;LC-U)u8xpz3B;gb5npm`L6<6EwRs_{nDn;(qUH~RBmpys{gkJ z`x5nL&CM@~HJG|m?<-(p@KWy5t4z+%;GR}yw{Mvvx-v`CO#*f)2DWdLUK!iEg@%k% zz4};<&>vBYO=jNDvZkMzPRToaH+nXD9j1VS-mU8>KwSl5+W~bH$Z)gvpdrUU4XwC0 zg5Z5xn14mF{-BSBx3gVIG3GK|>^?O32J2!cqmvas)cs;p$>3)GeVM9B z0l(@$=GR7N3C8&R+RQZAvKXX#_Ykhl+1hxN5l~RzOaJ3rI$=o3(?GMJcb(J&Q6zIO zO+%O(1n|k^=*iNpYj35^(b;2E8k~|mSbM-z1Wg3#CPpIz`S(=h67}2eJ~4Q`&Hotw zk8)7H(aZMvIpE%ghe+Ed{2)uJSz~KOW^oy9p@@}GlI1|}kCNY*n1wG0C{z&G~&Pg@#I<>sK zMnw)KIm;_|V+tKxE*)K2xqs#C2UqUL2nsWwETKPIRK&b3#E4WCq=H8+SHl7%AY}Yb z%>&g~l##{|QB&P}I-?+>-EXgRn*)JIs0~PA0IZ#GtvY!LYoO<#G*R+0GHzOS?dfrw3Nd3+qE8W zqf2g#-&(wYGk zCdSjG>E~dbRSQJ0`l`qIvF_k0aF0A9;2wEIKJIFA`1ALd58U@q>3}>H#EkDDr;MZG zr+wBIWNSSIp-mG|u{sMf^NsEYcu&dBnVot2q+Jl=cE! z*8s_=1W_EuR8*$kw=u~Z*+rSU);`2BtKP-?(&4iYmJXl3_qdt?McOP& z14=%`IVI`9K(#m;)d%`UXuhOTRus~wc9Q^0z78#_v{cw>?$(aEKU_;vleS@Os(OlX~;D-k|E;A=tYku z>q7RM!C%3Cl&lNovN>M`-%Os0`mof!w^Ej`LTeW5!-15jDq$*TWxW~x1noI8*F>D? zxzVUz(64_)byY7=#eP9Agk}MV-Yzvvi-wqC#W!dn>butVhL}C)8hThmGmLQMkG((V z=Un-I-{&;VNM;HCamh$5(#%(fP$y7lmhm5Q){Bz<9zspOQ9ufLM24ARIU3j`-)|ne z7_3iXBATJGIN$r}!|DEHS&sUb1u14Ypk;o#0Y3Rvhg5SLA@yc<5u};-8Rt}<$8Qd9 zGRreRud3Uq_9=L$`i6*vfUXbu=%y4!`N*IM{U%O&!HnmLdfl97)UFd7XMUrH9%D0c z=GS}Z5idiYX90R76u!b3+C(yZwJ;RD^QVlV9JfTfuTq7b# z_El)WfX$0nVs;{>WRMK{6?4(&M7)cROP8)|l2Q;UNCZTo5RF2;;jQ=eq+D0o`xn72vpfiQ0Vfz6j ziHtG}V?Du473k0eBq-`DEZ{DA+7Y6>pxKSGJb9A6Rwz?hQ%Y@Zi6Yvila=F3rCV9= zA`GdU7gneDGZYi`@-|jJD65)eZRWZ#O}jGMAA>e3G^6&t-O!rExZo60!$r++@Z%wg zlsPhX5oH*h!D1?O2_r`YO=*D|-;&O&58sBx_r*z;QlBY<<(d`hrTi$rfxc%e3i zB-jKTFZurk08)V78#@TL)rU6%BpWAh|7F_n=LX;EJ9dN_l1b~jYCmuD!vg8i7^1g; zb*VZ@ZWJjXW1Lt`89)_$1=u>kS|#Kr@DAy~btN|$DuyR=FE|&I}+o6?OR6SNC)0xlc9n00Ml`P1{9Lpb;e;G5GqR{|M z2v`J~6;nn!%~^IuO=`{!!W&ZECBbE0@kt9Oy=Cn|32&IK^p9ufN`FU*zN(E3p3)ug zo$oIEvB5XntkQL7ZdPsimCqGCs@hVIcs1U^st3$TD{N=$CxnvXH6&+!8y>Q_6U0=@ z7E`r!)5dN*5mYaVy*Tn>J4h&j4CFe)#0LH>+K0#6@xwA%7OjzWu0hWkZ@#B(dP+w` z+7=Zsk4@h0p~01jYT4M$h4OWEbRavgpc>Oi&oZ^guu36ntf&cNqk?=3T#YzBBwM{k z){I5{(kUpqu~IO~Fc~q=JA3Na@gDZ9QZ-oeg-0Gq?mE44_BbUtj@nxDGdSGX5!&y^ zw#!}Pp2fb3&!ZPK)2|2D9eUM!+9l9lITo2rZ}M1Oy?f;zdx%(8tJP(4mdUXbxV@{@ z@XX=yYW3cGSE^NXp8b{h(&`Ft+4J%EHt%p8eF%#$s9t!|eOK6(Bdn&SQY0*)#ZyL% zbSmA+aSVWpa#($AChM9)R$F-uVw{)(>-wj}dK;skn63~d#pwyUEtUEk_vIK~YAZWg zaz8G(4K1vi=e-6G`Dq(&NJ4Tf-i1QqjYI0NSX%h*XKTT!5Tj|eEVYyYN zx6YAmsZO)m9I7tPsaZWWDq%2zOhXibpV~4TX4gwkvtl?G<~S!Y**!O3pkVbd#h8d{ zA;m~O0x&e|!i&5icH>nHAcvVLH|MswUmx6%Y~Mauz{Y!W+>o%HsPro{+vaCM&J0F# z4mp^=L=9@4E%RV!W*YtZFO8k;dF*Ug`9?8zSc2)r>r+OLY>3Dkl3w15cze*DinvzE z;nwsAp2DJH-Y${i%N=F{JFiF`TRxD|O4n*zyOj zI1heqgf8lLo;r~nTfHyYxAy+~mXnp`v+q=!5$R6bd73=FR^xa{HfwXf!=0yI{P}K7 zc}H95OFQltqR=$e@gX|9EjFz*0r3oEhwcm%QpEUDD zcU1Lqk-pYqYU%5C-wZMZR+e4cxn_Oj$D2~3zW()^0fO7U-2#b^#6l0eLoOM4nc(u(SHCkwhp>9nRsDXY3 zmY*z-S7vR|9iCuu2Pd@RxJ+t%q4lktq!hi#3_KA49){MWs|nA*Ek(K9jg6gR2oZ9Q z4W3LcvS>1E^He%4B@*SpQ-Xccz#WfjV+K@A|7(Li@^%jPU>|G*K1R(Q_@(+{>Bq2g=}2PvXMd}mU5~!Qp#|AeLcZQyGELk?uh*ITF);zY_TyI zilbjKtj$6yQ&inPA%3hT!Z?PVtqNFXNUIq01mWjh6?+bB6vf_C;}>B=K4_k1urU-q zSVuHKA2XNYn3lUS_Wymt%w<6u&J-h0-sNHj)A`%jlEWtn8Q^YqUb4icPrZf2W$}of zIB%&DrD;oFSpi0U5Xumljp(VRE#rtRZD}K7P166&SxbivWP9%xWi5rie@50)6DpTa z5rH!}ZT#AtquYxtdpemzuLg-y_X?vtq+97$%K1akGvmJfe z79o14aCScEqrg{TEPq{Rsx?&BPz($TQ}4_ug3{SF7~BTl#lQ?ro7)rp|~TMFTdKTtuv9FTDU1Xss+YZu3H$uM>(ul z;zHJ7e^?OverCy=WO)wh?HB|6{=wH-r6DF}>?;OsXmbUKgT3A%fGp1`0zorzXx+n#%3zOHdZ6ApZjQ_#5oVO$ir>Oe3CQOHgSdNw0lBGwK&`5 z@|*^^@|<5iNHwVuQXkV@N7ez-%%6{Q>MN1=T3!OKADUTBY-IYt^23=^ z{>y7`S&qKH;^z6D0kKmW0Sxxkl1Ggo#J!g1N$}iCdyxBh*6UUh`}jnVa~g6qB#UZ~ za5Q&U@tv!@(tRPh^X$8L!Mj{#LrmKf)5r6bhy7nU#!YgJsRn<`;M&+x6n#v!nDQJW z)~RQ#J1WzL1wk|?(k?4C*qRB&zbI2#Mg>{E^Iqm!r~1lhQ}k&fD-dD1pjk!MiBBep zEtm-%`Md)i`to@j#Aer`jNS&>1Okfi7=5rm*sS8qgFu-JiCm5T%Yz^qSh1&IaD($8 zWEw{hblkX8oK(BV%+C+DsK%jZbD^nlqZG-ND=lI*k_#9nqVpo;~-)x%l0yLeeXm6Tlm+6>v%I5P?(RoEhvnexxu`*L@Dup~BFizpOSWv8~ zRbK`_i}$fphx&C}1$XH7Xz-I!RZ3eWA*zToU~RvS8highpq5t46Jp*-Omp7AWGlZV zTvDhuZvB&kD)=nQOt862WXp5-q{vCV_#qM2EnUo3uckVbMhjS&^Jy-!d>}2V?8N|8Da# z)Icz-OY>f(W~$=Gtm|v9HyCHfV5k%L)ER=vHQ~mwF5wx~bh6r7n>T1vxrD@M(v1z1 z1c>J+JIE4*7CMbWzw3H=a_foQ`l>Z46D5Vtbf>j{@`!pbtj`Z39c)f+vC30bA->$~ zbL-IPXG9ZH8@KuBVaiGIG8+@DF!j3E&xs{qLP~y<=8d^71KGU9WUh&iyx@B(vl2rh zaaPve=Hnsj=Oq_EwaB}tzaI#;MsD?-=0;RV+-&ppf_YFuQPJYaOd4j82Ki`0GLT?k ztO#y=wC>z6@VE%uQ2k!6{- zx?diAo6or_Vw`4{E$8Z!<#cbe^m)BgnVo{qx6YA1C;Tv!aJ8bF8Z~Fchpq1Xsize4 zc#&w%xn?PuJk@lotR7(|O@{d$r!jyO5FN^csll2IBg>)K{(nB=C(4O^^+$=UAm|{8 zmful269m2*nFWxn8=efSW?5Z9RGFk1f%MwAEgT!q)<+|)eQs#I3X&L)L=mBX>N3D` zL{>_c?mQjJt`FyyN9W+gqL1_c{wM+ZEc;gO)U47fc~X2Tb@c4{k_qOUqKQ6|9h1t6 zCaeQnjcl1>FFBVg!pJ;kl+RIsSzM9MZ#uhARy47b8O;|>czaguG~<3WfEO&W}Awyobe{c@J7}aS&J2Aid_5XLd=SjqfE1!RAVvCS>a>P zlAN-kl+{$pps=InsO$E^$vl(%yn5R{%xD1a$?}>}f`zP$}%^R%hdxU&dfy{QxsDSk$ z>X@V2S5ZSft**4?f`%!h28$<)AS}LIL=&2R5AYDTM?^(dPYGjVbQK(=32zB+5r+vg zpY&di01wkg$Yfc?gyeO)bF)Rit6~4|jOFPY6S#geDiE7bP83YK04tns6KR?5igtIW zAUsqw(PHh~nx2!VsrG=5HwPr43{l9ZRZY|Ez|WWOHdcgpLy!0 zUcZto8v~t&nWx6GkBGF>Y)GDCzd!Cn9;EhD~wjX zh(VNQIiGdrUQj$iGVB{?j&dG~l8wdX%V+ z;M=?(qvA-5AM-6qhL%7kr}A_D|H0LrA$K0ucrS&$Z3uc=n1hgj)^}PR`|!$c9PD;? z-I{Kby1}60C6KB@Pr5~MTP-Mr&addUp1tX6Zq{_$vUIuc`8|-!pizdBjwo zV^&nn`md6c%gU(K7cW;MgS;ht7I(c<3n<#nZQS`z3M9mA0-pupD~r(+W(25NP-KfA zxV4nq{mzzCkz1hq@LQE$SUHod+;PW!hpeh_`Ege|LLxrSh1S7r>?dG>K$Zd_Gpvz7 z+FW3GV!{#wYing)1z^FUbq3z9mmT2MWSl84Y~$Go+*9Z$AS+n0jocc1YtEha6Zrd~ zegeKuwny#oCkAgYKbCB`=1$#dMr`h^1d0&b{2YN^>I}AS0qXU|Ji`-7`C^&5q|e8e zc~(@FS!$bKiyp!ChT!^%jdKbC`wtA6{>_5Y;q~*Yjo&gni%eu4uSLC$F7N@lm3l-&o+a@eb$QWxv(BQ1=aanI$oUkx%jd-IC7c^I;AUmW) zpEf4b?D$8rbY@wT^T;F1cdni;AGrVX+>eQl6#ETbH$NQqq)-ID+^BYth4T2V7f?kJ zUzLdBUYk@T^r1}}NOsjmX^F?q6?DV1Za~CEFiy3_T3llpHkL7XJS@eM(YPp^n*tAF zx7qSMRMUtw*gR^)^oYpw34IzOkVXthp&P{qaS*WNT+0>w-Dg=tyvqqGTm zxe`mSGle=IG%7tk^1?tWH3IJCvCy*_R)zykg(?+cP}Z7alL|Bo3;Th9C9Df%!{@&E z#V=}22F-YdkmU1g-?R4S`wuNAcQ4Zczp^(V#B0?}DQ1?PY(z2hbL%OFmDNTkiwlu* zo`_;ZEeqR?ZiXqQ(A4;fQH+UEGrsZ^LyZ&LYp8;Ch^wTI*J*x$Do`| zDaI@?)}jwnjF{ysPB9rm@)TnTSx+&aUPm!|Z8gS6LN~os#y~ISR+KGB6!=HmQHgD| zCbl|LOeWevXBLxoy)*#>MRG*OnwgyiZhg0)qO(|rnE95cgi|Lbb-P>-Z*o03UQyL%U$%mY32k<*MJImA$-22tx8=4Ok8(j!#?;Ar zk+3nRuyONii@{|ZVBdZG`1(Dt$=+iiq}lL!>Px=K;uSQQuxyEz2vx}nR#k&Guf~tn zIee?S_aI^YkPWA~+}tb{olI@*VTebij=|C?<#~Q0AFBxR&n&%QoCfdLraHW(na!() zqHsl8uON>~v`pSO=!r@8A(J}rnjukcyu^gw7pIrK;OW&QU0}KKxWYso6HOn?&J6Ei z9%k3?U_MJLNS4~LG;^9sX0^$dc^G`dRBzovwy-uw$)c^9*f8g5a9MEYX5Kp?{>|W! z_^3cyyiueQisv89SkReVYBg+x4jtI7fEX+}5j-u+vt(UT9g!$JM#2GAHuY%}omC?a z3}qIMku{~H11llh4}^3Jxiegy<_Jze8ODwzAdw#c_B@6qi722+lbVcB4>bAQd8@5|mPyWjmU%AFwJH(j6(Z9i_DmOxL>j z%AXt~q*xr11Vy`1sHG+p0Qbul!aG`8`;O(6N7*`twe{>@MI-I|)h*oPPZ6<}dt>Zu z=qr9$mSMZwsCgh}ozZeZj}&jQq{#(@R2om+xH^bV8g{44M9c{3#4!lTCd$rS4Zk6qSApe!q ztaTOAR!*17`xt2$$+G!7IVBgoJnZxD-Us8K2b+G<~H z9G!Kf4m&$#LO2Rry#~D--wJcxENB=A;X!^HdH{qaHQMH$!E4*EGzjs2p?4LFjH&e?=&$@fnU?FKV1|t+6u$7O|D5DDsM^YlT>si0ic|;jO z+k6FQ!|#G&;&RbsB@@O@N)TA8xn+Tmy4wbqC7sTo+mx5iuVa&k7nhELKdwK`75 zC}gJ;VQP0|TRn?IQYss&DrNKG{FpjcRf<-bO%z*{U{bk4LMDtNw6zB$kitGsK`Upw zPe5A=99qWGD;9GViSts&p)E*B=dlZJU4Vv1+&&SFsn;@FQ8I9x%!vxSpZZ?L`1%CS|++O@p2 zs=K(CQ&pmssi%#jZH8mjX`2sEZ9zi5bMUn$ z;VA{sR+Hns1|-)YqKs%{J2E^>+fpaAShAR{Z?v>YS0$5=>FAJ-CL#kD*v`(76bt zve+K-=vHi_Cw4a_Fo$C{i&Utf9;A=g_q;Va2yl2&a`@zl1K_0@yjTXycC z?9O&_M)SfFyRM=w3y@)RUwMU=Cy+2G*Dk*dU#Y@IJmrN;FJbK~yC2c~@ZyWufU;tn z^}s4uTzCQR|*}E;^^S>ynGhY>OnD<*F+$D_?ri zg(%Z4^B^$W&(X}2Jl_aO8~!(8Vf2zeRdCD)qiid=tMhW?YRM7xjxv=hD}lQa&!m6H zv!fY3Vom=ENgHU%wp3ePeu%d4Ae!5%{z?4H(0k$2p-L)nj$fbrYl9mT?U};<$D8nv zS}U?61ms6wL{M9*CqvxSm`0#Y)f#?faxEmQN?U2KKso4!zGb28J(8VgHN)bQFx$p8 zibc$(S}HJTk38e~E+WS>{yRZ&2IU!M_uJ03TB90z&y(@R#*+4j<)BP)mCBCrSWH&q z(^{h3EV6nvq^z)MXgp7#Lwi3&@hr2;tQGIC=K{MT6wj2YDfvXw8SllwVs~MC4SHFI z9xKGqB>uVR@+3B zVf(6YgXfD^joQ4vq=Vc@P>qnHLWnh@hc#{2>9Y(VWGo4@PRcZ4P01Nz#(Ggz+evHyZ3wTIubPb%C>+_V-B8omhBC0q z$jTPU3I)Y`%edY>^E{CJ2291|I~HOH(aXlX43aH``@AvOSne;wto!SY*}8>VNd-Sxp04M0Hb!=02Z0&)2wY9i*GL>3eYoB5pz=RJd#$`9k zK3x9sFnGBMci?rTWqzIj?g7f~-p%7P&echGHyS+7&~EJQJTO|DujcVn&b0rcQsB_z{b#D6>9``%9@B$u;dGSNe?HD+>lkx5R zZRgJUxO3-T!s9obJCCuR|0?G$nBei3&RzI6=PqLYF9ME>`K?PB$0e`h!S7wl|Cdei z_;Kehe~EKfw0Zo1b5}CoV)rQ9$attw>kH;4iDhE=9_u^j&o0c zi*wK5_nz^7=bm{HkCVldB7md`$Wj0fZT8h+<%fa^K?c>HJQ2A_29xj*RK*K+Q8 zS3CE7-hcjIId|RfJNE)$c;TNq_oAme_hNAQ;!imDb>QafXL$Sv=U(zM=U&QnU&{M0 z_gZlH&A{?4;O}*p zIrpv4bne?6kKc9f^&fHW4F{duQ{nM`=ibP?z46bTyWyvtyYUa5+sn0YV$3&x%DH`? zc5eS4JNNC($AJ!yzjW?aK6e|xef#~+9prJxRXk2PcZh2o=DSDu{Lz1O?oGe#+!A9u z#`$B6^G-f<*OwqoU^ou`j(^g*yI;nG_wRY9b0>bzxm6zbexGx12G?)-sB`!IsdM*( zySKjDxwjp1?mMpL!8P6voDcB+JATBu2Vd#jJNcb=o#))UYtFsr0>>t0&V3iJ-_8H; zZSY`h?*l*YJL%l}f#G}K;oSG}{qO&Xb3gF&&V7Kn_`zp7_rWP1T>ry-@53K=?uXv* z+z&IxAK~1O&N=rH#{FY2aqh=o=iE=+?c7Hh_fMX1?x)`1+)uy8xt}@c+|Rzqxu4^= z?D2!neT>h4>~Ea=`KLMe3tayf{=&Im{2u3i3B3OjWBFx%`&UXle#p6x1NXnhL)!q-E(K&s_zQb$!ojbyJd8OLNUn3spUejyo8sVYO+i&GQr}y&b^}oJr*AC}w zoa??5&!^`CEcSkG?E1Y3Lxd-OSO2HSz#Wg{*!91TpJ>eaYoud|;||}?U)PSqSnYQL zZqQ0Y_>8|9ag&an@9JFoUCmd3gPfa-kNBHKukp8ruB~x|xsUJX;aPtjT_av+=v;mt zHkmV&PAMU_A1ynJGcJ*IR4FEgk=cV z!eJP{ zM(DEQyhne8KHs0DOTx69A<{BO_5Btqe73QFzyj4!JKRopjyu<#=gxN*xC`Ay?qYX| zyVPCgE_YYBE8SIYm%G~Sc2A=-^wZrl+%xG9eXV=8`x+$Dz&+P}Exn?j@2+z%a4&Q( zaxZpY=f2*(#J$wL%)Q*b!hM5#rMup}%6+4IwfiRb8uwcF&F)*=>)f}ZtX}Wl;P$v5 zc5iX_x$kkGare7-x(D0`+)ub4ac@sb?#=GI+#~Km9M88U756vp3+@NqN8K0QN%tl9 zL++>DAGqIhKjYr$ZgB5*H@bi8_PXD9f9U?i{gM0M-50~CEP3DsMWQ#lHPA6NFZOQgzAz4gzBs-IHl5>;ulJk=bk_(fIl8ci| zl1r1zlFO4Tk}H#|l3mHw$!_<-9t1b8p>q!=c-6tMBozwdcO^(B3!gt?jXw`g3o;`S#oP-csM=Ut7<+VgI2U zj^29HfxX9CH)O|^=W(gZ4LsGJf5RRwS9|{91A7kdt6vwczBgR`I)C-O_ENb{-`cBD zTo-<4uYavw=dZHYURp2AeyMeHc3gR(zJD`MjThdq_s0DP4(w^%91dD9%05?n@sa%p zZrt0tK6|Tv-ND2A58QrR<(u~&*;Bsm$ezlJZ$Gl9`t^Gb9^6xV$(~!^c;lYZOOKXb zcC_@G{q>jMx?d)g11 z@1ebi_a7eFbJPC)S6*?&?yKX`u3hQT?)2zs@#t#wx{p2Za)tMP;X4ul_J6HBE^bcV z63*x!e`8m_a1{7Ip4jlpmADOaKL-8(VD87<{bz9h2B7{4Z%6{%$oG(|a5}CH5A;gG z?MV9Go#BWwALQ4e^nDCsJAPB{ohLiQqC=WwH!MG7M|S&>?9h&Wndc86o%SPpZbkas zj^w$+B+n8OXBla8H?l^O=3ZpreaOYPy0;;*-i~y9hkFny`7R{hd)#*-AHUnZ*S*iZ z-+iz9KKK3Z2au2-M4EjV`S`=`N8LxA+A1V8X$W|{?|HS0!pCMNz zN&mwAd-osQe{_H8{xA1e?yr&1|H=Jl_kX)jyZ^`it@|(T@7#Yys{cKb^uHl9KabS> z2juV<+`~xqlgRNexkn`p(V_p{;XRNr`7@rcKr5+N%H2TlQ|@C4T~Lsa7bLGM{XzMC z1lb&*q57DkP`;$@c_YBeR2Zkv4N1g%=|MFLiif?<$bbL5R$tR)RGf+1r zEOr}{kv7t*IwFl#;Sm$6=D2q=j`Wm8;b%4b-{uS|eRdU4z|Nrp;fqJi;f+ zyj`pDTq@T};lutCRego@ZoO2kswACI93QWbl=z)mv)T05s!@lg_qkNKdZVE;{DQxY za5a8_^WlxUoe%%;q9N-}fI8meNrunYGzJ3-NNdeHpW}^s%QZ)7aYPYBqtR?oQl?Eg z7#U~%576`ZS*;&!TTN*vPp$!W)$5 z@bN~I8jEVJ)oO)78d@mK6O!yUVp#N8;Eg6%;|DlzXSuYU5C8BIfo{Zu_(7d&@->aY zkBHY+gU|6sW7M@etj{J|-)K<80{lQxW}fPGBKq6_2t>7XD1?=H@h3RXF6?}~#V0Df zU8ne-kJnjlV;}aHsOc+ZJ_;I|e5a)utu$KfoKdT{+iiW88}VAb&!xiEn@ka72>;bv zT#X;#yk5CA?7TnLvxcm@Xe`|0NrunYGzJ3-Nb7BIpsP1JuHCIU5%9n#V4R1zQHqeR1P2Zm#FD0Wj+f0Exyy%{8mTQ&!X1o zbUL~)x0X%2W;a~D#S}4y@L!|N)%XEFX?DiW>&V|AExU`x!aY0H1_X`4fCAD+2lCR@ zN4jowjD=rtWV1=FWVK3$N2mffP5XWscBwZ;bu5GdOx>U0e3QR=b(Bv4IVS`B;lutC zbq{~D2^qBb&ZuUz+8jmD)EnJyHw=<`NWIUc!qq+e{DQxYay7wklcvMwI`}nY-9=;J zu8--)@cCLW8jf&B>|LKYdZ=|aq62SmWBaF$z->7x@glGzq;(TqS5Gvth;zD+_O_qSq49l zj`ScegTL>_COrJ@_E;PE;ZNWfZMPwhX4Bwrj_FVYQ{ly*;C!3EMr};+^ESFnA8%H| zhy5iQ`bve5RuDFPXG|1bYmW*3=J@!yF3hc?w04H`)`fH#wsD9~m9(jROBDvk0kx`BBINvSm_7 zTHwp5r&Zy_pWyr`eu(~xx+jfH!53M#WP7*Igk>O)?-`Y83M z(<4p{-06&qli^SJm@6O-bc0Lz^0*H5+f`ot3C?%;8>x@;3GoyxrH{9&;lutCm{f&QM%x|8qus6|E}QMX4n;6kUi^u6 zr`_SNS?}`+G&v`EuGZTW>e`2SgHJZ~l`0>tHk&=(=!>H3oj!`D*`A!7)MvT%jL?z( z@#?*v-sTtltuJE5STLg1VaLwv$lo+%-Nj?!o}KFRHI2cKh}TKjOIPpAxQW>&S;%U$ z+nwm5z`F1d>Zv(8+J!tuN2}ta(Fq;$I$Gt$pWu9#zh+~CPc(RYbd=|6W3(DR>@R_N zsc&_=z(3A+Cb$gxXQImQj80Ea>%!c|^|ncvaP{$Vz0EK9+XPqR2l%P*M%T`Ve|XW5 zb*IEK-s4Gz&(|~t0}4n-r@MTPH@dTKa;_!#TVrFBW57SwYCtOD?J@g)6>-@boz$@y z24GtL1n0;2Yc(eM1dwwwz#l&BFVXVwkBz|w<9ugQ9Nie3WMAOc=*-Ma805GyI?_L0 z-NVl>_}e5`6a2=sIviUEzlN;)SUj*V=##uT$=9kHu7Cp4(HYo_f5yh<+|(AqUu*Sx zQ$56Mk8#zEw|kIBr&AOBohcoPVQRei6P;eC$6u>4CHQ$8TTUPE)WU~(gHK{!>svia zVOo9Om=Z@fdQ&LcR%dp0Ru|^hH%1qH;p+Xq-sTtlZA#3Fv1m-I!=9bjk-urky7%IN zeZkH#e7>eJ_!03s+v9V*(c9vtx3(P;x!t3K4C1xd9%ztzob^YD+4&x`~AxWV6T zce~@TN0&8mjJG?ZLteWzUi=BpkMq|anGyWF-R<&R8|l`y@7mM>FD))Z#{Tm{|$Q=Ub*+?1#XXX zyXNu7*RH?rrLVl=3cINPKHvSJfB!e%{rc{;UnGpIjHLUG{-18oULUVj_VRm*F_*$G n@*O`8%TRp{xh&opx}CLm&XNK0S*sFRse#30e>Pds`iKgR7Mn|3l`2u8Euu}DSb}|+6kn5yG(jC{QV?xV>!1@~ zrIQRq3r(qm3ObQERA}XP)J}>-99r(M4w|w3J~#_DhjVTcTll!=?!ER}`~3gf`$lL> zOKVH~_jSvQEuHPpo;{lnOJNPvUR^nqu5qn7 z4uLt%Z4GN#)7okMF1{Pn53X@-22uYm&(^4_@7|1=0M}%Y*5AqZs`?$wMSb^rFkky6 zpI5+~ci;g$geUMc=kI*XIb)3d4qSU24#4}c9jxK|F9F}Zs_7=|-&5w62+xCej2W3UIr=Re>++yY}=a~4LxT)nUjtg#yOe=eRG z`vNS4Mc|&zp?7}z-MKcHOWxFf_1B|*2>mmj;>1% zCjSEB;{4ZmRwMP-GquYgJ^yvSd)CxE_1`h))F<>0|Mk+GJHQ(5d8Yf{`epv7_fIqb z-E-78S5?`MtG1fKqm^qr&s5<|8rvGZ_S<+MAQIDrU z|JC0f@LB(h=Raf29O1vc)y#kA?2&#*`_K9lU~d)cy9evLC+DL7Qva=QPIIf*8i@W= z8#VH5sh#u2^}>EQ2B+XWxR2{_18&2e9PfO`^xha_Ps33d1aoZ%b6dk&&3y4rY6thY z0$ii#uD6G_LN}OGeD-eH3^gz|`d|sq<}znlA5{4t`s=@1s(;b{*`9xM^?|y&ztG>i zr&!+}F;>sg{)_td*du7bbdJyZ@0@#_%l)G!t>8KH+^C&8z6%53-iKif&V%>BIM@g7 zNqlz9xo^PO5pbjUyjd?IcG0y0oS;{GgbX}W z=9~m;ME%r%d&0fBNB3&|3}&hy9<&p?96UE_r;dAI9~_1eI0fG8{u)b&9A?3lkZ#@Gk0ajpGq z4|wO8yI8NN|4w51!Q5)6hw7jDUv>WK#OYD!U-aMHHJFY6Q9mPIo%R1N6#b9ipDE^| zzOn8(1K+`1_EcH_g&yj#2v$HRybi|O10RApj)6Tn3THvTtzY`~Cd3}}b`XxhQTQB=gYP#2jybm+Nb(go&Q6`^@F*s(ae8)#QLsLPkSipH}n4yaZ%sB>VL8S z%Ib&zeyWXHsJ~|~^jFKG{v(X3j~)zz`g`W}$k;t#z0lvBW%@_`R_5)E=)X63_P)1= ziv4G=*>ll<_Tnh0SF!)hVXn0Q^gQbN?0usrdgGq;D*O-qCm5TAI;ge&Peb_cm~+M$ zt7oDAA)fWr++AQTwXn8C|2b!ju~9$cIs7+wdj75L9vWazR@FC`In7;zw0`IipY6Mqnlts9{Bp?~Us zoWG3u6Oj6Eja2_){hiGBI#OZ_+2p2@%*W&Ydq3m|le&v}fsgF3B( zPEflo5PyGpwtK*R_UF&)Y>ybT8C>I9b6Crq=8ih)XPo_&%&!M)nah4syAk*T&O`e5 z=Z}1!fa@?0m%*4Z7zWqculA!kH-I%3gSxwiqW(J=^S#t8^bh|h8LLD1ulA|_asRrf z^!%6U@0quDv3}A2jF_lz|E1?Y?LYSv_4VI18HE4({_#-stM{>GM_KfP7MRR6O2dS%bV{bR1G z`f2~wiL*zF{(BDkz;`Rw56{a!)o2mujb7?cC%g(9L9fJTJ$KG`Gj=(+Hgqn_A7cxN zdl_7Be|h#jw}(Lu&VlD%e{X_5+=B->_w%t|_`C+j`nQ2=kH7$!)7-CswXA9V1z?Z5 zZ{H>SS2NE}2KH3w?-_dp4M_cWO#R)P`WOAz(=z>2|E+J27_0wLKlR`G_FA!i^k4Yz z8h<;?;k)#K^{uf6;{FK_syjO^e+O7|e*E76gP#obe!6%6-VgU}I`ID9f!@t6 F{{ebivkL$K diff --git a/stAddonManager/media/normTex.tga b/stAddonManager/media/normTex.tga deleted file mode 100644 index 2d998376b297e97cc1264391e344cfa587574dd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14690 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 S`@jA3|NixF|N57Iss0aOVMKQT diff --git a/stAddonManager/stAddonManager.lua b/stAddonManager/stAddonManager.lua deleted file mode 100644 index 8d9950f..0000000 --- a/stAddonManager/stAddonManager.lua +++ /dev/null @@ -1,354 +0,0 @@ ------------------------------------------------------- --- MEDIA & CONFIG ------------------------------------ ------------------------------------------------------- -local font = { [[Interface\AddOns\stAddonManager\media\SEMPRG__.TTF]], 8, "MONOCHROMEOUTLINE" } -local barTex = [[Interface\AddOns\stAddonManager\media\normTex.tga]] -local blankTex = [[Interface\AddOns\stAddonManager\media\blankTex.tga]] -local glowTex = [[Interface\AddOns\stAddonManager\media\glowTex.tga]] - -local bordercolor = {0, 0, 0, 1} -local backdropcolor = {0.05, 0.05, 0.05, 0.9} -local backdrop = { - bgFile = blankTex, - edgeFile = blankTex, - tile = false, tileSize = 0, edgeSize = 1, - insets = { left = 1, right = 1, top = 1, bottom = 1}, -} - ------------------------------------------------------- --- INITIAL FRAME CREATION ---------------------------- ------------------------------------------------------- -stAddonManager = CreateFrame("Frame", "stAddonManager", UIParent) -stAddonManager:SetFrameStrata("HIGH") -stAddonManager.header = CreateFrame("Frame", "stAddonmanager_Header", stAddonManager) - -stAddonManager.header:SetPoint("CENTER", UIParent, "CENTER", 0, 50) -stAddonManager:SetPoint("TOP", stAddonManager.header, "TOP", 0, 0) - ------------------------------------------------------- --- FUNCTIONS ----------------------------------------- ------------------------------------------------------- -local function SkinFrame(frame, shadowed) - frame:SetBackdrop(backdrop) - frame:SetBackdropColor(unpack(backdropcolor)) - frame:SetBackdropBorderColor(unpack(bordercolor)) - - if shadowed and not frame.shadow then - local shadow = CreateFrame("Frame", nil, frame) - shadow:SetFrameLevel(frame:GetFrameLevel()) - shadow:SetFrameStrata(frame:GetFrameStrata()) - shadow:SetPoint("TOPLEFT", -3, 3) - shadow:SetPoint("BOTTOMLEFT", -3, -3) - shadow:SetPoint("TOPRIGHT", 3, 3) - shadow:SetPoint("BOTTOMRIGHT", 3, -3) - shadow:SetBackdrop( { - edgeFile = glowTex, edgeSize = 3, - insets = {left = 5, right = 5, top = 5, bottom = 5}, - }) - shadow:SetBackdropColor(0, 0, 0, 0) - shadow:SetBackdropBorderColor(0, 0, 0, 0.8) - frame.shadow = shadow - end -end - -local function CreateBackdrop(frame, shadowed) - if not frame.backdrop then - local backdrop = CreateFrame("Frame", nil, frame) - backdrop:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 1, 1) - backdrop:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT", -1, -1) - SkinFrame(backdrop, shadowed) - backdrop:SetFrameLevel(frame:GetFrameLevel()>0 and frame:GetFrameLevel()-1 or 0) - backdrop:SetFrameStrata(frame:GetFrameStrata()) - - frame.backdrop = backdrop - end -end - -local function StripTextures(object, kill) - for i=1, object:GetNumRegions() do - local region = select(i, object:GetRegions()) - if region:GetObjectType() == "Texture" then - region:SetTexture(nil) - end - end -end - -local function SkinScrollBar(frame, thumbTrim) - if _G[frame:GetName().."BG"] then _G[frame:GetName().."BG"]:SetTexture(nil) end - if _G[frame:GetName().."Track"] then _G[frame:GetName().."Track"]:SetTexture(nil) end - - if _G[frame:GetName().."Top"] then - _G[frame:GetName().."Top"]:SetTexture(nil) - _G[frame:GetName().."Bottom"]:SetTexture(nil) - _G[frame:GetName().."Middle"]:SetTexture(nil) - end - - local uScroll = _G[frame:GetName().."ScrollUpButton"] - local dScroll = _G[frame:GetName().."ScrollDownButton"] - local track = _G[frame:GetName().."Track"] - - if uScroll and dScroll then - StripTextures(uScroll) - StripTextures(dScroll) - dScroll:EnableMouse(false) - uScroll:EnableMouse(false) - - if frame:GetThumbTexture() then - frame:GetThumbTexture():SetTexture(nil) - if not frame.thumbbg then - frame.thumbbg = CreateFrame("Frame", nil, frame) - frame.thumbbg:SetPoint("TOPLEFT", frame:GetThumbTexture(), "TOPLEFT", 2, 14) - frame.thumbbg:SetPoint("BOTTOMRIGHT", frame:GetThumbTexture(), "BOTTOMRIGHT", -2, -14) - SkinFrame(frame.thumbbg) - if frame.trackbg then - frame.thumbbg:SetFrameLevel(frame.trackbg:GetFrameLevel()+2) - end - end - end - end -end - -function stAddonManager:UpdateAddonList(queryString) - local addons = {} - for i=1, GetNumAddOns() do - local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(i) - local lwrTitle, lwrName = strlower(title), strlower(name) - if (queryString and (strfind(lwrTitle,strlower(queryString)) or strfind(lwrName,strlower(queryString)))) or (not queryString) then - addons[i] = {} - addons[i].name = name - addons[i].title = title - addons[i].notes = notes - addons[i].enabled = enabled - end - end - return addons -end - -local function LoadWindow() - if not stAddonManager.Loaded then - local window = stAddonManager - local header = window.header - - tinsert(UISpecialFrames,window:GetName()); - - window:SetSize(300,300) - header:SetSize(300,20) - - SkinFrame(window) - SkinFrame(header) - - header:EnableMouse(true) - header:SetMovable(true) - header:SetScript("OnMouseDown", function(self) self:StartMoving() end) - header:SetScript("OnMouseUp", function(self) self:StopMovingOrSizing() end) - - local hTitle = stAddonManager.header:CreateFontString(nil, "OVERLAY") - hTitle:SetFont(unpack(font)) - hTitle:SetPoint("CENTER") - hTitle:SetText("|cff00aaffst|rAddonManager") - header.title = hTitle - - local close = CreateFrame("Button", nil, header) - close:SetPoint("RIGHT", header, "RIGHT", 0, 0) - close:SetFrameLevel(header:GetFrameLevel()+2) - close:SetSize(20, 20) - close.text = close:CreateFontString(nil, "OVERLAY") - close.text:SetFont(unpack(font)) - close.text:SetText("x") - close.text:SetPoint("CENTER", close, "CENTER", 0, 0) - close:SetScript("OnEnter", function(self) self.text:SetTextColor(0/255, 170/255, 255/255) end) - close:SetScript("OnLeave", function(self) self.text:SetTextColor(255/255, 255/255, 255/255) end) - close:SetScript("OnClick", function() window:Hide() end) - header.close = close - - addonListBG = CreateFrame("Frame", window:GetName().."_ScrollBackground", window) - addonListBG:SetPoint("TOPLEFT", header, "TOPLEFT", 10, -50) - addonListBG:SetWidth(window:GetWidth()-20) - addonListBG:SetHeight(window:GetHeight()-60) - SkinFrame(addonListBG) - - --Create scroll frame (God damn these things are a pain) - local scrollFrame = CreateFrame("ScrollFrame", window:GetName().."_ScrollFrame", window, "UIPanelScrollFrameTemplate") - scrollFrame:SetPoint("TOPLEFT", addonListBG, "TOPLEFT", 0, -2) - scrollFrame:SetWidth(addonListBG:GetWidth()-25) - scrollFrame:SetHeight(addonListBG:GetHeight()-5) - SkinScrollBar(_G[window:GetName().."_ScrollFrameScrollBar"]) - scrollFrame:SetFrameLevel(window:GetFrameLevel()+1) - - scrollFrame.Anchor = CreateFrame("Frame", window:GetName().."_ScrollAnchor", scrollFrame) - scrollFrame.Anchor:SetPoint("TOPLEFT", scrollFrame, "TOPLEFT", 0, -3) - scrollFrame.Anchor:SetWidth(window:GetWidth()-40) - scrollFrame.Anchor:SetHeight(scrollFrame:GetHeight()) - scrollFrame.Anchor:SetFrameLevel(scrollFrame:GetFrameLevel()+1) - scrollFrame:SetScrollChild(scrollFrame.Anchor) - - --Load up addon information - stAddonManager.AllAddons = stAddonManager:UpdateAddonList() - stAddonManager.FilteredAddons = stAddonManager:UpdateAddonList() - stAddonManager.showEnabled = true - stAddonManager.showDisabled = true - - stAddonManager.Buttons = {} - - --Create initial list - for i, addon in pairs(stAddonManager.AllAddons) do - local button = CreateFrame("Frame", nil, scrollFrame.Anchor) - button:SetFrameLevel(scrollFrame.Anchor:GetFrameLevel() + 1) - button:SetSize(16, 16) - SkinFrame(button) - if addon.enabled then - button:SetBackdropColor(0/255, 170/255, 255/255) - end - - if i == 1 then - button:SetPoint("TOPLEFT", scrollFrame.Anchor, "TOPLEFT", 5, -5) - else - button:SetPoint("TOP", stAddonManager.Buttons[i-1], "BOTTOM", 0, -5) - end - button.text = button:CreateFontString(nil, "OVERLAY") - button.text:SetFont(unpack(font)) - button.text:SetJustifyH("LEFT") - button.text:SetPoint("LEFT", button, "RIGHT", 8, 0) - button.text:SetPoint("RIGHT", scrollFrame.Anchor, "RIGHT", 0, 0) - button.text:SetText(addon.title) - - button:SetScript("OnEnter", function(self) - --tooltip stuff - end) - - button:SetScript("OnMouseDown", function(self) - if addon.enabled then - self:SetBackdropColor(unpack(backdropcolor)) - DisableAddOn(addon.name) - addon.enabled = false - else - self:SetBackdropColor(0/255, 170/255, 255/255) - EnableAddOn(addon.name) - addon.enabled = true - end - end) - - stAddonManager.Buttons[i] = button - end - - local function UpdateList(AddonsTable) - --Start off by hiding all of the buttons - for _, b in pairs(stAddonManager.Buttons) do b:Hide() end - - local bIndex = 1 - for i, addon in pairs(AddonsTable) do - local button = stAddonManager.Buttons[bIndex] - button:Show() - if addon.enabled then - button:SetBackdropColor(0/255, 170/255, 255/255) - else - button:SetBackdropColor(unpack(backdropcolor)) - end - - button:SetScript("OnMouseDown", function(self) - if addon.enabled then - self:SetBackdropColor(unpack(backdropcolor)) - DisableAddOn(addon.name) - addon.enabled = false - else - self:SetBackdropColor(0/255, 170/255, 255/255) - EnableAddOn(addon.name) - addon.enabled = true - end - end) - - button.text:SetText(addon.title) - bIndex = bIndex+1 - end - end - - --Search Bar - local searchBar = CreateFrame("EditBox", window:GetName().."_SearchBar", window) - searchBar:SetFrameLevel(window:GetFrameLevel()+1) - searchBar:SetPoint("TOPLEFT", header, "BOTTOMLEFT", 10, -5) - searchBar:SetWidth(200) - searchBar:SetHeight(20) - SkinFrame(searchBar) - searchBar:SetFont(unpack(font)) - searchBar:SetText("Search") - searchBar:SetAutoFocus(false) - searchBar:SetTextInsets(3, 0, 0 ,0) - searchBar:SetScript("OnEnterPressed", function(self) self:ClearFocus() end) - searchBar:SetScript("OnEscapePressed", function(self) searchBar:SetText("Search") UpdateList(stAddonManager.AllAddons) searchBar:ClearFocus() end) - searchBar:SetScript("OnEditFocusGained", function(self) self:HighlightText() end) - searchBar:SetScript("OnTextChanged", function(self, input) - if input then - stAddonManager.FilteredAddons = stAddonManager:UpdateAddonList(self:GetText()) - UpdateList(stAddonManager.FilteredAddons) - end - end) - - local sbClear = CreateFrame("Button", nil, searchBar) - sbClear:SetPoint("RIGHT", searchBar, "RIGHT", 0, 0) - sbClear:SetFrameLevel(searchBar:GetFrameLevel()+2) - sbClear:SetSize(20, 20) - sbClear.text = sbClear:CreateFontString(nil, "OVERLAY") - sbClear.text:SetFont(unpack(font)) - sbClear.text:SetText("x") - sbClear.text:SetPoint("CENTER", sbClear, "CENTER", 0, 0) - sbClear:SetScript("OnEnter", function(self) self.text:SetTextColor(0/255, 170/255, 255/255) end) - sbClear:SetScript("OnLeave", function(self) self.text:SetTextColor(255/255, 255/255, 255/255) end) - sbClear:SetScript("OnClick", function(self) searchBar:SetText("Search") UpdateList(stAddonManager.AllAddons) searchBar:ClearFocus() end) - searchBar.clear = sbClear - - local reloadButton = CreateFrame("Button", window:GetName().."_ReloadUIButton", window) - reloadButton:SetPoint("LEFT", searchBar, "RIGHT", 5, 0) - reloadButton:SetWidth(window:GetWidth()-25-searchBar:GetWidth()) - reloadButton:SetHeight(searchBar:GetHeight()) - reloadButton.text = reloadButton:CreateFontString(nil, "OVERLAY") - reloadButton.text:SetPoint("CENTER") - reloadButton.text:SetFont(unpack(font)) - reloadButton.text:SetText("ReloadUI") - reloadButton:SetScript("OnEnter", function(self) self.text:SetTextColor(0/255, 170/255, 255/255) end) - reloadButton:SetScript("OnLeave", function(self) self.text:SetTextColor(255/255, 255/255, 255/255) end) - reloadButton:SetScript("OnClick", function(self) - if InCombatLockdown() then return end - ReloadUI() - end) - SkinFrame(reloadButton) - - stAddonManager.Loaded = true - else - stAddonManager:Show() - end -end - -SLASH_STADDONMANAGER1, SLASH_STADDONMANAGER2, SLASH_STADDONMANAGER3 = "/staddonmanager", "/stam", "/staddon" -SlashCmdList["STADDONMANAGER"] = LoadWindow - -local function CheckForAddon(event, addon, addonName) - return ((event == "PLAYER_ENTERING_WORLD" and IsAddOnLoaded(addonName)) or (event == "ADDON_LOADED" and addon == addonName)) -end - -local gmbAddOns = CreateFrame("Button", "GameMenuButtonAddOns", GameMenuFrame, "GameMenuButtonTemplate") -gmbAddOns:SetSize(GameMenuButtonMacros:GetWidth(), GameMenuButtonMacros:GetHeight()) -GameMenuFrame:SetHeight(GameMenuFrame:GetHeight()+GameMenuButtonMacros:GetHeight()); -GameMenuButtonLogout:SetPoint("TOP", gmbAddOns, "BOTTOM", 0, -1) -gmbAddOns:SetPoint("TOP", GameMenuButtonMacros, "BOTTOM", 0, -1) -gmbAddOns:SetText("|cff00aaffst|rAddonManager") -gmbAddOns:SetScript("OnClick", function() - HideUIPanel(GameMenuFrame); - LoadWindow() -end) - -gmbAddOns:RegisterEvent("ADDON_LOADED") -gmbAddOns:RegisterEvent("PLAYER_ENTERING_WORLD") -gmbAddOns:SetScript("OnEvent", function(self, event, addon) - if CheckForAddon(event, addon, "Aurora") then - local F, C = unpack(Aurora) - F.Reskin(gmbAddOns) - - elseif CheckForAddon(event, addon, "Tukui") then - local T, C, L = unpack(Tukui) - T.SkinButton(gmbAddOns) - local font = {GameMenuButtonMacros:GetFontString():GetFont()} - local shadow = {GameMenuButtonMacros:GetFontString():GetShadowOffset()} - gmbAddOns:GetFontString():SetFont(unpack(font)) - gmbAddOns:GetFontString():SetShadowOffset(unpack(shadow)) - end -end) \ No newline at end of file diff --git a/stAddonManager/stAddonManager.toc b/stAddonManager/stAddonManager.toc deleted file mode 100644 index 1aeb330..0000000 --- a/stAddonManager/stAddonManager.toc +++ /dev/null @@ -1,7 +0,0 @@ -## Interface: 40200 -## Author: Safturento -## Version: @project-version@ -## Title: |cff00aaffst|rAddonManager -## Notes: A simple and minimalistic addon to disable/enabled addons without logging out. - -stAddonManager.lua \ No newline at end of file -- 1.7.9.5