diff --git a/Plugins/BDFDB.min.js b/Plugins/BDFDB.min.js index 34919d77d8..ff5141f561 100644 --- a/Plugins/BDFDB.min.js +++ b/Plugins/BDFDB.min.js @@ -1 +1,10774 @@ -(a=>{if(window['BDFDB']&&window['BDFDB']['PluginUtils']&&typeof window['BDFDB']['PluginUtils']['cleanUp']=='function')window['BDFDB']['PluginUtils']['cleanUp'](window['BDFDB']);const b={'myPlugins':Object['assign']({},window['BDFDB']&&window['BDFDB']['myPlugins']),'InternalData':Object['assign']({'pressedKeys':[],'mousePosition':{'pageX':0x0,'pageY':0x0},'componentPatchQueries':{}},window['BDFDB']&&window['BDFDB']['InternalData'],{'creationTime':performance['now']()}),'name':'BDFDB'};const c={'name':'BDFDB','started':!![],'patchPriority':0x0};const d=Math['round'](Math['random']()*0x2386f26fc10000),e='278543574059057154',f='410787888507256842';b['InternalData']['loadId']=d;var g={};if(typeof Array['prototype']['flat']!='function')Array['prototype']['flat']=function(){return this;};c['defaults']={'settings':{'showToasts':{'value':!![],'description':'Show\x20Plugin\x20start\x20and\x20stop\x20Toasts'},'showSupportBadges':{'value':!![],'description':'Show\x20little\x20Badges\x20for\x20Users\x20who\x20support\x20my\x20Patreon'}}};b['LogUtils']={};b['LogUtils']['log']=function(I,J){console['log']('%c['+(typeof J=='string'&&J||'BDFDB')+']','color:\x20#3a71c1;\x20font-weight:\x20700;',(typeof I=='string'&&I||'')['trim']());};b['LogUtils']['warn']=function(I,J){console['warn']('%c['+(typeof J=='string'&&J||'BDFDB')+']','color:\x20#3a71c1;\x20font-weight:\x20700;',(typeof I=='string'&&I||'')['trim']());};b['LogUtils']['error']=function(I,J){console['error']('%c['+(typeof J=='string'&&J||'BDFDB')+']','color:\x20#3a71c1;\x20font-weight:\x20700;','Fatal\x20Error:\x20'+(typeof I=='string'&&I||'')['trim']());};b['LogUtils']['log']('Loading\x20library.');b['cleanUp']=b['PluginUtils']={};b['PluginUtils']['init']=b['loadMessage']=function(I){I['name']=I['name']||(typeof I['getName']=='function'?I['getName']():null);I['version']=I['version']||(typeof I['getVersion']=='function'?I['getVersion']():null);I['author']=I['author']||(typeof I['getAuthor']=='function'?I['getAuthor']():null);I['description']=I['description']||(typeof I['getDescription']=='function'?I['getDescription']():null);if(typeof I['getSettingsPanel']!='function')I['getSettingsPanel']=M=>{return I['started']&&b['PluginUtils']['createSettingsPanel'](I,[]);};let J=b['LanguageUtils']['LibraryStringsFormat']('toast_plugin_started','v'+I['version']);b['LogUtils']['log'](J,I['name']);if(!b['BDUtils']['getSettings'](b['BDUtils']['settingsIds']['showToasts'])&&g['showToasts'])b['NotificationUtils']['toast'](I['name']+'\x20'+J,{'nopointer':!![],'selector':'plugin-started-toast'});let K=typeof I['getRawUrl']=='function'&&typeof I['getRawUrl']()=='string'?I['getRawUrl']():'https://mwittrien.github.io/BetterDiscordAddons/Plugins/'+I['name']+'/'+I['name']+'.plugin.js';b['PluginUtils']['checkUpdate'](I['name'],K);if(typeof I['initConstructor']==='function')b['TimeUtils']['suppress'](I['initConstructor']['bind'](I),'Could\x20not\x20initiate\x20constructor!',I['name'])();if(typeof I['css']==='string')b['DOMUtils']['appendLocalStyle'](I['name'],I['css']);c['patchPlugin'](I);c['addSpecialListeners'](I);b['PluginUtils']['translate'](I);b['PluginUtils']['checkChangeLog'](I);if(!window['PluginUpdates']||typeof window['PluginUpdates']!=='object')window['PluginUpdates']={'plugins':{}};window['PluginUpdates']['plugins'][K]={'name':I['name'],'raw':K,'version':I['version']};if(typeof window['PluginUpdates']['interval']==='undefined')window['PluginUpdates']['interval']=b['TimeUtils']['interval'](M=>{b['PluginUtils']['checkAllUpdates']();},0x3e8*0x3c*0x3c*0x2);I['started']=!![];delete I['stopping'];let L=0x1;for(let M in b['myPlugins'])if(!b['myPlugins'][M]['started']&&typeof b['myPlugins'][M]['initialize']=='function')setTimeout(N=>{b['TimeUtils']['suppress'](b['myPlugins'][M]['initialize']['bind'](b['myPlugins'][M]),'Could\x20not\x20initiate\x20plugin!',M)();},0x64*L++);};b['PluginUtils']['clear']=b['unloadMessage']=function(I){c['clearStartTimeout'](I);delete b['myPlugins'][I['name']];let J=b['LanguageUtils']['LibraryStringsFormat']('toast_plugin_stopped','v'+I['version']);b['LogUtils']['log'](J,I['name']);if(!b['BDUtils']['getSettings'](b['BDUtils']['settingsIds']['showToasts'])&&g['showToasts'])b['NotificationUtils']['toast'](I['name']+'\x20'+J,{'nopointer':!![],'selector':'plugin-stopped-toast'});let K=typeof I['getRawUrl']=='function'&&typeof I['getRawUrl']()=='string'?I['getRawUrl']():'https://mwittrien.github.io/BetterDiscordAddons/Plugins/'+I['name']+'/'+I['name']+'.plugin.js';if(typeof I['css']==='string')b['DOMUtils']['removeLocalStyle'](I['name']);b['PluginUtils']['cleanUp'](I);for(let L in b['InternalData']['componentPatchQueries'])b['ArrayUtils']['remove'](b['InternalData']['componentPatchQueries'][L]['query'],I,!![]);for(let M of document['querySelectorAll']('.'+I['name']+'-modal,\x20.'+I['name']['toLowerCase']()+'-modal,\x20.'+I['name']+'-settingsmodal,\x20.'+I['name']['toLowerCase']()+'-settingsmodal')){let N=M['querySelector'](b['dotCN']['modalclose']);if(N)N['click']();}delete b['DataUtils']['cached'][I['name']];delete window['PluginUpdates']['plugins'][K];delete I['started'];b['TimeUtils']['timeout'](O=>{delete I['stopping'];});};b['PluginUtils']['translate']=function(I){I['labels']={};if(typeof I['setLabelsByLanguage']==='function'||typeof I['changeLanguageStrings']==='function'){if(n['LanguageStore']['chosenLocale'])J();else b['TimeUtils']['interval'](K=>{if(n['LanguageStore']['chosenLocale']){b['TimeUtils']['clear'](K);J();}},0x64);function J(){let K=b['LanguageUtils']['getLanguage']();if(typeof I['setLabelsByLanguage']==='function')I['labels']=I['setLabelsByLanguage'](K['id']);if(typeof I['changeLanguageStrings']==='function')I['changeLanguageStrings']();b['LogUtils']['log'](b['LanguageUtils']['LibraryStringsFormat']('toast_plugin_translated',K['ownlang']),I['name']);}}};b['PluginUtils']['cleanUp']=function(I){b['ListenerUtils']['remove'](I);b['StoreChangeUtils']['remove'](I);b['ObserverUtils']['disconnect'](I);b['ModuleUtils']['unpatch'](I);b['WindowUtils']['closeAll'](I);b['WindowUtils']['removeListener'](I);};b['PluginUtils']['checkUpdate']=function(I,J){if(I&&J)return new Promise(K=>{m['request'](J,(L,M,N)=>{if(L)return K(null);let O=N['match'](/['"][0-9]+\.[0-9]+\.[0-9]+['"]/i);if(!O)return K(null);if(b['NumberUtils']['getVersionDifference'](O[0x0],window['PluginUpdates']['plugins'][J]['version'])>0.2){b['NotificationUtils']['toast'](I+'\x20will\x20be\x20force\x20updated,\x20because\x20your\x20version\x20is\x20heavily\x20outdated.',{'type':'warn','nopointer':!![],'selector':'plugin-forceupdate-toast'});b['PluginUtils']['downloadUpdate'](I,J);return K(0x2);}else if(b['NumberUtils']['compareVersions'](O[0x0],window['PluginUpdates']['plugins'][J]['version'])){b['PluginUtils']['showUpdateNotice'](I,J);return K(0x1);}else{b['PluginUtils']['removeUpdateNotice'](I);return K(0x0);}});});return new Promise(K=>{callback(null);});};b['PluginUtils']['checkAllUpdates']=function(){return new Promise(I=>{let J=0x0,K=0x0;for(let L in window['PluginUpdates']['plugins']){let M=window['PluginUpdates']['plugins'][L];if(M)b['PluginUtils']['checkUpdate'](M['name'],M['raw'])['then'](N=>{J++;if(N==0x1)K++;if(J>=Object['keys'](window['PluginUpdates']['plugins'])['length'])I(K);});}});};b['PluginUtils']['showUpdateNotice']=function(I,J){if(!I||!J)return;let K=document['querySelector']('#pluginNotice');if(!K){K=b['NotificationUtils']['notice'](b['LanguageUtils']['LibraryStrings']['update_notice_update']+'    ',{'html':!![],'id':'pluginNotice','type':'info','btn':!b['BDUtils']['getSettings'](b['BDUtils']['settingsIds']['automaticLoading'])?b['LanguageUtils']['LanguageStrings']['ERRORS_RELOAD']:'','customicon':''});K['style']['setProperty']('display','block','important');K['style']['setProperty']('visibility','visible','important');K['style']['setProperty']('opacity','1','important');K['querySelector'](b['dotCN']['noticedismiss'])['addEventListener']('click',M=>{b['DOMUtils']['remove']('.update-clickme-tooltip');});let L=K['querySelector'](b['dotCN']['noticebutton']);if(L){b['DOMUtils']['toggle'](L,!![]);L['addEventListener']('click',M=>{m['electron']['remote']['getCurrentWindow']()['reload']();});L['addEventListener']('mouseenter',M=>{if(window['PluginUpdates']['downloaded'])b['TooltipUtils']['create'](L,window['PluginUpdates']['downloaded']['join'](',\x20'),{'type':'bottom','selector':'update-notice-tooltip','style':'max-width:\x20420px'});});}}if(K){let M=K['querySelector']('#outdatedPlugins');if(M&&!M['querySelector']('#'+I+'-notice')){if(M['querySelector']('span'))M['appendChild'](b['DOMUtils']['create'](',\x20'));let N=b['DOMUtils']['create'](''+I+'');N['addEventListener']('click',O=>{b['PluginUtils']['downloadUpdate'](I,J);});M['appendChild'](N);if(!document['querySelector']('.update-clickme-tooltip'))b['TooltipUtils']['create'](M,b['LanguageUtils']['LibraryStrings']['update_notice_click'],{'type':'bottom','selector':'update-clickme-tooltip','delay':0x1f4});}}};b['PluginUtils']['removeUpdateNotice']=function(I,J=document['querySelector']('#pluginNotice')){if(!I||!J)return;let K=J['querySelector']('#outdatedPlugins');if(K){let L=K['querySelector']('#'+I+'-notice');if(L){let M=L['nextSibling'];let N=L['prevSibling'];if(M&&b['DOMUtils']['containsClass'](M,'separator'))M['remove']();else if(N&&b['DOMUtils']['containsClass'](N,'separator'))N['remove']();L['remove']();}if(!K['querySelector']('span')){let O=J['querySelector'](b['dotCN']['noticebutton']);if(O){J['querySelector']('.notice-message')['innerText']=b['LanguageUtils']['LibraryStrings']['update_notice_reload'];b['DOMUtils']['toggle'](O,![]);}else J['querySelector'](b['dotCN']['noticedismiss'])['click']();}}};b['PluginUtils']['downloadUpdate']=function(I,J){if(!I||!J)return;m['request'](J,(K,L,M)=>{if(K)return b['LogUtils']['warn']('Unable\x20to\x20get\x20update\x20for\x20'+I);b['InternalData']['creationTime']=0x0;let N=b['BDUtils']['isPluginEnabled'](I);let O=(M['match'](/"name"\s*:\s*"([^"]+)"/)||[])[0x1]||I;let P=M['match'](/['"][0-9]+\.[0-9]+\.[0-9]+['"]/i)['toString']()['replace'](/['"]/g,'');let Q=window['PluginUpdates']['plugins'][J]['version'];m['fs']['writeFile'](m['path']['join'](b['BDUtils']['getPluginsFolder'](),O+'.plugin.js'),M,R=>{if(I!=O){J=J['replace'](new RegExp(I,'g'),O);m['fs']['unlink'](m['path']['join'](b['BDUtils']['getPluginsFolder'](),I+'.plugin.js'),U=>{});let T=m['path']['join'](b['BDUtils']['getPluginsFolder'](),I+'.config.json');m['fs']['exists'](T,U=>{if(U)m['fs']['rename'](T,m['path']['join'](b['BDUtils']['getPluginsFolder'](),O+'.config.json'),V=>{});});b['TimeUtils']['timeout'](U=>{if(N&&!b['BDUtils']['isPluginEnabled'](O))b['BDUtils']['enablePlugin'](O);},0xbb8);}b['NotificationUtils']['toast'](b['LanguageUtils']['LibraryStringsFormat']('toast_plugin_updated',I,'v'+Q,O,'v'+P),{'nopointer':!![],'selector':'plugin-updated-toast'});let S=document['querySelector']('#pluginNotice');if(S){if(S['querySelector'](b['dotCN']['noticebutton'])){window['PluginUpdates']['plugins'][J]['version']=P;if(!window['PluginUpdates']['downloaded'])window['PluginUpdates']['downloaded']=[];if(!window['PluginUpdates']['downloaded']['includes'](I))window['PluginUpdates']['downloaded']['push'](I);}b['PluginUtils']['removeUpdateNotice'](I,S);}});});};b['PluginUtils']['checkChangeLog']=function(I){if(!b['ObjectUtils']['is'](I)||!I['changelog'])return;let J=b['DataUtils']['load'](I,'changelog');if(!J['currentversion']||b['NumberUtils']['compareVersions'](I['version'],J['currentversion'])){J['currentversion']=I['version'];b['DataUtils']['save'](J,I,'changelog');b['PluginUtils']['openChangeLog'](I);}};b['PluginUtils']['openChangeLog']=function(I){if(!b['ObjectUtils']['is'](I)||!I['changelog'])return;let J='',K={'added':'New\x20Features','fixed':'Bug\x20Fixes','improved':'Improvements','progress':'Progress'};for(let L in I['changelog']){L=L['toLowerCase']();let M=b['disCN']['changelog'+L];if(M){J+=''+K[L]+'
    ';for(let N of I['changelog'][L])J+='
  • '+N[0x0]+''+(N[0x1]?':\x20'+N[0x1]+'.':'')+'
  • ';J+='
';}}if(J)b['ModalUtils']['open'](I,{'header':I['name']+'\x20'+b['LanguageUtils']['LanguageStrings']['CHANGE_LOG'],'subheader':'Version\x20'+I['version'],'children':b['ReactUtils']['elementToReact'](b['DOMUtils']['create'](J)),'className':b['disCN']['modalchangelogmodal'],'contentClassName':b['disCNS']['changelogcontainer']+b['disCN']['modalminicontent']});};b['PluginUtils']['addLoadingIcon']=function(I){if(!Node['prototype']['isPrototypeOf'](I))return;let J=document['querySelector'](b['dotCN']['app']);if(!J)return;b['DOMUtils']['addClass'](I,b['disCN']['loadingicon']);let K=document['querySelector'](b['dotCN']['app']+'>'+b['dotCN']['loadingiconwrapper']);if(!K){K=b['DOMUtils']['create']('');J['appendChild'](K);let L=new MutationObserver(M=>{if(!K['firstElementChild'])b['DOMUtils']['remove'](K);});L['observe'](K,{'childList':!![]});}K['appendChild'](I);};b['PluginUtils']['createSettingsPanel']=function(I,J){if(!b['ObjectUtils']['is'](I)||!J||!b['ReactUtils']['isValidElement'](J)&&!b['ArrayUtils']['is'](J))return;let K=b['DOMUtils']['create']('');b['ReactUtils']['render'](b['ReactUtils']['createElement'](x['LibraryComponents']['SettingsPanel'],{'key':I['name']+'-settingsPanel','title':I['name'],'controls':[I['changelog']&&b['ReactUtils']['createElement'](x['LibraryComponents']['Clickable'],{'className':b['disCN']['settingspanelheaderbutton'],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['TooltipContainer'],{'text':b['LanguageUtils']['LanguageStrings']['CHANGE_LOG'],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['SvgIcon'],{'name':x['LibraryComponents']['SvgIcon']['Names']['CHANGELOG'],'onClick':L=>{b['PluginUtils']['openChangeLog'](I);}})})}),I!=b&&!I['noLibrary']&&b['ReactUtils']['createElement'](x['LibraryComponents']['Button'],{'size':x['LibraryComponents']['Button']['Sizes']['MIN'],'children':b['LanguageUtils']['LibraryStrings']['library_settings'],'onClick':L=>{let M=b['DOMUtils']['getParent'](b['dotCN']['_repocard'],L['currentTarget']);if(M){let N=c['createLibrarySettings']();if(N){let O=[];while(M['childElementCount']){O['push'](M['firstChild']);M['firstChild']['remove']();}let P=b['DOMUtils']['create']('');M['appendChild'](P);P['addEventListener']('click',Q=>{while(M['childElementCount'])M['firstChild']['remove']();while(O['length'])M['appendChild'](O['shift']());let R=M['querySelector'](b['dotCN']['_reposettings']);if(R){while(R['childElementCount'])R['firstChild']['remove']();R['appendChild'](I['getSettingsPanel']());}});M['appendChild'](N);}}}})],'children':J}),K);return K;};b['PluginUtils']['refreshSettingsPanel']=function(I,J,...K){if(!b['ObjectUtils']['is'](I)||typeof I['getSettingsPanel']!='function'||!Node['prototype']['isPrototypeOf'](J)||!J['parentElement'])return;J['parentElement']['appendChild'](I['getSettingsPanel'](...K));J['remove']();};c['createLibrarySettings']=function(){if(!window['BDFDB']||typeof b!='object'||!b['loaded'])return;let I,J=[];let K=b['BDUtils']['getSettings'](b['BDUtils']['settingsIds']['showToasts']);for(let L in g)J['push'](b['ReactUtils']['createElement'](x['LibraryComponents']['SettingsSaveItem'],{'className':b['disCN']['marginbottom8'],'type':'Switch','plugin':c,'disabled':L=='showToasts'&&K,'keys':['settings',L],'label':c['defaults']['settings'][L]['description'],'note':L=='showToasts'&&K&&'Disable\x20BBDs\x20general\x20\x27Show\x20Toast\x27\x20setting\x20before\x20disabling\x20this','dividerbottom':!![],'value':g[L]||L=='showToasts'&&K}));return I=b['PluginUtils']['createSettingsPanel'](b,J);};c['clearStartTimeout']=function(I){if(!b['ObjectUtils']['is'](I))return;b['TimeUtils']['clear'](I['startTimeout'],I['libLoadTimeout']);delete I['startTimeout'];delete I['libLoadTimeout'];};c['addSpecialListeners']=function(I){I=I==b&&c||I;if(b['ObjectUtils']['is'](I)){if(typeof I['onSettingsClosed']==='function'){let J=b['ModuleUtils']['findByName']('StandardSidebarView');if(J)b['ModuleUtils']['patch'](I,J['prototype'],'componentWillUnmount',{'after':K=>{I['onSettingsClosed']();}});}if(typeof I['onSwitch']==='function'){let K=document['querySelector'](b['dotCN']['guildswrapper']+'\x20~\x20*\x20>\x20'+b['dotCN']['chatspacer']);if(K){let L=new MutationObserver(N=>{N['forEach'](O=>{if(O['target']&&b['DOMUtils']['containsClass'](O['target'],b['disCN']['nochannel']))I['onSwitch']();});});b['ObserverUtils']['connect'](I,K['querySelector'](b['dotCNC']['chat']+b['dotCN']['nochannel']),{'name':'switchFixNoChannelObserver','instance':L},{'attributes':!![]});let M=new MutationObserver(N=>{N['forEach'](O=>{if(O['addedNodes']){O['addedNodes']['forEach'](P=>{if(b['DOMUtils']['containsClass'](P,b['disCN']['chat'],b['disCN']['nochannel'],![])){b['ObserverUtils']['connect'](I,P,{'name':'switchFixNoChannelObserver','instance':L},{'attributes':!![]});}});}});});b['ObserverUtils']['connect'](I,K,{'name':'switchFixSpacerObserver','instance':M},{'childList':!![]});}}c['addContextListeners'](I);}};b['ObserverUtils']={};b['ObserverUtils']['connect']=function(I,J,K,L={'childList':!![]}){I=I==b&&c||I;if(!b['ObjectUtils']['is'](I)||!J||!K)return;if(b['ObjectUtils']['isEmpty'](I['observers']))I['observers']={};if(!b['ArrayUtils']['is'](I['observers'][K['name']]))I['observers'][K['name']]=[];if(!K['multi'])for(let N of I['observers'][K['name']])N['disconnect']();if(K['instance'])I['observers'][K['name']]['push'](K['instance']);let M=I['observers'][K['name']][I['observers'][K['name']]['length']-0x1];if(M){let O=Node['prototype']['isPrototypeOf'](J)?J:typeof J==='string'?document['querySelector'](J):null;if(O)M['observe'](O,L);}};b['ObserverUtils']['disconnect']=function(I,J){I=I==b&&c||I;if(b['ObjectUtils']['is'](I)&&!b['ObjectUtils']['isEmpty'](I['observers'])){let K=typeof J=='string'?J:b['ObjectUtils']['is'](J)?J['name']:null;if(!K){for(let L in I['observers'])for(let M of I['observers'][L])M['disconnect']();delete I['observers'];}else if(!b['ArrayUtils']['is'](I['observers'][K])){for(let N of I['observers'][K])N['disconnect']();delete I['observers'][K];}}};b['StoreChangeUtils']={};b['StoreChangeUtils']['add']=function(I,J,K){I=I==b&&c||I;if(!b['ObjectUtils']['is'](I)||!b['ObjectUtils']['is'](J)||typeof J['addChangeListener']!='function'||typeof K!='function')return;b['ListenerUtils']['remove'](I,J,K);if(!b['ArrayUtils']['is'](I['changeListeners']))I['changeListeners']=[];I['changeListeners']['push']({'store':J,'callback':K});J['addChangeListener'](K);};b['StoreChangeUtils']['remove']=function(I,J,K){I=I==b&&c||I;if(!b['ObjectUtils']['is'](I)||!b['ArrayUtils']['is'](I['changeListeners']))return;if(!J){while(I['changeListeners']['length']){let L=I['changeListeners']['pop']();L['store']['removeChangeListener'](L['callback']);}}else if(b['ObjectUtils']['is'](J)&&typeof J['addChangeListener']=='function'){if(!K){for(let M of I['changeListeners']){let N=[];if(M['store']==J){M['store']['removeChangeListener'](M['callback']);N['push'](M);}if(N['length'])I['changeListeners']=I['changeListeners']['filter'](O=>!N['includes'](O));}}else if(typeof K=='function'){J['removeChangeListener'](K);I['changeListeners']=I['changeListeners']['filter'](O=>O['store']==J&&O['callback']==K);}}};b['ListenerUtils']={};b['ListenerUtils']['add']=function(I,J,K,L,M){I=I==b&&c||I;if(!b['ObjectUtils']['is'](I)||!Node['prototype']['isPrototypeOf'](J)&&J!==window||!K)return;let N=typeof L=='function';let O=N?undefined:L;let P=N?L:M;if(typeof P!='function')return;b['ListenerUtils']['remove'](I,J,K,O);for(let Q of K['split']('\x20')){Q=Q['split']('.');let R=Q['shift']()['toLowerCase']();if(!R)return;let S=R;R=R=='mouseenter'||R=='mouseleave'?'mouseover':R;let T=(Q['join']('.')||'')+I['name'];if(!b['ArrayUtils']['is'](I['eventListeners']))I['eventListeners']=[];let U=null;if(O){if(S=='mouseenter'||S=='mouseleave'){U=V=>{for(let W of V['path'])if(typeof W['matches']=='function'&&W['matches'](O)&&!W[T+'BDFDB'+S]){W[T+'BDFDB'+S]=!![];if(S=='mouseenter')P(b['ListenerUtils']['copyEvent'](V,W));let X=Y=>{if(Y['target']['contains'](W)||Y['target']==W||!W['contains'](Y['target'])){if(S=='mouseleave')P(b['ListenerUtils']['copyEvent'](V,W));delete W[T+'BDFDB'+S];document['removeEventListener']('mouseout',X);}};document['addEventListener']('mouseout',X);break;}};}else{U=V=>{for(let W of V['path'])if(typeof W['matches']=='function'&&W['matches'](O)){P(b['ListenerUtils']['copyEvent'](V,W));break;}};}}else U=V=>{P(b['ListenerUtils']['copyEvent'](V,J));};I['eventListeners']['push']({'ele':J,'eventName':R,'origEventName':S,'namespace':T,'selector':O,'eventCallback':U});J['addEventListener'](R,U,!![]);}};b['ListenerUtils']['remove']=function(I,J,K='',L){I=I==b&&c||I;if(!b['ObjectUtils']['is'](I)||!b['ArrayUtils']['is'](I['eventListeners']))return;if(!J){while(I['eventListeners']['length']){let M=I['eventListeners']['pop']();M['ele']['removeEventListener'](M['eventName'],M['eventCallback'],!![]);}}else if(Node['prototype']['isPrototypeOf'](J)||J===window){for(let N of K['split']('\x20')){N=N['split']('.');let O=N['shift']()['toLowerCase']();let P=(N['join']('.')||'')+I['name'];for(let Q of I['eventListeners']){let R=[];if(Q['ele']==J&&(!O||Q['origEventName']==O)&&Q['namespace']==P&&(L===undefined||Q['selector']==L)){Q['ele']['removeEventListener'](Q['eventName'],Q['eventCallback'],!![]);R['push'](Q);}if(R['length'])I['eventListeners']=I['eventListeners']['filter'](S=>!R['includes'](S));}}}};b['ListenerUtils']['multiAdd']=function(I,J,K){if(!Node['prototype']['isPrototypeOf'](I)||!J||typeof K!='function')return;for(let L of J['trim']()['split']('\x20')['filter'](M=>M))I['addEventListener'](L,K,!![]);};b['ListenerUtils']['multiRemove']=function(I,J,K){if(!Node['prototype']['isPrototypeOf'](I)||!J||typeof K!='function')return;for(let L of J['trim']()['split']('\x20')['filter'](M=>M))I['removeEventListener'](L,K,!![]);};b['ListenerUtils']['addToChildren']=function(I,J,K,L){if(!Node['prototype']['isPrototypeOf'](I)||!J||!K||!K['trim']()||typeof L!='function')return;for(let M of J['trim']()['split']('\x20')['filter'](N=>N)){let N=L;if(M=='mouseenter'||M=='mouseleave')N=O=>{if(O['target']['matches'](K))L(O);};I['querySelectorAll'](K['trim']())['forEach'](O=>{O['addEventListener'](M,N,!![]);});}};b['ListenerUtils']['copyEvent']=function(I,J){if(!I||!I['constructor']||!I['type'])return I;let K=new I['constructor'](I['type'],I);Object['defineProperty'](K,'originalEvent',{'value':I});Object['defineProperty'](K,'which',{'value':I['which']});Object['defineProperty'](K,'keyCode',{'value':I['keyCode']});Object['defineProperty'](K,'path',{'value':I['path']});Object['defineProperty'](K,'relatedTarget',{'value':I['relatedTarget']});Object['defineProperty'](K,'srcElement',{'value':I['srcElement']});Object['defineProperty'](K,'target',{'value':I['target']});Object['defineProperty'](K,'toElement',{'value':I['toElement']});if(J)Object['defineProperty'](K,'currentTarget',{'value':J});return K;};b['ListenerUtils']['stopEvent']=function(I){if(b['ObjectUtils']['is'](I)){if(typeof I['preventDefault']=='function')I['preventDefault']();if(typeof I['stopPropagation']=='function')I['stopPropagation']();if(typeof I['stopImmediatePropagation']=='function')I['stopImmediatePropagation']();if(b['ObjectUtils']['is'](I['originalEvent'])){if(typeof I['originalEvent']['preventDefault']=='function')I['originalEvent']['preventDefault']();if(typeof I['originalEvent']['stopPropagation']=='function')I['originalEvent']['stopPropagation']();if(typeof I['originalEvent']['stopImmediatePropagation']=='function')I['originalEvent']['stopImmediatePropagation']();}}};var h=[],i={'queue':[],'running':![]};b['NotificationUtils']={};b['NotificationUtils']['toast']=function(I,J={}){let K=document['querySelector']('.toasts,\x20.bd-toasts');if(!K){let M=document['querySelector'](b['dotCN']['channels']+'\x20+\x20div');let N=M?b['DOMUtils']['getRects'](M):null;let O=M?M['querySelector'](b['dotCN']['memberswrap']):null;let P=N?N['left']:0x136;let Q=N?O?N['width']-b['DOMUtils']['getRects'](O)['width']:N['width']:window['outerWidth']-0x0;let R=M?M['querySelector']('form'):null;let S=R?b['DOMUtils']['getRects'](R)['height']:0x50;K=b['DOMUtils']['create']('');(document['querySelector'](b['dotCN']['app'])||document['body'])['appendChild'](K);}const {type='',icon=!![],timeout=0xbb8,html=![],selector='',nopointer=![],color=''}=J;let L=b['DOMUtils']['create'](''+(html===!![]?I:b['StringUtils']['htmlEscape'](I))+'');if(type){b['DOMUtils']['addClass'](L,'toast-'+type);if(icon)b['DOMUtils']['addClass'](L,'icon');}else if(color){let T=b['ColorUtils']['convert'](color,'RGB');if(T)L['style']['setProperty']('background-color',T);}b['DOMUtils']['addClass'](L,selector);K['appendChild'](L);L['close']=U=>{if(document['contains'](L)){b['DOMUtils']['addClass'](L,'closing');L['style']['setProperty']('pointer-events','none','important');b['TimeUtils']['timeout'](V=>{L['remove']();if(!K['querySelectorAll']('.toast,\x20.bd-toast')['length'])K['remove']();},0xbb8);}};if(nopointer)L['style']['setProperty']('pointer-events','none','important');else L['addEventListener']('click',L['close']);b['TimeUtils']['timeout'](U=>{L['close']();},timeout>0x0?timeout:0x927c0);return L;};b['NotificationUtils']['desktop']=function(I,J={}){const K=N=>{i['queue']['push']({'parsedcontent':I,'parsedoptions':J});L();};const L=N=>{if(!i['running']){let O=i['queue']['shift']();if(O)M(O['parsedcontent'],O['parsedoptions']);}};const M=(N,O)=>{i['running']=!![];let P=O['silent'];O['silent']=O['silent']||O['sound']?!![]:![];let Q=new Notification(N,O);let R=new Audio();let S=b['TimeUtils']['timeout'](U=>{T();},O['timeout']?O['timeout']:0xbb8);if(typeof O['click']=='function')Q['onclick']=U=>{b['TimeUtils']['clear'](S);T();O['click']();};if(!P&&O['sound']){R['src']=O['sound'];R['play']();}const T=U=>{R['pause']();Q['close']();i['running']=![];b['TimeUtils']['timeout'](V=>{L();},0x3e8);};};if(!('Notification'in window)){}else if(Notification['permission']==='granted')K();else if(Notification['permission']!=='denied')Notification['requestPermission'](function(N){if(N==='granted')K();});};b['NotificationUtils']['notice']=function(I,J={}){if(!I)return;let K=document['querySelector'](b['dotCN']['layers']);if(!K)return;let L=b['NumberUtils']['generateId'](h);let M=b['DOMUtils']['create']('');K['parentElement']['insertBefore'](M,K);let N=M['querySelector']('.notice-message');if(J['platform'])for(let Q of J['platform']['split']('\x20'))if(u['noticeicon'+Q]){let R=b['DOMUtils']['create']('');b['DOMUtils']['addClass'](R,b['disCN']['noticeplatformicon']);b['DOMUtils']['removeClass'](R,b['disCN']['noticeicon']);M['insertBefore'](R,N);}if(J['customicon']){let S=b['DOMUtils']['create'](J['customicon']);let T=b['DOMUtils']['create']('');if(S['tagName']=='span'&&!S['firstElementChild'])T['style']['setProperty']('background','url('+J['customicon']+')\x20center/cover\x20no-repeat');else T['appendChild'](S);b['DOMUtils']['addClass'](T,b['disCN']['noticeplatformicon']);b['DOMUtils']['removeClass'](T,b['disCN']['noticeicon']);M['insertBefore'](T,N);}if(J['btn']||J['button'])M['appendChild'](b['DOMUtils']['create'](''+(J['btn']||J['button'])+''));if(J['id'])M['id']=J['id']['split']('\x20')['join']('');if(J['selector'])b['DOMUtils']['addClass'](M,J['selector']);if(J['css'])b['DOMUtils']['appendLocalStyle']('BDFDBcustomNotificationBar'+L,J['css']);if(J['style'])M['style']=J['style'];if(J['html']===!![])N['innerHTML']=I;else{let U=document['createElement']('a');let V=[];for(let W of I['split']('\x20')){let X=b['StringUtils']['htmlEscape'](W);U['href']=W;V['push'](U['host']&&U['host']!==window['location']['host']?''+X+'':X);}N['innerHTML']=V['join']('\x20');}let O=null;if(J['type']&&!document['querySelector'](b['dotCNS']['chatbase']+b['dotCN']['noticestreamer'])){if(O=b['disCN']['notice'+J['type']])b['DOMUtils']['addClass'](M,O);if(J['type']=='premium'){let Y=M['querySelector'](b['dotCN']['noticebutton']);if(Y)b['DOMUtils']['addClass'](Y,b['disCN']['noticepremiumaction']);b['DOMUtils']['addClass'](N,b['disCN']['noticepremiumtext']);M['insertBefore'](b['DOMUtils']['create'](''),N);}}if(!O){let Z=b['ColorUtils']['convert'](J['color'],'RGBCOMP');if(Z){let a0=Z[0x0]>0xb4&&Z[0x1]>0xb4&&Z[0x2]>0xb4?'#000':'#FFF';let a1=b['ColorUtils']['convert'](Z,'HEX');let a2=Z[0x0]>0xb4&&Z[0x1]>0xb4&&Z[0x2]>0xb4?'brightness(0%)':'brightness(100%)';b['DOMUtils']['appendLocalStyle']('BDFDBcustomNotificationBarColorCorrection'+L,b['dotCN']['noticewrapper']+'[notice-id=\x22'+L+'\x22]{background-color:'+a1+'\x20!important;}'+b['dotCN']['noticewrapper']+'[notice-id=\x22'+L+'\x22]\x20.notice-message\x20{color:'+a0+'\x20!important;}'+b['dotCN']['noticewrapper']+'[notice-id=\x22'+L+'\x22]\x20'+b['dotCN']['noticebutton']+'\x20{color:'+a0+'\x20!important;border-color:'+b['ColorUtils']['setAlpha'](a0,0.25,'RGBA')+'\x20!important;}'+b['dotCN']['noticewrapper']+'[notice-id=\x22'+L+'\x22]\x20'+b['dotCN']['noticebutton']+':hover\x20{color:'+a1+'\x20!important;background-color:'+a0+'\x20!important;}'+b['dotCN']['noticewrapper']+'[notice-id=\x22'+L+'\x22]\x20'+b['dotCN']['noticedismiss']+'\x20{filter:'+a2+'\x20!important;}');}else b['DOMUtils']['addClass'](M,b['disCN']['noticedefault']);}M['style']['setProperty']('height','36px','important');M['style']['setProperty']('min-width','70vw','important');M['style']['setProperty']('left','unset','important');M['style']['setProperty']('right','unset','important');let P=(b['DOMUtils']['getWidth'](document['body']['firstElementChild'])-b['DOMUtils']['getWidth'](M))/0x2;M['style']['setProperty']('left',P+'px','important');M['style']['setProperty']('right',P+'px','important');M['style']['setProperty']('min-width','unset','important');M['style']['setProperty']('width','unset','important');M['style']['setProperty']('max-width','calc(100vw\x20-\x20'+P*0x2+'px)','important');M['querySelector'](b['dotCN']['noticedismiss'])['addEventListener']('click',a3=>{M['style']['setProperty']('overflow','hidden','important');M['style']['setProperty']('height','0px','important');b['TimeUtils']['timeout'](a4=>{b['ArrayUtils']['remove'](h,L);b['DOMUtils']['removeLocalStyle']('BDFDBcustomNotificationBar'+L);b['DOMUtils']['removeLocalStyle']('BDFDBcustomNotificationBarColorCorrection'+L);M['remove']();},0x1f4);});return M;};b['NotificationUtils']['alert']=function(I,J){if(typeof I=='string'&&typeof I=='string'&&window['BdApi']&&typeof BdApi['alert']=='function')BdApi['alert'](I,J);};var j=[];b['TooltipUtils']={};b['TooltipUtils']['create']=function(I,J,K={}){let L=document['querySelector'](b['dotCN']['appmount']+'\x20>\x20'+b['dotCN']['itemlayercontainer']);if(!L||typeof J!='string'&&!b['ObjectUtils']['is'](K['guild'])||!Node['prototype']['isPrototypeOf'](I)||!document['contains'](I))return null;let M=b['NumberUtils']['generateId'](j);let N=b['DOMUtils']['create']('');L['appendChild'](N);let O=N['firstElementChild'];let P=N['querySelector'](b['dotCN']['tooltipcontent']);let Q=N['querySelector'](b['dotCN']['tooltippointer']);if(K['id'])O['id']=K['id']['split']('\x20')['join']('');if(typeof K['type']!='string'||!b['disCN']['tooltip'+K['type']['toLowerCase']()])K['type']='top';let R=K['type']['toLowerCase']();b['DOMUtils']['addClass'](O,b['disCN']['tooltip'+R]);let S=![],T=![],U='';if(K['style'])U+=K['style'];if(K['fontColor']){S=b['ObjectUtils']['is'](K['fontColor']);if(!S)U=(U?U+'\x20':'')+('color:\x20'+b['ColorUtils']['convert'](K['fontColor'],'RGBA')+'\x20!important;');}if(K['backgroundColor']){T=!![];let X=b['ObjectUtils']['is'](K['backgroundColor']);let Y=!X?b['ColorUtils']['convert'](K['backgroundColor'],'RGBA'):b['ColorUtils']['createGradient'](K['backgroundColor']);U=(U?U+'\x20':'')+('background:\x20'+Y+'\x20!important;\x20border-color:\x20'+(X?b['ColorUtils']['convert'](K['backgroundColor'][R=='left'?0x64:0x0],'RGBA'):Y)+'\x20!important;');}if(U)O['style']=U;if(typeof K['zIndex']=='number'){N['style']['setProperty']('z-index',K['zIndex'],'important');O['style']['setProperty']('z-index',K['zIndex'],'important');}if(T)b['DOMUtils']['addClass'](O,b['disCN']['tooltipcustom']);else if(K['color']&&b['disCN']['tooltip'+K['color']['toLowerCase']()])b['DOMUtils']['addClass'](O,b['disCN']['tooltip'+K['color']['toLowerCase']()]);else b['DOMUtils']['addClass'](O,b['disCN']['tooltipblack']);if(K['list']||b['ObjectUtils']['is'](K['guild']))b['DOMUtils']['addClass'](O,b['disCN']['tooltiplistitem']);if(K['selector'])b['DOMUtils']['addClass'](O,K['selector']);if(b['ObjectUtils']['is'](K['guild'])){let Z=n['StreamUtils']['getAllApplicationStreams']()['filter'](a3=>a3['guildId']===K['guild']['id'])['map'](a3=>a3['ownerId']);let a0=Z['map'](a3=>n['UserStore']['getUser'](a3))['filter'](a3=>a3);let a1=Object['keys'](n['VoiceUtils']['getVoiceStates'](K['guild']['id']))['map'](a3=>!Z['includes'](a3)&&b['LibraryModules']['UserStore']['getUser'](a3))['filter'](a3=>a3);let a2=J||K['guild']['toString']();if(S)a2=''+b['StringUtils']['htmlEscape'](a2)+'';b['ReactUtils']['render'](b['ReactUtils']['createElement'](b['ReactUtils']['Fragment'],{'children':[b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['tooltiprow'],b['disCN']['tooltiprowguildname']),'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['GuildComponents']['Badge'],{'guild':K['guild'],'size':n['StringUtils']['cssValueToNumber'](t['TooltipGuild']['iconSize']),'className':b['disCN']['tooltiprowicon']}),b['ReactUtils']['createElement']('span',{'className':b['DOMUtils']['formatClassName'](b['disCN']['tooltipguildnametext'],(a1['length']||a0['length'])&&b['disCN']['tooltipguildnametextlimitedsize']),'children':S||K['html']?b['ReactUtils']['elementToReact'](b['DOMUtils']['create'](a2)):a2})]}),a1['length']?b['ReactUtils']['createElement']('div',{'className':b['disCN']['tooltiprow'],'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['SvgIcon'],{'name':x['LibraryComponents']['SvgIcon']['Names']['SPEAKER'],'className':b['disCN']['tooltipactivityicon']}),b['ReactUtils']['createElement'](x['LibraryComponents']['UserSummaryItem'],{'users':a1,'max':0x6})]}):null,a0['length']?b['ReactUtils']['createElement']('div',{'className':b['disCN']['tooltiprow'],'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['SvgIcon'],{'name':x['LibraryComponents']['SvgIcon']['Names']['STREAM'],'className':b['disCN']['tooltipactivityicon']}),b['ReactUtils']['createElement'](x['LibraryComponents']['UserSummaryItem'],{'users':a0,'max':0x6})]}):null]['filter'](a3=>a3)}),P);}else{if(S)P['innerHTML']=''+b['StringUtils']['htmlEscape'](J)+'';else if(K['html']===!![])P['innerHTML']=J;else P['innerText']=J;}if(K['hide'])b['DOMUtils']['appendLocalStyle']('BDFDBhideOtherTooltips'+M,'#app-mount\x20'+b['dotCN']['tooltip']+':not([tooltip-id=\x22'+M+'\x22])\x20{display:\x20none\x20!important;}',L);let V=a3=>{b['DOMUtils']['remove'](N);};if(!K['perssist'])I['addEventListener']('mouseleave',V);let W=new MutationObserver(a3=>a3['forEach'](a4=>{let a5=Array['from'](a4['removedNodes']);if(a5['indexOf'](N)>-0x1||a5['indexOf'](I)>-0x1||a5['some'](a6=>a6['contains'](I))){b['ArrayUtils']['remove'](j,M);W['disconnect']();b['DOMUtils']['remove'](N);b['DOMUtils']['removeLocalStyle']('BDFDBhideOtherTooltips'+M,L);I['removeEventListener']('mouseleave',V);}}));W['observe'](document['body'],{'subtree':!![],'childList':!![]});(O['update']=N['update']=a3=>{let a4,a5,a6=b['DOMUtils']['getRects'](I),a7=b['DOMUtils']['getRects'](N),a8=b['DOMUtils']['getRects'](document['querySelector'](b['dotCN']['appmount'])),a9={'height':0xa,'width':0xa},aa=typeof K['offset']=='number'?K['offset']:0x0;switch(R){case'top':a5=a6['top']-a7['height']-a9['height']+0x2-aa;a4=a6['left']+(a6['width']-a7['width'])/0x2;break;case'bottom':a5=a6['top']+a6['height']+a9['height']-0x2+aa;a4=a6['left']+(a6['width']-a7['width'])/0x2;break;case'left':a5=a6['top']+(a6['height']-a7['height'])/0x2;a4=a6['left']-a7['width']-a9['width']+0x2-aa;break;case'right':a5=a6['top']+(a6['height']-a7['height'])/0x2;a4=a6['left']+a6['width']+a9['width']-0x2+aa;break;}N['style']['setProperty']('top',a5+'px');N['style']['setProperty']('left',a4+'px');Q['style']['removeProperty']('margin-left');Q['style']['removeProperty']('margin-top');if(R=='top'||R=='bottom'){if(a4<0x0){N['style']['setProperty']('left','5px');Q['style']['setProperty']('margin-left',a4-0xa+'px');}else{let ab=a8['width']-(a4+a7['width']);if(ab<0x0){N['style']['setProperty']('left',a8['width']-a7['width']-0x5+'px');Q['style']['setProperty']('margin-left',-0x1*ab+'px');}}}else if(R=='left'||R=='right'){if(a5<0x0){N['style']['setProperty']('top','5px');Q['style']['setProperty']('margin-top',a5-0xa+'px');}else{let ac=a8['height']-(a5+a7['height']);if(ac<0x0){N['style']['setProperty']('top',a8['height']-a7['height']-0x5+'px');Q['style']['setProperty']('margin-top',-0x1*ac+'px');}}}})();if(K['delay']){b['DOMUtils']['toggle'](N);b['TimeUtils']['timeout'](a3=>{b['DOMUtils']['toggle'](N);},K['delay']);}return N;};b['ObjectUtils']={};b['ObjectUtils']['is']=function(I){return I&&Object['prototype']['isPrototypeOf'](I)&&!Array['prototype']['isPrototypeOf'](I);};b['ObjectUtils']['extract']=function(I,...J){let K={};if(b['ObjectUtils']['is'](I))for(let L of J['flat'](0xa)['filter'](M=>M))if(I[L])K[L]=I[L];return K;};b['ObjectUtils']['exclude']=function(I,...J){let K=Object['assign']({},I);b['ObjectUtils']['delete'](K,...J);return K;};b['ObjectUtils']['delete']=function(I,...J){if(b['ObjectUtils']['is'](I))for(let K of J['flat'](0xa)['filter'](L=>L))delete I[K];};b['ObjectUtils']['sort']=function(I,J,K){if(!b['ObjectUtils']['is'](I))return{};let L={};if(J===undefined||!J)for(let M of Object['keys'](I)['sort']())L[M]=I[M];else{let N=[];for(let O in I)N['push'](I[O]);N=b['ArrayUtils']['keySort'](N,J,K);for(let P of N)for(let Q in I)if(b['equals'](P,I[Q])){L[Q]=P;break;}}return L;};b['ObjectUtils']['reverse']=function(I,J){if(!b['ObjectUtils']['is'](I))return{};let K={};for(let L of J===undefined||!J?Object['keys'](I)['reverse']():Object['keys'](I)['sort']()['reverse']())K[L]=I[L];return K;};b['ObjectUtils']['filter']=function(I,J,K=![]){if(!b['ObjectUtils']['is'](I))return{};if(typeof J!='function')return I;return Object['keys'](I)['filter'](L=>J(K?L:I[L]))['reduce']((L,M)=>(L[M]=I[M],L),{});};b['ObjectUtils']['push']=function(I,J){if(b['ObjectUtils']['is'](I))I[Object['keys'](I)['length']]=J;};b['ObjectUtils']['pop']=function(I,J){if(b['ObjectUtils']['is'](I)){let K=Object['keys'](I);if(!K['length'])return;let L=I[K[K['length']-0x1]];delete I[K[K['length']-0x1]];return L;}};b['ObjectUtils']['map']=function(I,J){if(!b['ObjectUtils']['is'](I))return{};if(typeof J!='string'&&typeof J!='function')return I;let K={};for(let L in I)if(b['ObjectUtils']['is'](I[L]))K[L]=typeof J=='string'?I[L][J]:J(I[L],L);return K;};b['ObjectUtils']['toArray']=function(I){if(!b['ObjectUtils']['is'](I))return[];return Object['entries'](I)['map'](J=>J[0x1]);};b['ObjectUtils']['deepAssign']=function(I,...J){if(!J['length'])return I;let K=J['shift']();if(b['ObjectUtils']['is'](I)&&b['ObjectUtils']['is'](K)){for(let L in K){if(b['ObjectUtils']['is'](K[L])){if(!I[L])Object['assign'](I,{[L]:{}});b['ObjectUtils']['deepAssign'](I[L],K[L]);}else Object['assign'](I,{[L]:K[L]});}}return b['ObjectUtils']['deepAssign'](I,...J);};b['ObjectUtils']['isEmpty']=function(I){return!b['ObjectUtils']['is'](I)||Object['getOwnPropertyNames'](I)['length']==0x0;};b['ArrayUtils']={};b['ArrayUtils']['is']=function(I){return I&&Array['isArray'](I);};b['ArrayUtils']['sum']=function(I){return Array['isArray'](I)?I['reduce']((J,K)=>J+Math['round'](K),0x0):0x0;};b['ArrayUtils']['keySort']=function(I,J,K){if(!b['ArrayUtils']['is'](I))return[];if(J==null)return I;if(K===undefined)K=null;return I['sort']((L,M)=>{let N=L[J],O=M[J];if(N!==K)return NO?0x1:0x0;});};b['ArrayUtils']['numSort']=function(I){return I['sort']((J,K)=>JK?0x1:0x0);};b['ArrayUtils']['includes']=function(I,...J){if(!b['ArrayUtils']['is'](I))return null;if(!I['length'])return![];let K=J['pop']();if(typeof K!='boolean'){J['push'](K);K=!![];}if(!J['length'])return![];let L=undefined;for(let M of J){if(L===undefined)L=K;if(K&&!I['includes'](M))L=![];if(!K&&I['includes'](M))L=!![];}return L;};b['ArrayUtils']['remove']=function(I,J,K=![]){if(!b['ArrayUtils']['is'](I))return[];if(!I['includes'](J))return I;if(!K)I['splice'](I['indexOf'](J),0x1);else while(I['indexOf'](J)>-0x1)I['splice'](I['indexOf'](J),0x1);return I;};b['ArrayUtils']['getAllIndexes']=function(I,J){if(!b['ArrayUtils']['is'](I)&&typeof I!='string')return[];var K=[],L=-0x1;while((L=I['indexOf'](J,L+0x1))!==-0x1)K['push'](L);return K;};b['ArrayUtils']['removeCopies']=function(I){if(!b['ArrayUtils']['is'](I))return[];return[...new Set(I)];};b['ModuleUtils']={};b['ModuleUtils']['cached']=window['BDFDB']&&window['BDFDB']['ModuleUtils']&&window['BDFDB']['ModuleUtils']['cached']||{};b['ModuleUtils']['find']=function(I,J){J=typeof J!='boolean'?!![]:J;let K=c['getWebModuleReq']();for(let L in K['c'])if(K['c']['hasOwnProperty'](L)){let M=K['c'][L]['exports'];if(M&&(typeof M=='object'||typeof M=='function')&&I(M))return J?M:K['c'][L];if(M&&M['__esModule']){for(let N in M)if(M[N]&&(typeof M[N]=='object'||typeof M[N]=='function')&&I(M[N]))return J?M[N]:K['c'][L];if(M['default']&&(typeof M['default']=='object'||typeof M['default']=='function'))for(let O in M['default'])if(M['default'][O]&&(typeof M['default'][O]=='object'||typeof M['default'][O]=='function')&&I(M['default'][O]))return J?M['default'][O]:K['c'][L];}}for(let P in K['m'])if(K['m']['hasOwnProperty'](P)){let Q=K['m'][P];if(Q&&typeof Q=='function'&&I(Q)){if(K['c'][P])return J?K['c'][P]['exports']:K['c'][P];else{let R={};K['m'][P](R,null,K);return J?R['exports']:R;}}}};b['ModuleUtils']['findByProperties']=function(...I){I=I['flat'](0xa);let J=I['pop']();if(typeof J!='boolean'){I['push'](J);J=!![];}return c['findModule']('prop',JSON['stringify'](I),K=>I['every'](L=>K[L]!==undefined),J);};b['ModuleUtils']['findByName']=function(I,J){return c['findModule']('name',JSON['stringify'](I),K=>K['displayName']===I||K['render']&&K['render']['displayName']===I,typeof J!='boolean'?!![]:J);};b['ModuleUtils']['findByString']=function(...I){I=I['flat'](0xa);let J=I['pop']();if(typeof J!='boolean'){I['push'](J);J=!![];}return c['findModule']('string',JSON['stringify'](I),K=>I['every'](L=>typeof K=='function'&&(K['toString']()['indexOf'](L)>-0x1||typeof K['__originalMethod']=='function'&&K['__originalMethod']['toString']()['indexOf'](L)>-0x1||typeof K['__originalFunction']=='function'&&K['__originalFunction']['toString']()['indexOf'](L)>-0x1)||b['ObjectUtils']['is'](K)&&typeof K['type']=='function'&&K['type']['toString']()['indexOf'](L)>-0x1),J);};b['ModuleUtils']['findByPrototypes']=function(...I){I=I['flat'](0xa);let J=I['pop']();if(typeof J!='boolean'){I['push'](J);J=!![];}return c['findModule']('proto',JSON['stringify'](I),K=>K['prototype']&&I['every'](L=>K['prototype'][L]!==undefined),J);};c['findModule']=function(I,J,K,L){if(!b['ObjectUtils']['is'](b['ModuleUtils']['cached'][I]))b['ModuleUtils']['cached'][I]={'module':{},'export':{}};if(L&&b['ModuleUtils']['cached'][I]['export'][J])return b['ModuleUtils']['cached'][I]['export'][J];else if(!L&&b['ModuleUtils']['cached'][I]['module'][J])return b['ModuleUtils']['cached'][I]['module'][J];else{let M=b['ModuleUtils']['find'](K,L);if(M){if(L)b['ModuleUtils']['cached'][I]['export'][J]=M;else b['ModuleUtils']['cached'][I]['module'][J]=M;return M;}else b['LogUtils']['warn'](J+'\x20['+I+']\x20not\x20found\x20in\x20WebModules');}};c['getWebModuleReq']=function(){if(!c['getWebModuleReq']['req']){const I='BDFDB-WebModules';const J=window['webpackJsonp']['push']([[],{[I]:(K,L,M)=>K['exports']=M},[[I]]]);delete J['m'][I];delete J['c'][I];c['getWebModuleReq']['req']=J;}return c['getWebModuleReq']['req'];};var k={};k['PatchTypes']=['before','instead','after'];k['PatchMap']={'BannedCard':'BannedUser','ChannelWindow':'Channel','InvitationCard':'InviteRow','InviteCard':'InviteRow','MemberCard':'Member','PopoutContainer':'Popout','QuickSwitchResult':'Result','UserProfile':'UserProfileBody'};k['ForceObserve']=['DirectMessage','GuildIcon'];k['MemoComponent']=['EmojiPicker','ExpressionPicker','GuildFolder','MessageContent','NowPlayingHeader'];k['NonRender']=b['ArrayUtils']['removeCopies']([]['concat'](k['MemoComponent'],['Attachment','ChannelCallHeader','ConnectedPrivateChannelsList','DiscordTag','IncomingCallModal','InviteModalUserRow','Mention','Menu','MenuCheckboxItem','MenuControlItem','MenuItem','Message','MessageTimestamp','NameTag','NowPlayingItem','PictureInPictureVideo','PrivateChannelEmptyMessage','RecentsChannelHeader','RecentsHeader','SystemMessage','SimpleMessageAccessories','UnreadMessages','UserInfo','WebhookCard']));k['LoadedInComponents']={'AutocompleteChannelResult':'LibraryComponents.AutocompleteItems.Channel','AutocompleteUserResult':'LibraryComponents.AutocompleteItems.User','QuickSwitchChannelResult':'LibraryComponents.QuickSwitchItems.Channel','QuickSwitchGroupDMResult':'LibraryComponents.QuickSwitchItems.GroupDM','QuickSwitchGuildResult':'LibraryComponents.QuickSwitchItems.Guild','QuickSwitchUserResult':'LibraryComponents.QuickSwitchItems.User'};k['SpecialFilter']={'V2C_ContentColumn':I=>I&&I['return']&&I['return']['stateNode']&&I['return']['stateNode']['props']&&typeof I['return']['stateNode']['props']['title']=='string'&&(I['return']['stateNode']['props']['title']['toUpperCase']()['indexOf']('PLUGINS')==0x0||I['return']['stateNode']['props']['title']['toUpperCase']()['indexOf']('THEMES')==0x0)&&I['return']['type'],'GuildFolder':I=>I&&I['return']&&I['return']['memoizedProps']&&I['return']['memoizedProps']['folderId']&&I['return']['memoizedProps']['guildIds']&&I['return']['type']};k['PatchFinder']={'Account':'accountinfo','App':'app','AppSkeleton':'app','AppView':'appcontainer','AuthWrapper':'loginscreen','BannedCard':'guildsettingsbannedcard','Category':'categorycontainerdefault','ChannelCall':'callcurrentcontainer','ChannelMember':'member','Channels':'guildchannels','ChannelTextAreaForm':'chatform','ChannelWindow':'chatcontent','DirectMessage':'guildouter','Guild':'guildouter','GuildFolder':'guildfolderwrapper','GuildIcon':'avataricon','GuildRoleSettings':'settingswindowcontent','Guilds':'guildswrapper','GuildSettings':'layer','GuildSettingsBans':'guildsettingsbannedcard','GuildSettingsEmoji':'guildsettingsemojicard','GuildSettingsMembers':'guildsettingsmembercard','GuildSidebar':'guildchannels','I18nLoaderWrapper':'app','InstantInviteModal':'invitemodalwrapper','InvitationCard':'invitemodalinviterow','InviteCard':'guildsettingsinvitecard','MemberCard':'guildsettingsmembercard','Messages':'messages','MessagesPopout':'messagespopout','ModalLayer':'layermodal','MutualGuilds':'userprofilebody','MutualFriends':'userprofilebody','Note':'usernotetextarea','PopoutContainer':'popout','Popouts':'popouts','PrivateChannelCall':'callcurrentcontainer','PrivateChannelCallParticipants':'callcurrentcontainer','PrivateChannelRecipientsInvitePopout':'searchpopoutdmaddpopout','PrivateChannelsList':'dmchannelsscroller','QuickSwitchChannelResult':'quickswitchresult','QuickSwitchGuildResult':'quickswitchresult','QuickSwitchResult':'quickswitchresult','Reaction':'messagereactionme','Reactor':'messagereactionsmodalreactor','RTCConnection':'voicedetails','SearchResults':'searchresultswrap','TypingUsers':'typing','UnreadDMs':'guildsscroller','Upload':'uploadmodal','UserHook':'auditloguserhook','UserPopout':'userpopout','UserProfile':'userprofile','V2C_ContentColumn':'settingswindowcontentcolumn'};k['CodeFinder']={'EmojiPicker':['allowManagedEmojis','EMOJI_PICKER_TAB_PANEL_ID','diversitySelector'],'SearchResultsInner':['SEARCH_HIDE_BLOCKED_MESSAGES','totalResults','SEARCH_PAGE_SIZE']};k['PropsFinder']={'Avatar':'AnimatedAvatar','MessageHeader':'MessageTimestamp','UnavailableGuildsButton':'UnavailableGuildsButton'};k['NonPrototype']=b['ArrayUtils']['removeCopies']([]['concat'](k['NonRender'],Object['keys'](k['CodeFinder']),Object['keys'](k['PropsFinder']),['ChannelTextAreaContainer']));b['ModuleUtils']['isPatched']=function(I,J,K){I=I==b&&c||I;if(!I||!b['ObjectUtils']['is'](J)||!J['BDFDBpatch']||!K)return![];const L=(typeof I==='string'?I:I['name'])['toLowerCase']();return L&&J[K]&&J[K]['__isBDFDBpatched']&&J['BDFDBpatch'][K]&&b['ObjectUtils']['toArray'](J['BDFDBpatch'][K])['some'](M=>b['ObjectUtils']['toArray'](M)['some'](N=>Object['keys'](N)['includes'](L)));};b['ModuleUtils']['patch']=function(I,J,K,L,M={}){I=I==b&&c||I;if(!I||!b['ObjectUtils']['is'](J)||!K||!b['ObjectUtils']['is'](L))return null;L=b['ObjectUtils']['filter'](L,R=>k['PatchTypes']['includes'](R),!![]);if(b['ObjectUtils']['isEmpty'](L))return null;const N=typeof I==='string'?I:I['name'];const O=N['toLowerCase']();const P=b['ObjectUtils']['is'](I)&&!isNaN(I['patchPriority'])?I['patchPriority']<0x0?0x0:I['patchPriority']>0xa?0xa:Math['round'](I['patchPriority']):0x5;if(!b['ObjectUtils']['is'](J['BDFDBpatch']))J['BDFDBpatch']={};K=[K]['flat'](0xa)['filter'](R=>R);let Q=R=>{b['ModuleUtils']['unpatch'](I,J,K);};for(let R of K)if(J[R]==null||typeof J[R]=='function'){if(!J['BDFDBpatch'][R]||M['force']&&(!J[R]||!J[R]['__isBDFDBpatched'])){if(!J['BDFDBpatch'][R]){J['BDFDBpatch'][R]={};for(let T of k['PatchTypes'])J['BDFDBpatch'][R][T]={};}if(!J[R])J[R]=U=>{};const S=J[R];J['BDFDBpatch'][R]['originalMethod']=S;J[R]=function(){let U=![],V=![];const W={'thisObject':this,'methodArguments':arguments,'originalMethod':S,'originalMethodName':R,'callOriginalMethod':X=>{if(!V)W['returnValue']=W['originalMethod']['apply'](W['thisObject'],W['methodArguments']);},'callOriginalMethodAfterwards':X=>{U=!![];},'stopOriginalMethodCall':X=>{V=!![];}};if(J['BDFDBpatch']&&J['BDFDBpatch'][R]){for(let Y in J['BDFDBpatch'][R]['before'])for(let Z in b['ObjectUtils']['sort'](J['BDFDBpatch'][R]['before'][Y])){b['TimeUtils']['suppress'](J['BDFDBpatch'][R]['before'][Y][Z],'\x22before\x22\x20callback\x20of\x20'+R+'\x20in\x20'+(J['constructor']?J['constructor']['displayName']||J['constructor']['name']:'module'),J['BDFDBpatch'][R]['before'][Y][Z]['pluginName'])(W);}if(!J['BDFDBpatch']||!J['BDFDBpatch'][R])return R=='render'&&W['returnValue']===undefined?null:W['returnValue'];let X=b['ObjectUtils']['toArray'](J['BDFDBpatch'][R]['instead'])['some'](a0=>!b['ObjectUtils']['isEmpty'](a0));if(X)for(let a0 in J['BDFDBpatch'][R]['instead'])for(let a1 in b['ObjectUtils']['sort'](J['BDFDBpatch'][R]['instead'][a0])){let a2=b['TimeUtils']['suppress'](J['BDFDBpatch'][R]['instead'][a0][a1],'\x22instead\x22\x20callback\x20of\x20'+R+'\x20in\x20'+(J['constructor']?J['constructor']['displayName']||J['constructor']['name']:'module'),J['BDFDBpatch'][R]['instead'][a0][a1]['pluginName'])(W);if(a2!==undefined)W['returnValue']=a2;}if((!X||U)&&!V)b['TimeUtils']['suppress'](W['callOriginalMethod'],'originalMethod\x20of\x20'+R+'\x20in\x20'+(J['constructor']?J['constructor']['displayName']||J['constructor']['name']:'module'))();if(!J['BDFDBpatch']||!J['BDFDBpatch'][R])return R=='render'&&W['returnValue']===undefined?null:W['returnValue'];for(let a3 in J['BDFDBpatch'][R]['after'])for(let a4 in b['ObjectUtils']['sort'](J['BDFDBpatch'][R]['after'][a3])){let a5=b['TimeUtils']['suppress'](J['BDFDBpatch'][R]['after'][a3][a4],'\x22after\x22\x20callback\x20of\x20'+R+'\x20in\x20'+(J['constructor']?J['constructor']['displayName']||J['constructor']['name']:'module'),J['BDFDBpatch'][R]['after'][a3][a4]['pluginName'])(W);if(a5!==undefined)W['returnValue']=a5;}}else b['TimeUtils']['suppress'](W['callOriginalMethod'],'originalMethod\x20of\x20'+R+'\x20in\x20'+(J['constructor']?J['constructor']['displayName']||J['constructor']['name']:'module'))();U=![],V=![];return R=='render'&&W['returnValue']===undefined?null:W['returnValue'];};for(let U of Object['keys'](S))J[R][U]=S[U];if(!J[R]['__originalFunction']){let V=S['__originalMethod']||S['__originalFunction']||S;if(typeof V=='function'){J[R]['__originalFunction']=V;J[R]['toString']=W=>V['toString']();}}J[R]['__isBDFDBpatched']=!![];}for(let W in L)if(typeof L[W]=='function'){if(!b['ObjectUtils']['is'](J['BDFDBpatch'][R][W][P]))J['BDFDBpatch'][R][W][P]={};J['BDFDBpatch'][R][W][P][O]=(...X)=>{if(M['once']||!I['started'])Q();return L[W](...X);};J['BDFDBpatch'][R][W][P][O]['pluginName']=N;}}if(b['ObjectUtils']['is'](I)&&!M['once']&&!M['noCache']){if(!b['ArrayUtils']['is'](I['patchCancels']))I['patchCancels']=[];I['patchCancels']['push'](Q);}return Q;};b['ModuleUtils']['unpatch']=function(I,J,K){I=I==b&&c||I;if(!J&&!K){if(b['ObjectUtils']['is'](I)&&b['ArrayUtils']['is'](I['patchCancels']))while(I['patchCancels']['length'])I['patchCancels']['pop']()();}else{if(!b['ObjectUtils']['is'](J)||!J['BDFDBpatch'])return;const M=!I?null:(typeof I==='string'?I:I['name'])['toLowerCase']();if(K){for(let N of[K]['flat'](0xa)['filter'](O=>O))if(J[N]&&J['BDFDBpatch'][N])L(N,M);}else for(let O of J['BDFDBpatch'])L(O,M);}function L(P,Q){for(let R of k['PatchTypes']){if(Q)for(let S in J['BDFDBpatch'][P][R]){delete J['BDFDBpatch'][P][R][S][Q];if(b['ObjectUtils']['isEmpty'](J['BDFDBpatch'][P][R][S]))delete J['BDFDBpatch'][P][R][S];}else delete J['BDFDBpatch'][P][R];}if(b['ObjectUtils']['isEmpty'](b['ObjectUtils']['filter'](J['BDFDBpatch'][P],T=>k['PatchTypes']['includes'](T)&&!b['ObjectUtils']['isEmpty'](J['BDFDBpatch'][P][T]),!![]))){J[P]=J['BDFDBpatch'][P]['originalMethod'];delete J['BDFDBpatch'][P];if(b['ObjectUtils']['isEmpty'](J['BDFDBpatch']))delete J['BDFDBpatch'];}}};b['ModuleUtils']['forceAllUpdates']=function(I,J){I=[I]['flat'](0xa)['map'](K=>K==b&&c||K)['filter'](K=>b['ObjectUtils']['is'](K['patchedModules']));if(I['length']){const K=document['querySelector'](b['dotCN']['app']);const L=document['querySelector']('#bd-settingspane-container\x20>\x20*');if(K){J=[J]['flat'](0xa)['filter'](O=>O)['map'](O=>O&&k['PatchMap'][O]?k['PatchMap'][O]+'\x20_\x20_\x20'+O:O);let M={};for(let O of I){M[O['name']]={'filteredModules':[],'specialModules':[],'specialModuleTypes':[],'patchTypes':{}};for(let P in O['patchedModules'])for(let Q in O['patchedModules'][P]){let R=[O['patchedModules'][P][Q]]['flat'](0xa)['filter'](S=>S);if(b['ArrayUtils']['includes'](R,'componentDidMount','componentDidUpdate','render',![])&&(!J['length']||J['includes'](Q))){let S=Q['split']('\x20_\x20_\x20')[0x1]||Q;let T=k['SpecialFilter'][S];let U=[k['PatchFinder'][S]]['flat'](0xa)['filter'](W=>u[W])['map'](W=>b['dotCN'][W])['join'](',\x20');if(U&&typeof T=='function'){for(let W of document['querySelectorAll'](U)){let X=T(b['ReactUtils']['getInstance'](W));if(X){M[O['name']]['specialModules']['push']([Q,X]);M[O['name']]['specialModuleTypes']['push'](Q);break;}}}else M[O['name']]['filteredModules']['push'](Q);let V=Q['split']('\x20_\x20_\x20')[0x0];if(!M[O['name']]['patchTypes'][V])M[O['name']]['patchTypes'][V]=[];M[O['name']]['patchTypes'][V]['push'](P);}}}let N=b['ObjectUtils']['toArray'](M);if(b['ArrayUtils']['sum'](N['map'](Y=>Y['filteredModules']['length']+Y['specialModules']['length']))){try{let Y=b['ArrayUtils']['removeCopies'](N['map'](a2=>a2['filteredModules'])['flat'](0xa));let Z=b['ArrayUtils']['removeCopies'](N['map'](a2=>a2['specialModules'])['flat'](0xa));const a0=b['ReactUtils']['findOwner'](K,{'name':Y,'type':Z,'all':!![],'group':!![],'unlimited':!![]});const a1=b['ReactUtils']['findOwner'](K,{'name':Y,'type':Z,'all':!![],'group':!![],'unlimited':!![],'up':!![]});for(let a2 in a0){let a3=I['filter'](a4=>M[a4['name']]['filteredModules']['includes'](a2)||M[a4['name']]['specialModuleTypes']['includes'](a2))['map'](a4=>({'plugin':a4,'patchTypes':M[a4['name']]['patchTypes']}));for(let a4 of a0[a2])c['forceInitiateProcess'](a3,a4,a2);}for(let a5 in a1){let a6=I['filter'](a7=>M[a7['name']]['filteredModules']['includes'](a5)||M[a7['name']]['specialModuleTypes']['includes'](a5))['map'](a7=>({'plugin':a7,'patchTypes':M[a7['name']]['patchTypes']}));for(let a7 of a1[a5])c['forceInitiateProcess'](a6,a7,a5);}if(L){const a8=b['ReactUtils']['findOwner'](L,{'name':Y,'type':Z,'all':!![],'unlimited':!![]});if(a8['length']){const a9=b['ReactUtils']['findOwner'](b['ReactUtils']['getInstance'](document['querySelector']('#bd-settingspane-container\x20>\x20*')),{'props':'onChange','up':!![]});if(a9&&a9['props']&&typeof a9['props']['onChange']=='function')a9['props']['onChange'](a9['props']['type']);}}}catch(aa){b['LogUtils']['error']('Could\x20not\x20force\x20update\x20components!\x20'+aa,I['map'](ab=>ab['name'])['join'](',\x20'));}}}}};c['forceInitiateProcess']=function(I,J,K){I=[I]['flat'](0xa)['filter'](L=>L);if(I['length']&&J&&K){let L=![];for(let M of I){let N=M['plugin']==b&&c||M['plugin'],O=[];for(let P in N['patchedModules'])if(N['patchedModules'][P][K])O['push'](N['patchedModules'][P][K]);O=b['ArrayUtils']['removeCopies'](O)['flat'](0xa)['filter'](Q=>Q);if(O['includes']('componentDidMount'))c['initiateProcess'](N,K,{'instance':J,'methodname':'componentDidMount','patchtypes':M['patchTypes']});if(O['includes']('render'))L=!![];else if(!L&&O['includes']('componentDidUpdate'))c['initiateProcess'](N,K,{'instance':J,'methodname':'componentDidUpdate','patchtypes':M['patchTypes']});}if(L)b['ReactUtils']['forceUpdate'](J);}};c['initiateProcess']=function(I,J,K){I=I==b&&c||I;if(b['ObjectUtils']['is'](I)&&!I['stopping']&&K['instance']){J=n['StringUtils']['upperCaseFirstChar'](J['split']('\x20_\x20_\x20')[0x1]||J)['replace'](/[^A-z0-9]|_/g,'');if(typeof I['process'+J]=='function'){if(typeof K['methodname']=='string'&&(K['methodname']['indexOf']('componentDid')==0x0||K['methodname']['indexOf']('componentWill')==0x0)){K['node']=b['ReactUtils']['findDOMNode'](K['instance']);if(K['node'])return I['process'+J](K);else b['TimeUtils']['timeout'](L=>{K['node']=b['ReactUtils']['findDOMNode'](K['instance']);if(K['node'])return I['process'+J](K);});}else if(K['returnvalue']||K['patchtypes']['includes']('before'))return I['process'+J](K);}}};if(!b['InternalData']['patchObserverData'])b['InternalData']['patchObserverData']={'observer':null,'data':{}};c['patchPlugin']=function(I){I=I==b&&c||I;if(!b['ObjectUtils']['is'](I)||!b['ObjectUtils']['is'](I['patchedModules']))return;b['ModuleUtils']['unpatch'](I);for(let N in I['patchedModules'])for(let O in I['patchedModules'][N]){let P=O['split']('\x20_\x20_\x20')[0x1]||O;let Q=k['LoadedInComponents'][O]&&b['ReactUtils']['getValue'](x,k['LoadedInComponents'][O]);if(Q)J(I,k['NonRender']['includes'](P)?(b['ModuleUtils']['find'](R=>R==Q,![])||{})['exports']:Q,O,N);else{let R=[k['PatchFinder'][P]]['flat'](0xa)['filter'](X=>u[X]);let S=k['CodeFinder'][P];let T=k['PropsFinder'][P];let U=k['PatchMap'][O];let V=U?U+'\x20_\x20_\x20'+O:O;let W=V['split']('\x20_\x20_\x20')[0x0];if(U){I['patchedModules'][N][V]=I['patchedModules'][N][O];delete I['patchedModules'][N][O];}if(R['length'])L(R,V,N,k['ForceObserve']['includes'](P));else if(S){let X=(b['ModuleUtils']['findByString'](S,![])||{})['exports'];J(I,X&&k['MemoComponent']['includes'](P)?X['default']:X,V,N,!![]);}else if(T){let Y=(b['ModuleUtils']['findByProperties'](T,![])||{})['exports'];J(I,Y&&k['MemoComponent']['includes'](P)?Y['default']:Y,V,N,!![]);}else if(k['NonRender']['includes'](P)){let Z=(b['ModuleUtils']['findByName'](W,![])||{})['exports'];J(I,Z&&k['MemoComponent']['includes'](P)?Z['default']:Z,V,N,!![]);}else J(I,b['ModuleUtils']['findByName'](W),V,N);}}function J(a0,a1,a2,a3,a4){a0=[a0]['flat'](0xa)['filter'](a5=>a5);if(a0['length']&&a1){let a5=a2['split']('\x20_\x20_\x20')[0x0];a1=a1['_reactInternalFiber']&&a1['_reactInternalFiber']['type']?a1['_reactInternalFiber']['type']:a1;a1=a4||c['isInstanceCorrect'](a1,a5)||k['LoadedInComponents'][a2]?a1:b['ReactUtils']['findConstructor'](a1,a5)||b['ReactUtils']['findConstructor'](a1,a5,{'up':!![]});if(a1){a1=a1['_reactInternalFiber']&&a1['_reactInternalFiber']['type']?a1['_reactInternalFiber']['type']:a1;let a6=k['NonPrototype']['includes'](a5)?a1:a1['prototype'];for(let a7 of a0){let a8={};a8[a3]=a9=>{return c['initiateProcess'](a7,a2,{'instance':window!=a9['thisObject']?a9['thisObject']:{'props':a9['methodArguments'][0x0]},'returnvalue':a9['returnValue'],'methodname':a9['originalMethodName'],'patchtypes':[a3]});};b['ModuleUtils']['patch'](a7,a6,a7['patchedModules'][a3][a2],a8);}}}}function K(a0,a1,a2,a3){a0=[a0]['flat'](0xa)['filter'](a7=>a7);let a4=a2['split']('\x20_\x20_\x20')[0x1]||a2;let a5=b['ReactUtils']['getInstance'](a1);let a6=k['SpecialFilter'][a4];if(typeof a6=='function'){let a7=a6(a5);if(a7){if(k['NonRender']['includes'](a4)){let a8=(b['ModuleUtils']['find'](a9=>a9==a7,![])||{})['exports'];J(a0,a8&&k['MemoComponent']['includes'](a4)?a8['default']:a8,a2,a3,!![]);}else J(a0,a7,a2,a3,!![]);b['ModuleUtils']['forceAllUpdates'](I,a2);return!![];}}else if(M(a5,a2)){J(a0,a5,a2,a3);b['ModuleUtils']['forceAllUpdates'](I,a2);return!![];}return![];}function L(a0,a1,a2,a3){const a4=document['querySelector'](b['dotCN']['app']),a5=document['querySelector']('#bd-settingspane-container\x20'+b['dotCN']['scrollerwrap']);let a6=![];if(!a3){if(a4){let a7=b['ReactUtils']['findConstructor'](a4,a1,{'unlimited':!![]})||b['ReactUtils']['findConstructor'](a4,a1,{'unlimited':!![],'up':!![]});if(a7&&(a6=!![]))J(I,a7,a1,a2);}if(!a6&&a5){let a8=b['ReactUtils']['findConstructor'](a5,a1,{'unlimited':!![]});if(a8&&(a6=!![]))J(I,a8,a1,a2);}}if(!a6){let a9=![],aa=a0['map'](ac=>b['disCN'][ac]),ab=a0['map'](ac=>b['dotCN'][ac])['join'](',\x20');for(let ac of document['querySelectorAll'](ab)){a9=K(I,ac,a1,a2);if(a9)break;}if(!a9){if(!b['InternalData']['patchObserverData']['observer']){let ad=document['querySelector'](b['dotCN']['appmount']);if(ad){b['InternalData']['patchObserverData']['observer']=new MutationObserver(ae=>{ae['forEach'](af=>{af['addedNodes']['forEach'](ag=>{if(!ag||!ag['tagName'])return;for(let ah in b['InternalData']['patchObserverData']['data'])if(b['InternalData']['patchObserverData']['data'][ah]['found']){let ai=null;if((ai=b['DOMUtils']['containsClass'](ag,...b['InternalData']['patchObserverData']['data'][ah]['classes'])?ag:ag['querySelector'](b['InternalData']['patchObserverData']['data'][ah]['selector']))!=null){b['InternalData']['patchObserverData']['data'][ah]['found']=K(b['InternalData']['patchObserverData']['data'][ah]['plugins'],ai,ah,a2);if(b['InternalData']['patchObserverData']['data'][ah]['found']){delete b['InternalData']['patchObserverData']['data'][ah];if(b['ObjectUtils']['isEmpty'](b['InternalData']['patchObserverData']['data'])){b['InternalData']['patchObserverData']['observer']['disconnect']();b['InternalData']['patchObserverData']['observer']=null;}}}}});});});b['InternalData']['patchObserverData']['observer']['observe'](ad,{'childList':!![],'subtree':!![]});}}if(!b['InternalData']['patchObserverData']['data'][a1])b['InternalData']['patchObserverData']['data'][a1]={'selector':ab,'classes':aa,'found':![],'plugins':[]};b['InternalData']['patchObserverData']['data'][a1]['plugins']['push'](I);}}}function M(a0,a1){if(!a0)return![];a0=a0['_reactInternalFiber']&&a0['_reactInternalFiber']['type']?a0['_reactInternalFiber']['type']:a0;a0=c['isInstanceCorrect'](a0,a1)?a0:b['ReactUtils']['findConstructor'](a0,a1)||b['ReactUtils']['findConstructor'](a0,a1,{'up':!![]});return!!a0;}};c['isInstanceCorrect']=function(I,J){return I&&(I['type']&&(I['type']['render']&&I['type']['render']['displayName']===J||I['type']['displayName']===J||I['type']['name']===J||I['type']===J)||I['render']&&(I['render']['displayName']===J||I['render']['name']===J)||I['displayName']==J||I['name']===J);};b['DiscordConstants']=b['ModuleUtils']['findByProperties']('Permissions','ActivityTypes');var l={};l['Channel']=b['ModuleUtils']['findByPrototypes']('getRecipientId','isManaged','getGuildId');l['Guild']=b['ModuleUtils']['findByPrototypes']('getIconURL','getMaxEmojiSlots','getRole');l['Invite']=b['ModuleUtils']['findByPrototypes']('getExpiresAt','isExpired');l['Message']=b['ModuleUtils']['findByPrototypes']('getReaction','getAuthorName','getChannelId');l['Messages']=b['ModuleUtils']['findByPrototypes']('jumpToMessage','hasAfterCached','forEach');l['Timestamp']=b['ModuleUtils']['findByPrototypes']('add','dayOfYear','hasAlignedHourOffset');l['User']=b['ModuleUtils']['findByPrototypes']('hasFlag','isLocalBot','isClaimed');b['DiscordObjects']=Object['assign']({},l);var m={};for(let I of['child_process','electron','fs','path','process','request']){try{m[I]=require(I);}catch(J){}}b['LibraryRequires']=Object['assign']({},m);var n={};n['AckUtils']=b['ModuleUtils']['findByProperties']('localAck','bulkAck');n['ActivityUtils']=b['ModuleUtils']['findByProperties']('sendActivityInvite','updateActivity');n['APIUtils']=b['ModuleUtils']['findByProperties']('getAPIBaseURL');n['AnalyticsUtils']=b['ModuleUtils']['findByProperties']('isThrottled','track');n['AnimationUtils']=b['ModuleUtils']['findByProperties']('spring','decay');n['AssetUtils']=b['ModuleUtils']['findByProperties']('getAssetImage','getAssetIds');n['BadgeUtils']=b['ModuleUtils']['findByProperties']('getBadgeCountString','getBadgeWidthForValue');n['CallUtils']=b['ModuleUtils']['findByProperties']('getCalls','isCallActive');n['CategoryCollapseStore']=b['ModuleUtils']['findByProperties']('getCollapsedCategories','isCollapsed');n['CategoryCollapseUtils']=b['ModuleUtils']['findByProperties']('categoryCollapse','categoryCollapseAll');n['ChannelStore']=b['ModuleUtils']['findByProperties']('getChannel','getChannels');n['ColorUtils']=b['ModuleUtils']['findByProperties']('hex2int','hex2rgb');n['ContextMenuUtils']=b['ModuleUtils']['findByProperties']('closeContextMenu','openContextMenu');n['CopyLinkUtils']=b['ModuleUtils']['findByProperties']('SUPPORTS_COPY','copy');n['CurrentUserStore']=b['ModuleUtils']['findByProperties']('getCurrentUser');n['CurrentVoiceUtils']=b['ModuleUtils']['findByProperties']('getAveragePing','isConnected');n['DirectMessageStore']=b['ModuleUtils']['findByProperties']('getPrivateChannelIds','getPrivateChannelTimestamps');n['DirectMessageUnreadStore']=b['ModuleUtils']['findByProperties']('getUnreadPrivateChannelIds');n['DispatchApiUtils']=b['ModuleUtils']['findByProperties']('dirtyDispatch','isDispatching');n['DispatchUtils']=b['ModuleUtils']['findByProperties']('ComponentDispatch');n['DirectMessageUtils']=b['ModuleUtils']['findByProperties']('addRecipient','openPrivateChannel');n['EmojiUtils']=b['ModuleUtils']['findByProperties']('translateInlineEmojiToSurrogates','translateSurrogatesToInlineEmoji');n['EmojiStateUtils']=b['ModuleUtils']['findByProperties']('getURL','isEmojiDisabled');n['FriendUtils']=b['ModuleUtils']['findByProperties']('getFriendIDs','getRelationships');n['FolderStore']=b['ModuleUtils']['findByProperties']('getGuildFolderById','getFlattenedGuilds');n['FolderUtils']=b['ModuleUtils']['findByProperties']('isFolderExpanded','getExpandedFolders');n['GuildBoostUtils']=b['ModuleUtils']['findByProperties']('getTierName','getUserLevel');n['GuildChannelStore']=b['ModuleUtils']['findByProperties']('getChannels','getDefaultChannel');n['GuildEmojiStore']=b['ModuleUtils']['findByProperties']('getGuildEmoji','getDisambiguatedEmojiContext');n['GuildNotificationsUtils']=b['ModuleUtils']['findByProperties']('updateChannelOverrideSettings','updateGuildNotificationSettings');n['GuildSettingsSectionUtils']=b['ModuleUtils']['findByProperties']('getGuildSettingsSections');n['GuildSettingsUtils']=b['ModuleUtils']['findByProperties']('open','updateGuild');n['GuildStore']=b['ModuleUtils']['findByProperties']('getGuild','getGuilds');n['GuildUnavailableStore']=b['ModuleUtils']['findByProperties']('isUnavailable','totalUnavailableGuilds');n['GuildUtils']=b['ModuleUtils']['findByProperties']('transitionToGuildSync');n['GuildWelcomeStore']=b['ModuleUtils']['findByProperties']('hasSeen','get');n['GuildWelcomeUtils']=b['ModuleUtils']['findByProperties']('welcomeScreenViewed','resetWelcomeScreen');n['HistoryUtils']=b['ModuleUtils']['findByProperties']('transitionTo','replaceWith','getHistory');;n['IconUtils']=b['ModuleUtils']['findByProperties']('getGuildIconURL','getGuildBannerURL');n['InviteUtils']=b['ModuleUtils']['findByProperties']('acceptInvite','createInvite');n['KeyCodeUtils']=Object['assign']({},b['ModuleUtils']['findByProperties']('toCombo','keyToCode'));n['KeyCodeUtils']['getString']=function(K){return n['KeyCodeUtils']['toString']([K]['flat'](0xa)['filter'](L=>L)['map'](L=>[b['DiscordConstants']['KeyboardDeviceTypes']['KEYBOARD_KEY'],L,b['DiscordConstants']['KeyboardEnvs']['BROWSER']]),!![]);};n['KeyEvents']=b['ModuleUtils']['findByProperties']('aliases','code','codes');n['LanguageStore']=b['ModuleUtils']['findByProperties']('getLanguages','Messages');n['LastChannelStore']=b['ModuleUtils']['findByProperties']('getLastSelectedChannelId');n['LastGuildStore']=b['ModuleUtils']['findByProperties']('getLastSelectedGuildId');n['LoginUtils']=b['ModuleUtils']['findByProperties']('login','logout');n['MemberStore']=b['ModuleUtils']['findByProperties']('getMember','getMembers');n['MentionUtils']=b['ModuleUtils']['findByProperties']('isRawMessageMentioned','isMentioned');n['MessageManageUtils']=b['ModuleUtils']['findByProperties']('copyLink','quoteMessage');n['MessagePinUtils']=b['ModuleUtils']['findByProperties']('pinMessage','unpinMessage');n['MessageStore']=b['ModuleUtils']['findByProperties']('getMessage','getMessages');n['MessageUtils']=b['ModuleUtils']['findByProperties']('receiveMessage','editMessage');n['ModalUtils']=b['ModuleUtils']['findByProperties']('openModal','hasModalOpen');n['MutedUtils']=b['ModuleUtils']['findByProperties']('isGuildOrCategoryOrChannelMuted');n['NoteStore']=b['ModuleUtils']['findByProperties']('getNote');n['NotificationSettingsStore']=b['ModuleUtils']['findByProperties']('getDesktopType','getTTSType');n['NotificationSettingsUtils']=b['ModuleUtils']['findByProperties']('setDesktopType','setTTSType');n['NotificationUtils']=b['ModuleUtils']['findByProperties']('makeTextChatNotification','shouldNotify');n['PlatformUtils']=b['ModuleUtils']['findByProperties']('isWindows','isLinux');n['PermissionUtils']=b['ModuleUtils']['findByProperties']('getChannelPermissions','canUser');n['PermissionRoleUtils']=b['ModuleUtils']['findByProperties']('getHighestRole','can');n['QuoteUtils']=b['ModuleUtils']['findByProperties']('canQuote','createQuotedText');n['ReactionEmojiUtils']=b['ModuleUtils']['findByProperties']('getReactionEmojiName','getReactionEmojiName');n['ReactionUtils']=b['ModuleUtils']['findByProperties']('addReaction','removeReaction');n['RecentMentionUtils']=b['ModuleUtils']['findByProperties']('deleteRecentMention','fetchRecentMentions');n['SearchPageUtils']=b['ModuleUtils']['findByProperties']('searchNextPage','searchPreviousPage');n['SelectChannelUtils']=b['ModuleUtils']['findByProperties']('selectChannel','selectPrivateChannel');n['SettingsUtils']=b['ModuleUtils']['findByProperties']('updateRemoteSettings','updateLocalSettings');n['SlateUtils']=b['ModuleUtils']['findByProperties']('serialize','deserialize');n['SlateUtils']=b['ModuleUtils']['find'](K=>typeof K['serialize']=='function'&&typeof K['deserialize']=='function'&&typeof K['deserialize']=='function'&&typeof K['getFlag']!='function');n['SlateSelectionUtils']=b['ModuleUtils']['findByProperties']('serialize','serializeSelection');n['SlowmodeUtils']=b['ModuleUtils']['findByProperties']('getSlowmodeCooldownGuess');n['SoundStateUtils']=b['ModuleUtils']['findByProperties']('isSoundDisabled','getDisabledSounds');n['SoundUtils']=b['ModuleUtils']['findByProperties']('playSound','createSound');n['SpellCheckUtils']=b['ModuleUtils']['findByProperties']('learnWord','toggleSpellcheck');n['SpotifyTrackUtils']=b['ModuleUtils']['findByProperties']('hasConnectedAccount','getLastPlayedTrackId');n['SpotifyUtils']=b['ModuleUtils']['findByProperties']('setActiveDevice','pause');n['StateStoreUtils']=b['ModuleUtils']['findByProperties']('useStateFromStores','useStateFromStoresArray');n['StatusMetaUtils']=b['ModuleUtils']['findByProperties']('getApplicationActivity','getStatus');n['StoreChangeUtils']=b['ModuleUtils']['findByProperties']('get','set','clear','remove');n['StreamerModeStore']=b['ModuleUtils']['findByProperties']('disableSounds','hidePersonalInformation');n['StreamUtils']=b['ModuleUtils']['findByProperties']('getStreamForUser','getActiveStream');n['StringUtils']=b['ModuleUtils']['findByProperties']('cssValueToNumber','upperCaseFirstChar');n['UnreadGuildUtils']=b['ModuleUtils']['findByProperties']('hasUnread','getUnreadGuilds');n['UnreadChannelUtils']=b['ModuleUtils']['findByProperties']('getUnreadCount','getOldestUnreadMessageId');n['UploadUtils']=b['ModuleUtils']['findByProperties']('upload','instantBatchUpload');n['UserFetchUtils']=b['ModuleUtils']['findByProperties']('fetchCurrentUser','getUser');n['UserNameUtils']=b['ModuleUtils']['findByProperties']('getName','getNickname');n['UserProfileUtils']=b['ModuleUtils']['findByProperties']('open','fetchProfile');n['UserSettingsUtils']=b['ModuleUtils']['findByProperties']('open','updateAccount');n['UserStore']=b['ModuleUtils']['findByProperties']('getUser','getUsers');n['Utilities']=b['ModuleUtils']['findByProperties']('flatMap','cloneDeep');n['VoiceUtils']=b['ModuleUtils']['findByProperties']('getAllVoiceStates','getVoiceStatesForChannel');n['ZoomUtils']=b['ModuleUtils']['findByProperties']('setZoom','setFontSize');b['LibraryModules']=Object['assign']({},n);n['React']=b['ModuleUtils']['findByProperties']('createElement','cloneElement');n['ReactDOM']=b['ModuleUtils']['findByProperties']('render','findDOMNode');b['ReactUtils']=Object['assign']({},n['React'],n['ReactDOM']);b['ReactUtils']['childrenToArray']=function(K){if(K&&K['props']&&K['props']['children']&&!b['ArrayUtils']['is'](K['props']['children'])){var L=K['props']['children'];K['props']['children']=[];K['props']['children']['push'](L);}return K['props']['children'];};b['ReactUtils']['createElement']=function(K,L={}){if(K&&K['defaultProps'])for(let M in K['defaultProps'])if(L[M]==null)L[M]=K['defaultProps'][M];try{return n['React']['createElement'](K||'div',L)||null;}catch(N){b['LogUtils']['error']('Could\x20not\x20create\x20react\x20element!\x20'+N);}return null;};b['ReactUtils']['objectToReact']=function(K){if(!K)return null;else if(typeof K=='string')return K;else if(b['ObjectUtils']['is'](K))return b['ReactUtils']['createElement'](K['type']||K['props']&&K['props']['href']&&'a'||'div',!K['props']?{}:Object['assign']({},K['props'],{'children':K['props']['children']?b['ReactUtils']['objectToReact'](K['props']['children']):null}));else if(b['ArrayUtils']['is'](K))return K['map'](L=>b['ReactUtils']['objectToReact'](L));else return null;};b['ReactUtils']['elementToReact']=function(K,L){if(b['ReactUtils']['isValidElement'](K))return K;else if(!Node['prototype']['isPrototypeOf'](K))return null;else if(K['nodeType']==Node['TEXT_NODE'])return K['nodeValue'];let M={},N=[];if(typeof L=='function')M['ref']=L;for(let P of K['attributes'])M[P['name']]=P['value'];if(K['attributes']['style'])M['style']=b['ObjectUtils']['filter'](K['style'],Q=>K['style'][Q]&&isNaN(parseInt(Q)),!![]);M['children']=[];if(K['style']&&K['style']['cssText'])for(let Q of K['style']['cssText']['split'](';'))if(Q['endsWith']('!important')){let R=Q['split'](':')[0x0];let S=R['replace'](/-([a-z]?)/g,(T,U)=>U['toUpperCase']());if(M['style'][S]!=null)N['push'](R);}for(let T of K['childNodes'])M['children']['push'](b['ReactUtils']['elementToReact'](T));M['className']=b['DOMUtils']['formatClassName'](M['className'],M['class']);delete M['class'];let O=b['ReactUtils']['createElement'](K['tagName'],M);b['ReactUtils']['forceStyle'](O,N);return O;};b['ReactUtils']['forceStyle']=function(K,L){if(!b['ReactUtils']['isValidElement'](K)||!b['ObjectUtils']['is'](K['props']['style'])||!b['ArrayUtils']['is'](L)||!L['length'])return null;let M=K['ref'];K['ref']=N=>{if(typeof M=='function')M(N);let O=b['ReactUtils']['findDOMNode'](N);if(Node['prototype']['isPrototypeOf'](O))for(let P of L){let Q=K['props']['style'][P['replace'](/-([a-z]?)/g,(R,S)=>S['toUpperCase']())];if(Q!=null)O['style']['setProperty'](P,Q,'important');}};return K;};b['ReactUtils']['findChild']=function(K,L){if(!K||!b['ObjectUtils']['is'](L)||!L['name']&&!L['key']&&!L['props']&&!L['filter'])return L['all']?[]:null;let M=Node['prototype']['isPrototypeOf'](K)?b['ReactUtils']['getInstance'](K):K;if(!b['ObjectUtils']['is'](M)&&!b['ArrayUtils']['is'](M))return null;L['name']=L['name']&&[L['name']]['flat']()['filter'](W=>W);L['key']=L['key']&&[L['key']]['flat']()['filter'](W=>W);L['props']=L['props']&&[L['props']]['flat']()['filter'](W=>W);L['filter']=typeof L['filter']=='function'&&L['filter'];let N=-0x1;let O=performance['now']();let P=L['unlimited']?0x3b9ac9ff:L['depth']===undefined?0x1e:L['depth'];let Q=L['unlimited']?0x3b9ac9ff:L['time']===undefined?0x96:L['time'];let R=[];let S=T(M);if(L['all']){for(let W in R)delete R[W]['BDFDBreactSearch'];return R;}else return S;function T(X){let Y=null;if(!X||N>=P||performance['now']()-O>=Q)return Y;if(!b['ArrayUtils']['is'](X)){if(U(X)){if(L['all']===undefined||!L['all'])Y=X;else if(L['all']){if(!X['BDFDBreactSearch']){X['BDFDBreactSearch']=!![];R['push'](X);}}}else if(X['props']&&X['props']['children']){N++;Y=T(X['props']['children']);N--;}}else{for(let Z of X)if(Z){if(b['ArrayUtils']['is'](Z))Y=T(Z);else if(U(Z)){if(L['all']===undefined||!L['all'])Y=Z;else if(L['all']){if(!Z['BDFDBreactSearch']){Z['BDFDBreactSearch']=!![];R['push'](Z);}}}else if(Z['props']&&Z['props']['children']){N++;Y=T(Z['props']['children']);N--;}if(Y)break;}}return Y;}function U(X){if(!X)return![];let Y=X['stateNode']?X['stateNode']['props']:X['props'];return X['type']&&L['name']&&L['name']['some'](Z=>c['isInstanceCorrect'](X,Z))||L['key']&&L['key']['some'](Z=>X['key']==Z)||Y&&L['props']&&L['props'][L['someProps']?'some':'every'](Z=>b['ArrayUtils']['is'](Z)?b['ArrayUtils']['is'](Z[0x1])?Z[0x1]['some'](a0=>V(Y,Z[0x0],a0)):V(Y,Z[0x0],Z[0x1]):Y[Z]!==undefined)||L['filter']&&L['filter'](X);}function V(X,Y,Z){return Y!=null&&X[Y]!=null&&Z!=null&&(Y=='className'?('\x20'+X[Y]+'\x20')['indexOf']('\x20'+Z+'\x20')>-0x1:b['equals'](X[Y],Z));}};b['ReactUtils']['setChild']=function(K,L){if(!b['ReactUtils']['isValidElement'](K)||!b['ReactUtils']['isValidElement'](L)&&typeof L!='string'&&!b['ArrayUtils']['is'](L))return;let M=![];N(K);function N(P){if(M)return;if(!b['ArrayUtils']['is'](P))O(P);else for(let Q of P)O(Q);}function O(P){if(!b['ReactUtils']['isValidElement'](P))return;if(b['ReactUtils']['isValidElement'](P['props']['children']))N(P['props']['children']);else if(b['ArrayUtils']['is'](P['props']['children'])){if(P['props']['children']['every'](Q=>!Q||typeof Q=='string')){M=!![];P['props']['children']=[L]['flat'](0xa);}else N(P['props']['children']);}else{M=!![];P['props']['children']=L;}}};b['ReactUtils']['findConstructor']=function(K,L,M={}){if(!b['ObjectUtils']['is'](M))return null;if(!K||!L)return M['all']?M['group']?{}:[]:null;let N=Node['prototype']['isPrototypeOf'](K)?b['ReactUtils']['getInstance'](K):K;if(!b['ObjectUtils']['is'](N))return M['all']?M['group']?{}:[]:null;L=L&&[L]['flat'](0xa)['filter'](W=>typeof W=='string');if(!L['length'])return M['all']?M['group']?{}:[]:null;;let O=-0x1;let P=performance['now']();let Q=M['unlimited']?0x3b9ac9ff:M['depth']===undefined?0x1e:M['depth'];let R=M['unlimited']?0x3b9ac9ff:M['time']===undefined?0x96:M['time'];let S=M['up']?{'return':!![],'sibling':!![],'default':!![],'_reactInternalFiber':!![]}:{'child':!![],'sibling':!![],'default':!![],'_reactInternalFiber':!![]};let T=M['group']?{}:[];let U=V(N);if(M['all']){for(let W in T){if(M['group'])for(let X in T[W])delete T[W][X]['BDFDBreactSearch'];else delete T[W]['BDFDBreactSearch'];}return T;}else return U;function V(Y){O++;let Z=undefined;if(Y&&!Node['prototype']['isPrototypeOf'](Y)&&!b['ReactUtils']['getInstance'](Y)&&Oc['isInstanceCorrect'](Y,a0['split']('\x20_\x20_\x20')[0x0]))){if(M['all']===undefined||!M['all'])Z=Y['type'];else if(M['all']){if(!Y['type']['BDFDBreactSearch']){Y['type']['BDFDBreactSearch']=!![];if(M['group']){if(Y['type']&&(Y['type']['render']&&Y['type']['render']['displayName']||Y['type']['displayName']||Y['type']['name'])){let a0=M['name']['find'](a1=>(Y['type']['render']&&Y['type']['render']['displayName']||Y['type']['displayName']||Y['type']['name']||Y['type'])==a1['split']('\x20_\x20_\x20')[0x0])||'Default';if(!b['ArrayUtils']['is'](T[a0]))T[a0]=[];T[a0]['push'](Y['stateNode']);}}else T['push'](Y['type']);}}}if(Z===undefined){let a1=Object['getOwnPropertyNames'](Y);for(let a2=0x0;Z===undefined&&a2V);L['type']=L['type']&&[L['type']]['flat']()['filter'](V=>V);L['key']=L['key']&&[L['key']]['flat']()['filter'](V=>V);L['props']=L['props']&&[L['props']]['flat']()['filter'](V=>V);let N=-0x1;let O=performance['now']();let P=L['unlimited']?0x3b9ac9ff:L['depth']===undefined?0x1e:L['depth'];let Q=L['unlimited']?0x3b9ac9ff:L['time']===undefined?0x96:L['time'];let R=L['up']?{'return':!![],'sibling':!![],'_reactInternalFiber':!![]}:{'child':!![],'sibling':!![],'_reactInternalFiber':!![]};let S=L['group']?{}:[];let T=U(M);if(L['all']){for(let V in S){if(L['group'])for(let W in S[V])delete S[V][W]['BDFDBreactSearch'];else delete S[V]['BDFDBreactSearch'];}return S;}else return T;function U(X){N++;let Y=undefined;if(X&&!Node['prototype']['isPrototypeOf'](X)&&!b['ReactUtils']['getInstance'](X)&&Nc['isInstanceCorrect'](X,a0['split']('\x20_\x20_\x20')[0x0]))||X['type']&&L['type']&&L['type']['some'](a0=>b['ArrayUtils']['is'](a0)?X['type']===a0[0x1]:X['type']===a0)||X['key']&&L['key']&&L['key']['some'](a0=>X['key']==a0)||Z&&L['props']&&L['props']['every'](a0=>b['ArrayUtils']['is'](a0)?b['ArrayUtils']['is'](a0[0x1])?a0[0x1]['some'](a1=>b['equals'](Z[a0[0x0]],a1)):b['equals'](Z[a0[0x0]],a0[0x1]):Z[a0]!==undefined))){if(L['all']===undefined||!L['all'])Y=X['stateNode'];else if(L['all']){if(!X['stateNode']['BDFDBreactSearch']){X['stateNode']['BDFDBreactSearch']=!![];if(L['group']){if(L['name']&&X['type']&&(X['type']['render']&&X['type']['render']['displayName']||X['type']['displayName']||X['type']['name']||X['type'])){let a0=L['name']['find'](a1=>(X['type']['render']&&X['type']['render']['displayName']||X['type']['displayName']||X['type']['name']||X['type'])==a1['split']('\x20_\x20_\x20')[0x0])||'Default';if(!b['ArrayUtils']['is'](S[a0]))S[a0]=[];S[a0]['push'](X['stateNode']);}else if(L['type']&&X['type']){let a1=[L['type']['find'](a2=>b['ArrayUtils']['is'](a2)&&X['type']===a2[0x1])]['flat'](0xa)[0x0]||'Default';if(!b['ArrayUtils']['is'](S[a1]))S[a1]=[];S[a1]['push'](X['stateNode']);}}else S['push'](X['stateNode']);}}}if(Y===undefined){let a2=Object['getOwnPropertyNames'](X);for(let a3=0x0;Y===undefined&&a3S);L['key']=L['key']&&[L['key']]['flat']()['filter'](S=>S);L['props']=L['props']&&[L['props']]['flat']()['filter'](S=>S);L['filter']=typeof L['filter']=='function'&&L['filter'];let N=firstArray=M;while(!b['ArrayUtils']['is'](firstArray)&&firstArray['props']&&firstArray['props']['children'])firstArray=firstArray['props']['children'];if(!b['ArrayUtils']['is'](firstArray)){if(N&&N['props']){N['props']['children']=[N['props']['children']];firstArray=N['props']['children'];}else firstArray=[];}return O(M);function O(S){let T=[firstArray,-0x1];if(!S)return T;if(!b['ArrayUtils']['is'](S)){if(Q(S))T=P(S);else if(S['props']&&S['props']['children']){N=S;T=O(S['props']['children']);}}else{for(let U=0x0;T[0x1]==-0x1&&Uc['isInstanceCorrect'](S,U))||L['key']&&L['key']['some'](U=>S['key']==U)||T&&L['props']&&L['props'][L['someProps']?'some':'every'](U=>b['ArrayUtils']['is'](U)?b['ArrayUtils']['is'](U[0x1])?U[0x1]['some'](V=>R(T,U[0x0],V)):R(T,U[0x0],U[0x1]):T[U]!==undefined)||L['filter']&&L['filter'](S);}function R(S,T,U){return T!=null&&S[T]!=null&&U!=null&&(T=='className'?('\x20'+S[T]+'\x20')['indexOf']('\x20'+U+'\x20')>-0x1:b['equals'](S[T],U));}};b['ReactUtils']['findProps']=function(K,L){if(!b['ObjectUtils']['is'](L))return null;if(!K||!L['name']&&!L['key'])return null;let M=Node['prototype']['isPrototypeOf'](K)?b['ReactUtils']['getInstance'](K):K;if(!b['ObjectUtils']['is'](M))return null;L['name']=L['name']&&[L['name']]['flat']()['filter'](T=>T);L['key']=L['key']&&[L['key']]['flat']()['filter'](T=>T);let N=-0x1;let O=performance['now']();let P=L['unlimited']?0x3b9ac9ff:L['depth']===undefined?0x1e:L['depth'];let Q=L['unlimited']?0x3b9ac9ff:L['time']===undefined?0x96:L['time'];let R=L['up']?{'return':!![],'sibling':!![],'_reactInternalFiber':!![]}:{'child':!![],'sibling':!![],'_reactInternalFiber':!![]};return S(M);function S(T){N++;let U=undefined;if(T&&!Node['prototype']['isPrototypeOf'](T)&&!b['ReactUtils']['getInstance'](T)&&Nc['isInstanceCorrect'](T,V['split']('\x20_\x20_\x20')[0x0]))||L['key']&&L['key']['some'](V=>T['key']==V)))U=T['memoizedProps'];if(U===undefined){let V=Object['getOwnPropertyNames'](T);for(let W=0x0;U===undefined&&WM))if(L['updater']&&typeof L['updater']['isMounted']=='function'&&L['updater']['isMounted'](L))L['forceUpdate']();};b['ReactUtils']['getInstance']=function(K){if(!b['ObjectUtils']['is'](K))return null;return K[Object['keys'](K)['find'](L=>L['startsWith']('__reactInternalInstance'))];};b['ReactUtils']['getValue']=function(K,L){if(!K||!L)return null;let M=Node['prototype']['isPrototypeOf'](K)?b['ReactUtils']['getInstance'](K):K;if(!b['ObjectUtils']['is'](M))return null;let N=M,O=L['split']('.')['filter'](P=>P);for(value of O){if(!N)return null;N=N[value];}return N;};b['ReactUtils']['render']=function(K,L){if(!b['ReactUtils']['isValidElement'](K)||!Node['prototype']['isPrototypeOf'](L))return;try{n['ReactDOM']['render'](K,L);let M=new MutationObserver(N=>N['forEach'](O=>{let P=Array['from'](O['removedNodes']);if(P['indexOf'](L)>-0x1||P['some'](Q=>Q['contains'](L))){M['disconnect']();b['ReactUtils']['unmountComponentAtNode'](L);}}));M['observe'](document['body'],{'subtree':!![],'childList':!![]});}catch(N){b['LogUtils']['error']('Could\x20not\x20render\x20react\x20element!\x20'+N);}};c['setDefaultProps']=function(K,L){if(b['ObjectUtils']['is'](K))K['defaultProps']=Object['assign']({},K['defaultProps'],L);};c['loadPatchedComp']=function(K){let L=b['ReactUtils']['getValue'](window['BDFDB'],'LibraryComponents.'+K);if(L&&L['prototype']&&L['prototype']['BDFDBpatch'])return L;};b['sameProto']=function(K,L){if(K!=null&&typeof K=='object')return K['constructor']&&K['constructor']['prototype']&&typeof K['constructor']['prototype']['isPrototypeOf']=='function'&&K['constructor']['prototype']['isPrototypeOf'](L);else return typeof K==typeof L;};b['equals']=function(K,L,M){var N=-0x1;if(M===undefined||typeof M!=='boolean')M=![];return O(K,L);function O(P,Q){N++;var R=!![];if(N>0x3e8)R=null;else{if(typeof P!==typeof Q)R=![];else if(typeof P==='function')R=P['toString']()==Q['toString']();else if(typeof P==='undefined')R=!![];else if(typeof P==='symbol')R=!![];else if(typeof P==='boolean')R=P==Q;else if(typeof P==='string')R=P==Q;else if(typeof P==='number'){if(isNaN(P)||isNaN(Q))R=isNaN(P)==isNaN(Q);else R=P==Q;}else if(!P&&!Q)R=!![];else if(!P||!Q)R=![];else if(typeof P==='object'){var S=Object['getOwnPropertyNames'](P);var T=Object['getOwnPropertyNames'](Q);if(S['length']!==T['length'])R=![];else for(let U=0x0;R===!![]&&U{let L=b['ReactUtils']['findOwner'](document['querySelector'](b['dotCN']['app']),{'name':'Messages','unlimited':!![]});let M=b['ReactUtils']['getValue'](L,'_reactInternalFiber.type.prototype');if(L&&M){b['ModuleUtils']['patch'](b,M,'render',{'after':N=>{let [O,P]=b['ReactUtils']['findParent'](N['returnValue'],{'props':['message','channel']});if(P>-0x1)for(let Q of O)if(Q['props']['message'])Q['props']['message']=new b['DiscordObjects']['Message'](Q['props']['message']);}},{'once':!![]});b['ReactUtils']['forceUpdate'](L);}},0x3e8);};b['UserUtils']={};b['UserUtils']['is']=function(K){return K&&K instanceof b['DiscordObjects']['User'];};var p=n['CurrentUserStore']&&n['CurrentUserStore']['getCurrentUser']();b['UserUtils']['me']=new Proxy(p||{},{'get':function(K,L){return(p=n['CurrentUserStore']['getCurrentUser']())&&p[L];}});b['UserUtils']['getStatus']=function(K=b['UserUtils']['me']['id']){K=typeof K=='number'?K['toFixed']():K;let L=b['UserUtils']['getActivitiy'](K);return L&&L['type']==b['DiscordConstants']['ActivityTypes']['STREAMING']?'streaming':n['StatusMetaUtils']['getStatus'](K);};b['UserUtils']['getStatusColor']=function(K){K=typeof K=='string'?K['toLowerCase']():null;switch(K){case'online':return b['DiscordConstants']['Colors']['STATUS_GREEN'];case'mobile':return b['DiscordConstants']['Colors']['STATUS_GREEN'];case'idle':return b['DiscordConstants']['Colors']['STATUS_YELLOW'];case'dnd':return b['DiscordConstants']['Colors']['STATUS_RED'];case'playing':return b['DiscordConstants']['Colors']['BRAND'];case'listening':return b['DiscordConstants']['Colors']['SPOTIFY'];case'streaming':return b['DiscordConstants']['Colors']['TWITCH'];default:return b['DiscordConstants']['Colors']['STATUS_GREY'];}};b['UserUtils']['getActivitiy']=function(K=b['UserUtils']['me']['id']){for(let L of n['StatusMetaUtils']['getActivities'](K))if(L['type']!=b['DiscordConstants']['ActivityTypes']['CUSTOM_STATUS'])return L;return null;};b['UserUtils']['getAvatar']=function(K=b['UserUtils']['me']['id']){let L=n['UserStore']['getUser'](typeof K=='number'?K['toFixed']():K);if(!L)return window['location']['origin']+'/assets/322c936a8c8be1b803cd94861bdfa868.png';else return((L['avatar']?'':window['location']['origin'])+n['IconUtils']['getUserAvatarURL'](L))['split']('?')[0x0];};b['UserUtils']['can']=function(K,L=b['UserUtils']['me']['id'],M=n['LastChannelStore']['getChannelId']()){if(!b['DiscordConstants']['Permissions'][K])b['LogUtils']['warn'](K+'\x20not\x20found\x20in\x20Permissions');else{let N=n['ChannelStore']['getChannel'](M);if(N)return n['PermissionUtils']['canUser'](L,b['DiscordConstants']['Permissions'][K],N);}return![];};let q;b['GuildUtils']={};b['GuildUtils']['is']=function(K){if(!b['ObjectUtils']['is'](K))return![];let L=Object['keys'](K);return K instanceof b['DiscordObjects']['Guild']||Object['keys'](new b['DiscordObjects']['Guild']({}))['every'](M=>L['indexOf'](M)>-0x1);};b['GuildUtils']['getIcon']=function(K){let L=n['GuildStore']['getGuild'](typeof K=='number'?K['toFixed']():K);if(!L||!L['icon'])return null;return n['IconUtils']['getGuildIconURL'](L)['split']('?')[0x0];};b['GuildUtils']['getBanner']=function(K){let L=n['GuildStore']['getGuild'](typeof K=='number'?K['toFixed']():K);if(!L||!L['banner'])return null;return n['IconUtils']['getGuildBannerURL'](L)['split']('?')[0x0];};b['GuildUtils']['getFolder']=function(K){return b['LibraryModules']['FolderStore']['guildFolders']['filter'](L=>L['folderId'])['find'](L=>L['guildIds']['includes'](K));};b['GuildUtils']['getId']=function(K){if(!Node['prototype']['isPrototypeOf'](K)||!b['ReactUtils']['getInstance'](K))return;let L=b['DOMUtils']['getParent'](b['dotCN']['guildouter'],K);if(!L)return;let M=L['querySelector'](b['dotCN']['guildiconwrapper']);let N=M&&M['href']?M['href']['split']('/')['slice'](-0x2)[0x0]:null;return N&&!isNaN(parseInt(N))?N['toString']():null;};b['GuildUtils']['getData']=function(K){if(!K)return null;let L=Node['prototype']['isPrototypeOf'](K)?b['GuildUtils']['getId'](K):typeof K=='object'?K['id']:K;L=typeof L=='number'?L['toFixed']():L;for(let M of b['GuildUtils']['getAll']())if(M&&M['id']==L)return M;return null;};b['GuildUtils']['getAll']=function(){let K=[],L=[];for(let M of b['ReactUtils']['findOwner'](document['querySelector'](b['dotCN']['guilds']),{'name':['Guild','GuildIcon'],'all':!![],'unlimited':!![]})){if(M['props']&&M['props']['guild'])L['push'](Object['assign'](new M['props']['guild']['constructor'](M['props']['guild']),{'div':M['handleContextMenu']&&b['ReactUtils']['findDOMNode'](M),'instance':M}));}for(let N of b['LibraryModules']['FolderStore']['getFlattenedGuildIds']()){let O=null;for(let P of L)if(P['id']==N){O=P;break;}if(O)K['push'](O);else{let Q=b['LibraryModules']['GuildStore']['getGuild'](N);if(Q)K['push'](Object['assign'](new Q['constructor'](Q),{'div':null,'instance':null}));}}return K;};b['GuildUtils']['getUnread']=function(K){let L=[];for(let M of K===undefined||!b['ArrayUtils']['is'](K)?b['GuildUtils']['getAll']():K){if(!M)return null;let N=Node['prototype']['isPrototypeOf'](M)?b['GuildUtils']['getId'](M):typeof M=='object'?M['id']:M;N=typeof N=='number'?N['toFixed']():N;if(N&&(n['UnreadGuildUtils']['hasUnread'](N)||n['UnreadGuildUtils']['getMentionCount'](N)>0x0))L['push'](M);}return L;};b['GuildUtils']['getPinged']=function(K){let L=[];for(let M of K===undefined||!b['ArrayUtils']['is'](K)?b['GuildUtils']['getAll']():K){if(!M)return null;let N=Node['prototype']['isPrototypeOf'](M)?b['GuildUtils']['getId'](M):typeof M=='object'?M['id']:M;N=typeof N=='number'?N['toFixed']():N;if(N&&n['UnreadGuildUtils']['getMentionCount'](N)>0x0)L['push'](M);}return L;};b['GuildUtils']['getMuted']=function(K){let L=[];for(let M of K===undefined||!b['ArrayUtils']['is'](K)?b['GuildUtils']['getAll']():K){if(!M)return null;let N=Node['prototype']['isPrototypeOf'](M)?b['GuildUtils']['getId'](M):typeof M=='object'?M['id']:M;N=typeof N=='number'?N['toFixed']():N;if(N&&n['MutedUtils']['isGuildOrCategoryOrChannelMuted'](N))L['push'](M);}return L;};b['GuildUtils']['getSelected']=function(){let K=n['GuildStore']['getGuild'](n['LastGuildStore']['getGuildId']());if(K)return b['GuildUtils']['getData'](K['id'])||Object['assign'](new K['constructor'](K),{'div':null,'instance':null});else return null;};b['GuildUtils']['openMenu']=function(K,L=b['InternalData']['mousePosition']){if(!K)return;let M=Node['prototype']['isPrototypeOf'](K)?b['GuildUtils']['getId'](K):typeof K=='object'?K['id']:K;let N=n['GuildStore']['getGuild'](M);if(N)n['ContextMenuUtils']['openContextMenu'](L,function(O){return b['ReactUtils']['createElement']((b['ModuleUtils']['findByName']('GuildContextMenu',![])||{'exports':{}})['exports']['default'],Object['assign']({},O,{'guild':N}));});};b['GuildUtils']['markAsRead']=function(K){if(!K)return;let L=[];for(let M of b['ArrayUtils']['is'](K)?K:typeof K=='string'||typeof K=='number'?Array['of'](K):Array['from'](K)){let N=Node['prototype']['isPrototypeOf'](M)?b['GuildUtils']['getId'](M):M&&typeof M=='object'?M['id']:M;let O=N&&n['GuildChannelStore']['getChannels'](N);if(O)for(let P in O)if(b['ArrayUtils']['is'](O[P]))for(let Q of O[P])L['push'](Q['channel']['id']);}if(L['length'])b['ChannelUtils']['markAsRead'](L);};b['GuildUtils']['rerenderAll']=function(){b['TimeUtils']['clear'](q);q=b['TimeUtils']['timeout'](K=>{let L=b['ReactUtils']['findOwner'](document['querySelector'](b['dotCN']['app']),{'name':'Guilds','unlimited':!![]});let M=b['ReactUtils']['getValue'](L,'_reactInternalFiber.type.prototype');if(L&&M){b['ModuleUtils']['patch'](b,M,'render',{'after':N=>{let [O,P]=b['ReactUtils']['findParent'](N['returnValue'],{'name':'ConnectedUnreadDMs'});if(P>-0x1)O['splice'](P+0x1,0x0,b['ReactUtils']['createElement']('div',{}));b['ReactUtils']['forceUpdate'](L);}},{'once':!![]});b['ReactUtils']['forceUpdate'](L);}},0x3e8);};b['FolderUtils']={};b['FolderUtils']['getId']=function(K){if(!Node['prototype']['isPrototypeOf'](K)||!b['ReactUtils']['getInstance'](K))return;K=b['DOMUtils']['getParent'](b['dotCN']['guildfolderwrapper'],K);if(!K)return;return b['ReactUtils']['findValue'](K,'folderId',{'up':!![]});};b['FolderUtils']['getDefaultName']=function(K){let L=b['LibraryModules']['FolderStore']['getGuildFolderById'](K);if(!L)return'';let M=0x2*b['DiscordConstants']['MAX_GUILD_FOLDER_NAME_LENGTH'];let N=[],O=L['guildIds']['map'](P=>(b['LibraryModules']['GuildStore']['getGuild'](P)||{})['name'])['filter'](P=>P);for(let P of O)if(P['length']L['indexOf'](M)>-0x1);};b['ChannelUtils']['isTextChannel']=function(K){let L=typeof K=='string'?n['ChannelStore']['getChannel'](K):K;return b['ObjectUtils']['is'](L)&&(L['type']==b['DiscordConstants']['ChannelTypes']['GUILD_TEXT']||L['type']==b['DiscordConstants']['ChannelTypes']['GUILD_STORE']||L['type']==b['DiscordConstants']['ChannelTypes']['GUILD_ANNOUNCEMENT']);};b['ChannelUtils']['getId']=function(K){if(!Node['prototype']['isPrototypeOf'](K)||!b['ReactUtils']['getInstance'](K))return;K=b['DOMUtils']['getParent'](b['dotCNC']['categorycontainerdefault']+b['dotCNC']['channelcontainerdefault']+b['dotCN']['dmchannel'],K);if(!K)return;let L=b['ReactUtils']['findValue'](K,'channel');return L?L['id']['toString']():null;};b['ChannelUtils']['getDiv']=function(K){if(!K)return null;let L=b['ChannelUtils']['getData'](K);return L?L['div']:null;};b['ChannelUtils']['getData']=function(K){if(!K)return null;let L=Node['prototype']['isPrototypeOf'](K)?b['ChannelUtils']['getId'](K):typeof K=='object'?K['id']:K;L=typeof L=='number'?L['toFixed']():L;for(let M of b['ChannelUtils']['getAll']())if(M&&M['id']==L)return M;return null;};b['ChannelUtils']['getName']=function(K,L){let M=b['LibraryModules']['ChannelStore']['getChannel'](K);if(!M)return'';switch(M['type']){case b['DiscordConstants']['ChannelTypes']['DM']:let N=M['recipients']['map'](b['LibraryModules']['UserStore']['getUser'])['filter'](P=>P)[0x0];return(L&&'@'||'')+(N&&N['toString']()||'');case b['DiscordConstants']['ChannelTypes']['GROUP_DM']:if(M['name'])return M['name'];let O=M['recipients']['map'](b['LibraryModules']['UserStore']['getUser'])['filter'](P=>P);return O['length']>0x0?O['map'](P=>P['toString'])['join'](',\x20'):b['LanguageUtils']['LanguageStrings']['UNNAMED'];case b['DiscordConstants']['ChannelTypes']['GUILD_ANNOUNCEMENT']:case b['DiscordConstants']['ChannelTypes']['GUILD_TEXT']:return(L&&'#'||'')+M['name'];default:return M['name'];}};b['ChannelUtils']['getAll']=function(){let K=[];for(let M of b['ReactUtils']['findOwner'](document['querySelector'](b['dotCN']['channels']),{'name':['ChannelCategoryItem','ChannelItem','PrivateChannel'],'all':!![],'unlimited':!![]}))if(M['props']&&!M['props']['ispin']&&M['props']['channel']&&M['_reactInternalFiber']['return']){var L=b['ReactUtils']['findDOMNode'](M);L=L&&b['DOMUtils']['containsClass'](L['parentElement'],b['disCN']['categorycontainerdefault'],b['disCN']['channelcontainerdefault'],![])?L['parentElement']:L;K['push'](Object['assign'](new M['props']['channel']['constructor'](M['props']['channel']),{'div':L,'instance':M}));}return K;};b['ChannelUtils']['getSelected']=function(){let K=n['ChannelStore']['getChannel'](n['LastChannelStore']['getChannelId']());if(K)return b['ChannelUtils']['getData'](K['id'])||Object['assign'](new K['constructor'](K),{'div':null,'instance':null});else return null;};b['ChannelUtils']['markAsRead']=function(K){if(!K)return;let L=[];for(let M of K=b['ArrayUtils']['is'](K)?K:typeof K=='string'||typeof K=='number'?Array['of'](K):Array['from'](K)){let N=Node['prototype']['isPrototypeOf'](M)?b['ChannelUtils']['getId'](M):M&&typeof M=='object'?M['id']:M;if(N&&b['ChannelUtils']['isTextChannel'](N))L['push']({'channelId':N,'messageId':n['UnreadChannelUtils']['lastMessageId'](N)});}if(L['length'])n['AckUtils']['bulkAck'](L);};b['DMUtils']={};b['DMUtils']['isDMChannel']=function(K){let L=typeof K=='string'?n['ChannelStore']['getChannel'](K):K;return b['ObjectUtils']['is'](L)&&(L['type']==b['DiscordConstants']['ChannelTypes']['DM']||L['type']==b['DiscordConstants']['ChannelTypes']['GROUP_DM']);};b['DMUtils']['getIcon']=function(K){let L=n['ChannelStore']['getChannel'](K=typeof K=='number'?K['toFixed']():K);if(!L)return null;if(!L['icon'])return L['type']==0x1?b['UserUtils']['getAvatar'](L['recipients'][0x0]):L['type']==0x3?window['location']['origin']+n['IconUtils']['getChannelIconURL'](L)['split']('?')[0x0]:null;return n['IconUtils']['getChannelIconURL'](L)['split']('?')[0x0];};b['DMUtils']['getId']=function(K){if(!Node['prototype']['isPrototypeOf'](K)||!b['ReactUtils']['getInstance'](K))return;let L=b['DOMUtils']['getParent'](b['dotCN']['guildouter'],K);if(!L)return;let M=L['querySelector'](b['dotCN']['guildiconwrapper']);let N=M&&M['href']?M['href']['split']('/')['slice'](-0x1)[0x0]:null;return N&&!isNaN(parseInt(N))?N['toString']():null;};b['DMUtils']['getDiv']=function(K){if(!K)return null;if(Node['prototype']['isPrototypeOf'](K)){var L=b['DOMUtils']['getParent'](b['dotCN']['guildouter'],K);return L?L['parentElement']:L;}else{let M=typeof K=='object'?K['id']:K;if(M){var L=b['DOMUtils']['getParent'](b['dotCN']['guildouter'],document['querySelector'](b['dotCNS']['guilds']+b['dotCN']['dmpill']+'\x20+\x20*\x20'+b['dotCN']['guildiconwrapper']+'[href*=\x22/channels/@me/'+M+'\x22]'));return L&&b?L['parentElement']:L;}}return null;};b['DMUtils']['getData']=function(K){if(!K)return null;let L=Node['prototype']['isPrototypeOf'](K)?b['BDFDB']['DMUtils']['getId'](K):typeof K=='object'?K['id']:K;L=typeof L=='number'?L['toFixed']():L;for(let M of b['DMUtils']['getAll']())if(M&&M['id']==L)return M;return null;};b['DMUtils']['getAll']=function(){let K=[];for(let L of b['ReactUtils']['findOwner'](document['querySelector'](b['dotCN']['guilds']),{'name':'DirectMessage','all':!![],'unlimited':!![]})){if(L['props']&&L['props']['channel'])K['push'](Object['assign'](new L['props']['channel']['constructor'](L['props']['channel']),{'div':b['ReactUtils']['findDOMNode'](L),'instance':L}));}return K;};b['DMUtils']['openMenu']=function(K,L=b['InternalData']['mousePosition']){if(!K)return;let M=Node['prototype']['isPrototypeOf'](K)?b['ChannelUtils']['getId'](K):typeof K=='object'?K['id']:K;let N=n['ChannelStore']['getChannel'](M);if(N){if(N['isMultiUserDM']())n['ContextMenuUtils']['openContextMenu'](L,function(O){return b['ReactUtils']['createElement']((b['ModuleUtils']['findByName']('GroupDMContextMenu',![])||{'exports':{}})['exports']['default'],Object['assign']({},O,{'channel':N,'selected':N['id']==n['LastChannelStore']['getChannelId']()}));});else n['ContextMenuUtils']['openContextMenu'](L,function(O){return b['ReactUtils']['createElement']((b['ModuleUtils']['findByName']('DMUserContextMenu',![])||{'exports':{}})['exports']['default'],Object['assign']({},O,{'user':n['UserStore']['getUser'](N['recipients'][0x0]),'channel':N,'selected':N['id']==n['LastChannelStore']['getChannelId']()}));});}};b['DMUtils']['markAsRead']=function(K){if(!K)return;let L=[];for(let M of K=b['ArrayUtils']['is'](K)?K:typeof K=='string'||typeof K=='number'?Array['of'](K):Array['from'](K)){let N=Node['prototype']['isPrototypeOf'](M)?b['BDFDB']['DMUtils']['getId'](M):M&&typeof M=='object'?M['id']:M;if(N)L['push'](N);}for(let O in L)b['TimeUtils']['timeout'](P=>{n['AckUtils']['ack'](L[O]);},O*0x3e8);};b['DataUtils']={};b['DataUtils']['cached']=window['BDFDB']&&window['BDFDB']['DataUtils']&&window['BDFDB']['DataUtils']['cached']||{};b['DataUtils']['save']=function(K,L,M,N){L=L==b&&c||L;let O=typeof L==='string'?L:L['name'];let P=m['path']['join'](b['BDUtils']['getPluginsFolder'](),O+'.config.json');let Q=b['DataUtils']['cached'][O]!==undefined?b['DataUtils']['cached'][O]:c['readConfig'](P)||{};if(M===undefined)Q=b['ObjectUtils']['is'](K)?b['ObjectUtils']['sort'](K):K;else{if(N===undefined)Q[M]=b['ObjectUtils']['is'](K)?b['ObjectUtils']['sort'](K):K;else{if(!b['ObjectUtils']['is'](Q[M]))Q[M]={};Q[M][N]=b['ObjectUtils']['is'](K)?b['ObjectUtils']['sort'](K):K;}}let R=b['ObjectUtils']['is'](Q);if(M!==undefined&&R&&b['ObjectUtils']['is'](Q[M])&&b['ObjectUtils']['isEmpty'](Q[M]))delete Q[M];if(b['ObjectUtils']['isEmpty'](Q)){delete b['DataUtils']['cached'][O];if(m['fs']['existsSync'](P))m['fs']['unlinkSync'](P);}else{if(R)Q=b['ObjectUtils']['sort'](Q);b['DataUtils']['cached'][O]=R?b['ObjectUtils']['deepAssign']({},Q):Q;c['writeConfig'](P,Q);}};b['DataUtils']['load']=function(K,L,M){K=K==b&&c||K;let N=typeof K==='string'?K:K['name'];let O=m['path']['join'](b['BDUtils']['getPluginsFolder'](),N+'.config.json');let P=b['DataUtils']['cached'][N]!==undefined?b['DataUtils']['cached'][N]:c['readConfig'](O)||{};let Q=b['ObjectUtils']['is'](P);b['DataUtils']['cached'][N]=Q?b['ObjectUtils']['deepAssign']({},P):P;if(L===undefined)return P;else{let R=Q?b['ObjectUtils']['is'](P[L])||P[L]==undefined?b['ObjectUtils']['deepAssign']({},P[L]):P[L]:null;if(M===undefined)return R;else return!b['ObjectUtils']['is'](R)||R[M]===undefined?null:R[M];}};b['DataUtils']['remove']=function(K,L,M){K=K==b&&c||K;let N=typeof K==='string'?K:K['name'];let O=m['path']['join'](b['BDUtils']['getPluginsFolder'](),N+'.config.json');let P=b['DataUtils']['cached'][N]!==undefined?b['DataUtils']['cached'][N]:c['readConfig'](O)||{};let Q=b['ObjectUtils']['is'](P);if(L===undefined||!Q)P={};else{if(M===undefined)delete P[L];else if(b['ObjectUtils']['is'](P[L]))delete P[L][M];}if(b['ObjectUtils']['is'](P[L])&&b['ObjectUtils']['isEmpty'](P[L]))delete P[L];if(b['ObjectUtils']['isEmpty'](P)){delete b['DataUtils']['cached'][N];if(m['fs']['existsSync'](O))m['fs']['unlinkSync'](O);}else{if(Q)P=b['ObjectUtils']['sort'](P);b['DataUtils']['cached'][N]=Q?b['ObjectUtils']['deepAssign']({},P):P;c['writeConfig'](O,P);}};b['DataUtils']['get']=function(K,L,M){K=K==b&&c||K;K=typeof K=='string'?b['BDUtils']['getPlugin'](K):K;if(!b['ObjectUtils']['is'](K))return M===undefined?{}:null;let N=K['defaults'];if(!b['ObjectUtils']['is'](N)||!N[L])return M===undefined?{}:null;let O=b['DataUtils']['load'](K,L),P={},Q=![];for(let R in N[L]){let S=b['ObjectUtils']['is'](N[L][R]['value']);if(O[R]==null||S&&(!b['ObjectUtils']['is'](O[R])||Object['keys'](N[L][R]['value'])['some'](T=>N[L][R]['value'][T]!=null&&!b['sameProto'](N[L][R]['value'][T],O[R][T])))){P[R]=S?b['ObjectUtils']['deepAssign']({},N[L][R]['value']):N[L][R]['value'];Q=!![];}else P[R]=O[R];}if(Q)b['DataUtils']['save'](P,K,L);if(M===undefined)return P;else return P[M]===undefined?null:P[M];};c['writeConfig']=function(K,L){try{m['fs']['writeFileSync'](K,JSON['stringify'](L,null,'\x09'));}catch(M){}};c['readConfig']=function(K){try{return JSON['parse'](m['fs']['readFileSync'](K));}catch(L){return{};}};b['ColorUtils']={};b['ColorUtils']['convert']=function(K,L,M){if(b['ObjectUtils']['is'](K)){var N={};for(let ab in K)N[ab]=b['ColorUtils']['convert'](K[ab],L,M);return N;}else{L=L===undefined||!L?L='RGBCOMP':L['toUpperCase']();M=M===undefined||!M||!['RGB','RGBA','RGBCOMP','HSL','HSLA','HSLCOMP','HEX','HEXA','INT']['includes'](M['toUpperCase']())?b['ColorUtils']['getType'](K):M['toUpperCase']();if(L=='RGBCOMP'){switch(M){case'RGBCOMP':if(K['length']==0x3)return a6(K);else if(K['length']==0x4){let ae=a7(K['pop']());return a6(K)['concat'](ae);}break;case'RGB':return a6(K['replace'](/\s/g,'')['slice'](0x4,-0x1)['split'](','));case'RGBA':let ac=K['replace'](/\s/g,'')['slice'](0x5,-0x1)['split'](',');let ad=a7(ac['pop']());return a6(ac)['concat'](ad);case'HSLCOMP':if(K['length']==0x3)return b['ColorUtils']['convert']('hsl('+a9(K)['join'](',')+')','RGBCOMP');else if(K['length']==0x4){let af=a7(K['pop']());return b['ColorUtils']['convert']('hsl('+a9(K)['join'](',')+')','RGBCOMP')['concat'](af);}break;case'HSL':var O=a9(K['replace'](/\s/g,'')['slice'](0x4,-0x1)['split'](','));var P,Q,R,S,T,U,V,W;var X=O[0x0]/0x168,Y=parseInt(O[0x1])/0x64,Z=parseInt(O[0x2])/0x64;S=Math['floor'](X*0x6);T=X*0x6-S;U=Z*(0x1-Y);V=Z*(0x1-T*Y);W=Z*(0x1-(0x1-T)*Y);switch(S%0x6){case 0x0:P=Z,Q=W,R=U;break;case 0x1:P=V,Q=Z,R=U;break;case 0x2:P=U,Q=Z,R=W;break;case 0x3:P=U,Q=V,R=Z;break;case 0x4:P=W,Q=U,R=Z;break;case 0x5:P=Z,Q=U,R=V;break;}return[Math['round'](P*0xff),Math['round'](Q*0xff),Math['round'](R*0xff)];case'HSLA':var O=K['replace'](/\s/g,'')['slice'](0x5,-0x1)['split'](',');return b['ColorUtils']['convert']('hsl('+O['slice'](0x0,0x3)['join'](',')+')','RGBCOMP')['concat'](a7(O['pop']()));case'HEX':var a0=/^#([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$|^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i['exec'](K);return[parseInt(a0[0x1]+a0[0x1]||a0[0x4],0x10)['toString'](),parseInt(a0[0x2]+a0[0x2]||a0[0x5],0x10)['toString'](),parseInt(a0[0x3]+a0[0x3]||a0[0x6],0x10)['toString']()];case'HEXA':var a0=/^#([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$|^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i['exec'](K);return[parseInt(a0[0x1]+a0[0x1]||a0[0x5],0x10)['toString'](),parseInt(a0[0x2]+a0[0x2]||a0[0x6],0x10)['toString'](),parseInt(a0[0x3]+a0[0x3]||a0[0x7],0x10)['toString'](),Math['floor'](b['NumberUtils']['mapRange']([0x0,0xff],[0x0,0x64],parseInt(a0[0x4]+a0[0x4]||a0[0x8],0x10)['toString']()))/0x64];case'INT':K=aa(K);return[(K>>0x10&0xff)['toString'](),(K>>0x8&0xff)['toString'](),(K&0xff)['toString']()];default:return null;}}else{if(L&&M&&L['indexOf']('HSL')==0x0&&M['indexOf']('HSL')==0x0){if(M=='HSLCOMP'){switch(L){case'HSLCOMP':if(K['length']==0x3)return a9(K);else if(K['length']==0x4){var a1=a7(K['pop']());return a9(K)['concat'](a1);}break;case'HSL':return'hsl('+a9(K['slice'](0x0,0x3))['join'](',')+')';case'HSLA':K=K['slice'](0x0,0x4);var a1=K['length']==0x4?a7(K['pop']()):0x1;return'hsla('+a9(K)['concat'](a1)['join'](',')+')';}}else return b['ColorUtils']['convert'](K['replace'](/\s/g,'')['slice'](K['toLowerCase']()['indexOf']('hsla')==0x0?0x5:0x4,-0x1)['split'](','),L,'HSLCOMP');}else{let ag=M=='RGBCOMP'?K:b['ColorUtils']['convert'](K,'RGBCOMP',M);if(ag)switch(L){case'RGB':return'rgb('+a6(ag['slice'](0x0,0x3))['join'](',')+')';case'RGBA':ag=ag['slice'](0x0,0x4);var a1=ag['length']==0x4?a7(ag['pop']()):0x1;return'rgba('+a6(ag)['concat'](a1)['join'](',')+')';case'HSLCOMP':var a1=ag['length']==0x4?a7(ag['pop']()):null;var O=a9(b['ColorUtils']['convert'](ag,'HSL')['replace'](/\s/g,'')['split'](','));return a1!=null?O['concat'](a1):O;case'HSL':var P=a5(ag[0x0]),Q=a5(ag[0x1]),R=a5(ag[0x2]);var a2=Math['max'](P,Q,R),a3=Math['min'](P,Q,R),a4=a2-a3,X,Y=a2===0x0?0x0:a4/a2,Z=a2/0xff;switch(a2){case a3:X=0x0;break;case P:X=Q-R+a4*(Q0xff?0xff:ah<0x0?0x0:ah;}};function a6(ah){return ah['map'](ai=>{return a5(ai);});};function a7(ah){if(ah==null){return 0x1;}else{ah=ah['toString']();ah=(ah['indexOf']('%')>-0x1?0.01:0x1)*parseFloat(ah['replace'](/[^0-9\.\-]/g,''));return isNaN(ah)||ah>0x1?0x1:ah<0x0?0x0:ah;}};function a8(ah){if(ah==null){return'100%';}else{ah=parseFloat(ah['toString']()['replace'](/[^0-9\.\-]/g,''));return(isNaN(ah)||ah>0x64?0x64:ah<0x0?0x0:ah)+'%';}};function a9(ah){let ai=parseFloat(ah['shift']()['toString']()['replace'](/[^0-9\.\-]/g,''));ai=isNaN(ai)||ai>0x168?0x168:ai<0x0?0x0:ai;return[ai]['concat'](ah['map'](aj=>{return a8(aj);}));};function aa(ah){if(ah==null){return 0xffffff;}else{ah=parseInt(ah['toString']()['replace'](/[^0-9]/g,''));return isNaN(ah)||ah>0xffffff?0xffffff:ah<0x0?0x0:ah;}};};b['ColorUtils']['setAlpha']=function(K,L,M){if(b['ObjectUtils']['is'](K)){var N={};for(let P in K)N[P]=b['ColorUtils']['setAlpha'](K[P],L,M);return N;}else{var O=b['ColorUtils']['convert'](K,'RGBCOMP');if(O){L=L['toString']();L=(L['indexOf']('%')>-0x1?0.01:0x1)*parseFloat(L['replace'](/[^0-9\.\-]/g,''));L=isNaN(L)||L>0x1?0x1:L<0x0?0x0:L;O[0x3]=L;M=(M||b['ColorUtils']['getType'](K))['toUpperCase']();M=M=='RGB'||M=='HSL'||M=='HEX'?M+'A':M;return b['ColorUtils']['convert'](O,M);}}return null;};b['ColorUtils']['getAlpha']=function(K){var L=b['ColorUtils']['convert'](K,'RGBCOMP');if(L){if(L['length']==0x3)return 0x1;else if(L['length']==0x4){let M=L[0x3]['toString']();M=(M['indexOf']('%')>-0x1?0.01:0x1)*parseFloat(M['replace'](/[^0-9\.\-]/g,''));return isNaN(M)||M>0x1?0x1:M<0x0?0x0:M;}}return null;};b['ColorUtils']['change']=function(K,L,M){L=parseFloat(L);if(K!=null&&typeof L=='number'&&!isNaN(L)){if(b['ObjectUtils']['is'](K)){var N={};for(let P in K)N[P]=b['ColorUtils']['change'](K[P],L,M);return N;}else{var O=b['ColorUtils']['convert'](K,'RGBCOMP');if(O){if(parseInt(L)!==L){L=L['toString']();L=(L['indexOf']('%')>-0x1?0.01:0x1)*parseFloat(L['replace'](/[^0-9\.\-]/g,''));L=isNaN(L)?0x0:L;return b['ColorUtils']['convert']([Math['round'](O[0x0]*(0x1+L)),Math['round'](O[0x1]*(0x1+L)),Math['round'](O[0x2]*(0x1+L))],M||b['ColorUtils']['getType'](K));}else return b['ColorUtils']['convert']([Math['round'](O[0x0]+L),Math['round'](O[0x1]+L),Math['round'](O[0x2]+L)],M||b['ColorUtils']['getType'](K));}}}return null;};b['ColorUtils']['invert']=function(K,L){if(b['ObjectUtils']['is'](K)){var M={};for(let O in K)M[O]=b['ColorUtils']['invert'](K[O],L);return M;}else{var N=b['ColorUtils']['convert'](K,'RGBCOMP');if(N)return b['ColorUtils']['convert']([0xff-N[0x0],0xff-N[0x1],0xff-N[0x2]],L||b['ColorUtils']['getType'](K));}return null;};b['ColorUtils']['compare']=function(K,L){if(K&&L){K=b['ColorUtils']['convert'](K,'RGBA');L=b['ColorUtils']['convert'](L,'RGBA');if(K&&L)return b['equals'](K,L);}return null;};b['ColorUtils']['isBright']=function(K,L=0xa0){K=b['ColorUtils']['convert'](K,'RGBCOMP');if(!K)return![];return parseInt(L)-0x1&&K<0x1000000)return'INT';}return null;function M(O){return O['slice'](0x0,0x3)['every'](P=>P['toString']()['indexOf']('%')==-0x1&&parseFloat(P)==parseInt(P));};function N(O){return O['slice'](0x1,0x3)['every'](P=>P['toString']()['indexOf']('%')==P['length']-0x1);};};b['ColorUtils']['createGradient']=function(K,L='to\x20right'){var M={};var N='linear-gradient('+L;for(let O of Object['keys'](K)['sort']()){let P=b['ColorUtils']['convert'](K[O],'RGBA');N+=P?',\x20'+P+'\x20'+O*0x64+'%':'';}return N+=')';};b['ColorUtils']['getSwatchColor']=function(K,L){if(!Node['prototype']['isPrototypeOf'](K))return;let M=K['querySelector'](b['dotCN']['colorpickerswatches']+'[number=\x22'+L+'\x22],\x20'+b['dotCN']['colorpickerswatch']+'[number=\x22'+L+'\x22]');if(!M)return null;return b['ColorUtils']['convert'](b['ReactUtils']['findValue'](b['ReactUtils']['getInstance'](M),'selectedColor',{'up':!![],'blacklist':{'props':!![]}}));};b['DOMUtils']={};b['DOMUtils']['getSelection']=function(){let K=document['getSelection']();return K&&K['anchorNode']?K['getRangeAt'](0x0)['toString']():'';};b['DOMUtils']['addClass']=function(K,...L){if(!K||!L)return;for(let N of[K]['flat'](0xa)['filter'](O=>O)){if(Node['prototype']['isPrototypeOf'](N))M(N);else if(NodeList['prototype']['isPrototypeOf'](N))for(let O of N)M(O);else if(typeof N=='string')for(let P of N['split'](','))if(P&&(P=P['trim']()))for(let Q of document['querySelectorAll'](P))M(Q);}function M(R){if(R&&R['classList'])for(let S of L)for(let T of[S]['flat'](0xa)['filter'](U=>U))if(typeof T=='string')for(let U of T['split']('\x20'))if(U)R['classList']['add'](U);}};b['DOMUtils']['removeClass']=function(K,...L){if(!K||!L)return;for(let N of[K]['flat'](0xa)['filter'](O=>O)){if(Node['prototype']['isPrototypeOf'](N))M(N);else if(NodeList['prototype']['isPrototypeOf'](N))for(let O of N)M(O);else if(typeof N=='string')for(let P of N['split'](','))if(P&&(P=P['trim']()))for(let Q of document['querySelectorAll'](P))M(Q);}function M(R){if(R&&R['classList'])for(let S of L)for(let T of[S]['flat'](0xa)['filter'](U=>U))if(typeof T=='string')for(let U of T['split']('\x20'))if(U)R['classList']['remove'](U);}};b['DOMUtils']['toggleClass']=function(K,...L){if(!K||!L)return;var M=L['pop']();if(typeof M!='boolean'){L['push'](M);M=undefined;}if(!L['length'])return;for(let O of[K]['flat'](0xa)['filter'](P=>P)){if(!O){}else if(Node['prototype']['isPrototypeOf'](O))N(O);else if(NodeList['prototype']['isPrototypeOf'](O))for(let P of O)N(P);else if(typeof O=='string')for(let Q of O['split'](','))if(Q&&(Q=Q['trim']()))for(let R of document['querySelectorAll'](Q))N(R);}function N(S){if(S&&S['classList'])for(let T of L)for(let U of[T]['flat'](0xa)['filter'](V=>V))if(typeof U=='string')for(let V of U['split']('\x20'))if(V)S['classList']['toggle'](V,M);}};b['DOMUtils']['containsClass']=function(K,...L){if(!K||!L)return;let M=L['pop']();if(typeof M!='boolean'){L['push'](M);M=!![];}if(!L['length'])return;let N=undefined;for(let P of b['ArrayUtils']['is'](K)?K:Array['of'](K)){if(!P){}else if(Node['prototype']['isPrototypeOf'](P))O(P);else if(NodeList['prototype']['isPrototypeOf'](P))for(let Q of P)O(Q);else if(typeof P=='string')for(let R of P['split'](','))if(R&&(R=R['trim']()))for(let S of document['querySelectorAll'](R))O(S);}return N;function O(T){if(T&&T['classList'])for(let U of L)if(typeof U=='string')for(let V of U['split']('\x20'))if(V){if(N===undefined)N=M;if(M&&!T['classList']['contains'](V))N=![];if(!M&&T['classList']['contains'](V))N=!![];}}};b['DOMUtils']['replaceClass']=function(K,L,M){if(!K||typeof L!='string'||typeof M!='string')return;for(let O of[K]['flat'](0xa)['filter'](P=>P)){if(Node['prototype']['isPrototypeOf'](O))N(O);else if(NodeList['prototype']['isPrototypeOf'](O))for(let P of O)N(P);else if(typeof O=='string')for(let Q of O['split'](','))if(Q&&(Q=Q['trim']()))for(let R of document['querySelectorAll'](Q))N(R);}function N(S){if(S&&S['tagName']&&S['className'])S['className']=S['className']['replace'](new RegExp(L,'g'),M)['trim']();}};b['DOMUtils']['formatClassName']=function(...K){return b['ArrayUtils']['removeCopies'](K['flat'](0xa)['filter'](L=>L)['join']('\x20')['split']('\x20'))['join']('\x20')['trim']();};b['DOMUtils']['removeClassFromDOM']=function(...K){for(let L of K['flat'](0xa)['filter'](M=>M))if(typeof L=='string')for(let M of L['split'](','))if(M&&(M=M['replace'](/\.|\s/g,'')))b['DOMUtils']['removeClass'](document['querySelectorAll']('.'+M),M);};b['DOMUtils']['show']=function(...K){b['DOMUtils']['toggle'](...K,!![]);};b['DOMUtils']['hide']=function(...K){b['DOMUtils']['toggle'](...K,![]);};b['DOMUtils']['toggle']=function(...K){if(!K)return;var L=K['pop']();if(typeof L!='boolean'){K['push'](L);L=undefined;}if(!K['length'])return;for(let N of K['flat'](0xa)['filter'](O=>O)){if(Node['prototype']['isPrototypeOf'](N))M(N);else if(NodeList['prototype']['isPrototypeOf'](N))for(let O of N)M(O);else if(typeof N=='string')for(let P of N['split'](','))if(P&&(P=P['trim']()))for(let Q of document['querySelectorAll'](P))M(Q);}function M(R){if(!R||!Node['prototype']['isPrototypeOf'](R))return;var S=L===undefined?!b['DOMUtils']['isHidden'](R):!L;if(S)R['style']['setProperty']('display','none','important');else R['style']['removeProperty']('display');}};b['DOMUtils']['isHidden']=function(K){if(Node['prototype']['isPrototypeOf'](K)&&K['nodeType']!=Node['TEXT_NODE'])return getComputedStyle(K,null)['getPropertyValue']('display')=='none';};b['DOMUtils']['remove']=function(...K){for(let L of K['flat'](0xa)['filter'](M=>M)){if(Node['prototype']['isPrototypeOf'](L))L['remove']();else if(NodeList['prototype']['isPrototypeOf'](L)){let M=Array['from'](L);while(M['length'])M['shift']()['remove']();}else if(typeof L=='string')for(let N of L['split'](','))if(N&&(N=N['trim']())){let O=Array['from'](document['querySelectorAll'](N));while(O['length'])O['shift']()['remove']();}}};b['DOMUtils']['create']=function(K){if(typeof K!='string'||!K['trim']())return null;let L=document['createElement']('template');try{L['innerHTML']=K['replace'](/(?[\t\r\n]+<(?!pre)/g,'><');}catch(M){L['innerHTML']=K['replace'](/>[\t\r\n]+<(?!pre)/g,'><');}if(L['content']['childNodes']['length']==0x1)return L['content']['firstElementChild'];else{let N=document['createElement']('span');let O=Array['from'](L['content']['childNodes']);while(O['length'])N['appendChild'](O['shift']());return N;}};b['DOMUtils']['getParent']=function(K,L){let M=null;if(Node['prototype']['isPrototypeOf'](L)&&K){let N=NodeList['prototype']['isPrototypeOf'](K)?K:typeof K=='string'?document['querySelectorAll'](K):null;if(N)for(let O of N)if(O['contains'](L)){M=O;break;}}return M;};b['DOMUtils']['setText']=function(K,L){if(!K||!Node['prototype']['isPrototypeOf'](K))return;let M=K['nodeType']==Node['TEXT_NODE']?K:null;if(!M)for(let N of K['childNodes'])if(N['nodeType']==Node['TEXT_NODE']||b['DOMUtils']['containsClass'](N,'BDFDB-textnode')){M=N;break;}if(M){if(Node['prototype']['isPrototypeOf'](L)&&L['nodeType']!=Node['TEXT_NODE']){b['DOMUtils']['addClass'](L,'BDFDB-textnode');K['replaceChild'](L,M);}else if(Node['prototype']['isPrototypeOf'](M)&&M['nodeType']!=Node['TEXT_NODE'])K['replaceChild'](document['createTextNode'](L),M);else M['textContent']=L;}else K['appendChild'](Node['prototype']['isPrototypeOf'](L)?L:document['createTextNode'](L));};b['DOMUtils']['getText']=function(K){if(!K||!Node['prototype']['isPrototypeOf'](K))return;for(let L of K['childNodes'])if(L['nodeType']==Node['TEXT_NODE'])return L['textContent'];};b['DOMUtils']['getRects']=function(K){let L={};if(Node['prototype']['isPrototypeOf'](K)&&K['nodeType']!=Node['TEXT_NODE']){let M=K;while(M){let N=b['DOMUtils']['isHidden'](M);if(N){b['DOMUtils']['toggle'](M,!![]);M['BDFDBgetRectsHidden']=!![];}M=M['parentElement'];}L=K['getBoundingClientRect']();M=K;while(M){if(M['BDFDBgetRectsHidden']){b['DOMUtils']['toggle'](M,![]);delete M['BDFDBgetRectsHidden'];}M=M['parentElement'];}}return L;};b['DOMUtils']['getHeight']=function(K){if(Node['prototype']['isPrototypeOf'](K)&&K['nodeType']!=Node['TEXT_NODE']){let L=b['DOMUtils']['getRects'](K);let M=getComputedStyle(K);return L['height']+parseInt(M['marginTop'])+parseInt(M['marginBottom']);}return 0x0;};b['DOMUtils']['getInnerHeight']=function(K){if(Node['prototype']['isPrototypeOf'](K)&&K['nodeType']!=Node['TEXT_NODE']){let L=b['DOMUtils']['getRects'](K);let M=getComputedStyle(K);return L['height']-parseInt(M['paddingTop'])-parseInt(M['paddingBottom']);}return 0x0;};b['DOMUtils']['getWidth']=function(K){if(Node['prototype']['isPrototypeOf'](K)&&K['nodeType']!=Node['TEXT_NODE']){let L=b['DOMUtils']['getRects'](K);let M=getComputedStyle(K);return L['width']+parseInt(M['marginLeft'])+parseInt(M['marginRight']);}return 0x0;};b['DOMUtils']['getInnerWidth']=function(K){if(Node['prototype']['isPrototypeOf'](K)&&K['nodeType']!=Node['TEXT_NODE']){let L=b['DOMUtils']['getRects'](K);let M=getComputedStyle(K);return L['width']-parseInt(M['paddingLeft'])-parseInt(M['paddingRight']);}return 0x0;};b['DOMUtils']['appendWebScript']=function(K,L){if(!L&&!document['head']['querySelector']('bd-head\x20bd-scripts'))document['head']['appendChild'](b['DOMUtils']['create'](''));L=L||document['head']['querySelector']('bd-head\x20bd-scripts')||document['head'];L=Node['prototype']['isPrototypeOf'](L)?L:document['head'];b['DOMUtils']['removeWebScript'](K,L);let M=document['createElement']('script');M['src']=K;L['appendChild'](M);};b['DOMUtils']['removeWebScript']=function(K,L){L=L||document['head']['querySelector']('bd-head\x20bd-scripts')||document['head'];L=Node['prototype']['isPrototypeOf'](L)?L:document['head'];b['DOMUtils']['remove'](L['querySelectorAll']('script[src=\x22'+K+'\x22]'));};b['DOMUtils']['appendWebStyle']=function(K,L){if(!L&&!document['head']['querySelector']('bd-head\x20bd-styles'))document['head']['appendChild'](b['DOMUtils']['create'](''));L=L||document['head']['querySelector']('bd-head\x20bd-styles')||document['head'];L=Node['prototype']['isPrototypeOf'](L)?L:document['head'];b['DOMUtils']['removeWebStyle'](K,L);L['appendChild'](b['DOMUtils']['create'](''));};b['DOMUtils']['removeWebStyle']=function(K,L){L=L||document['head']['querySelector']('bd-head\x20bd-styles')||document['head'];L=Node['prototype']['isPrototypeOf'](L)?L:document['head'];b['DOMUtils']['remove'](L['querySelectorAll']('link[href=\x22'+K+'\x22]'));};b['DOMUtils']['appendLocalStyle']=function(K,L,M){if(!M&&!document['head']['querySelector']('bd-head\x20bd-styles'))document['head']['appendChild'](b['DOMUtils']['create'](''));M=M||document['head']['querySelector']('bd-head\x20bd-styles')||document['head'];M=Node['prototype']['isPrototypeOf'](M)?M:document['head'];b['DOMUtils']['removeLocalStyle'](K,M);M['appendChild'](b['DOMUtils']['create'](''+L['replace'](/\t|\r|\n/g,'')+''));};b['DOMUtils']['removeLocalStyle']=function(K,L){L=L||document['head']['querySelector']('bd-head\x20bd-styles')||document['head'];L=Node['prototype']['isPrototypeOf'](L)?L:document['head'];b['DOMUtils']['remove'](L['querySelectorAll']('style[id=\x22'+K+'CSS\x22]'));};b['ModalUtils']={};b['ModalUtils']['open']=function(K,L){if(!b['ObjectUtils']['is'](K)||!b['ObjectUtils']['is'](L))return;let M,N,O,P=[],Q=U=>{if(b['ObjectUtils']['is'](O)&&typeof O['onClose']=='function')O['onClose']();};let R=[],S=[],T=[];if(typeof L['text']=='string'){S['push'](b['ReactUtils']['createElement'](x['LibraryComponents']['TextElement'],{'children':L['text']}));}if(L['children']){let U=[];for(let V of[L['children']]['flat'](0xa)['filter'](W=>W))if(n['React']['isValidElement'](V)){if(V['type']==x['LibraryComponents']['ModalComponents']['ModalTabContent']){if(!U['length'])V['props']['open']=!![];else delete V['props']['open'];U['push']({'value':V['props']['tab']});}S['push'](V);}if(U['length'])R['push'](b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['tabbarcontainer'],'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['TabBar'],{'className':b['disCN']['tabbar'],'itemClassName':b['disCN']['tabbaritem'],'type':x['LibraryComponents']['TabBar']['Types']['TOP'],'items':U,'onItemSelect':(W,X)=>{let Y=b['ReactUtils']['findOwner'](M,{'name':'BDFDB_ModalTabContent','all':!![],'unlimited':!![]});for(let Z of Y){if(Z['props']['tab']==W)Z['props']['open']=!![];else delete Z['props']['open'];}b['ReactUtils']['forceUpdate'](Y);}}),L['tabBarChildren']]['flat'](0xa)['filter'](W=>W)}));}if(b['ArrayUtils']['is'](L['buttons']))for(let W of L['buttons']){let X=typeof W['contents']=='string'&&W['contents'];if(X){let Y=typeof W['color']=='string'&&x['LibraryComponents']['Button']['Colors'][W['color']['toUpperCase']()];let Z=typeof W['look']=='string'&&x['LibraryComponents']['Button']['Looks'][W['look']['toUpperCase']()];let a0=typeof W['click']=='function'?W['click']:typeof W['onClick']=='function'?W['onClick']:a1=>{};if(W['cancel'])P['push'](a0);T['push'](b['ReactUtils']['createElement'](x['LibraryComponents']['Button'],b['ObjectUtils']['exclude'](Object['assign']({},W,{'look':Z||(Y?x['LibraryComponents']['Button']['Looks']['FILLED']:x['LibraryComponents']['Button']['Looks']['LINK']),'color':Y||x['LibraryComponents']['Button']['Colors']['PRIMARY'],'onClick':a1=>{if(W['close'])Q();if(!(W['close']&&W['cancel']))a0(M,N);},'children':X}),'click','close','cancel','contents')));}}S=S['concat'](L['contentChildren'])['filter'](a1=>a1&&(typeof a1=='string'||b['ReactUtils']['isValidElement'](a1)));R=R['concat'](L['headerChildren'])['filter'](a1=>a1&&(typeof a1=='string'||b['ReactUtils']['isValidElement'](a1)));T=T['concat'](L['footerChildren'])['filter'](a1=>a1&&(typeof a1=='string'||b['ReactUtils']['isValidElement'](a1)));if(S['length']){if(typeof L['onClose']!='function')L['onClose']=a3=>{};if(typeof L['onOpen']!='function')L['onOpen']=a3=>{};let a1=K['name']||(typeof K['getName']=='function'?K['getName']():null);a1=typeof a1=='string'?a1:null;let a2=0x0;n['ModalUtils']['openModal'](a3=>{O=a3;return b['ReactUtils']['createElement'](class BDFDB_Modal extends n['React']['Component']{['render'](){return b['ReactUtils']['createElement'](x['LibraryComponents']['ModalComponents']['ModalRoot'],{'className':b['DOMUtils']['formatClassName'](a1&&a1+'-modal',b['disCN']['modalwrapper'],L['className']),'size':typeof L['size']=='string'&&x['LibraryComponents']['ModalComponents']['ModalSize'][L['size']['toUpperCase']()]||x['LibraryComponents']['ModalComponents']['ModalSize']['SMALL'],'transitionState':a3['transitionState'],'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['ModalComponents']['ModalHeader'],{'className':b['DOMUtils']['formatClassName'](L['headerClassName'],R['length']&&b['disCN']['modalheaderhassibling']),'separator':L['headerSeparator']||![],'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['Flex']['Child'],{'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormTitle'],{'tag':x['LibraryComponents']['FormComponents']['FormTitle']['Tags']['H4'],'children':L['header']}),b['ReactUtils']['createElement'](x['LibraryComponents']['TextElement'],{'size':x['LibraryComponents']['TextElement']['Sizes']['SIZE_12'],'children':typeof L['subheader']=='string'||b['ReactUtils']['isValidElement'](L['subheader'])?L['subheader']:a1||''})]}),b['ReactUtils']['createElement'](x['LibraryComponents']['ModalComponents']['ModalCloseButton'],{'onClick':Q})]}),R['length']?b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'grow':0x0,'shrink':0x0,'children':R}):null,b['ReactUtils']['createElement'](x['LibraryComponents']['ModalComponents']['ModalContent'],{'className':L['contentClassName'],'scroller':L['scroller'],'children':S}),T['length']?b['ReactUtils']['createElement'](x['LibraryComponents']['ModalComponents']['ModalFooter'],{'className':L['footerClassName'],'children':T}):null]});}['componentDidMount'](){N=this;M=b['ReactUtils']['findDOMNode'](this);M=M&&M['parentElement']?M['parentElement']['querySelector'](b['dotCN']['modalwrapper']):null;if(M&&a3['transitionState']==0x1&&a3['transitionState']>a2)L['onOpen'](M,this);a2=a3['transitionState'];}['componentWillUnmount'](){if(M&&a3['transitionState']==0x3){for(let a4 of P)a4(M);L['onClose'](M,this);}}},a3);},{'onCloseRequest':Q});}};b['ModalUtils']['confirm']=function(K,L,M){if(!b['ObjectUtils']['is'](K)||typeof L!='string')return;b['ModalUtils']['open'](K,{'text':L,'header':'Are\x20you\x20sure?','className':b['disCN']['modalconfirmmodal'],'scroller':![],'buttons':[{'contents':b['LanguageUtils']['LanguageStrings']['OKAY'],'close':!![],'color':'RED','click':typeof M=='function'?M:N=>{}},{'contents':b['LanguageUtils']['LanguageStrings']['CANCEL'],'close':!![]}]});};const r=b['ModuleUtils']['findByProperties']('MenuItem','MenuGroup');b['ContextMenuUtils']={};b['ContextMenuUtils']['open']=function(K,L,M){n['ContextMenuUtils']['openContextMenu'](L,function(N){return b['ReactUtils']['createElement'](x['LibraryComponents']['Menu'],{'navId':'bdfdb-context','onClose':b['LibraryModules']['ContextMenuUtils']['closeContextMenu'],'children':M});});};b['ContextMenuUtils']['close']=function(K){if(!b['ObjectUtils']['is'](K))return;let L=b['ReactUtils']['findOwner'](K,{'props':'closeContextMenu','up':!![]});if(b['ObjectUtils']['is'](L)&&L['props']&&typeof L['props']['closeContextMenu']=='function')L['props']['closeContextMenu']();else b['LibraryModules']['ContextMenuUtils']['closeContextMenu']();};b['ContextMenuUtils']['createItem']=function(K,L={}){if(!K)return null;else{if(b['ObjectUtils']['toArray'](r)['some'](M=>M==K))return b['ReactUtils']['createElement'](K,L);else return b['ReactUtils']['createElement'](r['MenuItem'],{'id':L['id'],'disabled':L['disabled'],'render':M=>{if(!L['state'])L['state']=b['ObjectUtils']['extract'](L,'checked','value');return b['ReactUtils']['createElement'](K,Object['assign'](L,M));}});}};b['ContextMenuUtils']['createItemId']=function(...K){return K['map'](L=>typeof L=='number'?L['toString']():L)['filter'](L=>typeof L=='string')['map'](L=>L['toLowerCase']()['replace'](/\s/,'-'))['join']('-');};b['ContextMenuUtils']['findItem']=function(K,L){if(!K||!b['ObjectUtils']['is'](L)||!L['label']&&!L['id'])return[null,-0x1];L['label']=L['label']&&[L['label']]['flat']()['filter'](O=>O);L['id']=L['id']&&[L['id']]['flat']()['filter'](O=>O);let M=b['ReactUtils']['findChild'](K,{'props':'navId'});if(M){for(let O in M['props']['children']){if(M['props']['children'][O]&&M['props']['children'][O]['type']==r['MenuGroup']){if(b['ArrayUtils']['is'](M['props']['children'][O]['props']['children'])){for(let P in M['props']['children'][O]['props']['children'])if(N(M['props']['children'][O]['props']['children'][P])){if(L['group'])return[M['props']['children'],parseInt(O)];else return[M['props']['children'][O]['props']['children'],parseInt(P)];}}else if(M['props']['children'][O]&&M['props']['children'][O]['props']){if(N(M['props']['children'][O]['props']['children'])){if(L['group'])return[M['props']['children'],parseInt(O)];else{M['props']['children'][O]['props']['children']=[M['props']['children'][O]['props']['children']];return[M['props']['children'][O]['props']['children'],0x0];}}else if(M['props']['children'][O]['props']['children']&&M['props']['children'][O]['props']['children']['props']&&b['ArrayUtils']['is'](M['props']['children'][O]['props']['children']['props']['children'])){for(let Q in M['props']['children'][O]['props']['children']['props']['children'])if(N(M['props']['children'][O]['props']['children']['props']['children'][Q])){if(L['group'])return[M['props']['children'],parseInt(O)];else return[M['props']['children'][O]['props']['children']['props']['children'],parseInt(Q)];}}}}else if(N(M['props']['children'][O]))return[M['props']['children'],parseInt(O)];}return[M['props']['children'],-0x1];}return[null,-0x1];function N(R){if(!R)return![];let S=R['stateNode']?R['stateNode']['props']:R['props'];if(!S)return![];return L['id']&&L['id']['some'](T=>S['id']==T)||L['label']&&L['label']['some'](T=>S['label']==T);}};b['TimeUtils']={};b['TimeUtils']['interval']=function(K,L,...M){if(typeof K!='function'||typeof L!='number'||L<0x1)return;else{let N=0x0,O=setInterval(P=>{b['TimeUtils']['suppress'](K,'Interval')(...[O,N++,M]['flat']());},L);return O;}};b['TimeUtils']['timeout']=function(K,L,...M){if(typeof K!='function')return;else if(typeof L!='number'||L<0x1){let N=setImmediate(O=>{b['TimeUtils']['suppress'](K,'Immediate')(...[N,M]['flat']());});return N;}else{let O=setTimeout(P=>{b['TimeUtils']['suppress'](K,'Timeout')(...[O,M]['flat']());},L);return O;}};b['TimeUtils']['clear']=function(...K){for(let L of K['flat'](0xa)['filter'](M=>M)){if(typeof L=='number'){clearInterval(L);clearTimeout(L);}else if(typeof L=='object')clearImmediate(L);}};b['TimeUtils']['suppress']=function(K,L,M){return function(...N){try{return K(...N);}catch(O){b['LogUtils']['error']((typeof L=='string'&&L||'')+'\x20'+O,M);}};};b['StringUtils']={};b['StringUtils']['htmlEscape']=function(K){let L=document['createElement']('div');L['innerText']=K;return L['innerHTML'];};b['StringUtils']['regEscape']=function(K){return typeof K=='string'&&K['replace'](/([\-\/\\\^\$\*\+\?\.\(\)\|\[\]\{\}])/g,'\x5c$1');};b['StringUtils']['insertNRST']=function(K){return typeof K=='string'&&K['replace'](/\\r/g,'\x0d')['replace'](/\\n/g,'\x0a')['replace'](/\\t/g,'\x09')['replace'](/\\s/g,'\x20');};b['StringUtils']['highlight']=function(K,L,M='',N=''){if(typeof K!='string'||!L||L['length']<0x1)return K;let O=0x0,P=K;b['ArrayUtils']['getAllIndexes'](K['toUpperCase'](),L['toUpperCase']())['forEach'](Q=>{let R=O*(M['length']+N['length']);Q=Q+R;let S=Q+L['length'];let T=[-0x1]['concat'](b['ArrayUtils']['getAllIndexes'](K['substring'](0x0,Q),'<'));let U=[-0x1]['concat'](b['ArrayUtils']['getAllIndexes'](K['substring'](0x0,Q),'>'));if(T[T['length']-0x1]>U[U['length']-0x1])return;K=K['substring'](0x0,Q)+M+K['substring'](Q,S)+N+K['substring'](S);O++;});return K||P;};b['StringUtils']['extractSelection']=function(K,L){if(typeof K!='string')return'';if(typeof L!='string')return K;let M=[],N=[],O=0x0,P=![],Q=![];for(let R of b['ArrayUtils']['getAllIndexes'](K,L[0x0]))if(!Q){while(R<=K['length']&&!Q){let S=L['slice'](M['filter'](T=>T!=undefined)['length']);if(!S&&M['length']-0x14<=L['length'])Q=!![];else for(let T in S)if(!Q&&!P){if(K[R]==S[T]){M[R]=S[T];N[R]=S[T];O=0x0;if(R==K['length'])Q=!![];}else{M[R]=null;N[R]=K[R];O++;if(O>0x4){M=[],N=[],O=0x0,P=!![];break;}}break;}P=![];R++;}}if(M['filter'](U=>U)['length']){let U=[]['concat'](M)['reverse'](),V=0x0,W=0x0;for(let X in M){if(M[X]==null)V=parseInt(X)+0x1;else break;}for(let Y in U){if(U[Y]==null)W=parseInt(Y)+0x1;else break;}return N['slice'](V,N['length']-W)['join']('');}else return K;};b['SlateUtils']={};b['SlateUtils']['isRichValue']=function(K){return b['ObjectUtils']['is'](K)&&n['SlateUtils']['deserialize']('')['constructor']['prototype']['isPrototypeOf'](K);};b['SlateUtils']['copyRichValue']=function(K,L){let M=n['SlateUtils']['deserialize'](K);if(b['SlateUtils']['isRichValue'](L)&&L['_map']&&L['_map']['_root']&&b['ArrayUtils']['is'](L['_map']['_root']['entries'])){for(let N in L['_map']['_root']['entries'])if(L['_map']['_root']['entries'][N][0x0]=='selection'){M['_map']['_root']['entries'][N]=L['_map']['_root']['entries'][N];break;}}return M;};b['SlateUtils']['hasOpenPlainTextCodeBlock']=function(K){let L=b['ReactUtils']['getValue'](K,'props.richValue');if(!b['SlateUtils']['isRichValue'](L))return![];let M=b['LibraryModules']['SlateSelectionUtils']['serializeSelection'](L['document'],{'start':{'key':L['document']['getFirstText']()['key'],'offset':0x0},'end':L['selection']['start']},'raw')['match'](/```/g);return M&&M['length']&&M['length']%0x2!=0x0;};b['SlateUtils']['getCurrentWord']=function(K){let L=b['ReactUtils']['getValue'](K,'props.richValue');if(!b['SlateUtils']['isRichValue'](L)||!L['selection']['isCollapsed']||b['SlateUtils']['hasOpenPlainTextCodeBlock'](K)||L['document']['text']['trim']()['length']==0x0)return{'word':null,'isAtStart':![]};if(K['props']['useSlate']){if(L['document']['text']['startsWith']('/giphy\x20')||L['document']['text']['startsWith']('/tenor\x20')){let R=L['document']['getNode'](L['selection']['start']['key']);if(R)return{'word':R['text']['substring'](0x0,L['selection']['start']['offset']),'isAtStart':!![]};}let M=L['document']['getNode'](L['selection']['start']['key']);if(M==null)return{'word':null,'isAtStart':![]};let N='',O=![];let P=L['selection']['start']['offset'];let Q=L['document']['getClosestBlock'](M['key']);while(!![]){if(--P<0x0){if(M=Q['getPreviousNode'](M['key'])==null){O=!![];break;}if(M['object']!=='text')break;P=M['text']['length']-0x1;}if(M['object']!=='text')break;let S=M['text'][P];if(/(\t|\s)/['test'](S))break;N=S+N;}return{'word':!N?null:N,'isAtStart':O&&Q['type']=='line'&&L['document']['nodes']['get'](0x0)===Q};}else{let T=b['ReactUtils']['findDOMNode'](K['ref']['current']);if(!Node['prototype']['isPrototypeOf'](T)||T['tagName']!='TEXTAREA'||!T['value']['length']||/\s/['test'](T['value']['slice'](T['selectionStart'],T['selectionEnd'])))return{'word':null,'isAtStart':!![]};else{if(T['selectionEnd']==T['value']['length']){let U=T['value']['split'](/\s/)['reverse']();return{'word':!U[0x0]?null:U[0x0],'isAtStart':U['length']>0x1};}else{let V=T['value']['split'](''),W='',X='',Y=![],Z=!![];for(let a0 in V){if(a0==T['selectionStart'])Y=!![];if(/\s/['test'](V[a0])){W='';Z=X['length']>0x0&&Z||![];Y=![];}else{W+=V[a0];if(Y)X=W;}}return{'word':!X?null:X,'isAtStart':Z};}}}};b['NumberUtils']={};b['NumberUtils']['formatBytes']=function(K,L){K=parseInt(K);if(isNaN(K)||K<0x0)return'0\x20Bytes';if(K==0x1)return'1\x20Byte';let M=Math['floor'](Math['log'](K)/Math['log'](0x400));return parseFloat((K/Math['pow'](0x400,M))['toFixed'](L<0x1?0x0:L>0x14?0x14:L||0x2))+'\x20'+['Bytes','KB','MB','GB','TB','PB','EB','ZB','YB'][M];};b['NumberUtils']['mapRange']=function(K,L,M){if(parseFloat(M)parseFloat(K[0x1]))return parseFloat(L[0x1]);else return parseFloat(L[0x0])+(parseFloat(M)-parseFloat(K[0x0]))*(parseFloat(L[0x1])-parseFloat(L[0x0]))/(parseFloat(K[0x1])-parseFloat(K[0x0]));};b['NumberUtils']['generateId']=function(K){K=b['ArrayUtils']['is'](K)?K:[];let L=Math['floor'](Math['random']()*0x2386f26fc10000);if(K['includes'](L))return b['NumberUtils']['generateId'](K);else{K['push'](L);return L;}};b['NumberUtils']['compareVersions']=function(K,L){if(!K||!L)return!![];K=K['toString']()['replace'](/["'`]/g,'')['split'](/,|\./g)['map'](O=>parseInt(O))['filter'](O=>(O||O==0x0)&&!isNaN(O));L=L['toString']()['replace'](/["'`]/g,'')['split'](/,|\./g)['map'](O=>parseInt(O))['filter'](O=>(O||O==0x0)&&!isNaN(O));var M=Math['max'](K['length'],L['length']);if(!M)return!![];if(K['length']>L['length']){var N=new Array(K['length']-L['length']);for(let O=0x0;OL[S])return!![];}return![];};b['NumberUtils']['getVersionDifference']=function(K,L){if(!K||!L)return![];K=K['toString']()['replace'](/["'`]/g,'')['split'](/,|\./g)['map'](Q=>parseInt(Q))['filter'](Q=>(Q||Q==0x0)&&!isNaN(Q));L=L['toString']()['replace'](/["'`]/g,'')['split'](/,|\./g)['map'](Q=>parseInt(Q))['filter'](Q=>(Q||Q==0x0)&&!isNaN(Q));var M=Math['max'](K['length'],L['length']);if(!M)return![];if(K['length']>L['length']){var N=new Array(K['length']-L['length']);for(let Q=0x0;Q0x12c?'stable':da>0xc8?'canary':'ptb';else K='stable';}else K='stable';}}b['DiscordUtils']['getBuilt']['built']=K;return K;}};b['DiscordUtils']['getVersion']=function(){if(b['DiscordUtils']['getBuilt']['version'])return b['DiscordUtils']['getBuilt']['version'];else{let K=null;try{K=m['electron']['remote']['app']['getVersion']();}catch(L){K='';}b['DiscordUtils']['getBuilt']['version']=K;return K;}};b['DiscordUtils']['isDevModeEnabled']=function(){return n['StoreChangeUtils']['get']('UserSettingsStore')['developerMode'];};b['DiscordUtils']['getTheme']=function(){return n['StoreChangeUtils']['get']('UserSettingsStore')['theme']=='dark'?b['disCN']['themedark']:b['disCN']['themelight'];};b['DiscordUtils']['getMode']=function(){return n['StoreChangeUtils']['get']('UserSettingsStore')['message_display_compact']?'compact':'cozy';};b['DiscordUtils']['getZoomFactor']=function(){let K=b['DOMUtils']['getRects'](document['querySelector'](b['dotCN']['appmount']));let L=Math['round'](0x64*window['outerWidth']/K['width']);let M=Math['round'](0x64*window['outerHeight']/K['height']);return L{N['onLoad'](...P);});if(typeof N['onClose']=='function')O['once']('closed',(...P)=>{N['onClose'](...P);});if(typeof O['removeMenu']=='function')O['removeMenu']();else O['setMenu'](null);O['loadURL'](L);O['executeJavaScriptSafe']=P=>{if(!O['isDestroyed']())O['webContents']['executeJavaScript']('(_\x20=>\x20{'+P+'})();');};K['browserWindows']['push'](O);return O;};b['WindowUtils']['close']=function(K){if(b['ObjectUtils']['is'](K)&&!K['isDestroyed']()&&K['isClosable']())K['close']();};b['WindowUtils']['closeAll']=function(K){K=K==b&&c||K;if(b['ObjectUtils']['is'](K)&&b['ArrayUtils']['is'](K['browserWindows']))while(K['browserWindows']['length'])b['WindowUtils']['close'](K['browserWindows']['pop']());};b['WindowUtils']['addListener']=function(K,L,M){K=K==b&&c||K;if(!b['ObjectUtils']['is'](K)||!L||typeof M!='function')return;b['WindowUtils']['removeListener'](K,L);for(let N of L['split']('\x20')){N=N['split']('.');let O=N['shift']();if(!O)return;let P=(N['join']('.')||'')+K['name'];if(!b['ArrayUtils']['is'](K['ipcListeners']))K['ipcListeners']=[];K['ipcListeners']['push']({'eventName':O,'namespace':P,'callback':M});m['electron']['ipcRenderer']['on'](O,M);}};b['WindowUtils']['removeListener']=function(K,L=''){K=K==b&&c||K;if(!b['ObjectUtils']['is'](K)||!b['ArrayUtils']['is'](K['ipcListeners']))return;if(L){for(let M of L['split']('\x20')){M=M['split']('.');let N=M['shift']();let O=(M['join']('.')||'')+K['name'];for(let P of K['ipcListeners']){let Q=[];if(P['eventName']==N&&P['namespace']==O){m['electron']['ipcRenderer']['off'](P['eventName'],P['callback']);Q['push'](P);}if(Q['length'])K['ipcListeners']=K['ipcListeners']['filter'](R=>{return Q['indexOf'](R)<0x0;});}}}else{for(let R of K['ipcListeners'])m['electron']['ipcRenderer']['off'](R['eventName'],R['callback']);K['ipcListeners']=[];}};b['BDUtils']={};b['BDUtils']['getPluginsFolder']=function(){if(m['process']['env']['injDir'])return m['path']['resolve'](m['process']['env']['injDir'],'plugins/');else switch(m['process']['platform']){case'win32':return m['path']['resolve'](m['process']['env']['appdata'],'BetterDiscord/plugins/');case'darwin':return m['path']['resolve'](m['process']['env']['HOME'],'Library/Preferences/BetterDiscord/plugins/');default:if(m['process']['env']['XDG_CONFIG_HOME'])return m['path']['resolve'](m['process']['env']['XDG_CONFIG_HOME'],'BetterDiscord/plugins/');else return m['path']['resolve'](m['process']['env']['HOME'],'.config/BetterDiscord/plugins/');}};b['BDUtils']['getThemesFolder']=function(){if(m['process']['env']['injDir'])return m['path']['resolve'](m['process']['env']['injDir'],'plugins/');else switch(m['process']['platform']){case'win32':return m['path']['resolve'](m['process']['env']['appdata'],'BetterDiscord/themes/');case'darwin':return m['path']['resolve'](m['process']['env']['HOME'],'Library/Preferences/BetterDiscord/themes/');default:if(m['process']['env']['XDG_CONFIG_HOME'])return m['path']['resolve'](m['process']['env']['XDG_CONFIG_HOME'],'BetterDiscord/themes/');else return m['path']['resolve'](m['process']['env']['HOME'],'.config/BetterDiscord/themes/');}};b['BDUtils']['isPluginEnabled']=function(K){if(!window['BdApi'])return null;else if(BdApi['Plugins']&&typeof BdApi['Plugins']['isEnabled']=='function')return BdApi['Plugins']['isEnabled'](K);else if(typeof BdApi['isPluginEnabled']=='function')return BdApi['isPluginEnabled'](K);};b['BDUtils']['enablePlugin']=function(K){if(!window['BdApi'])return;else if(BdApi['Plugins']&&typeof BdApi['Plugins']['enable']=='function')BdApi['Plugins']['enable'](K);else if(window['pluginModule'])window['pluginModule']['startPlugin'](K);};b['BDUtils']['disablePlugin']=function(K){if(!window['BdApi'])return;else if(BdApi['Plugins']&&typeof BdApi['Plugins']['disable']=='function')BdApi['Plugins']['disable'](K);else if(window['pluginModule'])window['pluginModule']['stopPlugin'](K);};b['BDUtils']['getPlugin']=function(K,L=![],M=![]){if(window['BdApi']&&!L||b['BDUtils']['isPluginEnabled'](K)){if(BdApi['Plugins']['get']&&typeof BdApi['Plugins']['get']=='function'){let N=BdApi['Plugins']['get'](K);if(M)return N?{'filename':m['fs']['existsSync'](m['path']['join'](b['BDUtils']['getPluginsFolder'](),K+'.plugin.js'))?K+'.plugin.js':null,'id':K,'name':K,'plugin':N}:null;else return N;}else if(window['bdplugins'])M?window['bdplugins'][K]:(window['bdplugins'][K]||{})['plugin'];}return null;};b['BDUtils']['isThemeEnabled']=function(K){if(!window['BdApi'])return null;else if(BdApi['Themes']&&typeof BdApi['Themes']['isEnabled']=='function')return BdApi['Themes']['isEnabled'](K);else if(typeof BdApi['isThemeEnabled']=='function')return BdApi['isThemeEnabled'](K);};b['BDUtils']['enableTheme']=function(K){if(!window['BdApi'])return;else if(BdApi['Themes']&&typeof BdApi['Themes']['enable']=='function')BdApi['Themes']['enable'](K);else if(window['themeModule'])window['themeModule']['enableTheme'](K);};b['BDUtils']['disableTheme']=function(K){if(!window['BdApi'])return;else if(BdApi['Themes']&&typeof BdApi['Themes']['disable']=='function')BdApi['Themes']['disable'](K);else if(window['themeModule'])window['themeModule']['disableTheme'](K);};b['BDUtils']['getTheme']=function(K,L=![]){if(window['BdApi']&&!L||b['BDUtils']['isThemeEnabled'](K)){if(BdApi['Themes']&&typeof BdApi['Themes']['get']=='function')return BdApi['Themes']['get'](K);else if(window['bdthemes'])window['bdthemes'][K];}return null;};let s=window['BdApi']&&!b['ArrayUtils']['is'](BdApi['settings']);b['BDUtils']['settingsIds']=s?{'automaticLoading':'fork-ps-5','coloredText':'bda-gs-7','normalizedClasses':'fork-ps-4','showToasts':'fork-ps-2'}:{'automaticLoading':'settings.addons.autoReload','coloredText':'settings.appearance.coloredText','normalizedClasses':'settings.general.classNormalizer','showToasts':'settings.general.showToasts'};b['BDUtils']['toggleSettings']=function(K,L){if(window['BdApi']&&typeof K=='string'){let M=K['split']('.');let N=b['BDUtils']['getSettings'](K);if(L===!![]){if(N===![])BdApi['enableSetting'](...M);}else if(L===![]){if(N===!![])BdApi['disableSetting'](...M);}else if(N===!![]||N===![])b['BDUtils']['toggleSettings'](K,!N);}};b['BDUtils']['getSettings']=function(K){if(!window['BdApi'])return{};if(typeof K=='string')return BdApi['isSettingEnabled'](...K['split']('.'));else return s?b['ReactUtils']['getValue'](BdApi['getBDData']('settings'),b['DiscordUtils']['getBuilt']()+'.settings'):BdApi['settings']['map'](L=>L['settings']['map'](M=>M['settings']['map'](N=>({'id':[L['id'],M['id'],N['id']]['join']('.'),'value':N['value']}))))['flat'](0xa)['reduce']((L,M)=>(L[M['id']]=M['value'],L),{});};var t={};t['BDFDB']={'BDFDBundefined':'BDFDB_undefined','badge':'badge-7R_W3s','bdaRepoEntry':'entry-9JnAPs','bdaRepoListHeader':'repoHeader-2KfNvH','bdaRepoListWrapper':'repoList-9JnAPs','cardInner':'inner-OP_8zd','cardWrapper':'card-rT4Wbb','charCounter':'counter-uAzbKp','changeLogModal':'changeLogModal-ny_dHC','collapseContainer':'container-fAVkOf','collapseContainerArrow':'arrow-uglXxc','collapseContainerCollapsed':'collapsed-2BUBZm','collapseContainerHeader':'header-2s6x-5','collapseContainerInner':'inner-TkGytd','collapseContainerMini':'container-fAVkOf\x20containerMini-_k6Rts','collapseContainerTitle':'title-ROsJi-','colorPicker':'colorPicker-h5sF8g','colorPickerAlpha':'alpha-VcPGeR','colorPickerAlphaCheckered':'alpha-checkered','colorPickerAlphaCursor':'alpha-cursor','colorPickerAlphaHorizontal':'alpha-horizontal','colorPickerGradient':'gradient-TJOYTr','colorPickerGradientCheckered':'gradient-checkered','colorPickerGradientCursor':'gradient-cursor','colorPickerGradientCursorEdge':'gradient-cursor-edge','colorPickerGradientCursorSelected':'gradient-cursor-selected','colorPickerGradientHorizontal':'gradient-horizontal','colorPickerGradientButton':'gradientButton-eBBuwD','colorPickerGradientButtonEnabled':'enabled-MypHME','colorPickerSwatches':'swatches-QxZw_N','colorPickerSwatchesDisabled':'disabled-2JgNxl','colorPickerSwatchSingle':'single-Fbb1wB','colorPickerSwatchSelected':'selected-f5IVXN','confirmModal':'confirmModal-t-WDWJ','dev':'dev-A7f2Rx','favButtonContainer':'favbutton-8Fzu45','guild':'guild-r3yAE_','guildLowerLeftBadge':'lowerLeftBadge-zr4T_9','guildUpperLeftBadge':'upperLeftBadge-e35IpL','hasBadge':'hasBadge-4rT8_u','hotkeyResetButton':'resetButton-hI9Ax7','hotkeyWrapper':'recorder-can0vx','inputNumberButton':'button-J9muv5','inputNumberButtonDown':'down-cOY7Qp\x20button-J9muv5','inputNumberButtonUp':'up-mUs_72\x20button-J9muv5','inputNumberButtons':'buttons-our3p-','inputNumberWrapper':'numberInputWrapper-j4svZS','inputNumberWrapperDefault':'numberInputWrapperDefault-gRxcuK\x20numberInputWrapper-j4svZS','inputNumberWrapperMini':'numberInputWrapperMini-wtUU31\x20numberInputWrapper-j4svZS','loadingIcon':'loadingIcon-cOYMPl','loadingIconWrapper':'loadingIconWrapper-PsVJ9m','overflowEllipsis':'ellipsis-qlo9sA','paginationList':'list-PIKebU','paginationListAlphabet':'alphabet-2ANo0x','paginationListAlphabetChar':'alphabetChar-bq-8Go','paginationListAlphabetCharDisabled':'disabled-XmhCq2','paginationListContent':'listContent-aG3Fq8','paginationListPagination':'pagination-ko4zZk','popoutWrapper':'popout-xwjvsX','quickSelectWrapper':'quickSelectWrapper-UCfTKz','menuItemHint':'hint-BK71lM','modalHeaderHasSibling':'hasSiblings-fRyjyl','modalNoScroller':'noScroller-YgPpF3','modalTabContent':'tabContent-nZ-1U5','modalTabContentOpen':'open-yICTYu','modalSubInner':'inner-t84Frz','modalWrapper':'modal-6GHvdM','noticeWrapper':'noticeWrapper-8z511t','selectWrapper':'selectWrapper-yPjeij','settingsGuild':'guild-J3Egt5','settingsGuildDisabled':'disabled-b2o83O','settingsPanel':'settingsPanel-w2ySNR','settingsPanelHeader':'settingsHeader-7g994w','settingsPanelHeaderButton':'button-ff4a_z','settingsPanelHeaderControls':'controls-g2WW5_','settingsPanelInner':'settingsInner-zw1xAY','settingsPanelList':'settingsList-eZjkXj','settingsPanelTitle':'title-GTF_8J','settingsTableCard':'settingsTableCard-628t52','settingsTableCardConfigs':'settingsTableCardConfigs-w5X9-Z','settingsTableCardLabel':'settingsTableCardLabel-MElgIg','settingsTableHeaders':'settingsTableHeaders-WKzw9_','settingsTableHeaderVertical':'headerVertical-4MNxqk','settingsTableList':'settingsTableList-f6sW2y','sliderBubble':'bubble-3we2di','supporter':'supporter-Z3FfwL','supporterCustom':'customSupporter-thxL4U','svgIcon':'icon-GhnIRB','svgIconWrapper':'iconWrapper-g20jFn','tabBarContainerBottom':'bottom-b8sdfs','table':'table-moqjM0','tableBodyCell':'bodyCell-dQam9V','tableHeader':'header-g67q9_','tableHeaderCell':'headerCell-T6Fo3K','tableHeaderCellSorted':'headerCellSorted-FMjMWK','tableHeaderSortIcon':'sortIcon-WZjMja','tableRow':'row-_9Ehcp','tableStickyHeader':'stickyHeader-JabwjW\x20header-g67q9_','textScroller':'textScroller-dc9_kz','themedPopout':'themedPopout-1TrfdI','tooltipCustom':'tooltipCustom-hH39_Z','userInfoDate':'date-YN6TCS'};t['BDrepo']={'bdAddonCard':'bd-addon-card','bdButton':'bd-button','bdaAuthor':'bd-author\x20author\x20bda-author','bdaControls':'bd-controls\x20bd-addon-controls\x20bda-controls','bdaControlsButton':'bd-addon-button','bdaDescription':'bd-description\x20bd-addon-description\x20bda-description','bdaDescriptionWrap':'bd-description-wrap\x20bda-description-wrap','bdaFooter':'bd-footer\x20bd-card-footer\x20bda-footer','bdaHeader':'bd-addon-header\x20bda-header','bdaHeaderTitle':'bd-title\x20bd-card-title\x20bda-header-title','bdaLink':'bd-link\x20bda-link','bdaLinks':'bd-links\x20bd-addon-links\x20bda-links','bdaName':'bd-name\x20name\x20bda-name','bdaSettingsButton':'bd-button\x20bd-button-addon-settings\x20bd-settings-button\x20bda-settings-button','bdaSlist':'bda-slist\x20bd-addon-list','bdaVersion':'bd-version\x20version\x20bda-version','bdGuild':'bd-guild','bdGuildAnimatable':'bd-animatable','bdGuildAudio':'bd-audio','bdGuildSelected':'bd-selected','bdGuildSeparator':'bd-guild-separator','bdGuildUnread':'bd-unread','bdGuildVideo':'bd-video','bdIcon':'bd-icon','bdPillSelected':'bd-selected','bdPillUnread':'bd-unread','bdPfbtn':'bd-pfbtn','bdSwitch':'bd-switch','bdSwitchChecked':'bd-switch-checked','bdSwitchInner':'bd-checkbox','bdUpdatebtn':'bd-updatebtn','settings':'plugin-settings','settingsOpen':'settings-open','settingsClosed':'settings-closed','switch':'ui-switch','switchCheckbox':'ui-switch-checkbox','switchChecked':'checked','switchItem':'ui-switch-item','switchWrapper':'ui-switch-wrapper'};t['BadgesEverywhere']={'badge':'badge-7CsdQq','badges':'badges-XRnWAp','badgesChat':'badgesChat-f_cbR8','badgesInner':'inner-dA0J42','badgesList':'badgesList-Aw_p52','badgesPopout':'badgesPopout-srZ8EX','badgesSettings':'badgesSettings-ychoGn','indicator':'indicator-cY1-b4','indicatorInner':'indicatorInner-08W8Jl','mini':'mini-g-JPgX','size17':'size17-2GsONg','size21':'size21-Y634b3','size22':'size22-AJj9xV','size24':'size24-NlR6be'};t['BetterNsfwTag']={'nsfwTag':'nsfwTag-666omg'};t['ChatFilter']={'blocked':'blocked-jUhayi','blockedStamp':'blockedStamp-ijVeNn','censored':'censored-UYfeYg','censoredStamp':'censoredStamp-fb2cYb'};t['CharCounter']={'charCounter':'charCounter-7fw40k','chatCounter':'chatCounter-XOMPsh','counterAdded':'charCounterAdded-zz9O4t','editCounter':'editCounter-pNT1Xe','nickCounter':'nickCounter-tJrO_4','popoutNoteCounter':'popoutNoteCounter-62U4Rh','profileNoteCounter':'profileNoteCounter-p0fWA_','uploadCounter':'uploadCounter-iEGQQk'};t['CreationDate']={'date':'creationDate-CJwdKT'};t['DisplayLargeMessages']={'injectButton':'injectButton-8eKqGu'};t['DisplayServersAsChannels']={'badge':'badge-fxFrUP','name':'name-z5133D','styled':'styledGuildsAsChannels-DNHtg_'};t['EmojiStatistics']={'statisticsButton':'statisticsButton-nW2KoM','amountCell':'amountCell-g_W6Rx','iconCell':'iconCell--wniOu','nameCell':'nameCell-xyXENZ'};t['FriendNotifications']={'friendsOnline':'friendsOnline-2JkivW'};t['GoogleTranslateOption']={'reverseButton':'reverseButton-5S47qV','translateButton':'translateButton-DhP9x8','translated':'translated-5YO8i3','translating':'translating-Yi-YxC'};t['ImageGallery']={'details':'details-9dkFPc','detailsLabel':'label-mrlccN','detailsWrapper':'detailsWrapper-TE1mu5','gallery':'gallery-JViwKR','icon':'icon-QY6cR4','next':'next-SHEZrz','previous':'previous-xsNq6B','sibling':'sibling-6vI7Pu'};t['ImageZoom']={'backdrop':'lenseBackdrop-yEm7Om','lense':'zoomLense-uOK8xV','modal':'imageModal-8J0ttB','operations':'operations-3V47CY'};t['JoinedAtDate']={'date':'joinedAtDate-IawR02'};t['LastMessageDate']={'date':'lastMessageDate-ocEw13'};t['OldTitleBar']={'oldTitleBarEnabled':'oldTitleBarEnabled-D8ppJQ','settingsToolbar':'settingsToolbar-wu4yfQ','toolbar':'toolbar-hRzFw-'};t['PinDMs']={'dragPreview':'dragPreview-nXiByA','dmChannelPinned':'pinned-0lM4wD','dmChannelPlaceholder':'placeholder-7bhR5s','pinnedChannelsHeaderAmount':'headerAmount-_-7GrS','pinnedChannelsHeaderArrow':'pinnedChannelsHeaderArrow-44rrTz','pinnedChannelsHeaderCollapsed':'collapsed-3w_-ff','pinnedChannelsHeaderColored':'colored-oIzG5s','pinnedChannelsHeaderContainer':'pinnedChannelsHeaderContainer-89Gjv4','recentPinned':'pinned-jHvFrr','recentPlaceholder':'placeholder-Uff-gH','unpinButton':'unpinButton-z3-UVO','unpinIcon':'unpinIcon-79ZnEr'};t['ReadAllNotificationsButton']={'button':'button-Jt-tIg','frame':'frame-oXWS21','innerFrame':'innerFrame-8Hg64E'};t['ServerFolders']={'dragPreview':'dragPreview-nXiByA','guildPlaceholder':'placeholder-7bhR5s','folderContent':'content-Pph8t6','folderContentClosed':'closed-j55_T-','folderContentIsOpen':'folderContentIsOpen-zz6FgW','iconSwatch':'iconSwatch-_78Ghj','iconSwatchInner':'iconInner-aOY-qk','iconSwatchPreview':'preview-Bbg_24','iconSwatchSelected':'selected-P5oePO'};t['ShowImageDetails']={'details':'details-1t6Zms','detailsAdded':'detailsAdded-SAy48f'};t['SpellCheck']={'error':'error-k9z2IV','overlay':'spellCheckOverlay-cNSap5'};t['SpotifyControls']={'bar':'bar-g2ZMIm','barGabber':'grabber-7sd5f5','barFill':'barFill-Dhkah7','barText':'barText-lmqc5O','buttonActive':'active-6TsW-_','container':'container-6sXIoE','containerInner':'inner-WRV6k5','containerMaximized':'maximized-vv2Wr0','containerWithTimeline':'withTimeline-824fT_','cover':'cover-SwJ-ck','coverMaximizer':'maximizer-RVu85p','coverWrapper':'coverWrapper-YAplwJ','details':'details-ntX2k5','interpret':'interpret-F93iqP','song':'song-tIdBpF','timeline':'timeline-UWmgAx','volumeSlider':'volumeSlider-sR5g00'};t['TimedLightDarkMode']={'dateGrabber':'dateGrabber-QrRkIX','timerGrabber':'timerGrabber-zpRAIk','timerSettings':'timerSettings-wkvEfF'};t['TopRolesEverywhere']={'badgeStyle':'badgeStyle-tFiEQ8','chatTag':'chatTag-Y-5TDc','memberTag':'memberTag-QVWzGc','roleStyle':'roleStyle-jQ7KI2','tag':'tag-wWVHyf'};t['NotFound']={'_':'','badgeWrapper':'wrapper-232cHJ','channelPanelTitle':'title-eS5yk3','emoji':'emoji','guildChannels':'container-PNkimc','highlight':'highlight','hoverCardButton':'button-2CgfFz','loginScreen':'wrapper-3Q5DdO','mention':'mention','mentionInteractive':'interactive','mentionWrapper':'wrapper-3WhCwL','nameContainerNameContainer':'container-2ax-kl','hueCursor':'hue-cursor','hueHorizontal':'hue-horizontal','hueVertical':'hue-vertical','saturationBlack':'saturation-black','saturationColor':'saturation-color','saturationCursor':'saturation-cursor','saturationWhite':'saturation-white','splashBackground':'splashBackground-1FRCko','stopAnimations':'stop-animations','subtext':'subtext-3CDbHg','themeDark':'theme-dark','themeLight':'theme-light','themeUndefined':'theme-undefined','voiceDraggable':'draggable-1KoBzC'};t['ColorPicker']={'colorPickerCustom':'colorPickerCustom-2CWBn2','colorPickerDropper':'colorPickerDropper-3c2mIf','colorPickerDropperFg':'colorPickerDropperFg-3jYKWI','colorPickerRow':'colorPickerRow-1LgLnl','colorPickerSwatch':'colorPickerSwatch-5GX3Ve','custom':'custom-2SJn4n','customColorPickerInput':'customColorPickerInput-14pB0r','default':'default-cS_caM','disabled':'disabled-1C4eHl','input':'input-GfazGc','noColor':'noColor-1pdBDm'};t['ColorPickerInner']={'hue':'hue-13HAGb','saturation':'saturation-1FDvtn','wrapper':'wrapper-2AQieU'};t['AccountDetails']=b['ModuleUtils']['findByProperties']('usernameContainer','container');t['AccountDetailsButtons']=b['ModuleUtils']['findByProperties']('button','enabled','disabled');t['Anchor']=b['ModuleUtils']['findByProperties']('anchor','anchorUnderlineOnHover');t['AnimationContainer']=b['ModuleUtils']['findByProperties']('animatorLeft','didRender');t['AppBase']=b['ModuleUtils']['findByProperties']('container','base');t['AppInner']=b['ModuleUtils']['findByProperties']('app','layers');t['AppMount']=b['ModuleUtils']['findByProperties']('appMount');t['ApplicationStore']=b['ModuleUtils']['findByProperties']('applicationStore','navigation');t['AppOuter']=b['ModuleUtils']['find'](K=>typeof K['app']=='string'&&Object['keys'](K)['length']==0x1);t['AuditLog']=b['ModuleUtils']['findByProperties']('auditLog');t['AuthBox']=b['ModuleUtils']['findByProperties']('authBox');t['Autocomplete']=b['ModuleUtils']['findByProperties']('autocomplete','autocompleteRow');t['Avatar']=b['ModuleUtils']['findByProperties']('avatar','mask','wrapper');t['AvatarIcon']=b['ModuleUtils']['findByProperties']('iconActiveLarge','iconActiveMedium');t['Backdrop']=b['ModuleUtils']['findByProperties']('backdrop','backdropWithLayer');t['Badge']=b['ModuleUtils']['findByProperties']('numberBadge','textBadge','iconBadge');t['BotTag']=b['ModuleUtils']['findByProperties']('botTag','botTagInvert');t['Button']=b['ModuleUtils']['findByProperties']('colorBlack','button');t['CallCurrent']=b['ModuleUtils']['findByProperties']('wrapper','fullScreen');t['CallDetails']=b['ModuleUtils']['findByProperties']('container','hotspot');t['CallIncoming']=b['ModuleUtils']['findByProperties']('incomingCall','container')||b['ModuleUtils']['findByProperties']('wrapper','mainChannelInfo');t['CallIncomingInner']=b['ModuleUtils']['findByProperties']('incomingCallInner','members');t['Card']=b['ModuleUtils']['findByProperties']('card','cardBrand');t['CardStatus']=b['ModuleUtils']['findByProperties']('reset','error','card');t['Category']=b['ModuleUtils']['findByProperties']('wrapper','children','muted');t['CategoryContainer']=b['ModuleUtils']['findByProperties']('addButtonIcon','containerDefault');t['ChangeLog']=b['ModuleUtils']['findByProperties']('added','fixed','improved','progress');t['Channel']=b['ModuleUtils']['findByProperties']('wrapper','content','modeSelected');t['ChannelContainer']=b['ModuleUtils']['findByProperties']('actionIcon','containerDefault');t['ChannelLimit']=b['ModuleUtils']['findByProperties']('users','total','wrapper');t['ChannelTextArea']=b['ModuleUtils']['findByProperties']('textArea','buttons');t['ChannelTextAreaAttachButton']=b['ModuleUtils']['findByProperties']('attachButton','attachWrapper');t['ChannelTextAreaButton']=b['ModuleUtils']['findByProperties']('buttonWrapper','active');t['ChannelTextAreaCharCounter']=b['ModuleUtils']['findByProperties']('characterCount','error');t['ChannelTextAreaSlate']=b['ModuleUtils']['findByProperties']('slateContainer','placeholder');t['ChatWindow']=b['ModuleUtils']['findByProperties']('chat','channelTextArea');t['Checkbox']=b['ModuleUtils']['findByProperties']('checkboxWrapper','round');t['CtaVerification']=b['ModuleUtils']['findByProperties']('attendeeCTA','verificationNotice');t['Cursor']=b['ModuleUtils']['findByProperties']('cursorDefault','userSelectNone');t['CustomStatusIcon']=b['ModuleUtils']['findByProperties']('textRuler','emoji','icon');t['DmAddPopout']=b['ModuleUtils']['findByProperties']('popout','searchBarComponent');t['DmAddPopoutItems']=b['ModuleUtils']['findByProperties']('friendSelected','friendWrapper');t['DownloadLink']=b['ModuleUtils']['findByProperties']('downloadLink');t['Embed']=b['ModuleUtils']['findByProperties']('embed','embedAuthorIcon');t['EmbedActions']=b['ModuleUtils']['findByProperties']('iconPlay','iconWrapperActive');t['Emoji']=b['ModuleUtils']['find'](K=>typeof K['emoji']=='string'&&Object['keys'](K)['length']==0x1);t['EmojiButton']=b['ModuleUtils']['findByProperties']('emojiButton','sprite');t['EmojiInput']=b['ModuleUtils']['findByProperties']('inputContainer','emojiButton');t['EmojiPicker']=b['ModuleUtils']['findByProperties']('emojiPicker','inspector');t['EmojiPickerDiversitySelector']=b['ModuleUtils']['findByProperties']('diversityEmojiItemImage','diversitySelectorPopout');t['EmojiPickerItem']=b['ModuleUtils']['findByProperties']('emojiSpriteImage');t['EmojiPickerInspector']=b['ModuleUtils']['findByProperties']('inspector','glyphEmoji');t['ExpressionPicker']=b['ModuleUtils']['findByProperties']('contentWrapper','navButton','navList');t['File']=b['ModuleUtils']['findByProperties']('downloadButton','fileNameLink');t['Flex']=b['ModuleUtils']['findByProperties']('alignBaseline','alignCenter');t['FlexChild']=b['ModuleUtils']['findByProperties']('flexChild','flex');t['FlowerStar']=b['ModuleUtils']['findByProperties']('flowerStarContainer','flowerStar');t['Focusable']=b['ModuleUtils']['findByProperties']('focusable');t['FormText']=b['ModuleUtils']['findByProperties']('description','modeDefault');t['Game']=b['ModuleUtils']['findByProperties']('game','gameName');t['GameIcon']=b['ModuleUtils']['findByProperties']('gameIcon','small','xsmall');t['GameLibraryTable']=b['ModuleUtils']['findByProperties']('stickyHeader','emptyStateText');t['GifFavoriteButton']=b['ModuleUtils']['findByProperties']('gifFavoriteButton','showPulse');t['GoLiveDetails']=b['ModuleUtils']['findByProperties']('panel','gameWrapper');t['Guild']=b['ModuleUtils']['findByProperties']('wrapper','lowerBadge','svg');t['GuildChannels']=b['ModuleUtils']['findByProperties']('positionedContainer','unreadBar');t['GuildDiscovery']=b['ModuleUtils']['findByProperties']('pageWrapper','guildList');t['GuildDm']=b['ModuleUtils']['find'](K=>typeof K['pill']=='string'&&Object['keys'](K)['length']==0x1);t['GuildEdges']=b['ModuleUtils']['findByProperties']('wrapper','edge','autoPointerEvents');t['GuildFolder']=b['ModuleUtils']['findByProperties']('folder','expandedFolderIconWrapper');t['GuildHeader']=b['ModuleUtils']['findByProperties']('header','name','bannerImage');t['GuildHeaderButton']=b['ModuleUtils']['findByProperties']('button','open');t['GuildIcon']=b['ModuleUtils']['findByProperties']('acronym','selected','wrapper');t['GuildInvite']=b['ModuleUtils']['findByProperties']('wrapper','guildIconJoined');t['GuildSettingsBanned']=b['ModuleUtils']['findByProperties']('bannedUser','bannedUserAvatar');t['GuildSettingsEmoji']=b['ModuleUtils']['findByProperties']('emojiRow','emojiAliasPlaceholder');t['GuildSettingsInvite']=b['ModuleUtils']['findByProperties']('countdownColumn','inviteSettingsInviteRow');t['GuildSettingsMember']=b['ModuleUtils']['findByProperties']('member','membersFilterPopout');t['GuildSettingsRoles']=b['ModuleUtils']['findByProperties']('buttonWrapper','addRoleIcon');t['GuildServer']=b['ModuleUtils']['findByProperties']('blobContainer','pill');t['GuildsItems']=b['ModuleUtils']['findByProperties']('guildSeparator','guildsError');t['GuildsWrapper']=b['ModuleUtils']['findByProperties']('scroller','unreadMentionsBar','wrapper');t['HeaderBar']=b['ModuleUtils']['findByProperties']('container','children','toolbar');t['HeaderBarExtras']=b['ModuleUtils']['findByProperties']('headerBarLoggedOut','search');t['HeaderBarSearch']=b['ModuleUtils']['findByProperties']('search','searchBar','open');t['HeaderBarTopic']=b['ModuleUtils']['findByProperties']('topic','expandable','content');t['HomeIcon']=b['ModuleUtils']['findByProperties']('homeIcon');t['HotKeyRecorder']=b['ModuleUtils']['findByProperties']('editIcon','recording');t['HoverCard']=b['ModuleUtils']['findByProperties']('card','active');t['IconDirection']=b['ModuleUtils']['findByProperties']('directionDown','directionUp');t['ImageWrapper']=b['ModuleUtils']['findByProperties']('clickable','imageWrapperBackground');t['InviteModal']=b['ModuleUtils']['findByProperties']('inviteRow','modal');t['Item']=b['ModuleUtils']['findByProperties']('item','side','header');t['ItemRole']=b['ModuleUtils']['findByProperties']('role','dragged');t['ItemLayerContainer']=b['ModuleUtils']['findByProperties']('layer','layerContainer');t['Input']=b['ModuleUtils']['findByProperties']('inputMini','inputDefault');t['LayerModal']=b['ModuleUtils']['findByProperties']('root','small','medium');t['Layers']=b['ModuleUtils']['findByProperties']('layer','layers');t['LiveTag']=b['ModuleUtils']['findByProperties']('liveLarge','live');t['LoadingScreen']=b['ModuleUtils']['findByProperties']('container','problemsText','problems');t['Margins']=b['ModuleUtils']['findByProperties']('marginBottom4','marginCenterHorz');t['Menu']=b['ModuleUtils']['findByProperties']('menu','styleFlexible','item');t['MenuReactButton']=b['ModuleUtils']['findByProperties']('wrapper','icon','focused');t['MenuSlider']=b['ModuleUtils']['findByProperties']('slider','sliderContainer');t['Member']=b['ModuleUtils']['findByProperties']('member','ownerIcon');t['MembersThreads']=b['ModuleUtils']['findByProperties']('tabBar','thread');t['MembersWrap']=b['ModuleUtils']['findByProperties']('membersWrap','membersGroup');t['Message']=b['ModuleUtils']['findByProperties']('message','mentioned');t['MessageAccessory']=b['ModuleUtils']['findByProperties']('embedWrapper','gifFavoriteButton');t['MessageBlocked']=b['ModuleUtils']['findByProperties']('blockedMessageText','expanded');t['MessageBody']=b['ModuleUtils']['findByProperties']('markupRtl','edited');t['MessageDivider']=b['ModuleUtils']['findByProperties']('isUnread','divider');t['MessageElements']=b['ModuleUtils']['findByProperties']('messageGroupBlockedBtn','dividerRed');t['MessageFile']=b['ModuleUtils']['findByProperties']('cancelButton','filenameLinkWrapper');t['MessageLocalBot']=b['ModuleUtils']['find'](K=>typeof K['localBotMessage']=='string'&&Object['keys'](K)['length']==0x1);t['MessageMarkup']=b['ModuleUtils']['findByProperties']('markup');t['MessageOperations']=b['ModuleUtils']['find'](K=>typeof K['operations']=='string'&&Object['keys'](K)['length']==0x1);t['MessageReactions']=b['ModuleUtils']['findByProperties']('reactions','reactionMe');t['MessageReactionsModal']=b['ModuleUtils']['findByProperties']('reactor','reactionSelected');t['MessageSystem']=b['ModuleUtils']['findByProperties']('container','actionAnchor');t['MessageToolbar']=b['ModuleUtils']['findByProperties']('container','icon','isHeader');t['MessageToolbarItems']=b['ModuleUtils']['findByProperties']('wrapper','button','separator');t['MessagesPopout']=b['ModuleUtils']['findByProperties']('messagesPopoutWrap','jumpButton');t['MessagesPopoutButtons']=b['ModuleUtils']['findByProperties']('secondary','tertiary','button');t['MessagesPopoutTabBar']=b['ModuleUtils']['findByProperties']('header','tabBar','active');t['MessagesWelcome']=b['ModuleUtils']['findByProperties']('emptyChannelIcon','description','header');t['MessagesWrap']=b['ModuleUtils']['findByProperties']('messagesWrapper','messageGroupBlocked');t['Modal']=b['ModuleUtils']['findByProperties']('modal','sizeLarge');t['ModalDivider']=b['ModuleUtils']['find'](K=>typeof K['divider']=='string'&&Object['keys'](K)['length']==0x1);t['ModalItems']=b['ModuleUtils']['findByProperties']('guildName','checkboxContainer');t['ModalMiniContent']=b['ModuleUtils']['find'](K=>typeof K['modal']=='string'&&typeof K['content']=='string'&&Object['keys'](K)['length']==0x2);t['ModalWrap']=b['ModuleUtils']['find'](K=>typeof K['modal']=='string'&&typeof K['inner']=='string'&&Object['keys'](K)['length']==0x2);t['NameContainer']=b['ModuleUtils']['findByProperties']('nameAndDecorators','name');t['NameTag']=b['ModuleUtils']['findByProperties']('bot','nameTag');t['NitroStore']=b['ModuleUtils']['findByProperties']('applicationStore','marketingHeader');t['NoteTextarea']=b['ModuleUtils']['find'](K=>typeof K['textarea']=='string'&&Object['keys'](K)['length']==0x1);t['Notice']=b['ModuleUtils']['findByProperties']('notice','noticeFacebook');t['Peoples']=b['ModuleUtils']['findByProperties']('peopleColumn','tabBar');t['PictureInPicture']=b['ModuleUtils']['findByProperties']('pictureInPicture','pictureInPictureWindow');t['PillWrapper']=b['ModuleUtils']['find'](K=>typeof K['item']=='string'&&typeof K['wrapper']=='string'&&Object['keys'](K)['length']==0x2);t['PrivateChannel']=b['ModuleUtils']['findByProperties']('channel','closeButton');t['PrivateChannelList']=b['ModuleUtils']['findByProperties']('privateChannels','searchBar');t['PrivateChannelListScroller']=b['ModuleUtils']['findByProperties']('scroller','empty');t['Popout']=b['ModuleUtils']['findByProperties']('popout','arrowAlignmentTop');t['PopoutActivity']=b['ModuleUtils']['findByProperties']('ellipsis','activityActivityFeed');t['QuickMessage']=b['ModuleUtils']['find'](K=>typeof K['input']=='string'&&Object['keys'](K)['length']==0x1);t['QuickSelect']=b['ModuleUtils']['findByProperties']('quickSelectArrow','selected');t['QuickSwitch']=b['ModuleUtils']['findByProperties']('resultFocused','guildIconContainer');t['QuickSwitchWrap']=b['ModuleUtils']['findByProperties']('container','miscContainer');t['Reactions']=b['ModuleUtils']['findByProperties']('reactionBtn','reaction');t['RecentMentions']=b['ModuleUtils']['findByProperties']('recentMentionsPopout');t['RecentMentionsHeader']=b['ModuleUtils']['findByProperties']('channelName','channelHeader','dmIcon');t['Role']=b['ModuleUtils']['findByProperties']('roleCircle','roleName','roleRemoveIcon');t['Scrollbar']=b['ModuleUtils']['findByProperties']('scrollbar','scrollbarGhost');t['Scroller']=b['ModuleUtils']['findByProperties']('scrollerBase','none','fade');t['ScrollerOld']=b['ModuleUtils']['findByProperties']('scrollerThemed','scroller');t['SearchBar']=b['ModuleUtils']['findByProperties']('clear','container','pointer');t['SearchPopout']=b['ModuleUtils']['findByProperties']('datePicker','searchResultChannelIconBackground');t['SearchPopoutWrap']=b['ModuleUtils']['findByProperties']('container','queryContainer');t['SearchResults']=b['ModuleUtils']['findByProperties']('noResults','searchResultsWrap');t['SearchResultsElements']=b['ModuleUtils']['findByProperties']('resultsBlocked','channelSeparator');t['SearchResultsPagination']=b['ModuleUtils']['findByProperties']('paginationButton','pagination');t['SearchResultsMessage']=b['ModuleUtils']['findByProperties']('after','messageGroupCozy');t['Select']=b['ModuleUtils']['findByProperties']('select','error','errorMessage');t['SettingsCloseButton']=b['ModuleUtils']['findByProperties']('closeButton','keybind');t['SettingsItems']=b['ModuleUtils']['findByProperties']('dividerMini','note');t['SettingsTable']=b['ModuleUtils']['findByProperties']('headerOption','headerName');t['SettingsWindow']=b['ModuleUtils']['findByProperties']('contentRegion','standardSidebarView');t['SettingsWindowScroller']=b['ModuleUtils']['findByProperties']('sidebarScrollable','content','scroller');t['Slider']=b['ModuleUtils']['findByProperties']('slider','grabber');t['Spoiler']=b['ModuleUtils']['findByProperties']('spoilerContainer','hidden');t['SpoilerEmbed']=b['ModuleUtils']['findByProperties']('hiddenSpoilers','spoiler');t['Switch']=b['ModuleUtils']['findByProperties']('switchDisabled','valueChecked');t['Table']=b['ModuleUtils']['findByProperties']('stickyHeader','sortIcon');t['Text']=b['ModuleUtils']['findByProperties']('defaultColor','defaultMarginh1');t['TextColor']=b['ModuleUtils']['findByProperties']('colorStandard','colorMuted','colorError');t['TextColor2']=b['ModuleUtils']['findByProperties']('muted','wrapper','base');t['TextSize']=b['ModuleUtils']['findByProperties']('size10','size14','size20');t['TextStyle']=b['ModuleUtils']['findByProperties']('strikethrough','underline','bold');t['Tip']=b['ModuleUtils']['findByProperties']('pro','inline');t['Title']=b['ModuleUtils']['findByProperties']('title','size18');t['TitleBar']=b['ModuleUtils']['findByProperties']('titleBar','wordmark');t['Tooltip']=b['ModuleUtils']['findByProperties']('tooltip','tooltipTop');t['TooltipGuild']=b['ModuleUtils']['findByProperties']('rowIcon','rowGuildName');t['Typing']=b['ModuleUtils']['findByProperties']('cooldownWrapper','typing');t['UnreadBar']=b['ModuleUtils']['findByProperties']('active','bar','unread');t['UploadModal']=b['ModuleUtils']['findByProperties']('uploadModal','bgScale');t['UserInfo']=b['ModuleUtils']['findByProperties']('userInfo','discordTag');t['UserPopout']=b['ModuleUtils']['findByProperties']('userPopout','headerPlaying');t['UserProfile']=b['ModuleUtils']['findByProperties']('topSectionNormal','tabBarContainer');t['Video']=b['ModuleUtils']['findByProperties']('video','fullScreen');t['VoiceChannel']=b['ModuleUtils']['findByProperties']('avatarSpeaking','voiceUser');t['VoiceChannelList']=b['ModuleUtils']['findByProperties']('list','collapsed');t['VoiceDetails']=b['ModuleUtils']['findByProperties']('container','customStatusContainer');t['VoiceDetailsPing']=b['ModuleUtils']['findByProperties']('rtcConnectionQualityBad','rtcConnectionQualityFine');t['WebhookCard']=b['ModuleUtils']['findByProperties']('pulseBorder','copyButton');b['DiscordClassModules']=Object['assign']({},t);var u={'_bdguild':['BDrepo','bdGuild'],'_bdguildanimatable':['BDrepo','bdGuildAnimatable'],'_bdguildaudio':['BDrepo','bdGuildAudio'],'_bdguildselected':['BDrepo','bdGuildSelected'],'_bdguildseparator':['BDrepo','bdGuildSeparator'],'_bdguildunread':['BDrepo','bdGuildUnread'],'_bdguildvideo':['BDrepo','bdGuildVideo'],'_bdpillselected':['BDrepo','bdPillSelected'],'_bdpillunread':['BDrepo','bdPillUnread'],'_betternsfwtagtag':['BetterNsfwTag','nsfwTag'],'_badgeseverywherebadge':['BadgesEverywhere','badge'],'_badgeseverywherebadges':['BadgesEverywhere','badges'],'_badgeseverywherebadgeschat':['BadgesEverywhere','badgesChat'],'_badgeseverywherebadgesinner':['BadgesEverywhere','badgesInner'],'_badgeseverywherebadgeslist':['BadgesEverywhere','badgesList'],'_badgeseverywherebadgespopout':['BadgesEverywhere','badgesPopout'],'_badgeseverywherebadgessettings':['BadgesEverywhere','badgesSettings'],'_badgeseverywhereindicator':['BadgesEverywhere','indicator'],'_badgeseverywhereindicatorinner':['BadgesEverywhere','indicatorInner'],'_badgeseverywheremini':['BadgesEverywhere','mini'],'_badgeseverywheresize17':['BadgesEverywhere','size17'],'_badgeseverywheresize21':['BadgesEverywhere','size21'],'_badgeseverywheresize22':['BadgesEverywhere','size22'],'_badgeseverywheresize24':['BadgesEverywhere','size24'],'_chatfilterblocked':['ChatFilter','blocked'],'_chatfilterblockedstamp':['ChatFilter','blockedStamp'],'_chatfiltercensored':['ChatFilter','censored'],'_chatfiltercensoredstamp':['ChatFilter','censoredStamp'],'_charcountercounter':['CharCounter','charCounter'],'_charcounterchatcounter':['CharCounter','chatCounter'],'_charcountercounteradded':['CharCounter','counterAdded'],'_charcountereditcounter':['CharCounter','editCounter'],'_charcounternickcounter':['CharCounter','nickCounter'],'_charcounterpopoutnotecounter':['CharCounter','popoutNoteCounter'],'_charcounterprofilenotecounter':['CharCounter','profileNoteCounter'],'_charcounteruploadcounter':['CharCounter','uploadCounter'],'_creationdatedate':['CreationDate','date'],'_displaylargemessagesinjectbutton':['DisplayLargeMessages','injectButton'],'_displayserversaschannelsbadge':['DisplayServersAsChannels','badge'],'_displayserversaschannelsname':['DisplayServersAsChannels','name'],'_displayserversaschannelsstyled':['DisplayServersAsChannels','styled'],'_emojistatisticsstatisticsbutton':['EmojiStatistics','statisticsButton'],'_emojistatisticsamountcell':['EmojiStatistics','amountCell'],'_emojistatisticsiconcell':['EmojiStatistics','iconCell'],'_emojistatisticsnamecell':['EmojiStatistics','nameCell'],'_friendnotificationsfriendsonline':['FriendNotifications','friendsOnline'],'_imagegallerydetails':['ImageGallery','details'],'_imagegallerydetailslabel':['ImageGallery','detailsLabel'],'_imagegallerydetailswrapper':['ImageGallery','detailsWrapper'],'_imagegallerygallery':['ImageGallery','gallery'],'_imagegalleryicon':['ImageGallery','icon'],'_imagegallerynext':['ImageGallery','next'],'_imagegalleryprevious':['ImageGallery','previous'],'_imagegallerysibling':['ImageGallery','sibling'],'_imagezoombackdrop':['ImageZoom','backdrop'],'_imagezoomimagemodal':['ImageZoom','modal'],'_imagezoomlense':['ImageZoom','lense'],'_imagezoomoperations':['ImageZoom','operations'],'_joinedatdatedate':['JoinedAtDate','date'],'_lastmessagedatedate':['LastMessageDate','date'],'_googletranslateoptionreversebutton':['GoogleTranslateOption','reverseButton'],'_googletranslateoptiontranslatebutton':['GoogleTranslateOption','translateButton'],'_googletranslateoptiontranslated':['GoogleTranslateOption','translated'],'_googletranslateoptiontranslating':['GoogleTranslateOption','translating'],'_oldtitlebarenabled':['OldTitleBar','oldTitleBarEnabled'],'_oldtitlebarsettingstoolbar':['OldTitleBar','settingsToolbar'],'_oldtitlebartoolbar':['OldTitleBar','toolbar'],'_pindmsdragpreview':['PinDMs','dragPreview'],'_pindmsdmchannelpinned':['PinDMs','dmChannelPinned'],'_pindmsdmchannelplaceholder':['PinDMs','dmChannelPlaceholder'],'_pindmspinnedchannelsheaderamount':['PinDMs','pinnedChannelsHeaderAmount'],'_pindmspinnedchannelsheaderarrow':['PinDMs','pinnedChannelsHeaderArrow'],'_pindmspinnedchannelsheadercollapsed':['PinDMs','pinnedChannelsHeaderCollapsed'],'_pindmspinnedchannelsheadercolored':['PinDMs','pinnedChannelsHeaderColored'],'_pindmspinnedchannelsheadercontainer':['PinDMs','pinnedChannelsHeaderContainer'],'_pindmsrecentpinned':['PinDMs','recentPinned'],'_pindmsrecentplaceholder':['PinDMs','recentPlaceholder'],'_pindmsunpinbutton':['PinDMs','unpinButton'],'_pindmsunpinicon':['PinDMs','unpinIcon'],'_readallnotificationsbuttonbutton':['ReadAllNotificationsButton','button'],'_readallnotificationsbuttonframe':['ReadAllNotificationsButton','frame'],'_readallnotificationsbuttoninner':['ReadAllNotificationsButton','innerFrame'],'_serverfoldersdragpreview':['ServerFolders','dragPreview'],'_serverfoldersfoldercontent':['ServerFolders','folderContent'],'_serverfoldersfoldercontentclosed':['ServerFolders','folderContentClosed'],'_serverfoldersfoldercontentisopen':['ServerFolders','folderContentIsOpen'],'_serverfoldersguildplaceholder':['ServerFolders','guildPlaceholder'],'_serverfoldersiconswatch':['ServerFolders','iconSwatch'],'_serverfoldersiconswatchinner':['ServerFolders','iconSwatchInner'],'_serverfoldersiconswatchpreview':['ServerFolders','iconSwatchPreview'],'_serverfoldersiconswatchselected':['ServerFolders','iconSwatchSelected'],'_showimagedetailsdetails':['ShowImageDetails','details'],'_spellcheckerror':['SpellCheck','error'],'_spellcheckoverlay':['SpellCheck','overlay'],'_spotifycontrolsbar':['SpotifyControls','bar'],'_spotifycontrolsbarfill':['SpotifyControls','barFill'],'_spotifycontrolsbargrabber':['SpotifyControls','barGabber'],'_spotifycontrolsbartext':['SpotifyControls','barText'],'_spotifycontrolsbuttonactive':['SpotifyControls','buttonActive'],'_spotifycontrolscontainer':['SpotifyControls','container'],'_spotifycontrolscontainerinner':['SpotifyControls','containerInner'],'_spotifycontrolscontainermaximized':['SpotifyControls','containerMaximized'],'_spotifycontrolscontainerwithtimeline':['SpotifyControls','containerWithTimeline'],'_spotifycontrolscover':['SpotifyControls','cover'],'_spotifycontrolscovermaximizer':['SpotifyControls','coverMaximizer'],'_spotifycontrolscoverwrapper':['SpotifyControls','coverWrapper'],'_spotifycontrolsdetails':['SpotifyControls','details'],'_spotifycontrolsinterpret':['SpotifyControls','interpret'],'_spotifycontrolssong':['SpotifyControls','song'],'_spotifycontrolstimeline':['SpotifyControls','timeline'],'_spotifycontrolsvolumeslider':['SpotifyControls','volumeSlider'],'_timedlightdarkmodedategrabber':['TimedLightDarkMode','dateGrabber'],'_timedlightdarkmodetimergrabber':['TimedLightDarkMode','timerGrabber'],'_timedlightdarkmodetimersettings':['TimedLightDarkMode','timerSettings'],'_toproleseverywherebadgestyle':['TopRolesEverywhere','badgeStyle'],'_toproleseverywherechattag':['TopRolesEverywhere','chatTag'],'_toproleseverywheremembertag':['TopRolesEverywhere','memberTag'],'_toproleseverywhererolestyle':['TopRolesEverywhere','roleStyle'],'_toproleseverywheretag':['TopRolesEverywhere','tag'],'_repoauthor':['BDrepo','bdaAuthor'],'_repobutton':['BDrepo','bdButton'],'_repocard':['BDrepo','bdAddonCard'],'_repocheckbox':['BDrepo','switchCheckbox'],'_repocheckboxchecked':['BDrepo','switchChecked'],'_repocheckboxinner':['BDrepo','switch'],'_repocheckboxitem':['BDrepo','switchItem'],'_repocheckboxwrap':['BDrepo','switchWrapper'],'_repocontrols':['BDrepo','bdaControls'],'_repocontrolsbutton':['BDrepo','bdaControlsButton'],'_repodescription':['BDrepo','bdaDescription'],'_repodescriptionwrap':['BDrepo','bdaDescriptionWrap'],'_repoentry':['BDFDB','bdaRepoEntry'],'_repofolderbutton':['BDrepo','bdPfbtn'],'_repofooter':['BDrepo','bdaFooter'],'_repoheader':['BDrepo','bdaHeader'],'_repoheadertitle':['BDrepo','bdaHeaderTitle'],'_repoicon':['BDrepo','bdIcon'],'_repolist':['BDrepo','bdaSlist'],'_repolistheader':['BDFDB','bdaRepoListHeader'],'_repolistwrapper':['BDFDB','bdaRepoListWrapper'],'_repolink':['BDrepo','bdaLink'],'_repolinks':['BDrepo','bdaLinks'],'_reponame':['BDrepo','bdaName'],'_reposettings':['BDrepo','settings'],'_reposettingsbutton':['BDrepo','bdaSettingsButton'],'_reposettingsopen':['BDrepo','settingsOpen'],'_reposettingsclosed':['BDrepo','settingsClosed'],'_reposwitch':['BDrepo','bdSwitch'],'_reposwitchchecked':['BDrepo','bdSwitchChecked'],'_reposwitchinner':['BDrepo','bdSwitchInner'],'_repoupdatebutton':['BDrepo','bdUpdatebtn'],'_repoversion':['BDrepo','bdaVersion'],'accountinfo':['AccountDetails','container'],'accountinfoavatar':['AccountDetails','avatar'],'accountinfoavatarwrapper':['AccountDetails','avatarWrapper'],'accountinfobutton':['AccountDetailsButtons','button'],'accountinfobuttondisabled':['AccountDetailsButtons','disabled'],'accountinfobuttonenabled':['AccountDetailsButtons','enabled'],'accountinfodetails':['AccountDetails','usernameContainer'],'accountinfonametag':['AccountDetails','nameTag'],'alignbaseline':['Flex','alignBaseline'],'aligncenter':['Flex','alignCenter'],'alignend':['Flex','alignEnd'],'alignstart':['Flex','alignStart'],'alignstretch':['Flex','alignStretch'],'anchor':['Anchor','anchor'],'anchorunderlineonhover':['Anchor','anchorUnderlineOnHover'],'animationcontainerbottom':['AnimationContainer','animatorBottom'],'animationcontainerleft':['AnimationContainer','animatorLeft'],'animationcontainerright':['AnimationContainer','animatorRight'],'animationcontainertop':['AnimationContainer','animatorTop'],'animationcontainerrender':['AnimationContainer','didRender'],'animationcontainerscale':['AnimationContainer','scale'],'animationcontainertranslate':['AnimationContainer','translate'],'app':['AppOuter','app'],'appcontainer':['AppBase','container'],'appmount':['AppMount','appMount'],'applayers':['AppInner','layers'],'applicationstore':['ApplicationStore','applicationStore'],'appold':['AppInner','app'],'auditlog':['AuditLog','auditLog'],'auditlogoverflowellipsis':['AuditLog','overflowEllipsis'],'auditloguserhook':['AuditLog','userHook'],'authbox':['AuthBox','authBox'],'autocomplete':['Autocomplete','autocomplete'],'autocompletecontent':['Autocomplete','content'],'autocompletecontenttitle':['Autocomplete','contentTitle'],'autocompletedescription':['Autocomplete','description'],'autocompletedescriptiondiscriminator':['Autocomplete','descriptionDiscriminator'],'autocompletedescriptionusername':['Autocomplete','descriptionUsername'],'autocompleteicon':['Autocomplete','icon'],'autocompleteiconforeground':['Autocomplete','iconForeground'],'autocompleteinner':['Autocomplete','autocompleteInner'],'autocompleterow':['Autocomplete','autocompleteRow'],'autocompleterowhorizontal':['Autocomplete','autocompleteRowHorizontal'],'autocompleterowvertical':['Autocomplete','autocompleteRowVertical'],'autocompleteselectable':['Autocomplete','selectable'],'autocompleteselected':['Autocomplete','selectorSelected'],'autocompleteselector':['Autocomplete','selector'],'avatar':['Avatar','avatar'],'avatarcursordefault':['Avatar','cursorDefault'],'avataricon':['AvatarIcon','icon'],'avatariconactivelarge':['AvatarIcon','iconActiveLarge'],'avatariconactivemedium':['AvatarIcon','iconActiveMedium'],'avatariconactivemini':['AvatarIcon','iconActiveMini'],'avatariconactivesmall':['AvatarIcon','iconActiveSmall'],'avatariconactivexlarge':['AvatarIcon','iconActiveXLarge'],'avatariconinactive':['AvatarIcon','iconInactive'],'avatariconsizelarge':['AvatarIcon','iconSizeLarge'],'avatariconsizemedium':['AvatarIcon','iconSizeMedium'],'avatariconsizemini':['AvatarIcon','iconSizeMini'],'avatariconsizesmol':['AvatarIcon','iconSizeSmol'],'avatariconsizesmall':['AvatarIcon','iconSizeSmall'],'avatariconsizexlarge':['AvatarIcon','iconSizeXLarge'],'avatarmask':['Avatar','mask'],'avatarnoicon':['AvatarIcon','noIcon'],'avatarpointer':['Avatar','pointer'],'avatarpointerevents':['Avatar','pointerEvents'],'avatarwrapper':['Avatar','wrapper'],'backdrop':['Backdrop','backdrop'],'backdropwithlayer':['Backdrop','backdropWithLayer'],'badgebase':['Badge','base'],'badgeicon':['Badge','icon'],'badgeiconbadge':['Badge','iconBadge'],'badgenumberbadge':['Badge','numberBadge'],'badgetextbadge':['Badge','textBadge'],'badgewrapper':['NotFound','badgeWrapper'],'bdfdbbadge':['BDFDB','badge'],'bdfdbdev':['BDFDB','dev'],'bdfdbhasbadge':['BDFDB','hasBadge'],'bdfdbsupporter':['BDFDB','supporter'],'bdfdbsupportercustom':['BDFDB','supporterCustom'],'bold':['TextStyle','bold'],'bottag':['BotTag','botTag'],'bottaginvert':['BotTag','botTagInvert'],'bottagmember':['Member','botTag'],'bottagnametag':['NameTag','bot'],'bottagpx':['BotTag','px'],'bottagregular':['BotTag','botTagRegular'],'bottagrem':['BotTag','rem'],'bottagtext':['BotTag','botText'],'bottagverified':['BotTag','botTagVerified'],'button':['Button','button'],'buttoncolorblack':['Button','colorBlack'],'buttoncolorbrand':['Button','colorBrand'],'buttoncolorgreen':['Button','colorGreen'],'buttoncolorgrey':['Button','colorGrey'],'buttoncolorlink':['Button','colorLink'],'buttoncolorprimary':['Button','colorPrimary'],'buttoncolorred':['Button','colorRed'],'buttoncolortransparent':['Button','colorTransparent'],'buttoncolorwhite':['Button','colorWhite'],'buttoncoloryellow':['Button','colorYellow'],'buttoncontents':['Button','contents'],'buttondisabledoverlay':['Button','disabledButtonOverlay'],'buttondisabledwrapper':['Button','disabledButtonWrapper'],'buttonfullwidth':['Button','fullWidth'],'buttongrow':['Button','grow'],'buttonhashover':['Button','hasHover'],'buttonhoverblack':['Button','hoverBlack'],'buttonhoverbrand':['Button','hoverBrand'],'buttonhovergreen':['Button','hoverGreen'],'buttonhovergrey':['Button','hoverGrey'],'buttonhoverlink':['Button','hoverLink'],'buttonhoverprimary':['Button','hoverPrimary'],'buttonhoverred':['Button','hoverRed'],'buttonhovertransparent':['Button','hoverTransparent'],'buttonhoverwhite':['Button','hoverWhite'],'buttonhoveryellow':['Button','hoverYellow'],'buttonlookblank':['Button','lookBlank'],'buttonlookfilled':['Button','lookFilled'],'buttonlookghost':['Button','lookGhost'],'buttonlookinverted':['Button','lookInverted'],'buttonlooklink':['Button','lookLink'],'buttonlookoutlined':['Button','lookOutlined'],'buttonsizeicon':['Button','sizeIcon'],'buttonsizelarge':['Button','sizeLarge'],'buttonsizemax':['Button','sizeMax'],'buttonsizemedium':['Button','sizeMedium'],'buttonsizemin':['Button','sizeMin'],'buttonsizesmall':['Button','sizeSmall'],'buttonsizexlarge':['Button','sizeXlarge'],'buttonspinner':['Button','spinner'],'buttonspinneritem':['Button','spinnerItem'],'buttonsubmitting':['Button','submitting'],'callcurrentcontainer':['CallCurrent','wrapper'],'callcurrentdetails':['CallDetails','container'],'callcurrentvideo':['Video','video'],'callincoming':['CallIncoming','incomingCall'],'callincomingcontainer':['CallIncoming','container'],'callincominginner':['CallIncomingInner','incomingCallInner'],'callmembers':['CallIncomingInner','members'],'callincomingroot':['CallIncoming','root'],'callincomingtitle':['CallIncoming','title'],'callincomingwrapper':['CallIncoming','wrapper'],'card':['Card','card'],'cardbrand':['Card','cardBrand'],'cardbrandoutline':['Card','cardBrandOutline'],'carddanger':['Card','cardDanger'],'carddangeroutline':['Card','cardDangerOutline'],'carderror':['CardStatus','error'],'cardprimary':['Card','cardPrimary'],'cardprimaryeditable':['Card','cardPrimaryEditable'],'cardprimaryoutline':['Card','cardPrimaryOutline'],'cardprimaryoutlineeditable':['Card','cardPrimaryOutlineEditable'],'cardreset':['CardStatus','reset'],'cardsuccess':['Card','cardSuccess'],'cardsuccessoutline':['Card','cardSuccessOutline'],'cardwarning':['Card','cardWarning'],'cardwarningoutline':['Card','cardWarningOutline'],'categoryaddbutton':['CategoryContainer','addButton'],'categoryaddbuttonicon':['CategoryContainer','addButtonIcon'],'categorychildren':['Category','children'],'categoryclickable':['Category','clickable'],'categorycollapsed':['Category','collapsed'],'categorycontainerdefault':['CategoryContainer','containerDefault'],'categoryforcevisible':['CategoryContainer','forceVisible'],'categoryicon':['Category','icon'],'categoryiconvisibility':['CategoryContainer','iconVisibility'],'categorymuted':['Category','muted'],'categoryname':['Category','name'],'categorywrapper':['Category','wrapper'],'changelogadded':['ChangeLog','added'],'changelogcontainer':['ChangeLog','container'],'changelogfixed':['ChangeLog','fixed'],'changelogimproved':['ChangeLog','improved'],'changelogprogress':['ChangeLog','progress'],'changelogtitle':['ChangeLog','title'],'channelactionicon':['ChannelContainer','actionIcon'],'channelchildicon':['ChannelContainer','iconItem'],'channelchildiconbase':['ChannelContainer','iconBase'],'channelchildren':['Channel','children'],'channelcontainerdefault':['ChannelContainer','containerDefault'],'channelcontent':['Channel','content'],'channeldisabled':['ChannelContainer','disabled'],'channelheaderchannelname':['ChatWindow','channelName'],'channelheaderchildren':['HeaderBar','children'],'channelheaderdivider':['HeaderBar','divider'],'channelheaderheaderbar':['HeaderBar','container'],'channelheaderheaderbarthemed':['HeaderBar','themed'],'channelheaderheaderbartitle':['HeaderBar','title'],'channelheadericon':['HeaderBar','icon'],'channelheadericonbadge':['HeaderBar','iconBadge'],'channelheadericonclickable':['HeaderBar','clickable'],'channelheadericonselected':['HeaderBar','selected'],'channelheadericonwrapper':['HeaderBar','iconWrapper'],'channelheadertitle':['ChatWindow','title'],'channelheadertitlewrapper':['ChatWindow','titleWrapper'],'channelheadersearch':['HeaderBarExtras','search'],'channelheadersearchbar':['HeaderBarSearch','searchBar'],'channelheadersearchicon':['HeaderBarSearch','icon'],'channelheadersearchinner':['HeaderBarSearch','search'],'channelheadertoolbar':['HeaderBar','toolbar'],'channelheadertoolbar2':['HeaderBarExtras','toolbar'],'channelheadertopic':['HeaderBarTopic','topic'],'channelheadertopicexpandable':['HeaderBarTopic','expandable'],'channelicon':['Channel','icon'],'channeliconvisibility':['ChannelContainer','iconVisibility'],'channelmentionsbadge':['ChannelContainer','mentionsBadge'],'channelmodeconnected':['Channel','modeConnected'],'channelmodelocked':['Channel','modeLocked'],'channelmodemuted':['Channel','modeMuted'],'channelmodeselected':['Channel','modeSelected'],'channelmodeunread':['Channel','modeUnread'],'channelname':['Channel','name'],'channelpanel':['AppBase','activityPanel'],'channelpaneltitle':['NotFound','channelPanelTitle'],'channelpanels':['AppBase','panels'],'channels':['AppBase','sidebar'],'channelselected':['ChannelContainer','selected'],'channelsscroller':['GuildChannels','scroller'],'channelsunreadbar':['GuildChannels','unreadBar'],'channelsunreadbarcontainer':['GuildChannels','positionedContainer'],'channelsunreadbarbottom':['GuildChannels','unreadBottom'],'channelsunreadbarunread':['GuildChannels','unread'],'channelsunreadbartop':['GuildChannels','unreadTop'],'channelunread':['Channel','unread'],'channeluserlimit':['ChannelLimit','wrapper'],'channeluserlimitcontainer':['ChannelContainer','userLimit'],'channeluserlimittotal':['ChannelLimit','total'],'channeluserlimitusers':['ChannelLimit','users'],'channelwrapper':['Channel','wrapper'],'charcounter':['BDFDB','charCounter'],'chat':['ChatWindow','chat'],'chatbase':['AppBase','base'],'chatcontent':['ChatWindow','chatContent'],'chatform':['ChatWindow','form'],'chatinner':['ChatWindow','content'],'chatspacer':['AppBase','content'],'checkbox':['Checkbox','checkbox'],'checkboxchecked':['Checkbox','checked'],'checkboxcontainer':['ModalItems','checkboxContainer'],'checkboxinput':['Checkbox','input'],'checkboxinputdefault':['Checkbox','inputDefault'],'checkboxinputdisabled':['Checkbox','inputDisabled'],'checkboxround':['Checkbox','round'],'checkboxwrapper':['Checkbox','checkboxWrapper'],'checkboxwrapperdisabled':['Checkbox','checkboxWrapperDisabled'],'collapsecontainer':['BDFDB','collapseContainer'],'collapsecontainerarrow':['BDFDB','collapseContainerArrow'],'collapsecontainercollapsed':['BDFDB','collapseContainerCollapsed'],'collapsecontainerheader':['BDFDB','collapseContainerHeader'],'collapsecontainerinner':['BDFDB','collapseContainerInner'],'collapsecontainermini':['BDFDB','collapseContainerMini'],'collapsecontainertitle':['BDFDB','collapseContainerTitle'],'colorbase':['TextColor2','base'],'colorbrand':['TextColor','colorBrand'],'colorerror':['TextColor','colorError'],'colormuted':['TextColor','colorMuted'],'colorgreen':['TextColor','colorStatusGreen'],'colorpicker':['ColorPicker','colorPickerCustom'],'colorpickeralpha':['BDFDB','colorPickerAlpha'],'colorpickeralphacheckered':['BDFDB','colorPickerAlphaCheckered'],'colorpickeralphacursor':['BDFDB','colorPickerAlphaCursor'],'colorpickeralphahorizontal':['BDFDB','colorPickerAlphaHorizontal'],'colorpickergradient':['BDFDB','colorPickerGradient'],'colorpickergradientbutton':['BDFDB','colorPickerGradientButton'],'colorpickergradientbuttonenabled':['BDFDB','colorPickerGradientButtonEnabled'],'colorpickergradientcheckered':['BDFDB','colorPickerGradientCheckered'],'colorpickergradientcursor':['BDFDB','colorPickerGradientCursor'],'colorpickergradientcursoredge':['BDFDB','colorPickerGradientCursorEdge'],'colorpickergradientcursorselected':['BDFDB','colorPickerGradientCursorSelected'],'colorpickergradienthorizontal':['BDFDB','colorPickerGradientHorizontal'],'colorpickerhexinput':['ColorPicker','customColorPickerInput'],'colorpickerhue':['ColorPickerInner','hue'],'colorpickerhuecursor':['NotFound','hueCursor'],'colorpickerhuehorizontal':['NotFound','hueHorizontal'],'colorpickerhuevertical':['NotFound','hueVertical'],'colorpickerinner':['ColorPickerInner','wrapper'],'colorpickerrow':['ColorPicker','colorPickerRow'],'colorpickersaturation':['ColorPickerInner','saturation'],'colorpickersaturationblack':['NotFound','saturationBlack'],'colorpickersaturationcolor':['NotFound','saturationColor'],'colorpickersaturationcursor':['NotFound','saturationCursor'],'colorpickersaturationwhite':['NotFound','saturationWhite'],'colorpickerswatch':['ColorPicker','colorPickerSwatch'],'colorpickerswatches':['BDFDB','colorPickerSwatches'],'colorpickerswatchesdisabled':['BDFDB','colorPickerSwatchesDisabled'],'colorpickerswatchcustom':['ColorPicker','custom'],'colorpickerswatchdefault':['ColorPicker','default'],'colorpickerswatchdisabled':['ColorPicker','disabled'],'colorpickerswatchdropper':['ColorPicker','colorPickerDropper'],'colorpickerswatchdropperfg':['ColorPicker','colorPickerDropperFg'],'colorpickerswatchnocolor':['ColorPicker','noColor'],'colorpickerswatchselected':['BDFDB','colorPickerSwatchSelected'],'colorpickerswatchsingle':['BDFDB','colorPickerSwatchSingle'],'colorpickerwrapper':['BDFDB','colorPicker'],'colorprimary':['TextColor','colorHeaderPrimary'],'colorred':['TextColor','colorStatusRed'],'colorsecondary':['TextColor','colorHeaderSecondary'],'colorselectable':['TextColor','selectable'],'colorstandard':['TextColor','colorStandard'],'coloryellow':['TextColor','colorStatusYellow'],'cursordefault':['Cursor','cursorDefault'],'cursorpointer':['Cursor','cursorPointer'],'customstatusemoji':['CustomStatusIcon','emoji'],'customstatusicon':['CustomStatusIcon','icon'],'defaultcolor':['Text','defaultColor'],'description':['FormText','description'],'directioncolumn':['Flex','directionColumn'],'directiondown':['IconDirection','directionDown'],'directionleft':['IconDirection','directionLeft'],'directionright':['IconDirection','directionRight'],'directionrow':['Flex','directionRow'],'directionrowreverse':['Flex','directionRowReverse'],'directionup':['IconDirection','directionUp'],'directiontransition':['IconDirection','transition'],'disabled':['SettingsItems','disabled'],'discriminator':['NameTag','discriminator'],'divider':['ModalDivider','divider'],'dividerdefault':['SettingsItems','dividerDefault'],'dividermini':['SettingsItems','dividerMini'],'dmchannel':['PrivateChannel','channel'],'dmchannelactivity':['PrivateChannel','activity'],'dmchannelactivityemoji':['PrivateChannel','activityEmoji'],'dmchannelactivitytext':['PrivateChannel','activityText'],'dmchannelclose':['PrivateChannel','closeButton'],'dmchannelheadercontainer':['PrivateChannelListScroller','privateChannelsHeaderContainer'],'dmchannelheadertext':['PrivateChannelListScroller','headerText'],'dmchannels':['PrivateChannelList','privateChannels'],'dmchannelsempty':['PrivateChannelListScroller','empty'],'dmchannelsscroller':['PrivateChannelListScroller','scroller'],'dmpill':['GuildDm','pill'],'downloadlink':['DownloadLink','downloadLink'],'ellipsis':['PopoutActivity','ellipsis'],'embed':['Embed','embed'],'embedauthor':['Embed','embedAuthor'],'embedauthoricon':['Embed','embedAuthorIcon'],'embedauthorname':['Embed','embedAuthorName'],'embedauthornamelink':['Embed','embedAuthorNameLink'],'embedcentercontent':['Embed','centerContent'],'embeddescription':['Embed','embedDescription'],'embedfield':['Embed','embedField'],'embedfieldname':['Embed','embedFieldName'],'embedfields':['Embed','embedFields'],'embedfieldvalue':['Embed','embedFieldValue'],'embedfooter':['Embed','embedFooter'],'embedfootericon':['Embed','embedFooterIcon'],'embedfooterseparator':['Embed','embedFooterSeparator'],'embedfootertext':['Embed','embedFooterText'],'embedfull':['Embed','embedFull'],'embedgiftag':['Embed','embedGIFTag'],'embedgrid':['Embed','grid'],'embedhasthumbnail':['Embed','hasThumbnail'],'embedhiddenspoiler':['Embed','hiddenSpoiler'],'embediframe':['Embed','embedIframe'],'embedimage':['Embed','embedImage'],'embedlink':['Embed','embedLink'],'embedmargin':['Embed','embedMargin'],'embedmedia':['Embed','embedMedia'],'embedprovider':['Embed','embedProvider'],'embedspoilerattachment':['Embed','spoilerAttachment'],'embedspoilerembed':['Embed','spoilerEmbed'],'embedspotify':['Embed','embedSpotify'],'embedthumbnail':['Embed','embedThumbnail'],'embedtitle':['Embed','embedTitle'],'embedtitlelink':['Embed','embedTitleLink'],'embedvideo':['Embed','embedVideo'],'embedvideoaction':['Embed','embedVideoAction'],'embedvideoactions':['Embed','embedVideoActions'],'embedvideoimagecomponent':['Embed','embedVideoImageComponent'],'embedvideoimagecomponentinner':['Embed','embedVideoImageComponentInner'],'embedwrapper':['MessageAccessory','embedWrapper'],'emoji':['Emoji','emoji'],'emojiold':['NotFound','emoji'],'emojibutton':['EmojiButton','emojiButton'],'emojibuttonhovered':['EmojiButton','emojiButtonHovered'],'emojibuttonnormal':['EmojiButton','emojiButtonNormal'],'emojibuttonsprite':['EmojiButton','sprite'],'emojiinput':['EmojiInput','input'],'emojiinputbutton':['EmojiInput','emojiButton'],'emojiinputbuttoncontainer':['EmojiInput','emojiButtonContainer'],'emojiinputclearbutton':['EmojiInput','clearButton'],'emojiinputclearicon':['EmojiInput','clearIcon'],'emojiinputcontainer':['EmojiInput','inputContainer'],'emojipickerbutton':['Reactions','reactionBtn'],'emojipicker':['EmojiPicker','emojiPicker'],'emojipickerdiversityemojiitem':['EmojiPickerDiversitySelector','diversityEmojiItem'],'emojipickerdiversityemojiitemimage':['EmojiPickerDiversitySelector','diversityEmojiItemImage'],'emojipickerdiversityselector':['EmojiPickerDiversitySelector','diversitySelector'],'emojipickerdiversityselectorpopout':['EmojiPickerDiversitySelector','diversitySelectorPopout'],'emojipickerdiversityselectorwrapper':['EmojiPicker','diversitySelector'],'emojipickeremojispriteimage':['EmojiPickerItem','emojiSpriteImage'],'emojipickerheader':['EmojiPicker','header'],'emojipickerinspector':['EmojiPickerInspector','inspector'],'emojipickerinspectoremoji':['EmojiPickerInspector','emoji'],'expressionpicker':['ExpressionPicker','contentWrapper'],'expressionpickernav':['ExpressionPicker','nav'],'expressionpickernavbutton':['ExpressionPicker','navButton'],'expressionpickernavbuttonactive':['ExpressionPicker','navButtonActive'],'expressionpickernavitem':['ExpressionPicker','navItem'],'expressionpickernavlist':['ExpressionPicker','navList'],'favbuttoncontainer':['BDFDB','favButtonContainer'],'fileattachment':['File','attachment'],'fileattachmentinner':['File','attachmentInner'],'filecancelbutton':['File','cancelButton'],'filedownloadbutton':['File','downloadButton'],'filename':['File','filename'],'filenamelink':['File','fileNameLink'],'filenamelinkwrapper':['File','filenameLinkWrapper'],'filenamewrapper':['File','filenameWrapper'],'flex':['FlexChild','flex'],'flex2':['Flex','flex'],'flexcenter':['Flex','flexCenter'],'flexchild':['FlexChild','flexChild'],'flexmarginreset':['FlexChild','flexMarginReset'],'flexspacer':['Flex','spacer'],'flowerstar':['FlowerStar','flowerStar'],'flowerstarchild':['FlowerStar','childContainer'],'flowerstarcontainer':['FlowerStar','flowerStarContainer'],'focusable':['Focusable','focusable'],'formtext':['FormText','formText'],'game':['Game','game'],'gameicon':['GameIcon','gameIcon'],'gameiconlarge':['GameIcon','large'],'gameiconmedium':['GameIcon','medium'],'gameiconsmall':['GameIcon','small'],'gameiconxsmall':['GameIcon','xsmall'],'gamelibrarytable':['GameLibraryTable','table'],'gamelibrarytableheader':['GameLibraryTable','header'],'gamelibrarytableheadercell':['GameLibraryTable','headerCell'],'gamelibrarytableheadercellsorted':['GameLibraryTable','headerCellSorted'],'gamelibrarytablerow':['GameLibraryTable','row'],'gamelibrarytablerowwrapper':['GameLibraryTable','rowWrapper'],'gamelibrarytablestickyheader':['GameLibraryTable','stickyHeader'],'gamename':['Game','gameName'],'gamenameinput':['Game','gameNameInput'],'giffavoritebutton':['MessageAccessory','gifFavoriteButton'],'giffavoritecolor':['GifFavoriteButton','gifFavoriteButton'],'giffavoriteicon':['GifFavoriteButton','icon'],'giffavoriteshowpulse':['GifFavoriteButton','showPulse'],'giffavoritesize':['GifFavoriteButton','size'],'giffavoriteselected':['GifFavoriteButton','selected'],'goliveactions':['GoLiveDetails','actions'],'golivebody':['GoLiveDetails','body'],'goliveclickablegamewrapper':['GoLiveDetails','clickableGameWrapper'],'golivegameicon':['GoLiveDetails','gameIcon'],'golivegamename':['GoLiveDetails','gameName'],'golivegamewrapper':['GoLiveDetails','gameWrapper'],'goliveinfo':['GoLiveDetails','info'],'golivepanel':['GoLiveDetails','panel'],'guild':['BDFDB','guild'],'guildbuttoncontainer':['GuildsItems','circleButtonMask'],'guildbuttoninner':['GuildsItems','circleIconButton'],'guildbuttonicon':['GuildsItems','circleIcon'],'guildbuttonpill':['GuildsItems','pill'],'guildbuttonselected':['GuildsItems','selected'],'guildchannels':['NotFound','guildChannels'],'guildcontainer':['GuildServer','blobContainer'],'guilddiscovery':['GuildDiscovery','pageWrapper'],'guildedge':['GuildEdges','edge'],'guildedgehalf':['GuildEdges','half'],'guildedgehigher':['GuildEdges','higher'],'guildedgemiddle':['GuildEdges','middle'],'guildedgewrapper':['GuildEdges','wrapper'],'guildserror':['GuildsItems','guildsError'],'guildserrorinner':['GuildsItems','errorInner'],'guildfolder':['GuildFolder','folder'],'guildfolderexpandedbackground':['GuildFolder','expandedFolderBackground'],'guildfolderexpandedbackgroundcollapsed':['GuildFolder','collapsed'],'guildfolderexpandedbackgroundhover':['GuildFolder','hover'],'guildfolderguildicon':['GuildFolder','guildIcon'],'guildfoldericonwrapper':['GuildFolder','folderIconWrapper'],'guildfoldericonwrapperclosed':['GuildFolder','closedFolderIconWrapper'],'guildfoldericonwrapperexpanded':['GuildFolder','expandedFolderIconWrapper'],'guildfolderwrapper':['GuildFolder','wrapper'],'guildheader':['GuildHeader','container'],'guildheaderbannerimage':['GuildHeader','bannerImage'],'guildheaderbannerimagecontainer':['GuildHeader','animatedContainer'],'guildheaderbannervisible':['GuildHeader','bannerVisible'],'guildheaderbutton':['GuildHeaderButton','button'],'guildheaderbuttonopen':['GuildHeaderButton','open'],'guildheaderclickable':['GuildHeader','clickable'],'guildheaderhasbanner':['GuildHeader','hasBanner'],'guildheadericoncontainer':['GuildHeader','guildIconContainer'],'guildheadericonbgtiernone':['GuildHeader','iconBackgroundTierNone'],'guildheadericonbgtierone':['GuildHeader','iconBackgroundTierOne'],'guildheadericonbgtierthree':['GuildHeader','iconBackgroundTierThree'],'guildheadericonbgtiertwo':['GuildHeader','iconBackgroundTierTwo'],'guildheadericonpremiumgem':['GuildHeader','premiumGuildIconGem'],'guildheadericontiernone':['GuildHeader','iconTierNone'],'guildheadericontierone':['GuildHeader','iconTierOne'],'guildheadericontierthree':['GuildHeader','iconTierThree'],'guildheadericontiertwo':['GuildHeader','iconTierTwo'],'guildheaderheader':['GuildHeader','header'],'guildheadername':['GuildHeader','name'],'guildicon':['GuildIcon','icon'],'guildiconacronym':['GuildIcon','acronym'],'guildiconbadge':['GuildsItems','iconBadge'],'guildiconchildwrapper':['GuildIcon','childWrapper'],'guildiconselected':['GuildIcon','selected'],'guildiconwrapper':['GuildIcon','wrapper'],'guildinner':['Guild','wrapper'],'guildinnerwrapper':['GuildsItems','listItemWrapper'],'guildlowerbadge':['Guild','lowerBadge'],'guildlowerleftbadge':['BDFDB','guildLowerLeftBadge'],'guildouter':['GuildsItems','listItem'],'guildpill':['GuildServer','pill'],'guildpillitem':['PillWrapper','item'],'guildpillwrapper':['PillWrapper','wrapper'],'guildplaceholder':['GuildsItems','dragInner'],'guildplaceholdermask':['GuildsItems','placeholderMask'],'guilds':['AppBase','guilds'],'guildseparator':['GuildsItems','guildSeparator'],'guildserror':['GuildsItems','guildsError'],'guildsettingsbannedcard':['GuildSettingsBanned','bannedUser'],'guildsettingsbanneddiscrim':['GuildSettingsBanned','discrim'],'guildsettingsbannedusername':['GuildSettingsBanned','username'],'guildsettingsemojicard':['GuildSettingsEmoji','emojiRow'],'guildsettingsinvitecard':['GuildSettingsInvite','inviteSettingsInviteRow'],'guildsettingsinvitechannelname':['GuildSettingsInvite','channelName'],'guildsettingsinviteusername':['GuildSettingsInvite','username'],'guildsettingsmembercard':['GuildSettingsMember','member'],'guildsettingsmembername':['GuildSettingsMember','name'],'guildsettingsmembernametag':['GuildSettingsMember','nameTag'],'guildsettingsrolesbuttonwrapper':['GuildSettingsRoles','buttonWrapper'],'guildsscroller':['GuildsWrapper','scroller'],'guildsvg':['Guild','svg'],'guildswrapper':['GuildsWrapper','wrapper'],'guildswrapperunreadmentionsbar':['GuildsWrapper','unreadMentionsBar'],'guildswrapperunreadmentionsbarbottom':['GuildsWrapper','unreadMentionsIndicatorBottom'],'guildswrapperunreadmentionsbartop':['GuildsWrapper','unreadMentionsIndicatorTop'],'guildtutorialcontainer':['GuildsItems','tutorialContainer'],'guildupperbadge':['Guild','upperBadge'],'guildupperleftbadge':['BDFDB','guildUpperLeftBadge'],'h1':['Text','h1'],'h1defaultmargin':['Text','defaultMarginh1'],'h2':['Text','h2'],'h2defaultmargin':['Text','defaultMarginh2'],'h3':['Text','h3'],'h3defaultmargin':['Text','defaultMarginh3'],'h4':['Text','h4'],'h4defaultmargin':['Text','defaultMarginh4'],'h5':['Text','h5'],'h5defaultmargin':['Text','defaultMarginh5'],'headertitle':['Text','title'],'height12':['UserPopout','height12'],'height16':['File','height16'],'height24':['Title','height24'],'height36':['Notice','height36'],'highlight':['NotFound','highlight'],'homebuttonicon':['HomeIcon','homeIcon'],'homebuttonpill':['HomeIcon','pill'],'horizontal':['FlexChild','horizontal'],'horizontal2':['NotFound','_'],'horizontalreverse':['FlexChild','horizontalReverse'],'horizontalreverse2':['NotFound','_'],'hotkeybase':['NotFound','_'],'hotkeybutton':['HotKeyRecorder','button'],'hotkeybutton2':['NotFound','_'],'hotkeycontainer':['HotKeyRecorder','container'],'hotkeycontainer2':['NotFound','_'],'hotkeydisabled':['HotKeyRecorder','disabled'],'hotkeydisabled2':['NotFound','_'],'hotkeyediticon':['HotKeyRecorder','editIcon'],'hotkeyhasvalue':['HotKeyRecorder','hasValue'],'hotkeyinput':['HotKeyRecorder','input'],'hotkeyinput2':['HotKeyRecorder','input'],'hotkeylayout':['HotKeyRecorder','layout'],'hotkeylayout2':['HotKeyRecorder','layout'],'hotkeyrecording':['HotKeyRecorder','recording'],'hotkeyresetbutton':['BDFDB','hotkeyResetButton'],'hotkeyshadowpulse':['HotKeyRecorder','shadowPulse'],'hotkeytext':['HotKeyRecorder','text'],'hotkeywrapper':['BDFDB','hotkeyWrapper'],'hovercard':['HoverCard','card'],'hovercardbutton':['NotFound','hoverCardButton'],'hovercardinner':['BDFDB','cardInner'],'hovercardwrapper':['BDFDB','cardWrapper'],'icon':['EmbedActions','icon'],'iconactionswrapper':['EmbedActions','wrapper'],'iconexternal':['EmbedActions','iconExternal'],'iconexternalmargins':['EmbedActions','iconExternalMargins'],'iconplay':['EmbedActions','iconPlay'],'iconwrapper':['EmbedActions','iconWrapper'],'iconwrapperactive':['EmbedActions','iconWrapperActive'],'imageaccessory':['ImageWrapper','imageAccessory'],'imageclickable':['ImageWrapper','clickable'],'imageerror':['ImageWrapper','imageError'],'imageplaceholder':['ImageWrapper','imagePlaceholder'],'imageplaceholderoverlay':['ImageWrapper','imagePlaceholderOverlay'],'imagewrapper':['ImageWrapper','imageWrapper'],'imagewrapperbackground':['ImageWrapper','imageWrapperBackground'],'imagewrapperinner':['ImageWrapper','imageWrapperInner'],'imagezoom':['ImageWrapper','imageZoom'],'itemlayer':['ItemLayerContainer','layer'],'itemlayercontainer':['ItemLayerContainer','layerContainer'],'itemlayerdisabledpointerevents':['ItemLayerContainer','disabledPointerEvents'],'input':['Input','input'],'inputdefault':['Input','inputDefault'],'inputdisabled':['Input','disabled'],'inputeditable':['Input','editable'],'inputerror':['Input','error'],'inputfocused':['Input','focused'],'inputmini':['Input','inputMini'],'inputprefix':['Input','inputPrefix'],'inputsuccess':['Input','success'],'inputwrapper':['Input','inputWrapper'],'inputnumberbutton':['BDFDB','inputNumberButton'],'inputnumberbuttondown':['BDFDB','inputNumberButtonDown'],'inputnumberbuttonup':['BDFDB','inputNumberButtonUp'],'inputnumberbuttons':['BDFDB','inputNumberButtons'],'inputnumberwrapper':['BDFDB','inputNumberWrapper'],'inputnumberwrapperdefault':['BDFDB','inputNumberWrapperDefault'],'inputnumberwrappermini':['BDFDB','inputNumberWrapperMini'],'invite':['GuildInvite','wrapper'],'invitebutton':['GuildInvite','button'],'invitebuttonfornonmember':['GuildInvite','buttonForNonMember'],'invitebuttonresolving':['GuildInvite','invite-button-resolving'],'invitebuttonsize':['GuildInvite','buttonSize'],'invitechannel':['GuildInvite','channel'],'invitechannelicon':['GuildInvite','channelIcon'],'invitechannelname':['GuildInvite','channelName'],'invitecontent':['GuildInvite','content'],'invitecount':['GuildInvite','count'],'invitecursordefault':['GuildInvite','cursorDefault'],'invitedestination':['GuildInvite','inviteDestination'],'invitedestinationexpired':['GuildInvite','inviteDestinationExpired'],'invitedestinationjoined':['GuildInvite','inviteDestinationJoined'],'inviteguildbadge':['GuildInvite','guildBadge'],'inviteguilddetail':['GuildInvite','guildDetail'],'inviteguildicon':['GuildInvite','guildIcon'],'inviteguildiconexpired':['GuildInvite','guildIconExpired'],'inviteguildiconimage':['GuildInvite','guildIconImage'],'inviteguildiconimagejoined':['GuildInvite','guildIconImageJoined'],'inviteguildiconjoined':['GuildInvite','guildIconJoined'],'inviteguildinfo':['GuildInvite','guildInfo'],'inviteguildname':['GuildInvite','guildName'],'inviteguildnamewrapper':['GuildInvite','guildNameWrapper'],'inviteheader':['GuildInvite','header'],'invitemodal':['InviteModal','modal'],'invitemodalinviterow':['InviteModal','inviteRow'],'invitemodalinviterowname':['InviteModal','inviteRowName'],'invitemodalwrapper':['InviteModal','wrapper'],'invitesplash':['GuildInvite','inviteSplash'],'invitesplashimage':['GuildInvite','inviteSplashImage'],'invitesplashimageloaded':['GuildInvite','inviteSplashImageLoaded'],'inviteresolving':['GuildInvite','resolving'],'inviteresolvingbackground':['GuildInvite','resolvingBackground'],'invitestatus':['GuildInvite','status'],'invitestatuscounts':['GuildInvite','statusCounts'],'invitestatusoffline':['GuildInvite','statusOffline'],'invitestatusonline':['GuildInvite','statusOnline'],'inviteuserselectnone':['GuildInvite','userSelectNone'],'italics':['TextStyle','italics'],'justifycenter':['Flex','justifyCenter'],'justifyend':['Flex','justifyEnd'],'justifystart':['Flex','justifyStart'],'layermodal':['LayerModal','root'],'layermodallarge':['LayerModal','large'],'layermodalmedium':['LayerModal','medium'],'layermodalsmall':['LayerModal','small'],'layer':['Layers','layer'],'layerbase':['Layers','baseLayer'],'layers':['Layers','layers'],'layersbg':['Layers','bg'],'listavatar':['UserProfile','listAvatar'],'listdiscriminator':['UserProfile','listDiscriminator'],'listname':['UserProfile','listName'],'listrow':['UserProfile','listRow'],'listrowcontent':['UserProfile','listRowContent'],'listscroller':['UserProfile','listScroller'],'livetag':['LiveTag','live'],'livetaggrey':['LiveTag','grey'],'livetaglarge':['LiveTag','liveLarge'],'livetagsmall':['LiveTag','liveSmall'],'loadingicon':['BDFDB','loadingIcon'],'loadingiconwrapper':['BDFDB','loadingIconWrapper'],'loadingscreen':['LoadingScreen','container'],'loginscreen':['NotFound','loginScreen'],'marginbottom4':['Margins','marginBottom4'],'marginbottom8':['Margins','marginBottom8'],'marginbottom20':['Margins','marginBottom20'],'marginbottom40':['Margins','marginBottom40'],'marginbottom60':['Margins','marginBottom60'],'margincenterhorz':['Margins','marginCenterHorz'],'marginleft4':['Autocomplete','marginLeft4'],'marginleft8':['Autocomplete','marginLeft8'],'marginreset':['Margins','marginReset'],'margintop4':['Margins','marginTop4'],'margintop8':['Margins','marginTop8'],'margintop20':['Margins','marginTop20'],'margintop40':['Margins','marginTop40'],'margintop60':['Margins','marginTop60'],'member':['Member','member'],'memberactivity':['Member','activity'],'membericon':['Member','icon'],'memberoffline':['Member','offline'],'memberownericon':['Member','ownerIcon'],'memberpremiumicon':['Member','premiumIcon'],'members':['MembersWrap','members'],'membersgroup':['MembersWrap','membersGroup'],'memberstabbar':['MembersThreads','tabBar'],'membersthread':['MembersThreads','thread'],'memberswrap':['MembersWrap','membersWrap'],'memberusername':['Member','roleColor'],'mention':['NotFound','mention'],'mentioninteractive':['NotFound','mentionInteractive'],'mentionwrapper':['NotFound','mentionWrapper'],'menu':['Menu','menu'],'menucaret':['Menu','caret'],'menucheck':['Menu','check'],'menucheckbox':['Menu','checkbox'],'menucolorbrand':['Menu','colorBrand'],'menucolordanger':['Menu','colorDanger'],'menucolordefault':['Menu','colorDefault'],'menucolorpremium':['Menu','colorPremium'],'menucustomitem':['Menu','customItem'],'menudisabled':['Menu','disabled'],'menufocused':['Menu','focused'],'menuhideinteraction':['Menu','hideInteraction'],'menuhint':['BDFDB','menuItemHint'],'menuhintcontainer':['Menu','hintContainer'],'menuicon':['Menu','icon'],'menuiconcontainer':['Menu','iconContainer'],'menuimage':['Menu','image'],'menuimagecontainer':['Menu','imageContainer'],'menuitem':['Menu','item'],'menulabel':['Menu','label'],'menulabelcontainer':['Menu','labelContainer'],'menureactbutton':['MenuReactButton','button'],'menureactbuttonfocused':['MenuReactButton','focused'],'menureactbuttonicon':['MenuReactButton','icon'],'menureactbuttons':['MenuReactButton','wrapper'],'menuscroller':['Menu','scroller'],'menuseparator':['Menu','separator'],'menuslider':['MenuSlider','slider'],'menuslidercontainer':['MenuSlider','sliderContainer'],'menustylefixed':['Menu','styleFixed'],'menustyleflexible':['Menu','styleFlexible'],'menusubmenu':['Menu','submenu'],'menusubmenucontainer':['Menu','submenuContainer'],'menusubtext':['Menu','subtext'],'message':['Message','message'],'messageaccessory':['MessageAccessory','container'],'messageavatar':['MessageBody','avatar'],'messageavatarclickable':['MessageBody','clickable'],'messagebackgroundflash':['Message','backgroundFlash'],'messagebarbase':['MessageElements','barBase'],'messagebarbuttonalt':['MessageElements','barButtonAlt'],'messagebarbuttonbase':['MessageElements','barButtonBase'],'messagebarbuttonicon':['MessageElements','barButtonIcon'],'messagebarbuttonmain':['MessageElements','barButtonMain'],'messagebarhasmore':['MessageElements','hasMore'],'messagebarjumptopresentbar':['MessageElements','jumpToPresentBar'],'messagebarloadingmore':['MessageElements','loadingMore'],'messagebarnewmessagesbar':['MessageElements','newMessagesBar'],'messagebarspan':['MessageElements','span'],'messagebarspinner':['MessageElements','spinner'],'messagebarspinneritem':['MessageElements','spinnerItem'],'messagebeforegroup':['Message','beforeGroup'],'messageblockedaction':['MessageBlocked','blockedAction'],'messageblockedcontainer':['MessageBlocked','container'],'messageblockedexpanded':['MessageBlocked','expanded'],'messageblockedicon':['MessageBlocked','blockedIcon'],'messageblockedsystemmessage':['MessageBlocked','blockedSystemMessage'],'messageblockedtext':['MessageBlocked','blockedMessageText'],'messageblockquotecontainer':['MessageMarkup','blockquoteContainer'],'messageblockquotedivider':['MessageMarkup','blockquoteDivider'],'messagebottag':['MessageBody','botTag'],'messagebottagcompact':['MessageBody','botTagCompact'],'messagebottagcozy':['MessageBody','botTagCozy'],'messagebuttoncontainer':['MessageBody','buttonContainer'],'messagebuttons':['Message','buttons'],'messagechanneltextarea':['Message','channelTextArea'],'messagecompact':['MessageBody','compact'],'messagecontents':['MessageBody','contents'],'messagecozy':['MessageBody','cozy'],'messagecozymessage':['Message','cozyMessage'],'messagedisableinteraction':['Message','disableInteraction'],'messagedivider':['Message','divider'],'messagedividerhascontent':['Message','hasContent'],'messageedited':['MessageBody','edited'],'messagegroupstart':['Message','groupStart'],'messagegroupblocked':['MessageElements','messageGroupBlocked'],'messagegroupblockedbtn':['MessageElements','messageGroupBlockedBtn'],'messagegroupblockedrevealed':['MessageElements','revealed'],'messageheader':['MessageBody','header'],'messagelocalbot':['Message','localBot'],'messagelocalbotoperations':['MessageLocalBot','localBotMessage'],'messagemarkup':['MessageMarkup','markup'],'messagemarkupcompact':['MessageBody','compact'],'messagemarkupcontent':['MessageBody','messageContent'],'messagemarkupcozy':['MessageBody','cozy'],'messagemarkupisfailed':['MessageBody','isFailed'],'messagemarkupissending':['MessageBody','isSending'],'messagemarkuprtl':['MessageBody','markupRtl'],'messagementioned':['Message','mentioned'],'messageoperations':['MessageOperations','operations'],'messagereaction':['MessageReactions','reaction'],'messagereactionme':['MessageReactions','reactionMe'],'messagereactions':['MessageReactions','reactions'],'messagereactionsmodalemoji':['MessageReactionsModal','emoji'],'messagereactionsmodalname':['MessageReactionsModal','name'],'messagereactionsmodalnickname':['MessageReactionsModal','nickname'],'messagereactionsmodalreactor':['MessageReactionsModal','reactor'],'messagereactionsmodalusername':['MessageReactionsModal','username'],'messageselected':['Message','selected'],'messages':['MessagesWrap','messages'],'messagesdivider':['MessagesWrap','divider'],'messagespopout':['MessagesPopout','messagesPopout'],'messagespopoutactionbuttons':['MessagesPopout','actionButtons'],'messagespopoutbody':['MessagesPopout','body'],'messagespopoutbottom':['MessagesPopout','bottom'],'messagespopoutbutton':['MessagesPopoutButtons','button'],'messagespopoutbuttonsecondary':['MessagesPopoutButtons','secondary'],'messagespopoutbuttontertiary':['MessagesPopoutButtons','tertiary'],'messagespopoutchannelname':['MessagesPopout','channelName'],'messagespopoutchannelseparator':['MessagesPopout','channelSeparator'],'messagespopoutclosebutton':['MessagesPopout','closeIcon'],'messagespopoutemptyplaceholder':['MessagesPopout','emptyPlaceholder'],'messagespopoutfooter':['MessagesPopout','footer'],'messagespopoutguildname':['MessagesPopout','guildName'],'messagespopoutgroupcozy':['MessagesPopout','messageGroupCozy'],'messagespopoutgroupwrapper':['MessagesPopout','messageGroupWrapper'],'messagespopouthasmore':['MessagesPopout','hasMore'],'messagespopouthasmorebutton':['MessagesPopout','hasMoreButton'],'messagespopoutheader':['MessagesPopout','header'],'messagespopoutimage':['MessagesPopout','image'],'messagespopoutjumpbutton':['MessagesPopout','jumpButton'],'messagespopoutloading':['MessagesPopout','loading'],'messagespopoutloadingmore':['MessagesPopout','loadingMore'],'messagespopoutloadingplaceholder':['MessagesPopout','loadingPlaceholder'],'messagespopoutscrollingfooterwrap':['MessagesPopout','scrollingFooterWrap'],'messagespopoutspinner':['MessagesPopout','spinner'],'messagespopouttabbar':['MessagesPopoutTabBar','tabBar'],'messagespopouttabbarheader':['MessagesPopoutTabBar','header'],'messagespopouttabbartab':['MessagesPopoutTabBar','tab'],'messagespopouttabbartabactive':['MessagesPopoutTabBar','active'],'messagespopouttitle':['MessagesPopout','title'],'messagespopoutvisible':['MessagesPopout','visible'],'messagespopoutwrap':['MessagesPopout','messagesPopoutWrap'],'messagesscroller':['MessagesWrap','scroller'],'messagesscrollerinner':['MessagesWrap','scrollerInner'],'messagesscrollerwrapper':['MessagesWrap','scrollerWrap'],'messageswelcomebase':['MessagesWelcome','base'],'messageswelcomedefault':['MessagesWelcome','default'],'messageswelcomedescription':['MessagesWelcome','description'],'messageswelcomeeditchannelbutton':['MessagesWrap','editChannelButton'],'messageswelcomeemptychannelicon':['MessagesWelcome','emptyChannelIcon'],'messageswelcomeheader':['MessagesWelcome','header'],'messageswelcome':['MessagesWelcome','header'],'messageswrapper':['MessagesWrap','messagesWrapper'],'messagesystem':['Message','systemMessage'],'messagesystemaccessories':['MessageBody','systemMessageAccessories'],'messagesystemcontainer':['MessageSystem','container'],'messagesystemcontent':['MessageSystem','content'],'messagesystemicon':['MessageSystem','icon'],'messagesystemiconcontainer':['MessageSystem','iconContainer'],'messagesystemiconsize':['MessageSystem','iconSize'],'messagetimedivider':['MessageDivider','divider'],'messagetimedividercontent':['MessageDivider','content'],'messagetimedividerhascontent':['MessageDivider','hasContent'],'messagetimedividerisunread':['MessageDivider','isUnread'],'messagetimedividerunreadpill':['MessageDivider','unreadPill'],'messagetimedividerunreadpillcap':['MessageDivider','unreadPillCap'],'messagetimedividerunreadpillcapstroke':['MessageDivider','unreadPillCapStroke'],'messagetimestampasiancompact':['MessageBody','asianCompactTimeStamp'],'messagetimestamp':['MessageBody','timestamp'],'messagetimestampalt':['MessageBody','alt'],'messagetimestamplatin12compact':['MessageBody','latin12CompactTimeStamp'],'messagetimestamplatin24compact':['MessageBody','latin24CompactTimeStamp'],'messagetimestampseparator':['MessageBody','separator'],'messagetimestampsystem':['MessageSystem','timestamp'],'messagetimestamptooltip':['MessageBody','timestampTooltip'],'messagetimestampvisibleonhover':['MessageBody','timestampVisibleOnHover'],'messagetoolbar':['MessageToolbar','container'],'messagetoolbarbutton':['MessageToolbarItems','button'],'messagetoolbarbuttondisabled':['MessageToolbarItems','disabled'],'messagetoolbarbuttonselected':['MessageToolbarItems','selected'],'messagetoolbaricon':['MessageToolbar','icon'],'messagetoolbarinner':['MessageToolbarItems','wrapper'],'messagetoolbarisheader':['MessageToolbar','isHeader'],'messagetoolbarseparator':['MessageToolbarItems','separator'],'messageuploadcancel':['MessageFile','cancelButton'],'messageusername':['MessageBody','username'],'messagewrapper':['MessageBody','wrapper'],'messagezalgo':['MessageBody','zalgo'],'modal':['ModalWrap','modal'],'modalclose':[t['LayerModal']['close']?'LayerModal':'Modal','close'],'modalchangelogmodal':['BDFDB','changeLogModal'],'modalconfirmmodal':['BDFDB','confirmModal'],'modalcontent':[t['LayerModal']['content']?'LayerModal':'Modal','content'],'modalfooter':['Modal','footer'],'modalguildname':['ModalItems','guildName'],'modalheader':['Modal','header'],'modalheaderhassibling':['BDFDB','modalHeaderHasSibling'],'modalinner':['ModalWrap','inner'],'modalmini':['ModalMiniContent','modal'],'modalminicontent':['ModalMiniContent','content'],'modalminitext':['HeaderBarTopic','content'],'modalnoscroller':['BDFDB','modalNoScroller'],'modalseparator':['LayerModal','separator'],'modalsizelarge':['Modal','sizeLarge'],'modalsizemedium':['Modal','sizeMedium'],'modalsizesmall':['Modal','sizeSmall'],'modalsub':['Modal','modal'],'modalsubinner':['BDFDB','modalSubInner'],'modaltabcontent':['BDFDB','modalTabContent'],'modaltabcontentopen':['BDFDB','modalTabContentOpen'],'modalwrapper':['BDFDB','modalWrapper'],'modedefault':['FormText','modeDefault'],'modedisabled':['FormText','modeDisabled'],'modeselectable':['FormText','modeSelectable'],'namecontainer':['NameContainer','container'],'namecontaineravatar':['NameContainer','avatar'],'namecontainerchildren':['NameContainer','children'],'namecontainerclickable':['NameContainer','clickable'],'namecontainercontent':['NameContainer','content'],'namecontainerlayout':['NameContainer','layout'],'namecontainername':['NameContainer','name'],'namecontainernamecontainer':['NotFound','nameContainerNameContainer'],'namecontainernamewrapper':['NameContainer','nameAndDecorators'],'namecontainerselected':['NameContainer','selected'],'namecontainersubtext':['NameContainer','subText'],'nametag':['NameTag','nameTag'],'nitrostore':['NitroStore','applicationStore'],'nochannel':['ChatWindow','noChannel'],'notice':['Notice','notice'],'noticebrand':['Notice','noticeBrand'],'noticebutton':['Notice','button'],'noticedanger':['Notice','noticeDanger'],'noticedefault':['Notice','noticeDefault'],'noticedownload':['Notice','noticeDownload'],'noticedismiss':['Notice','dismiss'],'noticefacebook':['Notice','noticeFacebook'],'noticeicon':['Notice','icon'],'noticeiconandroid':['Notice','iconAndroid'],'noticeiconapple':['Notice','iconApple'],'noticeiconwindows':['Notice','iconWindows'],'noticeinfo':['Notice','noticeInfo'],'noticenotification':['Notice','noticeNotification'],'noticeplatformicon':['Notice','platformIcon'],'noticepremium':['Notice','noticePremium'],'noticepremiumaction':['Notice','premiumAction'],'noticepremiumlogo':['Notice','premiumLogo'],'noticepremiumtext':['Notice','premiumText'],'noticepremiumtier1':['Notice','noticePremiumTier1'],'noticepremiumtier2':['Notice','noticePremiumTier2'],'noticerichpresence':['Notice','noticeRichPresence'],'noticespotify':['Notice','noticeSpotify'],'noticestreamer':['Notice','noticeStreamerMode'],'noticesuccess':['Notice','noticeSuccess'],'noticesurvey':['Notice','noticeSurvey'],'noticewrapper':['BDFDB','noticeWrapper'],'note':['SettingsItems','note'],'nowrap':['Flex','noWrap'],'overflowellipsis':['BDFDB','overflowEllipsis'],'paginationlist':['BDFDB','paginationList'],'paginationlistalphabet':['BDFDB','paginationListAlphabet'],'paginationlistalphabetchar':['BDFDB','paginationListAlphabetChar'],'paginationlistalphabetchardisabled':['BDFDB','paginationListAlphabetCharDisabled'],'paginationlistcontent':['BDFDB','paginationListContent'],'paginationlistpagination':['BDFDB','paginationListPagination'],'peoples':['Peoples','container'],'peoplesbadge':['Peoples','badge'],'peoplesnowplayingcolumn':['Peoples','nowPlayingColumn'],'peoplespeoplecolumn':['Peoples','peopleColumn'],'peoplestabbar':['Peoples','tabBar'],'pictureinpicture':['PictureInPicture','pictureInPicture'],'pictureinpicturewindow':['PictureInPicture','pictureInPictureWindow'],'popout':['Popout','popout'],'popoutarrowalignmentmiddle':['Popout','arrowAlignmentMiddle'],'popoutarrowalignmenttop':['Popout','arrowAlignmentTop'],'popoutbottom':['Popout','popoutBottom'],'popoutbottomleft':['Popout','popoutBottomLeft'],'popoutbottomright':['Popout','popoutBottomRight'],'popoutinvert':['Popout','popoutInvert'],'popoutleft':['Popout','popoutLeft'],'popoutnoarrow':['Popout','noArrow'],'popoutnoshadow':['Popout','noShadow'],'popoutright':['Popout','popoutRight'],'popouts':['Popout','popouts'],'popoutthemedpopout':['BDFDB','themedPopout'],'popouttop':['Popout','popoutTop'],'popouttopleft':['Popout','popoutTopLeft'],'popouttopright':['Popout','popoutTopRight'],'popoutwrapper':['BDFDB','popoutWrapper'],'quickmessage':['QuickMessage','input'],'quickselect':['QuickSelect','quickSelect'],'quickselectarrow':['QuickSelect','quickSelectArrow'],'quickselectclick':['QuickSelect','quickSelectClick'],'quickselectlabel':['QuickSelect','quickSelectLabel'],'quickselectvalue':['QuickSelect','quickSelectValue'],'quickselectwrapper':['BDFDB','quickSelectWrapper'],'quickswitcher':['QuickSwitchWrap','quickswitcher'],'quickswitchresult':['QuickSwitch','result'],'quickswitchresultfocused':['QuickSwitch','resultFocused'],'quickswitchresultguildicon':['QuickSwitch','guildIcon'],'quickswitchresulticon':['QuickSwitch','icon'],'quickswitchresulticoncontainer':['QuickSwitch','iconContainer'],'quickswitchresultmatch':['QuickSwitch','match'],'quickswitchresultmisccontainer':['QuickSwitchWrap','miscContainer'],'quickswitchresultname':['QuickSwitch','name'],'quickswitchresultnote':['QuickSwitch','note'],'quickswitchresultusername':['QuickSwitch','username'],'recentmentionschannelname':['RecentMentionsHeader','channelName'],'recentmentionsclosebutton':['RecentMentions','closeButton'],'recentmentionsdmicon':['RecentMentionsHeader','dmIcon'],'recentmentionsguildicon':['RecentMentionsHeader','guildIcon'],'recentmentionsguildname':['RecentMentionsHeader','guildName'],'recentmentionsjumpbutton':['RecentMentions','jumpButton'],'recentmentionspopout':['RecentMentions','recentMentionsPopout'],'scrollbar':['Scrollbar','scrollbar'],'scrollbardefault':['Scrollbar','scrollbarDefault'],'scrollbarghost':['Scrollbar','scrollbarGhost'],'scrollbarghosthairline':['Scrollbar','scrollbarGhostHairline'],'scroller':['ScrollerOld','scroller'],'scrollerbase':['Scroller','scrollerBase'],'scrollerbaseauto':['Scroller','auto'],'scrollerbasefade':['Scroller','fade'],'scrollerbaselistcontent':['Scroller','listContent'],'scrollerbasenone':['Scroller','none'],'scrollerbasescrolling':['Scroller','scrolling'],'scrollerbasethin':['Scroller','thin'],'scrollerfade':['ScrollerOld','scrollerFade'],'scrollersystempad':['ScrollerOld','systemPad'],'scrollerthemed':['ScrollerOld','scrollerThemed'],'scrollerthemedwithtrack':['ScrollerOld','themedWithTrack'],'scrollerthemeghost':['ScrollerOld','themeGhost'],'scrollerthemeghosthairline':['ScrollerOld','themeGhostHairline'],'scrollerthemeghosthairlinechannels':['ScrollerOld','themeGhostHairlineChannels'],'scrollerwrap':['ScrollerOld','scrollerWrap'],'searchbar':['SearchBar','container'],'searchbarclear':['SearchBar','clear'],'searchbarclose':['SearchBar','close'],'searchbaricon':['SearchBar','icon'],'searchbariconlayout':['SearchBar','iconLayout'],'searchbariconwrap':['SearchBar','iconContainer'],'searchbarinner':['SearchBar','inner'],'searchbarinput':['SearchBar','input'],'searchbarlarge':['SearchBar','large'],'searchbarmedium':['SearchBar','medium'],'searchbarsmall':['SearchBar','small'],'searchbartag':['SearchBar','tag'],'searchbarvisible':['SearchBar','visible'],'searchpopout':['SearchPopoutWrap','container'],'searchpopoutanswer':['SearchPopout','answer'],'searchpopoutdatepicker':['SearchPopout','datePicker'],'searchpopoutdatepickerhint':['SearchPopout','datePickerHint'],'searchpopoutdmaddpopout':['DmAddPopout','popout'],'searchpopoutddmadddiscordtag':['DmAddPopoutItems','discordTag'],'searchpopoutddmaddfriend':['DmAddPopoutItems','friend'],'searchpopoutddmaddfriendwrapper':['DmAddPopoutItems','friendWrapper'],'searchpopoutddmaddnickname':['DmAddPopoutItems','nickname'],'searchpopoutdisplayavatar':['SearchPopout','displayAvatar'],'searchpopoutdisplayusername':['SearchPopout','displayUsername'],'searchpopoutdisplayednick':['SearchPopout','displayedNick'],'searchpopoutfilter':['SearchPopout','filter'],'searchpopoutheader':['SearchPopout','header'],'searchpopouthint':['SearchPopout','hint'],'searchpopouthintvalue':['SearchPopout','hintValue'],'searchpopoutlinksource':['SearchPopout','linkSource'],'searchpopoutnontext':['SearchPopout','nonText'],'searchpopoutoption':['SearchPopout','option'],'searchpopoutplusicon':['SearchPopout','plusIcon'],'searchpopoutresultchannel':['SearchPopout','resultChannel'],'searchpopoutresultsgroup':['SearchPopout','resultsGroup'],'searchpopoutsearchclearhistory':['SearchPopout','searchClearHistory'],'searchpopoutsearchlearnmore':['SearchPopout','searchLearnMore'],'searchpopoutsearchoption':['SearchPopout','searchOption'],'searchpopoutsearchresultchannelcategory':['SearchPopout','searchResultChannelCategory'],'searchpopoutsearchresultchannelicon':['SearchPopout','searchResultChannelIcon'],'searchpopoutsearchresultchanneliconbackground':['SearchPopout','searchResultChannelIconBackground'],'searchpopoutselected':['SearchPopout','selected'],'searchpopoutuser':['SearchPopout','user'],'searchresultsafter':['SearchResultsMessage','after'],'searchresultsalt':['SearchResults','alt'],'searchresultsbefore':['SearchResultsMessage','before'],'searchresultschannelname':['SearchResultsElements','channelName'],'searchresultschannelSeparator':['SearchResultsElements','channelSeparator'],'searchresultsexpanded':['SearchResultsMessage','expanded'],'searchresultsgroupcozy':['SearchResultsMessage','messageGroupCozy'],'searchresultshit':['SearchResultsMessage','hit'],'searchresultspagination':['SearchResultsPagination','pagination'],'searchresultspaginationbutton':['SearchResultsPagination','paginationButton'],'searchresultspaginationdisabled':['SearchResultsPagination','disabled'],'searchresultspaginationicon':['SearchResultsPagination','icon'],'searchresultssibling':['SearchResultsMessage','sibling'],'searchresultswrap':['SearchResults','searchResultsWrap'],'select':['Select','select'],'selectwrapper':['BDFDB','selectWrapper'],'settingsclosebutton':['SettingsCloseButton','closeButton'],'settingsclosebuttoncontainer':['SettingsCloseButton','container'],'settingsguild':['BDFDB','settingsGuild'],'settingsguilddisabled':['BDFDB','settingsGuildDisabled'],'settingsheader':['Item','header'],'settingsitem':['Item','item'],'settingsitemdragged':['ItemRole','dragged'],'settingsitemdlock':['ItemRole','lock'],'settingsitemrole':['ItemRole','role'],'settingsitemroleinner':['ItemRole','roleInner'],'settingsitemselected':['Item','selected'],'settingsitemthemed':['Item','themed'],'settingsPanel':['BDFDB','settingsPanel'],'settingspanelheader':['BDFDB','settingsPanelHeader'],'settingspanelheaderbutton':['BDFDB','settingsPanelHeaderButton'],'settingspanelheadercontrols':['BDFDB','settingsPanelHeaderControls'],'settingspanelinner':['BDFDB','settingsPanelInner'],'settingspanellist':['BDFDB','settingsPanelList'],'settingspaneltitle':['BDFDB','settingsPanelTitle'],'settingsseparator':['Item','separator'],'settingstableheader':['SettingsTable','header'],'settingstableheadername':['SettingsTable','headerName'],'settingstableheaderoption':['SettingsTable','headerOption'],'settingstableheaders':['BDFDB','settingsTableHeaders'],'settingstableheadervertical':['BDFDB','settingsTableHeaderVertical'],'settingstablecard':['BDFDB','settingsTableCard'],'settingstablecardconfigs':['BDFDB','settingsTableCardConfigs'],'settingstablecardlabel':['BDFDB','settingsTableCardLabel'],'settingstablelist':['BDFDB','settingsTableList'],'settingswindowcontentcolumn':['SettingsWindow','contentColumn'],'settingswindowcontentregion':['SettingsWindow','contentRegion'],'settingswindowcontentregionscroller':['SettingsWindow','contentRegionScroller'],'settingswindowsidebarregion':['SettingsWindow','sidebarRegion'],'settingswindowsidebarregionscroller':['SettingsWindow','sidebarRegionScroller'],'settingswindowstandardsidebarview':['SettingsWindow','standardSidebarView'],'settingswindowsubsidebarcontent':['SettingsWindowScroller','content'],'settingswindowsubsidebarscroller':['SettingsWindowScroller','scroller'],'settingswindowtoolscontainer':['SettingsWindow','toolsContainer'],'size10':['TextSize','size10'],'size12':['TextSize','size12'],'size14':['TextSize','size14'],'size16':['TextSize','size16'],'size20':['TextSize','size20'],'size24':['TextSize','size24'],'size32':['TextSize','size32'],'slider':['Slider','slider'],'sliderbar':['Slider','bar'],'sliderbarfill':['Slider','barFill'],'sliderbubble':['BDFDB','sliderBubble'],'sliderdisabled':['Slider','disabled'],'slidergrabber':['Slider','grabber'],'sliderinput':['Slider','input'],'slidermark':['Slider','mark'],'slidermarkdash':['Slider','markDash'],'slidermarkdashsimple':['Slider','markDashSimple'],'slidermarkvalue':['Slider','markValue'],'slidermini':['Slider','mini'],'slidertrack':['Slider','track'],'spoilercontainer':['Spoiler','spoilerContainer'],'spoilerembed':['SpoilerEmbed','spoiler'],'spoilerembedhidden':['SpoilerEmbed','hiddenSpoilers'],'spoilerembedinline':['SpoilerEmbed','inline'],'spoilerhidden':['Spoiler','hidden'],'spoilertext':['Spoiler','spoilerText'],'spoilerwarning':['Spoiler','spoilerWarning'],'splashbackground':['NotFound','splashBackground'],'strikethrough':['TextStyle','strikethrough'],'status':['Avatar','status'],'stopanimations':['NotFound','stopAnimations'],'subtext':['NotFound','subtext'],'svgicon':['BDFDB','svgIcon'],'svgiconwrapper':['BDFDB','svgIconWrapper'],'switch':['Switch','switch'],'switchdisabled':['Switch','switchDisabled'],'switchenabled':['Switch','switchEnabled'],'switchinner':['Switch','checkbox'],'switchinnerdisabled':['Switch','checkboxDisabled'],'switchinnerenabled':['Switch','checkboxEnabled'],'switchsize':['Switch','size'],'switchsizedefault':['Switch','sizeDefault'],'switchsizemini':['Switch','sizeMini'],'switchthemeclear':['Switch','themeClear'],'switchthemedefault':['Switch','themeDefault'],'switchvalue':['Switch','value'],'switchvaluechecked':['Switch','valueChecked'],'switchvalueunchecked':['Switch','valueUnchecked'],'tabbar':['UserProfile','tabBar'],'tabbarcontainer':['UserProfile','tabBarContainer'],'tabbarcontainerbottom':['BDFDB','tabBarContainerBottom'],'tabbaritem':['UserProfile','tabBarItem'],'tabbartop':['Item','top'],'table':['BDFDB','table'],'tablebodycell':['BDFDB','tableBodyCell'],'tableheader':['BDFDB','tableHeader'],'tableheadercell':['BDFDB','tableHeaderCellSorted'],'tableheadercellsorted':['BDFDB','tableHeaderCell'],'tableheadersorticon':['BDFDB','tableHeaderSortIcon'],'tablerow':['BDFDB','tableRow'],'tablestickyheader':['BDFDB','tableStickyHeader'],'textarea':['ChannelTextArea','textArea'],'textareaattachbutton':['ChannelTextAreaAttachButton','attachButton'],'textareaattachbuttoninner':['ChannelTextAreaAttachButton','attachButtonInner'],'textareaattachbuttonplus':['ChannelTextAreaAttachButton','attachButtonPlus'],'textareaattachwrapper':['ChannelTextAreaAttachButton','attachWrapper'],'textareabutton':['ChannelTextAreaButton','button'],'textareabuttonactive':['ChannelTextAreaButton','active'],'textareabuttonpulse':['ChannelTextAreaButton','pulseButton'],'textareabuttonwrapper':['ChannelTextAreaButton','buttonWrapper'],'textareacharcounter':['ChannelTextAreaCharCounter','characterCount'],'textareacharcountererror':['ChannelTextAreaCharCounter','error'],'textareadisabled':['ChannelTextArea','textAreaDisabled'],'textareafontsize12padding':['ChannelTextArea','fontSize12Padding'],'textareafontsize14padding':['ChannelTextArea','fontSize14Padding'],'textareafontsize15padding':['ChannelTextArea','fontSize15Padding'],'textareafontsize16padding':['ChannelTextArea','fontSize16Padding'],'textareafontsize18padding':['ChannelTextArea','fontSize18Padding'],'textareafontsize20padding':['ChannelTextArea','fontSize20Padding'],'textareafontsize24padding':['ChannelTextArea','fontSize24Padding'],'textareaicon':['ChannelTextAreaButton','icon'],'textareaiconpulse':['ChannelTextAreaButton','pulseIcon'],'textareainner':['ChannelTextArea','inner'],'textareainnerdisabled':['ChannelTextArea','innerDisabled'],'textareapickerbutton':['ChannelTextArea','button'],'textareapickerbuttoncontainer':['ChannelTextArea','buttonContainer'],'textareapickerbuttons':['ChannelTextArea','buttons'],'textareascrollablecontainer':['ChannelTextArea','scrollableContainer'],'textareaslate':['ChannelTextArea','textAreaSlate'],'textareaslatemarkup':['ChannelTextAreaSlate','slateTextArea'],'textareaslatecontainer':['ChannelTextAreaSlate','slateContainer'],'textareaslateplaceholder':['ChannelTextAreaSlate','placeholder'],'textareauploadinput':['ChannelTextAreaAttachButton','uploadInput'],'textareawebkit':['ChannelTextArea','webkit'],'textareawrapall':['ChannelTextArea','channelTextArea'],'textareawrapchat':['ChatWindow','channelTextArea'],'textareawrapdisabled':['ChannelTextArea','channelTextAreaDisabled'],'textlink':['Notice','textLink'],'textrow':['PopoutActivity','textRow'],'textscroller':['BDFDB','textScroller'],'themedark':['NotFound','themeDark'],'themelight':['NotFound','themeLight'],'themeundefined':['NotFound','themeUndefined'],'tip':['Tip','tip'],'tipblock':['Tip','block'],'tippro':['Tip','pro'],'tipinline':['Tip','inline'],'title':['SettingsItems','title'],'titlebar':['TitleBar','titleBar'],'titlebarmac':['TitleBar','typeMacOS'],'titlebarmacbutton':['TitleBar','macButton'],'titlebarmacbuttonclose':['TitleBar','macButtonClose'],'titlebarmacbuttonmin':['TitleBar','macButtonMinimize'],'titlebarmacbuttonmax':['TitleBar','macButtonMaximize'],'titlebarmacbuttons':['TitleBar','macButtons'],'titlebarmacwithframe':['TitleBar','typeMacOSWithFrame'],'titlebarwinbutton':['TitleBar','winButton'],'titlebarwinbuttonclose':['TitleBar','winButtonClose'],'titlebarwinbuttonminmax':['TitleBar','winButtonMinMax'],'titlebarwindows':['TitleBar','typeWindows'],'titlebarwithframe':['TitleBar','withFrame'],'titlebarwordmark':['TitleBar','wordmark'],'titlebarwordmarkmac':['TitleBar','wordmarkMacOS'],'titlebarwordmarkwindows':['TitleBar','wordmarkWindows'],'titledefault':['SettingsItems','titleDefault'],'titlemini':['SettingsItems','titleMini'],'titlesize10':['UserPopout','size10'],'titlesize12':['UserPopout','size12'],'titlesize14':['UserPopout','size14'],'titlesize16':['UserPopout','size16'],'titlesize18':['Title','size18'],'tooltip':['Tooltip','tooltip'],'tooltipactivityicon':['TooltipGuild','activityIcon'],'tooltipblack':['Tooltip','tooltipBlack'],'tooltipbottom':['Tooltip','tooltipBottom'],'tooltipbrand':['Tooltip','tooltipBrand'],'tooltipcontent':['Tooltip','tooltipContent'],'tooltipcontentallowoverflow':['Tooltip','tooltipContentAllowOverflow'],'tooltipcustom':['BDFDB','tooltipCustom'],'tooltipgreen':['Tooltip','tooltipGreen'],'tooltipgrey':['Tooltip','tooltipGrey'],'tooltipguildnametext':['TooltipGuild','guildNameText'],'tooltipguildnametextlimitedsize':['TooltipGuild','guildNameTextLimitedSize'],'tooltipleft':['Tooltip','tooltipLeft'],'tooltiplistitem':['GuildsItems','listItemTooltip'],'tooltippointer':['Tooltip','tooltipPointer'],'tooltipred':['Tooltip','tooltipRed'],'tooltipright':['Tooltip','tooltipRight'],'tooltiprow':['TooltipGuild','row'],'tooltiprowguildname':['TooltipGuild','rowGuildName'],'tooltiprowicon':['TooltipGuild','rowIcon'],'tooltiptop':['Tooltip','tooltipTop'],'tooltipyellow':['Tooltip','tooltipYellow'],'typing':['Typing','typing'],'typingcooldownwrapper':['Typing','cooldownWrapper'],'typingtext':['Typing','text'],'underline':['TextStyle','underline'],'unreadbar':['UnreadBar','bar'],'unreadbaractive':['UnreadBar','active'],'unreadbarcontainer':['UnreadBar','container'],'unreadbaricon':['UnreadBar','icon'],'unreadbarmention':['UnreadBar','mention'],'unreadbartext':['UnreadBar','text'],'unreadbarunread':['UnreadBar','unread'],'uploadmodal':['UploadModal','uploadModal'],'userinfo':['UserInfo','userInfo'],'userinfoavatar':['UserInfo','avatar'],'userinfodate':['BDFDB','userInfoDate'],'userinfodiscordtag':['UserInfo','discordTag'],'userinfodiscriminator':['UserInfo','discriminator'],'userinfohovered':['UserInfo','hovered'],'userinfosubtext':['UserInfo','subtext'],'userinfotext':['UserInfo','text'],'userinfousername':['UserInfo','username'],'userpopout':['UserPopout','userPopout'],'userpopoutavatarhint':['UserPopout','avatarHint'],'userpopoutavatarhintinner':['UserPopout','avatarHintInner'],'userpopoutavatarwrapper':['UserPopout','avatarWrapper'],'userpopoutavatarwrappernormal':['UserPopout','avatarWrapperNormal'],'userpopoutbody':['UserPopout','body'],'userpopoutbodytitle':['UserPopout','bodyTitle'],'userpopoutcustomstatus':['UserPopout','customStatus'],'userpopoutcustomstatusemoji':['UserPopout','customStatusEmoji'],'userpopoutcustomstatussoloemoji':['UserPopout','customStatusSoloEmoji'],'userpopoutcustomstatustext':['UserPopout','customStatusText'],'userpopoutendbodysection':['UserPopout','endBodySection'],'userpopoutfooter':['UserPopout','footer'],'userpopoutheader':['UserPopout','header'],'userpopoutheaderbottagwithnickname':['UserPopout','headerBotTagWithNickname'],'userpopoutheadernamewrapper':['UserPopout','headerNameWrapper'],'userpopoutheadernickname':['UserPopout','headerName'],'userpopoutheadernormal':['UserPopout','headerNormal'],'userpopoutheaderplaying':['UserPopout','headerPlaying'],'userpopoutheaderspotify':['UserPopout','headerSpotify'],'userpopoutheaderstreaming':['UserPopout','headerStreaming'],'userpopoutheadertag':['UserPopout','headerTag'],'userpopoutheadertagnonickname':['UserPopout','headerTagNoNickname'],'userpopoutheadertagusernamenonickname':['UserPopout','headerTagUsernameNoNickname'],'userpopoutheadertagwithnickname':['UserPopout','headerTagWithNickname'],'userpopoutheadertext':['UserPopout','headerText'],'userpopoutheadertop':['UserPopout','headerTop'],'userpopoutprotip':['UserPopout','protip'],'userpopoutrole':['Role','role'],'userpopoutrolecircle':['Role','roleCircle'],'userpopoutrolelist':['UserPopout','rolesList'],'userpopoutrolename':['Role','roleName'],'userpopoutroles':['Role','root'],'userprofile':['UserProfile','root'],'userprofilebody':['UserProfile','body'],'userprofilebottag':['UserProfile','botTag'],'userprofilecustomstatus':['UserProfile','customStatusText'],'userprofilecustomstatusemoji':['UserProfile','customStatusEmoji'],'userprofileheader':['UserProfile','header'],'userprofileheaderfill':['UserProfile','headerFill'],'userprofileheaderinfo':['UserProfile','headerInfo'],'userprofilelistavatar':['UserProfile','listAvatar'],'userprofilelistguildavatarwithouticon':['UserProfile','guildAvatarWithoutIcon'],'userprofilenametag':['UserProfile','nameTag'],'userprofiletopsectionnormal':['UserProfile','topSectionNormal'],'userprofiletopsectionplaying':['UserProfile','topSectionPlaying'],'userprofiletopsectionspotify':['UserProfile','topSectionSpotify'],'userprofiletopsectionstreaming':['UserProfile','topSectionStreaming'],'userprofiletopsectionxbox':['UserProfile','topSectionXbox'],'userprofileusername':['UserProfile','username'],'username':['NameTag','username'],'usernotepopout':['UserPopout','note'],'usernoteprofile':['UserProfile','note'],'usernotetextarea':['NoteTextarea','textarea'],'vertical':['Flex','vertical'],'voiceavatar':['VoiceChannel','avatar'],'voiceavatarcontainer':['VoiceChannel','avatarContainer'],'voiceavatarlarge':['VoiceChannel','avatarLarge'],'voiceavatarsmall':['VoiceChannel','avatarSmall'],'voiceavatarspeaking':['VoiceChannel','avatarSpeaking'],'voiceclickable':['VoiceChannel','clickable'],'voicecontent':['VoiceChannel','content'],'voicedetails':['VoiceDetails','container'],'voicedetailsactionbuttons':['VoiceDetails','actionButtons'],'voicedetailsbutton':['VoiceDetails','button'],'voicedetailsbuttonactive':['VoiceDetails','buttonActive'],'voicedetailsbuttoncolor':['VoiceDetails','buttonColor'],'voicedetailsbuttonicon':['VoiceDetails','buttonIcon'],'voicedetailschannel':['VoiceDetails','channel'],'voicedetailscustomstatuscontainer':['VoiceDetails','customStatusContainer'],'voicedetailshotspot':['VoiceDetails','hotspot'],'voicedetailsinner':['VoiceDetails','inner'],'voicedetailslabelwrapper':['VoiceDetailsPing','labelWrapper'],'voicedetailsping':['VoiceDetailsPing','ping'],'voicedetailspingforeground':['VoiceDetailsPing','pingForeground'],'voicedetailsqualityaverage':['VoiceDetailsPing','rtcConnectionQualityAverage'],'voicedetailsqualitybad':['VoiceDetailsPing','rtcConnectionQualityBad'],'voicedetailsqualityfine':['VoiceDetailsPing','rtcConnectionQualityFine'],'voicedetailsstatus':['VoiceDetailsPing','rtcConnectionStatus'],'voicedetailsstatusconnected':['VoiceDetailsPing','rtcConnectionStatusConnected'],'voicedetailsstatusconnecting':['VoiceDetailsPing','rtcConnectionStatusConnecting'],'voicedetailsstatuserror':['VoiceDetailsPing','rtcConnectionStatusError'],'voicedetailsstatuswithpopout':['VoiceDetails','statusWithPopout'],'voicedraggable':['NotFound','voiceDraggable'],'voiceflipped':['VoiceChannel','flipped'],'voiceicon':['VoiceChannel','icon'],'voiceicons':['VoiceChannel','icons'],'voiceiconspacing':['VoiceChannel','iconSpacing'],'voicelist':['VoiceChannel','list'],'voicelist2':['VoiceChannelList','list'],'voicelistcollapsed':['VoiceChannel','listCollapse'],'voicelistcollapsed2':['VoiceChannelList','collapsed'],'voicelistdefault':['VoiceChannel','listDefault'],'voiceliveicon':['VoiceChannel','liveIcon'],'voicename':['VoiceChannel','username'],'voicenamefont':['VoiceChannel','usernameFont'],'voicenamespeaking':['VoiceChannel','usernameSpeaking'],'voiceselected':['VoiceChannel','selected'],'voiceuser':['VoiceChannel','voiceUser'],'voiceuserlarge':['VoiceChannel','userLarge'],'voiceusersmall':['VoiceChannel','userSmall'],'webhookcard':['WebhookCard','card'],'webhookcardbody':['WebhookCard','body'],'webhookcardcopybutton':['WebhookCard','copyButton'],'webhookcardheader':['WebhookCard','header'],'wrap':['Flex','wrap'],'wrapreverse':['Flex','wrapReverse']};b['DiscordClasses']=Object['assign']({},u);c['getDiscordClass']=(K,L)=>{let M=t['BDFDB']['BDFDBundefined'];if(u[K]===undefined){b['LogUtils']['warn'](K+'\x20not\x20found\x20in\x20DiscordClasses');return M;}else if(!b['ArrayUtils']['is'](u[K])||u[K]['length']!=0x2){b['LogUtils']['warn'](K+'\x20is\x20not\x20an\x20Array\x20of\x20Length\x202\x20in\x20DiscordClasses');return M;}else if(t[u[K][0x0]]===undefined){b['LogUtils']['warn'](u[K][0x0]+'\x20not\x20found\x20in\x20DiscordClassModules');return M;}else if(t[u[K][0x0]][u[K][0x1]]===undefined){b['LogUtils']['warn'](u[K][0x1]+'\x20not\x20found\x20in\x20'+u[K][0x0]+'\x20in\x20DiscordClassModules');return M;}else{M=t[u[K][0x0]][u[K][0x1]];if(L){M=M['split']('\x20')['filter'](N=>N['indexOf']('da-')!=0x0)['join'](L?'.':'\x20');M=M||t['BDFDB']['BDFDBundefined'];}return M;}};b['disCN']=new Proxy(u,{'get':function(K,L){return c['getDiscordClass'](L,![])['replace']('#','');}});b['disCNS']=new Proxy(u,{'get':function(K,L){return c['getDiscordClass'](L,![])['replace']('#','')+'\x20';}});b['disCNC']=new Proxy(u,{'get':function(K,L){return c['getDiscordClass'](L,![])['replace']('#','')+',';}});b['dotCN']=new Proxy(u,{'get':function(K,L){let M=c['getDiscordClass'](L,!![]);return(M['indexOf']('#')==0x0?'':'.')+M;}});b['dotCNS']=new Proxy(u,{'get':function(K,L){let M=c['getDiscordClass'](L,!![]);return(M['indexOf']('#')==0x0?'':'.')+M+'\x20';}});b['dotCNC']=new Proxy(u,{'get':function(K,L){let M=c['getDiscordClass'](L,!![]);return(M['indexOf']('#')==0x0?'':'.')+M+',';}});b['notCN']=new Proxy(u,{'get':function(K,L){return':not(.'+c['getDiscordClass'](L,!![])['split']('.')[0x0]+')';}});b['notCNS']=new Proxy(u,{'get':function(K,L){return':not(.'+c['getDiscordClass'](L,!![])['split']('.')[0x0]+')\x20';}});b['notCNC']=new Proxy(u,{'get':function(K,L){return':not(.'+c['getDiscordClass'](L,!![])['split']('.')[0x0]+'),';}});var v=n['LanguageStore']&&n['LanguageStore']['_proxyContext']?Object['assign']({},n['LanguageStore']['_proxyContext']['defaultMessages']):{};b['LanguageUtils']={};b['LanguageUtils']['languages']={'$discord':{'name':'Discord\x20(English))','id':'en','ownlang':'English'},'af':{'name':'Afrikaans','id':'af','ownlang':'Afrikaans'},'sq':{'name':'Albanian','id':'sq','ownlang':'Shqiptar'},'am':{'name':'Amharic','id':'am','ownlang':'አማርኛ'},'ar':{'name':'Arabic','id':'ar','ownlang':'اللغة\x20العربية'},'hy':{'name':'Armenian','id':'hy','ownlang':'Հայերեն'},'az':{'name':'Azerbaijani','id':'az','ownlang':'آذربایجان\x20دیلی'},'ba':{'name':'Bashkir','id':'ba','ownlang':'Башҡорт'},'eu':{'name':'Basque','id':'eu','ownlang':'Euskara'},'be':{'name':'Belarusian','id':'be','ownlang':'Беларуская'},'bn':{'name':'Bengali','id':'bn','ownlang':'বাংলা'},'bs':{'name':'Bosnian','id':'bs','ownlang':'Босански'},'bg':{'name':'Bulgarian','id':'bg','ownlang':'български'},'my':{'name':'Burmese','id':'my','ownlang':'မြန်မာစာ'},'ca':{'name':'Catalan','id':'ca','ownlang':'Català'},'ceb':{'name':'Cebuano','id':'ceb','ownlang':'Bisaya'},'ny':{'name':'Chichewa','id':'ny','ownlang':'Nyanja'},'zh':{'name':'Chinese','id':'zh','ownlang':'中文'},'zh-HK':{'name':'Chinese\x20(Hong\x20Kong)','id':'zh-HK','ownlang':'香港中文'},'zh-CN':{'name':'Chinese\x20(Simplified)','id':'zh-CN','ownlang':'简体中文'},'zh-TW':{'name':'Chinese\x20(Traditional)','id':'zh-TW','ownlang':'繁體中文'},'co':{'name':'Corsican','id':'co','ownlang':'Corsu'},'hr':{'name':'Croatian','id':'hr','ownlang':'Hrvatski'},'cs':{'name':'Czech','id':'cs','ownlang':'Čeština'},'da':{'name':'Danish','id':'da','ownlang':'Dansk'},'nl':{'name':'Dutch','id':'nl','ownlang':'Nederlands'},'en':{'name':'English','id':'en','ownlang':'English'},'en-GB':{'name':'English\x20(UK)','id':'en-GB','ownlang':'English\x20(UK)'},'en-US':{'name':'English\x20(US)','id':'en-US','ownlang':'English\x20(US)'},'eo':{'name':'Esperanto','id':'eo','ownlang':'Esperanto'},'et':{'name':'Estonian','id':'et','ownlang':'Eesti'},'fil':{'name':'Filipino','id':'fil','ownlang':'Wikang\x20Filipino'},'fi':{'name':'Finnish','id':'fi','ownlang':'Suomi'},'fr':{'name':'French','id':'fr','ownlang':'Français'},'fr-CA':{'name':'French\x20(Canadian)','id':'fr-CA','ownlang':'Français\x20Canadien'},'fy':{'name':'Frisian','id':'fy','ownlang':'Frysk'},'gl':{'name':'Galician','id':'gl','ownlang':'Galego'},'ka':{'name':'Georgian','id':'ka','ownlang':'ქართული'},'de':{'name':'German','id':'de','ownlang':'Deutsch'},'de-AT':{'name':'German\x20(Austria)','id':'de-AT','ownlang':'Österreichisch\x20Deutsch'},'de-CH':{'name':'German\x20(Switzerland)','id':'de-CH','ownlang':'Schweizerdeutsch'},'el':{'name':'Greek','id':'el','ownlang':'Ελληνικά'},'gu':{'name':'Gujarati','id':'gu','ownlang':'ગુજરાતી'},'ht':{'name':'Haitian\x20Creole','id':'ht','ownlang':'Kreyòl\x20Ayisyen'},'ha':{'name':'Hausa','id':'ha','ownlang':'حَوْسَ'},'haw':{'name':'Hawaiian','id':'haw','ownlang':'ʻŌlelo\x20Hawaiʻi'},'he':{'name':'Hebrew','id':'he','ownlang':'עברית'},'iw':{'name':'Hebrew\x20(Israel)','id':'iw','ownlang':'עברית'},'hi':{'name':'Hindi','id':'hi','ownlang':'हिन्दी'},'hmn':{'name':'Hmong','id':'hmn','ownlang':'lol\x20Hmongb'},'hu':{'name':'Hungarian','id':'hu','ownlang':'Magyar'},'is':{'name':'Icelandic','id':'is','ownlang':'Íslenska'},'ig':{'name':'Igbo','id':'ig','ownlang':'Asụsụ\x20Igbo'},'id':{'name':'Indonesian','id':'id','ownlang':'Bahasa\x20Indonesia'},'ga':{'name':'Irish','id':'ga','ownlang':'Gaeilge'},'it':{'name':'Italian','id':'it','ownlang':'Italiano'},'ja':{'name':'Japanese','id':'ja','ownlang':'日本語'},'jv':{'name':'Javanese','id':'jv','ownlang':'ꦧꦱꦗꦮ'},'jw':{'name':'Javanese\x20(Javanese)','id':'jw','ownlang':'ꦧꦱꦗꦮ'},'kn':{'name':'Kannada','id':'kn','ownlang':'ಕನ್ನಡ'},'kk':{'name':'Kazakh','id':'kk','ownlang':'Қазақ\x20Tілі'},'km':{'name':'Khmer','id':'km','ownlang':'ភាសាខ្មែរ'},'rw':{'name':'Kinyarwanda','id':'rw','ownlang':'Ikinyarwanda'},'ko':{'name':'Korean','id':'ko','ownlang':'한국어'},'ku':{'name':'Kurdish','id':'ku','ownlang':'کوردی'},'ky':{'name':'Kyrgyz','id':'ky','ownlang':'кыргызча'},'lo':{'name':'Lao','id':'lo','ownlang':'ພາສາລາວ'},'la':{'name':'Latin','id':'la','ownlang':'Latina'},'lv':{'name':'Latvian','id':'lv','ownlang':'Latviešu'},'lt':{'name':'Lithuanian','id':'lt','ownlang':'Lietuvių'},'lb':{'name':'Luxembourgish','id':'lb','ownlang':'Lëtzebuergesch'},'mk':{'name':'Macedonian','id':'mk','ownlang':'Mакедонски'},'mg':{'name':'Malagasy','id':'mg','ownlang':'Malagasy'},'ms':{'name':'Malay','id':'ms','ownlang':'بهاس\x20ملايو'},'ml':{'name':'Malayalam','id':'ml','ownlang':'മലയാളം'},'mt':{'name':'Maltese','id':'mt','ownlang':'Malti'},'mi':{'name':'Maori','id':'mi','ownlang':'te\x20Reo\x20Māori'},'mr':{'name':'Marathi','id':'mr','ownlang':'मराठी'},'mhr':{'name':'Mari','id':'mhr','ownlang':'марий\x20йылме'},'mn':{'name':'Mongolian','id':'mn','ownlang':'Монгол\x20Хэл'},'my':{'name':'Myanmar\x20(Burmese)','id':'my','ownlang':'မြန်မာл\x20Хэл'},'ne':{'name':'Nepali','id':'ne','ownlang':'नेपाली'},'no':{'name':'Norwegian','id':'no','ownlang':'Norsk'},'or':{'name':'Odia','id':'or','ownlang':'ଓଡ଼ିଆ'},'pap':{'name':'Papiamento','id':'pap','ownlang':'Papiamentu'},'ps':{'name':'Pashto','id':'ps','ownlang':'پښتو'},'fa':{'name':'Persian','id':'fa','ownlang':'فارسی'},'pl':{'name':'Polish','id':'pl','ownlang':'Polski'},'pt':{'name':'Portuguese','id':'pt','ownlang':'Português'},'pt-BR':{'name':'Portuguese\x20(Brazil)','id':'pt-BR','ownlang':'Português\x20do\x20Brasil'},'pt-PT':{'name':'Portuguese\x20(Portugal)','id':'pt-PT','ownlang':'Português\x20do\x20Portugal'},'pa':{'name':'Punjabi','id':'pa','ownlang':'पंजाबी'},'ro':{'name':'Romanian','id':'ro','ownlang':'Română'},'ru':{'name':'Russian','id':'ru','ownlang':'Pусский'},'sm':{'name':'Samoan','id':'sm','ownlang':'Gagana\x20Sāmoa'},'gd':{'name':'Scottish\x20Gaelic','id':'gd','ownlang':'Gàidhlig'},'sr':{'name':'Serbian','id':'sr','ownlang':'Српски'},'st':{'name':'Sesotho','id':'st','ownlang':'Sesotho'},'sn':{'name':'Shona','id':'sn','ownlang':'Shona'},'sd':{'name':'Sindhi','id':'sd','ownlang':'سنڌي'},'si':{'name':'Sinhala','id':'si','ownlang':'සිංහල'},'sk':{'name':'Slovak','id':'sk','ownlang':'Slovenčina'},'sl':{'name':'Slovenian','id':'sl','ownlang':'Slovenščina'},'so':{'name':'Somali','id':'so','ownlang':'Soomaali'},'es':{'name':'Spanish','id':'es','ownlang':'Español'},'es-419':{'name':'Spanish\x20(Latin\x20America)','id':'es-419','ownlang':'Español\x20latinoamericano'},'su':{'name':'Sundanese','id':'su','ownlang':'Basa\x20Sunda'},'sw':{'name':'Swahili','id':'sw','ownlang':'Kiswahili'},'sv':{'name':'Swedish','id':'sv','ownlang':'Svenska'},'tl':{'name':'Tagalog','id':'tl','ownlang':'Wikang\x20Tagalog'},'tg':{'name':'Tajik','id':'tg','ownlang':'тоҷикӣ'},'ta':{'name':'Tamil','id':'ta','ownlang':'தமிழ்'},'tt':{'name':'Tatar','id':'tt','ownlang':'татарча'},'te':{'name':'Telugu','id':'te','ownlang':'తెలుగు'},'th':{'name':'Thai','id':'th','ownlang':'ภาษาไทย'},'tr':{'name':'Turkish','id':'tr','ownlang':'Türkçe'},'tk':{'name':'Turkmen','id':'tk','ownlang':'Türkmençe'},'udm':{'name':'Udmurt','id':'udm','ownlang':'удмурт\x20кыл'},'uk':{'name':'Ukrainian','id':'uk','ownlang':'Yкраїнський'},'ur':{'name':'Urdu','id':'ur','ownlang':'اُردُو'},'ug':{'name':'Uyghur','id':'ug','ownlang':'ئۇيغۇر\x20تىلى'},'uz':{'name':'Uzbek','id':'uz','ownlang':'اوزبیک'},'vi':{'name':'Vietnamese','id':'vi','ownlang':'Tiếng\x20Việt\x20Nam'},'cy':{'name':'Welsh','id':'cy','ownlang':'Cymraeg'},'xh':{'name':'Xhosa','id':'xh','ownlang':'Xhosa'},'yi':{'name':'Yiddish','id':'yi','ownlang':'ייִדיש\x20ייִדיש‬'},'yo':{'name':'Yoruba','id':'yo','ownlang':'Èdè\x20Yorùbá'},'zu':{'name':'Zulu','id':'zu','ownlang':'Zulu'}};c['LibraryStrings']={'hr':{'ascending':'Uzlazni','descending':'Silazni','file_navigator_text':'Pregledajte\x20datoteku','first':'Prvi','last':'Zadnji','library_settings':'Postavke\x20biblioteke','order':'Slijed','sort_by':'Poredaj\x20po','toast_plugin_started':'{{var0}}\x20je\x20započeo.','toast_plugin_stopped':'{{var0}}\x20zaustavljen.','toast_plugin_translated':'prijevod\x20na\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20zamijenjen\x20je\x20s\x20{{var2}}\x20{{var3}}.','update_notice_click':'Kliknite\x20za\x20ažuriranje!','update_notice_reload':'Za\x20završetak\x20ažuriranja\x20potrebno\x20je\x20ponovo\x20učitati.','update_notice_update':'Sljedeće\x20dodatke\x20treba\x20ažurirati:'},'da':{'ascending':'Stigende','descending':'Aftagende','file_navigator_text':'Gennemse\x20fil','first':'Første','last':'Sidste','library_settings':'Biblioteksindstillinger','order':'Sekvens','sort_by':'Sorter\x20efter','toast_plugin_started':'{{var0}}\x20er\x20startet.','toast_plugin_stopped':'{{var0}}\x20er\x20stoppet.','toast_plugin_translated':'oversat\x20til\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20blev\x20erstattet\x20af\x20{{var2}}\x20{{var3}}.','update_notice_click':'Klik\x20for\x20at\x20opdatere!','update_notice_reload':'For\x20at\x20afslutte\x20opdateringen\x20skal\x20du\x20genindlæse.','update_notice_update':'Følgende\x20plugins\x20skal\x20opdateres:'},'de':{'ascending':'Aufsteigend','descending':'Absteigend','file_navigator_text':'Datei\x20durchsuchen','first':'Erste','last':'Letzte','library_settings':'Bibliothekseinstellungen','order':'Reihenfolge','sort_by':'Sortieren\x20nach','toast_plugin_started':'{{var0}}\x20wurde\x20gestartet.','toast_plugin_stopped':'{{var0}}\x20wurde\x20gestoppt.','toast_plugin_translated':'auf\x20{{var0}}\x20übersetzt.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20wurde\x20durch\x20{{var2}}\x20{{var3}}\x20ersetzt.','update_notice_click':'Zum\x20Aktualisieren\x20klicken!','update_notice_reload':'Lade\x20neu,\x20die\x20Aktualisierung\x20abzuschließen.','update_notice_update':'Die\x20folgenden\x20Plugins\x20müssen\x20aktualisiert\x20werden:'},'es':{'ascending':'Ascendente','descending':'Descendente','file_navigator_text':'Buscar\x20archivo','first':'Primero','last':'Último','library_settings':'Configuraciones\x20de\x20biblioteca','order':'Secuencia','sort_by':'Ordenar\x20por','toast_plugin_started':'{{var0}}\x20se\x20guilddiv\x20iniciado.','toast_plugin_stopped':'{{var0}}\x20se\x20guilddiv\x20detenido.','toast_plugin_translated':'traducido\x20a\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20ha\x20sido\x20reemplazado\x20por\x20{{var2}}\x20{{var3}}.','update_notice_click':'Haga\x20clic\x20para\x20actualizar!','update_notice_reload':'Para\x20finalizar\x20la\x20actualización,\x20debe\x20volver\x20a\x20cargar.','update_notice_update':'Los\x20siguientes\x20complementos\x20deben\x20actualizarse:'},'fr':{'ascending':'Ascendant','descending':'Descendant','file_navigator_text':'Parcourir\x20le\x20fichier','first':'Première','last':'Dernier','library_settings':'Paramètres\x20de\x20la\x20bibliothèque','order':'Séquence','sort_by':'Trier\x20par','toast_plugin_started':'{{var0}}\x20a\x20été\x20démarré.','toast_plugin_stopped':'{{var0}}\x20a\x20été\x20arrêté.','toast_plugin_translated':'traduit\x20en\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20a\x20été\x20remplacé\x20par\x20{{var2}}\x20{{var3}}.','update_notice_click':'Cliquez\x20pour\x20mettre\x20à\x20jour!','update_notice_reload':'Pour\x20terminer\x20la\x20mise\x20à\x20jour,\x20vous\x20devez\x20recharger.','update_notice_update':'Les\x20plugins\x20suivants\x20doivent\x20être\x20mis\x20à\x20jour:'},'it':{'ascending':'Ascendente','descending':'Discendente','file_navigator_text':'Sfoglia\x20file','first':'Primo','last':'Ultimo','library_settings':'Impostazioni\x20della\x20libreria','order':'Sequenza','sort_by':'Ordina\x20per','toast_plugin_started':'{{var0}}\x20è\x20stato\x20avviato.','toast_plugin_stopped':'{{var0}}\x20è\x20stato\x20interrotto.','toast_plugin_translated':'tradotto\x20in\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20è\x20stato\x20sostituito\x20da\x20{{var2}}\x20{{var3}}.','update_notice_click':'Clicca\x20per\x20aggiornare!','update_notice_reload':'Per\x20terminare\x20l\x27aggiornamento\x20è\x20necessario\x20ricaricare.','update_notice_update':'I\x20seguenti\x20plugin\x20devono\x20essere\x20aggiornati:'},'nl':{'ascending':'Oplopend','descending':'Aflopend','file_navigator_text':'Bestand\x20zoeken','first':'Eerste','last':'Laatste','library_settings':'Bibliotheekinstellingen','order':'Volgorde','sort_by':'Sorteer\x20op','toast_plugin_started':'{{var0}}\x20is\x20gestart.','toast_plugin_stopped':'{{var0}}\x20is\x20gestopt.','toast_plugin_translated':'vertaald\x20naar\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20is\x20vervangen\x20door\x20{{var2}}\x20{{var3}}.','update_notice_click':'Klik\x20om\x20te\x20updaten!','update_notice_reload':'Om\x20de\x20update\x20te\x20voltooien,\x20moet\x20u\x20opnieuw\x20laden.','update_notice_update':'De\x20volgende\x20plug-ins\x20moeten\x20worden\x20bijgewerkt:'},'no':{'ascending':'Stigende','descending':'Synkende','file_navigator_text':'Bla\x20gjennom\x20fil','first':'Første','last':'Siste','library_settings':'Bibliotekinnstillinger','order':'Sekvens','sort_by':'Sorter\x20etter','toast_plugin_started':'{{var0}}\x20er\x20startet.','toast_plugin_stopped':'{{var0}}\x20er\x20stoppet.','toast_plugin_translated':'oversatt\x20til\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20er\x20erstattet\x20av\x20{{var2}}\x20{{var3}}.','update_notice_click':'Klikk\x20for\x20å\x20oppdatere!','update_notice_reload':'For\x20å\x20fullføre\x20oppdateringen\x20må\x20du\x20laste\x20inn\x20på\x20nytt.','update_notice_update':'Følgende\x20plugins\x20må\x20oppdateres:'},'pl':{'ascending':'Rosnąco','descending':'Malejąco','file_navigator_text':'Przeglądać\x20plik','first':'Pierwszy','last':'Ostatni','library_settings':'Ustawienia\x20biblioteki','order':'Sekwencja','sort_by':'Sortuj\x20według','toast_plugin_started':'{{var0}}\x20został\x20uruchomiony.','toast_plugin_stopped':'{{var0}}\x20został\x20zatrzymany.','toast_plugin_translated':'przetłumaczono\x20na\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20został\x20zastąpiony\x20przez\x20{{var2}}\x20{{var3}}.','update_notice_click':'Kliknij,\x20aby\x20zaktualizować!','update_notice_reload':'Aby\x20zakończyć\x20aktualizację,\x20musisz\x20ponownie\x20załadować.','update_notice_update':'Należy\x20zaktualizować\x20następujące\x20wtyczki:'},'pt-BR':{'ascending':'Crescente','descending':'Descendente','file_navigator_text':'Procurar\x20arquivo','first':'Primeiro','last':'Último','library_settings':'Configurações\x20da\x20biblioteca','order':'Seqüência','sort_by':'Ordenar\x20por','toast_plugin_started':'{{var0}}\x20foi\x20iniciado.','toast_plugin_stopped':'{{var0}}\x20foi\x20interrompido.','toast_plugin_translated':'traduzido\x20para\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20foi\x20substituído\x20por\x20{{var2}}\x20{{var3}}.','update_notice_click':'Clique\x20para\x20atualizar!','update_notice_reload':'Para\x20concluir\x20a\x20atualização,\x20você\x20precisa\x20recarregar.','update_notice_update':'Os\x20seguintes\x20plugins\x20precisam\x20ser\x20atualizados:'},'fi':{'ascending':'Nouseva','descending':'Laskeva','file_navigator_text':'Selaa\x20tiedostoa','first':'Ensimmäinen','last':'Viimeinen','library_settings':'Kirjastoasetukset','order':'Jakso','sort_by':'Järjestä','toast_plugin_started':'{{var0}}\x20on\x20käynnistetty.','toast_plugin_stopped':'{{var0}}\x20on\x20pysäytetty.','toast_plugin_translated':'käännetty\x20osoitteeseen\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20on\x20korvattu\x20{{var2}}\x20{{var3}}.','update_notice_click':'Napsauta\x20päivittääksesi!','update_notice_reload':'Päivittäminen\x20on\x20suoritettava\x20uudelleen.','update_notice_update':'Seuraavat\x20laajennukset\x20on\x20päivitettävä:'},'sv':{'ascending':'Stigande','descending':'Nedåtgående','file_navigator_text':'Bläddra\x20i\x20fil','first':'Första','last':'Sista','library_settings':'Biblioteksinställningar','order':'Sekvens','sort_by':'Sortera\x20efter','toast_plugin_started':'{{var0}}\x20har\x20startats.','toast_plugin_stopped':'{{var0}}\x20har\x20blivit\x20stoppad.','toast_plugin_translated':'översatt\x20till\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20har\x20ersatts\x20av\x20{{var2}}\x20{{var3}}.','update_notice_click':'Klicka\x20för\x20att\x20uppdatera!','update_notice_reload':'För\x20att\x20avsluta\x20uppdateringen\x20måste\x20du\x20ladda\x20om.','update_notice_update':'Följande\x20plugins\x20måste\x20uppdateras:'},'tr':{'ascending':'Yükselen','descending':'Azalan','file_navigator_text':'Dosyaya\x20gözat','first':'Ilk','last':'Son','library_settings':'Kütüphane\x20Ayarları','order':'Sıra','sort_by':'Göre\x20sırala','toast_plugin_started':'{{var0}}\x20başlatıldı.','toast_plugin_stopped':'{{var0}}\x20durduruldu.','toast_plugin_translated':'{{var0}}\x20olarak\x20çevrildi.','toast_plugin_updated':'{{var0}}\x20{{var1}},\x20{{var2}}\x20{{var3}}\x20ile\x20değiştirildi.','update_notice_click':'Güncellemek\x20için\x20tıklayın!','update_notice_reload':'Güncellemeyi\x20tamamlamak\x20için\x20yeniden\x20yüklemeniz\x20gerekir.','update_notice_update':'Aşağıdaki\x20eklentilerin\x20güncellenmesi\x20gerekir:'},'cs':{'ascending':'Vzestupně','descending':'Klesající','file_navigator_text':'Procházet\x20soubor','first':'První','last':'Poslední','library_settings':'Nastavení\x20knihovny','order':'Sekvence','sort_by':'Seřazeno\x20podle','toast_plugin_started':'{{var0}}\x20byl\x20spuštěn.','toast_plugin_stopped':'{{var0}}\x20byl\x20zastaven.','toast_plugin_translated':'přeložen\x20do\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20byl\x20nahrazen\x20{{var2}}\x20{{var3}}.','update_notice_click':'Klepnutím\x20aktualizujte!','update_notice_reload':'Pro\x20dokončení\x20aktualizace\x20je\x20třeba\x20znovu\x20načíst.','update_notice_update':'Následující\x20doplňky\x20je\x20třeba\x20aktualizovat:'},'bg':{'ascending':'Възходящ','descending':'Низходящ','file_navigator_text':'Прегледайте\x20файла','first':'Първият','last':'Последният','library_settings':'Настройки\x20на\x20библиотеката','order':'Последователност','sort_by':'Сортиране\x20по','toast_plugin_started':'{{var0}}\x20е\x20стартиран.','toast_plugin_stopped':'{{var0}}\x20е\x20спрян.','toast_plugin_translated':'преведена\x20на\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20е\x20заменен\x20с\x20{{var2}}\x20{{var3}}.','update_notice_click':'Кликнете,\x20за\x20да\x20актуализирате!','update_notice_reload':'За\x20да\x20завършите\x20актуализацията,\x20трябва\x20да\x20презаредите.','update_notice_update':'Следните\x20приставки\x20трябва\x20да\x20бъдат\x20актуализирани:'},'ru':{'ascending':'По\x20возрастанию','descending':'По\x20убыванию','file_navigator_text':'Просмотр\x20файла','first':'Первый','last':'Последний','library_settings':'Настройки\x20библиотеки','order':'Последовательность','sort_by':'Сортировать\x20по','toast_plugin_started':'{{var0}}\x20запущен.','toast_plugin_stopped':'{{var0}}\x20остановлен.','toast_plugin_translated':'переведен\x20на\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20был\x20заменен\x20{{var2}}\x20{{var3}}.','update_notice_click':'Нажмите,\x20чтобы\x20обновить!','update_notice_reload':'Для\x20завершения\x20обновления\x20необходимо\x20перезагрузить.','update_notice_update':'Следующие\x20плагины\x20должны\x20быть\x20обновлены:'},'uk':{'ascending':'Зростання','descending':'Спад','file_navigator_text':'Перегляньте\x20файл','first':'Перший','last':'Останній','library_settings':'Налаштування\x20бібліотеки','order':'Послідовність','sort_by':'Сортувати\x20за','toast_plugin_started':'{{var0}}\x20було\x20запущено.','toast_plugin_stopped':'{{var0}}\x20було\x20зупинено.','toast_plugin_translated':'перекладено\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20було\x20замінено\x20на\x20{{var2}}\x20{{var3}}.','update_notice_click':'Натисніть,\x20щоб\x20оновити!','update_notice_reload':'Щоб\x20закінчити\x20оновлення,\x20вам\x20потрібно\x20перезавантажити.','update_notice_update':'Необхідно\x20оновити\x20наступні\x20плагіни:'},'ja':{'ascending':'上昇','descending':'降順','file_navigator_text':'ファイルを参照','first':'最初','last':'最後','library_settings':'ライブラリ設定','order':'ソート順','sort_by':'並び替え','toast_plugin_started':'{{var0}}が開始されました.','toast_plugin_stopped':'{{var0}}が停止しました.','toast_plugin_translated':'は{{var0}}に翻訳されました.','toast_plugin_updated':'{{var0}}\x20{{var1}}は{{var2}}\x20{{var3}}に置き換えられました.','update_notice_click':'クリックして更新!','update_notice_reload':'更新を完了するには、リロードする必要があります.','update_notice_update':'次のプラグインを更新する必要があります:'},'zh-TW':{'ascending':'上升','descending':'降序','file_navigator_text':'瀏覽文件','first':'首先','last':'最後','library_settings':'庫設置','order':'排序','sort_by':'排序方式','toast_plugin_started':'{{var0}}已經啟動.','toast_plugin_stopped':'{{var0}}已停止.','toast_plugin_translated':'翻譯為{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}已由{{var2}}\x20{{var3}}取代.','update_notice_click':'點擊更新!','update_notice_reload':'要完成更新,您需要重新加載.','update_notice_update':'以下插件需要更新:'},'ko':{'ascending':'오름차순','descending':'내림차순','file_navigator_text':'파일\x20찾아보기','first':'첫번째','last':'마지막','library_settings':'라이브러리\x20설정','order':'정렬\x20순서','sort_by':'정렬\x20기준','toast_plugin_started':'{{var0}}\x20시작되었습니다.','toast_plugin_stopped':'{{var0}}\x20중지되었습니다.','toast_plugin_translated':'{{var0}}\x20로\x20번역되었습니다.','toast_plugin_updated':'{{var0}}\x20{{var1}}이\x20(가)\x20{{var2}}\x20{{var3}}\x20(으)로\x20대체되었습니다.','update_notice_click':'업데이트하려면\x20클릭하십시오!','update_notice_reload':'업데이트를\x20마치려면\x20다시로드해야합니다.','update_notice_update':'다음\x20플러그인을\x20업데이트해야합니다:'},'default':{'ascending':'Ascending','descending':'Descending','file_navigator_text':'Browse\x20File','first':'First','last':'Last','library_settings':'Library\x20Settings','order':'Order','sort_by':'Sort\x20by','toast_plugin_started':'{{var0}}\x20has\x20been\x20started.','toast_plugin_stopped':'{{var0}}\x20has\x20been\x20stopped.','toast_plugin_translated':'translated\x20to\x20{{var0}}.','toast_plugin_updated':'{{var0}}\x20{{var1}}\x20has\x20been\x20replaced\x20by\x20{{var2}}\x20{{var3}}.','update_notice_click':'Click\x20to\x20update!','update_notice_reload':'To\x20finish\x20updating\x20you\x20need\x20to\x20reload.','update_notice_update':'The\x20following\x20plugins\x20need\x20to\x20be\x20updated:'}};b['LanguageUtils']['getLanguage']=function(){let K=n['LanguageStore']['chosenLocale']||'en';if(K=='en-GB'||K=='en-US')K='en';let L=K['split']('-');let M=L[0x0];let N=L[0x1]||'';K=N&&M['toUpperCase']()!==N['toUpperCase']()?M+'-'+N:M;return b['LanguageUtils']['languages'][K]||b['LanguageUtils']['languages'][M]||b['LanguageUtils']['languages']['en'];};b['LanguageUtils']['LanguageStrings']=new Proxy(v,{'get':function(K,L){let M=n['LanguageStore']['Messages'][L];if(!M)b['LogUtils']['warn'](L+'\x20not\x20found\x20in\x20BDFDB.LanguageUtils.LanguageStrings');else{if(M&&typeof M=='object'&&typeof M['format']=='function')return b['LanguageUtils']['LanguageStringsFormat'](L);else return M;}return'';}});b['LanguageUtils']['LanguageStringsCheck']=new Proxy(v,{'get':function(K,L){return!!n['LanguageStore']['Messages'][L];}});let w=K=>{let L='';if(typeof K=='string')L+=K;else if(b['ObjectUtils']['is'](K)){if(K['props'])L+=w(K['props']);else if(K['type']){let M=K['content']||K['children']&&K['children'][0x0]&&K['children'][0x0]['toString']()||'';if(M){if(K['type']=='text'||K['content'])L=w(M);else L+='<'+K['type']+'>'+w(M)+'';}}}else if(b['ArrayUtils']['is'](K))for(let N of K)L+=w(N);return L;};b['LanguageUtils']['LanguageStringsFormat']=function(K,...L){if(K){let M=n['LanguageStore']['Messages'][K];if(M&&typeof M=='object'&&typeof M['format']=='function'){let N=0x0,O,P={};while(!O&&N<0xa){N++;try{O=M['format'](P,![]);}catch(Q){O=null;let R=L['shift']();P[Q['toString']()['split']('for:\x20')[0x1]]=R!=null?R===0x0?'0':R:'undefined';}}if(O)return w(O);else{b['LogUtils']['warn'](K+'\x20failed\x20to\x20format\x20string\x20in\x20BDFDB.LanguageUtils.LanguageStrings');return'';}}else return b['LanguageUtils']['LanguageStrings'][K];}else b['LogUtils']['warn'](K+'\x20enter\x20a\x20valid\x20key\x20to\x20format\x20the\x20string\x20in\x20BDFDB.LanguageUtils.LanguageStrings');return'';};b['LanguageUtils']['LibraryStrings']=new Proxy(c['LibraryStrings']['default'],{'get':function(K,L){let M=b['LanguageUtils']['getLanguage']()['id'];if(c['LibraryStrings'][M]&&c['LibraryStrings'][M][L])return c['LibraryStrings'][M][L];else if(c['LibraryStrings']['default'][L])return c['LibraryStrings']['default'][L];else b['LogUtils']['warn'](L+'\x20not\x20found\x20in\x20BDFDB.LanguageUtils.LibraryStrings');return'';}});b['LanguageUtils']['LibraryStringsCheck']=new Proxy(v,{'get':function(K,L){return!!c['LibraryStrings']['default'][L];}});b['LanguageUtils']['LibraryStringsFormat']=function(K,...L){if(K&&L['length']){let M=b['LanguageUtils']['getLanguage']()['id'],N=null;if(c['LibraryStrings'][M]&&c['LibraryStrings'][M][K])N=c['LibraryStrings'][M][K];else if(c['LibraryStrings']['default'][K])N=c['LibraryStrings']['default'][K];if(N){for(let O=0x0;O{if(n['LanguageStore']['chosenLocale']){b['TimeUtils']['clear'](K);let L=b['LanguageUtils']['getLanguage']();b['LanguageUtils']['languages']['$discord']['name']='Discord\x20('+L['name']+')';b['LanguageUtils']['languages']['$discord']['id']=L['id'];b['LanguageUtils']['languages']['$discord']['google']=L['google'];b['LanguageUtils']['languages']['$discord']['ownlang']=L['ownlang'];}},0x64);var x={'NativeSubComponents':{},'LibraryComponents':{}},y=n['React']&&n['React']['Component'];x['NativeSubComponents']['Button']=b['ModuleUtils']['findByProperties']('Colors','Hovers','Looks');x['NativeSubComponents']['Checkbox']=b['ModuleUtils']['findByName']('Checkbox');x['NativeSubComponents']['Clickable']=b['ModuleUtils']['findByName']('Clickable');x['NativeSubComponents']['FavButton']=b['ModuleUtils']['findByName']('GIFFavButton');x['NativeSubComponents']['KeybindRecorder']=b['ModuleUtils']['findByName']('KeybindRecorder');x['NativeSubComponents']['MenuCheckboxItem']=b['ModuleUtils']['findByName']('MenuCheckboxItem');x['NativeSubComponents']['MenuControlItem']=b['ModuleUtils']['findByName']('MenuControlItem');x['NativeSubComponents']['MenuItem']=b['ModuleUtils']['findByName']('MenuItem');x['NativeSubComponents']['PopoutContainer']=b['ModuleUtils']['findByName']('Popout');x['NativeSubComponents']['QuickSelect']=b['ModuleUtils']['findByName']('QuickSelectWrapper');x['NativeSubComponents']['RadioGroup']=b['ModuleUtils']['findByName']('RadioGroup');x['NativeSubComponents']['SearchBar']=b['ModuleUtils']['find'](K=>K&&K['displayName']=='SearchBar'&&K['defaultProps']['placeholder']==b['LanguageUtils']['LanguageStrings']['SEARCH']);x['NativeSubComponents']['Select']=b['ModuleUtils']['findByName']('SelectTempWrapper');x['NativeSubComponents']['Slider']=b['ModuleUtils']['findByName']('Slider');x['NativeSubComponents']['Switch']=b['ModuleUtils']['findByName']('Switch');x['NativeSubComponents']['TabBar']=b['ModuleUtils']['findByName']('TabBar');x['NativeSubComponents']['Table']=b['ModuleUtils']['findByName']('Table');x['NativeSubComponents']['TextArea']=b['ModuleUtils']['findByName']('TextArea');x['NativeSubComponents']['TextInput']=b['ModuleUtils']['findByName']('TextInput');x['NativeSubComponents']['TooltipContainer']=b['ModuleUtils']['findByName']('Tooltip');x['LibraryComponents']['AddonCard']=c['loadPatchedComp']('AddonCard')||y&&class BDFDB_AddonCard extends n['React']['Component']{['render'](){return!b['ObjectUtils']['is'](this['props']['data'])?null:b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['_repoentry'],this['props']['className'],b['disCN']['_repocard'],b['disCN']['_reposettingsclosed'],b['disCN']['_repocheckboxitem']),'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['_repoheader'],'style':{'overflow':'visible'},'children':[b['ReactUtils']['createElement']('span',{'className':b['disCN']['_repoheadertitle'],'children':[b['ReactUtils']['createElement']('span',{'className':b['disCN']['_reponame'],'children':this['props']['data']['name']}),'\x20v',b['ReactUtils']['createElement']('span',{'className':b['disCN']['_repoversion'],'children':this['props']['data']['version']}),'\x20by\x20',b['ReactUtils']['createElement']('span',{'className':b['disCN']['_repoauthor'],'children':this['props']['data']['author']})]}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['_repocontrols'],'children':this['props']['controls']})]}),b['ReactUtils']['createElement'](x['LibraryComponents']['ScrollerVertical'],{'outerClassName':b['disCN']['_repodescriptionwrap'],'className':b['disCN']['_repodescription'],'children':this['props']['data']['description']}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['_repofooter'],'children':[b['ReactUtils']['createElement']('span',{'className':b['disCN']['_repolinks'],'children':[]['concat'](this['props']['links'])['map']((K,L)=>b['ObjectUtils']['is'](K)&&[L>0x0&&'\x20|\x20',b['ReactUtils']['createElement']('a',{'className':b['DOMUtils']['formatClassName'](b['disCN']['_repolink'],typeof K['label']=='string'&&b['disCN']['_repolink']+'-'+K['label']['toLowerCase']()['replace'](/\s/g,'')),'href':K['href'],'children':K['label']})])['flat'](0xa)['filter'](K=>K)}),this['props']['buttons']]['flat'](0xa)['filter'](K=>K)})]});}};x['LibraryComponents']['Anchor']=b['ModuleUtils']['findByName']('Anchor');x['LibraryComponents']['Animations']=Object['assign']({},b['ModuleUtils']['findByProperties']('Controller','Spring'));x['LibraryComponents']['AutocompleteItems']=b['ModuleUtils']['findByProperties']('Generic','User','Command');x['LibraryComponents']['AutocompleteMenu']=b['ModuleUtils']['findByName']('Autocomplete');let z=b['ModuleUtils']['findByProperties']('AnimatedAvatar')||{};x['LibraryComponents']['Avatar']=z['default'];x['LibraryComponents']['AvatarComponents']=z;x['LibraryComponents']['BadgeAnimationContainer']=c['loadPatchedComp']('BadgeAnimationContainer')||y&&class BDFDB_BadgeAnimationContainer extends n['React']['Component']{['componentDidMount'](){b['ReactUtils']['forceUpdate'](this);}['componentWillAppear'](K){if(typeof K=='function')K();}['componentWillEnter'](K){if(typeof K=='function')K();}['componentWillLeave'](K){if(typeof K=='function')this['timeoutId']=setTimeout(K,0x12c);}['componentWillUnmount'](){clearTimeout(this['timeoutId']);}['render'](){return b['ReactUtils']['createElement'](x['LibraryComponents']['Animations']['animated']['div'],{'className':this['props']['className'],'style':this['props']['animatedStyle'],'children':this['props']['children']});}};x['LibraryComponents']['Badges']=Object['assign']({},b['ModuleUtils']['findByProperties']('IconBadge','NumberBadge'));x['LibraryComponents']['Badges']['IconBadge']=c['loadPatchedComp']('Badges.IconBadge')||y&&class BDFDB_IconBadge extends n['React']['Component']{['render'](){return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['badgeiconbadge'],this['props']['className']),'style':Object['assign']({'backgroundColor':this['props']['disableColor']?null:this['props']['color']||b['DiscordConstants']['Colors']['STATUS_RED']},this['props']['style']),'children':b['ReactUtils']['createElement'](x['LibraryComponents']['SvgIcon'],{'className':b['disCN']['badgeicon'],'name':this['props']['icon']})});}};x['LibraryComponents']['BotTag']=c['loadPatchedComp']('BotTag')||y&&class BDFDB_BotTag extends n['React']['Component']{['handleClick'](K){if(typeof this['props']['onClick']=='function')this['props']['onClick'](K,this);}['handleContextMenu'](K){if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](K,this);}['render'](){return b['ReactUtils']['createElement']('span',{'className':b['DOMUtils']['formatClassName'](this['props']['className'],this['props']['invertColor']?b['disCN']['bottaginvert']:b['disCN']['bottagregular'],this['props']['useRemSizes']?b['disCN']['bottagrem']:b['disCN']['bottagpx']),'style':this['props']['style'],'onClick':this['handleClick']['bind'](this),'onContextMenu':this['handleContextMenu']['bind'](this),'children':b['ReactUtils']['createElement']('span',{'className':b['disCN']['bottagtext'],'children':this['props']['tag']||b['LanguageUtils']['LanguageStrings']['BOT_TAG_BOT']})});}};x['LibraryComponents']['Button']=c['loadPatchedComp']('Button')||y&&class BDFDB_Button extends n['React']['Component']{['handleClick'](K){if(typeof this['props']['onClick']=='function')this['props']['onClick'](K,this);}['handleContextMenu'](K){if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](K,this);}['handleMouseDown'](K){if(typeof this['props']['onMouseDown']=='function')this['props']['onMouseDown'](K,this);}['handleMouseUp'](K){if(typeof this['props']['onMouseUp']=='function')this['props']['onMouseUp'](K,this);}['handleMouseEnter'](K){if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](K,this);}['handleMouseLeave'](K){if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](K,this);}['render'](){let K=(this['props']['disabled']||this['props']['submitting'])&&(null!=this['props']['onMouseEnter']||null!=this['props']['onMouseLeave']);let L=b['ObjectUtils']['exclude'](this['props'],'look','color','hover','size','fullWidth','grow','disabled','submitting','type','style','wrapperClassName','className','innerClassName','onClick','onContextMenu','onMouseDown','onMouseUp','onMouseEnter','onMouseLeave','children','rel');let M=b['ReactUtils']['createElement']('button',Object['assign']({},!this['props']['disabled']&&!this['props']['submitting']&&L,{'className':b['DOMUtils']['formatClassName'](this['props']['className'],b['disCN']['button'],this['props']['look']!=null?this['props']['look']:x['LibraryComponents']['Button']['Looks']['FILLED'],this['props']['color']!=null?this['props']['color']:x['LibraryComponents']['Button']['Colors']['BRAND'],this['props']['hover'],this['props']['size']!=null?this['props']['size']:x['LibraryComponents']['Button']['Sizes']['MEDIUM'],K&&this['props']['wrapperClassName'],this['props']['fullWidth']&&b['disCN']['buttonfullwidth'],(this['props']['grow']===undefined||this['props']['grow'])&&b['disCN']['buttongrow'],this['props']['hover']&&this['props']['hover']!==x['LibraryComponents']['Button']['Hovers']['DEFAULT']&&b['disCN']['buttonhashover'],this['props']['submitting']&&b['disCN']['buttonsubmitting']),'onClick':this['props']['disabled']||this['props']['submitting']?N=>{return N['preventDefault']();}:this['handleClick']['bind'](this),'onContextMenu':this['props']['disabled']||this['props']['submitting']?N=>{return N['preventDefault']();}:this['handleContextMenu']['bind'](this),'onMouseUp':!this['props']['disabled']&&this['handleMouseDown']['bind'](this),'onMouseDown':!this['props']['disabled']&&this['handleMouseUp']['bind'](this),'onMouseEnter':this['handleMouseEnter']['bind'](this),'onMouseLeave':this['handleMouseLeave']['bind'](this),'type':this['props']['type']==='undefined'?'button':this['props']['type'],'disabled':this['props']['disabled'],'style':this['props']['style'],'rel':this['props']['rel'],'children':[this['props']['submitting']&&!this['props']['disabled']?b['ReactUtils']['createElement'](x['LibraryComponents']['Spinner'],{'type':x['LibraryComponents']['Spinner']['Type']['PULSING_ELLIPSIS'],'className':b['disCN']['buttonspinner'],'itemClassName':b['disCN']['buttonspinneritem']}):null,b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['buttoncontents'],this['props']['innerClassName']),'children':this['props']['children']})]}));return!K?M:b['ReactUtils']['createElement']('span',{'className':b['DOMUtils']['formatClassName'](b['disCN']['buttondisabledwrapper'],this['props']['wrapperClassName'],this['props']['size']!=null?this['props']['size']:x['LibraryComponents']['Button']['Sizes']['MEDIUM'],this['props']['fullWidth']&&b['disCN']['buttonfullwidth'],(this['props']['grow']===undefined||this['props']['grow'])&&b['disCN']['buttongrow']),'children':[M,b['ReactUtils']['createElement']('span',{'onMouseEnter':this['handleMouseEnter']['bind'](this),'onMouseLeave':this['handleMouseLeave']['bind'](this),'className':b['disCN']['buttondisabledoverlay']})]});}};x['LibraryComponents']['Card']=c['loadPatchedComp']('Card')||y&&class BDFDB_Card extends n['React']['Component']{['render'](){return b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['hovercardwrapper'],this['props']['backdrop']&&b['disCN']['hovercard'],this['props']['className']),'onMouseEnter':K=>{if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](K,this);},'onMouseLeave':K=>{if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](K,this);},'onClick':K=>{if(typeof this['props']['onClick']=='function')this['props']['onClick'](K,this);},'onContextMenu':K=>{if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](K,this);},'children':[!this['props']['noRemove']?b['ReactUtils']['createElement'](x['LibraryComponents']['CardRemoveButton'],{'onClick':K=>{if(typeof this['props']['onRemove']=='function')this['props']['onRemove'](K,this);b['ListenerUtils']['stopEvent'](K);}}):null,typeof this['props']['children']=='string'?b['ReactUtils']['createElement'](x['LibraryComponents']['TextElement'],{'className':b['disCN']['hovercardinner'],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['TextScroller'],{'children':this['props']['children']})}):this['props']['children']]['flat'](0xa)['filter'](K=>K)}),'backdrop','noRemove'));}};c['setDefaultProps'](x['LibraryComponents']['Card'],{'backdrop':!![],'noRemove':![]});x['LibraryComponents']['CardRemoveButton']=b['ModuleUtils']['findByName']('RemoveButton');x['LibraryComponents']['ChannelTextAreaButton']=c['loadPatchedComp']('ChannelTextAreaButton')||y&&class BDFDB_ChannelTextAreaButton extends n['React']['Component']{['render'](){return b['ReactUtils']['createElement'](x['LibraryComponents']['Button'],{'look':x['LibraryComponents']['Button']['Looks']['BLANK'],'size':x['LibraryComponents']['Button']['Sizes']['NONE'],'aria-label':this['props']['label'],'tabIndex':this['props']['tabIndex'],'className':b['DOMUtils']['formatClassName'](b['disCN']['textareabuttonwrapper'],this['props']['isActive']&&b['disCN']['textareabuttonactive']),'innerClassName':b['DOMUtils']['formatClassName'](b['disCN']['textareabutton'],this['props']['className'],this['props']['pulse']&&b['disCN']['textareaattachbuttonplus']),'onClick':this['props']['onClick'],'onContextMenu':this['props']['onContextMenu'],'onMouseEnter':this['props']['onMouseEnter'],'onMouseLeave':this['props']['onMouseLeave'],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['SvgIcon'],{'name':this['props']['iconName'],'iconSVG':this['props']['iconSVG'],'className':b['DOMUtils']['formatClassName'](b['disCN']['textareaicon'],this['props']['iconClassName'],this['props']['pulse']&&b['disCN']['textareaiconpulse'])})});}};x['LibraryComponents']['CharCounter']=c['loadPatchedComp']('CharCounter')||y&&class BDFDB_CharCounter extends n['React']['Component']{['getCounterString'](){let K=this['refElement']||{},L='';if(b['DOMUtils']['containsClass'](this['refElement'],b['disCN']['textarea'])){let S=b['ReactUtils']['findOwner'](K,{'name':'ChannelEditorContainer','up':!![]});if(S)L=S['props']['textValue'];else L=K['value']||K['textContent']||'';}else L=K['value']||K['textContent']||'';let M=K['selectionStart']||0x0,N=K['selectionEnd']||0x0,O=N-M,P=b['DOMUtils']['getSelection']();let Q=!O&&!P?0x0:O||P['length'];Q=!Q?0x0:Q>L['length']?N||M?L['length']-(L['length']-N-M):L['length']:Q;let R=[typeof this['props']['renderPrefix']=='function'&&this['props']['renderPrefix'](L['length']),''+L['length']+(!this['props']['max']?'':'/'+this['props']['max'])+(!Q?'':'\x20('+Q+')'),typeof this['props']['renderSuffix']=='function'&&this['props']['renderSuffix'](L['length'])]['filter'](T=>T);if(typeof this['props']['onChange']=='function')this['props']['onChange'](this);return R['length']==0x1?R[0x0]:b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'children':R});}['updateCounter'](){if(!this['refElement'])return;b['TimeUtils']['clear'](this['updateTimeout']);this['updateTimeout']=b['TimeUtils']['timeout'](this['forceUpdateCounter']['bind'](this),0x64);}['forceUpdateCounter'](){if(!this['refElement'])return;this['props']['children']=this['getCounterString']();b['ReactUtils']['forceUpdate'](this);}['handleSelection'](){if(!this['refElement'])return;let K=N=>{b['TimeUtils']['timeout'](this['forceUpdateCounter']['bind'](this),0xa);};let L=N=>{document['removeEventListener']('mousemove',K);document['removeEventListener']('mouseup',L);if(this['refElement']['selectionEnd']-this['refElement']['selectionStart'])b['TimeUtils']['timeout'](O=>{document['addEventListener']('click',M);});};let M=N=>{b['TimeUtils']['timeout'](this['forceUpdateCounter']['bind'](this),0x64);document['removeEventListener']('mousemove',K);document['removeEventListener']('mouseup',L);document['removeEventListener']('click',M);};document['addEventListener']('mousemove',K);document['addEventListener']('mouseup',L);}['componentDidMount'](){if(this['props']['refClass']){let K=b['ReactUtils']['findDOMNode'](this);if(K&&K['parentElement']){this['refElement']=K['parentElement']['querySelector'](this['props']['refClass']);if(this['refElement']){if(!this['_updateCounter'])this['_updateCounter']=L=>{if(!document['contains'](K))b['ListenerUtils']['multiRemove'](this['refElement'],'keydown\x20click\x20change',this['_updateCounter']);else this['updateCounter']();};if(!this['_handleSelection'])this['_handleSelection']=L=>{if(!document['contains'](K))b['ListenerUtils']['multiRemove'](this['refElement'],'mousedown',this['_handleSelection']);else this['handleSelection']();};b['ListenerUtils']['multiRemove'](this['refElement'],'mousedown',this['_handleSelection']);b['ListenerUtils']['multiAdd'](this['refElement'],'mousedown',this['_handleSelection']);if(this['refElement']['tagName']=='INPUT'||this['refElement']['tagName']=='TEXTAREA'){b['ListenerUtils']['multiRemove'](this['refElement'],'keydown\x20click\x20change',this['_updateCounter']);b['ListenerUtils']['multiAdd'](this['refElement'],'keydown\x20click\x20change',this['_updateCounter']);}else{if(!this['_mutationObserver'])this['_mutationObserver']=new MutationObserver(L=>{if(!document['contains'](K))this['_mutationObserver']['disconnect']();else this['updateCounter']();});else this['_mutationObserver']['disconnect']();this['_mutationObserver']['observe'](this['refElement'],{'childList':!![],'subtree':!![]});}this['updateCounter']();}else b['LogUtils']['warn']('could\x20not\x20find\x20referenceElement\x20for\x20BDFDB_CharCounter');}}else b['LogUtils']['warn']('refClass\x20can\x20not\x20be\x20undefined\x20for\x20BDFDB_CharCounter');}['render'](){let K=this['getCounterString']();b['TimeUtils']['timeout'](L=>{if(K!=this['getCounterString']())b['ReactUtils']['forceUpdate'](this);});return b['ReactUtils']['createElement']('div',b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['charcounter'],this['props']['className']),'children':K}),'parsing','max','refClass','renderPrefix','renderSuffix'));}};x['LibraryComponents']['Checkbox']=c['loadPatchedComp']('Checkbox')||y&&class BDFDB_Checkbox extends n['React']['Component']{['handleChange'](){this['props']['value']=!this['props']['value'];if(typeof this['props']['onChange']=='function')this['props']['onChange'](this['props']['value'],this);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement'](x['NativeSubComponents']['Checkbox'],Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this)}));}};x['LibraryComponents']['Clickable']=c['loadPatchedComp']('Clickable')||y&&class BDFDB_Clickable extends n['React']['Component']{['handleClick'](K){if(typeof this['props']['onClick']=='function')this['props']['onClick'](K,this);}['handleContextMenu'](K){if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](K,this);}['handleMouseDown'](K){if(typeof this['props']['onMouseDown']=='function')this['props']['onMouseDown'](K,this);}['handleMouseUp'](K){if(typeof this['props']['onMouseUp']=='function')this['props']['onMouseUp'](K,this);}['handleMouseEnter'](K){if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](K,this);}['handleMouseLeave'](K){if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](K,this);}['render'](){return b['ReactUtils']['createElement'](x['NativeSubComponents']['Clickable'],Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName'](this['props']['className'],(this['props']['className']||'')['toLowerCase']()['indexOf']('disabled')==-0x1&&b['disCN']['cursorpointer']),'onClick':this['handleClick']['bind'](this),'onContextMenu':this['handleContextMenu']['bind'](this),'onMouseUp':this['handleMouseDown']['bind'](this),'onMouseDown':!this['props']['disabled']&&this['handleMouseUp']['bind'](this),'onMouseEnter':this['handleMouseEnter']['bind'](this),'onMouseLeave':this['handleMouseLeave']['bind'](this)}));}};x['LibraryComponents']['CollapseContainer']=c['loadPatchedComp']('CollapseContainer')||y&&class BDFDB_CollapseContainer extends n['React']['Component']{['render'](){if(!b['ObjectUtils']['is'](this['props']['collapseStates']))this['props']['collapseStates']={};this['props']['collapsed']=this['props']['collapsed']&&(this['props']['collapseStates'][this['props']['title']]||this['props']['collapseStates'][this['props']['title']]==undefined);this['props']['collapseStates'][this['props']['title']]=this['props']['collapsed'];return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](this['props']['collapsed']&&b['disCN']['collapsecontainercollapsed'],this['props']['mini']?b['disCN']['collapsecontainermini']:b['disCN']['collapsecontainer'],this['props']['className']),'id':this['props']['id'],'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['collapsecontainerheader'],'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'onClick':K=>{this['props']['collapsed']=!this['props']['collapsed'];this['props']['collapseStates'][this['props']['title']]=this['props']['collapsed'];if(typeof this['props']['onClick']=='function')this['props']['onClick'](this['props']['collapsed'],this);b['ReactUtils']['forceUpdate'](this);},'children':b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormTitle'],{'tag':x['LibraryComponents']['FormComponents']['FormTitle']['Tags']['H5'],'className':b['disCN']['collapsecontainertitle'],'children':this['props']['title']})}),!this['props']['collapsed']?b['ReactUtils']['createElement']('div',{'className':b['disCN']['collapsecontainerinner'],'children':this['props']['children']}):null]});}};c['setDefaultProps'](x['LibraryComponents']['CollapseContainer'],{'collapsed':!![],'mini':!![]});x['LibraryComponents']['ColorPicker']=c['loadPatchedComp']('ColorPicker')||y&&class BDFDB_ColorPicker extends n['React']['Component']{constructor(K){super(K);if(!this['state'])this['state']={};this['state']['isGradient']=K['gradient']&&K['color']&&b['ObjectUtils']['is'](K['color']);this['state']['gradientBarEnabled']=this['state']['isGradient'];this['state']['draggingAlphaCursor']=![];this['state']['draggingGradientCursor']=![];this['state']['selectedGradientCursor']=0x0;}['handleColorChange'](K){let L=![];if(K!=null){L=!b['equals'](this['state']['isGradient']?this['props']['color'][this['state']['selectedGradientCursor']]:this['props']['color'],K);if(this['state']['isGradient'])this['props']['color'][this['state']['selectedGradientCursor']]=K;else this['props']['color']=K;}else L=!![];if(L){if(typeof this['props']['onColorChange']=='function')this['props']['onColorChange'](this['props']['color']);b['ReactUtils']['forceUpdate'](this);}}['componentDidMount'](){this['domElementRef']={'current':b['DOMUtils']['getParent'](b['dotCN']['itemlayer'],b['ReactUtils']['findDOMNode'](this))};let K=b['ReactUtils']['findOwner'](this['domElementRef']['current'],{'name':'BDFDB_PopoutContainer','up':!![],'unlimited':!![]});if(K){let L=M=>{if(!this['domElementRef']['current']||!document['contains'](this['domElementRef']['current']))document['removeEventListener']('mousedown',L);else if(!this['domElementRef']['current']['contains'](M['target'])){let N=O=>{if(!this['domElementRef']['current']||!document['contains'](this['domElementRef']['current'])){document['removeEventListener']('mousedown',L);document['removeEventListener']('mouseup',N);}else if(!this['domElementRef']['current']['contains'](O['target'])){document['removeEventListener']('mousedown',L);document['removeEventListener']('mouseup',N);K['handleClick'](O);}};document['addEventListener']('mouseup',N);}};document['addEventListener']('mousedown',L);}}['render'](){if(this['state']['isGradient'])this['props']['color']=Object['assign']({},this['props']['color']);let K=this['props']['alpha']?'HSLA':'HSL';let L=this['props']['alpha']?/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i:/^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;let M=b['ColorUtils']['convert'](this['state']['isGradient']?this['props']['color'][this['state']['selectedGradientCursor']]:this['props']['color'],K)||b['ColorUtils']['convert']('#000000FF',K);let N=this['state']['isGradient']?Object['entries'](this['props']['color'],K):[[0x0,M],[0x1,M]];let [O,P,Q]=b['ColorUtils']['convert'](M,'HSLCOMP');let R=b['ColorUtils']['getAlpha'](M);R=R==null?0x1:R;return b['ReactUtils']['createElement'](x['LibraryComponents']['PopoutFocusLock'],{'className':b['disCNS']['colorpickerwrapper']+b['disCN']['colorpicker'],'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickerinner'],'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickersaturation'],'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickersaturationcolor'],'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0,'cursor':'crosshair','backgroundColor':b['ColorUtils']['convert']([O,'100%','100%'],'RGB')},'onClick':S=>{let T=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickersaturationcolor'],S['target']));let U=b['NumberUtils']['mapRange']([T['left'],T['left']+T['width']],[0x0,0x64],S['clientX'])+'%';let V=b['NumberUtils']['mapRange']([T['top'],T['top']+T['height']],[0x64,0x0],S['clientY'])+'%';this['handleColorChange'](b['ColorUtils']['convert']([O,U,V,R],K));},'onMouseDown':S=>{let T=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickersaturationcolor'],S['target']));let U=W=>{document['removeEventListener']('mouseup',U);document['removeEventListener']('mousemove',V);};let V=W=>{let X=b['NumberUtils']['mapRange']([T['left'],T['left']+T['width']],[0x0,0x64],W['clientX'])+'%';let Y=b['NumberUtils']['mapRange']([T['top'],T['top']+T['height']],[0x64,0x0],W['clientY'])+'%';this['handleColorChange'](b['ColorUtils']['convert']([O,X,Y,R],K));};document['addEventListener']('mouseup',U);document['addEventListener']('mousemove',V);},'children':[b['ReactUtils']['createElement']('style',{'children':b['dotCN']['colorpickersaturationwhite']+'\x20{background:\x20-webkit-linear-gradient(to\x20right,\x20#fff,\x20rgba(255,255,255,0));background:\x20linear-gradient(to\x20right,\x20#fff,\x20rgba(255,255,255,0));}'+b['dotCN']['colorpickersaturationblack']+'\x20{background:\x20-webkit-linear-gradient(to\x20top,\x20#000,\x20rgba(0,0,0,0));background:\x20linear-gradient(to\x20top,\x20#000,\x20rgba(0,0,0,0));}'}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickersaturationwhite'],'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickersaturationblack'],'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0}}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickersaturationcursor'],'style':{'position':'absolute','cursor':'crosshair','left':P,'top':b['NumberUtils']['mapRange']([0x0,0x64],[0x64,0x0],parseFloat(Q))+'%'},'children':b['ReactUtils']['createElement']('div',{'style':{'width':0x4,'height':0x4,'boxShadow':'rgb(255,\x20255,\x20255)\x200px\x200px\x200px\x201.5px,\x20rgba(0,\x200,\x200,\x200.3)\x200px\x200px\x201px\x201px\x20inset,\x20rgba(0,\x200,\x200,\x200.4)\x200px\x200px\x201px\x202px','borderRadius':'50%','transform':'translate(-2px,\x20-2px)'}})})]})]})}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickerhue'],'children':b['ReactUtils']['createElement']('div',{'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickerhuehorizontal'],'style':{'padding':'0px\x202px','position':'relative','height':'100%'},'onClick':S=>{let T=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickerhuehorizontal'],S['target']));let U=b['NumberUtils']['mapRange']([T['left'],T['left']+T['width']],[0x0,0x168],S['clientX']);this['handleColorChange'](b['ColorUtils']['convert']([U,P,Q,R],K));},'onMouseDown':S=>{let T=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickerhuehorizontal'],S['target']));let U=W=>{document['removeEventListener']('mouseup',U);document['removeEventListener']('mousemove',V);};let V=W=>{let X=b['NumberUtils']['mapRange']([T['left'],T['left']+T['width']],[0x0,0x168],W['clientX']);this['handleColorChange'](b['ColorUtils']['convert']([X,P,Q,R],K));};document['addEventListener']('mouseup',U);document['addEventListener']('mousemove',V);},'children':[b['ReactUtils']['createElement']('style',{'children':b['dotCN']['colorpickerhuehorizontal']+'\x20{background:\x20linear-gradient(to\x20right,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);background:\x20-webkit-linear-gradient(to\x20right,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);}'+b['dotCN']['colorpickerhuevertical']+'\x20{background:\x20linear-gradient(to\x20top,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);background:\x20-webkit-linear-gradient(to\x20top,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);}'}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickerhuecursor'],'style':{'position':'absolute','cursor':'ew-resize','left':b['NumberUtils']['mapRange']([0x0,0x168],[0x0,0x64],O)+'%'},'children':b['ReactUtils']['createElement']('div',{'style':{'marginTop':0x1,'width':0x4,'borderRadius':0x1,'height':0x8,'boxShadow':'rgba(0,\x200,\x200,\x200.6)\x200px\x200px\x202px','background':'rgb(255,\x20255,\x20255)','transform':'translateX(-2px)'}})})]})})}),this['props']['alpha']&&b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickeralpha'],'children':[b['ReactUtils']['createElement']('div',{'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickeralphacheckered'],'style':{'padding':'0px\x202px','position':'relative','height':'100%'}})}),b['ReactUtils']['createElement']('div',{'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickeralphahorizontal'],'style':{'padding':'0px\x202px','position':'relative','height':'100%','background':'linear-gradient(to\x20right,\x20'+b['ColorUtils']['setAlpha']([O,P,Q],0x0,'RGBA')+',\x20'+b['ColorUtils']['setAlpha']([O,P,Q],0x1,'RGBA')},'onClick':S=>{let T=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickeralphahorizontal'],S['target']));let U=b['NumberUtils']['mapRange']([T['left'],T['left']+T['width']],[0x0,0x1],S['clientX']);this['handleColorChange'](b['ColorUtils']['setAlpha'](M,U,K));},'onMouseDown':S=>{let T=b['DOMUtils']['getRects'](b['DOMUtils']['getParent'](b['dotCN']['colorpickeralphahorizontal'],S['target']));let U=W=>{document['removeEventListener']('mouseup',U);document['removeEventListener']('mousemove',V);this['state']['draggingAlphaCursor']=![];b['ReactUtils']['forceUpdate'](this);};let V=W=>{this['state']['draggingAlphaCursor']=!![];let X=b['NumberUtils']['mapRange']([T['left'],T['left']+T['width']],[0x0,0x1],W['clientX']);this['handleColorChange'](b['ColorUtils']['setAlpha'](M,X,K));};document['addEventListener']('mouseup',U);document['addEventListener']('mousemove',V);},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickeralphacursor'],'style':{'position':'absolute','cursor':'ew-resize','left':R*0x64+'%'},'children':[b['ReactUtils']['createElement']('div',{'style':{'marginTop':0x1,'width':0x4,'borderRadius':0x1,'height':0x8,'boxShadow':'rgba(0,\x200,\x200,\x200.6)\x200px\x200px\x202px','background':'rgb(255,\x20255,\x20255)','transform':'translateX(-2px)'}}),this['state']['draggingAlphaCursor']&&b['ReactUtils']['createElement']('span',{'className':b['disCN']['sliderbubble'],'style':{'opacity':0x1,'visibility':'visible','left':0x2},'children':Math['floor'](R*0x64)+'%'})]['filter'](S=>S)})})})]}),this['state']['gradientBarEnabled']&&b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickergradient'],'children':[b['ReactUtils']['createElement']('div',{'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickergradientcheckered'],'style':{'padding':'0px\x202px','position':'relative','height':'100%'}})}),b['ReactUtils']['createElement']('div',{'style':{'position':'absolute','top':0x0,'right':0x0,'bottom':0x0,'left':0x0},'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['colorpickergradienthorizontal'],'style':{'padding':'0px\x202px','position':'relative','cursor':'copy','height':'100%','background':b['ColorUtils']['createGradient'](N['reduce']((S,T)=>(S[T[0x0]]=T[0x1],S),{}))},'onClick':S=>{let T=b['DOMUtils']['getRects'](S['target']);let U=b['NumberUtils']['mapRange']([T['left'],T['left']+T['width']],[0.01,0.99],S['clientX']);if(Object['keys'](this['props']['color'])['indexOf'](U)==-0x1){this['props']['color'][U]=b['ColorUtils']['convert']('#000000FF',K);this['state']['selectedGradientCursor']=U;this['handleColorChange']();}},'children':N['map'](S=>b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['colorpickergradientcursor'],(S[0x0]==0x0||S[0x0]==0x1)&&b['disCNS']['colorpickergradientcursoredge'],this['state']['selectedGradientCursor']==S[0x0]&&b['disCN']['colorpickergradientcursorselected']),'style':{'position':'absolute','cursor':'pointer','left':S[0x0]*0x64+'%'},'onMouseDown':S[0x0]==0x0||S[0x0]==0x1?T=>{}:T=>{T=T['nativeEvent']||T;let U=W=>{if(Math['sqrt']((T['pageX']-W['pageX'])**0x2)>0xa){document['removeEventListener']('mousemove',U);document['removeEventListener']('mouseup',V);this['state']['draggingGradientCursor']=!![];let X=b['DOMUtils']['getParent'](b['dotCN']['colorpickergradientcursor'],T['target']);let Y=b['DOMUtils']['getRects'](X['parentElement']);let Z=a1=>{document['removeEventListener']('mousemove',a0);document['removeEventListener']('mouseup',Z);b['TimeUtils']['timeout'](a2=>{this['state']['draggingGradientCursor']=![];});};let a0=a1=>{let a2=b['NumberUtils']['mapRange']([Y['left'],Y['left']+Y['width']],[0.01,0.99],a1['clientX']);if(Object['keys'](this['props']['color'])['indexOf'](a2)==-0x1){delete this['props']['color'][S[0x0]];S[0x0]=a2;this['props']['color'][a2]=S[0x1];this['state']['selectedGradientCursor']=a2;this['handleColorChange']();}};document['addEventListener']('mousemove',a0);document['addEventListener']('mouseup',Z);}};let V=W=>{document['removeEventListener']('mousemove',U);document['removeEventListener']('mouseup',V);};document['addEventListener']('mousemove',U);document['addEventListener']('mouseup',V);},'onClick':T=>{b['ListenerUtils']['stopEvent'](T);if(!this['state']['draggingGradientCursor']){this['state']['selectedGradientCursor']=S[0x0];b['ReactUtils']['forceUpdate'](this);}},'onContextMenu':S[0x0]==0x0||S[0x0]==0x1?T=>{}:T=>{b['ListenerUtils']['stopEvent'](T);delete this['props']['color'][S[0x0]];this['state']['selectedGradientCursor']=0x0;this['handleColorChange']();},'children':b['ReactUtils']['createElement']('div',{'style':{'background':b['ColorUtils']['convert'](S[0x1],'RGBA')}})}))})})]})]['filter'](S=>S)}),b['ReactUtils']['createElement'](x['LibraryComponents']['TextInput'],{'className':b['disCNS']['colorpickerhexinput']+b['disCN']['margintop8'],'maxLength':this['props']['alpha']?0x9:0x7,'valuePrefix':'#','value':b['ColorUtils']['convert'](M,this['props']['alpha']?'HEXA':'HEX'),'autoFocus':!![],'onChange':S=>{if(L['test'](S))this['handleColorChange'](S);},'inputChildren':this['props']['gradient']&&b['ReactUtils']['createElement'](x['LibraryComponents']['TooltipContainer'],{'text':'Gradient','children':b['ReactUtils']['createElement'](x['LibraryComponents']['Clickable'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['colorpickergradientbutton'],this['state']['gradientBarEnabled']&&b['disCN']['colorpickergradientbuttonenabled']),'children':b['ReactUtils']['createElement'](x['LibraryComponents']['SvgIcon'],{'nativeClass':!![],'width':0x1c,'height':0x1c,'name':x['LibraryComponents']['SvgIcon']['Names']['GRADIENT']}),'onClick':S=>{this['state']['gradientBarEnabled']=!this['state']['gradientBarEnabled'];if(this['state']['gradientBarEnabled']&&!this['state']['isGradient'])this['props']['color']={0:M,1:M};else if(!this['state']['gradientBarEnabled']&&this['state']['isGradient'])this['props']['color']=M;this['state']['isGradient']=this['props']['color']&&b['ObjectUtils']['is'](this['props']['color']);this['handleColorChange']();}})})}),b['ReactUtils']['createElement']('div',{'className':'move-corners','children':[{'top':0x0,'left':0x0},{'top':0x0,'right':0x0},{'bottom':0x0,'right':0x0},{'bottom':0x0,'left':0x0}]['map'](S=>b['ReactUtils']['createElement']('div',{'className':'move-corner','onMouseDown':T=>{if(!this['domElementRef']['current'])return;let U=b['DOMUtils']['getRects'](this['domElementRef']['current']);let V=U['left'],W=U['top'];let X=T['pageX'],Y=T['pageY'];let Z=a1=>{document['removeEventListener']('mouseup',Z);document['removeEventListener']('mousemove',a0);};let a0=a1=>{V=V-(X-a1['pageX']),W=W-(Y-a1['pageY']);X=a1['pageX'],Y=a1['pageY'];this['domElementRef']['current']['style']['setProperty']('left',V+'px','important');this['domElementRef']['current']['style']['setProperty']('top',W+'px','important');};document['addEventListener']('mouseup',Z);document['addEventListener']('mousemove',a0);},'style':Object['assign']({},S,{'width':0xa,'height':0xa,'cursor':'move','position':'absolute'})}))})]});}};x['LibraryComponents']['ColorSwatches']=c['loadPatchedComp']('ColorSwatches')||y&&class BDFDB_ColorSwatches extends n['React']['Component']{constructor(K){super(K);K['selectedColor']=b['ObjectUtils']['is'](K['color'])?K['color']:b['ColorUtils']['convert'](K['color'],'RGBA');K['colors']=(b['ArrayUtils']['is'](K['colors'])?K['colors']:[null,0x52e91e,0x2ecc71,0x1abc9c,0x3498db,0x3454db,0x861ee9,0x9b59b6,0xe91e63,0xe9411e,0xe74c3c,0xe67e22,0xf1c40f,0xc7cccd,0x708088,0x636363,0xffffff,0x3bad14,0x1f8b4c,0x11806a,0x206694,0x203994,0x6d14ad,0x71368a,0xad1457,0xad2014,0x992d22,0xa84300,0xc27c0e,0x979c9f,0x5d686d,0x2c2c2c])['map'](M=>b['ColorUtils']['convert'](M,'RGBA'));K['colorRows']=K['colors']['length']?[K['colors']['slice'](0x0,parseInt(K['colors']['length']/0x2)),K['colors']['slice'](parseInt(K['colors']['length']/0x2))]:[];K['customColor']=K['selectedColor']!=null?K['colors']['indexOf'](K['selectedColor'])>-0x1?null:K['selectedColor']:null;K['customSelected']=!!K['customColor'];K['pickerConfig']=b['ObjectUtils']['is'](K['pickerConfig'])?K['pickerConfig']:{'gradient':!![],'alpha':!![]};this['state']=K;var L=this;this['ColorSwatch']=class BDFDB_ColorSwatch extends n['React']['Component']{['render'](){let M=!b['ColorUtils']['isBright'](this['props']['color']);let N=b['ReactUtils']['createElement']('button',{'type':'button','className':b['DOMUtils']['formatClassName'](b['disCN']['colorpickerswatch'],this['props']['isSingle']&&b['disCN']['colorpickerswatchsingle'],this['props']['isDisabled']&&b['disCN']['colorpickerswatchdisabled'],this['props']['isSelected']&&b['disCN']['colorpickerswatchselected'],this['props']['isCustom']&&b['disCN']['colorpickerswatchcustom'],this['props']['color']==null&&b['disCN']['colorpickerswatchnocolor']),'number':this['props']['number'],'disabled':this['props']['isDisabled'],'onClick':O=>{if(!this['props']['isSelected']){let P=this['props']['isCustom']&&this['props']['color']==null?'rgba(0,\x200,\x200,\x201)':this['props']['color'];if(typeof L['props']['onColorChange']=='function')L['props']['onColorChange'](b['ColorUtils']['convert'](P,'RGBA'));L['setState']({'selectedColor':P,'customColor':this['props']['isCustom']?P:L['state']['customColor'],'customSelected':this['props']['isCustom']});}},'style':Object['assign']({},this['props']['style'],{'background':b['ObjectUtils']['is'](this['props']['color'])?b['ColorUtils']['createGradient'](this['props']['color']):b['ColorUtils']['convert'](this['props']['color'],'RGBA')}),'children':[this['props']['isCustom']||this['props']['isSingle']?b['ReactUtils']['createElement'](x['LibraryComponents']['SvgIcon'],{'className':b['disCN']['colorpickerswatchdropper'],'foreground':b['disCN']['colorpickerswatchdropperfg'],'name':x['LibraryComponents']['SvgIcon']['Names']['DROPPER'],'width':this['props']['isCustom']?0xe:0xa,'height':this['props']['isCustom']?0xe:0xa,'color':M?b['DiscordConstants']['Colors']['WHITE']:b['DiscordConstants']['Colors']['BLACK']}):null,this['props']['isSelected']&&!this['props']['isSingle']?b['ReactUtils']['createElement'](x['LibraryComponents']['SvgIcon'],{'name':x['LibraryComponents']['SvgIcon']['Names']['CHECKMARK'],'width':this['props']['isCustom']?0x20:0x10,'height':this['props']['isCustom']?0x18:0x10,'color':M?b['DiscordConstants']['Colors']['WHITE']:b['DiscordConstants']['Colors']['BLACK']}):null]});if(this['props']['isCustom']||this['props']['isSingle']||this['props']['color']==null)N=b['ReactUtils']['createElement'](x['LibraryComponents']['TooltipContainer'],{'text':this['props']['isCustom']||this['props']['isSingle']?b['LanguageUtils']['LanguageStrings']['CUSTOM_COLOR']:b['LanguageUtils']['LanguageStrings']['DEFAULT'],'tooltipConfig':{'type':this['props']['isSingle']?'top':'bottom'},'children':N});if(this['props']['isCustom']||this['props']['isSingle'])N=b['ReactUtils']['createElement'](x['LibraryComponents']['PopoutContainer'],{'children':N,'wrap':![],'popoutClassName':b['disCNS']['colorpickerwrapper']+b['disCN']['colorpicker'],'animation':x['LibraryComponents']['PopoutContainer']['Animation']['TRANSLATE'],'position':x['LibraryComponents']['PopoutContainer']['Positions']['BOTTOM'],'align':x['LibraryComponents']['PopoutContainer']['Align']['CENTER'],'renderPopout':O=>{return b['ReactUtils']['createElement'](x['LibraryComponents']['ColorPicker'],Object['assign']({'color':this['props']['color'],'onColorChange':P=>{if(typeof L['props']['onColorChange']=='function')L['props']['onColorChange'](b['ColorUtils']['convert'](P,'RGBA'));this['props']['color']=P;L['setState']({'selectedColor':P,'customColor':P,'customSelected':!![]});}},K['pickerConfig']));}});return N;}};}['renderRow'](K){return b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['colorpickerrow'],'wrap':x['LibraryComponents']['Flex']['Wrap']['WRAP'],'children':K['map'](L=>{return b['ReactUtils']['createElement'](this['ColorSwatch'],{'color':L,'isCustom':![],'isSelected':!this['state']['customSelected']&&L===this['state']['selectedColor'],'isDisabled':this['state']['disabled']});})});}['render'](){let K=b['ReactUtils']['createElement'](this['ColorSwatch'],{'number':!this['state']['colors']['length']?this['props']['number']!=null?this['props']['number']:0x0:null,'color':this['state']['customColor'],'isSingle':!this['state']['colors']['length'],'isCustom':this['state']['colors']['length'],'isSelected':this['state']['customSelected'],'isDisabled':this['state']['disabled'],'style':{'margin':0x0}});return!this['state']['colors']['length']?K:b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['colorpickerswatches'],this['state']['disabled']&&b['disCN']['colorpickerswatchesdisabled']),'number':this['props']['number']!=null?this['props']['number']:0x0,'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['Flex']['Child'],{'className':b['disCN']['marginreset'],'shrink':0x0,'grow':0x0,'children':K}),b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'direction':x['LibraryComponents']['Flex']['Direction']['VERTICAL'],'className':b['disCN']['flexmarginreset'],'grow':0x1,'children':[this['renderRow'](this['state']['colorRows'][0x0]),this['renderRow'](this['state']['colorRows'][0x1])]})]});}};x['LibraryComponents']['Connectors']=Object['assign']({},b['ModuleUtils']['findByProperties']('Router','Link'));x['LibraryComponents']['DiscordTag']=b['ModuleUtils']['findByName']('DiscordTag');x['LibraryComponents']['Emoji']=b['ModuleUtils']['findByName']('Emoji');x['LibraryComponents']['EmojiButton']=b['ModuleUtils']['findByName']('EmojiButton');x['LibraryComponents']['EmojiPickerButton']=c['loadPatchedComp']('EmojiPickerButton')||y&&class BDFDB_EmojiPickerButton extends n['React']['Component']{['handleEmojiChange'](K){if(K!=null){this['props']['emoji']=K['id']?{'id':K['id'],'name':K['name'],'animated':K['animated']}:{'id':null,'name':K['optionallyDiverseSequence'],'animated':![]};if(typeof this['props']['onSelect']=='function')this['props']['onSelect'](this['props']['emoji'],this);b['ReactUtils']['forceUpdate'](this);}}['render'](){return b['ReactUtils']['createElement'](x['LibraryComponents']['PopoutContainer'],{'children':b['ReactUtils']['createElement'](x['LibraryComponents']['EmojiButton'],{'className':b['DOMUtils']['formatClassName'](this['props']['className'],b['disCN']['emojiinputbutton']),'renderButtonContents':this['props']['emoji']?K=>b['ReactUtils']['createElement'](x['LibraryComponents']['Emoji'],{'className':b['disCN']['emoji'],'emoji':this['props']['emoji']}):null}),'wrap':![],'animation':x['LibraryComponents']['PopoutContainer']['Animation']['NONE'],'position':x['LibraryComponents']['PopoutContainer']['Positions']['TOP'],'align':x['LibraryComponents']['PopoutContainer']['Align']['LEFT'],'renderPopout':K=>{return b['ReactUtils']['createElement'](b['ModuleUtils']['findByString']('allowManagedEmojis','EMOJI_PICKER_TAB_PANEL_ID','diversitySelector'),{'closePopout':K['close'],'onSelectEmoji':this['handleEmojiChange']['bind'](this),'allowManagedEmojis':![]});}});}};x['LibraryComponents']['FavButton']=c['loadPatchedComp']('FavButton')||y&&class BDFDB_FavButton extends n['React']['Component']{['handleClick'](){this['props']['isFavorite']=!this['props']['isFavorite'];if(typeof this['props']['onClick']=='function')this['props']['onClick'](this['props']['isFavorite'],this);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['favbuttoncontainer'],this['props']['className']),'children':b['ReactUtils']['createElement'](x['NativeSubComponents']['FavButton'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'onClick':this['handleClick']['bind'](this)}),'className'))});}};x['LibraryComponents']['FileButton']=c['loadPatchedComp']('FileButton')||y&&class BDFDB_FileButton extends n['React']['Component']{['render'](){let K=this['props']['filter']&&[this['props']['filter']]['flat'](0xa)['filter'](L=>typeof L=='string')||[];return b['ReactUtils']['createElement'](x['LibraryComponents']['Button'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'onClick':L=>{L['currentTarget']['querySelector']('input')['click']();},'children':[b['LanguageUtils']['LibraryStrings']['file_navigator_text'],b['ReactUtils']['createElement']('input',{'type':'file','accept':K['length']&&K['join']('/*,')+'/*','style':{'display':'none'},'onChange':L=>{let M=L['currentTarget']['files'][0x0];if(this['refInput']&&M&&(!K['length']||K['some'](N=>M['type']['indexOf'](N)==0x0))){this['refInput']['props']['value']=''+(this['props']['mode']=='url'?'url(\x27':'')+(this['props']['useFilePath']||this['props']['useFilepath']?M['path']:'data:'+M['type']+';base64,'+b['LibraryRequires']['fs']['readFileSync'](M['path'])['toString']('base64'))+(this['props']['mode']?'\x27)':'');b['ReactUtils']['forceUpdate'](this['refInput']);this['refInput']['handleChange'](this['refInput']['props']['value']);}}})]}),'filter','mode','useFilePath','useFilepath'));}};x['LibraryComponents']['Flex']=b['ModuleUtils']['findByProperties']('Wrap','Direction','Child');x['LibraryComponents']['FlowerStarIcon']=b['ModuleUtils']['findByName']('FlowerStarIcon');x['LibraryComponents']['FormComponents']=Object['assign']({},b['ModuleUtils']['findByProperties']('FormSection','FormText'));x['LibraryComponents']['FormComponents']['FormItem']=c['loadPatchedComp']('FormComponents.FormItem')||y&&class BDFDB_FormItem extends n['React']['Component']{['render'](){return b['ReactUtils']['createElement']('div',{'className':this['props']['className'],'style':this['props']['style'],'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'align':x['LibraryComponents']['Flex']['Align']['BASELINE'],'children':[this['props']['title']!=null||this['props']['error']!=null?b['ReactUtils']['createElement'](x['LibraryComponents']['Flex']['Child'],{'wrap':!![],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormTitle'],{'tag':this['props']['tag']||x['LibraryComponents']['FormComponents']['FormTitle']['Tags']['H5'],'disabled':this['props']['disabled'],'required':this['props']['required'],'error':this['props']['error'],'className':this['props']['titleClassName'],'children':this['props']['title']})}):null]['concat']([this['props']['titlechildren']]['flat'](0xa))['filter'](K=>K)})]['concat'](this['props']['children'])});}};x['LibraryComponents']['GuildComponents']={};x['LibraryComponents']['GuildComponents']['Badge']=b['ModuleUtils']['findByName']('GuildBadge');x['LibraryComponents']['GuildComponents']['BlobMask']=b['ModuleUtils']['findByName']('BlobMask');x['LibraryComponents']['GuildComponents']['Guild']=c['loadPatchedComp']('GuildComponents.Guild')||y&&class BDFDB_Guild extends n['React']['Component']{constructor(K){super(K);this['state']={'hovered':![]};}['handleMouseEnter'](K){if(!this['props']['sorting'])this['setState']({'hovered':!![]});if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](K,this);}['handleMouseLeave'](K){if(!this['props']['sorting'])this['setState']({'hovered':![]});if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](K,this);}['handleMouseDown'](K){if(!this['props']['unavailable']&&this['props']['guild']&&this['props']['selectedChannelId'])n['DirectMessageUtils']['preload'](this['props']['guild']['id'],this['props']['selectedChannelId']);if(K['button']==0x0&&typeof this['props']['onMouseDown']=='function')this['props']['onMouseDown'](K,this);}['handleMouseUp'](K){if(K['button']==0x0&&typeof this['props']['onMouseUp']=='function')this['props']['onMouseUp'](K,this);}['handleClick'](K){if(typeof this['props']['onClick']=='function')this['props']['onClick'](K,this);}['handleContextMenu'](K){if(this['props']['menu'])b['GuildUtils']['openMenu'](this['props']['guild'],K);if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](K,this);}['setRef'](K){if(typeof this['props']['setRef']=='function')this['props']['setRef'](this['props']['guild']['id'],K);}['componentDidMount'](){let K=b['ReactUtils']['findDOMNode'](this);if(K)for(let L of K['querySelectorAll']('a'))L['setAttribute']('draggable',![]);}['render'](){if(!this['props']['guild'])return null;this['props']['guildId']=this['props']['guild']['id'];this['props']['selectedChannelId']=n['LastChannelStore']['getChannelId'](this['props']['guild']['id']);this['props']['selected']=this['props']['state']?n['LastGuildStore']['getGuildId']()==this['props']['guild']['id']:![];this['props']['unread']=this['props']['state']?n['UnreadGuildUtils']['hasUnread'](this['props']['guild']['id']):![];this['props']['badge']=this['props']['state']?n['UnreadGuildUtils']['getMentionCount'](this['props']['guild']['id']):0x0;this['props']['audio']=this['props']['state']?(n['ChannelStore']['getChannel'](n['LastChannelStore']['getVoiceChannelId']())||{})['guild_id']==this['props']['guild']['id']:![];this['props']['video']=this['props']['state']?(n['StreamUtils']['getActiveStream']()||{})['guildId']==this['props']['guild']['id']:![];this['props']['screenshare']=this['props']['state']?!!n['StreamUtils']['getAllApplicationStreams']()['filter'](N=>N['guildId']==this['props']['guild']['id'])[0x0]:![];this['props']['isCurrentUserInThisGuildVoice']=this['props']['state']?n['CurrentVoiceUtils']['getGuildId']()==this['props']['guild']['id']:![];this['props']['animatable']=this['props']['state']?n['IconUtils']['hasAnimatedGuildIcon'](this['props']['guild']):![];this['props']['unavailable']=this['props']['state']?n['GuildUnavailableStore']['unavailableGuilds']['includes'](this['props']['guild']['id']):![];let K=this['props']['draggingGuildId']===this['props']['guild']['id'];let L=K?b['ReactUtils']['createElement']('div',{'children':b['ReactUtils']['createElement'](x['LibraryComponents']['GuildComponents']['Items']['DragPlaceholder'],{})}):b['ReactUtils']['createElement']('div',{'className':b['disCN']['guildcontainer'],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['GuildComponents']['BlobMask'],{'selected':this['state']['isDropHovering']||this['props']['selected']||this['state']['hovered'],'upperBadge':this['props']['unavailable']?x['LibraryComponents']['GuildComponents']['Items']['renderUnavailableBadge']():x['LibraryComponents']['GuildComponents']['Items']['renderIconBadge'](this['props']['audio'],this['props']['video'],this['props']['screenshare'],this['props']['isCurrentUserInThisGuildVoice']),'lowerBadge':this['props']['badge']>0x0?x['LibraryComponents']['GuildComponents']['Items']['renderMentionBadge'](this['props']['badge']):null,'lowerBadgeWidth':x['LibraryComponents']['Badges']['getBadgeWidthForValue'](this['props']['badge']),'children':b['ReactUtils']['createElement'](x['LibraryComponents']['NavItem'],{'to':{'pathname':b['DiscordConstants']['Routes']['CHANNEL'](this['props']['guild']['id'],this['props']['selectedChannelId']),'state':{'analyticsSource':{'page':b['DiscordConstants']['AnalyticsPages']['GUILD_CHANNEL'],'section':b['DiscordConstants']['AnalyticsSections']['CHANNEL_LIST'],'object':b['DiscordConstants']['AnalyticsObjects']['CHANNEL']}}},'name':this['props']['guild']['name'],'onMouseEnter':this['handleMouseEnter']['bind'](this),'onMouseLeave':this['handleMouseLeave']['bind'](this),'onMouseDown':this['handleMouseDown']['bind'](this),'onMouseUp':this['handleMouseUp']['bind'](this),'onClick':this['handleClick']['bind'](this),'onContextMenu':this['handleContextMenu']['bind'](this),'icon':this['props']['guild']['getIconURL'](this['state']['hovered']&&this['props']['animatable']?'gif':'jpg'),'selected':this['props']['selected']||this['state']['hovered']})})});if(this['props']['draggable']&&typeof this['props']['connectDragSource']=='function')L=this['props']['connectDragSource'](L);let M=[this['props']['list']||this['props']['pill']?b['ReactUtils']['createElement'](x['LibraryComponents']['GuildComponents']['Pill'],{'hovered':!K&&this['state']['hovered'],'selected':!K&&this['props']['selected'],'unread':!K&&this['props']['unread'],'className':b['disCN']['guildpill']}):null,!this['props']['tooltip']?L:b['ReactUtils']['createElement'](x['LibraryComponents']['TooltipContainer'],{'tooltipConfig':Object['assign']({'type':'right'},this['props']['tooltipConfig'],{'guild':this['props']['list']&&this['props']['guild']}),'children':L})]['filter'](N=>N);return this['props']['list']?b['ReactUtils']['createElement']('div',{'ref':null!=this['props']['setRef']?this['props']['setRef']:null,'className':b['DOMUtils']['formatClassName'](b['disCN']['guildouter'],b['disCN']['_bdguild'],this['props']['unread']&&b['disCN']['_bdguildunread'],this['props']['selected']&&b['disCN']['_bdguildselected'],this['props']['unread']&&b['disCN']['_bdguildunread'],this['props']['audio']&&b['disCN']['_bdguildaudio'],this['props']['video']&&b['disCN']['_bdguildvideo']),'children':b['ReactUtils']['createElement'](b['ReactUtils']['Fragment'],{'children':M})}):b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['guild'],this['props']['className']),'children':M});}};c['setDefaultProps'](x['LibraryComponents']['GuildComponents']['Guild'],{'menu':!![],'tooltip':!![],'list':![],'state':![],'draggable':![],'sorting':![]});x['LibraryComponents']['GuildComponents']['Icon']=b['ModuleUtils']['findByName']('GuildIconWrapper');x['LibraryComponents']['GuildComponents']['Items']=b['ModuleUtils']['findByProperties']('Separator','DragPlaceholder');x['LibraryComponents']['GuildComponents']['Pill']=b['ModuleUtils']['findByString']('opacity:1,height:','20:8','default.item');x['LibraryComponents']['HeaderBarComponents']=b['ModuleUtils']['findByName']('HeaderBarContainer');x['LibraryComponents']['KeybindRecorder']=c['loadPatchedComp']('KeybindRecorder')||y&&class BDFDB_KeybindRecorder extends n['React']['Component']{['handleChange'](K){if(typeof this['props']['onChange']=='function')this['props']['onChange'](K['map'](L=>n['KeyEvents']['codes'][b['LibraryModules']['KeyCodeUtils']['codeToKey'](L)]||L[0x1]),this);}['handleReset'](){this['props']['defaultValue']=[];let K=b['ReactUtils']['findOwner'](this,{'name':'KeybindRecorder'});if(K)K['setState']({'codes':[]});if(typeof this['props']['onChange']=='function')this['props']['onChange']([],this);if(typeof this['props']['onReset']=='function')this['props']['onReset'](this);}['render'](){return b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['hotkeywrapper'],'direction':x['LibraryComponents']['Flex']['Direction']['HORIZONTAL'],'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'children':[b['ReactUtils']['createElement'](x['NativeSubComponents']['KeybindRecorder'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'defaultValue':[this['props']['defaultValue']]['flat'](0xa)['filter'](K=>K)['map'](K=>[b['DiscordConstants']['KeyboardDeviceTypes']['KEYBOARD_KEY'],K,b['DiscordConstants']['KeyboardEnvs']['BROWSER']]),'onChange':this['handleChange']['bind'](this)}),'reset','onReset')),this['props']['reset']||this['props']['onReset']?b['ReactUtils']['createElement'](x['LibraryComponents']['TooltipContainer'],{'text':b['LanguageUtils']['LanguageStrings']['REMOVE_KEYBIND'],'tooltipConfig':{'type':'top'},'children':b['ReactUtils']['createElement'](x['LibraryComponents']['Clickable'],{'className':b['disCN']['hotkeyresetbutton'],'onClick':this['handleReset']['bind'](this),'children':b['ReactUtils']['createElement'](x['LibraryComponents']['SvgIcon'],{'iconSVG':''})})}):null]['filter'](K=>K)});}};x['LibraryComponents']['LazyImage']=b['ModuleUtils']['findByName']('LazyImage');x['LibraryComponents']['ListHeader']=b['ModuleUtils']['findByName']('ListSectionItem');x['LibraryComponents']['ListRow']=c['loadPatchedComp']('ListRow')||y&&class BDFDB_ListRow extends n['React']['Component']{['render'](){return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['listrow'],this['props']['className']),'children':[this['props']['prefix'],b['ReactUtils']['createElement']('div',{'className':b['disCN']['listrowcontent'],'style':{'flex':'1\x201\x20auto'},'children':[b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['listname'],this['props']['labelClassName']),'style':{'flex':'1\x201\x20auto'},'children':this['props']['label']}),typeof this['props']['note']=='string'?b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormText'],{'type':x['LibraryComponents']['FormComponents']['FormText']['Types']['DESCRIPTION'],'children':this['props']['note']}):null]['filter'](K=>K)}),this['props']['suffix']]['filter'](K=>K)});}};x['LibraryComponents']['MemberRole']=c['loadPatchedComp']('MemberRole')||y&&class BDFDB_MemberRole extends n['React']['Component']{['handleClick'](K){if(typeof this['props']['onClick']=='function')this['props']['onClick'](K,this);}['handleContextMenu'](K){if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](K,this);}['render'](){let K=b['ColorUtils']['convert'](this['props']['role']['colorString']||b['DiscordConstants']['Colors']['PRIMARY_DARK_300'],'RGB');return b['ReactUtils']['createElement']('li',{'className':b['DOMUtils']['formatClassName'](b['disCN']['userpopoutrole'],this['props']['className']),'style':{'borderColor':b['ColorUtils']['setAlpha'](K,0.6)},'onClick':this['handleClick']['bind'](this),'onContextMenu':this['handleContextMenu']['bind'](this),'children':[!this['props']['noCircle']?b['ReactUtils']['createElement']('div',{'className':b['disCN']['userpopoutrolecircle'],'style':{'backgroundColor':K}}):null,b['ReactUtils']['createElement']('div',{'className':b['disCN']['userpopoutrolename'],'children':this['props']['role']['name']})]['filter'](L=>L)});}};x['LibraryComponents']['Menu']=b['ModuleUtils']['findByName']('Menu');x['LibraryComponents']['MenuItems']=Object['assign']({},b['ModuleUtils']['findByProperties']('MenuItem','MenuGroup'));x['LibraryComponents']['MenuItems']['Colors']=(b['ModuleUtils']['findByProperties']('MenuItemColor')||{})['MenuItemColor']||{};x['LibraryComponents']['MenuItems']['MenuCheckboxItem']=c['loadPatchedComp']('MenuItems.MenuCheckboxItem')||y&&class BDFDB_MenuCheckboxItem extends n['React']['Component']{['handleClick'](){if(this['props']['state']){this['props']['state']['checked']=!this['props']['state']['checked'];if(typeof this['props']['action']=='function')this['props']['action'](this['props']['state']['checked'],this);}b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement'](x['NativeSubComponents']['MenuCheckboxItem'],Object['assign']({},this['props'],{'checked':this['props']['state']&&this['props']['state']['checked'],'action':this['handleClick']['bind'](this)}));}};x['LibraryComponents']['MenuItems']['MenuHint']=c['loadPatchedComp']('MenuItems.MenuHint')||y&&class BDFDB_MenuHint extends n['React']['Component']{['render'](){return!this['props']['hint']?null:b['ReactUtils']['createElement']('div',{'className':b['disCN']['menuhint'],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['TextScroller'],{'children':this['props']['hint']})});}};x['LibraryComponents']['MenuItems']['MenuIcon']=c['loadPatchedComp']('MenuItems.MenuIcon')||y&&class BDFDB_MenuIcon extends n['React']['Component']{['render'](){let K=typeof this['props']['icon']=='string';return!this['props']['icon']?null:b['ReactUtils']['createElement'](x['LibraryComponents']['SvgIcon'],{'className':b['disCN']['menuicon'],'nativeClass':!![],'iconSVG':K?this['props']['icon']:null,'name':!K?this['props']['icon']:null});}};x['LibraryComponents']['MenuItems']['MenuPersistingItem']=c['loadPatchedComp']('MenuItems.MenuPersistingItem')||y&&class BDFDB_MenuPersistingItem extends n['React']['Component']{['render'](){return b['ReactUtils']['createElement'](x['NativeSubComponents']['MenuItem'],Object['assign']({},this['props'],{'onClose':K=>{}}));}};x['LibraryComponents']['MenuItems']['MenuSliderItem']=c['loadPatchedComp']('MenuItems.MenuSliderItem')||y&&class BDFDB_MenuSliderItem extends n['React']['Component']{['handleValueChange'](K){if(this['props']['state']){this['props']['state']['value']=Math['round'](b['NumberUtils']['mapRange']([0x0,0x64],[this['props']['minValue'],this['props']['maxValue']],K)*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);if(typeof this['props']['onValueChange']=='function')this['props']['onValueChange'](this['props']['state']['value'],this);}b['ReactUtils']['forceUpdate'](this);}['handleValueRender'](K){let L=Math['round'](b['NumberUtils']['mapRange']([0x0,0x64],[this['props']['minValue'],this['props']['maxValue']],K)*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);if(typeof this['props']['onValueRender']=='function'){let M=this['props']['onValueRender'](L,this);if(M!=undefined)L=M;}return L;}['render'](){let K=this['props']['state']&&this['props']['state']['value']||0x0;return b['ReactUtils']['createElement'](x['NativeSubComponents']['MenuControlItem'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'label':typeof this['props']['renderLabel']=='function'?this['props']['renderLabel'](Math['round'](K*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits'])):this['props']['label'],'control':(L,M)=>{return b['ReactUtils']['createElement']('div',{'className':b['disCN']['menuslidercontainer'],'children':b['ReactUtils']['createElement'](x['NativeSubComponents']['Slider'],Object['assign']({},L,{'ref':M,'className':b['disCN']['menuslider'],'mini':!![],'initialValue':Math['round'](b['NumberUtils']['mapRange']([this['props']['minValue'],this['props']['maxValue']],[0x0,0x64],K)*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']),'onValueChange':this['handleValueChange']['bind'](this),'onValueRender':this['handleValueRender']['bind'](this)}))});}}),'digits','renderLabel'));}};c['setDefaultProps'](x['LibraryComponents']['MenuItems']['MenuSliderItem'],{'minValue':0x0,'maxValue':0x64,'digits':0x0});x['LibraryComponents']['MessageGroup']=b['ModuleUtils']['findByName']('ChannelMessage');x['LibraryComponents']['MessagesPopoutComponents']=b['ModuleUtils']['findByProperties']('Header','EmptyStateBottom');x['LibraryComponents']['ModalComponents']=Object['assign']({},b['ModuleUtils']['findByProperties']('ModalContent','ModalFooter'));x['LibraryComponents']['ModalComponents']['ModalContent']=c['loadPatchedComp']('ModalComponents.ModalContent')||y&&class BDFDB_ModalContent extends n['React']['Component']{['render'](){return this['props']['scroller']?b['ReactUtils']['createElement'](x['LibraryComponents']['ScrollerThin'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['modalcontent'],this['props']['className']),'ref':this['props']['scrollerRef'],'children':this['props']['children']}):b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['modalcontent'],b['disCN']['modalnoscroller'],this['props']['className']),'direction':x['LibraryComponents']['Flex']['Direction']['VERTICAL'],'align':x['LibraryComponents']['Flex']['Align']['STRETCH'],'children':this['props']['children']});}};c['setDefaultProps'](x['LibraryComponents']['ModalComponents']['ModalContent'],{'scroller':!![]});x['LibraryComponents']['ModalComponents']['ModalTabContent']=c['loadPatchedComp']('ModalComponents.ModalTabContent')||y&&class BDFDB_ModalTabContent extends n['React']['Component']{['render'](){return b['ReactUtils']['forceStyle'](b['ReactUtils']['createElement'](this['props']['scroller']?x['LibraryComponents']['ScrollerThin']:'div',Object['assign'](b['ObjectUtils']['exclude'](this['props'],'scroller','open','render'),{'className':b['DOMUtils']['formatClassName'](b['disCN']['modaltabcontent'],this['props']['open']&&b['disCN']['modaltabcontentopen'],this['props']['className']),'style':Object['assign']({},this['props']['style'],{'display':this['props']['open']?null:'none'}),'children':!this['props']['open']&&!this['props']['render']?null:this['props']['children']})),['display']);}};c['setDefaultProps'](x['LibraryComponents']['ModalComponents']['ModalTabContent'],{'tab':'unnamed','render':!![]});x['LibraryComponents']['NavItem']=b['ModuleUtils']['findByName']('NavItem');x['LibraryComponents']['PaginatedList']=c['loadPatchedComp']('PaginatedList')||y&&class BDFDB_PaginatedList extends n['React']['Component']{['jump'](K){if(K>-0x1&&Kthis['props']['amount']&&b['ReactUtils']['createElement']('nav',{'className':b['disCN']['paginationlistpagination'],'children':[b['ReactUtils']['createElement'](b['LibraryComponents']['TooltipContainer'],{'text':b['LanguageUtils']['LibraryStrings']['first'],'aria-label':b['LanguageUtils']['LibraryStrings']['first'],'onClick':L=>{if(this['props']['offset']>0x0)this['jump'](0x0);},'children':b['ReactUtils']['createElement'](b['LibraryComponents']['Clickable'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['searchresultspaginationbutton'],this['props']['offset']<=0x0&&b['disCN']['searchresultspaginationdisabled'],b['disCN']['focusable']),'children':b['ReactUtils']['createElement'](b['LibraryComponents']['SvgIcon'],{'className':b['disCN']['searchresultspaginationicon'],'name':b['LibraryComponents']['SvgIcon']['Names']['LEFT_DOUBLE_CARET']})})}),b['ReactUtils']['createElement'](b['LibraryComponents']['TooltipContainer'],{'text':b['LanguageUtils']['LanguageStrings']['PAGINATION_PREVIOUS'],'aria-label':b['LanguageUtils']['LanguageStrings']['PAGINATION_PREVIOUS'],'onClick':L=>{if(this['props']['offset']>0x0)this['jump'](this['props']['offset']-0x1);},'children':b['ReactUtils']['createElement'](b['LibraryComponents']['Clickable'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['searchresultspaginationbutton'],this['props']['offset']<=0x0&&b['disCN']['searchresultspaginationdisabled'],b['disCN']['focusable']),'children':b['ReactUtils']['createElement'](b['LibraryComponents']['SvgIcon'],{'className':b['disCN']['searchresultspaginationicon'],'name':b['LibraryComponents']['SvgIcon']['Names']['LEFT_CARET']})})}),b['LanguageUtils']['LanguageStringsFormat']('PAGINATION_PAGE_OF',this['props']['offset']+0x1,K+0x1),b['ReactUtils']['createElement'](b['LibraryComponents']['TooltipContainer'],{'text':b['LanguageUtils']['LanguageStrings']['PAGINATION_NEXT'],'aria-label':b['LanguageUtils']['LanguageStrings']['PAGINATION_NEXT'],'onClick':L=>{if(this['props']['offset']=K&&b['disCN']['searchresultspaginationdisabled'],b['disCN']['focusable']),'children':b['ReactUtils']['createElement'](b['LibraryComponents']['SvgIcon'],{'className':b['disCN']['searchresultspaginationicon'],'name':b['LibraryComponents']['SvgIcon']['Names']['RIGHT_CARET']})})}),b['ReactUtils']['createElement'](b['LibraryComponents']['TooltipContainer'],{'text':b['LanguageUtils']['LibraryStrings']['last'],'aria-label':b['LanguageUtils']['LibraryStrings']['last'],'onClick':L=>{if(this['props']['offset']=K&&b['disCN']['searchresultspaginationdisabled'],b['disCN']['focusable']),'children':b['ReactUtils']['createElement'](b['LibraryComponents']['SvgIcon'],{'className':b['disCN']['searchresultspaginationicon'],'name':b['LibraryComponents']['SvgIcon']['Names']['RIGHT_DOUBLE_CARET']})})}),b['ReactUtils']['createElement'](b['LibraryComponents']['TextInput'],{'key':'pagination-list-jumpinput','type':'number','size':b['LibraryComponents']['TextInput']['Sizes']['MINI'],'value':this['props']['offset']+0x1,'min':0x1,'max':K+0x1,'onKeyDown':(L,M)=>{if(L['which']==0xd)this['jump'](isNaN(parseInt(M['props']['value']))?-0x1:M['props']['value']-0x1);}}),b['ReactUtils']['createElement'](b['LibraryComponents']['TooltipContainer'],{'text':b['LanguageUtils']['LanguageStrings']['JUMP'],'aria-label':b['LanguageUtils']['LanguageStrings']['JUMP'],'onClick':(L,M)=>{let N=b['ReactUtils']['findOwner'](M['_reactInternalFiber']['return'],{'key':'pagination-list-jumpinput'});if(N)this['jump'](isNaN(parseInt(N['props']['value']))?-0x1:N['props']['value']-0x1);},'children':b['ReactUtils']['createElement'](b['LibraryComponents']['Clickable'],{'className':b['disCN']['searchresultspaginationbutton'],'children':b['ReactUtils']['createElement'](b['LibraryComponents']['SvgIcon'],{'className':b['disCN']['searchresultspaginationicon'],'style':{'transform':'rotate(90deg'},'name':b['LibraryComponents']['SvgIcon']['Names']['RIGHT_CARET']})})})]});}['render'](){let K=[],L={};if(b['ArrayUtils']['is'](this['props']['items'])&&this['props']['items']['length']){if(!this['props']['alphabetKey'])K=this['props']['items'];else{let M=[]['concat'](this['props']['items']);for(let N of['0-9','A','B','C','D','E','F','G','H','I','J','K','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']){let O=N=='0-9',P=[];for(let Q of M)if(Q&&Q[this['props']['alphabetKey']]&&(O&&!isNaN(parseInt(Q[this['props']['alphabetKey']][0x0]))||Q[this['props']['alphabetKey']]['toUpperCase']()['indexOf'](N)==0x0))P['push'](Q);for(let R of P)b['ArrayUtils']['remove'](M,R);L[N]={'items':b['ArrayUtils']['keySort'](P,this['props']['alphabetKey']),'disabled':!P['length']};}L['?!']={'items':b['ArrayUtils']['keySort'](M,this['props']['alphabetKey']),'disabled':!M['length']};for(let S in L)K['push'](L[S]['items']);K=K['flat'](0xa);}}return typeof this['props']['renderItem']!='function'||!K['length']?null:b['ReactUtils']['createElement']('div',{'className':b['disCN']['paginationlist'],'children':[this['renderPagination'](),K['length']>this['props']['amount']&&this['props']['alphabetKey']&&b['ReactUtils']['createElement']('nav',{'className':b['disCN']['paginationlistalphabet'],'children':Object['keys'](L)['map'](T=>b['ReactUtils']['createElement'](b['LibraryComponents']['Clickable'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['paginationlistalphabetchar'],L[T]['disabled']&&b['disCN']['paginationlistalphabetchardisabled']),'onClick':U=>{if(!L[T]['disabled'])this['jump'](Math['floor'](K['indexOf'](L[T]['items'][0x0])/this['props']['amount']));},'children':T}))}),this['props']['header'],b['ReactUtils']['createElement']('div',{'className':b['disCN']['paginationlistcontent'],'children':K['slice'](this['props']['offset']*this['props']['amount'],(this['props']['offset']+0x1)*this['props']['amount'])['map']((T,U)=>{return this['props']['renderItem'](T,U);})['flat'](0xa)['filter'](T=>T)}),this['props']['copyToBottom']&&this['renderPagination']()]['flat'](0xa)['filter'](T=>T)});}};c['setDefaultProps'](x['LibraryComponents']['PaginatedList'],{'amount':0x32,'offset':0x0});x['LibraryComponents']['Popout']=c['loadPatchedComp']('Popout')||y&&class BDFDB_Popout extends n['React']['Component']{['componentWillUnmount'](){delete this['props']['containerInstance']['popout'];if(typeof this['props']['onClose']=='function')this['props']['onClose'](this['props']['containerInstance'],this);}['render'](){let K=typeof this['props']['position']=='string'?this['props']['position']['toLowerCase']():null;let L=K&&u['popout'+K]?b['disCN']['popout'+K]:b['disCN']['popouttop'];let M=!this['props']['arrow']?b['disCN']['popoutnoarrow']:K&&K['indexOf']('top')>-0x1&&K!='top'?b['disCN']['popoutarrowalignmenttop']:b['disCN']['popoutarrowalignmentmiddle'];return b['ReactUtils']['createElement'](x['LibraryComponents']['PopoutFocusLock'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['popoutwrapper'],b['disCN']['popout'],L,this['props']['invert']&&K&&K!='bottom'&&b['disCN']['popoutinvert'],M,!this['props']['shadow']&&b['disCN']['popoutnoshadow']),'id':this['props']['id'],'onClick':N=>{N['stopPropagation']();},'style':Object['assign']({},this['props']['style'],{'position':this['props']['isChild']?'relative':'absolute'}),'children':b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](this['props']['className'],this['props']['themed']&&b['disCN']['popoutthemedpopout']),'style':b['ObjectUtils']['extract'](this['props'],'padding','height','maxHeight','minHeight','width','maxWidth','minWidth'),'children':this['props']['children']})});}};c['setDefaultProps'](x['LibraryComponents']['Popout'],{'themed':!![]});x['LibraryComponents']['PopoutContainer']=c['loadPatchedComp']('PopoutContainer')||y&&class BDFDB_PopoutContainer extends n['React']['Component']{['handleRender'](K){let L=typeof this['props']['renderPopout']=='function'?this['props']['renderPopout'](this):null;return this['popout']=!L?null:!this['props']['wrap']?L:b['ReactUtils']['createElement'](x['LibraryComponents']['Popout'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'className':this['props']['popoutClassName'],'containerInstance':this,'isChild':!![],'position':K['position'],'style':this['props']['popoutStyle'],'onClose':typeof this['props']['onClose']=='function'?this['props']['onClose']['bind'](this):M=>{},'children':L}),'popoutStyle','popoutClassName'));}['componentDidMount'](){let K=b['ReactUtils']['findOwner'](this,{'name':'BasePopout'});if(!K||!K['handleClick'])return;K['isBDFDBpopout']=!![];this['handleClick']=L=>{return K['handleClick'](b['ObjectUtils']['is'](L)?L:new MouseEvent({}));};this['close']=K['close'];this['domElementRef']=K['domElementRef'];}['render'](){let K=(b['ArrayUtils']['is'](this['props']['children'])?this['props']['children'][0x0]:this['props']['children'])||b['ReactUtils']['createElement']('div',{'style':{'height':'100%','width':'100%'}});K['props']['className']=b['DOMUtils']['formatClassName'](K['props']['className'],this['props']['className']);let L=K['props']['onClick'],M=K['props']['onContextMenu'];K['props']['onClick']=(N,O)=>{if(!this['domElementRef']['current']||this['domElementRef']['current']['contains'](N['target'])){if((this['props']['openOnClick']||this['props']['openOnClick']===undefined)&&typeof this['handleClick']=='function')this['handleClick'](N);if(typeof this['props']['onClick']=='function')this['props']['onClick'](N,this);if(typeof L=='function')L(N,O);}else N['stopPropagation']();};K['props']['onContextMenu']=(N,O)=>{if(!this['domElementRef']['current']||this['domElementRef']['current']['contains'](N['target'])){if(this['props']['openOnContextMenu']&&typeof this['handleClick']=='function')this['handleClick'](N);if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](N,this);if(typeof M=='function')M(N,O);}else N['stopPropagation']();};return b['ReactUtils']['createElement'](n['React']['Fragment'],{'children':b['ReactUtils']['createElement'](x['NativeSubComponents']['PopoutContainer'],Object['assign']({},this['props'],{'children':N=>{return K;},'renderPopout':this['handleRender']['bind'](this)}))});}};c['setDefaultProps'](x['LibraryComponents']['PopoutContainer'],{'wrap':!![]});x['LibraryComponents']['PopoutFocusLock']=b['ModuleUtils']['findByString']('useFocusLock','useImperativeHandle');x['LibraryComponents']['PrivateChannelItems']=b['ModuleUtils']['findByProperties']('DirectMessage','GroupDM');x['LibraryComponents']['QuickSelect']=c['loadPatchedComp']('QuickSelect')||y&&class BDFDB_QuickSelect extends n['React']['Component']{['handleChange'](K){this['props']['value']=K;if(typeof this['props']['onChange']=='function')this['props']['onChange'](K['value']||K['key'],this);b['ReactUtils']['forceUpdate'](this);}['render'](){let K=(b['ArrayUtils']['is'](this['props']['options'])?this['props']['options']:[{}])['filter'](M=>M);let L=b['ObjectUtils']['is'](this['props']['value'])?this['props']['value']:K[0x0]||{};return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](this['props']['className'],b['disCN']['quickselectwrapper']),'children':b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['quickselect'],'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['quickselectlabel'],'children':this['props']['label']}),b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'className':b['disCN']['quickselectclick'],'onClick':M=>{n['ContextMenuUtils']['openContextMenu'](M,N=>{return b['ReactUtils']['createElement'](x['LibraryComponents']['Menu'],{'navId':'bdfdb-quickselect','onClose':b['LibraryModules']['ContextMenuUtils']['closeContextMenu'],'className':this['props']['popoutClassName'],'children':b['ContextMenuUtils']['createItem'](x['LibraryComponents']['MenuItems']['MenuGroup'],{'children':K['map']((O,P)=>{let Q=O['value']&&O['value']===L['value']||O['key']&&O['key']===L['key'];return b['ContextMenuUtils']['createItem'](x['LibraryComponents']['MenuItems']['MenuItem'],{'label':O['label'],'id':b['ContextMenuUtils']['createItemId']('option',O['key']||O['value']||P),'action':Q?null:R=>{b['ContextMenuUtils']['close'](R['_targetInst']);this['handleChange']['bind'](this)(O);}});})})});});},'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['quickselectvalue'],'children':typeof this['props']['renderValue']=='function'?this['props']['renderValue'](this['props']['value']):this['props']['value']['label']}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['quickselectarrow']})]})]})});}};x['LibraryComponents']['QuickSwitchItems']=b['ModuleUtils']['findByProperties']('Channel','GroupDM','Header');x['LibraryComponents']['QuickSwitchMenu']=b['ModuleUtils']['findByName']('QuickSwitcher');x['LibraryComponents']['RadioGroup']=c['loadPatchedComp']('RadioGroup')||y&&class BDFDB_RadioGroup extends n['React']['Component']{['handleChange'](K){this['props']['value']=K['value'];if(typeof this['props']['onChange']=='function')this['props']['onChange'](K,this);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement'](x['NativeSubComponents']['RadioGroup'],Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this)}));}};let A=b['ModuleUtils']['findByProperties']('AdvancedScrollerThin','AdvancedScrollerAuto')||{};x['LibraryComponents']['ScrollerAuto']=A['AdvancedScrollerAuto']||A['default'];x['LibraryComponents']['ScrollerNone']=A['AdvancedScrollerNone']||A['default'];x['LibraryComponents']['ScrollerThin']=A['AdvancedScrollerThin']||A['default'];x['LibraryComponents']['ScrollerVertical']=b['ModuleUtils']['findByName']('VerticalScroller');x['LibraryComponents']['SearchBar']=c['loadPatchedComp']('SearchBar')||y&&class BDFDB_SearchBar extends n['React']['Component']{['handleChange'](K){this['props']['query']=K;if(typeof this['props']['onChange']=='function')this['props']['onChange'](K,this);b['ReactUtils']['forceUpdate'](this);}['handleClear'](){this['props']['query']='';if(this['props']['changeOnClear']&&typeof this['props']['onChange']=='function')this['props']['onChange']('',this);if(typeof this['props']['onClear']=='function')this['props']['onClear'](this);b['ReactUtils']['forceUpdate'](this);}['render'](){let K=Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this),'onClear':this['handleClear']['bind'](this)});if(typeof K['query']!='string')K['query']='';return b['ReactUtils']['createElement'](x['NativeSubComponents']['SearchBar'],K);}};x['LibraryComponents']['Select']=c['loadPatchedComp']('Select')||y&&class BDFDB_Select extends n['React']['Component']{['handleChange'](K){this['props']['value']=K['value']||K;if(typeof this['props']['onChange']=='function')this['props']['onChange'](K,this);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['selectwrapper'],'direction':x['LibraryComponents']['Flex']['Direction']['HORIZONTAL'],'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'children':b['ReactUtils']['createElement'](x['NativeSubComponents']['Select'],Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this)}))});}};x['LibraryComponents']['SettingsGuildList']=c['loadPatchedComp']('SettingsGuildList')||y&&class BDFDB_SettingsGuildList extends n['React']['Component']{['render'](){this['props']['disabled']=b['ArrayUtils']['is'](this['props']['disabled'])?this['props']['disabled']:[];return b['ReactUtils']['createElement'](b['LibraryComponents']['Flex'],{'className':this['props']['className'],'wrap':b['LibraryComponents']['Flex']['Wrap']['WRAP'],'children':[this['props']['includeDMs']&&{'name':'Direct\x20Messages','acronym':'DMs','id':b['DiscordConstants']['ME'],'getIconURL':K=>{}}]['concat'](b['LibraryModules']['FolderStore']['getFlattenedGuilds']())['filter'](K=>K)['map'](K=>b['ReactUtils']['createElement'](b['LibraryComponents']['TooltipContainer'],{'text':K['name'],'children':b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](this['props']['guildClassName'],b['disCN']['settingsguild'],this['props']['disabled']['includes'](K['id'])&&b['disCN']['settingsguilddisabled']),'children':b['ReactUtils']['createElement'](b['LibraryComponents']['GuildComponents']['Icon'],{'guild':K,'size':this['props']['size']||b['LibraryComponents']['GuildComponents']['Icon']['Sizes']['MEDIUM']}),'onClick':L=>{let M=this['props']['disabled']['includes'](K['id']);if(M)b['ArrayUtils']['remove'](this['props']['disabled'],K['id'],!![]);else this['props']['disabled']['push'](K['id']);if(typeof this['props']['onClick']=='function')this['props']['onClick'](this['props']['disabled'],this);b['ReactUtils']['forceUpdate'](this);}})}))});}};x['LibraryComponents']['SettingsPanel']=c['loadPatchedComp']('SettingsPanel')||y&&class BDFDB_SettingsPanel extends n['React']['Component']{['render'](){let K=[this['props']['title']&&b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormTitle'],{'className':b['disCN']['settingspaneltitle'],'tag':x['LibraryComponents']['FormComponents']['FormTitle']['Tags']['H2'],'children':this['props']['title']}),this['props']['controls']&&b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['settingspanelheadercontrols'],'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'grow':0x0,'children':this['props']['controls']})]['flat'](0xa)['filter'](M=>M);let L=[this['props']['children']]['flat'](0xa)['filter'](M=>M);return b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'direction':x['LibraryComponents']['Flex']['Direction']['VERTICAL'],'grow':0x1,'children':[K['length']&&[b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['settingspanelheader'],'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'children':K}),L['length']&&b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormDivider'],{'className':b['disCNS']['margintop4']+b['disCN']['marginbottom8']})],b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['settingspanelinner'],'direction':x['LibraryComponents']['Flex']['Direction']['VERTICAL'],'children':L})]['flat'](0xa)['filter'](M=>M)});}};x['LibraryComponents']['SettingsPanelInner']=c['loadPatchedComp']('SettingsPanelInner')||y&&class BDFDB_SettingsPanelInner extends n['React']['Component']{['render'](){return this['props']['children']?b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':this['props']['className'],'direction':x['LibraryComponents']['Flex']['Direction']['VERTICAL'],'children':[!this['props']['first']?b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormDivider'],{'className':b['disCN']['marginbottom8']}):null,typeof this['props']['title']=='string'?b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormTitle'],{'className':b['disCN']['marginbottom4'],'tag':x['LibraryComponents']['FormComponents']['FormTitle']['Tags']['H3'],'children':this['props']['title']}):null,b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['settingspanellist'],'direction':x['LibraryComponents']['Flex']['Direction']['VERTICAL'],'children':this['props']['children']}),!this['props']['last']?b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormDivider'],{'className':b['disCN']['marginbottom20']}):null]}):null;}};x['LibraryComponents']['SettingsItem']=c['loadPatchedComp']('SettingsItem')||y&&class BDFDB_SettingsItem extends n['React']['Component']{['handleChange'](K){if(typeof this['props']['onChange']=='function')this['props']['onChange'](K,this);}['render'](){if(typeof this['props']['type']!='string'||!['BUTTON','SELECT','SWITCH','TEXTINPUT']['includes'](this['props']['type']['toUpperCase']()))return null;let K=x['LibraryComponents'][this['props']['type']];if(!K)return null;if(this['props']['mini']&&K['Sizes'])this['props']['size']=K['Sizes']['MINI']||K['Sizes']['MIN'];return b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['DOMUtils']['formatClassName'](this['props']['className'],this['props']['disabled']&&b['disCN']['disabled']),'id':this['props']['id'],'direction':x['LibraryComponents']['Flex']['Direction']['VERTICAL'],'align':x['LibraryComponents']['Flex']['Align']['STRETCH'],'grow':this['props']['grow'],'stretch':this['props']['stretch'],'children':[this['props']['dividertop']?b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormDivider'],{'className':this['props']['mini']?b['disCN']['marginbottom4']:b['disCN']['marginbottom8']}):null,b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'children':[this['props']['label']?this['props']['tag']?b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormTitle'],{'className':b['DOMUtils']['formatClassName'](this['props']['labelClassName'],b['disCN']['marginreset']),'tag':this['props']['tag'],'children':this['props']['label']}):b['ReactUtils']['createElement'](x['LibraryComponents']['Flex']['Child'],{'children':b['ReactUtils']['createElement'](x['LibraryComponents']['SettingsLabel'],{'className':this['props']['labelClassName'],'mini':this['props']['mini'],'label':this['props']['label']})}):null,this['props']['labelchildren'],b['ReactUtils']['createElement'](x['LibraryComponents']['Flex']['Child'],{'grow':0x0,'shrink':this['props']['basis']?0x0:0x1,'basis':this['props']['basis'],'wrap':!![],'children':b['ReactUtils']['createElement'](K,b['ObjectUtils']['exclude'](Object['assign'](b['ObjectUtils']['exclude'](this['props'],'className','id','type'),this['props']['childProps'],{'onChange':this['handleChange']['bind'](this)}),'grow','stretch','basis','dividerbottom','dividertop','label','labelClassName','labelchildren','tag','mini','note','childProps'))})]['flat'](0xa)['filter'](L=>L)}),typeof this['props']['note']=='string'?b['ReactUtils']['createElement'](x['LibraryComponents']['Flex']['Child'],{'className':b['disCN']['note'],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormText'],{'disabled':this['props']['disabled'],'type':x['LibraryComponents']['FormComponents']['FormText']['Types']['DESCRIPTION'],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['TextScroller'],{'speed':0x2,'children':this['props']['note']})})}):null,this['props']['dividerbottom']?b['ReactUtils']['createElement'](x['LibraryComponents']['FormComponents']['FormDivider'],{'className':this['props']['mini']?b['disCN']['margintop4']:b['disCN']['margintop8']}):null]});}};x['LibraryComponents']['SettingsLabel']=c['loadPatchedComp']('SettingsLabel')||y&&class BDFDB_SettingsLabel extends n['React']['Component']{['render'](){return b['ReactUtils']['createElement'](x['LibraryComponents']['TextScroller'],{'className':b['DOMUtils']['formatClassName'](this['props']['className'],this['props']['mini']?b['disCN']['titlemini']:b['disCN']['titledefault'],b['disCN']['cursordefault']),'speed':0x2,'children':this['props']['label']});}};x['LibraryComponents']['SettingsList']=c['loadPatchedComp']('SettingsList')||y&&class BDFDB_SettingsList extends n['React']['Component']{['componentDidMount'](){let K=b['ReactUtils']['findDOMNode'](this);if(K&&!this['props']['maxWidth']){let L=Array['from'](K['querySelectorAll'](b['dotCN']['settingstableheader']));L['shift']();if(b['DOMUtils']['getRects'](L[0x0])['width']==0x0)b['TimeUtils']['timeout'](M=>{this['resizeList'](K,L);});else this['resizeList'](K,L);}}['resizeList'](K,L){let M=0x0,N=0x0;if(!M){for(let O of L){O['style']='';let P=b['DOMUtils']['getRects'](O)['width'];M=P>M?P:M;}M+=0x4;N=M;}if(L['length']*M>0x12c){this['props']['vertical']=!![];M=parseInt(0x122/L['length']);}else if(M<0x24){M=0x24;N=M;}this['props']['maxWidth']=M;this['props']['biggestWidth']=N;this['props']['fullWidth']=b['DOMUtils']['getRects'](K)['width'];b['ReactUtils']['forceUpdate'](this);}['render'](){this['props']['settings']=b['ArrayUtils']['is'](this['props']['settings'])?this['props']['settings']:[];this['props']['renderLabel']=typeof this['props']['renderLabel']=='function'?this['props']['renderLabel']:Q=>Q['label'];this['props']['data']=(b['ArrayUtils']['is'](this['props']['data'])?this['props']['data']:[{}])['filter'](Q=>Q);let K=this['props']['maxWidth']&&this['props']['fullWidth']&&this['props']['fullWidth']-0x14-this['props']['maxWidth']*this['props']['settings']['length'];let L=this['props']['maxWidth']&&this['props']['maxWidth']*this['props']['settings']['length'];let M=typeof this['props']['onHeaderClick']=='function'||typeof this['props']['onHeaderContextMenu']=='function';let N=Q=>b['ReactUtils']['createElement'](x['LibraryComponents']['Card'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName']([this['props']['cardClassName'],Q['className']]['filter'](R=>R)['join']('\x20')['indexOf'](b['disCN']['card'])==-0x1&&b['disCN']['cardprimaryoutline'],b['disCN']['settingstablecard'],this['props']['cardClassName'],Q['className']),'cardId':Q['key'],'backdrop':![],'style':Object['assign']({},this['props']['cardStyle'],Q['style']),'children':[b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['settingstablecardlabel'],'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'grow':0x0,'shrink':0x0,'basis':K||'auto','style':{'maxWidth':K||null},'children':this['props']['renderLabel'](Q)}),b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['settingstablecardconfigs'],'justify':x['LibraryComponents']['Flex']['Justify']['AROUND'],'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'grow':0x0,'shrink':0x0,'basis':L||'auto','style':{'maxWidth':L||null},'children':this['props']['settings']['map'](R=>b['ReactUtils']['createElement'](x['LibraryComponents']['Flex']['Child'],{'className':b['disCN']['checkboxcontainer'],'grow':0x0,'shrink':0x0,'wrap':!![],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['Checkbox'],{'disabled':Q['disabled'],'cardId':Q['key'],'settingId':R,'shape':x['LibraryComponents']['Checkbox']['Shapes']['ROUND'],'type':x['LibraryComponents']['Checkbox']['Types']['INVERTED'],'value':Q[R],'onChange':this['props']['onCheckboxChange']})}))['flat'](0xa)['filter'](R=>R)})]}),'title','data','settings','renderLabel','cardClassName','cardStyle','onCheckboxChange','maxWidth','fullWidth','pagination'));let O=b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'className':b['disCN']['settingstableheaders'],'align':x['LibraryComponents']['Flex']['Align']['STRETCH'],'style':this['props']['vertical']&&this['props']['biggestWidth']?{'marginTop':this['props']['biggestWidth']-0xf||0x0}:{},'children':[]['concat'](this['props']['title']||'',this['props']['settings'])['map']((Q,R)=>b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](R==0x0?b['disCN']['settingstableheadername']:b['disCN']['settingstableheaderoption'],R!=0x0&&this['props']['vertical']&&b['disCN']['settingstableheadervertical'],b['disCN']['colorbase'],b['disCN']['size10'],M&&b['disCN']['cursorpointer']),'onClick':S=>{if(typeof this['props']['onHeaderClick']=='function')this['props']['onHeaderClick'](Q,this);},'onContextMenu':S=>{if(typeof this['props']['onHeaderContextMenu']=='function')this['props']['onHeaderContextMenu'](Q,this);},'style':R!=0x0&&this['props']['maxWidth']?{'maxWidth':this['props']['maxWidth'],'width':this['props']['maxWidth'],'flex':'0\x200\x20'+this['props']['maxWidth']+'px'}:{},'children':b['ReactUtils']['createElement']('span',{'children':Q})}))});let P=b['ObjectUtils']['is'](this['props']['pagination']);return!this['props']['data']['length']?null:b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['settingstablelist'],this['props']['className']),'children':[!P&&O,!P?this['props']['data']['map'](N):b['ReactUtils']['createElement'](x['LibraryComponents']['PaginatedList'],Object['assign']({},this['props']['pagination'],{'header':O,'items':this['props']['data'],'renderItem':N}))]['filter'](Q=>Q)});}};x['LibraryComponents']['SettingsSaveItem']=c['loadPatchedComp']('SettingsSaveItem')||y&&class BDFDB_SettingsSaveItem extends n['React']['Component']{['saveSettings'](K){if(!b['ArrayUtils']['is'](this['props']['keys'])||!b['ObjectUtils']['is'](this['props']['plugin']))return;let L=this['props']['keys']['filter'](N=>N);let M=L['shift']();if(b['ObjectUtils']['is'](this['props']['plugin'])&&M){let N=b['DataUtils']['load'](this['props']['plugin'],M);let O='';for(let R of L)O+='{\x22'+R+'\x22:';K=K!=null&&K['value']!=null?K['value']:K;let P=typeof K=='string';let Q=P?'\x22':'';O+=Q+(P?K['replace'](/\\/g,'\x5c\x5c'):K)+Q+'}'['repeat'](L['length']);O=JSON['parse'](O);b['DataUtils']['save'](b['ObjectUtils']['is'](O)?b['ObjectUtils']['deepAssign']({},N,O):O,this['props']['plugin'],M);this['props']['plugin']['SettingsUpdated']=!![];}if(typeof this['props']['onChange']=='function')this['props']['onChange'](K,this);}['render'](){if(typeof this['props']['type']!='string'||!['SELECT','SWITCH','TEXTINPUT']['includes'](this['props']['type']['toUpperCase']()))return null;return b['ReactUtils']['createElement'](x['LibraryComponents']['SettingsItem'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'onChange':this['saveSettings']['bind'](this)}),'keys','plugin'));}};x['LibraryComponents']['Slider']=c['loadPatchedComp']('Slider')||y&&class BDFDB_Slider extends n['React']['Component']{['handleValueChange'](K){let L=b['ArrayUtils']['is'](this['props']['edges'])&&this['props']['edges']['length']==0x2?b['NumberUtils']['mapRange']([0x0,0x64],this['props']['edges'],K):K;if(typeof this['props']['digits']=='number')L=Math['round'](L*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);this['props']['defaultValue']=L;if(typeof this['props']['onValueChange']=='function')this['props']['onValueChange'](L,this);b['ReactUtils']['forceUpdate'](this);}['handleValueRender'](K){let L=b['ArrayUtils']['is'](this['props']['edges'])&&this['props']['edges']['length']==0x2?b['NumberUtils']['mapRange']([0x0,0x64],this['props']['edges'],K):K;if(typeof this['props']['digits']=='number')L=Math['round'](L*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);if(typeof this['props']['onValueRender']=='function'){let M=this['props']['onValueRender'](L,this);if(M!=undefined)L=M;}return L;}['render'](){let K=b['ArrayUtils']['is'](this['props']['edges'])&&this['props']['edges']['length']==0x2?b['NumberUtils']['mapRange'](this['props']['edges'],[0x0,0x64],this['props']['defaultValue']):this['props']['defaultValue'];if(typeof this['props']['digits']=='number')K=Math['round'](K*Math['pow'](0xa,this['props']['digits']))/Math['pow'](0xa,this['props']['digits']);return b['ReactUtils']['createElement'](x['NativeSubComponents']['Slider'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'initialValue':K,'onValueChange':this['handleValueChange']['bind'](this),'onValueRender':this['handleValueRender']['bind'](this)}),'digits','edges'));}};x['LibraryComponents']['Spinner']=b['ModuleUtils']['findByName']('Spinner');x['LibraryComponents']['SvgIcon']=c['loadPatchedComp']('SvgIcon')||y&&class BDFDB_Icon extends n['React']['Component']{['render'](){if(b['ObjectUtils']['is'](this['props']['name'])){if(this['props']['className'])this['props']['nativeClass']=!![];this['props']['iconSVG']=this['props']['name']['icon'];let K=Object['assign']({'width':0x18,'height':0x18,'color':'currentColor'},this['props']['name']['defaultProps'],this['props']);for(let L in K)this['props']['iconSVG']=this['props']['iconSVG']['replace'](new RegExp('%%'+L,'g'),K[L]);}if(this['props']['iconSVG']){let M=b['ReactUtils']['elementToReact'](b['DOMUtils']['create'](this['props']['iconSVG']));if(b['ReactUtils']['isValidElement'](M)){M['props']['className']=b['DOMUtils']['formatClassName'](!this['props']['nativeClass']&&b['disCN']['svgicon'],M['props']['className'],this['props']['className']);M['props']['style']=Object['assign']({},M['props']['style'],this['props']['style']);M['props']=Object['assign']({},b['ObjectUtils']['extract'](this['props'],'onClick','onContextMenu','onMouseDown','onMouseUp','onMouseEnter','onMouseLeave'),M['props']);return M;}}return null;}};x['LibraryComponents']['SvgIcon']['Names']={'CHANGELOG':{'icon':''},'CHECKBOX':{'defaultProps':{'background':'','foreground':''},'icon':''},'CHECKBOX_EMPTY':{'defaultProps':{'foreground':''},'icon':''},'CHECKMARK':{'defaultProps':{'width':0x12,'height':0x12},'icon':''},'CLOSE':{'defaultProps':{'width':0xc,'height':0xc},'icon':''},'CLOSE_CIRCLE':{'icon':''},'COG':{'defaultProps':{'width':0x14,'height':0x14},'icon':''},'CROWN':{'icon':''},'DROPPER':{'defaultProps':{'width':0x10,'height':0x10,'foreground':''},'icon':''},'FOLDER':{'icon':''},'GITHUB':{'icon':''},'GRADIENT':{'defaultProps':{'width':0x24,'height':0x24},'icon':''},'LEFT_CARET':{'icon':''},'LEFT_DOUBLE_CARET':{'icon':''},'LOCK_CLOSED':{'icon':''},'NOVA_AT':{'icon':''},'NOVA_PIN':{'icon':''},'NOVA_TRASH':{'icon':''},'PENCIL':{'defaultProps':{'width':0x10,'height':0x10},'icon':''},'PIN':{'defaultProps':{'width':0x10,'height':0x10},'icon':''},'RAW_TEXT':{'icon':''},'RIGHT_CARET':{'icon':''},'RIGHT_DOUBLE_CARET':{'icon':''},'SEARCH':{'defaultProps':{'width':0x12,'height':0x12},'icon':''},'SPEAKER':{'icon':''},'STREAM':{'icon':''}};x['LibraryComponents']['Switch']=c['loadPatchedComp']('Switch')||y&&class BDFDB_Switch extends n['React']['Component']{['handleChange'](){this['props']['value']=!this['props']['value'];if(typeof this['props']['onChange']=='function')this['props']['onChange'](this['props']['value'],this);b['ReactUtils']['forceUpdate'](this);}['render'](){return b['ReactUtils']['createElement'](x['NativeSubComponents']['Switch'],Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this)}));}};x['LibraryComponents']['TabBar']=c['loadPatchedComp']('TabBar')||y&&class BDFDB_TabBar extends n['React']['Component']{['handleItemSelect'](K){this['props']['selectedItem']=K;if(typeof this['props']['onItemSelect']=='function')this['props']['onItemSelect'](K,this);b['ReactUtils']['forceUpdate'](this);}['render'](){let K=(b['ArrayUtils']['is'](this['props']['items'])?this['props']['items']:[{}])['filter'](M=>M);let L=this['props']['selectedItem']||(K[0x0]||{})['value'];return b['ReactUtils']['createElement'](x['NativeSubComponents']['TabBar'],b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'selectedItem':L,'onItemSelect':this['handleItemSelect']['bind'](this),'children':K['map'](M=>{return b['ReactUtils']['createElement'](x['LibraryComponents']['TabBar']['Item'],{'className':b['DOMUtils']['formatClassName'](this['props']['itemClassName'],L==M['value']&&this['props']['itemSelectedClassName']),'itemType':this['props']['type'],'id':M['value'],'children':M['label']||M['value'],'aria-label':M['label']||M['value']});})}),'itemClassName','items'));}};x['NativeSubComponents']['TabBar']=b['ModuleUtils']['findByName']('TabBar');x['LibraryComponents']['Table']=c['loadPatchedComp']('Table')||y&&class BDFDB_Table extends n['React']['Component']{['render'](){return b['ReactUtils']['createElement'](x['NativeSubComponents']['Table'],Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName'](b['disCN']['table'],this['props']['className']),'headerClassName':b['DOMUtils']['formatClassName'](this['props']['stickyHeader']?b['disCN']['tablestickyheader']:b['disCN']['tableheader'],this['props']['headerClassName']),'headerCellClassName':b['DOMUtils']['formatClassName'](b['disCN']['tableheadercell'],this['props']['headerCellClassName']),'sortedHeaderCellClassName':b['DOMUtils']['formatClassName'](b['disCN']['tableheadercellsorted'],this['props']['sortedHeaderCellClassName']),'bodyCellClassName':b['DOMUtils']['formatClassName'](b['disCN']['tablebodycell'],this['props']['bodyCellClassName']),'rowClassName':b['DOMUtils']['formatClassName'](b['disCN']['tablerow'],this['props']['rowClassName']),'onSort':(K,L)=>{this['props']['sortDirection']=this['props']['sortKey']!=K&&L==x['LibraryComponents']['Table']['SortDirection']['ASCENDING']&&this['props']['columns']['filter'](M=>M['key']==K)[0x0]['reverse']?x['LibraryComponents']['Table']['SortDirection']['DESCENDING']:L;this['props']['sortKey']=K;this['props']['data']=b['ArrayUtils']['keySort'](this['props']['data'],this['props']['sortKey']);if(this['props']['sortDirection']==x['LibraryComponents']['Table']['SortDirection']['DESCENDING'])this['props']['data']['reverse']();if(typeof this['props']['onSort']=='function')this['props']['onSort'](this['props']['sortKey'],this['props']['sortDirection']);b['ReactUtils']['forceUpdate'](this);}}));}};x['LibraryComponents']['TextArea']=c['loadPatchedComp']('TextArea')||y&&class BDFDB_TextArea extends n['React']['Component']{['handleChange'](K){this['props']['value']=K;if(typeof this['props']['onChange']=='function')this['props']['onChange'](K,this);b['ReactUtils']['forceUpdate'](this);}['handleBlur'](K){if(typeof this['props']['onBlur']=='function')this['props']['onBlur'](K,this);}['handleFocus'](K){if(typeof this['props']['onFocus']=='function')this['props']['onFocus'](K,this);}['render'](){return b['ReactUtils']['createElement'](x['NativeSubComponents']['TextArea'],Object['assign']({},this['props'],{'onChange':this['handleChange']['bind'](this),'onBlur':this['handleBlur']['bind'](this),'onFocus':this['handleFocus']['bind'](this)}));}};x['LibraryComponents']['TextElement']=b['ModuleUtils']['findByName']('Text');x['LibraryComponents']['TextGradientElement']=c['loadPatchedComp']('TextGradientElement')||y&&class BDFDB_TextGradientElement extends n['React']['Component']{['render'](){if(this['props']['gradient']&&this['props']['children'])return b['ReactUtils']['createElement']('span',{'children':this['props']['children'],'ref':K=>{let L=b['ReactUtils']['findDOMNode'](K);if(L){L['style']['setProperty']('background-image',this['props']['gradient'],'important');L['style']['setProperty']('color','transparent','important');L['style']['setProperty']('-webkit-background-clip','text','important');}}});return this['props']['children']||null;}};x['LibraryComponents']['TextInput']=c['loadPatchedComp']('TextInput')||y&&class BDFDB_TextInput extends n['React']['Component']{['handleChange'](K){let L=K=b['ObjectUtils']['is'](K)?K['currentTarget']['value']:K;this['props']['value']=this['props']['valuePrefix']&&!L['startsWith'](this['props']['valuePrefix'])?this['props']['valuePrefix']+L:L;if(typeof this['props']['onChange']=='function')this['props']['onChange'](this['props']['value'],this);b['ReactUtils']['forceUpdate'](this);}['handleInput'](K){if(typeof this['props']['onInput']=='function')this['props']['onInput'](b['ObjectUtils']['is'](K)?K['currentTarget']['value']:K,this);}['handleKeyDown'](K){if(typeof this['props']['onKeyDown']=='function')this['props']['onKeyDown'](K,this);}['handleBlur'](K){if(typeof this['props']['onBlur']=='function')this['props']['onBlur'](K,this);}['handleFocus'](K){if(typeof this['props']['onFocus']=='function')this['props']['onFocus'](K,this);}['handleMouseEnter'](K){if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](K,this);}['handleMouseLeave'](K){if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](K,this);}['handleNumberButton'](K,L){b['TimeUtils']['clear'](K['pressedTimeout']);K['pressedTimeout']=b['TimeUtils']['timeout'](M=>{delete this['props']['focused'];b['ReactUtils']['forceUpdate'](this);},0x3e8);this['props']['focused']=!![];this['handleChange']['bind'](this)(L);this['handleInput']['bind'](this)(L);}['componentDidMount'](){if(this['props']['type']=='file'){let L=b['ReactUtils']['findOwner'](this,{'name':'BDFDB_FileButton'});if(L)L['refInput']=this;}let K=b['ReactUtils']['findDOMNode'](this);if(!K)return;K=K['querySelector']('input')||K;if(K&&!K['patched']){K['addEventListener']('keydown',M=>{this['handleKeyDown']['bind'](this)(M);M['stopImmediatePropagation']();});K['patched']=!![];}}['render'](){let K=[b['ReactUtils']['createElement']('input',b['ObjectUtils']['exclude'](Object['assign']({},this['props'],{'className':b['DOMUtils']['formatClassName'](this['props']['size']&&x['LibraryComponents']['TextInput']['Sizes'][this['props']['size']['toUpperCase']()]&&b['disCN']['input'+this['props']['size']['toLowerCase']()]||b['disCN']['inputdefault'],this['props']['inputClassName'],this['props']['focused']&&b['disCN']['inputfocused'],this['props']['error']||this['props']['errorMessage']?b['disCN']['inputerror']:this['props']['success']&&b['disCN']['inputsuccess'],this['props']['disabled']&&b['disCN']['inputdisabled'],this['props']['editable']&&b['disCN']['inputeditable']),'type':this['props']['type']=='color'||this['props']['type']=='file'?'text':this['props']['type'],'onChange':this['handleChange']['bind'](this),'onInput':this['handleInput']['bind'](this),'onKeyDown':this['handleKeyDown']['bind'](this),'onBlur':this['handleBlur']['bind'](this),'onFocus':this['handleFocus']['bind'](this),'onMouseEnter':this['handleMouseEnter']['bind'](this),'onMouseLeave':this['handleMouseLeave']['bind'](this),'maxLength':this['props']['type']=='file'?![]:this['props']['maxLength'],'ref':this['props']['inputRef']}),'errorMessage','focused','error','success','inputClassName','inputChildren','valuePrefix','inputPrefix','size','editable','inputRef','style','mode','filter','useFilePath','useFilepath')),this['props']['inputChildren'],this['props']['type']=='color'?b['ReactUtils']['createElement'](x['LibraryComponents']['Flex']['Child'],{'wrap':!![],'children':b['ReactUtils']['createElement'](x['LibraryComponents']['ColorSwatches'],{'colors':[],'color':this['props']['value']&&this['props']['mode']=='comp'?b['ColorUtils']['convert'](this['props']['value']['split'](','),'RGB'):this['props']['value'],'onColorChange':L=>{this['handleChange'](!L?'':this['props']['mode']=='comp'?b['ColorUtils']['convert'](L,'RGBCOMP')['slice'](0x0,0x3)['join'](','):L);},'pickerConfig':{'gradient':![],'alpha':this['props']['mode']!='comp'}})}):null,this['props']['type']=='file'?b['ReactUtils']['createElement'](x['LibraryComponents']['FileButton'],{'filter':this['props']['filter'],'mode':this['props']['mode'],'useFilePath':this['props']['useFilePath']||this['props']['useFilepath']}):null]['flat'](0xa)['filter'](L=>L);return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['inputwrapper'],this['props']['type']=='number'&&(this['props']['size']&&x['LibraryComponents']['TextInput']['Sizes'][this['props']['size']['toUpperCase']()]&&b['disCN']['inputnumberwrapper'+this['props']['size']['toLowerCase']()]||b['disCN']['inputnumberwrapperdefault']),this['props']['className']),'style':this['props']['style'],'children':[this['props']['inputPrefix']?b['ReactUtils']['createElement']('span',{'className':b['disCN']['inputprefix']}):null,this['props']['type']=='number'?b['ReactUtils']['createElement']('div',{'className':b['disCN']['inputnumberbuttons'],'children':[b['ReactUtils']['createElement']('div',{'className':b['disCN']['inputnumberbuttonup'],'onClick':L=>{let M=parseInt(this['props']['min']);let N=parseInt(this['props']['max']);let O=parseInt(this['props']['value'])+0x1||M||0x0;if(isNaN(N)||!isNaN(N)&&O<=N)this['handleNumberButton']['bind'](this)(L['_targetInst'],isNaN(M)||!isNaN(M)&&O>=M?O:M);}}),b['ReactUtils']['createElement']('div',{'className':b['disCN']['inputnumberbuttondown'],'onClick':L=>{let M=parseInt(this['props']['min']);let N=parseInt(this['props']['max']);let O=parseInt(this['props']['value'])-0x1||M||0x0;if(isNaN(M)||!isNaN(M)&&O>=M)this['handleNumberButton']['bind'](this)(L['_targetInst'],isNaN(N)||!isNaN(N)&&O<=N?O:N);}})]}):null,K['length']==0x1?K[0x0]:b['ReactUtils']['createElement'](x['LibraryComponents']['Flex'],{'align':x['LibraryComponents']['Flex']['Align']['CENTER'],'children':K['map']((L,M)=>M!=0x0?b['ReactUtils']['createElement'](x['LibraryComponents']['Flex']['Child'],{'shrink':0x0,'children':L}):L)}),this['props']['errorMessage']?b['ReactUtils']['createElement'](x['LibraryComponents']['TextElement'],{'className':b['disCN']['carderror'],'size':x['LibraryComponents']['TextElement']['Sizes']['SIZE_12'],'color':x['LibraryComponents']['TextElement']['Colors']['STATUS_RED'],'children':this['props']['errorMessage']}):null]['filter'](L=>L)});}};x['LibraryComponents']['TextScroller']=c['loadPatchedComp']('TextScroller')||y&&class BDFDB_TextScroller extends n['React']['Component']{['render'](){return b['ReactUtils']['createElement']('div',{'className':b['DOMUtils']['formatClassName'](b['disCN']['textscroller'],this['props']['className']),'style':Object['assign']({},this['props']['style'],{'position':'relative','display':'block','overflow':'hidden'}),'ref':K=>{let L=b['ReactUtils']['findDOMNode'](K);if(L&&L['parentElement']){let M=b['DOMUtils']['getInnerWidth'](L['parentElement']);if(M>0x32)L['style']['setProperty']('max-width',M+'px');b['TimeUtils']['timeout'](O=>{if(document['contains'](L['parentElement'])){let P=b['DOMUtils']['getInnerWidth'](L['parentElement']);if(P>M)L['style']['setProperty']('max-width',P+'px');}},0xbb8);let N=new n['AnimationUtils']['Value'](0x0);N['interpolate']({'inputRange':[0x0,0x1],'outputRange':[0x0,(b['DOMUtils']['getRects'](L['firstElementChild'])['width']-b['DOMUtils']['getRects'](L)['width'])*-0x1]})['addListener'](O=>{L['firstElementChild']['style']['setProperty']('left',O['value']+'px','important');});this['scroll']=O=>{let P=O+parseFloat(L['firstElementChild']['style']['getPropertyValue']('left'))/(b['DOMUtils']['getRects'](L['firstElementChild'])['width']-b['DOMUtils']['getRects'](L)['width']);P=isNaN(P)||!isFinite(P)?O:P;P*=b['DOMUtils']['getRects'](L['firstElementChild'])['width']/(b['DOMUtils']['getRects'](L)['width']*0x2);n['AnimationUtils']['parallel']([n['AnimationUtils']['timing'](N,{'toValue':O,'duration':Math['sqrt'](P**0x2)*0xfa0/(parseInt(this['props']['speed'])||0x1)})])['start']();};}},'onClick':K=>{if(typeof this['props']['onClick']=='function')this['props']['onClick'](K,this);},'onMouseEnter':K=>{if(b['DOMUtils']['getRects'](K['currentTarget'])['width']{if(this['scrolling']){delete this['scrolling'];K['currentTarget']['firstElementChild']['style']['setProperty']('display','inline','important');this['scroll'](0x0);}},'children':b['ReactUtils']['createElement']('div',{'style':{'left':'0','position':'relative','display':'inline','whiteSpace':'nowrap'},'children':this['props']['children']})});}};x['LibraryComponents']['TooltipContainer']=c['loadPatchedComp']('TooltipContainer')||y&&class BDFDB_TooltipContainer extends n['React']['Component']{['render'](){let K=(b['ArrayUtils']['is'](this['props']['children'])?this['props']['children'][0x0]:this['props']['children'])||b['ReactUtils']['createElement']('div',{});K['props']['className']=b['DOMUtils']['formatClassName'](K['props']['className'],this['props']['className']);let L=K['props']['onMouseEnter'],M=K['props']['onMouseLeave'],N=K['props']['onClick'],O=K['props']['onContextMenu'];let P=![];K['props']['onMouseEnter']=(Q,R)=>{if(!P){P=!![];b['TooltipUtils']['create'](Q['currentTarget'],this['props']['text'],Object['assign']({'delay':this['props']['delay']},this['props']['tooltipConfig']));if(typeof this['props']['onMouseEnter']=='function')this['props']['onMouseEnter'](Q,this);if(typeof L=='function')L(Q,R);}};K['props']['onMouseLeave']=(Q,R)=>{P=![];if(typeof this['props']['onMouseLeave']=='function')this['props']['onMouseLeave'](Q,this);if(typeof M=='function')M(Q,R);};K['props']['onClick']=(Q,R)=>{if(typeof this['props']['onClick']=='function')this['props']['onClick'](Q,this);if(typeof N=='function')N(Q,R);};K['props']['onContextMenu']=(Q,R)=>{if(typeof this['props']['onContextMenu']=='function')this['props']['onContextMenu'](Q,this);if(typeof O=='function')O(Q,R);};return b['ReactUtils']['createElement'](n['React']['Fragment'],{'children':K});}};x['LibraryComponents']['UserSummaryItem']=b['ModuleUtils']['findByName']('UserSummaryItem');for(let K in x['NativeSubComponents'])if(x['LibraryComponents'][K])for(let L in x['NativeSubComponents'][K])if(L!='displayName'&&L!='name'&&(typeof x['NativeSubComponents'][K][L]!='function'||L['charAt'](0x0)==L['charAt'](0x0)['toUpperCase']())){if(L=='defaultProps')x['LibraryComponents'][K][L]=Object['assign']({},x['LibraryComponents'][K][L],x['NativeSubComponents'][K][L]);else x['LibraryComponents'][K][L]=x['NativeSubComponents'][K][L];}b['LibraryComponents']=Object['assign']({},x['LibraryComponents']);b['DOMUtils']['appendLocalStyle']('BDFDB','\x0a\x09\x09@import\x20url(https://mwittrien.github.io/BetterDiscordAddons/Themes/res/SupporterBadge.css);\x0a\x09\x09\x0a\x09\x09img:not([src]),\x20img[src=\x22\x22],\x20img[src=\x22null\x22]\x20{\x0a\x09\x09\x09opacity:\x200;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['loadingiconwrapper']+'\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09bottom:\x200;\x0a\x09\x09\x09right:\x200;\x0a\x09\x09\x09z-index:\x201000;\x0a\x09\x09\x09animation:\x20loadingwrapper-fade\x203s\x20infinite\x20ease;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['loadingiconwrapper']+b['dotCN']['loadingicon'])+'\x20{\x0a\x09\x09\x09margin:\x200\x205px;\x0a\x09\x09}\x0a\x09\x09@keyframes\x20loadingwrapper-fade\x20{\x0a\x09\x09\x09from\x20{opacity:\x200.1;}\x0a\x09\x09\x0950%\x20{opacity:\x200.9;}\x0a\x09\x09\x09to\x20{opacity:\x200.1;}\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['settingspanelheader']+'\x20{\x0a\x09\x09\x09padding-right:\x205px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingspanelheadercontrols']+'\x20>\x20*\x20{\x0a\x09\x09\x09margin-left:\x208px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingspanelheaderbutton']+'\x20{\x0a\x09\x09\x09height:\x2024px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingspanelinner']+'\x20{\x0a\x09\x09\x09padding-left:\x2015px;\x0a\x09\x09\x09padding-right:\x205px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingspanellist']+'\x20{\x0a\x09\x09\x09padding-left:\x2015px;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['collapsecontainer']+'\x20{\x0a\x09\x09\x09margin-bottom:\x2020px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['collapsecontainermini']+'\x20{\x0a\x09\x09\x09margin-bottom:\x208px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['collapsecontainerheader']+'\x20{\x0a\x09\x09\x09margin-bottom:\x204px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['collapsecontainercollapsed']+b['dotCN']['collapsecontainertitle'])+'\x20{\x0a\x09\x09\x09margin-bottom:\x200;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['collapsecontainertitle']+'\x20{\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09justify-content:\x20space-between;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09\x09order:\x201;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['collapsecontainertitle']+':hover\x20{\x0a\x09\x09\x09color:\x20var(--text-normal);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['collapsecontainertitle']+'::before\x20{\x0a\x09\x09\x09content:\x20\x22\x22;\x0a\x09\x09\x09flex:\x201\x201\x20auto;\x0a\x09\x09\x09background-color:\x20currentColor;\x0a\x09\x09\x09height:\x202px;\x0a\x09\x09\x09margin:\x200\x2010px\x200\x2015px;\x0a\x09\x09\x09opacity:\x200.2;\x0a\x09\x09\x09order:\x202;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['collapsecontainertitle']+'::after\x20{\x0a\x09\x09\x09content:\x20\x22\x22;\x0a\x09\x09\x09-webkit-mask:\x20url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K)\x20center/cover\x20no-repeat;\x0a\x09\x09\x09background-color:\x20currentColor;\x0a\x09\x09\x09width:\x2020px;\x0a\x09\x09\x09height:\x2020px;\x0a\x09\x09\x09order:\x203;\x0a\x09\x09\x09transition:\x20transform\x20.3s\x20ease;\x0a\x09\x09\x09transform:\x20rotate(0);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['collapsecontainercollapsed']+b['dotCN']['collapsecontainertitle'])+'::after\x20{\x0a\x09\x09\x09transform:\x20rotate(90deg)\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['collapsecontainerinner']+'\x20{\x0a\x09\x09\x09padding-left:\x2015px;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['settingsguild']+'\x20{\x0a\x09\x09\x09border-radius:\x2050%;\x0a\x09\x09\x09border:\x203px\x20solid\x20'+b['DiscordConstants']['Colors']['STATUS_GREEN']+';\x0a\x09\x09\x09box-sizing:\x20border-box;\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09\x09margin:\x203px;\x0a\x09\x09\x09overflow:\x20hidden;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingsguilddisabled']+'\x20{\x0a\x09\x09\x09border-color:\x20'+b['DiscordConstants']['Colors']['STATUS_GREY']+';\x0a\x09\x09\x09filter:\x20grayscale(100%)\x20brightness(50%);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['paginationlistpagination']+'\x20{\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09justify-content:\x20center;\x0a\x09\x09\x09font-size:\x2016px;\x0a\x09\x09\x09line-height:\x2020px;\x0a\x09\x09\x09margin-top:\x2010px;\x0a\x09\x09\x09margin-bottom:\x2010px;\x0a\x09\x09\x09color:\x20var(--text-normal);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['paginationlistalphabet']+'\x20{\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09justify-content:\x20center;\x0a\x09\x09\x09font-size:\x2016px;\x0a\x09\x09\x09line-height:\x2020px;\x0a\x09\x09\x09margin-bottom:\x2010px;\x0a\x09\x09\x09color:\x20var(--text-normal);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['paginationlistalphabetchar']+'\x20{\x0a\x09\x09\x09min-width:\x2012px;\x0a\x09\x09\x09text-align:\x20center;\x0a\x09\x09\x09margin:\x200\x204px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['paginationlistalphabetchar']+b['notCN']['paginationlistalphabetchardisabled'])+':hover\x20{\x0a\x09\x09\x09color:\x20var(--header-primary);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['paginationlistalphabetchar']+b['dotCN']['paginationlistalphabetchardisabled'])+'\x20{\x0a\x09\x09\x09color:\x20var(--text-muted);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['overflowellipsis']+'\x20{\x0a\x09\x09\x09overflow:\x20hidden;\x0a\x09\x09\x09text-overflow:\x20ellipsis;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['userpopout']+b['dotCN']['userpopoutheadertext'])+'\x20+\x20'+b['dotCN']['userinfodate']+',\x0a\x09\x09'+(b['dotCNS']['userprofile']+b['dotCN']['userprofilenametag'])+'\x20+\x20'+b['dotCN']['userinfodate']+'\x20{\x0a\x09\x09\x09margin-top:\x208px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['userinfodate']+'\x20+\x20'+b['dotCN']['userpopoutcustomstatus']+'\x20{\x0a\x09\x09\x09margin-top:\x204px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCNS']['userpopoutheadernormal']+b['dotCN']['userinfodate'])+'\x20{\x0a\x09\x09\x09color:\x20#b9bbbe;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['userpopoutheader']+b['notCNS']['userpopoutheadernormal']+b['dotCN']['userinfodate'])+',\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCNS']['userpopoutheader']+b['dotCN']['userinfodate'])+'\x20{\x0a\x09\x09\x09color:\x20hsla(0,0%,100%,.6);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCNS']['userprofiletopsectionnormal']+b['dotCN']['userinfodate'])+'\x20{\x0a\x09\x09\x09color:\x20hsla(216,4%,74%,.6);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['themelight']+'\x20[class*=\x27topSection\x27]'+(b['notCNS']['userprofiletopsectionnormal']+b['dotCN']['userinfodate'])+',\x0a\x09\x09'+b['dotCN']['themedark']+'\x20[class*=\x27topSection\x27]\x20'+b['dotCN']['userinfodate']+'\x20{\x0a\x09\x09\x09color:\x20hsla(0,0%,100%,.6);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCN']['messageavatar']+b['dotCN']['bdfdbbadge'])+'\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09overflow:\x20visible;\x0a\x09\x09\x09border-radius:\x200;\x0a\x09\x09}\x0a\x0a\x09\x09'+b['dotCN']['favbuttoncontainer']+'\x20{\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09}\x0a\x0a\x09\x09'+b['dotCN']['menuhint']+'\x20{\x0a\x09\x09\x09width:\x2042px;\x0a\x09\x09\x09max-width:\x2042px;\x0a\x09\x09\x09margin-left:\x208px;\x0a\x09\x09}\x0a\x0a\x09\x09'+b['dotCN']['cursordefault']+'\x20{\x0a\x09\x09\x09cursor:\x20default\x20!important;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['cursorpointer']+'\x20{\x0a\x09\x09\x09cursor:\x20pointer\x20!important;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['slidergrabber']+':active\x20'+b['dotCN']['sliderbubble']+',\x0a\x09\x09'+b['dotCN']['slidergrabber']+':hover\x20'+b['dotCN']['sliderbubble']+'\x20{\x0a\x09\x09\x09visibility:\x20visible;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['sliderbubble']+'\x20{\x0a\x09\x09\x09border-radius:\x203px;\x0a\x09\x09\x09top:\x20-32px;\x0a\x09\x09\x09height:\x2022px;\x0a\x09\x09\x09width:\x20auto;\x0a\x09\x09\x09padding:\x200\x205px;\x0a\x09\x09\x09white-space:\x20pre;\x0a\x09\x09\x09transform:\x20translateX(-50%);\x0a\x09\x09\x09line-height:\x2022px;\x0a\x09\x09\x09text-align:\x20center;\x0a\x09\x09\x09font-weight:\x20600;\x0a\x09\x09\x09font-size:\x2012px;\x0a\x09\x09\x09color:\x20#f6f6f7;\x0a\x09\x09\x09visibility:\x20hidden;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['sliderbubble']+',\x0a\x09\x09'+b['dotCN']['sliderbubble']+':before\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09left:\x2050%;\x0a\x09\x09\x09pointer-events:\x20none;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['sliderbubble']+':before\x20{\x0a\x09\x09\x09border:\x205px\x20solid\x20transparent;\x0a\x09\x09\x09content:\x20\x22\x20\x22;\x0a\x09\x09\x09width:\x200;\x0a\x09\x09\x09height:\x200;\x0a\x09\x09\x09margin-left:\x20-5px;\x0a\x09\x09\x09top:\x20100%;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['sliderbubble'])+'\x20{\x0a\x09\x09\x09background-color:\x20#4f545c;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['sliderbubble'])+':before\x20{\x0a\x09\x09\x09border-top-color:\x20#4f545c;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['sliderbubble'])+'\x20{\x0a\x09\x09\x09background-color:\x20#72767d;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['sliderbubble'])+':before\x20{\x0a\x09\x09\x09border-top-color:\x20#72767d;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['selectwrapper']+b['dotCN']['select'])+'\x20{\x0a\x09\x09\x09flex:\x201\x201\x20auto;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['selectwrapper']+'\x20[class*=\x22css-\x22][class*=\x22-container\x22]\x20>\x20[class*=\x22css-\x22][class*=\x22-menu\x22]\x20{\x0a\x09\x09\x09z-index:\x203;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['hotkeywrapper']+b['dotCN']['hotkeycontainer'])+'\x20{\x0a\x09\x09\x09flex:\x201\x201\x20auto;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['hotkeyresetbutton']+'\x20{\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09\x09margin-left:\x205px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['hotkeyresetbutton']+b['dotCN']['svgicon'])+':hover\x20{\x0a\x09\x09\x09color:\x20'+b['DiscordConstants']['Colors']['STATUS_RED']+';\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['hovercardwrapper']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['hovercardwrapper']+b['dotCN']['hovercard'])+'\x20{\x0a\x09\x09\x09padding:\x2010px\x200;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['hovercardwrapper']+b['dotCN']['hovercard'])+'\x20>\x20*\x20{\x0a\x09\x09\x09z-index:\x201;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNC']['hovercardwrapper']+b['dotCN']['hovercardinner'])+'\x20{\x0a\x09\x09\x09min-height:\x2028px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['hovercardinner']+'\x20{\x0a\x09\x09\x09width:\x20100%;\x0a\x09\x09\x09padding-right:\x205px;\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09z-index:\x201;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['hovercardwrapper']+b['dotCN']['hovercardbutton'])+'\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09top:\x20-6px;\x0a\x09\x09\x09right:\x20-6px;\x0a\x09\x09\x09opacity:\x200;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['hovercardwrapper']+b['dotCNS']['hovercard']+b['dotCN']['hovercardbutton'])+'\x20{\x0a\x09\x09\x09right:\x20-25px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['hovercardwrapper']+':hover\x20'+b['dotCN']['hovercardbutton']+'\x20{\x0a\x09\x09\x09opacity:\x201;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['table']+'\x20{\x0a\x09\x09\x09width:\x20100%;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheader']+'\x20{\x0a\x09\x09\x09padding:\x200px\x2012px\x208px\x200;\x0a\x09\x09\x09margin-bottom:\x205px;\x0a\x09\x09\x09font-size:\x2012px;\x0a\x09\x09\x09font-weight:\x20600;\x0a\x09\x09\x09box-sizing:\x20border-box;\x0a\x09\x09\x09background-color:\x20var(--background-primary);\x0a\x09\x09\x09border-bottom:\x201px\x20solid\x20var(--background-modifier-accent);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tablestickyheader']+':first-child\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09width:\x20100%;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['modalsub']+b['dotCN']['tablestickyheader'])+':first-child\x20{\x0a\x09\x09\x09padding-left:\x2020px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheadercell']+'\x20{\x0a\x09\x09\x09text-transform:\x20uppercase;\x0a\x09\x09\x09color:\x20var(--interactive-normal);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheadercell']+',\x0a\x09\x09'+b['dotCN']['tablebodycell']+'\x20{\x0a\x09\x09\x09border-left:\x201px\x20solid\x20var(--background-modifier-accent);\x0a\x09\x09\x09box-sizing:\x20border-box;\x0a\x09\x09\x09padding:\x200\x2012px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheadercell']+':first-child,\x0a\x09\x09'+b['dotCN']['tablebodycell']+':first-child\x20{\x0a\x09\x09\x09border-left:\x20none;\x0a\x09\x09\x09padding-left:\x200;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheadercellsorted']+',\x0a\x09\x09'+b['dotCN']['tableheadercellsorted']+':hover\x20{\x0a\x09\x09\x09color:\x20var(--interactive-active);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tableheadersorticon']+'\x20{\x0a\x09\x09\x09width:\x2018px;\x0a\x09\x09\x09height:\x2018px;\x0a\x09\x09\x09margin-left:\x204px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tablerow']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09margin-bottom:\x205px;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09color:\x20var(--header-secondary);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['tablebodycell']+'\x20{\x0a\x09\x09\x09font-size:\x2015px;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['settingstablelist']+b['dotCN']['checkboxcontainer'])+':before\x20{\x0a\x09\x09\x09display:\x20none;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['settingstablelist']+b['dotCN']['settingstableheader'])+'\x20{\x0a\x09\x09\x09min-height:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['settingstablelist']+b['dotCN']['settingstableheaderoption'])+'\x20{\x0a\x09\x09\x09width:\x20unset;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingstableheadervertical']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingstableheadervertical']+'\x20>\x20span\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09bottom:\x2050%;\x0a\x09\x09\x09right:\x20calc(50%\x20-\x205px);\x0a\x09\x09\x09margin-bottom:\x20-5px;\x0a\x09\x09\x09writing-mode:\x20vertical-rl;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingstablecard']+'\x20{\x0a\x09\x09\x09height:\x2060px;\x0a\x09\x09\x09padding:\x200\x2010px;\x0a\x09\x09\x09margin-bottom:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['settingstablecard']+b['dotCN']['settingstablecardlabel'])+'\x20{\x0a\x09\x09\x09padding-right:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['settingstablecard']+b['dotCN']['settingstablecardlabel'])+',\x0a\x09\x09'+(b['dotCNS']['settingstablecard']+b['dotCN']['settingstablecardconfigs'])+'\x20{\x0a\x09\x09\x09margin:\x200;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['settingstableheaders']+'\x20{\x0a\x09\x09\x09margin-right:\x2010px;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['popoutwrapper']+b['dotCN']['messagespopouttabbarheader'])+'\x20{\x0a\x09\x09\x09flex:\x201\x200\x20auto;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09height:\x20unset;\x0a\x09\x09\x09min-height:\x2056px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['popoutwrapper']+b['dotCNS']['messagespopouttabbarheader']+b['dotCN']['messagespopouttabbar'])+'\x20{\x0a\x09\x09\x09min-height:\x2032px;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['charcounter']+'\x20{\x0a\x09\x09\x09color:\x20var(--channels-default);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['inputnumberwrapper']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['inputnumberbuttons']+':hover\x20+\x20'+(b['dotCN']['input']+b['notCN']['inputfocused']+b['notCN']['inputerror']+b['notCN']['inputsuccess']+b['notCN']['inputdisabled'])+':not(:focus)\x20{\x0a\x09\x09\x09border-color:\x20#040405;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['inputnumberwrapperdefault']+b['dotCN']['input'])+'\x20{\x0a\x09\x09\x09padding-right:\x2025px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['inputnumberwrappermini']+b['dotCN']['input'])+'\x20{\x0a\x09\x09\x09padding-left:\x206px;\x0a\x09\x09\x09padding-right:\x2017px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['inputnumberwrapper']+b['dotCN']['input'])+'::-webkit-inner-spin-button,\x20\x0a\x09\x09'+(b['dotCNS']['inputnumberwrapper']+b['dotCN']['input'])+'::-webkit-outer-spin-button{\x0a\x09\x09\x09-webkit-appearance:\x20none\x20!important;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['inputnumberbuttons']+'\x20{\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09flex-direction:\x20column;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09justify-content:\x20space-around;\x0a\x09\x09\x09height:\x20110%;\x0a\x09\x09\x09top:\x20-2%;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['inputnumberwrapperdefault']+b['dotCN']['inputnumberbuttons'])+'\x20{\x0a\x09\x09\x09right:\x208px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['inputnumberwrappermini']+b['dotCN']['inputnumberbuttons'])+'\x20{\x0a\x09\x09\x09right:\x204px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['inputnumberbutton']+'\x20{\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09\x09border:\x20transparent\x20solid\x205px;\x0a\x09\x09\x09border-top-width:\x202.5px;\x0a\x09\x09\x09display:\x20inline-block;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['inputnumberbutton'])+'\x20{\x0a\x09\x09\x09border-bottom-color:\x20#dcddde;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['inputnumberbutton'])+':hover\x20{\x0a\x09\x09\x09border-bottom-color:\x20#4f545c;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['inputnumberbutton'])+'\x20{\x0a\x09\x09\x09border-bottom-color:\x20#72767d;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['inputnumberbutton'])+':hover\x20{\x0a\x09\x09\x09border-bottom-color:\x20#f6f6f7;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['inputnumberbuttondown']+'\x20{\x0a\x09\x09\x09transform:\x20rotate(180deg);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['guildupperleftbadge']+'\x20{\x0a\x09\x09\x09top:\x200;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['guildlowerleftbadge']+'\x20{\x0a\x09\x09\x09bottom:\x200;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNC']['guildlowerleftbadge']+b['dotCN']['guildupperleftbadge'])+'\x20{\x0a\x09\x09\x09pointer-events:\x20none;\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09left:\x200;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['svgiconwrapper']+'\x20{\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09justify-content:\x20center;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['svgicon']+'\x20{\x0a\x09\x09\x09color:\x20var(--interactive-normal);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['svgicon']+':hover\x20{\x0a\x09\x09\x09color:\x20var(--interactive-hover);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['svgicon']+':active\x20{\x0a\x09\x09\x09color:\x20var(--interactive-active);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['modalsubinner']+'\x20{\x0a\x09\x09\x09padding-left:\x2016px;\x0a\x09\x09\x09padding-right:\x208px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['modalnoscroller']+'\x20{\x0a\x09\x09\x09padding-bottom:\x2010px;\x0a\x09\x09\x09overflow:\x20visible;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['modaltabcontent']+'\x20{\x0a\x09\x09\x09margin-top:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['listscroller']+b['dotCN']['modaltabcontent'])+'\x20{\x0a\x09\x09\x09margin-top:\x200;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['modalwrapper']+b['dotCN']['modalheader']+b['dotCN']['modalheaderhassibling'])+'\x20{\x0a\x09\x09\x09padding-bottom:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['tabbarcontainer']+b['dotCN']['tabbarcontainerbottom'])+'\x20{\x0a\x09\x09\x09border-top:\x20unset;\x0a\x09\x09\x09border-bottom:\x201px\x20solid\x20hsla(0,0%,100%,.1);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['modalwrapper']+b['dotCN']['tabbarcontainer'])+'\x20{\x0a\x09\x09\x09background:\x20rgba(0,\x200,\x200,\x200.1);\x0a\x09\x09\x09border:\x20none;\x0a\x09\x09\x09box-shadow:\x200\x202px\x203px\x200\x20rgba(0,\x200,\x200,\x200.05);\x0a\x09\x09\x09padding-right:\x2012px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCNS']['modalwrapper']+b['dotCN']['tabbarcontainer'])+'\x20{\x0a\x09\x09\x09background:\x20rgba(0,\x200,\x200,\x200.2);\x0a\x09\x09\x09box-shadow:\x200\x202px\x203px\x200\x20rgba(0,\x200,\x200,\x200.1);\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popoutright']+b['dotCN']['popoutarrowalignmentmiddle'])+':before\x20{\x0a\x09\x09\x09border-right-color:\x20#2f3136;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popoutleft']+b['dotCN']['popoutarrowalignmentmiddle'])+':before\x20{\x0a\x09\x09\x09border-left-color:\x20#2f3136;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popoutbottom']+b['dotCN']['popoutarrowalignmentmiddle'])+':before,\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popoutbottom']+b['dotCN']['popoutarrowalignmenttop'])+':before,\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popoutbottomleft']+b['dotCN']['popoutarrowalignmentmiddle'])+':before,\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popoutbottomleft']+b['dotCN']['popoutarrowalignmenttop'])+':before,\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popoutbottomright']+b['dotCN']['popoutarrowalignmentmiddle'])+':before,\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popoutbottomright']+b['dotCN']['popoutarrowalignmenttop'])+':before\x20{\x0a\x09\x09\x09border-bottom-color:\x20#2f3136;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popouttop'])+':after,\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popouttopleft'])+':after,\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutwrapper']+b['dotCN']['popouttopright'])+':after\x20{\x0a\x09\x09\x09border-top-color:\x20#2f3136;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['popoutthemedpopout']+'\x20{\x0a\x09\x09\x09background-color:\x20#fff;\x0a\x09\x09\x09border:\x201px\x20solid\x20hsla(0,0%,74.9%,.3);\x0a\x09\x09\x09-webkit-box-shadow:\x200\x202px\x2010px\x200\x20rgba(0,0,0,.1);\x0a\x09\x09\x09box-shadow:\x200\x202px\x2010px\x200\x20rgba(0,0,0,.1);\x0a\x09\x09\x09-webkit-box-sizing:\x20border-box;\x0a\x09\x09\x09box-sizing:\x20border-box;\x0a\x09\x09\x09border-radius:\x205px;\x0a\x09\x09\x09display:\x20-webkit-box;\x0a\x09\x09\x09display:\x20-ms-flexbox;\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09-webkit-box-orient:\x20vertical;\x0a\x09\x09\x09-webkit-box-direction:\x20normal;\x0a\x09\x09\x09-ms-flex-direction:\x20column;\x0a\x09\x09\x09flex-direction:\x20column;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCN']['popoutthemedpopout'])+'\x20{\x0a\x09\x09\x09background-color:\x20#2f3136;\x0a\x09\x09\x09border:\x201px\x20solid\x20rgba(28,36,43,.6);\x0a\x09\x09\x09-webkit-box-shadow:\x200\x202px\x2010px\x200\x20rgba(0,0,0,20%);\x0a\x09\x09\x09box-shadow:\x200\x202px\x2010px\x200\x20rgba(0,0,0,.2);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['popoutwrapper']+b['dotCNS']['popoutarrowalignmentmiddle']+b['dotCN']['popoutthemedpopout'])+',\x0a\x09\x09'+(b['dotCN']['popoutwrapper']+b['dotCNS']['popoutarrowalignmenttop']+b['dotCN']['popoutthemedpopout'])+'\x20{\x0a\x09\x09\x09border-color:\x20transparent;\x0a\x09\x09}\x0a\x0a\x09\x09#bd-settingspane-container\x20.ui-form-title\x20{\x0a\x09\x09\x09display:\x20inline-block;\x0a\x09\x09}\x0a\x09\x09#bd-settingspane-container\x20'+b['dotCN']['_repofolderbutton']+'\x20{\x0a\x09\x09\x09position:\x20static;\x0a\x09\x09\x09margin-bottom:\x200;\x0a\x09\x09\x09border-radius:\x205px;\x0a\x09\x09\x09display:\x20inline-block;\x0a\x09\x09\x09margin-left:\x2010px;\x0a\x09\x09}\x0a\x09\x09#bd-settingspane-container\x20'+b['dotCN']['_repoupdatebutton']+'[style]\x20{\x0a\x09\x09\x09display:\x20none\x20!important;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNS']['_repolistwrapper']+b['dotCN']['_repolistheader'])+'\x20{\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09flex-direction:\x20column;\x0a\x09\x09\x09padding-top:\x2060px;\x0a\x09\x09\x09padding-right:\x2070px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['_repolistwrapper']+b['dotCN']['_repolistheader'])+'\x20>\x20*\x20{\x0a\x09\x09\x09max-width:\x20740px;\x0a\x09\x09\x09min-width:\x20460px;\x0a\x09\x09\x09padding-left:\x2040px;\x0a\x09\x09\x09padding-right:\x2040px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['_repolistwrapper']+b['dotCN']['settingswindowtoolscontainer'])+'\x20{\x0a\x09\x09\x09margin-top:\x20-140px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['_repolistwrapper']+b['dotCN']['settingswindowcontentregionscroller'])+'\x20{\x0a\x09\x09\x09height:\x20calc(100%\x20-\x20140px);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['_repolistwrapper']+b['dotCN']['settingswindowcontentcolumn'])+'\x20{\x0a\x09\x09\x09padding-top:\x2020px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['_repolistwrapper']+b['dotCNS']['_repoentry']+b['dotCN']['_repocontrols'])+'\x20>\x20*\x20{\x0a\x09\x09\x09margin-left:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['_repolistwrapper']+b['dotCNS']['_repoentry']+b['dotCN']['_repofooter'])+'\x20>\x20*\x20{\x0a\x09\x09\x09margin-left:\x2010px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['_repolistwrapper']+b['dotCNS']['_repoentry']+b['dotCN']['_repofooter'])+'\x20>\x20*:first-child\x20{\x0a\x09\x09\x09margin-left:\x20auto;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['noticewrapper']+'\x20{\x0a\x09\x09\x09transition:\x20height\x200.5s\x20ease\x20!important;\x0a\x09\x09\x09border-radius:\x200\x20!important;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['noticewrapper']+b['dotCN']['noticeplatformicon'])+'\x20{\x0a\x09\x09\x09margin-top:\x20-7px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['noticewrapper']+b['dotCN']['noticeplatformicon'])+'\x20svg\x20{\x0a\x09\x09\x09max-height:\x2028px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['noticesurvey']+'\x20{\x0a\x09\x09\x09background-color:\x20#222;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCN']['tooltip']+b['dotCNS']['tooltipcustom']+b['dotCN']['tooltippointer'])+'\x20{\x0a\x09\x09\x09border-top-color:\x20inherit\x20!important;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['colorpickerswatchsingle']+'\x20{\x0a\x09\x09\x09height:\x2030px;\x0a\x09\x09\x09width:\x2030px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatches']+b['dotCN']['colorpickerswatchesdisabled'])+'\x20{\x0a\x09\x09\x09cursor:\x20no-drop;\x0a\x09\x09\x09filter:\x20grayscale(70%)\x20brightness(50%);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['notCN']['colorpickerswatchnocolor']+b['notCN']['colorpickerswatchdefault']+b['notCN']['colorpickerswatchdisabled'])+'\x20{\x0a\x09\x09\x09overflow:\x20hidden;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['notCN']['colorpickerswatchnocolor']+b['notCN']['colorpickerswatchdefault']+b['notCN']['colorpickerswatchdisabled'])+':after\x20{\x0a\x09\x09\x09content:\x20\x22\x22;\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09top:\x200;\x0a\x09\x09\x09right:\x200;\x0a\x09\x09\x09bottom:\x200;\x0a\x09\x09\x09left:\x200;\x0a\x09\x09\x09z-index:\x20-1;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['dotCN']['colorpickerswatchcustom'])+'[style*=\x22background\x22]\x20{\x0a\x09\x09\x09border:\x20none;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['notCN']['colorpickerswatchdefault'])+':after\x20{\x0a\x09\x09\x09border-radius:\x203px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['dotCN']['colorpickerswatchcustom']+b['notCN']['colorpickerswatchdefault'])+':after\x20{\x0a\x09\x09\x09border-radius:\x205px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickerswatch']+b['notCN']['colorpickerswatchnocolor']+b['notCN']['colorpickerswatchdefault']+b['notCN']['colorpickerswatchdisabled'])+':after\x20{\x0a\x09\x09\x09background:\x20url(\x27data:image/svg+xml;\x20utf8,\x20\x27)\x20center\x20repeat;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+b['dotCN']['colorpickeralpha']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09\x09height:\x208px;\x0a\x09\x09\x09margin:\x2016px\x200\x208px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['colorpickergradient']+'\x20{\x0a\x09\x09\x09position:\x20relative;\x0a\x09\x09\x09height:\x208px;\x0a\x09\x09\x09margin:\x2027px\x202px\x202px\x202px;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['colorpickeralpha']+'\x20>\x20div\x20>\x20div\x20>\x20div\x20>\x20div\x20{\x0a\x09\x09\x09height:\x2016px\x20!important;\x0a\x09\x09\x09width:\x208px\x20!important;\x0a\x09\x09\x09margin-top:\x20-3px\x20!important;\x0a\x09\x09\x09border-radius:\x203px\x20!important;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['colorpickersaturation'])+'\x20>\x20div\x20>\x20div\x20>\x20div\x20>\x20div\x20{\x0a\x09\x09\x09box-shadow:\x20rgb(200,\x20200,\x20200)\x200px\x200px\x200px\x201.5px,\x20rgba(0,\x200,\x200,\x200.6)\x200px\x200px\x201px\x201px\x20inset,\x20rgba(0,\x200,\x200,\x200.6)\x200px\x200px\x201px\x202px\x20!important;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['colorpickerhue'])+'\x20>\x20div\x20>\x20div\x20>\x20div\x20>\x20div,\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCN']['colorpickeralpha'])+'\x20>\x20div\x20>\x20div\x20>\x20div\x20>\x20div\x20{\x0a\x09\x09\x09background:\x20rgb(200,\x20200,\x20200)\x20!important;\x0a\x09\x09\x09box-shadow:\x20rgba(0,\x200,\x200,\x201)\x200px\x200px\x202px\x20!important;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['colorpickeralpha']+'\x20>\x20div\x20>\x20div,\x0a\x09\x09'+b['dotCN']['colorpickergradient']+'\x20>\x20div\x20>\x20div\x20{\x0a\x09\x09\x09border-radius:\x203px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickeralpha']+b['dotCN']['colorpickeralphacheckered'])+',\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcheckered'])+',\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor'])+'\x20>\x20div:after\x20{\x0a\x09\x09\x09background:\x20url(\x27data:image/svg+xml;\x20utf8,\x20\x27)\x20center\x20repeat;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor'])+'\x20>\x20div\x20{\x0a\x09\x09\x09height:\x208px;\x0a\x09\x09\x09width:\x208px;\x0a\x09\x09\x09margin-top:\x20-15px;\x0a\x09\x09\x09border:\x201px\x20solid\x20rgb(128,\x20128,\x20128);\x0a\x09\x09\x09border-radius:\x203px;\x0a\x09\x09\x09transform:\x20translateX(-5px);\x0a\x09\x09\x09transform-style:\x20preserve-3d;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor'])+'\x20>\x20div:after\x20{\x0a\x09\x09\x09content:\x20\x22\x22;\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09top:\x200;\x0a\x09\x09\x09right:\x200;\x0a\x09\x09\x09bottom:\x200;\x0a\x09\x09\x09left:\x200;\x0a\x09\x09\x09z-index:\x20-1;\x0a\x09\x09\x09border-radius:\x203px;\x0a\x09\x09\x09transform:\x20translateZ(-1px);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor'])+'\x20>\x20div:before\x20{\x0a\x09\x09\x09content:\x20\x22\x22;\x0a\x09\x09\x09position:\x20absolute;\x0a\x09\x09\x09border:\x203px\x20solid\x20transparent;\x0a\x09\x09\x09border-top-width:\x205px;\x0a\x09\x09\x09border-top-color:\x20rgb(128,\x20128,\x20128);\x0a\x09\x09\x09width:\x200;\x0a\x09\x09\x09height:\x200;\x0a\x09\x09\x09top:\x20100%;\x0a\x09\x09\x09left:\x20-50%;\x0a\x09\x09\x09transform:\x20translateX(5px);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursoredge'])+'\x20>\x20div:before\x20{\x0a\x09\x09\x09border-right-width:\x200;\x0a\x09\x09\x09border-left-width:\x205px;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursoredge'])+'\x20~\x20'+(b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursoredge'])+'\x20>\x20div:before\x20{\x0a\x09\x09\x09border-right-width:\x205px;\x0a\x09\x09\x09border-left-width:\x200;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursorselected'])+'\x20>\x20div\x20{\x0a\x09\x09\x09border-color:\x20rgb(55,\x2055,\x2055);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themelight']+b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursorselected'])+'\x20>\x20div:before\x20{\x0a\x09\x09\x09border-top-color:\x20rgb(55,\x2055,\x2055);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursorselected'])+'\x20>\x20div\x20{\x0a\x09\x09\x09border-color:\x20rgb(200,\x20200,\x20200);\x0a\x09\x09}\x0a\x09\x09'+(b['dotCNS']['themedark']+b['dotCNS']['colorpickergradient']+b['dotCN']['colorpickergradientcursor']+b['dotCN']['colorpickergradientcursorselected'])+'\x20>\x20div:before\x20{\x0a\x09\x09\x09border-top-color:\x20rgb(200,\x20200,\x20200);\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['colorpickergradientbutton']+'\x20{\x0a\x09\x09\x09color:\x20var(--interactive-normal);\x0a\x09\x09\x09opacity:\x200.6;\x0a\x09\x09\x09margin-left:\x206px;\x0a\x09\x09\x09transition:\x20color\x20200ms\x20ease,\x20opactity\x20200ms\x20ease;\x0a\x09\x09}\x0a\x09\x09'+b['dotCN']['colorpickergradientbutton']+':hover\x20{\x0a\x09\x09\x09color:\x20var(--interactive-hover);\x0a\x09\x09\x09opacity:\x201;\x0a\x09\x09}\x0a\x09\x09'+(b['dotCN']['colorpickergradientbutton']+b['dotCN']['colorpickergradientbuttonenabled'])+',\x0a\x09\x09'+(b['dotCN']['colorpickergradientbutton']+b['dotCN']['colorpickergradientbuttonenabled'])+':hover\x20{\x0a\x09\x09\x09color:\x20var(--interactive-active);\x0a\x09\x09\x09opacity:\x201;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09'+(b['dotCNC']['layermodallarge']+b['dotCN']['modalsizelarge'])+'\x20{\x0a\x09\x09\x09max-height:\x2095vh;\x0a\x09\x09}\x0a\x09\x09@media\x20only\x20screen\x20and\x20(max-height:\x20900px)\x20{\x0a\x09\x09\x09'+(b['dotCNC']['layermodalmedium']+b['dotCN']['modalsizemedium'])+'\x20{\x0a\x09\x09\x09\x09max-height:\x2075vh;\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09#pluginNotice\x20.notice-message\x20{\x0a\x09\x09\x09white-space:\x20pre;\x0a\x09\x09}\x0a\x09\x09#pluginNotice\x20#outdatedPlugins\x20span\x20{\x0a\x09\x09\x09-webkit-app-region:\x20no-drag;\x0a\x09\x09\x09color:\x20#FFF;\x0a\x09\x09\x09cursor:\x20pointer;\x0a\x09\x09}\x0a\x09\x09#pluginNotice\x20#outdatedPlugins\x20span:hover\x20{\x0a\x09\x09\x09text-decoration:\x20underline;\x0a\x09\x09}\x0a\x09\x09\x0a\x09\x09.toasts\x20{\x0a\x09\x09\x09position:\x20fixed;\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09top:\x200;\x0a\x09\x09\x09flex-direction:\x20column;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09\x09justify-content:\x20flex-end;\x0a\x09\x09\x09pointer-events:\x20none;\x0a\x09\x09\x09z-index:\x204000;\x0a\x09\x09}\x0a\x09\x09@keyframes\x20toast-up\x20{\x0a\x09\x09\x09from\x20{\x0a\x09\x09\x09\x09transform:\x20translateY(0);\x0a\x09\x09\x09\x09opacity:\x200;\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09.toast\x20{\x0a\x09\x09\x09animation:\x20toast-up\x20300ms\x20ease;\x0a\x09\x09\x09transform:\x20translateY(-10px);\x0a\x09\x09\x09background-color:\x20#36393F;\x0a\x09\x09\x09padding:\x2010px;\x0a\x09\x09\x09border-radius:\x205px;\x0a\x09\x09\x09box-shadow:\x200\x200\x200\x201px\x20rgba(32,34,37,.6),\x200\x202px\x2010px\x200\x20rgba(0,0,0,.2);\x0a\x09\x09\x09font-weight:\x20500;\x0a\x09\x09\x09color:\x20#fff;\x0a\x09\x09\x09user-select:\x20text;\x0a\x09\x09\x09font-size:\x2014px;\x0a\x09\x09\x09opacity:\x201;\x0a\x09\x09\x09margin-top:\x2010px;\x0a\x09\x09\x09pointer-events:\x20auto;\x0a\x09\x09}\x0a\x09\x09@keyframes\x20toast-down\x20{\x0a\x09\x09\x09to\x20{\x0a\x09\x09\x09\x09transform:\x20translateY(0px);\x0a\x09\x09\x09\x09opacity:\x200;\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09.toast.closing\x20{\x0a\x09\x09\x09animation:\x20toast-down\x20200ms\x20ease;\x0a\x09\x09\x09animation-fill-mode:\x20forwards;\x0a\x09\x09\x09opacity:\x201;\x0a\x09\x09\x09transform:\x20translateY(-10px);\x0a\x09\x09}\x0a\x09\x09.toast\x20.toast-inner\x20{\x0a\x09\x09\x09display:\x20flex;\x0a\x09\x09\x09align-items:\x20center;\x0a\x09\x09}\x0a\x09\x09.toast\x20.toast-avatar\x20{\x0a\x09\x09\x09margin-right:\x205px;\x0a\x09\x09\x09width:\x2025px;\x0a\x09\x09\x09height:\x2025px;\x0a\x09\x09\x09flex:\x200\x200\x20auto;\x0a\x09\x09\x09background-size:\x20cover;\x0a\x09\x09\x09background-position:\x20center;\x0a\x09\x09\x09border-radius:\x2050%;\x0a\x09\x09}\x0a\x09\x09.toast.icon\x20{\x0a\x09\x09\x09padding-left:\x2030px;\x0a\x09\x09\x09background-position:\x206px\x2050%;\x0a\x09\x09\x09background-size:\x2020px\x2020px;\x0a\x09\x09\x09background-repeat:\x20no-repeat;\x0a\x09\x09}\x0a\x09\x09.toast.toast-brand\x20{\x0a\x09\x09\x09background-color:\x20#7289DA;\x0a\x09\x09}\x0a\x09\x09.toast.toast-brand.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiIHZpZXdCb3g9IjI3IDI3IDExNSAxMTUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDkwIDkwOyI+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMTEuMywxMjQuMWMwLDAtMy40LTQuMS02LjMtNy43YzEyLjYtMy41LDE3LjQtMTEuMywxNy40LTExLjMgYy00LDIuNi03LjcsNC40LTExLjEsNS42Yy00LjgsMi05LjUsMy4zLTE0LDQuMWMtOS4yLDEuNy0xNy42LDEuMy0yNC45LTAuMWMtNS41LTEtMTAuMi0yLjUtMTQuMS00LjFjLTIuMi0wLjgtNC42LTEuOS03LjEtMy4zIGMtMC4zLTAuMi0wLjYtMC4zLTAuOS0wLjVjLTAuMS0wLjEtMC4zLTAuMi0wLjQtMC4yYy0xLjctMS0yLjYtMS42LTIuNi0xLjZzNC42LDcuNiwxNi44LDExLjJjLTIuOSwzLjYtNi40LDcuOS02LjQsNy45IGMtMjEuMi0wLjYtMjkuMy0xNC41LTI5LjMtMTQuNWMwLTMwLjYsMTMuOC01NS40LDEzLjgtNTUuNGMxMy44LTEwLjMsMjYuOS0xMCwyNi45LTEwbDEsMS4xQzUyLjgsNTAuMyw0NSw1Ny45LDQ1LDU3LjkgczIuMS0xLjIsNS43LTIuN2MxMC4zLTQuNSwxOC40LTUuNywyMS44LTZjMC41LTAuMSwxLjEtMC4yLDEuNi0wLjJjNS45LTAuNywxMi41LTAuOSwxOS40LTAuMmM5LjEsMSwxOC45LDMuNywyOC45LDkuMSBjMCwwLTcuNS03LjItMjMuOS0xMi4xbDEuMy0xLjVjMCwwLDEzLjEtMC4zLDI2LjksMTBjMCwwLDEzLjgsMjQuOCwxMy44LDU1LjRDMTQwLjYsMTA5LjYsMTMyLjUsMTIzLjUsMTExLjMsMTI0LjF6IE0xMDEuNyw3OS43Yy01LjQsMC05LjgsNC43LTkuOCwxMC41YzAsNS44LDQuNCwxMC41LDkuOCwxMC41YzUuNCwwLDkuOC00LjcsOS44LTEwLjUgQzExMS41LDg0LjQsMTA3LjEsNzkuNywxMDEuNyw3OS43eiBNNjYuNyw3OS43Yy01LjQsMC05LjgsNC43LTkuOCwxMC41YzAsNS44LDQuNCwxMC41LDkuOCwxMC41YzUuNCwwLDkuOC00LjcsOS44LTEwLjUgQzc2LjUsODQuNCw3Mi4xLDc5LjcsNjYuNyw3OS43eiIvPjwvc3ZnPg==);\x0a\x09\x09}\x0a\x09\x09.toast.toast-danger,\x20\x0a\x09\x09.toast.toast-error\x20{\x0a\x09\x09\x09background-color:\x20#F04747;\x0a\x09\x09}\x0a\x09\x09.toast.toast-danger.icon,\x0a\x09\x09.toast.toast-error.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+);\x0a\x09\x09}\x0a\x09\x09.toast.toast-default\x20{\x0a\x09\x09\x09background-color:\x20#F26522;\x0a\x09\x09}\x0a\x09\x09.toast.toast-default.icon\x20{\x0a\x09\x09\x09padding-left:\x2010px;\x0a\x09\x09}\x0a\x09\x09.toast.toast-facebook\x20{\x0a\x09\x09\x09background-color:\x20#355089;\x0a\x09\x09}\x0a\x09\x09.toast.toast-facebook.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiIHZpZXdCb3g9Ii01IC01IDEwMCAxMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDkwIDkwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PHBhdGggaWQ9IkZhY2Vib29rX194MjhfYWx0X3gyOV8iIGQ9Ik05MCwxNS4wMDFDOTAsNy4xMTksODIuODg0LDAsNzUsMEgxNUM3LjExNiwwLDAsNy4xMTksMCwxNS4wMDF2NTkuOTk4ICAgQzAsODIuODgxLDcuMTE2LDkwLDE1LjAwMSw5MEg0NVY1NkgzNFY0MWgxMXYtNS44NDRDNDUsMjUuMDc3LDUyLjU2OCwxNiw2MS44NzUsMTZINzR2MTVINjEuODc1QzYwLjU0OCwzMSw1OSwzMi42MTEsNTksMzUuMDI0VjQxICAgaDE1djE1SDU5djM0aDE2YzcuODg0LDAsMTUtNy4xMTksMTUtMTUuMDAxVjE1LjAwMXoiIGZpbGw9IndoaXRlIi8+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjwvc3ZnPg==);\x0a\x09\x09}\x0a\x09\x09.toast.toast-info\x20{\x0a\x09\x09\x09background-color:\x20#4A90E2;\x0a\x09\x09}\x0a\x09\x09.toast.toast-info.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=);\x0a\x09\x09}\x0a\x09\x09.toast.toast-premium\x20{\x0a\x09\x09\x09background-color:\x20#202225;\x0a\x09\x09}\x0a\x09\x09.toast.toast-premium.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDMiIGhlaWdodD0iMjYiPiAgPHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOTYuMjgyNiA4LjYwMjc4ODI0bC0xLjIxNTUgOC4zOTAzNTI5NmMtLjI3NzUgMS45ODI2Mjc0LTIuNDY1NSAyLjkwMzMzMzMtNC40NzkgMi45MDMzMzMzLTEuODc1IDAtMy43MTU1LS45MjA3MDU5LTMuNDcyNS0yLjcyNTkyMTZsMS4yMTU1LTguNTY3NzY0NjZjLjI3NzUtMS44NzY1ODgyNCAyLjQ2NTUtMi44MzI0NzA2IDQuNDc5LTIuODMyNDcwNiAyLjAxNCAwIDMuNzUuOTU1ODgyMzYgMy40NzI1IDIuODMyNDcwNk05My43NzIxLjAwMzkyNTVsLjAwMDUtLjAwNDA3ODQ0aC0xMy4wODRjLS4zMzQgMC0uNjE4LjI1MDMxMzcyLS42NjYuNTg3Mjk0MTJsLS42MzY1IDQuNDMyMjM1M2MtLjA1OTUuNDE0NDcwNTguMjU2Ljc4NjExNzY0LjY2NjUuNzg2MTE3NjRoMi4zODk1Yy4yNCAwIC40MDQ1LjI0OTgwMzkyLjMxLjQ3NTY0NzA2LS4yOTguNzEyMTk2MDctLjUxNTUgMS40ODYwNzg0My0uNjM2IDIuMzIxNjQ3MDZsLTEuMjE1NSA4LjU2Nzc2NDY2Yy0uNzk5IDUuNzM1Mjk0MiAzLjg4OSA4LjYwMjQzMTQgOC45OTMgOC42MDI0MzE0IDUuMzQ3NSAwIDEwLjU5MDUtMi44NjcxMzcyIDExLjM4OS04LjYwMjQzMTRsMS4yMTUtOC41Njc3NjQ2NmMuNzgzLTUuNjIyMTE3NjUtMy43Mzk1LTguNDg4MjM1My04LjcyNTUtOC41OTg4NjI3NW0tNzguNTk1MjUgMTEuNzI4NjUxbC4wNjcgNC4xNTg5ODA0Yy4wMDE1LjA4NTEzNzItLjA1NS4xNjA1ODgyLS4xMzYuMTgxNDkwMmgtLjAwMDVsLTEuMzg1NS01LjAxNjQ3MDZjLS4wMDItLjAwNzY0NzEtLjAwNS0uMDE0Nzg0My0uMDA4LS4wMjI0MzE0TDkuNDE0MzUuNzcwNzcyNTNjLS4xMDYtLjI1Mjg2Mjc1LS4zNDk1LS40MTY1MDk4LS42MTk1LS40MTY1MDk4aC00Ljg3MjVjLS4zMzYgMC0uNjIwNS4yNTIzNTI5NC0uNjY3LjU5MTM3MjU0TC4wMDY4NSAyNC42MzcyNDMxYy0uMDU3LjQxMzQ1MS4yNTc1Ljc4MjAzOTMuNjY2NS43ODIwMzkzaDQuODU0Yy4zMzY1IDAgLjYyMTUtLjI1MzM3MjYuNjY3NS0uNTkyOTAybDEuMjcyLTkuNDEyNTA5OGMuMDAxNS0uMDA5MTc2NS4wMDItLjAxODM1My4wMDItLjAyNzUyOTRsLS4wNjk1LTQuODM2NTA5OC4xMzg1LS4wMzUxNzY1IDEuNDU1NSA1LjAxNjQ3MDZjLjAwMjUuMDA3MTM3Mi4wMDUuMDEzNzY0Ny4wMDc1LjAyMDkwMmw0LjAyMTUgOS40NTM4MDM5Yy4xMDY1LjI1MDgyMzUuMzQ5NS40MTM0NTEuNjE3NS40MTM0NTFoNS4yNTY1Yy4zMzYgMCAuNjIwNS0uMjUyMzUzLjY2Ny0uNTkxODgyNGwzLjI0OTUtMjMuNjkxNjA3ODRjLjA1NjUtLjQxMjk0MTE4LS4yNTgtLjc4MTUyOTQyLS42NjctLjc4MTUyOTQyaC00LjgyMDVjLS4zMzYgMC0uNjIwNS4yNTE4NDMxNC0uNjY3LjU5MDg2Mjc1bC0xLjQ4IDEwLjc1ODkwMmMtLjAwMS4wMDkxNzY0LS4wMDE1LjAxODg2MjctLjAwMTUuMDI4NTQ5bTkuMzk0IDEzLjY4NjYwMzloNC44NTVjLjMzNiAwIC42MjA1LS4yNTIzNTI5LjY2Ny0uNTkxMzcyNmwzLjI0OS0yMy42OTIxMTc2Yy4wNTY1LS40MTI5NDEyLS4yNTgtLjc4MTUyOTQ0LS42NjctLjc4MTUyOTQ0aC00Ljg1NWMtLjMzNiAwLS42MjA1LjI1MjM1Mjk0LS42NjcuNTkxMzcyNTVsLTMuMjQ5IDIzLjY5MjExNzY4Yy0uMDU2NS40MTI5NDEyLjI1OC43ODE1Mjk0LjY2Ny43ODE1Mjk0TTM2LjYyMTE1LjkwNjA3NDVsLS42MzYgNC40MzIyMzUzYy0uMDU5NS40MTQ0NzA2LjI1NTUuNzg2MTE3NjUuNjY2Ljc4NjExNzY1aDUuMDgwNWMuNDA4NSAwIC43MjMuMzY3NTY4NjMuNjY3NS43ODA1MDk4bC0yLjM5MzUgMTcuNzM0MDM5MjVjLS4wNTU1LjQxMjQzMTMuMjU4NS43OC42NjcuNzhoNC45MjU1Yy4zMzY1IDAgLjYyMS0uMjUyODYyOC42NjctLjU5MjkwMmwyLjQ0NC0xOC4xMDg3NDUxYy4wNDYtLjMzOTUyOTQuMzMwNS0uNTkyOTAxOTUuNjY3LS41OTI5MDE5NWg1LjQ2MjVjLjMzNCAwIC42MTgtLjI0OTgwMzkyLjY2Ni0uNTg3Mjk0MTJsLjYzNy00LjQzMjIzNTNjLjA1OTUtLjQxNDQ3MDU4LS4yNTU1LS43ODYxMTc2NC0uNjY2NS0uNzg2MTE3NjRoLTE4LjE4NzVjLS4zMzQ1IDAtLjYxOC4yNTAzMTM3LS42NjY1LjU4NzI5NDFNNzEuMDM4NyA5LjA5ODM2ODZjLS4xNzQgMS40NTE0MTE3Ny0xLjI4NDUgMi45MDI4MjM1Ny0zLjE5NSAyLjkwMjgyMzU3aC0yLjg2OTVjLS40MSAwLS43MjQ1LS4zNjk2MDc5LS42NjctLjc4MzA1ODlsLjYwNzUtNC4zNjE4ODIzM2MuMDQ3LS4zMzg1MDk4LjMzMTUtLjU5MDM1Mjk0LjY2Ny0uNTkwMzUyOTRoMy4wNjFjMS44NDA1IDAgMi41Njk1IDEuMzEwMTk2MDggMi4zOTYgMi44MzI0NzA2TTY5LjMzNzIuMzU0MjExNzZoLTkuMjQwNWMtLjMzNiAwLS42MjA1LjI1MjM1Mjk0LS42NjcuNTkxMzcyNTRsLTMuMjQ5IDIzLjY5MjExNzdjLS4wNTY1LjQxMjk0MTEuMjU4Ljc4MTUyOTQuNjY3Ljc4MTUyOTRoNC45MjM1Yy4zMzY1IDAgLjYyMTUtLjI1MzM3MjYuNjY3NS0uNTkyOTAybC45NTYtNy4wNzY1ODgyYy4wMjMtLjE2OTc2NDcuMTY1LS4yOTYxOTYxLjMzMzUtLjI5NjE5NjFoLjYzM2MuMTE0NSAwIC4yMjE1LjA1OTY0NzEuMjgzNS4xNTgwMzkybDQuNzAyIDcuNDkxMDU4OGMuMTI0LjE5NzI5NDIuMzM3NS4zMTY1ODgzLjU2NzUuMzE2NTg4M2g2LjA4MWMuNTQ1IDAgLjg2NDUtLjYyNTAxOTYuNTUyLTEuMDgwMjc0NWwtNC45MzQ1LTcuMTkxODA0Yy0uMTE4LS4xNzI4MjM1LS4wNTc1LS40MTI0MzEzLjEyOC0uNTA0NzA1OCAzLjE1MDUtMS41Njk2ODYzIDQuOTc5NS0zLjE3ODExNzcgNS41ODMtNy42NTAxMTc3LjY5MzUtNS44NzcwMTk2LTIuOTE3LTguNjM4MTE3NjMtNy45ODY1LTguNjM4MTE3NjMiLz48L3N2Zz4=);\x0a\x09\x09\x09background-size:\x2063px\x2016px;\x0a\x09\x09\x09padding-left:\x2073px;\x0a\x09\x09}\x0a\x09\x09.toast.toast-spotify\x20{\x0a\x09\x09\x09background-color:\x20#1DB954;\x0a\x09\x09}\x0a\x09\x09.toast.toast-spotify.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDUwOC41MiA1MDguNTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUwOC41MiA1MDguNTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KPGc+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZD0iTTI1NC4yNiwwQzExMy44NDUsMCwwLDExMy44NDUsMCwyNTQuMjZzMTEzLjg0NSwyNTQuMjYsMjU0LjI2LDI1NC4yNiAgICAgczI1NC4yNi0xMTMuODQ1LDI1NC4yNi0yNTQuMjZTMzk0LjY3NSwwLDI1NC4yNiwweiBNMzcxLjY5Niw0MDMuMjg4Yy0zLjE3OCw1LjgxNi05LjEyMiw5LjA1OC0xNS4yODcsOS4wNTggICAgIGMtMi44NiwwLTUuNzIxLTAuNjY3LTguNDIyLTIuMTI5Yy00MC43MTMtMjIuNDM4LTg2Ljk1Ny0zNC4yOTMtMTMzLjY3Ny0zNC4yOTNjLTI4LDAtNTUuNjUxLDQuMTYzLTgyLjEyNiwxMi4zNjMgICAgIGMtOS4yMTcsMi44Ni0xOS4wMDYtMi4yODgtMjEuODM1LTExLjUzN2MtMi44Ni05LjE4NSwyLjI4OC0yOC43LDExLjUzNy0zMS41OTJjMjkuODQ0LTkuMjQ5LDYwLjk1OS0xMy45MjEsOTIuNDU1LTEzLjkyMSAgICAgYzUyLjU2OCwwLDEwNC42NiwxMy4zNDksMTUwLjUyMiwzOC42MTZDMzczLjMxNywzNzQuNDYxLDM3Ni40LDM5NC44NjYsMzcxLjY5Niw0MDMuMjg4eiBNNDA0LjAxOSwzMDcuNTI3ICAgICBjLTMuNjIzLDcuMDI0LTEwLjc0MiwxOC4zMzgtMTguMDg0LDE4LjMzOGMtMy4yMSwwLTYuMzg4LTAuNjk5LTkuMzc2LTIuMzJjLTUwLjQ3MS0yNi4xODktMTA1LjA0MS0zOS40NzQtMTYyLjIxOC0zOS40NzQgICAgIGMtMzEuNDk2LDAtNjIuNzcsNC4xMzItOTIuOTY0LDEyLjQ1OWMtMTAuOTAxLDIuOTU2LTIyLjA4OS0zLjQwMS0yNS4wNDUtMTQuMzAyYy0yLjkyNC0xMC45MDEsMy40NjQtMjkuNDMxLDE0LjMzNC0zMi4zODYgICAgIGMzMy42ODktOS4xODUsNjguNTg3LTEzLjg1NywxMDMuNjc0LTEzLjg1N2M2Mi44OTgsMCwxMjUuNDQ1LDE1LjI1NiwxODAuOTM4LDQ0LjExNCAgICAgQzQwNS4yOSwyODUuMjQ4LDQwOS4xOTksMjk3LjUxNiw0MDQuMDE5LDMwNy41Mjd6IE00MTcuNTI2LDIzMC44MzZjLTMuNDY0LDAtNy4wMjQtMC43OTUtMTAuMzYxLTIuNDQ3ICAgICBjLTYwLjIyOC0zMC4wMzQtMTI1LjA5Ni00NS4yMjYtMTkyLjc2MS00NS4yMjZjLTM1LjI3OSwwLTcwLjQzLDQuMjkxLTEwNC41MzMsMTIuNzEzYy0xMi41MjIsMy4wODMtMjUuMTQtNC41MTMtMjguMjIzLTE3LjAwNCAgICAgYy0zLjExNS0xMi40NTksNC41MTMtMjcuNTU1LDE3LjAwNC0zMC42MzhjMzcuNzI2LTkuMzc2LDc2LjY1OS0xNC4xMTEsMTE1LjcyLTE0LjExMWM3NC45NzUsMCwxNDYuODY3LDE2Ljg3NywyMTMuNTc4LDUwLjEyMSAgICAgYzExLjUzNyw1Ljc1MywxNi4yNDEsMTkuNzM3LDEwLjQ4OCwzMS4yNDJDNDM0LjMwOCwyMjMuNjUzLDQyNi4xMDgsMjMwLjgzNiw0MTcuNTI2LDIzMC44MzZ6IiBmaWxsPSIjRkZGRkZGIi8+CgkJPC9nPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=);\x0a\x09\x09}\x0a\x09\x09.toast.toast-streamermode\x20{\x0a\x09\x09\x09background-color:\x20#593695;\x0a\x09\x09}\x0a\x09\x09.toast.toast-streamermode.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSItMjUgLTI1IDU0MiA1NDIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ5MiA0OTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiPjxwYXRoIGQ9Ik00ODguMywxNDIuNXYyMDMuMWMwLDE1LjctMTcsMjUuNS0zMC42LDE3LjdsLTg0LjYtNDguOHYxMy45YzAsNDEuOC0zMy45LDc1LjctNzUuNyw3NS43SDc1LjdDMzMuOSw0MDQuMSwwLDM3MC4yLDAsMzI4LjQgICBWMTU5LjljMC00MS44LDMzLjktNzUuNyw3NS43LTc1LjdoMjIxLjhjNDEuOCwwLDc1LjcsMzMuOSw3NS43LDc1Ljd2MTMuOWw4NC42LTQ4LjhDNDcxLjMsMTE3LDQ4OC4zLDEyNi45LDQ4OC4zLDE0Mi41eiIgZmlsbD0iI0ZGRkZGRiIvPjwvc3ZnPg==);\x0a\x09\x09}\x0a\x09\x09.toast.toast-success\x20{\x0a\x09\x09\x09background-color:\x20#43B581;\x0a\x09\x09}\x0a\x09\x09.toast.toast-success.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=);\x0a\x09\x09}\x0a\x09\x09.toast.toast-warning,\x0a\x09\x09.toast.toast-warn\x20{\x0a\x09\x09\x09background-color:\x20#FFA600;\x0a\x09\x09}\x0a\x09\x09.toast.toast-warning.icon,\x0a\x09\x09.toast.toast-warn.icon\x20{\x0a\x09\x09\x09background-image:\x20url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==);\x0a\x09\x09}');var B={};b['ListenerUtils']['add'](b,document,'keydown.BDFDBPressedKeys',M=>{if(!b['InternalData']['pressedKeys']['includes'](M['which'])){b['TimeUtils']['clear'](B[M['which']]);b['InternalData']['pressedKeys']['push'](M['which']);B[M['which']]=b['TimeUtils']['timeout'](N=>{b['ArrayUtils']['remove'](b['InternalData']['pressedKeys'],M['which'],!![]);},0xea60);}});b['ListenerUtils']['add'](b,document,'keyup.BDFDBPressedKeys',M=>{b['TimeUtils']['clear'](B[M['which']]);b['ArrayUtils']['remove'](b['InternalData']['pressedKeys'],M['which'],!![]);});b['ListenerUtils']['add'](b,document,'mousedown.BDFDBMousePosition',M=>{b['InternalData']['mousePosition']=M;});b['ListenerUtils']['add'](b,window,'focus.BDFDBPressedKeysReset',M=>{b['InternalData']['pressedKeys']=[];});c['patchedModules']={'before':{'MessageContent':'type'},'after':{'DiscordTag':'default','Mention':'default','Message':'default','MessageHeader':'default','MemberListItem':['componentDidMount','componentDidUpdate'],'PrivateChannel':['componentDidMount','componentDidUpdate'],'UserPopout':['componentDidMount','componentDidUpdate'],'UserProfile':['componentDidMount','componentDidUpdate'],'V2C_ContentColumn':'render'}};c['processV2CContentColumn']=function(M){if(window['PluginUpdates']&&window['PluginUpdates']['plugins']&&typeof M['instance']['props']['title']=='string'&&M['instance']['props']['title']['toUpperCase']()['indexOf']('PLUGINS')==0x0){let [N,O]=b['ReactUtils']['findParent'](M['returnvalue'],{'key':'folder-button'});if(O>-0x1)N['splice'](O+0x1,0x0,b['ReactUtils']['createElement'](x['LibraryComponents']['TooltipContainer'],{'text':'Only\x20checks\x20for\x20updates\x20of\x20plugins,\x20which\x20support\x20the\x20updatecheck.\x20Rightclick\x20for\x20a\x20list\x20of\x20supported\x20plugins.\x20(Listed\x20≠\x20Outdated)','tooltipConfig':{'selector':'update-button-tooltip','style':'max-width:\x20420px'},'children':b['ReactUtils']['createElement']('button',{'className':b['disCNS']['_repobutton']+b['disCN']['_repofolderbutton']+'\x20bd-updatebtn','onClick':P=>{let Q=b['NotificationUtils']['toast']('Plugin\x20update\x20check\x20in\x20progress.',{'type':'info','timeout':0x0});b['PluginUtils']['checkAllUpdates']()['then'](R=>{Q['close']();if(R>0x0)b['NotificationUtils']['toast']('Plugin\x20update\x20check\x20complete.\x20'+R+'\x20outdated!',{'type':'error'});else b['NotificationUtils']['toast']('Plugin\x20update\x20check\x20complete.',{'type':'success'});});},'onContextMenu':P=>{if(window['PluginUpdates']&&window['PluginUpdates']['plugins']&&!document['querySelector']('.update-list-tooltip'))b['TooltipUtils']['create'](P['currentTarget'],b['ObjectUtils']['toArray'](window['PluginUpdates']['plugins'])['map'](Q=>Q['name'])['filter'](Q=>Q)['sort']()['join'](',\x20'),{'type':'bottom','selector':'update-list-tooltip','style':'max-width:\x20420px'});},'children':'Check\x20for\x20Updates'})}));}};let C=b['ModuleUtils']['findByProperties']('MessageTimestamp',![]);if(C)c['processMessage']=function(M){if(b['ReactUtils']['getValue'](M,'instance.props.childrenHeader.type.type.name')&&b['ReactUtils']['getValue'](M,'instance.props.childrenHeader.props.message')){M['instance']['props']['childrenHeader']['type']=C['exports']['default'];}};const BDFDB_Patrons_T2=['363785301195358221','106938698938978304'];const BDFDB_Patrons_T3=['443943393660239872','329018006371827713','562008872467038230'];const BDFDB_Patrons_T3_hasBadge=['562008872467038230'];c['_processAvatarRender']=function(M,N){if(b['ReactUtils']['isValidElement'](N)&&b['ObjectUtils']['is'](M)){N['props']['user_by_BDFDB']=M['id'];let O='',P=b['DOMUtils']['formatClassName']((N['props']['className']||'')['replace'](b['disCN']['avatar'],''));if(BDFDB_Patrons_T2['includes'](M['id'])){O='BDFDB\x20Patron';P=b['DOMUtils']['formatClassName'](P,g['showSupportBadges']&&b['disCN']['bdfdbhasbadge'],b['disCN']['bdfdbsupporter']);}if(BDFDB_Patrons_T3['includes'](M['id'])){O='BDFDB\x20Patron\x20Level\x202';P=b['DOMUtils']['formatClassName'](P,g['showSupportBadges']&&b['disCN']['bdfdbhasbadge'],b['disCN']['bdfdbsupporter'],g['showSupportBadges']&&BDFDB_Patrons_T3_hasBadge['includes'](M['id'])&&b['disCN']['bdfdbsupportercustom']);}if(M['id']==e){O='Theme\x20Developer';P=b['DOMUtils']['formatClassName'](P,b['disCN']['bdfdbhasbadge'],b['disCN']['bdfdbdev']);}if(O){delete N['props']['user_by_BDFDB'];if(N['type']=='img')N=b['ReactUtils']['createElement'](x['LibraryComponents']['AvatarComponents']['default'],Object['assign']({},N['props'],{'size':b['LibraryComponents']['AvatarComponents']['Sizes']['SIZE_40']}));delete N['props']['className'];N=b['ReactUtils']['createElement']('div',{'className':P,'style':{'borderRadius':0x0,'overflow':'visible'},'custombadge_id':BDFDB_Patrons_T3_hasBadge['includes'](M['id'])?M['id']:null,'user_by_BDFDB':M['id'],'children':[N]});if(g['showSupportBadges'])N['props']['children']['push'](b['ReactUtils']['createElement'](x['LibraryComponents']['TooltipContainer'],{'text':O,'children':b['ReactUtils']['createElement']('div',{'className':b['disCN']['bdfdbbadge']})}));return N;}}};c['_processAvatarMount']=function(M,N,O='top'){if(Node['prototype']['isPrototypeOf'](N)&&b['ObjectUtils']['is'](M)){N['setAttribute']('user_by_BDFDB',M['id']);let P='';if(BDFDB_Patrons_T2['includes'](M['id'])&&g['showSupportBadges']){P='BDFDB\x20Patron';N['className']=b['DOMUtils']['formatClassName'](N['className'],g['showSupportBadges']&&b['disCN']['bdfdbhasbadge'],b['disCN']['bdfdbsupporter']);}else if(BDFDB_Patrons_T3['includes'](M['id'])&&g['showSupportBadges']){P='BDFDB\x20Patron\x20Level\x202';N['className']=b['DOMUtils']['formatClassName'](N['className'],g['showSupportBadges']&&b['disCN']['bdfdbhasbadge'],b['disCN']['bdfdbsupporter'],g['showSupportBadges']&&BDFDB_Patrons_T3_hasBadge['includes'](M['id'])&&b['disCN']['bdfdbsupportercustom']);}else if(M['id']==e){P='Theme\x20Developer';N['className']=b['DOMUtils']['formatClassName'](N['className'],b['disCN']['bdfdbhasbadge'],b['disCN']['bdfdbdev']);}if(P&&!N['querySelector'](b['dotCN']['bdfdbbadge'])){if(g['showSupportBadges']){if(BDFDB_Patrons_T3_hasBadge['includes'](M['id']))N['setAttribute']('custombadge_id',M['id']);let Q=document['createElement']('div');Q['className']=b['disCN']['bdfdbbadge'];Q['addEventListener']('mouseenter',R=>{b['TooltipUtils']['create'](Q,P,{'position':O});});N['style']['setProperty']('position','relative');N['style']['setProperty']('overflow','visible');N['style']['setProperty']('border-radius',0x0);N['appendChild'](Q);}}}};c['processMessageHeader']=function(M){if(M['instance']['props']['message']&&M['instance']['props']['message']['author']){let N=b['ReactUtils']['getValue'](M,'returnvalue.props.children.0');if(N&&N['props']&&typeof N['props']['children']=='function'){let O=N['props']['children'];N['props']['children']=(...P)=>{let Q=O(...P);return c['_processAvatarRender'](M['instance']['props']['message']['author'],Q)||Q;};}else if(N&&N['type']=='img')M['returnvalue']['props']['children'][0x0]=c['_processAvatarRender'](M['instance']['props']['message']['author'],N)||N;}};c['processMemberListItem']=function(M){c['_processAvatarMount'](M['instance']['props']['user'],M['node']['querySelector'](b['dotCN']['avatarwrapper']));};c['processPrivateChannel']=function(M){c['_processAvatarMount'](M['instance']['props']['user'],M['node']['querySelector'](b['dotCN']['avatarwrapper']));};c['processUserPopout']=function(M){c['_processAvatarMount'](M['instance']['props']['user'],M['node']['querySelector'](b['dotCN']['userpopoutavatarwrapper']));};c['processUserProfile']=function(M){c['_processAvatarMount'](M['instance']['props']['user'],M['node']['querySelector'](b['dotCN']['avatarwrapper']));};c['processDiscordTag']=function(M){if(M['instance']&&M['instance']['props']&&M['instance']['props']['user']&&M['returnvalue'])M['returnvalue']['props']['user']=M['instance']['props']['user'];};c['processMessageContent']=function(M){if(b['ArrayUtils']['is'](M['instance']['props']['content']))for(let N of M['instance']['props']['content'])c['_processMessageContentEle'](N,M['instance']['props']['message']);};c['_processMessageContentEle']=function(M,N){if(b['ReactUtils']['isValidElement'](M)){if(typeof M['props']['render']=='function'&&b['ReactUtils']['getValue'](M,'props.children.type.displayName')=='Mention'){let O=b['ReactUtils']['getValue'](M['props']['render'](),'props.userId');if(O&&!M['props']['children']['props']['userId'])M['props']['children']['props']['userId']=O;if(N&&N['mentioned'])M['props']['children']['props']['mentioned']=!![];}else if(b['ReactUtils']['isValidElement'](M['props']['children']))c['_processMessageContentEle'](M['props']['children'],N);else if(b['ArrayUtils']['is'](M['props']['children']))for(let P of M['props']['children'])c['_processMessageContentEle'](P,N);}else if(b['ArrayUtils']['is'](M))for(let Q of M)c['_processMessageContentEle'](Q,N);};c['processMention']=function(M){delete M['returnvalue']['props']['userId'];};const D=['UserSettingsCog','User','Developer','Slate','GuildFolder','GroupDM','SystemMessage','Message','Native','Channel','Guild'];const E=b['ArrayUtils']['removeCopies']([]['concat'](D['map'](M=>M+'ContextMenu'),['MessageOptionContextMenu','MessageOptionToolbar']));c['addContextListeners']=function(M){M=M==b&&c||M;for(let N of E)if(typeof M['on'+N]==='function'){b['InternalData']['componentPatchQueries'][N]['query']['push'](M);b['InternalData']['componentPatchQueries'][N]['query']=b['ArrayUtils']['removeCopies'](b['InternalData']['componentPatchQueries'][N]['query']);b['InternalData']['componentPatchQueries'][N]['query']['sort']((O,P)=>{return O['name']P['name']?0x1:0x0;});for(let O of b['InternalData']['componentPatchQueries'][N]['modules'])c['patchContextMenuForPlugin'](M,N,O);}};c['patchContextMenuForPlugin']=function(M,N,O){M=M==b&&c||M;if(O&&O['exports']&&O['exports']['default'])b['ModuleUtils']['patch'](M,O['exports'],'default',{'after':P=>{if(P['returnValue']&&typeof M['on'+N]==='function')M['on'+N]({'instance':{'props':P['methodArguments'][0x0]},'returnvalue':P['returnValue'],'methodname':'default','type':O['exports']['default']['displayName']});}});};c['executeExtraPatchedPatches']=function(M,N){if(N['returnvalue']&&b['ObjectUtils']['is'](b['InternalData']['componentPatchQueries'][M])&&b['ArrayUtils']['is'](b['InternalData']['componentPatchQueries'][M]['query'])){for(let O of b['InternalData']['componentPatchQueries'][M]['query'])if(typeof O['on'+M]==='function')O['on'+M](N);}};c['patchPlugin'](b);for(let M of E)if(!b['InternalData']['componentPatchQueries'][M])b['InternalData']['componentPatchQueries'][M]={'query':[],'modules':[]};b['ModuleUtils']['patch'](b,n['ContextMenuUtils'],'openContextMenu',{'before':N=>{let O=N['methodArguments'][0x1]();if(b['ObjectUtils']['is'](O)&&O['type']&&O['type']['displayName']){for(let P of D)if(O['type']['displayName']['indexOf'](P)>-0x1){let Q=P+'ContextMenu';let R=b['ModuleUtils']['find'](S=>S==O['type'],![]);if(R&&R['exports']&&R['exports']['default']&&b['InternalData']['componentPatchQueries'][Q]){b['InternalData']['componentPatchQueries'][Q]['modules']['push'](R);b['InternalData']['componentPatchQueries'][Q]['modules']=b['ArrayUtils']['removeCopies'](b['InternalData']['componentPatchQueries'][Q]['modules']);for(let S of b['InternalData']['componentPatchQueries'][Q]['query'])c['patchContextMenuForPlugin'](S,Q,R);}break;}}}});b['ModuleUtils']['patch'](b,b['ReactUtils']['getValue'](b['ModuleUtils']['findByString']('renderReactions','canAddNewReactions','showMoreUtilities',![]),'exports.default'),'type',{'after':N=>{if(document['querySelector'](b['dotCN']['emojipicker'])||!b['ObjectUtils']['toArray'](b['myPlugins'])['some'](P=>P['onMessageOptionContextMenu']||P['onMessageOptionToolbar']))return;let O=b['ReactUtils']['findChild'](N['returnValue'],{'filter':P=>P&&P['props']&&P['props']['showMoreUtilities']!=undefined&&P['props']['showEmojiPicker']!=undefined&&P['props']['setPopout']!=undefined});if(O)b['ModuleUtils']['patch'](b,O,'type',{'after':P=>{let Q=b['ReactUtils']['findChild'](P['returnValue'],{'filter':R=>R&&R['props']&&typeof R['props']['onRequestClose']=='function'&&R['props']['onRequestClose']['toString']()['indexOf']('moreUtilities')>-0x1});c['executeExtraPatchedPatches']('MessageOptionToolbar',{'instance':{'props':P['methodArguments'][0x0]},'returnvalue':P['returnValue'],'methodname':'default'});if(Q&&typeof Q['props']['renderPopout']=='function'){let R=Q['props']['renderPopout'];Q['props']['renderPopout']=(...S)=>{let T=R(...S);b['ModuleUtils']['patch'](b,T,'type',{'after':U=>{c['executeExtraPatchedPatches']('MessageOptionContextMenu',{'instance':{'props':U['methodArguments'][0x0]},'returnvalue':U['returnValue'],'methodname':'default'});}},{'noCache':!![]});return T;};}}},{'once':!![]});}});c['onSettingsClosed']=function(){if(c['SettingsUpdated']){delete c['SettingsUpdated'];c['forceUpdateAll']();}};c['forceUpdateAll']=function(){if(m['path'])g=b['DataUtils']['get'](this,'settings');b['MessageUtils']['rerenderAll']();b['ModuleUtils']['forceAllUpdates'](b);};c['addSpecialListeners'](b);let F=b['ModuleUtils']['findByName']('BasePopout'),G=b['ModuleUtils']['findByName']('ReferencePositionLayer');if(F&&G)b['ModuleUtils']['patch'](b,F['prototype'],'renderLayer',{'after':N=>{if(N['returnValue']&&N['thisObject']['isBDFDBpopout']){N['returnValue']=b['ReactUtils']['createPortal'](b['ReactUtils']['createElement'](G,N['returnValue']['props']),document['querySelector'](b['dotCN']['appmount']+'\x20>\x20'+b['dotCN']['itemlayercontainer']));}}});if(x['LibraryComponents']['GuildComponents']['BlobMask']){let N=['lowerLeftBadge','upperLeftBadge'];b['ModuleUtils']['patch'](b,x['LibraryComponents']['GuildComponents']['BlobMask']['prototype'],'render',{'before':P=>{P['thisObject']['props']=Object['assign']({},x['LibraryComponents']['GuildComponents']['BlobMask']['defaultProps'],P['thisObject']['props']);for(let Q of N)if(!P['thisObject']['state'][Q+'Mask'])P['thisObject']['state'][Q+'Mask']=new x['LibraryComponents']['Animations']['Controller']({'spring':0x0});},'after':P=>{let [Q,R]=b['ReactUtils']['findParent'](P['returnValue'],{'name':'TransitionGroup'});if(R>-0x1){Q[R]['props']['children']['push'](!P['thisObject']['props']['lowerLeftBadge']?null:b['ReactUtils']['createElement'](x['LibraryComponents']['BadgeAnimationContainer'],{'className':b['disCN']['guildlowerleftbadge'],'key':'lower-left-badge','animatedStyle':P['thisObject']['getLowerLeftBadgeStyles'](),'children':P['thisObject']['props']['lowerLeftBadge']}));Q[R]['props']['children']['push'](!P['thisObject']['props']['upperLeftBadge']?null:b['ReactUtils']['createElement'](x['LibraryComponents']['BadgeAnimationContainer'],{'className':b['disCN']['guildupperleftbadge'],'key':'upper-left-badge','animatedStyle':P['thisObject']['getUpperLeftBadgeStyles'](),'children':P['thisObject']['props']['upperLeftBadge']}));}[Q,R]=b['ReactUtils']['findParent'](P['returnValue'],{'name':'mask'});if(R>-0x1){Q[R]['props']['children']['push'](b['ReactUtils']['createElement'](x['LibraryComponents']['Animations']['animated']['rect'],{'x':-0x4,'y':-0x4,'width':P['thisObject']['props']['upperLeftBadgeWidth']+0x8,'height':0x18,'rx':0xc,'ry':0xc,'transform':P['thisObject']['getLeftBadgePositionInterpolation'](P['thisObject']['state']['upperLeftBadgeMask'],-0x1),'fill':'black'}));Q[R]['props']['children']['push'](b['ReactUtils']['createElement'](x['LibraryComponents']['Animations']['animated']['rect'],{'x':-0x4,'y':0x1c,'width':P['thisObject']['props']['lowerLeftBadgeWidth']+0x8,'height':0x18,'rx':0xc,'ry':0xc,'transform':P['thisObject']['getLeftBadgePositionInterpolation'](P['thisObject']['state']['lowerLeftBadgeMask']),'fill':'black'}));}}});b['ModuleUtils']['patch'](b,x['LibraryComponents']['GuildComponents']['BlobMask']['prototype'],'componentDidMount',{'after':P=>{for(let Q of N)P['thisObject']['state'][Q+'Mask']['update']({'spring':P['thisObject']['props'][Q]!=null?0x1:0x0,'immediate':!![]})['start']();}});b['ModuleUtils']['patch'](b,x['LibraryComponents']['GuildComponents']['BlobMask']['prototype'],'componentWillUnmount',{'after':P=>{for(let Q of N)if(P['thisObject']['state'][Q+'Mask'])P['thisObject']['state'][Q+'Mask']['destroy']();}});b['ModuleUtils']['patch'](b,x['LibraryComponents']['GuildComponents']['BlobMask']['prototype'],'componentDidUpdate',{'after':P=>{for(let Q of N)if(P['thisObject']['props'][Q]!=null&&P['methodArguments'][0x0][Q]==null){P['thisObject']['state'][Q+'Mask']['update']({'spring':0x1,'immediate':!document['hasFocus'](),'config':{'friction':0x1e,'tension':0x384,'mass':0x1}})['start']();}else if(P['thisObject']['props'][Q]==null&&P['methodArguments'][0x0][Q]!=null){P['thisObject']['state'][Q+'Mask']['update']({'spring':0x0,'immediate':!document['hasFocus'](),'config':{'duration':0x96,'friction':0xa,'tension':0x64,'mass':0x1}})['start']();}}});x['LibraryComponents']['GuildComponents']['BlobMask']['prototype']['getLeftBadgePositionInterpolation']=function(P,Q){return void 0x0===Q&&(Q=0x1),P['animated']['spring']['to']([0x0,0x1],[0x14,0x0])['to'](function(R){return'translate('+R*-0x1+'\x20'+R*Q+')';});};x['LibraryComponents']['GuildComponents']['BlobMask']['prototype']['getLowerLeftBadgeStyles']=function(){var P=this['state']['lowerLeftBadgeMask']['animated']['spring'];return{'opacity':P['to']([0x0,0.5,0x1],[0x0,0x0,0x1]),'transform':P['to'](function(Q){return'translate('+-0x1*(0x10-0x10*Q)+'px,\x20'+(0x10-0x10*Q)+'px)';})};};x['LibraryComponents']['GuildComponents']['BlobMask']['prototype']['getUpperLeftBadgeStyles']=function(){var P=this['state']['upperLeftBadgeMask']['animated']['spring'];return{'opacity':P['to']([0x0,0.5,0x1],[0x0,0x0,0x1]),'transform':P['to'](function(Q){return'translate('+-0x1*(0x10-0x10*Q)+'px,\x20'+-0x1*(0x10-0x10*Q)+'px)';})};};let O={};for(let P of N)O[P+'Width']=0x10;c['setDefaultProps'](x['LibraryComponents']['GuildComponents']['BlobMask'],O);}b['ModuleUtils']['patch'](b,n['GuildStore'],'getGuild',{'after':Q=>{if(Q['returnValue']&&Q['methodArguments'][0x0]==f)Q['returnValue']['banner']='https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB_banner.png';}});b['ModuleUtils']['patch'](b,n['IconUtils'],'getGuildBannerURL',{'instead':Q=>{return Q['methodArguments'][0x0]['id']==f?Q['methodArguments'][0x0]['banner']:Q['callOriginalMethod']();}});c['forceUpdateAll']();b['ReactUtils']['findChildren']=b['ReactUtils']['findParent'];if(b['UserUtils']['me']['id']==e){for(let Q in t)if(!t[Q])b['LogUtils']['warn'](Q+'\x20not\x20initialized\x20in\x20DiscordClassModules');for(let R in l)if(!l[R])b['LogUtils']['warn'](R+'\x20not\x20initialized\x20in\x20DiscordObjects');for(let S in m)if(!m[S])b['LogUtils']['warn'](S+'\x20not\x20initialized\x20in\x20LibraryRequires');for(let T in n)if(!n[T])b['LogUtils']['warn'](T+'\x20not\x20initialized\x20in\x20LibraryModules');for(let U in x['NativeSubComponents'])if(!x['NativeSubComponents'][U])b['LogUtils']['warn'](U+'\x20not\x20initialized\x20in\x20NativeSubComponents');for(let V in x['LibraryComponents'])if(!x['LibraryComponents'][V])b['LogUtils']['warn'](V+'\x20not\x20initialized\x20in\x20LibraryComponents');b['ModuleUtils']['DevFuncs']={};b['ModuleUtils']['DevFuncs']['generateClassId']=function(){let W='';while(W['length']<0x6)W+=b['ModuleUtils']['DevFuncs']['generateClassId']['chars'][Math['floor'](Math['random']()*b['ModuleUtils']['DevFuncs']['generateClassId']['chars']['length'])];return W;};b['ModuleUtils']['DevFuncs']['generateClassId']['chars']='0123456789ABCDEFGHIJKMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'['split']('');b['ModuleUtils']['DevFuncs']['findByIndex']=function(W){return b['ModuleUtils']['DevFuncs']['req']['c'][W];};b['ModuleUtils']['DevFuncs']['findPropAny']=function(...W){window['t']={'$filter':X=>[...W]['flat'](0xa)['filter'](Y=>typeof Y=='string')['every'](Y=>X['toLowerCase']()['indexOf'](Y['toLowerCase']())>-0x1)};for(let X in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](X)){let Y=b['ModuleUtils']['DevFuncs']['req']['c'][X]['exports'];if(Y&&typeof Y=='object')for(let Z in Y)if(window['t']['$filter'](Z))window['t'][Z+'_'+X]=Y;if(Y&&typeof Y=='object'&&typeof Y['default']=='object')for(let a0 in Y['default'])if(window['t']['$filter'](a0))window['t'][a0+'_default_'+X]=Y['default'];}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['findPropFunc']=function(...W){window['t']={'$filter':X=>[...W]['flat'](0xa)['filter'](Y=>typeof Y=='string')['every'](Y=>X['toLowerCase']()['indexOf'](Y['toLowerCase']())>-0x1)};for(let X in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](X)){let Y=b['ModuleUtils']['DevFuncs']['req']['c'][X]['exports'];if(Y&&typeof Y=='object')for(let Z in Y)if(window['t']['$filter'](Z)&&typeof Y[Z]!='string')window['t'][Z+'_'+X]=Y;if(Y&&typeof Y=='object'&&typeof Y['default']=='object')for(let a0 in Y['default'])if(window['t']['$filter'](a0)&&typeof Y['default'][a0]!='string')window['t'][a0+'_default_'+X]=Y['default'];}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['findPropStringLib']=function(...W){window['t']={'$filter':X=>[...W]['flat'](0xa)['filter'](Y=>typeof Y=='string')['every'](Y=>X['toLowerCase']()['indexOf'](Y['toLowerCase']())>-0x1)};for(let X in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](X)){let Y=b['ModuleUtils']['DevFuncs']['req']['c'][X]['exports'];if(Y&&typeof Y=='object')for(let Z in Y)if(window['t']['$filter'](Z)&&typeof Y[Z]=='string'&&/^[A-z0-9]+\-[A-z0-9_-]{6}$/['test'](Y[Z]))window['t'][Z+'_'+X]=Y;if(Y&&typeof Y=='object'&&typeof Y['default']=='object')for(let a0 in Y['default'])if(window['t']['$filter'](a0)&&typeof Y['default'][a0]=='string'&&/^[A-z0-9]+\-[A-z0-9_-]{6}$/['test'](Y['default'][a0]))window['t'][a0+'_default_'+X]=Y['default'];}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['findNameAny']=function(...W){window['t']={'$filter':X=>[...W]['flat'](0xa)['filter'](Y=>typeof Y=='string')['some'](Y=>typeof X['displayName']=='string'&&X['displayName']['toLowerCase']()['indexOf'](Y['toLowerCase']())>-0x1||X['name']=='string'&&X['name']['toLowerCase']()['indexOf'](Y['toLowerCase']())>-0x1)};for(let X in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](X)){let Y=b['ModuleUtils']['DevFuncs']['req']['c'][X]['exports'];if(Y&&(typeof Y=='object'||typeof Y=='function')&&window['t']['$filter'](Y))window['t'][(Y['displayName']||Y['name'])+'_'+X]=Y;if(Y&&(typeof Y=='object'||typeof Y=='function')&&Y['default']&&(typeof Y['default']=='object'||typeof Y['default']=='function')&&window['t']['$filter'](Y['default']))window['t'][(Y['default']['displayName']||Y['default']['name'])+'_'+X]=Y['default'];}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['findCodeAny']=function(...W){window['t']={'$filter':X=>[...W]['flat'](0xa)['filter'](Y=>typeof Y=='string')['map'](Y=>Y['toLowerCase']())['every'](Y=>typeof X=='function'&&(X['toString']()['toLowerCase']()['indexOf'](Y)>-0x1||typeof X['__originalMethod']=='function'&&X['__originalMethod']['toString']()['toLowerCase']()['indexOf'](Y)>-0x1||typeof X['__originalFunction']=='function'&&X['__originalFunction']['toString']()['toLowerCase']()['indexOf'](Y)>-0x1)||b['ObjectUtils']['is'](X)&&typeof X['type']=='function'&&X['type']['toString']()['toLowerCase']()['indexOf'](Y)>-0x1)};for(let X in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](X)){let Y=b['ModuleUtils']['DevFuncs']['req']['c'][X]['exports'];if(Y&&typeof Y=='function'&&window['t']['$filter'](Y))window['t']['module_'+X]={'string':Y['toString'](),'func':Y};if(Y&&Y['__esModule']){for(let Z in Y)if(Y[Z]&&typeof Y[Z]=='function'&&window['t']['$filter'](Y[Z]))window['t'][Z+'_module_'+X]={'string':Y[Z]['toString'](),'func':Y[Z],'module':Y};if(Y['default']&&(typeof Y['default']=='object'||typeof Y['default']=='function'))for(let a0 in Y['default'])if(Y['default'][a0]&&typeof Y['default'][a0]=='function'&&window['t']['$filter'](Y['default'][a0]))window['t'][a0+'_module_'+X+'_default']={'string':Y['default'][a0]['toString'](),'func':Y['default'][a0],'module':Y};}}for(let a1 in b['ModuleUtils']['DevFuncs']['req']['m'])if(typeof b['ModuleUtils']['DevFuncs']['req']['m'][a1]=='function'&&window['t']['$filter'](b['ModuleUtils']['DevFuncs']['req']['m'][a1]))window['t']['funtion_'+a1]={'string':b['ModuleUtils']['DevFuncs']['req']['m'][a1]['toString'](),'func':b['ModuleUtils']['DevFuncs']['req']['m'][a1]};console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['getAllModules']=function(){window['t']={};for(let W in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](W)){let X=b['ModuleUtils']['DevFuncs']['req']['c'][W]['exports'];if(X&&typeof X=='object')window['t'][W]=X;}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['getAllStringLibs']=function(){window['t']=[];for(let Y in b['ModuleUtils']['DevFuncs']['req']['c'])if(b['ModuleUtils']['DevFuncs']['req']['c']['hasOwnProperty'](Y)){let Z=b['ModuleUtils']['DevFuncs']['req']['c'][Y]['exports'];if(Z&&typeof Z=='object'&&!b['ArrayUtils']['is'](Z)&&Object['keys'](Z)['length']){var W=!![],X=![];for(let a0 in Z){if(typeof Z[a0]!='string')W=![];if(typeof Z[a0]=='string'&&/^[A-z0-9]+\-[A-z0-9_-]{6}$/['test'](Z[a0]))X=!![];}if(W&&X)window['t']['push'](Z);}if(Z&&typeof Z=='object'&&Z['default']&&typeof Z['default']=='object'&&!b['ArrayUtils']['is'](Z['default'])&&Object['keys'](Z['default'])['length']){var W=!![],X=![];for(let a1 in Z['default']){if(typeof Z['default'][a1]!='string')W=![];if(typeof Z['default'][a1]=='string'&&/^[A-z0-9]+\-[A-z0-9_-]{6}$/['test'](Z['default'][a1]))X=!![];}if(W&&X)window['t']['push'](Z['default']);}}console['clear']();console['log'](window['t']);};b['ModuleUtils']['DevFuncs']['listen']=function(W){W=b['ArrayUtils']['is'](W)?W:Array['from'](arguments);b['ModuleUtils']['DevFuncs']['listenstop']();b['ModuleUtils']['DevFuncs']['listen']['p']=b['ModuleUtils']['patch']('WebpackSearch',b['ModuleUtils']['findByProperties'](W),W[0x0],{'after':X=>{console['log'](X);}});};b['ModuleUtils']['DevFuncs']['listenstop']=function(){if(typeof b['ModuleUtils']['DevFuncs']['listen']['p']=='function')b['ModuleUtils']['DevFuncs']['listen']['p']();};b['ModuleUtils']['DevFuncs']['req']=c['getWebModuleReq']();}for(let W in l)if(!l[W]){l[W]=function(){};b['DiscordObjects'][W]=function(){};}for(let X in x['NativeSubComponents'])if(!x['NativeSubComponents'][X])x['NativeSubComponents'][X]='div';for(let Y in x['LibraryComponents'])if(!x['LibraryComponents'][Y]){x['LibraryComponents'][Y]='div';b['LibraryComponents'][Y]='div';}b['loaded']=!![];window['BDFDB']=b;c['reloadLib']=Z=>{let a0=document['querySelector']('head\x20script#BDFDBLibraryScript');if(a0)a0['remove']();a0=document['createElement']('script');a0['setAttribute']('id','BDFDBLibraryScript');a0['setAttribute']('type','text/javascript');a0['setAttribute']('src','https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.min.js');a0['setAttribute']('date',performance['now']());document['head']['appendChild'](a0);};let H=Object['keys'](b)['length']-0xa;b['TimeUtils']['interval'](Z=>{if(!window['BDFDB']||typeof b!='object'||Object['keys'](b)['length']0x112a880){b['TimeUtils']['clear'](Z);c['reloadLib']();}},0x2710);})(); \ No newline at end of file +(_ => { + if (window.BDFDB && window.BDFDB.PluginUtils && typeof window.BDFDB.PluginUtils.cleanUp == "function") window.BDFDB.PluginUtils.cleanUp(window.BDFDB); + + const BDFDB = { + myPlugins: Object.assign({}, window.BDFDB && window.BDFDB.myPlugins), + InternalData: Object.assign({ + pressedKeys: [], + mousePosition: { + pageX: 0, + pageY: 0 + }, + componentPatchQueries: {} + }, + window.BDFDB && window.BDFDB.InternalData, + { + creationTime: performance.now() + }), + name: "BDFDB" + }; + const InternalBDFDB = { + name: "BDFDB", + started: true, + patchPriority: 0 + }; + const loadId = Math.round(Math.random() * 10000000000000000), myId = "278543574059057154", myGuildId = "410787888507256842"; + BDFDB.InternalData.loadId = loadId; + + var settings = {}; + + if (typeof Array.prototype.flat != "function") Array.prototype.flat = function () {return this;} + + InternalBDFDB.defaults = { + settings: { + showToasts: {value:true, description:"Show Plugin start and stop Toasts"}, + showSupportBadges: {value:true, description:"Show little Badges for Users who support my Patreon"} + } + }; + + BDFDB.LogUtils = {}; + BDFDB.LogUtils.log = function (string, name) { + console.log(`%c[${typeof name == "string" && name || "BDFDB"}]`, "color: #3a71c1; font-weight: 700;", (typeof string == "string" && string || "").trim()); + }; + BDFDB.LogUtils.warn = function (string, name) { + console.warn(`%c[${typeof name == "string" && name || "BDFDB"}]`, "color: #3a71c1; font-weight: 700;", (typeof string == "string" && string || "").trim()); + }; + BDFDB.LogUtils.error = function (string, name) { + console.error(`%c[${typeof name == "string" && name || "BDFDB"}]`, "color: #3a71c1; font-weight: 700;", "Fatal Error: " + (typeof string == "string" && string || "").trim()); + }; + + BDFDB.LogUtils.log("Loading library."); + + BDFDB.cleanUp = + + BDFDB.PluginUtils = {}; + BDFDB.PluginUtils.init = BDFDB.loadMessage = function (plugin) { + plugin.name = plugin.name || (typeof plugin.getName == "function" ? plugin.getName() : null); + plugin.version = plugin.version || (typeof plugin.getVersion == "function" ? plugin.getVersion() : null); + plugin.author = plugin.author || (typeof plugin.getAuthor == "function" ? plugin.getAuthor() : null); + plugin.description = plugin.description || (typeof plugin.getDescription == "function" ? plugin.getDescription() : null); + + if (typeof plugin.getSettingsPanel != "function") plugin.getSettingsPanel = _ => {return plugin.started && BDFDB.PluginUtils.createSettingsPanel(plugin, []);}; + + let loadMessage = BDFDB.LanguageUtils.LibraryStringsFormat("toast_plugin_started", "v" + plugin.version); + BDFDB.LogUtils.log(loadMessage, plugin.name); + if (!BDFDB.BDUtils.getSettings(BDFDB.BDUtils.settingsIds.showToasts) && settings.showToasts) BDFDB.NotificationUtils.toast(plugin.name + " " + loadMessage, {nopointer: true, selector: "plugin-started-toast"}); + + let url = typeof plugin.getRawUrl == "function" && typeof plugin.getRawUrl() == "string" ? plugin.getRawUrl() : `https://mwittrien.github.io/BetterDiscordAddons/Plugins/${plugin.name}/${plugin.name}.plugin.js`; + BDFDB.PluginUtils.checkUpdate(plugin.name, url); + + if (typeof plugin.initConstructor === "function") BDFDB.TimeUtils.suppress(plugin.initConstructor.bind(plugin), "Could not initiate constructor!", plugin.name)(); + if (typeof plugin.css === "string") BDFDB.DOMUtils.appendLocalStyle(plugin.name, plugin.css); + + InternalBDFDB.patchPlugin(plugin); + InternalBDFDB.addSpecialListeners(plugin); + + BDFDB.PluginUtils.translate(plugin); + + BDFDB.PluginUtils.checkChangeLog(plugin); + + if (!window.PluginUpdates || typeof window.PluginUpdates !== "object") window.PluginUpdates = {plugins: {} }; + window.PluginUpdates.plugins[url] = {name: plugin.name, raw: url, version: plugin.version}; + if (typeof window.PluginUpdates.interval === "undefined") window.PluginUpdates.interval = BDFDB.TimeUtils.interval(_ => {BDFDB.PluginUtils.checkAllUpdates();}, 1000*60*60*2); + + plugin.started = true; + delete plugin.stopping; + + let startAmount = 1; + for (let name in BDFDB.myPlugins) if (!BDFDB.myPlugins[name].started && typeof BDFDB.myPlugins[name].initialize == "function") setTimeout(_ => {BDFDB.TimeUtils.suppress(BDFDB.myPlugins[name].initialize.bind(BDFDB.myPlugins[name]), "Could not initiate plugin!", name)();}, 100 * (startAmount++)); + }; + BDFDB.PluginUtils.clear = BDFDB.unloadMessage = function (plugin) { + InternalBDFDB.clearStartTimeout(plugin); + + delete BDFDB.myPlugins[plugin.name]; + + let unloadMessage = BDFDB.LanguageUtils.LibraryStringsFormat("toast_plugin_stopped", "v" + plugin.version); + BDFDB.LogUtils.log(unloadMessage, plugin.name); + if (!BDFDB.BDUtils.getSettings(BDFDB.BDUtils.settingsIds.showToasts) && settings.showToasts) BDFDB.NotificationUtils.toast(plugin.name + " " + unloadMessage, {nopointer: true, selector: "plugin-stopped-toast"}); + + let url = typeof plugin.getRawUrl == "function" && typeof plugin.getRawUrl() == "string" ? plugin.getRawUrl() : `https://mwittrien.github.io/BetterDiscordAddons/Plugins/${plugin.name}/${plugin.name}.plugin.js`; + + if (typeof plugin.css === "string") BDFDB.DOMUtils.removeLocalStyle(plugin.name); + + BDFDB.PluginUtils.cleanUp(plugin); + + for (let type in BDFDB.InternalData.componentPatchQueries) BDFDB.ArrayUtils.remove(BDFDB.InternalData.componentPatchQueries[type].query, plugin, true); + + for (let modal of document.querySelectorAll(`.${plugin.name}-modal, .${plugin.name.toLowerCase()}-modal, .${plugin.name}-settingsmodal, .${plugin.name.toLowerCase()}-settingsmodal`)) { + let closeButton = modal.querySelector(BDFDB.dotCN.modalclose); + if (closeButton) closeButton.click(); + } + + delete BDFDB.DataUtils.cached[plugin.name] + delete window.PluginUpdates.plugins[url]; + + delete plugin.started; + BDFDB.TimeUtils.timeout(_ => {delete plugin.stopping;}); + }; + BDFDB.PluginUtils.translate = function (plugin) { + plugin.labels = {}; + if (typeof plugin.setLabelsByLanguage === "function" || typeof plugin.changeLanguageStrings === "function") { + if (LibraryModules.LanguageStore.chosenLocale) translate(); + else BDFDB.TimeUtils.interval(interval => { + if (LibraryModules.LanguageStore.chosenLocale) { + BDFDB.TimeUtils.clear(interval); + translate(); + } + }, 100); + function translate() { + let language = BDFDB.LanguageUtils.getLanguage(); + if (typeof plugin.setLabelsByLanguage === "function") plugin.labels = plugin.setLabelsByLanguage(language.id); + if (typeof plugin.changeLanguageStrings === "function") plugin.changeLanguageStrings(); + BDFDB.LogUtils.log(BDFDB.LanguageUtils.LibraryStringsFormat("toast_plugin_translated", language.ownlang), plugin.name); + } + } + }; + BDFDB.PluginUtils.cleanUp = function (plugin) { + BDFDB.ListenerUtils.remove(plugin); + BDFDB.StoreChangeUtils.remove(plugin); + BDFDB.ObserverUtils.disconnect(plugin); + BDFDB.ModuleUtils.unpatch(plugin); + BDFDB.WindowUtils.closeAll(plugin); + BDFDB.WindowUtils.removeListener(plugin); + }; + BDFDB.PluginUtils.checkUpdate = function (pluginName, url) { + if (pluginName && url) return new Promise(callback => { + LibraryRequires.request(url, (error, response, result) => { + if (error) return callback(null); + let newVersion = result.match(/['"][0-9]+\.[0-9]+\.[0-9]+['"]/i); + if (!newVersion) return callback(null); + if (BDFDB.NumberUtils.getVersionDifference(newVersion[0], window.PluginUpdates.plugins[url].version) > 0.2) { + BDFDB.NotificationUtils.toast(`${pluginName} will be force updated, because your version is heavily outdated.`, { + type: "warn", + nopointer: true, + selector: "plugin-forceupdate-toast" + }); + BDFDB.PluginUtils.downloadUpdate(pluginName, url); + return callback(2); + } + else if (BDFDB.NumberUtils.compareVersions(newVersion[0], window.PluginUpdates.plugins[url].version)) { + BDFDB.PluginUtils.showUpdateNotice(pluginName, url); + return callback(1); + } + else { + BDFDB.PluginUtils.removeUpdateNotice(pluginName); + return callback(0); + } + }); + }); + return new Promise(_ => {callback(null);}); + }; + BDFDB.PluginUtils.checkAllUpdates = function () { + return new Promise(callback => { + let finished = 0, amount = 0; + for (let url in window.PluginUpdates.plugins) { + let plugin = window.PluginUpdates.plugins[url]; + if (plugin) BDFDB.PluginUtils.checkUpdate(plugin.name, plugin.raw).then(state => { + finished++; + if (state == 1) amount++; + if (finished >= Object.keys(window.PluginUpdates.plugins).length) callback(amount); + }); + } + }); + }; + BDFDB.PluginUtils.showUpdateNotice = function (pluginName, url) { + if (!pluginName || !url) return; + let updateNotice = document.querySelector("#pluginNotice"); + if (!updateNotice) { + updateNotice = BDFDB.NotificationUtils.notice(`${BDFDB.LanguageUtils.LibraryStrings.update_notice_update}    `, {html:true, id:"pluginNotice", type:"info", btn:!BDFDB.BDUtils.getSettings(BDFDB.BDUtils.settingsIds.automaticLoading) ? BDFDB.LanguageUtils.LanguageStrings.ERRORS_RELOAD : "", customicon:``}); + updateNotice.style.setProperty("display", "block", "important"); + updateNotice.style.setProperty("visibility", "visible", "important"); + updateNotice.style.setProperty("opacity", "1", "important"); + updateNotice.querySelector(BDFDB.dotCN.noticedismiss).addEventListener("click", _ => { + BDFDB.DOMUtils.remove(".update-clickme-tooltip"); + }); + let reloadButton = updateNotice.querySelector(BDFDB.dotCN.noticebutton); + if (reloadButton) { + BDFDB.DOMUtils.toggle(reloadButton, true); + reloadButton.addEventListener("click", _ => { + LibraryRequires.electron.remote.getCurrentWindow().reload(); + }); + reloadButton.addEventListener("mouseenter", _ => { + if (window.PluginUpdates.downloaded) BDFDB.TooltipUtils.create(reloadButton, window.PluginUpdates.downloaded.join(", "), {type:"bottom", selector:"update-notice-tooltip", style: "max-width: 420px"}); + }); + } + } + if (updateNotice) { + let updateNoticeList = updateNotice.querySelector("#outdatedPlugins"); + if (updateNoticeList && !updateNoticeList.querySelector(`#${pluginName}-notice`)) { + if (updateNoticeList.querySelector("span")) updateNoticeList.appendChild(BDFDB.DOMUtils.create(`, `)); + let updateEntry = BDFDB.DOMUtils.create(`${pluginName}`); + updateEntry.addEventListener("click", _ => {BDFDB.PluginUtils.downloadUpdate(pluginName, url);}); + updateNoticeList.appendChild(updateEntry); + if (!document.querySelector(".update-clickme-tooltip")) BDFDB.TooltipUtils.create(updateNoticeList, BDFDB.LanguageUtils.LibraryStrings.update_notice_click, {type:"bottom", selector:"update-clickme-tooltip", delay:500}); + } + } + }; + BDFDB.PluginUtils.removeUpdateNotice = function (pluginName, updateNotice = document.querySelector("#pluginNotice")) { + if (!pluginName || !updateNotice) return; + let updateNoticeList = updateNotice.querySelector("#outdatedPlugins"); + if (updateNoticeList) { + let noticeEntry = updateNoticeList.querySelector(`#${pluginName}-notice`); + if (noticeEntry) { + let nextSibling = noticeEntry.nextSibling; + let prevSibling = noticeEntry.prevSibling; + if (nextSibling && BDFDB.DOMUtils.containsClass(nextSibling, "separator")) nextSibling.remove(); + else if (prevSibling && BDFDB.DOMUtils.containsClass(prevSibling, "separator")) prevSibling.remove(); + noticeEntry.remove(); + } + if (!updateNoticeList.querySelector("span")) { + let reloadButton = updateNotice.querySelector(BDFDB.dotCN.noticebutton); + if (reloadButton) { + updateNotice.querySelector(".notice-message").innerText = BDFDB.LanguageUtils.LibraryStrings.update_notice_reload; + BDFDB.DOMUtils.toggle(reloadButton, false); + } + else updateNotice.querySelector(BDFDB.dotCN.noticedismiss).click(); + } + } + }; + BDFDB.PluginUtils.downloadUpdate = function (pluginName, url) { + if (!pluginName || !url) return; + LibraryRequires.request(url, (error, response, body) => { + if (error) return BDFDB.LogUtils.warn("Unable to get update for " + pluginName); + BDFDB.InternalData.creationTime = 0; + let wasEnabled = BDFDB.BDUtils.isPluginEnabled(pluginName); + let newName = (body.match(/"name"\s*:\s*"([^"]+)"/) || [])[1] || pluginName; + let newVersion = body.match(/['"][0-9]+\.[0-9]+\.[0-9]+['"]/i).toString().replace(/['"]/g, ""); + let oldVersion = window.PluginUpdates.plugins[url].version; + LibraryRequires.fs.writeFile(LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), newName + ".plugin.js"), body, _ => { + if (pluginName != newName) { + url = url.replace(new RegExp(pluginName, "g"), newName); + LibraryRequires.fs.unlink(LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), pluginName + ".plugin.js"), _ => {}); + let configPath = LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), pluginName + ".config.json"); + LibraryRequires.fs.exists(configPath, exists => { + if (exists) LibraryRequires.fs.rename(configPath, LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), newName + ".config.json"), _ => {}); + }); + BDFDB.TimeUtils.timeout(_ => {if (wasEnabled && !BDFDB.BDUtils.isPluginEnabled(newName)) BDFDB.BDUtils.enablePlugin(newName);}, 3000); + } + BDFDB.NotificationUtils.toast(BDFDB.LanguageUtils.LibraryStringsFormat("toast_plugin_updated", pluginName, "v" + oldVersion, newName, "v" + newVersion), {nopointer:true, selector:"plugin-updated-toast"}); + let updateNotice = document.querySelector("#pluginNotice"); + if (updateNotice) { + if (updateNotice.querySelector(BDFDB.dotCN.noticebutton)) { + window.PluginUpdates.plugins[url].version = newVersion; + if (!window.PluginUpdates.downloaded) window.PluginUpdates.downloaded = []; + if (!window.PluginUpdates.downloaded.includes(pluginName)) window.PluginUpdates.downloaded.push(pluginName); + } + BDFDB.PluginUtils.removeUpdateNotice(pluginName, updateNotice); + } + }); + }); + }; + BDFDB.PluginUtils.checkChangeLog = function (plugin) { + if (!BDFDB.ObjectUtils.is(plugin) || !plugin.changelog) return; + let changeLog = BDFDB.DataUtils.load(plugin, "changelog"); + if (!changeLog.currentversion || BDFDB.NumberUtils.compareVersions(plugin.version, changeLog.currentversion)) { + changeLog.currentversion = plugin.version; + BDFDB.DataUtils.save(changeLog, plugin, "changelog"); + BDFDB.PluginUtils.openChangeLog(plugin); + } + }; + BDFDB.PluginUtils.openChangeLog = function (plugin) { + if (!BDFDB.ObjectUtils.is(plugin) || !plugin.changelog) return; + let changeLogHTML = "", headers = { + added: "New Features", + fixed: "Bug Fixes", + improved: "Improvements", + progress: "Progress" + }; + for (let type in plugin.changelog) { + type = type.toLowerCase(); + let className = BDFDB.disCN["changelog" + type]; + if (className) { + changeLogHTML += `

${headers[type]}

    `; + for (let log of plugin.changelog[type]) changeLogHTML += `
  • ${log[0]}${log[1] ? (": " + log[1] + ".") : ""}
  • `; + changeLogHTML += `
` + } + } + if (changeLogHTML) BDFDB.ModalUtils.open(plugin, {header:`${plugin.name} ${BDFDB.LanguageUtils.LanguageStrings.CHANGE_LOG}`, subheader:`Version ${plugin.version}`, children:BDFDB.ReactUtils.elementToReact(BDFDB.DOMUtils.create(changeLogHTML)), className:BDFDB.disCN.modalchangelogmodal, contentClassName:BDFDB.disCNS.changelogcontainer + BDFDB.disCN.modalminicontent}); + }; + BDFDB.PluginUtils.addLoadingIcon = function (icon) { + if (!Node.prototype.isPrototypeOf(icon)) return; + let app = document.querySelector(BDFDB.dotCN.app); + if (!app) return; + BDFDB.DOMUtils.addClass(icon, BDFDB.disCN.loadingicon); + let loadingIconWrapper = document.querySelector(BDFDB.dotCN.app + ">" + BDFDB.dotCN.loadingiconwrapper) + if (!loadingIconWrapper) { + loadingIconWrapper = BDFDB.DOMUtils.create(`
`); + app.appendChild(loadingIconWrapper); + let killObserver = new MutationObserver(changes => {if (!loadingIconWrapper.firstElementChild) BDFDB.DOMUtils.remove(loadingIconWrapper);}); + killObserver.observe(loadingIconWrapper, {childList:true}); + } + loadingIconWrapper.appendChild(icon); + }; + BDFDB.PluginUtils.createSettingsPanel = function (plugin, children) { + if (!BDFDB.ObjectUtils.is(plugin) || !children || (!BDFDB.ReactUtils.isValidElement(children) && !BDFDB.ArrayUtils.is(children))) return; + let settingsPanel = BDFDB.DOMUtils.create(`
`); + BDFDB.ReactUtils.render(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SettingsPanel, { + key: `${plugin.name}-settingsPanel`, + title: plugin.name, + controls: [ + plugin.changelog && BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Clickable, { + className: BDFDB.disCN.settingspanelheaderbutton, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, { + text: BDFDB.LanguageUtils.LanguageStrings.CHANGE_LOG, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, { + name: InternalComponents.LibraryComponents.SvgIcon.Names.CHANGELOG, + onClick: _ => {BDFDB.PluginUtils.openChangeLog(plugin);} + }) + }) + }), + plugin != BDFDB && !plugin.noLibrary && BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Button, { + size: InternalComponents.LibraryComponents.Button.Sizes.MIN, + children: BDFDB.LanguageUtils.LibraryStrings.library_settings, + onClick: event => { + let wrapper = BDFDB.DOMUtils.getParent(BDFDB.dotCN._repocard, event.currentTarget); + if (wrapper) { + let settingsPanel = InternalBDFDB.createLibrarySettings(); + if (settingsPanel) { + let savedChildren = []; + while (wrapper.childElementCount) { + savedChildren.push(wrapper.firstChild); + wrapper.firstChild.remove(); + } + let closeButton = BDFDB.DOMUtils.create(`
`); + wrapper.appendChild(closeButton); + closeButton.addEventListener("click", _ => { + while (wrapper.childElementCount) wrapper.firstChild.remove(); + while (savedChildren.length) wrapper.appendChild(savedChildren.shift()); + let settings = wrapper.querySelector(BDFDB.dotCN._reposettings); + if (settings) { + while (settings.childElementCount) settings.firstChild.remove(); + settings.appendChild(plugin.getSettingsPanel()); + } + }); + wrapper.appendChild(settingsPanel); + } + } + } + }) + ], + children: children + }), settingsPanel); + return settingsPanel; + }; + BDFDB.PluginUtils.refreshSettingsPanel = function (plugin, settingsPanel, ...args) { + if (!BDFDB.ObjectUtils.is(plugin) || typeof plugin.getSettingsPanel != "function" || !Node.prototype.isPrototypeOf(settingsPanel) || !settingsPanel.parentElement) return; + settingsPanel.parentElement.appendChild(plugin.getSettingsPanel(...args)); + settingsPanel.remove(); + }; + InternalBDFDB.createLibrarySettings = function () { + if (!window.BDFDB || typeof BDFDB != "object" || !BDFDB.loaded) return; + let settingsPanel, settingsItems = []; + + let bdToastSetting = BDFDB.BDUtils.getSettings(BDFDB.BDUtils.settingsIds.showToasts); + for (let key in settings) settingsItems.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SettingsSaveItem, { + className: BDFDB.disCN.marginbottom8, + type: "Switch", + plugin: InternalBDFDB, + disabled: key == "showToasts" && bdToastSetting, + keys: ["settings", key], + label: InternalBDFDB.defaults.settings[key].description, + note: key == "showToasts" && bdToastSetting && "Disable BBDs general 'Show Toast' setting before disabling this", + dividerbottom: true, + value: settings[key] || key == "showToasts" && bdToastSetting + })); + + return settingsPanel = BDFDB.PluginUtils.createSettingsPanel(BDFDB, settingsItems); + }; + InternalBDFDB.clearStartTimeout = function (plugin) { + if (!BDFDB.ObjectUtils.is(plugin)) return; + BDFDB.TimeUtils.clear(plugin.startTimeout, plugin.libLoadTimeout); + delete plugin.startTimeout; + delete plugin.libLoadTimeout; + }; + InternalBDFDB.addSpecialListeners = function (plugin) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (BDFDB.ObjectUtils.is(plugin)) { + if (typeof plugin.onSettingsClosed === "function") { + let SettingsLayer = BDFDB.ModuleUtils.findByName("StandardSidebarView"); + if (SettingsLayer) BDFDB.ModuleUtils.patch(plugin, SettingsLayer.prototype, "componentWillUnmount", {after: e => { + plugin.onSettingsClosed(); + }}); + } + if (typeof plugin.onSwitch === "function") { + let spacer = document.querySelector(`${BDFDB.dotCN.guildswrapper} ~ * > ${BDFDB.dotCN.chatspacer}`); + if (spacer) { + let noChannelObserver = new MutationObserver(changes => {changes.forEach(change => { + if (change.target && BDFDB.DOMUtils.containsClass(change.target, BDFDB.disCN.nochannel)) plugin.onSwitch(); + });}); + BDFDB.ObserverUtils.connect(plugin, spacer.querySelector(BDFDB.dotCNC.chat + BDFDB.dotCN.nochannel), {name:"switchFixNoChannelObserver", instance:noChannelObserver}, {attributes: true}); + let spacerObserver = new MutationObserver(changes => {changes.forEach(change => {if (change.addedNodes) {change.addedNodes.forEach(node => { + if (BDFDB.DOMUtils.containsClass(node, BDFDB.disCN.chat, BDFDB.disCN.nochannel, false)) { + BDFDB.ObserverUtils.connect(plugin, node, {name:"switchFixNoChannelObserver", instance:noChannelObserver}, {attributes: true}); + } + });}});}); + BDFDB.ObserverUtils.connect(plugin, spacer, {name:"switchFixSpacerObserver", instance:spacerObserver}, {childList: true}); + } + } + InternalBDFDB.addContextListeners(plugin); + } + }; + + BDFDB.ObserverUtils = {}; + BDFDB.ObserverUtils.connect = function (plugin, eleOrSelec, observer, config = {childList: true}) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!BDFDB.ObjectUtils.is(plugin) || !eleOrSelec || !observer) return; + if (BDFDB.ObjectUtils.isEmpty(plugin.observers)) plugin.observers = {}; + if (!BDFDB.ArrayUtils.is(plugin.observers[observer.name])) plugin.observers[observer.name] = []; + if (!observer.multi) for (let subinstance of plugin.observers[observer.name]) subinstance.disconnect(); + if (observer.instance) plugin.observers[observer.name].push(observer.instance); + let instance = plugin.observers[observer.name][plugin.observers[observer.name].length - 1]; + if (instance) { + let node = Node.prototype.isPrototypeOf(eleOrSelec) ? eleOrSelec : typeof eleOrSelec === "string" ? document.querySelector(eleOrSelec) : null; + if (node) instance.observe(node, config); + } + }; + BDFDB.ObserverUtils.disconnect = function (plugin, observer) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (BDFDB.ObjectUtils.is(plugin) && !BDFDB.ObjectUtils.isEmpty(plugin.observers)) { + let observername = typeof observer == "string" ? observer : (BDFDB.ObjectUtils.is(observer) ? observer.name : null); + if (!observername) { + for (let observer in plugin.observers) for (let instance of plugin.observers[observer]) instance.disconnect(); + delete plugin.observers; + } + else if (!BDFDB.ArrayUtils.is(plugin.observers[observername])) { + for (let instance of plugin.observers[observername]) instance.disconnect(); + delete plugin.observers[observername]; + } + } + }; + + BDFDB.StoreChangeUtils = {}; + BDFDB.StoreChangeUtils.add = function (plugin, store, callback) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ObjectUtils.is(store) || typeof store.addChangeListener != "function" || typeof callback != "function") return; + BDFDB.ListenerUtils.remove(plugin, store, callback); + if (!BDFDB.ArrayUtils.is(plugin.changeListeners)) plugin.changeListeners = []; + plugin.changeListeners.push({store, callback}); + store.addChangeListener(callback); + }; + BDFDB.StoreChangeUtils.remove = function (plugin, store, callback) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ArrayUtils.is(plugin.changeListeners)) return; + if (!store) { + while (plugin.changeListeners.length) { + let listener = plugin.changeListeners.pop(); + listener.store.removeChangeListener(listener.callback); + } + } + else if (BDFDB.ObjectUtils.is(store) && typeof store.addChangeListener == "function") { + if (!callback) { + for (let listener of plugin.changeListeners) { + let removedListeners = []; + if (listener.store == store) { + listener.store.removeChangeListener(listener.callback); + removedListeners.push(listener); + } + if (removedListeners.length) plugin.changeListeners = plugin.changeListeners.filter(listener => !removedListeners.includes(listener)); + } + } + else if (typeof callback == "function") { + store.removeChangeListener(callback); + plugin.changeListeners = plugin.changeListeners.filter(listener => listener.store == store && listener.callback == callback); + } + } + }; + + BDFDB.ListenerUtils = {}; + BDFDB.ListenerUtils.add = function (plugin, ele, actions, selectorOrCallback, callbackOrNothing) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!BDFDB.ObjectUtils.is(plugin) || (!Node.prototype.isPrototypeOf(ele) && ele !== window) || !actions) return; + let callbackIs4th = typeof selectorOrCallback == "function"; + let selector = callbackIs4th ? undefined : selectorOrCallback; + let callback = callbackIs4th ? selectorOrCallback : callbackOrNothing; + if (typeof callback != "function") return; + BDFDB.ListenerUtils.remove(plugin, ele, actions, selector); + for (let action of actions.split(" ")) { + action = action.split("."); + let eventName = action.shift().toLowerCase(); + if (!eventName) return; + let origEventName = eventName; + eventName = eventName == "mouseenter" || eventName == "mouseleave" ? "mouseover" : eventName; + let namespace = (action.join(".") || "") + plugin.name; + if (!BDFDB.ArrayUtils.is(plugin.eventListeners)) plugin.eventListeners = []; + let eventCallback = null; + if (selector) { + if (origEventName == "mouseenter" || origEventName == "mouseleave") { + eventCallback = e => { + for (let child of e.path) if (typeof child.matches == "function" && child.matches(selector) && !child[namespace + "BDFDB" + origEventName]) { + child[namespace + "BDFDB" + origEventName] = true; + if (origEventName == "mouseenter") callback(BDFDB.ListenerUtils.copyEvent(e, child)); + let mouseout = e2 => { + if (e2.target.contains(child) || e2.target == child || !child.contains(e2.target)) { + if (origEventName == "mouseleave") callback(BDFDB.ListenerUtils.copyEvent(e, child)); + delete child[namespace + "BDFDB" + origEventName]; + document.removeEventListener("mouseout", mouseout); + } + }; + document.addEventListener("mouseout", mouseout); + break; + } + }; + } + else { + eventCallback = e => { + for (let child of e.path) if (typeof child.matches == "function" && child.matches(selector)) { + callback(BDFDB.ListenerUtils.copyEvent(e, child)); + break; + } + }; + } + } + else eventCallback = e => {callback(BDFDB.ListenerUtils.copyEvent(e, ele));}; + + plugin.eventListeners.push({ele, eventName, origEventName, namespace, selector, eventCallback}); + ele.addEventListener(eventName, eventCallback, true); + } + }; + BDFDB.ListenerUtils.remove = function (plugin, ele, actions = "", selector) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ArrayUtils.is(plugin.eventListeners)) return; + if (!ele) { + while (plugin.eventListeners.length) { + let listener = plugin.eventListeners.pop(); + listener.ele.removeEventListener(listener.eventName, listener.eventCallback, true); + } + } + else if (Node.prototype.isPrototypeOf(ele) || ele === window) { + for (let action of actions.split(" ")) { + action = action.split("."); + let eventName = action.shift().toLowerCase(); + let namespace = (action.join(".") || "") + plugin.name; + for (let listener of plugin.eventListeners) { + let removedListeners = []; + if (listener.ele == ele && (!eventName || listener.origEventName == eventName) && listener.namespace == namespace && (selector === undefined || listener.selector == selector)) { + listener.ele.removeEventListener(listener.eventName, listener.eventCallback, true); + removedListeners.push(listener); + } + if (removedListeners.length) plugin.eventListeners = plugin.eventListeners.filter(listener => !removedListeners.includes(listener)); + } + } + } + }; + BDFDB.ListenerUtils.multiAdd = function (node, actions, callback) { + if (!Node.prototype.isPrototypeOf(node) || !actions || typeof callback != "function") return; + for (let action of actions.trim().split(" ").filter(n => n)) node.addEventListener(action, callback, true); + }; + BDFDB.ListenerUtils.multiRemove = function (node, actions, callback) { + if (!Node.prototype.isPrototypeOf(node) || !actions || typeof callback != "function") return; + for (let action of actions.trim().split(" ").filter(n => n)) node.removeEventListener(action, callback, true); + }; + BDFDB.ListenerUtils.addToChildren = function (node, actions, selector, callback) { + if (!Node.prototype.isPrototypeOf(node) || !actions || !selector || !selector.trim() || typeof callback != "function") return; + for (let action of actions.trim().split(" ").filter(n => n)) { + let eventCallback = callback; + if (action == "mouseenter" || action == "mouseleave") eventCallback = e => {if (e.target.matches(selector)) callback(e);}; + node.querySelectorAll(selector.trim()).forEach(child => {child.addEventListener(action, eventCallback, true);}); + } + }; + BDFDB.ListenerUtils.copyEvent = function (e, ele) { + if (!e || !e.constructor || !e.type) return e; + let eCopy = new e.constructor(e.type, e); + Object.defineProperty(eCopy, "originalEvent", {value: e}); + Object.defineProperty(eCopy, "which", {value: e.which}); + Object.defineProperty(eCopy, "keyCode", {value: e.keyCode}); + Object.defineProperty(eCopy, "path", {value: e.path}); + Object.defineProperty(eCopy, "relatedTarget", {value: e.relatedTarget}); + Object.defineProperty(eCopy, "srcElement", {value: e.srcElement}); + Object.defineProperty(eCopy, "target", {value: e.target}); + Object.defineProperty(eCopy, "toElement", {value: e.toElement}); + if (ele) Object.defineProperty(eCopy, "currentTarget", {value: ele}); + return eCopy; + }; + BDFDB.ListenerUtils.stopEvent = function (e) { + if (BDFDB.ObjectUtils.is(e)) { + if (typeof e.preventDefault == "function") e.preventDefault(); + if (typeof e.stopPropagation == "function") e.stopPropagation(); + if (typeof e.stopImmediatePropagation == "function") e.stopImmediatePropagation(); + if (BDFDB.ObjectUtils.is(e.originalEvent)) { + if (typeof e.originalEvent.preventDefault == "function") e.originalEvent.preventDefault(); + if (typeof e.originalEvent.stopPropagation == "function") e.originalEvent.stopPropagation(); + if (typeof e.originalEvent.stopImmediatePropagation == "function") e.originalEvent.stopImmediatePropagation(); + } + } + }; + + var NotificationBars = [], DesktopNotificationQueue = {queue:[], running:false}; + BDFDB.NotificationUtils = {}; + BDFDB.NotificationUtils.toast = function (text, options = {}) { + let toasts = document.querySelector(".toasts, .bd-toasts"); + if (!toasts) { + let channels = document.querySelector(BDFDB.dotCN.channels + " + div"); + let channelRects = channels ? BDFDB.DOMUtils.getRects(channels) : null; + let members = channels ? channels.querySelector(BDFDB.dotCN.memberswrap) : null; + let left = channelRects ? channelRects.left : 310; + let width = channelRects ? (members ? channelRects.width - BDFDB.DOMUtils.getRects(members).width : channelRects.width) : window.outerWidth - 0; + let form = channels ? channels.querySelector("form") : null; + let bottom = form ? BDFDB.DOMUtils.getRects(form).height : 80; + toasts = BDFDB.DOMUtils.create(`
`); + (document.querySelector(BDFDB.dotCN.app) || document.body).appendChild(toasts); + } + const {type = "", icon = true, timeout = 3000, html = false, selector = "", nopointer = false, color = ""} = options; + let toast = BDFDB.DOMUtils.create(`
${html === true ? text : BDFDB.StringUtils.htmlEscape(text)}
`); + if (type) { + BDFDB.DOMUtils.addClass(toast, "toast-" + type); + if (icon) BDFDB.DOMUtils.addClass(toast, "icon"); + } + else if (color) { + let rgbcolor = BDFDB.ColorUtils.convert(color, "RGB"); + if (rgbcolor) toast.style.setProperty("background-color", rgbcolor); + } + BDFDB.DOMUtils.addClass(toast, selector); + toasts.appendChild(toast); + toast.close = _ => { + if (document.contains(toast)) { + BDFDB.DOMUtils.addClass(toast, "closing"); + toast.style.setProperty("pointer-events", "none", "important"); + BDFDB.TimeUtils.timeout(_ => { + toast.remove(); + if (!toasts.querySelectorAll(".toast, .bd-toast").length) toasts.remove(); + }, 3000); + } + }; + if (nopointer) toast.style.setProperty("pointer-events", "none", "important"); + else toast.addEventListener("click", toast.close); + BDFDB.TimeUtils.timeout(_ => {toast.close();}, timeout > 0 ? timeout : 600000); + return toast; + }; + BDFDB.NotificationUtils.desktop = function (parsedcontent, parsedoptions = {}) { + const queue = _ => { + DesktopNotificationQueue.queue.push({parsedcontent, parsedoptions}); + runqueue(); + }; + const runqueue = _ => { + if (!DesktopNotificationQueue.running) { + let notification = DesktopNotificationQueue.queue.shift(); + if (notification) notify(notification.parsedcontent, notification.parsedoptions); + } + }; + const notify = (content, options) => { + DesktopNotificationQueue.running = true; + let muted = options.silent; + options.silent = options.silent || options.sound ? true : false; + let notification = new Notification(content, options); + let audio = new Audio(); + let timeout = BDFDB.TimeUtils.timeout(_ => {close();}, options.timeout ? options.timeout : 3000); + if (typeof options.click == "function") notification.onclick = _ => { + BDFDB.TimeUtils.clear(timeout); + close(); + options.click(); + }; + if (!muted && options.sound) { + audio.src = options.sound; + audio.play(); + } + const close = _ => { + audio.pause(); + notification.close(); + DesktopNotificationQueue.running = false; + BDFDB.TimeUtils.timeout(_ => {runqueue();}, 1000); + }; + }; + if (!("Notification" in window)) {} + else if (Notification.permission === "granted") queue(); + else if (Notification.permission !== "denied") Notification.requestPermission(function (response) {if (response === "granted") queue();}); + }; + BDFDB.NotificationUtils.notice = function (text, options = {}) { + if (!text) return; + let layers = document.querySelector(BDFDB.dotCN.layers); + if (!layers) return; + let id = BDFDB.NumberUtils.generateId(NotificationBars); + let notice = BDFDB.DOMUtils.create(`
`); + layers.parentElement.insertBefore(notice, layers); + let noticeMessage = notice.querySelector(".notice-message"); + if (options.platform) for (let platform of options.platform.split(" ")) if (DiscordClasses["noticeicon" + platform]) { + let icon = BDFDB.DOMUtils.create(``); + BDFDB.DOMUtils.addClass(icon, BDFDB.disCN.noticeplatformicon); + BDFDB.DOMUtils.removeClass(icon, BDFDB.disCN.noticeicon); + notice.insertBefore(icon, noticeMessage); + } + if (options.customicon) { + let iconinner = BDFDB.DOMUtils.create(options.customicon) + let icon = BDFDB.DOMUtils.create(``); + if (iconinner.tagName == "span" && !iconinner.firstElementChild) icon.style.setProperty("background", `url(${options.customicon}) center/cover no-repeat`); + else icon.appendChild(iconinner); + BDFDB.DOMUtils.addClass(icon, BDFDB.disCN.noticeplatformicon); + BDFDB.DOMUtils.removeClass(icon, BDFDB.disCN.noticeicon); + notice.insertBefore(icon, noticeMessage); + } + if (options.btn || options.button) notice.appendChild(BDFDB.DOMUtils.create(``)); + if (options.id) notice.id = options.id.split(" ").join(""); + if (options.selector) BDFDB.DOMUtils.addClass(notice, options.selector); + if (options.css) BDFDB.DOMUtils.appendLocalStyle("BDFDBcustomNotificationBar" + id, options.css); + if (options.style) notice.style = options.style; + if (options.html === true) noticeMessage.innerHTML = text; + else { + let link = document.createElement("a"); + let newText = []; + for (let word of text.split(" ")) { + let encodedWord = BDFDB.StringUtils.htmlEscape(word); + link.href = word; + newText.push(link.host && link.host !== window.location.host ? `` : encodedWord); + } + noticeMessage.innerHTML = newText.join(" "); + } + let type = null; + if (options.type && !document.querySelector(BDFDB.dotCNS.chatbase + BDFDB.dotCN.noticestreamer)) { + if (type = BDFDB.disCN["notice" + options.type]) BDFDB.DOMUtils.addClass(notice, type); + if (options.type == "premium") { + let noticeButton = notice.querySelector(BDFDB.dotCN.noticebutton); + if (noticeButton) BDFDB.DOMUtils.addClass(noticeButton, BDFDB.disCN.noticepremiumaction); + BDFDB.DOMUtils.addClass(noticeMessage, BDFDB.disCN.noticepremiumtext); + notice.insertBefore(BDFDB.DOMUtils.create(``), noticeMessage); + } + } + if (!type) { + let comp = BDFDB.ColorUtils.convert(options.color, "RGBCOMP"); + if (comp) { + let fontColor = comp[0] > 180 && comp[1] > 180 && comp[2] > 180 ? "#000" : "#FFF"; + let backgroundcolor = BDFDB.ColorUtils.convert(comp, "HEX"); + let filter = comp[0] > 180 && comp[1] > 180 && comp[2] > 180 ? "brightness(0%)" : "brightness(100%)"; + BDFDB.DOMUtils.appendLocalStyle("BDFDBcustomNotificationBarColorCorrection" + id, `${BDFDB.dotCN.noticewrapper}[notice-id="${id}"]{background-color:${backgroundcolor} !important;}${BDFDB.dotCN.noticewrapper}[notice-id="${id}"] .notice-message {color:${fontColor} !important;}${BDFDB.dotCN.noticewrapper}[notice-id="${id}"] ${BDFDB.dotCN.noticebutton} {color:${fontColor} !important;border-color:${BDFDB.ColorUtils.setAlpha(fontColor, 0.25, "RGBA")} !important;}${BDFDB.dotCN.noticewrapper}[notice-id="${id}"] ${BDFDB.dotCN.noticebutton}:hover {color:${backgroundcolor} !important;background-color:${fontColor} !important;}${BDFDB.dotCN.noticewrapper}[notice-id="${id}"] ${BDFDB.dotCN.noticedismiss} {filter:${filter} !important;}`); + } + else BDFDB.DOMUtils.addClass(notice, BDFDB.disCN.noticedefault); + } + notice.style.setProperty("height", "36px", "important"); + notice.style.setProperty("min-width", "70vw", "important"); + notice.style.setProperty("left", "unset", "important"); + notice.style.setProperty("right", "unset", "important"); + let sideMargin = ((BDFDB.DOMUtils.getWidth(document.body.firstElementChild) - BDFDB.DOMUtils.getWidth(notice))/2); + notice.style.setProperty("left", sideMargin + "px", "important"); + notice.style.setProperty("right", sideMargin + "px", "important"); + notice.style.setProperty("min-width", "unset", "important"); + notice.style.setProperty("width", "unset", "important"); + notice.style.setProperty("max-width", "calc(100vw - " + (sideMargin*2) + "px)", "important"); + notice.querySelector(BDFDB.dotCN.noticedismiss).addEventListener("click", _ => { + notice.style.setProperty("overflow", "hidden", "important"); + notice.style.setProperty("height", "0px", "important"); + BDFDB.TimeUtils.timeout(_ => { + BDFDB.ArrayUtils.remove(NotificationBars, id); + BDFDB.DOMUtils.removeLocalStyle("BDFDBcustomNotificationBar" + id); + BDFDB.DOMUtils.removeLocalStyle("BDFDBcustomNotificationBarColorCorrection" + id); + notice.remove(); + }, 500); + }); + return notice; + }; + BDFDB.NotificationUtils.alert = function (header, body) { + if (typeof header == "string" && typeof header == "string" && window.BdApi && typeof BdApi.alert == "function") BdApi.alert(header, body); + }; + + var Tooltips = []; + BDFDB.TooltipUtils = {}; + BDFDB.TooltipUtils.create = function (anker, text, options = {}) { + let itemLayerContainer = document.querySelector(BDFDB.dotCN.appmount + " > " + BDFDB.dotCN.itemlayercontainer); + if (!itemLayerContainer || (typeof text != "string" && !BDFDB.ObjectUtils.is(options.guild)) || !Node.prototype.isPrototypeOf(anker) || !document.contains(anker)) return null; + let id = BDFDB.NumberUtils.generateId(Tooltips); + let itemLayer = BDFDB.DOMUtils.create(`
`); + itemLayerContainer.appendChild(itemLayer); + + let tooltip = itemLayer.firstElementChild; + let tooltipContent = itemLayer.querySelector(BDFDB.dotCN.tooltipcontent); + let tooltipPointer = itemLayer.querySelector(BDFDB.dotCN.tooltippointer); + + if (options.id) tooltip.id = options.id.split(" ").join(""); + + if (typeof options.type != "string" || !BDFDB.disCN["tooltip" + options.type.toLowerCase()]) options.type = "top"; + let type = options.type.toLowerCase(); + BDFDB.DOMUtils.addClass(tooltip, BDFDB.disCN["tooltip" + type]); + + let fontColorIsGradient = false, customBackgroundColor = false, style = ""; + if (options.style) style += options.style; + if (options.fontColor) { + fontColorIsGradient = BDFDB.ObjectUtils.is(options.fontColor); + if (!fontColorIsGradient) style = (style ? (style + " ") : "") + `color: ${BDFDB.ColorUtils.convert(options.fontColor, "RGBA")} !important;` + } + if (options.backgroundColor) { + customBackgroundColor = true; + let backgroundColorIsGradient = BDFDB.ObjectUtils.is(options.backgroundColor); + let backgroundColor = !backgroundColorIsGradient ? BDFDB.ColorUtils.convert(options.backgroundColor, "RGBA") : BDFDB.ColorUtils.createGradient(options.backgroundColor); + style = (style ? (style + " ") : "") + `background: ${backgroundColor} !important; border-color: ${backgroundColorIsGradient ? BDFDB.ColorUtils.convert(options.backgroundColor[type == "left" ? 100 : 0], "RGBA") : backgroundColor} !important;`; + } + if (style) tooltip.style = style; + if (typeof options.zIndex == "number") { + itemLayer.style.setProperty("z-index", options.zIndex, "important"); + tooltip.style.setProperty("z-index", options.zIndex, "important"); + } + if (customBackgroundColor) BDFDB.DOMUtils.addClass(tooltip, BDFDB.disCN.tooltipcustom); + else if (options.color && BDFDB.disCN["tooltip" + options.color.toLowerCase()]) BDFDB.DOMUtils.addClass(tooltip, BDFDB.disCN["tooltip" + options.color.toLowerCase()]); + else BDFDB.DOMUtils.addClass(tooltip, BDFDB.disCN.tooltipblack); + + if (options.list || BDFDB.ObjectUtils.is(options.guild)) BDFDB.DOMUtils.addClass(tooltip, BDFDB.disCN.tooltiplistitem); + + if (options.selector) BDFDB.DOMUtils.addClass(tooltip, options.selector); + + if (BDFDB.ObjectUtils.is(options.guild)) { + let streamOwnerIds = LibraryModules.StreamUtils.getAllApplicationStreams().filter(app => app.guildId === options.guild.id).map(app => app.ownerId); + let streamOwners = streamOwnerIds.map(ownerId => LibraryModules.UserStore.getUser(ownerId)).filter(n => n); + let connectedUsers = Object.keys(LibraryModules.VoiceUtils.getVoiceStates(options.guild.id)).map(userId => !streamOwnerIds.includes(userId) && BDFDB.LibraryModules.UserStore.getUser(userId)).filter(n => n); + let tooltipText = text || options.guild.toString(); + if (fontColorIsGradient) tooltipText = `${BDFDB.StringUtils.htmlEscape(tooltipText)}`; + BDFDB.ReactUtils.render(BDFDB.ReactUtils.createElement(BDFDB.ReactUtils.Fragment, { + children: [ + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tooltiprow, BDFDB.disCN.tooltiprowguildname), + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.GuildComponents.Badge, { + guild: options.guild, + size: LibraryModules.StringUtils.cssValueToNumber(DiscordClassModules.TooltipGuild.iconSize), + className: BDFDB.disCN.tooltiprowicon + }), + BDFDB.ReactUtils.createElement("span", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tooltipguildnametext, (connectedUsers.length || streamOwners.length) && BDFDB.disCN.tooltipguildnametextlimitedsize), + children: fontColorIsGradient || options.html ? BDFDB.ReactUtils.elementToReact(BDFDB.DOMUtils.create(tooltipText)) : tooltipText + }) + ] + }), + connectedUsers.length ? BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.tooltiprow, + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, { + name: InternalComponents.LibraryComponents.SvgIcon.Names.SPEAKER, + className: BDFDB.disCN.tooltipactivityicon + }), + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.UserSummaryItem, { + users: connectedUsers, + max: 6 + }) + ] + }) : null, + streamOwners.length ? BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.tooltiprow, + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, { + name: InternalComponents.LibraryComponents.SvgIcon.Names.STREAM, + className: BDFDB.disCN.tooltipactivityicon + }), + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.UserSummaryItem, { + users: streamOwners, + max: 6 + }) + ] + }) : null + ].filter(n => n) + }), tooltipContent); + } + else { + if (fontColorIsGradient) tooltipContent.innerHTML = `${BDFDB.StringUtils.htmlEscape(text)}`; + else if (options.html === true) tooltipContent.innerHTML = text; + else tooltipContent.innerText = text; + } + + if (options.hide) BDFDB.DOMUtils.appendLocalStyle("BDFDBhideOtherTooltips" + id, `#app-mount ${BDFDB.dotCN.tooltip}:not([tooltip-id="${id}"]) {display: none !important;}`, itemLayerContainer); + + let mouseLeave = _ => {BDFDB.DOMUtils.remove(itemLayer);}; + if (!options.perssist) anker.addEventListener("mouseleave", mouseLeave); + + let observer = new MutationObserver(changes => changes.forEach(change => { + let nodes = Array.from(change.removedNodes); + if (nodes.indexOf(itemLayer) > -1 || nodes.indexOf(anker) > -1 || nodes.some(n => n.contains(anker))) { + BDFDB.ArrayUtils.remove(Tooltips, id); + observer.disconnect(); + BDFDB.DOMUtils.remove(itemLayer); + BDFDB.DOMUtils.removeLocalStyle("BDFDBhideOtherTooltips" + id, itemLayerContainer); + anker.removeEventListener("mouseleave", mouseLeave); + } + })); + observer.observe(document.body, {subtree:true, childList:true}); + + (tooltip.update = itemLayer.update = _ => { + let left, top, tRects = BDFDB.DOMUtils.getRects(anker), iRects = BDFDB.DOMUtils.getRects(itemLayer), aRects = BDFDB.DOMUtils.getRects(document.querySelector(BDFDB.dotCN.appmount)), positionOffsets = {height: 10, width: 10}, offset = typeof options.offset == "number" ? options.offset : 0; + switch (type) { + case "top": + top = tRects.top - iRects.height - positionOffsets.height + 2 - offset; + left = tRects.left + (tRects.width - iRects.width) / 2; + break; + case "bottom": + top = tRects.top + tRects.height + positionOffsets.height - 2 + offset; + left = tRects.left + (tRects.width - iRects.width) / 2; + break; + case "left": + top = tRects.top + (tRects.height - iRects.height) / 2; + left = tRects.left - iRects.width - positionOffsets.width + 2 - offset; + break; + case "right": + top = tRects.top + (tRects.height - iRects.height) / 2; + left = tRects.left + tRects.width + positionOffsets.width - 2 + offset; + break; + } + + itemLayer.style.setProperty("top", top + "px"); + itemLayer.style.setProperty("left", left + "px"); + + tooltipPointer.style.removeProperty("margin-left"); + tooltipPointer.style.removeProperty("margin-top"); + if (type == "top" || type == "bottom") { + if (left < 0) { + itemLayer.style.setProperty("left", "5px"); + tooltipPointer.style.setProperty("margin-left", `${left - 10}px`); + } + else { + let rightMargin = aRects.width - (left + iRects.width); + if (rightMargin < 0) { + itemLayer.style.setProperty("left", (aRects.width - iRects.width - 5) + "px"); + tooltipPointer.style.setProperty("margin-left", `${-1*rightMargin}px`); + } + } + } + else if (type == "left" || type == "right") { + if (top < 0) { + itemLayer.style.setProperty("top", "5px"); + tooltipPointer.style.setProperty("margin-top", `${top - 10}px`); + } + else { + let bottomMargin = aRects.height - (top + iRects.height); + if (bottomMargin < 0) { + itemLayer.style.setProperty("top", aRects.height - iRects.height - 5 + "px"); + tooltipPointer.style.setProperty("margin-top", `${-1*bottomMargin}px`); + } + } + } + })(); + + if (options.delay) { + BDFDB.DOMUtils.toggle(itemLayer); + BDFDB.TimeUtils.timeout(_ => {BDFDB.DOMUtils.toggle(itemLayer);}, options.delay); + } + return itemLayer; + }; + + BDFDB.ObjectUtils = {}; + BDFDB.ObjectUtils.is = function (obj) { + return obj && Object.prototype.isPrototypeOf(obj) && !Array.prototype.isPrototypeOf(obj); + }; + BDFDB.ObjectUtils.extract = function (obj, ...keys) { + let newObj = {}; + if (BDFDB.ObjectUtils.is(obj)) for (let key of keys.flat(10).filter(n => n)) if (obj[key]) newObj[key] = obj[key]; + return newObj; + }; + BDFDB.ObjectUtils.exclude = function (obj, ...keys) { + let newObj = Object.assign({}, obj); + BDFDB.ObjectUtils.delete(newObj, ...keys) + return newObj; + }; + BDFDB.ObjectUtils.delete = function (obj, ...keys) { + if (BDFDB.ObjectUtils.is(obj)) for (let key of keys.flat(10).filter(n => n)) delete obj[key]; + }; + BDFDB.ObjectUtils.sort = function (obj, sort, except) { + if (!BDFDB.ObjectUtils.is(obj)) return {}; + let newObj = {}; + if (sort === undefined || !sort) for (let key of Object.keys(obj).sort()) newObj[key] = obj[key]; + else { + let values = []; + for (let key in obj) values.push(obj[key]); + values = BDFDB.ArrayUtils.keySort(values, sort, except); + for (let value of values) for (let key in obj) if (BDFDB.equals(value, obj[key])) { + newObj[key] = value; + break; + } + } + return newObj; + }; + BDFDB.ObjectUtils.reverse = function (obj, sort) { + if (!BDFDB.ObjectUtils.is(obj)) return {}; + let newObj = {}; + for (let key of (sort === undefined || !sort) ? Object.keys(obj).reverse() : Object.keys(obj).sort().reverse()) newObj[key] = obj[key]; + return newObj; + }; + BDFDB.ObjectUtils.filter = function (obj, filter, byKey = false) { + if (!BDFDB.ObjectUtils.is(obj)) return {}; + if (typeof filter != "function") return obj; + return Object.keys(obj).filter(key => filter(byKey ? key : obj[key])).reduce((newObj, key) => (newObj[key] = obj[key], newObj), {}); + }; + BDFDB.ObjectUtils.push = function (obj, value) { + if (BDFDB.ObjectUtils.is(obj)) obj[Object.keys(obj).length] = value; + }; + BDFDB.ObjectUtils.pop = function (obj, value) { + if (BDFDB.ObjectUtils.is(obj)) { + let keys = Object.keys(obj); + if (!keys.length) return; + let value = obj[keys[keys.length-1]]; + delete obj[keys[keys.length-1]]; + return value; + } + }; + BDFDB.ObjectUtils.map = function (obj, mapfunc) { + if (!BDFDB.ObjectUtils.is(obj)) return {}; + if (typeof mapfunc != "string" && typeof mapfunc != "function") return obj; + let newObj = {}; + for (let key in obj) if (BDFDB.ObjectUtils.is(obj[key])) newObj[key] = typeof mapfunc == "string" ? obj[key][mapfunc] : mapfunc(obj[key], key); + return newObj; + }; + BDFDB.ObjectUtils.toArray = function (obj) { + if (!BDFDB.ObjectUtils.is(obj)) return []; + return Object.entries(obj).map(n => n[1]); + }; + BDFDB.ObjectUtils.deepAssign = function (obj, ...objs) { + if (!objs.length) return obj; + let nextObj = objs.shift(); + if (BDFDB.ObjectUtils.is(obj) && BDFDB.ObjectUtils.is(nextObj)) { + for (let key in nextObj) { + if (BDFDB.ObjectUtils.is(nextObj[key])) { + if (!obj[key]) Object.assign(obj, {[key]:{}}); + BDFDB.ObjectUtils.deepAssign(obj[key], nextObj[key]); + } + else Object.assign(obj, {[key]:nextObj[key]}); + } + } + return BDFDB.ObjectUtils.deepAssign(obj, ...objs); + }; + BDFDB.ObjectUtils.isEmpty = function (obj) { + return !BDFDB.ObjectUtils.is(obj) || Object.getOwnPropertyNames(obj).length == 0; + }; + + BDFDB.ArrayUtils = {}; + BDFDB.ArrayUtils.is = function (array) { + return array && Array.isArray(array); + }; + BDFDB.ArrayUtils.sum = function (array) { + return Array.isArray(array) ? array.reduce((total, num) => total + Math.round(num), 0) : 0; + }; + BDFDB.ArrayUtils.keySort = function (array, key, except) { + if (!BDFDB.ArrayUtils.is(array)) return []; + if (key == null) return array; + if (except === undefined) except = null; + return array.sort((x, y) => { + let xValue = x[key], yValue = y[key]; + if (xValue !== except) return xValue < yValue ? -1 : xValue > yValue ? 1 : 0; + }); + }; + BDFDB.ArrayUtils.numSort = function (array) { + return array.sort((x, y) => (x < y ? -1 : x > y ? 1 : 0)); + }; + BDFDB.ArrayUtils.includes = function (array, ...values) { + if (!BDFDB.ArrayUtils.is(array)) return null; + if (!array.length) return false; + let all = values.pop(); + if (typeof all != "boolean") { + values.push(all); + all = true; + } + if (!values.length) return false; + let contained = undefined; + for (let v of values) { + if (contained === undefined) contained = all; + if (all && !array.includes(v)) contained = false; + if (!all && array.includes(v)) contained = true; + } + return contained; + }; + BDFDB.ArrayUtils.remove = function (array, value, all = false) { + if (!BDFDB.ArrayUtils.is(array)) return []; + if (!array.includes(value)) return array; + if (!all) array.splice(array.indexOf(value), 1); + else while (array.indexOf(value) > -1) array.splice(array.indexOf(value), 1); + return array; + }; + BDFDB.ArrayUtils.getAllIndexes = function (array, value) { + if (!BDFDB.ArrayUtils.is(array) && typeof array != "string") return []; + var indexes = [], index = -1; + while ((index = array.indexOf(value, index + 1)) !== -1) indexes.push(index); + return indexes; + }; + BDFDB.ArrayUtils.removeCopies = function (array) { + if (!BDFDB.ArrayUtils.is(array)) return []; + return [...new Set(array)]; + }; + + BDFDB.ModuleUtils = {}; + BDFDB.ModuleUtils.cached = window.BDFDB && window.BDFDB.ModuleUtils && window.BDFDB.ModuleUtils.cached || {}; + BDFDB.ModuleUtils.find = function (filter, getExport) { + getExport = typeof getExport != "boolean" ? true : getExport; + let req = InternalBDFDB.getWebModuleReq(); + for (let i in req.c) if (req.c.hasOwnProperty(i)) { + let m = req.c[i].exports; + if (m && (typeof m == "object" || typeof m == "function") && filter(m)) return getExport ? m : req.c[i]; + if (m && m.__esModule) { + for (let j in m) if (m[j] && (typeof m[j] == "object" || typeof m[j] == "function") && filter(m[j])) return getExport ? m[j] : req.c[i]; + if (m.default && (typeof m.default == "object" || typeof m.default == "function")) for (let j in m.default) if (m.default[j] && (typeof m.default[j] == "object" || typeof m.default[j] == "function") && filter(m.default[j])) return getExport ? m.default[j] : req.c[i]; + } + } + for (let i in req.m) if (req.m.hasOwnProperty(i)) { + let m = req.m[i]; + if (m && typeof m == "function" && filter(m)) { + if (req.c[i]) return getExport ? req.c[i].exports : req.c[i]; + else { + let resolved = {}; + req.m[i](resolved, null, req); + return getExport ? resolved.exports : resolved; + } + } + } + }; + BDFDB.ModuleUtils.findByProperties = function (...properties) { + properties = properties.flat(10); + let getExport = properties.pop(); + if (typeof getExport != "boolean") { + properties.push(getExport); + getExport = true; + } + return InternalBDFDB.findModule("prop", JSON.stringify(properties), m => properties.every(prop => m[prop] !== undefined), getExport); + }; + BDFDB.ModuleUtils.findByName = function (name, getExport) { + return InternalBDFDB.findModule("name", JSON.stringify(name), m => m.displayName === name || m.render && m.render.displayName === name, typeof getExport != "boolean" ? true : getExport); + }; + BDFDB.ModuleUtils.findByString = function (...strings) { + strings = strings.flat(10); + let getExport = strings.pop(); + if (typeof getExport != "boolean") { + strings.push(getExport); + getExport = true; + } + return InternalBDFDB.findModule("string", JSON.stringify(strings), m => strings.every(string => typeof m == "function" && (m.toString().indexOf(string) > -1 || typeof m.__originalMethod == "function" && m.__originalMethod.toString().indexOf(string) > -1 || typeof m.__originalFunction == "function" && m.__originalFunction.toString().indexOf(string) > -1) || BDFDB.ObjectUtils.is(m) && typeof m.type == "function" && m.type.toString().indexOf(string) > -1), getExport); + }; + BDFDB.ModuleUtils.findByPrototypes = function (...protoprops) { + protoprops = protoprops.flat(10); + let getExport = protoprops.pop(); + if (typeof getExport != "boolean") { + protoprops.push(getExport); + getExport = true; + } + return InternalBDFDB.findModule("proto", JSON.stringify(protoprops), m => m.prototype && protoprops.every(prop => m.prototype[prop] !== undefined), getExport); + }; + InternalBDFDB.findModule = function (type, cachestring, filter, getExport) { + if (!BDFDB.ObjectUtils.is(BDFDB.ModuleUtils.cached[type])) BDFDB.ModuleUtils.cached[type] = {module:{}, export:{}}; + if (getExport && BDFDB.ModuleUtils.cached[type].export[cachestring]) return BDFDB.ModuleUtils.cached[type].export[cachestring]; + else if (!getExport && BDFDB.ModuleUtils.cached[type].module[cachestring]) return BDFDB.ModuleUtils.cached[type].module[cachestring]; + else { + let m = BDFDB.ModuleUtils.find(filter, getExport); + if (m) { + if (getExport) BDFDB.ModuleUtils.cached[type].export[cachestring] = m; + else BDFDB.ModuleUtils.cached[type].module[cachestring] = m; + return m; + } + else BDFDB.LogUtils.warn(`${cachestring} [${type}] not found in WebModules`); + } + }; + InternalBDFDB.getWebModuleReq = function () { + if (!InternalBDFDB.getWebModuleReq.req) { + const id = "BDFDB-WebModules"; + const req = window.webpackJsonp.push([[], {[id]: (module, exports, req) => module.exports = req}, [[id]]]); + delete req.m[id]; + delete req.c[id]; + InternalBDFDB.getWebModuleReq.req = req; + } + return InternalBDFDB.getWebModuleReq.req; + }; + + var WebModulesData = {}; + WebModulesData.PatchTypes = ["before", "instead", "after"]; + WebModulesData.PatchMap = { + BannedCard: "BannedUser", + ChannelWindow: "Channel", + InvitationCard: "InviteRow", + InviteCard: "InviteRow", + MemberCard: "Member", + PopoutContainer: "Popout", + QuickSwitchResult: "Result", + UserProfile: "UserProfileBody" + }; + WebModulesData.ForceObserve = [ + "DirectMessage", + "GuildIcon" + ]; + WebModulesData.MemoComponent = [ + "EmojiPicker", + "ExpressionPicker", + "GuildFolder", + "MessageContent", + "NowPlayingHeader" + ]; + WebModulesData.NonRender = BDFDB.ArrayUtils.removeCopies([].concat(WebModulesData.MemoComponent, [ + "Attachment", + "ChannelCallHeader", + "ConnectedPrivateChannelsList", + "DiscordTag", + "IncomingCallModal", + "InviteModalUserRow", + "Mention", + "Menu", + "MenuCheckboxItem", + "MenuControlItem", + "MenuItem", + "Message", + "MessageTimestamp", + "NameTag", + "NowPlayingItem", + "PictureInPictureVideo", + "PrivateChannelEmptyMessage", + "RecentsChannelHeader", + "RecentsHeader", + "SystemMessage", + "SimpleMessageAccessories", + "UnreadMessages", + "UserInfo", + "WebhookCard" + ])); + WebModulesData.LoadedInComponents = { + AutocompleteChannelResult: "LibraryComponents.AutocompleteItems.Channel", + AutocompleteUserResult: "LibraryComponents.AutocompleteItems.User", + QuickSwitchChannelResult: "LibraryComponents.QuickSwitchItems.Channel", + QuickSwitchGroupDMResult: "LibraryComponents.QuickSwitchItems.GroupDM", + QuickSwitchGuildResult: "LibraryComponents.QuickSwitchItems.Guild", + QuickSwitchUserResult: "LibraryComponents.QuickSwitchItems.User" + }; + WebModulesData.SpecialFilter = { + V2C_ContentColumn: ins => ins && ins.return && ins.return.stateNode && ins.return.stateNode.props && typeof ins.return.stateNode.props.title == "string" && (ins.return.stateNode.props.title.toUpperCase().indexOf("PLUGINS") == 0 || ins.return.stateNode.props.title.toUpperCase().indexOf("THEMES") == 0) && ins.return.type, + GuildFolder: ins => ins && ins.return && ins.return.memoizedProps && ins.return.memoizedProps.folderId && ins.return.memoizedProps.guildIds && ins.return.type + }; + WebModulesData.PatchFinder = { + Account: "accountinfo", + App: "app", + AppSkeleton: "app", + AppView: "appcontainer", + AuthWrapper: "loginscreen", + BannedCard: "guildsettingsbannedcard", + Category: "categorycontainerdefault", + ChannelCall: "callcurrentcontainer", + ChannelMember: "member", + Channels: "guildchannels", + ChannelTextAreaForm: "chatform", + ChannelWindow: "chatcontent", + DirectMessage: "guildouter", + Guild: "guildouter", + GuildFolder: "guildfolderwrapper", + GuildIcon: "avataricon", + GuildRoleSettings: "settingswindowcontent", + Guilds: "guildswrapper", + GuildSettings: "layer", + GuildSettingsBans: "guildsettingsbannedcard", + GuildSettingsEmoji: "guildsettingsemojicard", + GuildSettingsMembers: "guildsettingsmembercard", + GuildSidebar: "guildchannels", + I18nLoaderWrapper: "app", + InstantInviteModal: "invitemodalwrapper", + InvitationCard: "invitemodalinviterow", + InviteCard: "guildsettingsinvitecard", + MemberCard: "guildsettingsmembercard", + Messages: "messages", + MessagesPopout: "messagespopout", + ModalLayer: "layermodal", + MutualGuilds: "userprofilebody", + MutualFriends: "userprofilebody", + Note: "usernotetextarea", + PopoutContainer: "popout", + Popouts: "popouts", + PrivateChannelCall: "callcurrentcontainer", + PrivateChannelCallParticipants: "callcurrentcontainer", + PrivateChannelRecipientsInvitePopout: "searchpopoutdmaddpopout", + PrivateChannelsList: "dmchannelsscroller", + QuickSwitchChannelResult: "quickswitchresult", + QuickSwitchGuildResult: "quickswitchresult", + QuickSwitchResult: "quickswitchresult", + Reaction: "messagereactionme", + Reactor: "messagereactionsmodalreactor", + RTCConnection: "voicedetails", + SearchResults: "searchresultswrap", + TypingUsers: "typing", + UnreadDMs: "guildsscroller", + Upload: "uploadmodal", + UserHook: "auditloguserhook", + UserPopout: "userpopout", + UserProfile: "userprofile", + V2C_ContentColumn: "settingswindowcontentcolumn" + }; + WebModulesData.CodeFinder = { + EmojiPicker: ["allowManagedEmojis", "EMOJI_PICKER_TAB_PANEL_ID", "diversitySelector"], + SearchResultsInner: ["SEARCH_HIDE_BLOCKED_MESSAGES", "totalResults", "SEARCH_PAGE_SIZE"] + }; + WebModulesData.PropsFinder = { + Avatar: "AnimatedAvatar", + MessageHeader: "MessageTimestamp", + UnavailableGuildsButton: "UnavailableGuildsButton" + }; + WebModulesData.NonPrototype = BDFDB.ArrayUtils.removeCopies([].concat(WebModulesData.NonRender, Object.keys(WebModulesData.CodeFinder), Object.keys(WebModulesData.PropsFinder), [ + "ChannelTextAreaContainer" + ])); + + BDFDB.ModuleUtils.isPatched = function (plugin, module, methodName) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!plugin || !BDFDB.ObjectUtils.is(module) || !module.BDFDBpatch || !methodName) return false; + const pluginId = (typeof plugin === "string" ? plugin : plugin.name).toLowerCase(); + return pluginId && module[methodName] && module[methodName].__isBDFDBpatched && module.BDFDBpatch[methodName] && BDFDB.ObjectUtils.toArray(module.BDFDBpatch[methodName]).some(patchObj => BDFDB.ObjectUtils.toArray(patchObj).some(priorityObj => Object.keys(priorityObj).includes(pluginId))); + }; + BDFDB.ModuleUtils.patch = function (plugin, module, methodNames, patchMethods, config = {}) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!plugin || !BDFDB.ObjectUtils.is(module) || !methodNames || !BDFDB.ObjectUtils.is(patchMethods)) return null; + patchMethods = BDFDB.ObjectUtils.filter(patchMethods, type => WebModulesData.PatchTypes.includes(type), true); + if (BDFDB.ObjectUtils.isEmpty(patchMethods)) return null; + const pluginName = typeof plugin === "string" ? plugin : plugin.name; + const pluginId = pluginName.toLowerCase(); + const patchPriority = BDFDB.ObjectUtils.is(plugin) && !isNaN(plugin.patchPriority) ? (plugin.patchPriority < 0 ? 0 : (plugin.patchPriority > 10 ? 10 : Math.round(plugin.patchPriority))) : 5; + if (!BDFDB.ObjectUtils.is(module.BDFDBpatch)) module.BDFDBpatch = {}; + methodNames = [methodNames].flat(10).filter(n => n); + let cancel = _ => {BDFDB.ModuleUtils.unpatch(plugin, module, methodNames);}; + for (let methodName of methodNames) if (module[methodName] == null || typeof module[methodName] == "function") { + if (!module.BDFDBpatch[methodName] || config.force && (!module[methodName] || !module[methodName].__isBDFDBpatched)) { + if (!module.BDFDBpatch[methodName]) { + module.BDFDBpatch[methodName] = {}; + for (let type of WebModulesData.PatchTypes) module.BDFDBpatch[methodName][type] = {}; + } + if (!module[methodName]) module[methodName] = (_ => {}); + const originalMethod = module[methodName]; + module.BDFDBpatch[methodName].originalMethod = originalMethod; + module[methodName] = function () { + let callInstead = false, stopCall = false; + const data = { + thisObject: this, + methodArguments: arguments, + originalMethod: originalMethod, + originalMethodName: methodName, + callOriginalMethod: _ => {if (!stopCall) data.returnValue = data.originalMethod.apply(data.thisObject, data.methodArguments)}, + callOriginalMethodAfterwards: _ => {callInstead = true;}, + stopOriginalMethodCall: _ => {stopCall = true;} + }; + if (module.BDFDBpatch && module.BDFDBpatch[methodName]) { + for (let priority in module.BDFDBpatch[methodName].before) for (let id in BDFDB.ObjectUtils.sort(module.BDFDBpatch[methodName].before[priority])) { + BDFDB.TimeUtils.suppress(module.BDFDBpatch[methodName].before[priority][id], `"before" callback of ${methodName} in ${module.constructor ? (module.constructor.displayName || module.constructor.name) : "module"}`, module.BDFDBpatch[methodName].before[priority][id].pluginName)(data); + } + + if (!module.BDFDBpatch || !module.BDFDBpatch[methodName]) return methodName == "render" && data.returnValue === undefined ? null : data.returnValue; + let hasInsteadPatches = BDFDB.ObjectUtils.toArray(module.BDFDBpatch[methodName].instead).some(priorityObj => !BDFDB.ObjectUtils.isEmpty(priorityObj)); + if (hasInsteadPatches) for (let priority in module.BDFDBpatch[methodName].instead) for (let id in BDFDB.ObjectUtils.sort(module.BDFDBpatch[methodName].instead[priority])) { + let tempReturn = BDFDB.TimeUtils.suppress(module.BDFDBpatch[methodName].instead[priority][id], `"instead" callback of ${methodName} in ${module.constructor ? (module.constructor.displayName || module.constructor.name) : "module"}`, module.BDFDBpatch[methodName].instead[priority][id].pluginName)(data); + if (tempReturn !== undefined) data.returnValue = tempReturn; + } + if ((!hasInsteadPatches || callInstead) && !stopCall) BDFDB.TimeUtils.suppress(data.callOriginalMethod, `originalMethod of ${methodName} in ${module.constructor ? (module.constructor.displayName || module.constructor.name) : "module"}`)(); + + if (!module.BDFDBpatch || !module.BDFDBpatch[methodName]) return methodName == "render" && data.returnValue === undefined ? null : data.returnValue; + for (let priority in module.BDFDBpatch[methodName].after) for (let id in BDFDB.ObjectUtils.sort(module.BDFDBpatch[methodName].after[priority])) { + let tempReturn = BDFDB.TimeUtils.suppress(module.BDFDBpatch[methodName].after[priority][id], `"after" callback of ${methodName} in ${module.constructor ? (module.constructor.displayName || module.constructor.name) : "module"}`, module.BDFDBpatch[methodName].after[priority][id].pluginName)(data); + if (tempReturn !== undefined) data.returnValue = tempReturn; + } + } + else BDFDB.TimeUtils.suppress(data.callOriginalMethod, `originalMethod of ${methodName} in ${module.constructor ? module.constructor.displayName || module.constructor.name : "module"}`)(); + callInstead = false, stopCall = false; + return methodName == "render" && data.returnValue === undefined ? null : data.returnValue; + }; + for (let key of Object.keys(originalMethod)) module[methodName][key] = originalMethod[key]; + if (!module[methodName].__originalFunction) { + let realOriginalMethod = originalMethod.__originalMethod || originalMethod.__originalFunction || originalMethod; + if (typeof realOriginalMethod == "function") { + module[methodName].__originalFunction = realOriginalMethod; + module[methodName].toString = _ => realOriginalMethod.toString(); + } + } + module[methodName].__isBDFDBpatched = true; + } + for (let type in patchMethods) if (typeof patchMethods[type] == "function") { + if (!BDFDB.ObjectUtils.is(module.BDFDBpatch[methodName][type][patchPriority])) module.BDFDBpatch[methodName][type][patchPriority] = {}; + module.BDFDBpatch[methodName][type][patchPriority][pluginId] = (...args) => { + if (config.once || !plugin.started) cancel(); + return patchMethods[type](...args); + }; + module.BDFDBpatch[methodName][type][patchPriority][pluginId].pluginName = pluginName; + } + } + if (BDFDB.ObjectUtils.is(plugin) && !config.once && !config.noCache) { + if (!BDFDB.ArrayUtils.is(plugin.patchCancels)) plugin.patchCancels = []; + plugin.patchCancels.push(cancel); + } + return cancel; + }; + BDFDB.ModuleUtils.unpatch = function (plugin, module, methodNames) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!module && !methodNames) { + if (BDFDB.ObjectUtils.is(plugin) && BDFDB.ArrayUtils.is(plugin.patchCancels)) while (plugin.patchCancels.length) (plugin.patchCancels.pop())(); + } + else { + if (!BDFDB.ObjectUtils.is(module) || !module.BDFDBpatch) return; + const pluginId = !plugin ? null : (typeof plugin === "string" ? plugin : plugin.name).toLowerCase(); + if (methodNames) { + for (let methodName of [methodNames].flat(10).filter(n => n)) if (module[methodName] && module.BDFDBpatch[methodName]) unpatch(methodName, pluginId); + } + else for (let patchedMethod of module.BDFDBpatch) unpatch(patchedMethod, pluginId); + } + function unpatch (funcName, pluginId) { + for (let type of WebModulesData.PatchTypes) { + if (pluginId) for (let priority in module.BDFDBpatch[funcName][type]) { + delete module.BDFDBpatch[funcName][type][priority][pluginId]; + if (BDFDB.ObjectUtils.isEmpty(module.BDFDBpatch[funcName][type][priority])) delete module.BDFDBpatch[funcName][type][priority]; + } + else delete module.BDFDBpatch[funcName][type]; + } + if (BDFDB.ObjectUtils.isEmpty(BDFDB.ObjectUtils.filter(module.BDFDBpatch[funcName], key => WebModulesData.PatchTypes.includes(key) && !BDFDB.ObjectUtils.isEmpty(module.BDFDBpatch[funcName][key]), true))) { + module[funcName] = module.BDFDBpatch[funcName].originalMethod; + delete module.BDFDBpatch[funcName]; + if (BDFDB.ObjectUtils.isEmpty(module.BDFDBpatch)) delete module.BDFDBpatch; + } + } + }; + BDFDB.ModuleUtils.forceAllUpdates = function (plugins, selectedTypes) { + plugins = [plugins].flat(10).map(n => n == BDFDB && InternalBDFDB || n).filter(n => BDFDB.ObjectUtils.is(n.patchedModules)); + if (plugins.length) { + const app = document.querySelector(BDFDB.dotCN.app); + const bdSettings = document.querySelector("#bd-settingspane-container > *"); + if (app) { + selectedTypes = [selectedTypes].flat(10).filter(n => n).map(type => type && WebModulesData.PatchMap[type] ? WebModulesData.PatchMap[type] + " _ _ " + type : type); + let updateData = {}; + for (let plugin of plugins) { + updateData[plugin.name] = { + filteredModules: [], + specialModules: [], + specialModuleTypes: [], + patchTypes: {} + }; + for (let patchType in plugin.patchedModules) for (let type in plugin.patchedModules[patchType]) { + let methodNames = [plugin.patchedModules[patchType][type]].flat(10).filter(n => n); + if (BDFDB.ArrayUtils.includes(methodNames, "componentDidMount", "componentDidUpdate", "render", false) && (!selectedTypes.length || selectedTypes.includes(type))) { + let unmappedType = type.split(" _ _ ")[1] || type; + let filter = WebModulesData.SpecialFilter[unmappedType]; + let selector = [WebModulesData.PatchFinder[unmappedType]].flat(10).filter(n => DiscordClasses[n]).map(n => BDFDB.dotCN[n]).join(", "); + if (selector && typeof filter == "function") { + for (let ele of document.querySelectorAll(selector)) { + let constro = filter(BDFDB.ReactUtils.getInstance(ele)); + if (constro) { + updateData[plugin.name].specialModules.push([type, constro]); + updateData[plugin.name].specialModuleTypes.push(type); + break; + } + } + } + else updateData[plugin.name].filteredModules.push(type); + let name = type.split(" _ _ ")[0]; + if (!updateData[plugin.name].patchTypes[name]) updateData[plugin.name].patchTypes[name] = []; + updateData[plugin.name].patchTypes[name].push(patchType); + } + } + } + let updateDataArray = BDFDB.ObjectUtils.toArray(updateData); + if (BDFDB.ArrayUtils.sum(updateDataArray.map(n => n.filteredModules.length + n.specialModules.length))) { + try { + let filteredModules = BDFDB.ArrayUtils.removeCopies(updateDataArray.map(n => n.filteredModules).flat(10)); + let specialModules = BDFDB.ArrayUtils.removeCopies(updateDataArray.map(n => n.specialModules).flat(10)); + const appInsDown = BDFDB.ReactUtils.findOwner(app, {name:filteredModules, type:specialModules, all:true, group:true, unlimited:true}); + const appInsUp = BDFDB.ReactUtils.findOwner(app, {name:filteredModules, type:specialModules, all:true, group:true, unlimited:true, up:true}); + for (let type in appInsDown) { + let filteredPlugins = plugins.filter(n => updateData[n.name].filteredModules.includes(type) || updateData[n.name].specialModuleTypes.includes(type)).map(n => ({plugin:n, patchTypes:updateData[n.name].patchTypes})); + for (let ins of appInsDown[type]) InternalBDFDB.forceInitiateProcess(filteredPlugins, ins, type); + } + for (let type in appInsUp) { + let filteredPlugins = plugins.filter(n => updateData[n.name].filteredModules.includes(type) || updateData[n.name].specialModuleTypes.includes(type)).map(n => ({plugin:n, patchTypes:updateData[n.name].patchTypes})); + for (let ins of appInsUp[type]) InternalBDFDB.forceInitiateProcess(filteredPlugins, ins, type); + } + if (bdSettings) { + const bdSettingsIns = BDFDB.ReactUtils.findOwner(bdSettings, {name:filteredModules, type:specialModules, all:true, unlimited:true}); + if (bdSettingsIns.length) { + const bdSettingsWrap = BDFDB.ReactUtils.findOwner(BDFDB.ReactUtils.getInstance(document.querySelector("#bd-settingspane-container > *")), {props:"onChange", up:true}); + if (bdSettingsWrap && bdSettingsWrap.props && typeof bdSettingsWrap.props.onChange == "function") bdSettingsWrap.props.onChange(bdSettingsWrap.props.type); + } + } + } + catch (err) {BDFDB.LogUtils.error("Could not force update components! " + err, plugins.map(n => n.name).join(", "));} + } + } + } + }; + InternalBDFDB.forceInitiateProcess = function (pluginDataObjs, instance, type) { + pluginDataObjs = [pluginDataObjs].flat(10).filter(n => n); + if (pluginDataObjs.length && instance && type) { + let forceRender = false; + for (let pluginData of pluginDataObjs) { + let plugin = pluginData.plugin == BDFDB && InternalBDFDB || pluginData.plugin, methodNames = []; + for (let patchType in plugin.patchedModules) if (plugin.patchedModules[patchType][type]) methodNames.push(plugin.patchedModules[patchType][type]); + methodNames = BDFDB.ArrayUtils.removeCopies(methodNames).flat(10).filter(n => n); + if (methodNames.includes("componentDidMount")) InternalBDFDB.initiateProcess(plugin, type, { + instance: instance, + methodname: "componentDidMount", + patchtypes: pluginData.patchTypes + }); + if (methodNames.includes("render")) forceRender = true; + else if (!forceRender && methodNames.includes("componentDidUpdate")) InternalBDFDB.initiateProcess(plugin, type, { + instance: instance, + methodname: "componentDidUpdate", + patchtypes: pluginData.patchTypes + }); + } + if (forceRender) BDFDB.ReactUtils.forceUpdate(instance); + } + }; + InternalBDFDB.initiateProcess = function (plugin, type, e) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (BDFDB.ObjectUtils.is(plugin) && !plugin.stopping && e.instance) { + type = LibraryModules.StringUtils.upperCaseFirstChar(type.split(" _ _ ")[1] || type).replace(/[^A-z0-9]|_/g, ""); + if (typeof plugin[`process${type}`] == "function") { + if (typeof e.methodname == "string" && (e.methodname.indexOf("componentDid") == 0 || e.methodname.indexOf("componentWill") == 0)) { + e.node = BDFDB.ReactUtils.findDOMNode(e.instance); + if (e.node) return plugin[`process${type}`](e); + else BDFDB.TimeUtils.timeout(_ => { + e.node = BDFDB.ReactUtils.findDOMNode(e.instance); + if (e.node) return plugin[`process${type}`](e); + }); + + } + else if (e.returnvalue || e.patchtypes.includes("before")) return plugin[`process${type}`](e); + } + } + }; + if (!BDFDB.InternalData.patchObserverData) BDFDB.InternalData.patchObserverData = {observer:null, data:{}}; + InternalBDFDB.patchPlugin = function (plugin) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ObjectUtils.is(plugin.patchedModules)) return; + BDFDB.ModuleUtils.unpatch(plugin); + for (let patchType in plugin.patchedModules) for (let type in plugin.patchedModules[patchType]) { + let unmappedType = type.split(" _ _ ")[1] || type; + let component = WebModulesData.LoadedInComponents[type] && BDFDB.ReactUtils.getValue(InternalComponents, WebModulesData.LoadedInComponents[type]); + if (component) patchInstance(plugin, WebModulesData.NonRender.includes(unmappedType) ? (BDFDB.ModuleUtils.find(m => m == component, false) || {}).exports : component, type, patchType); + else { + let classNames = [WebModulesData.PatchFinder[unmappedType]].flat(10).filter(n => DiscordClasses[n]); + let codeFind = WebModulesData.CodeFinder[unmappedType]; + let propertyFind = WebModulesData.PropsFinder[unmappedType]; + let mapped = WebModulesData.PatchMap[type]; + let mappedType = mapped ? mapped + " _ _ " + type : type; + let name = mappedType.split(" _ _ ")[0]; + if (mapped) { + plugin.patchedModules[patchType][mappedType] = plugin.patchedModules[patchType][type]; + delete plugin.patchedModules[patchType][type]; + } + if (classNames.length) checkForInstance(classNames, mappedType, patchType, WebModulesData.ForceObserve.includes(unmappedType)); + else if (codeFind) { + let exports = (BDFDB.ModuleUtils.findByString(codeFind, false) || {}).exports; + patchInstance(plugin, exports && WebModulesData.MemoComponent.includes(unmappedType) ? exports.default : exports, mappedType, patchType, true); + } + else if (propertyFind) { + let exports = (BDFDB.ModuleUtils.findByProperties(propertyFind, false) || {}).exports; + patchInstance(plugin, exports && WebModulesData.MemoComponent.includes(unmappedType) ? exports.default : exports, mappedType, patchType, true); + } + else if (WebModulesData.NonRender.includes(unmappedType)) { + let exports = (BDFDB.ModuleUtils.findByName(name, false) || {}).exports; + patchInstance(plugin, exports && WebModulesData.MemoComponent.includes(unmappedType) ? exports.default : exports, mappedType, patchType, true); + } + else patchInstance(plugin, BDFDB.ModuleUtils.findByName(name), mappedType, patchType); + } + } + function patchInstance(plugins, instance, type, patchType, ignoreCheck) { + plugins = [plugins].flat(10).filter(n => n); + if (plugins.length && instance) { + let name = type.split(" _ _ ")[0]; + instance = instance._reactInternalFiber && instance._reactInternalFiber.type ? instance._reactInternalFiber.type : instance; + instance = ignoreCheck || InternalBDFDB.isInstanceCorrect(instance, name) || WebModulesData.LoadedInComponents[type] ? instance : (BDFDB.ReactUtils.findConstructor(instance, name) || BDFDB.ReactUtils.findConstructor(instance, name, {up:true})); + if (instance) { + instance = instance._reactInternalFiber && instance._reactInternalFiber.type ? instance._reactInternalFiber.type : instance; + let toBePatched = WebModulesData.NonPrototype.includes(name) ? instance : instance.prototype; + for (let plugin of plugins) { + let patchMethods = {}; + patchMethods[patchType] = e => { + return InternalBDFDB.initiateProcess(plugin, type, { + instance: window != e.thisObject ? e.thisObject : {props:e.methodArguments[0]}, + returnvalue: e.returnValue, + methodname: e.originalMethodName, + patchtypes: [patchType] + }) + }; + BDFDB.ModuleUtils.patch(plugin, toBePatched, plugin.patchedModules[patchType][type], patchMethods); + } + } + } + } + function checkEle(plugins, ele, type, patchType) { + plugins = [plugins].flat(10).filter(n => n); + let unmappedType = type.split(" _ _ ")[1] || type; + let ins = BDFDB.ReactUtils.getInstance(ele); + let filter = WebModulesData.SpecialFilter[unmappedType]; + if (typeof filter == "function") { + let component = filter(ins); + if (component) { + if (WebModulesData.NonRender.includes(unmappedType)) { + let exports = (BDFDB.ModuleUtils.find(m => m == component, false) || {}).exports; + patchInstance(plugins, exports && WebModulesData.MemoComponent.includes(unmappedType) ? exports.default : exports, type, patchType, true); + } + else patchInstance(plugins, component, type, patchType, true); + BDFDB.ModuleUtils.forceAllUpdates(plugin, type); + return true; + } + } + else if (isCorrectInstance(ins, type)) { + patchInstance(plugins, ins, type, patchType); + BDFDB.ModuleUtils.forceAllUpdates(plugin, type); + return true; + } + return false; + } + function checkForInstance(classNames, type, patchType, forceObserve) { + const app = document.querySelector(BDFDB.dotCN.app), bdSettings = document.querySelector("#bd-settingspane-container " + BDFDB.dotCN.scrollerwrap); + let instanceFound = false; + if (!forceObserve) { + if (app) { + let appIns = BDFDB.ReactUtils.findConstructor(app, type, {unlimited:true}) || BDFDB.ReactUtils.findConstructor(app, type, {unlimited:true, up:true}); + if (appIns && (instanceFound = true)) patchInstance(plugin, appIns, type, patchType); + } + if (!instanceFound && bdSettings) { + let bdSettingsIns = BDFDB.ReactUtils.findConstructor(bdSettings, type, {unlimited:true}); + if (bdSettingsIns && (instanceFound = true)) patchInstance(plugin, bdSettingsIns, type, patchType); + } + } + if (!instanceFound) { + let elementFound = false, classes = classNames.map(n => BDFDB.disCN[n]), selector = classNames.map(n => BDFDB.dotCN[n]).join(", "); + for (let ele of document.querySelectorAll(selector)) { + elementFound = checkEle(plugin, ele, type, patchType); + if (elementFound) break; + } + if (!elementFound) { + if (!BDFDB.InternalData.patchObserverData.observer) { + let appmount = document.querySelector(BDFDB.dotCN.appmount); + if (appmount) { + BDFDB.InternalData.patchObserverData.observer = new MutationObserver(cs => {cs.forEach(c => {c.addedNodes.forEach(n => { + if (!n || !n.tagName) return; + for (let type in BDFDB.InternalData.patchObserverData.data) if (BDFDB.InternalData.patchObserverData.data[type].found) { + let ele = null; + if ((ele = BDFDB.DOMUtils.containsClass(n, ...BDFDB.InternalData.patchObserverData.data[type].classes) ? n : n.querySelector(BDFDB.InternalData.patchObserverData.data[type].selector)) != null) { + BDFDB.InternalData.patchObserverData.data[type].found = checkEle(BDFDB.InternalData.patchObserverData.data[type].plugins, ele, type, patchType); + if (BDFDB.InternalData.patchObserverData.data[type].found) { + delete BDFDB.InternalData.patchObserverData.data[type]; + if (BDFDB.ObjectUtils.isEmpty(BDFDB.InternalData.patchObserverData.data)) { + BDFDB.InternalData.patchObserverData.observer.disconnect(); + BDFDB.InternalData.patchObserverData.observer = null; + } + } + } + } + });});}); + BDFDB.InternalData.patchObserverData.observer.observe(appmount, {childList:true, subtree:true}); + } + } + if (!BDFDB.InternalData.patchObserverData.data[type]) BDFDB.InternalData.patchObserverData.data[type] = {selector, classes, found:false, plugins:[]}; + BDFDB.InternalData.patchObserverData.data[type].plugins.push(plugin); + } + } + } + function isCorrectInstance(instance, name) { + if (!instance) return false; + instance = instance._reactInternalFiber && instance._reactInternalFiber.type ? instance._reactInternalFiber.type : instance; + instance = InternalBDFDB.isInstanceCorrect(instance, name) ? instance : (BDFDB.ReactUtils.findConstructor(instance, name) || BDFDB.ReactUtils.findConstructor(instance, name, {up:true})); + return !!instance; + } + }; + + InternalBDFDB.isInstanceCorrect = function (instance, name) { + return instance && ((instance.type && (instance.type.render && instance.type.render.displayName === name || instance.type.displayName === name || instance.type.name === name || instance.type === name)) || instance.render && (instance.render.displayName === name || instance.render.name === name) || instance.displayName == name || instance.name === name); + }; + + BDFDB.DiscordConstants = BDFDB.ModuleUtils.findByProperties("Permissions", "ActivityTypes"); + + var DiscordObjects = {}; + DiscordObjects.Channel = BDFDB.ModuleUtils.findByPrototypes("getRecipientId", "isManaged", "getGuildId"); + DiscordObjects.Guild = BDFDB.ModuleUtils.findByPrototypes("getIconURL", "getMaxEmojiSlots", "getRole"); + DiscordObjects.Invite = BDFDB.ModuleUtils.findByPrototypes("getExpiresAt", "isExpired"); + DiscordObjects.Message = BDFDB.ModuleUtils.findByPrototypes("getReaction", "getAuthorName", "getChannelId"); + DiscordObjects.Messages = BDFDB.ModuleUtils.findByPrototypes("jumpToMessage", "hasAfterCached", "forEach"); + DiscordObjects.Timestamp = BDFDB.ModuleUtils.findByPrototypes("add", "dayOfYear", "hasAlignedHourOffset"); + DiscordObjects.User = BDFDB.ModuleUtils.findByPrototypes("hasFlag", "isLocalBot", "isClaimed"); + BDFDB.DiscordObjects = Object.assign({}, DiscordObjects); + + var LibraryRequires = {}; + for (let name of ["child_process", "electron", "fs", "path", "process", "request"]) { + try {LibraryRequires[name] = require(name);} catch (err) {} + } + BDFDB.LibraryRequires = Object.assign({}, LibraryRequires); + + var LibraryModules = {}; + LibraryModules.AckUtils = BDFDB.ModuleUtils.findByProperties("localAck", "bulkAck"); + LibraryModules.ActivityUtils = BDFDB.ModuleUtils.findByProperties("sendActivityInvite", "updateActivity"); + LibraryModules.APIUtils = BDFDB.ModuleUtils.findByProperties("getAPIBaseURL"); + LibraryModules.AnalyticsUtils = BDFDB.ModuleUtils.findByProperties("isThrottled", "track"); + LibraryModules.AnimationUtils = BDFDB.ModuleUtils.findByProperties("spring", "decay"); + LibraryModules.AssetUtils = BDFDB.ModuleUtils.findByProperties("getAssetImage", "getAssetIds"); + LibraryModules.BadgeUtils = BDFDB.ModuleUtils.findByProperties("getBadgeCountString", "getBadgeWidthForValue"); + LibraryModules.CallUtils = BDFDB.ModuleUtils.findByProperties("getCalls", "isCallActive"); + LibraryModules.CategoryCollapseStore = BDFDB.ModuleUtils.findByProperties("getCollapsedCategories", "isCollapsed"); + LibraryModules.CategoryCollapseUtils = BDFDB.ModuleUtils.findByProperties("categoryCollapse", "categoryCollapseAll"); + LibraryModules.ChannelStore = BDFDB.ModuleUtils.findByProperties("getChannel", "getChannels"); + LibraryModules.ColorUtils = BDFDB.ModuleUtils.findByProperties("hex2int", "hex2rgb"); + LibraryModules.ContextMenuUtils = BDFDB.ModuleUtils.findByProperties("closeContextMenu", "openContextMenu"); + LibraryModules.CopyLinkUtils = BDFDB.ModuleUtils.findByProperties("SUPPORTS_COPY", "copy"); + LibraryModules.CurrentUserStore = BDFDB.ModuleUtils.findByProperties("getCurrentUser"); + LibraryModules.CurrentVoiceUtils = BDFDB.ModuleUtils.findByProperties("getAveragePing", "isConnected"); + LibraryModules.DirectMessageStore = BDFDB.ModuleUtils.findByProperties("getPrivateChannelIds", "getPrivateChannelTimestamps"); + LibraryModules.DirectMessageUnreadStore = BDFDB.ModuleUtils.findByProperties("getUnreadPrivateChannelIds"); + LibraryModules.DispatchApiUtils = BDFDB.ModuleUtils.findByProperties("dirtyDispatch", "isDispatching"); + LibraryModules.DispatchUtils = BDFDB.ModuleUtils.findByProperties("ComponentDispatch"); + LibraryModules.DirectMessageUtils = BDFDB.ModuleUtils.findByProperties("addRecipient", "openPrivateChannel"); + LibraryModules.EmojiUtils = BDFDB.ModuleUtils.findByProperties("translateInlineEmojiToSurrogates", "translateSurrogatesToInlineEmoji"); + LibraryModules.EmojiStateUtils = BDFDB.ModuleUtils.findByProperties("getURL", "isEmojiDisabled"); + LibraryModules.FriendUtils = BDFDB.ModuleUtils.findByProperties("getFriendIDs", "getRelationships"); + LibraryModules.FolderStore = BDFDB.ModuleUtils.findByProperties("getGuildFolderById", "getFlattenedGuilds"); + LibraryModules.FolderUtils = BDFDB.ModuleUtils.findByProperties("isFolderExpanded", "getExpandedFolders"); + LibraryModules.GuildBoostUtils = BDFDB.ModuleUtils.findByProperties("getTierName", "getUserLevel"); + LibraryModules.GuildChannelStore = BDFDB.ModuleUtils.findByProperties("getChannels", "getDefaultChannel"); + LibraryModules.GuildEmojiStore = BDFDB.ModuleUtils.findByProperties("getGuildEmoji", "getDisambiguatedEmojiContext"); + LibraryModules.GuildNotificationsUtils = BDFDB.ModuleUtils.findByProperties("updateChannelOverrideSettings", "updateGuildNotificationSettings"); + LibraryModules.GuildSettingsSectionUtils = BDFDB.ModuleUtils.findByProperties("getGuildSettingsSections"); + LibraryModules.GuildSettingsUtils = BDFDB.ModuleUtils.findByProperties("open", "updateGuild"); + LibraryModules.GuildStore = BDFDB.ModuleUtils.findByProperties("getGuild", "getGuilds"); + LibraryModules.GuildUnavailableStore = BDFDB.ModuleUtils.findByProperties("isUnavailable", "totalUnavailableGuilds"); + LibraryModules.GuildUtils = BDFDB.ModuleUtils.findByProperties("transitionToGuildSync"); + LibraryModules.GuildWelcomeStore = BDFDB.ModuleUtils.findByProperties("hasSeen", "get"); + LibraryModules.GuildWelcomeUtils = BDFDB.ModuleUtils.findByProperties("welcomeScreenViewed", "resetWelcomeScreen"); + LibraryModules.HistoryUtils = BDFDB.ModuleUtils.findByProperties("transitionTo", "replaceWith", "getHistory");; + LibraryModules.IconUtils = BDFDB.ModuleUtils.findByProperties("getGuildIconURL", "getGuildBannerURL"); + LibraryModules.InviteUtils = BDFDB.ModuleUtils.findByProperties("acceptInvite", "createInvite"); + LibraryModules.KeyCodeUtils = Object.assign({}, BDFDB.ModuleUtils.findByProperties("toCombo", "keyToCode")); + LibraryModules.KeyCodeUtils.getString = function (keyarray) { + return LibraryModules.KeyCodeUtils.toString([keyarray].flat(10).filter(n => n).map(keycode => [BDFDB.DiscordConstants.KeyboardDeviceTypes.KEYBOARD_KEY, keycode, BDFDB.DiscordConstants.KeyboardEnvs.BROWSER]), true); + }; + LibraryModules.KeyEvents = BDFDB.ModuleUtils.findByProperties("aliases", "code", "codes"); + LibraryModules.LanguageStore = BDFDB.ModuleUtils.findByProperties("getLanguages", "Messages"); + LibraryModules.LastChannelStore = BDFDB.ModuleUtils.findByProperties("getLastSelectedChannelId"); + LibraryModules.LastGuildStore = BDFDB.ModuleUtils.findByProperties("getLastSelectedGuildId"); + LibraryModules.LoginUtils = BDFDB.ModuleUtils.findByProperties("login", "logout"); + LibraryModules.MemberStore = BDFDB.ModuleUtils.findByProperties("getMember", "getMembers"); + LibraryModules.MentionUtils = BDFDB.ModuleUtils.findByProperties("isRawMessageMentioned", "isMentioned"); + LibraryModules.MessageManageUtils = BDFDB.ModuleUtils.findByProperties("copyLink", "quoteMessage"); + LibraryModules.MessagePinUtils = BDFDB.ModuleUtils.findByProperties("pinMessage", "unpinMessage"); + LibraryModules.MessageStore = BDFDB.ModuleUtils.findByProperties("getMessage", "getMessages"); + LibraryModules.MessageUtils = BDFDB.ModuleUtils.findByProperties("receiveMessage", "editMessage"); + LibraryModules.ModalUtils = BDFDB.ModuleUtils.findByProperties("openModal", "hasModalOpen"); + LibraryModules.MutedUtils = BDFDB.ModuleUtils.findByProperties("isGuildOrCategoryOrChannelMuted"); + LibraryModules.NoteStore = BDFDB.ModuleUtils.findByProperties("getNote"); + LibraryModules.NotificationSettingsStore = BDFDB.ModuleUtils.findByProperties("getDesktopType", "getTTSType"); + LibraryModules.NotificationSettingsUtils = BDFDB.ModuleUtils.findByProperties("setDesktopType", "setTTSType"); + LibraryModules.NotificationUtils = BDFDB.ModuleUtils.findByProperties("makeTextChatNotification", "shouldNotify"); + LibraryModules.PlatformUtils = BDFDB.ModuleUtils.findByProperties("isWindows", "isLinux"); + LibraryModules.PermissionUtils = BDFDB.ModuleUtils.findByProperties("getChannelPermissions", "canUser"); + LibraryModules.PermissionRoleUtils = BDFDB.ModuleUtils.findByProperties("getHighestRole", "can"); + LibraryModules.QuoteUtils = BDFDB.ModuleUtils.findByProperties("canQuote", "createQuotedText"); + LibraryModules.ReactionEmojiUtils = BDFDB.ModuleUtils.findByProperties("getReactionEmojiName", "getReactionEmojiName"); + LibraryModules.ReactionUtils = BDFDB.ModuleUtils.findByProperties("addReaction", "removeReaction"); + LibraryModules.RecentMentionUtils = BDFDB.ModuleUtils.findByProperties("deleteRecentMention", "fetchRecentMentions"); + LibraryModules.SearchPageUtils = BDFDB.ModuleUtils.findByProperties("searchNextPage", "searchPreviousPage"); + LibraryModules.SelectChannelUtils = BDFDB.ModuleUtils.findByProperties("selectChannel", "selectPrivateChannel"); + LibraryModules.SettingsUtils = BDFDB.ModuleUtils.findByProperties("updateRemoteSettings", "updateLocalSettings"); + LibraryModules.SlateUtils = BDFDB.ModuleUtils.findByProperties("serialize", "deserialize"); + LibraryModules.SlateUtils = BDFDB.ModuleUtils.find(m => typeof m.serialize == "function" && typeof m.deserialize == "function" && typeof m.deserialize == "function" && typeof m.getFlag != "function"); + LibraryModules.SlateSelectionUtils = BDFDB.ModuleUtils.findByProperties("serialize", "serializeSelection"); + LibraryModules.SlowmodeUtils = BDFDB.ModuleUtils.findByProperties("getSlowmodeCooldownGuess"); + LibraryModules.SoundStateUtils = BDFDB.ModuleUtils.findByProperties("isSoundDisabled", "getDisabledSounds"); + LibraryModules.SoundUtils = BDFDB.ModuleUtils.findByProperties("playSound", "createSound"); + LibraryModules.SpellCheckUtils = BDFDB.ModuleUtils.findByProperties("learnWord", "toggleSpellcheck"); + LibraryModules.SpotifyTrackUtils = BDFDB.ModuleUtils.findByProperties("hasConnectedAccount", "getLastPlayedTrackId"); + LibraryModules.SpotifyUtils = BDFDB.ModuleUtils.findByProperties("setActiveDevice", "pause"); + LibraryModules.StateStoreUtils = BDFDB.ModuleUtils.findByProperties("useStateFromStores", "useStateFromStoresArray"); + LibraryModules.StatusMetaUtils = BDFDB.ModuleUtils.findByProperties("getApplicationActivity", "getStatus"); + LibraryModules.StoreChangeUtils = BDFDB.ModuleUtils.findByProperties("get", "set", "clear", "remove"); + LibraryModules.StreamerModeStore = BDFDB.ModuleUtils.findByProperties("disableSounds", "hidePersonalInformation"); + LibraryModules.StreamUtils = BDFDB.ModuleUtils.findByProperties("getStreamForUser", "getActiveStream"); + LibraryModules.StringUtils = BDFDB.ModuleUtils.findByProperties("cssValueToNumber", "upperCaseFirstChar"); + LibraryModules.UnreadGuildUtils = BDFDB.ModuleUtils.findByProperties("hasUnread", "getUnreadGuilds"); + LibraryModules.UnreadChannelUtils = BDFDB.ModuleUtils.findByProperties("getUnreadCount", "getOldestUnreadMessageId"); + LibraryModules.UploadUtils = BDFDB.ModuleUtils.findByProperties("upload", "instantBatchUpload"); + LibraryModules.UserFetchUtils = BDFDB.ModuleUtils.findByProperties("fetchCurrentUser", "getUser"); + LibraryModules.UserNameUtils = BDFDB.ModuleUtils.findByProperties("getName", "getNickname"); + LibraryModules.UserProfileUtils = BDFDB.ModuleUtils.findByProperties("open", "fetchProfile"); + LibraryModules.UserSettingsUtils = BDFDB.ModuleUtils.findByProperties("open", "updateAccount"); + LibraryModules.UserStore = BDFDB.ModuleUtils.findByProperties("getUser", "getUsers"); + LibraryModules.Utilities = BDFDB.ModuleUtils.findByProperties("flatMap", "cloneDeep"); + LibraryModules.VoiceUtils = BDFDB.ModuleUtils.findByProperties("getAllVoiceStates", "getVoiceStatesForChannel"); + LibraryModules.ZoomUtils = BDFDB.ModuleUtils.findByProperties("setZoom", "setFontSize"); + BDFDB.LibraryModules = Object.assign({}, LibraryModules); + + LibraryModules.React = BDFDB.ModuleUtils.findByProperties("createElement", "cloneElement"); + LibraryModules.ReactDOM = BDFDB.ModuleUtils.findByProperties("render", "findDOMNode"); + + BDFDB.ReactUtils = Object.assign({}, LibraryModules.React, LibraryModules.ReactDOM); + BDFDB.ReactUtils.childrenToArray = function (parent) { + if (parent && parent.props && parent.props.children && !BDFDB.ArrayUtils.is(parent.props.children)) { + var child = parent.props.children; + parent.props.children = []; + parent.props.children.push(child); + } + return parent.props.children; + } + BDFDB.ReactUtils.createElement = function (component, props = {}) { + if (component && component.defaultProps) for (let key in component.defaultProps) if (props[key] == null) props[key] = component.defaultProps[key]; + try {return LibraryModules.React.createElement(component || "div", props) || null;} + catch (err) {BDFDB.LogUtils.error("Could not create react element! " + err);} + return null; + }; + BDFDB.ReactUtils.objectToReact = function (obj) { + if (!obj) return null; + else if (typeof obj == "string") return obj; + else if (BDFDB.ObjectUtils.is(obj)) return BDFDB.ReactUtils.createElement(obj.type || obj.props && obj.props.href && "a" || "div", !obj.props ? {} : Object.assign({}, obj.props, { + children: obj.props.children ? BDFDB.ReactUtils.objectToReact(obj.props.children) : null + })); + else if (BDFDB.ArrayUtils.is(obj)) return obj.map(n => BDFDB.ReactUtils.objectToReact(n)); + else return null; + }; + BDFDB.ReactUtils.elementToReact = function (node, ref) { + if (BDFDB.ReactUtils.isValidElement(node)) return node; + else if (!Node.prototype.isPrototypeOf(node)) return null; + else if (node.nodeType == Node.TEXT_NODE) return node.nodeValue; + let attributes = {}, importantStyles = []; + if (typeof ref == "function") attributes.ref = ref; + for (let attr of node.attributes) attributes[attr.name] = attr.value; + if (node.attributes.style) attributes.style = BDFDB.ObjectUtils.filter(node.style, n => node.style[n] && isNaN(parseInt(n)), true); + attributes.children = []; + if (node.style && node.style.cssText) for (let propStr of node.style.cssText.split(";")) if (propStr.endsWith("!important")) { + let key = propStr.split(":")[0]; + let camelprop = key.replace(/-([a-z]?)/g, (m, g) => g.toUpperCase()); + if (attributes.style[camelprop] != null) importantStyles.push(key); + } + for (let child of node.childNodes) attributes.children.push(BDFDB.ReactUtils.elementToReact(child)); + attributes.className = BDFDB.DOMUtils.formatClassName(attributes.className, attributes.class); + delete attributes.class; + let reactEle = BDFDB.ReactUtils.createElement(node.tagName, attributes); + BDFDB.ReactUtils.forceStyle(reactEle, importantStyles); + return reactEle; + }; + BDFDB.ReactUtils.forceStyle = function (reactEle, styles) { + if (!BDFDB.ReactUtils.isValidElement(reactEle) || !BDFDB.ObjectUtils.is(reactEle.props.style) || !BDFDB.ArrayUtils.is(styles) || !styles.length) return null; + let ref = reactEle.ref; + reactEle.ref = instance => { + if (typeof ref == "function") ref(instance); + let node = BDFDB.ReactUtils.findDOMNode(instance); + if (Node.prototype.isPrototypeOf(node)) for (let key of styles) { + let propValue = reactEle.props.style[key.replace(/-([a-z]?)/g, (m, g) => g.toUpperCase())]; + if (propValue != null) node.style.setProperty(key, propValue, "important"); + } + }; + return reactEle; + }; + BDFDB.ReactUtils.findChild = function (nodeOrInstance, config) { + if (!nodeOrInstance || !BDFDB.ObjectUtils.is(config) || !config.name && !config.key && !config.props && !config.filter) return config.all ? [] : null; + let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance; + if (!BDFDB.ObjectUtils.is(instance) && !BDFDB.ArrayUtils.is(instance)) return null; + config.name = config.name && [config.name].flat().filter(n => n); + config.key = config.key && [config.key].flat().filter(n => n); + config.props = config.props && [config.props].flat().filter(n => n); + config.filter = typeof config.filter == "function" && config.filter; + let depth = -1; + let start = performance.now(); + let maxDepth = config.unlimited ? 999999999 : (config.depth === undefined ? 30 : config.depth); + let maxTime = config.unlimited ? 999999999 : (config.time === undefined ? 150 : config.time); + + let foundChildren = []; + let singleChild = getChild(instance); + if (config.all) { + for (let i in foundChildren) delete foundChildren[i].BDFDBreactSearch; + return foundChildren; + } + else return singleChild; + + function getChild (children) { + let result = null; + if (!children || depth >= maxDepth || performance.now() - start >= maxTime) return result; + if (!BDFDB.ArrayUtils.is(children)) { + if (check(children)) { + if (config.all === undefined || !config.all) result = children; + else if (config.all) { + if (!children.BDFDBreactSearch) { + children.BDFDBreactSearch = true; + foundChildren.push(children); + } + } + } + else if (children.props && children.props.children) { + depth++; + result = getChild(children.props.children); + depth--; + } + } + else { + for (let child of children) if (child) { + if (BDFDB.ArrayUtils.is(child)) result = getChild(child); + else if (check(child)) { + if (config.all === undefined || !config.all) result = child; + else if (config.all) { + if (!child.BDFDBreactSearch) { + child.BDFDBreactSearch = true; + foundChildren.push(child); + } + } + } + else if (child.props && child.props.children) { + depth++; + result = getChild(child.props.children); + depth--; + } + if (result) break; + } + } + return result; + } + function check (instance) { + if (!instance) return false; + let props = instance.stateNode ? instance.stateNode.props : instance.props; + return instance.type && config.name && config.name.some(name => InternalBDFDB.isInstanceCorrect(instance, name)) || config.key && config.key.some(key => instance.key == key) || props && config.props && config.props[config.someProps ? "some" : "every"](prop => BDFDB.ArrayUtils.is(prop) ? (BDFDB.ArrayUtils.is(prop[1]) ? prop[1].some(checkValue => propCheck(props, prop[0], checkValue)) : propCheck(props, prop[0], prop[1])) : props[prop] !== undefined) || config.filter && config.filter(instance); + } + function propCheck (props, key, value) { + return key != null && props[key] != null && value != null && (key == "className" ? (" " + props[key] + " ").indexOf(" " + value + " ") > -1 : BDFDB.equals(props[key], value)); + } + }; + BDFDB.ReactUtils.setChild = function (parent, stringOrChild) { + if (!BDFDB.ReactUtils.isValidElement(parent) || (!BDFDB.ReactUtils.isValidElement(stringOrChild) && typeof stringOrChild != "string" && !BDFDB.ArrayUtils.is(stringOrChild))) return; + let set = false; + checkParent(parent); + function checkParent(child) { + if (set) return; + if (!BDFDB.ArrayUtils.is(child)) checkChild(child); + else for (let subChild of child) checkChild(subChild); + } + function checkChild(child) { + if (!BDFDB.ReactUtils.isValidElement(child)) return; + if (BDFDB.ReactUtils.isValidElement(child.props.children)) checkParent(child.props.children); + else if (BDFDB.ArrayUtils.is(child.props.children)) { + if (child.props.children.every(c => !c || typeof c == "string")) { + set = true; + child.props.children = [stringOrChild].flat(10); + } + else checkParent(child.props.children); + } + else { + set = true; + child.props.children = stringOrChild; + } + } + }; + BDFDB.ReactUtils.findConstructor = function (nodeOrInstance, types, config = {}) { + if (!BDFDB.ObjectUtils.is(config)) return null; + if (!nodeOrInstance || !types) return config.all ? (config.group ? {} : []) : null; + let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance; + if (!BDFDB.ObjectUtils.is(instance)) return config.all ? (config.group ? {} : []) : null; + types = types && [types].flat(10).filter(n => typeof n == "string"); + if (!types.length) return config.all ? (config.group ? {} : []) : null;; + let depth = -1; + let start = performance.now(); + let maxDepth = config.unlimited ? 999999999 : (config.depth === undefined ? 30 : config.depth); + let maxTime = config.unlimited ? 999999999 : (config.time === undefined ? 150 : config.time); + let whitelist = config.up ? {return:true, sibling:true, default:true, _reactInternalFiber:true} : {child:true, sibling:true, default:true, _reactInternalFiber:true}; + + let foundConstructors = config.group ? {} : []; + let singleConstructor = getConstructor(instance); + if (config.all) { + for (let i in foundConstructors) { + if (config.group) for (let j in foundConstructors[i]) delete foundConstructors[i][j].BDFDBreactSearch; + else delete foundConstructors[i].BDFDBreactSearch; + } + return foundConstructors; + } + else return singleConstructor; + + function getConstructor (instance) { + depth++; + let result = undefined; + if (instance && !Node.prototype.isPrototypeOf(instance) && !BDFDB.ReactUtils.getInstance(instance) && depth < maxDepth && performance.now() - start < maxTime) { + if (instance.type && types.some(name => InternalBDFDB.isInstanceCorrect(instance, name.split(" _ _ ")[0]))) { + if (config.all === undefined || !config.all) result = instance.type; + else if (config.all) { + if (!instance.type.BDFDBreactSearch) { + instance.type.BDFDBreactSearch = true; + if (config.group) { + if (instance.type && (instance.type.render && instance.type.render.displayName || instance.type.displayName || instance.type.name)) { + let group = config.name.find(name => (instance.type.render && instance.type.render.displayName || instance.type.displayName || instance.type.name || instance.type) == name.split(" _ _ ")[0]) || "Default"; + if (!BDFDB.ArrayUtils.is(foundConstructors[group])) foundConstructors[group] = []; + foundConstructors[group].push(instance.stateNode); + } + } + else foundConstructors.push(instance.type); + } + } + } + if (result === undefined) { + let keys = Object.getOwnPropertyNames(instance); + for (let i = 0; result === undefined && i < keys.length; i++) { + let key = keys[i]; + if (key && whitelist[key] && (typeof instance[key] === "object" || typeof instance[key] === "function")) result = getConstructor(instance[key]); + } + } + } + depth--; + return result; + } + }; + BDFDB.ReactUtils.findDOMNode = function (instance) { + if (Node.prototype.isPrototypeOf(instance)) return instance; + if (!instance || !instance.updater || typeof instance.updater.isMounted !== "function" || !instance.updater.isMounted(instance)) return null; + let node = LibraryModules.ReactDOM.findDOMNode(instance) || BDFDB.ReactUtils.getValue(instance, "child.stateNode"); + return Node.prototype.isPrototypeOf(node) ? node : null; + }; + BDFDB.ReactUtils.findOwner = function (nodeOrInstance, config) { + if (!BDFDB.ObjectUtils.is(config)) return null; + if (!nodeOrInstance || !config.name && !config.type && !config.key && !config.props) return config.all ? (config.group ? {} : []) : null; + let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance; + if (!BDFDB.ObjectUtils.is(instance)) return config.all ? (config.group ? {} : []) : null; + config.name = config.name && [config.name].flat().filter(n => n); + config.type = config.type && [config.type].flat().filter(n => n); + config.key = config.key && [config.key].flat().filter(n => n); + config.props = config.props && [config.props].flat().filter(n => n); + let depth = -1; + let start = performance.now(); + let maxDepth = config.unlimited ? 999999999 : (config.depth === undefined ? 30 : config.depth); + let maxTime = config.unlimited ? 999999999 : (config.time === undefined ? 150 : config.time); + let whitelist = config.up ? {return:true, sibling:true, _reactInternalFiber:true} : {child:true, sibling:true, _reactInternalFiber:true}; + + let foundInstances = config.group ? {} : []; + let singleInstance = getOwner(instance); + if (config.all) { + for (let i in foundInstances) { + if (config.group) for (let j in foundInstances[i]) delete foundInstances[i][j].BDFDBreactSearch; + else delete foundInstances[i].BDFDBreactSearch; + } + return foundInstances; + } + else return singleInstance; + + function getOwner (instance) { + depth++; + let result = undefined; + if (instance && !Node.prototype.isPrototypeOf(instance) && !BDFDB.ReactUtils.getInstance(instance) && depth < maxDepth && performance.now() - start < maxTime) { + let props = instance.stateNode ? instance.stateNode.props : instance.props; + if (instance.stateNode && !Node.prototype.isPrototypeOf(instance.stateNode) && (instance.type && config.name && config.name.some(name => InternalBDFDB.isInstanceCorrect(instance, name.split(" _ _ ")[0])) || instance.type && config.type && config.type.some(type => BDFDB.ArrayUtils.is(type) ? instance.type === type[1] : instance.type === type) || instance.key && config.key && config.key.some(key => instance.key == key) || props && config.props && config.props.every(prop => BDFDB.ArrayUtils.is(prop) ? (BDFDB.ArrayUtils.is(prop[1]) ? prop[1].some(checkValue => BDFDB.equals(props[prop[0]], checkValue)) : BDFDB.equals(props[prop[0]], prop[1])) : props[prop] !== undefined))) { + if (config.all === undefined || !config.all) result = instance.stateNode; + else if (config.all) { + if (!instance.stateNode.BDFDBreactSearch) { + instance.stateNode.BDFDBreactSearch = true; + if (config.group) { + if (config.name && instance.type && (instance.type.render && instance.type.render.displayName || instance.type.displayName || instance.type.name || instance.type)) { + let group = config.name.find(name => (instance.type.render && instance.type.render.displayName || instance.type.displayName || instance.type.name || instance.type) == name.split(" _ _ ")[0]) || "Default"; + if (!BDFDB.ArrayUtils.is(foundInstances[group])) foundInstances[group] = []; + foundInstances[group].push(instance.stateNode); + } + else if (config.type && instance.type) { + let group = [config.type.find(t => BDFDB.ArrayUtils.is(t) && instance.type === t[1])].flat(10)[0] || "Default"; + if (!BDFDB.ArrayUtils.is(foundInstances[group])) foundInstances[group] = []; + foundInstances[group].push(instance.stateNode); + } + } + else foundInstances.push(instance.stateNode); + } + } + } + if (result === undefined) { + let keys = Object.getOwnPropertyNames(instance); + for (let i = 0; result === undefined && i < keys.length; i++) { + let key = keys[i]; + if (key && whitelist[key] && (typeof instance[key] === "object" || typeof instance[key] === "function")) result = getOwner(instance[key]); + } + } + } + depth--; + return result; + } + }; + BDFDB.ReactUtils.findParent = function (nodeOrInstance, config) { + if (!nodeOrInstance || !BDFDB.ObjectUtils.is(config) || !config.name && !config.key && !config.props && !config.filter) return [null, -1]; + let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance; + if (!BDFDB.ObjectUtils.is(instance) && !BDFDB.ArrayUtils.is(instance)) return [null, -1]; + config.name = config.name && [config.name].flat().filter(n => n); + config.key = config.key && [config.key].flat().filter(n => n); + config.props = config.props && [config.props].flat().filter(n => n); + config.filter = typeof config.filter == "function" && config.filter; + let parent = firstArray = instance; + while (!BDFDB.ArrayUtils.is(firstArray) && firstArray.props && firstArray.props.children) firstArray = firstArray.props.children; + if (!BDFDB.ArrayUtils.is(firstArray)) { + if (parent && parent.props) { + parent.props.children = [parent.props.children]; + firstArray = parent.props.children; + } + else firstArray = []; + } + return getParent(instance); + function getParent (children) { + let result = [firstArray, -1]; + if (!children) return result; + if (!BDFDB.ArrayUtils.is(children)) { + if (check(children)) result = found(children); + else if (children.props && children.props.children) { + parent = children; + result = getParent(children.props.children); + } + } + else { + for (let i = 0; result[1] == -1 && i < children.length; i++) if (children[i]) { + if (BDFDB.ArrayUtils.is(children[i])) { + parent = children; + result = getParent(children[i]); + } + else if (check(children[i])) { + parent = children; + result = found(children[i]); + } + else if (children[i].props && children[i].props.children) { + parent = children[i]; + result = getParent(children[i].props.children); + } + } + } + return result; + } + function found (child) { + if (BDFDB.ArrayUtils.is(parent)) return [parent, parent.indexOf(child)]; + else { + parent.props.children = []; + parent.props.children.push(child); + return [parent.props.children, 0]; + } + } + function check (instance) { + if (!instance) return false; + let props = instance.stateNode ? instance.stateNode.props : instance.props; + return instance.type && config.name && config.name.some(name => InternalBDFDB.isInstanceCorrect(instance, name)) || config.key && config.key.some(key => instance.key == key) || props && config.props && config.props[config.someProps ? "some" : "every"](prop => BDFDB.ArrayUtils.is(prop) ? (BDFDB.ArrayUtils.is(prop[1]) ? prop[1].some(checkValue => propCheck(props, prop[0], checkValue)) : propCheck(props, prop[0], prop[1])) : props[prop] !== undefined) || config.filter && config.filter(instance); + } + function propCheck (props, key, value) { + return key != null && props[key] != null && value != null && (key == "className" ? (" " + props[key] + " ").indexOf(" " + value + " ") > -1 : BDFDB.equals(props[key], value)); + } + }; + BDFDB.ReactUtils.findProps = function (nodeOrInstance, config) { + if (!BDFDB.ObjectUtils.is(config)) return null; + if (!nodeOrInstance || !config.name && !config.key) return null; + let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance; + if (!BDFDB.ObjectUtils.is(instance)) return null; + config.name = config.name && [config.name].flat().filter(n => n); + config.key = config.key && [config.key].flat().filter(n => n); + let depth = -1; + let start = performance.now(); + let maxDepth = config.unlimited ? 999999999 : (config.depth === undefined ? 30 : config.depth); + let maxTime = config.unlimited ? 999999999 : (config.time === undefined ? 150 : config.time); + let whitelist = config.up ? {return:true, sibling:true, _reactInternalFiber:true} : {child:true, sibling:true, _reactInternalFiber:true}; + return findProps(instance); + + function findProps (instance) { + depth++; + let result = undefined; + if (instance && !Node.prototype.isPrototypeOf(instance) && !BDFDB.ReactUtils.getInstance(instance) && depth < maxDepth && performance.now() - start < maxTime) { + if (instance.memoizedProps && (instance.type && config.name && config.name.some(name => InternalBDFDB.isInstanceCorrect(instance, name.split(" _ _ ")[0])) || config.key && config.key.some(key => instance.key == key))) result = instance.memoizedProps; + if (result === undefined) { + let keys = Object.getOwnPropertyNames(instance); + for (let i = 0; result === undefined && i < keys.length; i++) { + let key = keys[i]; + if (key && whitelist[key] && (typeof instance[key] === "object" || typeof instance[key] === "function")) result = findProps(instance[key]); + } + } + } + depth--; + return result; + } + }; + BDFDB.ReactUtils.findValue = function (nodeOrInstance, searchKey, config = {}) { + if (!BDFDB.ObjectUtils.is(config)) return null; + if (!nodeOrInstance || typeof searchKey != "string") return config.all ? [] : null; + let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance; + if (!BDFDB.ObjectUtils.is(instance)) return config.all ? [] : null; + instance = instance._reactInternalFiber || instance; + let depth = -1; + let start = performance.now(); + let maxDepth = config.unlimited ? 999999999 : (config.depth === undefined ? 30 : config.depth); + let maxTime = config.unlimited ? 999999999 : (config.time === undefined ? 150 : config.time); + let whitelist = { + props: true, + state: true, + stateNode: true, + updater: true, + prototype: true, + type: true, + children: config.up ? false : true, + memoizedProps: true, + memoizedState: true, + child: config.up ? false : true, + return: config.up ? true : false, + sibling: config.up ? false : true + }; + let blacklist = { + contextSection: true + }; + if (BDFDB.ObjectUtils.is(config.whitelist)) Object.assign(whitelist, config.whiteList); + if (BDFDB.ObjectUtils.is(config.blacklist)) Object.assign(blacklist, config.blacklist); + let foundKeys = []; + let singleKey = getKey(instance); + if (config.all) return foundKeys; + else return singleKey; + function getKey(instance) { + depth++; + let result = undefined; + if (instance && !Node.prototype.isPrototypeOf(instance) && !BDFDB.ReactUtils.getInstance(instance) && depth < maxDepth && performance.now() - start < maxTime) { + let keys = Object.getOwnPropertyNames(instance); + for (let i = 0; result === undefined && i < keys.length; i++) { + let key = keys[i]; + if (key && !blacklist[key]) { + let value = instance[key]; + if (searchKey === key && (config.value === undefined || BDFDB.equals(config.value, value))) { + if (config.all === undefined || !config.all) result = value; + else if (config.all) { + if (config.noCopies === undefined || !config.noCopies) foundKeys.push(value); + else if (config.noCopies) { + let copy = false; + for (let foundKey of foundKeys) if (BDFDB.equals(value, foundKey)) { + copy = true; + break; + } + if (!copy) foundKeys.push(value); + } + } + } + else if ((typeof value === "object" || typeof value === "function") && (whitelist[key] || key[0] == "." || !isNaN(key[0]))) result = getKey(value); + } + } + } + depth--; + return result; + } + }; + BDFDB.ReactUtils.forceUpdate = function (...instances) { + for (let ins of instances.flat(10).filter(n => n)) if (ins.updater && typeof ins.updater.isMounted == "function" && ins.updater.isMounted(ins)) ins.forceUpdate(); + }; + BDFDB.ReactUtils.getInstance = function (node) { + if (!BDFDB.ObjectUtils.is(node)) return null; + return node[Object.keys(node).find(key => key.startsWith("__reactInternalInstance"))]; + }; + BDFDB.ReactUtils.getValue = function (nodeOrInstance, valuepath) { + if (!nodeOrInstance || !valuepath) return null; + let instance = Node.prototype.isPrototypeOf(nodeOrInstance) ? BDFDB.ReactUtils.getInstance(nodeOrInstance) : nodeOrInstance; + if (!BDFDB.ObjectUtils.is(instance)) return null; + let found = instance, values = valuepath.split(".").filter(n => n); + for (value of values) { + if (!found) return null; + found = found[value]; + } + return found; + }; + BDFDB.ReactUtils.render = function (component, node) { + if (!BDFDB.ReactUtils.isValidElement(component) || !Node.prototype.isPrototypeOf(node)) return; + try { + LibraryModules.ReactDOM.render(component, node); + let observer = new MutationObserver(changes => changes.forEach(change => { + let nodes = Array.from(change.removedNodes); + if (nodes.indexOf(node) > -1 || nodes.some(n => n.contains(node))) { + observer.disconnect(); + BDFDB.ReactUtils.unmountComponentAtNode(node); + } + })); + observer.observe(document.body, {subtree:true, childList:true}); + } + catch (err) {BDFDB.LogUtils.error("Could not render react element! " + err);} + }; + InternalBDFDB.setDefaultProps = function (component, defaultProps) { + if (BDFDB.ObjectUtils.is(component)) component.defaultProps = Object.assign({}, component.defaultProps, defaultProps); + }; + InternalBDFDB.loadPatchedComp = function (path) { + let comp = BDFDB.ReactUtils.getValue(window.BDFDB, `LibraryComponents.${path}`); + if (comp && comp.prototype && comp.prototype.BDFDBpatch) return comp; + }; + + BDFDB.sameProto = function (a, b) { + if (a != null && typeof a == "object") return a.constructor && a.constructor.prototype && typeof a.constructor.prototype.isPrototypeOf == "function" && a.constructor.prototype.isPrototypeOf(b); + else return typeof a == typeof b; + }; + BDFDB.equals = function (mainA, mainB, sorted) { + var i = -1; + if (sorted === undefined || typeof sorted !== "boolean") sorted = false; + return equal(mainA, mainB); + function equal(a, b) { + i++; + var result = true; + if (i > 1000) result = null; + else { + if (typeof a !== typeof b) result = false; + else if (typeof a === "function") result = a.toString() == b.toString(); + else if (typeof a === "undefined") result = true; + else if (typeof a === "symbol") result = true; + else if (typeof a === "boolean") result = a == b; + else if (typeof a === "string") result = a == b; + else if (typeof a === "number") { + if (isNaN(a) || isNaN(b)) result = isNaN(a) == isNaN(b); + else result = a == b; + } + else if (!a && !b) result = true; + else if (!a || !b) result = false; + else if (typeof a === "object") { + var keysA = Object.getOwnPropertyNames(a); + var keysB = Object.getOwnPropertyNames(b); + if (keysA.length !== keysB.length) result = false; + else for (let j = 0; result === true && j < keysA.length; j++) { + if (sorted) result = equal(a[keysA[j]], b[keysB[j]]); + else result = equal(a[keysA[j]], b[keysA[j]]); + } + } + } + i--; + return result; + } + }; + + let MessageRerenderTimeout; + BDFDB.MessageUtils = {}; + BDFDB.MessageUtils.rerenderAll = function () { + BDFDB.TimeUtils.clear(MessageRerenderTimeout); + MessageRerenderTimeout = BDFDB.TimeUtils.timeout(_ => { + let MessagesIns = BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.app), {name:"Messages", unlimited:true}); + let MessagesPrototype = BDFDB.ReactUtils.getValue(MessagesIns, "_reactInternalFiber.type.prototype"); + if (MessagesIns && MessagesPrototype) { + BDFDB.ModuleUtils.patch(BDFDB, MessagesPrototype, "render", {after: e => { + let [children, index] = BDFDB.ReactUtils.findParent(e.returnValue, {props: ["message", "channel"]}); + if (index > -1) for (let ele of children) if (ele.props.message) ele.props.message = new BDFDB.DiscordObjects.Message(ele.props.message); + }}, {once: true}); + BDFDB.ReactUtils.forceUpdate(MessagesIns); + } + }, 1000); + }; + + BDFDB.UserUtils = {}; + BDFDB.UserUtils.is = function (user) { + return user && user instanceof BDFDB.DiscordObjects.User; + }; + var myDataUser = LibraryModules.CurrentUserStore && LibraryModules.CurrentUserStore.getCurrentUser(); + BDFDB.UserUtils.me = new Proxy(myDataUser || {}, { + get: function (list, item) { + return (myDataUser = LibraryModules.CurrentUserStore.getCurrentUser()) && myDataUser[item]; + } + }); + BDFDB.UserUtils.getStatus = function (id = BDFDB.UserUtils.me.id) { + id = typeof id == "number" ? id.toFixed() : id; + let activity = BDFDB.UserUtils.getActivitiy(id); + return activity && activity.type == BDFDB.DiscordConstants.ActivityTypes.STREAMING ? "streaming" : LibraryModules.StatusMetaUtils.getStatus(id); + }; + BDFDB.UserUtils.getStatusColor = function (status) { + status = typeof status == "string" ? status.toLowerCase() : null; + switch (status) { + case "online": return BDFDB.DiscordConstants.Colors.STATUS_GREEN; + case "mobile": return BDFDB.DiscordConstants.Colors.STATUS_GREEN; + case "idle": return BDFDB.DiscordConstants.Colors.STATUS_YELLOW; + case "dnd": return BDFDB.DiscordConstants.Colors.STATUS_RED; + case "playing": return BDFDB.DiscordConstants.Colors.BRAND; + case "listening": return BDFDB.DiscordConstants.Colors.SPOTIFY; + case "streaming": return BDFDB.DiscordConstants.Colors.TWITCH; + default: return BDFDB.DiscordConstants.Colors.STATUS_GREY; + } + }; + BDFDB.UserUtils.getActivitiy = function (id = BDFDB.UserUtils.me.id) { + for (let activity of LibraryModules.StatusMetaUtils.getActivities(id)) if (activity.type != BDFDB.DiscordConstants.ActivityTypes.CUSTOM_STATUS) return activity; + return null; + }; + BDFDB.UserUtils.getAvatar = function (id = BDFDB.UserUtils.me.id) { + let user = LibraryModules.UserStore.getUser(typeof id == "number" ? id.toFixed() : id); + if (!user) return window.location.origin + "/assets/322c936a8c8be1b803cd94861bdfa868.png"; + else return ((user.avatar ? "" : window.location.origin) + LibraryModules.IconUtils.getUserAvatarURL(user)).split("?")[0]; + }; + BDFDB.UserUtils.can = function (permission, id = BDFDB.UserUtils.me.id, channelId = LibraryModules.LastChannelStore.getChannelId()) { + if (!BDFDB.DiscordConstants.Permissions[permission]) BDFDB.LogUtils.warn(permission + " not found in Permissions"); + else { + let channel = LibraryModules.ChannelStore.getChannel(channelId); + if (channel) return LibraryModules.PermissionUtils.canUser(id, BDFDB.DiscordConstants.Permissions[permission], channel); + } + return false; + }; + + let GuildsRerenderTimeout; + BDFDB.GuildUtils = {}; + BDFDB.GuildUtils.is = function (guild) { + if (!BDFDB.ObjectUtils.is(guild)) return false; + let keys = Object.keys(guild); + return guild instanceof BDFDB.DiscordObjects.Guild || Object.keys(new BDFDB.DiscordObjects.Guild({})).every(key => keys.indexOf(key) > -1); + }; + BDFDB.GuildUtils.getIcon = function (id) { + let guild = LibraryModules.GuildStore.getGuild(typeof id == "number" ? id.toFixed() : id); + if (!guild || !guild.icon) return null; + return LibraryModules.IconUtils.getGuildIconURL(guild).split("?")[0]; + }; + BDFDB.GuildUtils.getBanner = function (id) { + let guild = LibraryModules.GuildStore.getGuild(typeof id == "number" ? id.toFixed() : id); + if (!guild || !guild.banner) return null; + return LibraryModules.IconUtils.getGuildBannerURL(guild).split("?")[0]; + }; + BDFDB.GuildUtils.getFolder = function (id) { + return BDFDB.LibraryModules.FolderStore.guildFolders.filter(n => n.folderId).find(n => n.guildIds.includes(id)); + }; + BDFDB.GuildUtils.getId = function (div) { + if (!Node.prototype.isPrototypeOf(div) || !BDFDB.ReactUtils.getInstance(div)) return; + let guilddiv = BDFDB.DOMUtils.getParent(BDFDB.dotCN.guildouter, div); + if (!guilddiv) return; + let iconWrap = guilddiv.querySelector(BDFDB.dotCN.guildiconwrapper); + let id = iconWrap && iconWrap.href ? iconWrap.href.split("/").slice(-2)[0] : null; + return id && !isNaN(parseInt(id)) ? id.toString() : null; + }; + BDFDB.GuildUtils.getData = function (eleOrInfoOrId) { + if (!eleOrInfoOrId) return null; + let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.GuildUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId); + id = typeof id == "number" ? id.toFixed() : id; + for (let info of BDFDB.GuildUtils.getAll()) if (info && info.id == id) return info; + return null; + }; + BDFDB.GuildUtils.getAll = function () { + let found = [], objs = []; + for (let ins of BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.guilds), {name:["Guild","GuildIcon"], all:true, unlimited:true})) { + if (ins.props && ins.props.guild) objs.push(Object.assign(new ins.props.guild.constructor(ins.props.guild), {div:ins.handleContextMenu && BDFDB.ReactUtils.findDOMNode(ins), instance:ins})); + } + for (let id of BDFDB.LibraryModules.FolderStore.getFlattenedGuildIds()) { + let foundobj = null; + for (let obj of objs) if (obj.id == id) { + foundobj = obj + break; + } + if (foundobj) found.push(foundobj); + else { + let guild = BDFDB.LibraryModules.GuildStore.getGuild(id); + if (guild) found.push(Object.assign(new guild.constructor(guild), {div:null, instance:null})) + } + } + return found; + }; + BDFDB.GuildUtils.getUnread = function (servers) { + let found = []; + for (let eleOrInfoOrId of servers === undefined || !BDFDB.ArrayUtils.is(servers) ? BDFDB.GuildUtils.getAll() : servers) { + if (!eleOrInfoOrId) return null; + let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.GuildUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId); + id = typeof id == "number" ? id.toFixed() : id; + if (id && (LibraryModules.UnreadGuildUtils.hasUnread(id) || LibraryModules.UnreadGuildUtils.getMentionCount(id) > 0)) found.push(eleOrInfoOrId); + } + return found; + }; + BDFDB.GuildUtils.getPinged = function (servers) { + let found = []; + for (let eleOrInfoOrId of servers === undefined || !BDFDB.ArrayUtils.is(servers) ? BDFDB.GuildUtils.getAll() : servers) { + if (!eleOrInfoOrId) return null; + let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.GuildUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId); + id = typeof id == "number" ? id.toFixed() : id; + if (id && LibraryModules.UnreadGuildUtils.getMentionCount(id) > 0) found.push(eleOrInfoOrId); + } + return found; + }; + BDFDB.GuildUtils.getMuted = function (servers) { + let found = []; + for (let eleOrInfoOrId of servers === undefined || !BDFDB.ArrayUtils.is(servers) ? BDFDB.GuildUtils.getAll() : servers) { + if (!eleOrInfoOrId) return null; + let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.GuildUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId); + id = typeof id == "number" ? id.toFixed() : id; + if (id && LibraryModules.MutedUtils.isGuildOrCategoryOrChannelMuted(id)) found.push(eleOrInfoOrId); + } + return found; + }; + BDFDB.GuildUtils.getSelected = function () { + let info = LibraryModules.GuildStore.getGuild(LibraryModules.LastGuildStore.getGuildId()); + if (info) return BDFDB.GuildUtils.getData(info.id) || Object.assign(new info.constructor(info), {div:null, instance:null}); + else return null; + }; + BDFDB.GuildUtils.openMenu = function (eleOrInfoOrId, e = BDFDB.InternalData.mousePosition) { + if (!eleOrInfoOrId) return; + let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.GuildUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId); + let guild = LibraryModules.GuildStore.getGuild(id); + if (guild) LibraryModules.ContextMenuUtils.openContextMenu(e, function (e) { + return BDFDB.ReactUtils.createElement((BDFDB.ModuleUtils.findByName("GuildContextMenu", false) || {exports:{}}).exports.default, Object.assign({}, e, { + guild: guild + })); + }); + }; + BDFDB.GuildUtils.markAsRead = function (guilds) { + if (!guilds) return; + let unreadChannels = []; + for (let guild of BDFDB.ArrayUtils.is(guilds) ? guilds : (typeof guilds == "string" || typeof guilds == "number" ? Array.of(guilds) : Array.from(guilds))) { + let id = Node.prototype.isPrototypeOf(guild) ? BDFDB.GuildUtils.getId(guild) : (guild && typeof guild == "object" ? guild.id : guild); + let channels = id && LibraryModules.GuildChannelStore.getChannels(id); + if (channels) for (let type in channels) if (BDFDB.ArrayUtils.is(channels[type])) for (let channelObj of channels[type]) unreadChannels.push(channelObj.channel.id); + } + if (unreadChannels.length) BDFDB.ChannelUtils.markAsRead(unreadChannels); + }; + BDFDB.GuildUtils.rerenderAll = function () { + BDFDB.TimeUtils.clear(GuildsRerenderTimeout); + GuildsRerenderTimeout = BDFDB.TimeUtils.timeout(_ => { + let GuildsIns = BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.app), {name:"Guilds", unlimited:true}); + let GuildsPrototype = BDFDB.ReactUtils.getValue(GuildsIns, "_reactInternalFiber.type.prototype"); + if (GuildsIns && GuildsPrototype) { + BDFDB.ModuleUtils.patch(BDFDB, GuildsPrototype, "render", {after: e => { + let [children, index] = BDFDB.ReactUtils.findParent(e.returnValue, {name: "ConnectedUnreadDMs"}); + if (index > -1) children.splice(index + 1, 0, BDFDB.ReactUtils.createElement("div", {})); + BDFDB.ReactUtils.forceUpdate(GuildsIns); + }}, {once: true}); + BDFDB.ReactUtils.forceUpdate(GuildsIns); + } + }, 1000); + }; + + BDFDB.FolderUtils = {}; + BDFDB.FolderUtils.getId = function (div) { + if (!Node.prototype.isPrototypeOf(div) || !BDFDB.ReactUtils.getInstance(div)) return; + div = BDFDB.DOMUtils.getParent(BDFDB.dotCN.guildfolderwrapper, div); + if (!div) return; + return BDFDB.ReactUtils.findValue(div, "folderId", {up:true}); + }; + BDFDB.FolderUtils.getDefaultName = function (folderId) { + let folder = BDFDB.LibraryModules.FolderStore.getGuildFolderById(folderId); + if (!folder) return ""; + let rest = 2 * BDFDB.DiscordConstants.MAX_GUILD_FOLDER_NAME_LENGTH; + let names = [], allNames = folder.guildIds.map(guildId => (BDFDB.LibraryModules.GuildStore.getGuild(guildId) || {}).name).filter(n => n); + for (let name of allNames) if (name.length < rest || names.length === 0) { + names.push(name); + rest -= name.length; + } + return names.join(", ") + (names.length < allNames.length ? ", ..." : ""); + }; + BDFDB.FolderUtils.getDiv = function (eleOrInfoOrId) { + if (!eleOrInfoOrId) return null; + let info = BDFDB.FolderUtils.getData(eleOrInfoOrId); + return info ? info.div : null; + }; + BDFDB.FolderUtils.getData = function (eleOrInfoOrId) { + if (!eleOrInfoOrId) return null; + let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.FolderUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId); + id = typeof id == "number" ? id.toFixed() : id; + for (let info of BDFDB.FolderUtils.getAll()) if (info && info.folderId == id) return info; + return null; + }; + BDFDB.FolderUtils.getAll = function () { + let found = []; + for (let ins of BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.guildswrapper), {name:"GuildFolder", all:true, unlimited:true})) { + if (ins.props && ins.props.folderId) found.push(Object.assign({}, ins.props, {div:BDFDB.ReactUtils.findDOMNode(ins), instance:ins})); + } + return found; + }; + + BDFDB.ChannelUtils = {}; + BDFDB.ChannelUtils.is = function (channel) { + if (!BDFDB.ObjectUtils.is(channel)) return false; + let keys = Object.keys(channel); + return channel instanceof BDFDB.DiscordObjects.Channel || Object.keys(new BDFDB.DiscordObjects.Channel({})).every(key => keys.indexOf(key) > -1); + }; + BDFDB.ChannelUtils.isTextChannel = function (channelOrId) { + let channel = typeof channelOrId == "string" ? LibraryModules.ChannelStore.getChannel(channelOrId) : channelOrId; + return BDFDB.ObjectUtils.is(channel) && (channel.type == BDFDB.DiscordConstants.ChannelTypes.GUILD_TEXT || channel.type == BDFDB.DiscordConstants.ChannelTypes.GUILD_STORE || channel.type == BDFDB.DiscordConstants.ChannelTypes.GUILD_ANNOUNCEMENT); + }; + BDFDB.ChannelUtils.getId = function (div) { + if (!Node.prototype.isPrototypeOf(div) || !BDFDB.ReactUtils.getInstance(div)) return; + div = BDFDB.DOMUtils.getParent(BDFDB.dotCNC.categorycontainerdefault + BDFDB.dotCNC.channelcontainerdefault + BDFDB.dotCN.dmchannel, div); + if (!div) return; + let info = BDFDB.ReactUtils.findValue(div, "channel"); + return info ? info.id.toString() : null; + }; + BDFDB.ChannelUtils.getDiv = function (eleOrInfoOrId) { + if (!eleOrInfoOrId) return null; + let info = BDFDB.ChannelUtils.getData(eleOrInfoOrId); + return info ? info.div : null; + }; + BDFDB.ChannelUtils.getData = function (eleOrInfoOrId) { + if (!eleOrInfoOrId) return null; + let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.ChannelUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId); + id = typeof id == "number" ? id.toFixed() : id; + for (let info of BDFDB.ChannelUtils.getAll()) if (info && info.id == id) return info; + return null; + }; + BDFDB.ChannelUtils.getName = function (id, addPrefix) { + let channel = BDFDB.LibraryModules.ChannelStore.getChannel(id); + if (!channel) return ""; + switch (channel.type) { + case BDFDB.DiscordConstants.ChannelTypes.DM: + let user = channel.recipients.map(BDFDB.LibraryModules.UserStore.getUser).filter(n => n)[0]; + return (addPrefix && "@" || "") + (user && user.toString() || ""); + case BDFDB.DiscordConstants.ChannelTypes.GROUP_DM: + if (channel.name) return channel.name; + let users = channel.recipients.map(BDFDB.LibraryModules.UserStore.getUser).filter(n => n); + return users.length > 0 ? users.map(user => user.toString).join(", ") : BDFDB.LanguageUtils.LanguageStrings.UNNAMED; + case BDFDB.DiscordConstants.ChannelTypes.GUILD_ANNOUNCEMENT: + case BDFDB.DiscordConstants.ChannelTypes.GUILD_TEXT: + return (addPrefix && "#" || "") + channel.name; + default: + return channel.name + } + }; + BDFDB.ChannelUtils.getAll = function () { + let found = []; + for (let ins of BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.channels), {name: ["ChannelCategoryItem", "ChannelItem", "PrivateChannel"], all:true, unlimited:true})) if (ins.props && !ins.props.ispin && ins.props.channel && ins._reactInternalFiber.return) { + var div = BDFDB.ReactUtils.findDOMNode(ins); + div = div && BDFDB.DOMUtils.containsClass(div.parentElement, BDFDB.disCN.categorycontainerdefault, BDFDB.disCN.channelcontainerdefault, false) ? div.parentElement : div; + found.push(Object.assign(new ins.props.channel.constructor(ins.props.channel), {div, instance:ins})); + } + return found; + }; + BDFDB.ChannelUtils.getSelected = function () { + let info = LibraryModules.ChannelStore.getChannel(LibraryModules.LastChannelStore.getChannelId()); + if (info) return BDFDB.ChannelUtils.getData(info.id) || Object.assign(new info.constructor(info), {div:null, instance:null}); + else return null; + }; + BDFDB.ChannelUtils.markAsRead = function (channels) { + if (!channels) return; + let unreadChannels = []; + for (let channel of channels = BDFDB.ArrayUtils.is(channels) ? channels : (typeof channels == "string" || typeof channels == "number" ? Array.of(channels) : Array.from(channels))) { + let id = Node.prototype.isPrototypeOf(channel) ? BDFDB.ChannelUtils.getId(channel) : (channel && typeof channel == "object" ? channel.id : channel); + if (id && BDFDB.ChannelUtils.isTextChannel(id)) unreadChannels.push({ + channelId: id, + messageId: LibraryModules.UnreadChannelUtils.lastMessageId(id) + }); + } + if (unreadChannels.length) LibraryModules.AckUtils.bulkAck(unreadChannels); + }; + + BDFDB.DMUtils = {}; + BDFDB.DMUtils.isDMChannel = function (channelOrId) { + let channel = typeof channelOrId == "string" ? LibraryModules.ChannelStore.getChannel(channelOrId) : channelOrId; + return BDFDB.ObjectUtils.is(channel) && (channel.type == BDFDB.DiscordConstants.ChannelTypes.DM || channel.type == BDFDB.DiscordConstants.ChannelTypes.GROUP_DM); + }; + BDFDB.DMUtils.getIcon = function (id) { + let channel = LibraryModules.ChannelStore.getChannel(id = typeof id == "number" ? id.toFixed() : id); + if (!channel) return null; + if (!channel.icon) return channel.type == 1 ? BDFDB.UserUtils.getAvatar(channel.recipients[0]) : (channel.type == 3 ? window.location.origin + LibraryModules.IconUtils.getChannelIconURL(channel).split("?")[0] : null); + return LibraryModules.IconUtils.getChannelIconURL(channel).split("?")[0]; + }; + BDFDB.DMUtils.getId = function (div) { + if (!Node.prototype.isPrototypeOf(div) || !BDFDB.ReactUtils.getInstance(div)) return; + let dmdiv = BDFDB.DOMUtils.getParent(BDFDB.dotCN.guildouter, div); + if (!dmdiv) return; + let iconWrap = dmdiv.querySelector(BDFDB.dotCN.guildiconwrapper); + let id = iconWrap && iconWrap.href ? iconWrap.href.split("/").slice(-1)[0] : null; + return id && !isNaN(parseInt(id)) ? id.toString() : null; + }; + BDFDB.DMUtils.getDiv = function (eleOrInfoOrId) { + if (!eleOrInfoOrId) return null; + if (Node.prototype.isPrototypeOf(eleOrInfoOrId)) { + var div = BDFDB.DOMUtils.getParent(BDFDB.dotCN.guildouter, eleOrInfoOrId); + return div ? div.parentElement : div; + } + else { + let id = typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId; + if (id) { + var div = BDFDB.DOMUtils.getParent(BDFDB.dotCN.guildouter, document.querySelector(`${BDFDB.dotCNS.guilds + BDFDB.dotCN.dmpill + " + * " + BDFDB.dotCN.guildiconwrapper}[href*="/channels/@me/${id}"]`)); + return div && BDFDB? div.parentElement : div; + } + } + return null; + }; + BDFDB.DMUtils.getData = function (eleOrInfoOrId) { + if (!eleOrInfoOrId) return null; + let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.BDFDB.DMUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId); + id = typeof id == "number" ? id.toFixed() : id; + for (let info of BDFDB.DMUtils.getAll()) if (info && info.id == id) return info; + return null; + }; + BDFDB.DMUtils.getAll = function () { + let found = []; + for (let ins of BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.guilds), {name:"DirectMessage", all:true, unlimited:true})) { + if (ins.props && ins.props.channel) found.push(Object.assign(new ins.props.channel.constructor(ins.props.channel), {div:BDFDB.ReactUtils.findDOMNode(ins), instance:ins})); + } + return found; + }; + BDFDB.DMUtils.openMenu = function (eleOrInfoOrId, e = BDFDB.InternalData.mousePosition) { + if (!eleOrInfoOrId) return; + let id = Node.prototype.isPrototypeOf(eleOrInfoOrId) ? BDFDB.ChannelUtils.getId(eleOrInfoOrId) : (typeof eleOrInfoOrId == "object" ? eleOrInfoOrId.id : eleOrInfoOrId); + let channel = LibraryModules.ChannelStore.getChannel(id); + if (channel) { + if (channel.isMultiUserDM()) LibraryModules.ContextMenuUtils.openContextMenu(e, function (e) { + return BDFDB.ReactUtils.createElement((BDFDB.ModuleUtils.findByName("GroupDMContextMenu", false) || {exports:{}}).exports.default, Object.assign({}, e, { + channel: channel, + selected: channel.id == LibraryModules.LastChannelStore.getChannelId() + })); + }); + else LibraryModules.ContextMenuUtils.openContextMenu(e, function (e) { + return BDFDB.ReactUtils.createElement((BDFDB.ModuleUtils.findByName("DMUserContextMenu", false) || {exports:{}}).exports.default, Object.assign({}, e, { + user: LibraryModules.UserStore.getUser(channel.recipients[0]), + channel: channel, + selected: channel.id == LibraryModules.LastChannelStore.getChannelId() + })); + }); + } + }; + BDFDB.DMUtils.markAsRead = function (dms) { + if (!dms) return; + let unreadChannels = []; + for (let dm of dms = BDFDB.ArrayUtils.is(dms) ? dms : (typeof dms == "string" || typeof dms == "number" ? Array.of(dms) : Array.from(dms))) { + let id = Node.prototype.isPrototypeOf(dm) ? BDFDB.BDFDB.DMUtils.getId(dm) : (dm && typeof dm == "object" ? dm.id : dm); + if (id) unreadChannels.push(id); + } + for (let i in unreadChannels) BDFDB.TimeUtils.timeout(_ => {LibraryModules.AckUtils.ack(unreadChannels[i]);}, i * 1000); + }; + + BDFDB.DataUtils = {}; + BDFDB.DataUtils.cached = window.BDFDB && window.BDFDB.DataUtils && window.BDFDB.DataUtils.cached || {}; + BDFDB.DataUtils.save = function (data, plugin, key, id) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + let pluginName = typeof plugin === "string" ? plugin : plugin.name; + let configPath = LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), pluginName + ".config.json"); + + let config = BDFDB.DataUtils.cached[pluginName] !== undefined ? BDFDB.DataUtils.cached[pluginName] : (InternalBDFDB.readConfig(configPath) || {}); + + if (key === undefined) config = BDFDB.ObjectUtils.is(data) ? BDFDB.ObjectUtils.sort(data) : data; + else { + if (id === undefined) config[key] = BDFDB.ObjectUtils.is(data) ? BDFDB.ObjectUtils.sort(data) : data; + else { + if (!BDFDB.ObjectUtils.is(config[key])) config[key] = {}; + config[key][id] = BDFDB.ObjectUtils.is(data) ? BDFDB.ObjectUtils.sort(data) : data; + } + } + + let configIsObject = BDFDB.ObjectUtils.is(config); + if (key !== undefined && configIsObject && BDFDB.ObjectUtils.is(config[key]) && BDFDB.ObjectUtils.isEmpty(config[key])) delete config[key]; + if (BDFDB.ObjectUtils.isEmpty(config)) { + delete BDFDB.DataUtils.cached[pluginName]; + if (LibraryRequires.fs.existsSync(configPath)) LibraryRequires.fs.unlinkSync(configPath); + } + else { + if (configIsObject) config = BDFDB.ObjectUtils.sort(config); + BDFDB.DataUtils.cached[pluginName] = configIsObject ? BDFDB.ObjectUtils.deepAssign({}, config) : config; + InternalBDFDB.writeConfig(configPath, config); + } + }; + + BDFDB.DataUtils.load = function (plugin, key, id) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + let pluginName = typeof plugin === "string" ? plugin : plugin.name; + let configPath = LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), pluginName + ".config.json"); + + let config = BDFDB.DataUtils.cached[pluginName] !== undefined ? BDFDB.DataUtils.cached[pluginName] : (InternalBDFDB.readConfig(configPath) || {}); + let configIsObject = BDFDB.ObjectUtils.is(config); + BDFDB.DataUtils.cached[pluginName] = configIsObject ? BDFDB.ObjectUtils.deepAssign({}, config) : config; + + if (key === undefined) return config; + else { + let keydata = configIsObject ? (BDFDB.ObjectUtils.is(config[key]) || config[key] == undefined ? BDFDB.ObjectUtils.deepAssign({}, config[key]) : config[key]) : null; + if (id === undefined) return keydata; + else return !BDFDB.ObjectUtils.is(keydata) || keydata[id] === undefined ? null : keydata[id]; + } + }; + BDFDB.DataUtils.remove = function (plugin, key, id) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + let pluginName = typeof plugin === "string" ? plugin : plugin.name; + let configPath = LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), pluginName + ".config.json"); + + let config = BDFDB.DataUtils.cached[pluginName] !== undefined ? BDFDB.DataUtils.cached[pluginName] : (InternalBDFDB.readConfig(configPath) || {}); + let configIsObject = BDFDB.ObjectUtils.is(config); + + if (key === undefined || !configIsObject) config = {}; + else { + if (id === undefined) delete config[key]; + else if (BDFDB.ObjectUtils.is(config[key])) delete config[key][id]; + } + + if (BDFDB.ObjectUtils.is(config[key]) && BDFDB.ObjectUtils.isEmpty(config[key])) delete config[key]; + if (BDFDB.ObjectUtils.isEmpty(config)) { + delete BDFDB.DataUtils.cached[pluginName]; + if (LibraryRequires.fs.existsSync(configPath)) LibraryRequires.fs.unlinkSync(configPath); + } + else { + if (configIsObject) config = BDFDB.ObjectUtils.sort(config); + BDFDB.DataUtils.cached[pluginName] = configIsObject ? BDFDB.ObjectUtils.deepAssign({}, config) : config; + InternalBDFDB.writeConfig(configPath, config); + } + }; + BDFDB.DataUtils.get = function (plugin, key, id) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + plugin = typeof plugin == "string" ? BDFDB.BDUtils.getPlugin(plugin) : plugin; + if (!BDFDB.ObjectUtils.is(plugin)) return id === undefined ? {} : null; + let defaults = plugin.defaults; + if (!BDFDB.ObjectUtils.is(defaults) || !defaults[key]) return id === undefined ? {} : null; + let oldC = BDFDB.DataUtils.load(plugin, key), newC = {}, update = false; + for (let k in defaults[key]) { + let isObj = BDFDB.ObjectUtils.is(defaults[key][k].value); + if (oldC[k] == null || isObj && (!BDFDB.ObjectUtils.is(oldC[k]) || Object.keys(defaults[key][k].value).some(n => defaults[key][k].value[n] != null && !BDFDB.sameProto(defaults[key][k].value[n], oldC[k][n])))) { + newC[k] = isObj ? BDFDB.ObjectUtils.deepAssign({}, defaults[key][k].value) : defaults[key][k].value; + update = true; + } + else newC[k] = oldC[k]; + } + if (update) BDFDB.DataUtils.save(newC, plugin, key); + + if (id === undefined) return newC; + else return newC[id] === undefined ? null : newC[id]; + }; + InternalBDFDB.writeConfig = function (path, config) { + try {LibraryRequires.fs.writeFileSync(path, JSON.stringify(config, null, " "));} + catch (err) {} + }; + InternalBDFDB.readConfig = function (path) { + try {return JSON.parse(LibraryRequires.fs.readFileSync(path));} + catch (err) {return {};} + }; + + BDFDB.ColorUtils = {}; + BDFDB.ColorUtils.convert = function (color, conv, type) { + if (BDFDB.ObjectUtils.is(color)) { + var newColor = {}; + for (let pos in color) newColor[pos] = BDFDB.ColorUtils.convert(color[pos], conv, type); + return newColor; + } + else { + conv = conv === undefined || !conv ? conv = "RGBCOMP" : conv.toUpperCase(); + type = type === undefined || !type || !["RGB", "RGBA", "RGBCOMP", "HSL", "HSLA", "HSLCOMP", "HEX", "HEXA", "INT"].includes(type.toUpperCase()) ? BDFDB.ColorUtils.getType(color) : type.toUpperCase(); + if (conv == "RGBCOMP") { + switch (type) { + case "RGBCOMP": + if (color.length == 3) return processRGB(color); + else if (color.length == 4) { + let a = processA(color.pop()); + return processRGB(color).concat(a); + } + break; + case "RGB": + return processRGB(color.replace(/\s/g, "").slice(4, -1).split(",")); + case "RGBA": + let comp = color.replace(/\s/g, "").slice(5, -1).split(","); + let a = processA(comp.pop()); + return processRGB(comp).concat(a); + case "HSLCOMP": + if (color.length == 3) return BDFDB.ColorUtils.convert(`hsl(${processHSL(color).join(",")})`, "RGBCOMP"); + else if (color.length == 4) { + let a = processA(color.pop()); + return BDFDB.ColorUtils.convert(`hsl(${processHSL(color).join(",")})`, "RGBCOMP").concat(a); + } + break; + case "HSL": + var hslcomp = processHSL(color.replace(/\s/g, "").slice(4, -1).split(",")); + var r, g, b, m, c, x, p, q; + var h = hslcomp[0] / 360, l = parseInt(hslcomp[1]) / 100, s = parseInt(hslcomp[2]) / 100; m = Math.floor(h * 6); c = h * 6 - m; x = s * (1 - l); p = s * (1 - c * l); q = s * (1 - (1 - c) * l); + switch (m % 6) { + case 0: r = s, g = q, b = x; break; + case 1: r = p, g = s, b = x; break; + case 2: r = x, g = s, b = q; break; + case 3: r = x, g = p, b = s; break; + case 4: r = q, g = x, b = s; break; + case 5: r = s, g = x, b = p; break; + } + return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; + case "HSLA": + var hslcomp = color.replace(/\s/g, "").slice(5, -1).split(","); + return BDFDB.ColorUtils.convert(`hsl(${hslcomp.slice(0, 3).join(",")})`, "RGBCOMP").concat(processA(hslcomp.pop())); + case "HEX": + var hex = /^#([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$|^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(color); + return [parseInt(hex[1] + hex[1] || hex[4], 16).toString(), parseInt(hex[2] + hex[2] || hex[5], 16).toString(), parseInt(hex[3] + hex[3] || hex[6], 16).toString()]; + case "HEXA": + var hex = /^#([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$|^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(color); + return [parseInt(hex[1] + hex[1] || hex[5], 16).toString(), parseInt(hex[2] + hex[2] || hex[6], 16).toString(), parseInt(hex[3] + hex[3] || hex[7], 16).toString(), Math.floor(BDFDB.NumberUtils.mapRange([0, 255], [0, 100], parseInt(hex[4] + hex[4] || hex[8], 16).toString()))/100]; + case "INT": + color = processINT(color); + return [(color >> 16 & 255).toString(), (color >> 8 & 255).toString(), (color & 255).toString()]; + default: + return null; + } + } + else { + if (conv && type && conv.indexOf("HSL") == 0 && type.indexOf("HSL") == 0) { + if (type == "HSLCOMP") { + switch (conv) { + case "HSLCOMP": + if (color.length == 3) return processHSL(color); + else if (color.length == 4) { + var a = processA(color.pop()); + return processHSL(color).concat(a); + } + break; + case "HSL": + return `hsl(${processHSL(color.slice(0, 3)).join(",")})`; + case "HSLA": + color = color.slice(0, 4); + var a = color.length == 4 ? processA(color.pop()) : 1; + return `hsla(${processHSL(color).concat(a).join(",")})`; + } + } + else return BDFDB.ColorUtils.convert(color.replace(/\s/g, "").slice(color.toLowerCase().indexOf("hsla") == 0 ? 5 : 4, -1).split(","), conv, "HSLCOMP"); + } + else { + let rgbcomp = type == "RGBCOMP" ? color : BDFDB.ColorUtils.convert(color, "RGBCOMP", type); + if (rgbcomp) switch (conv) { + case "RGB": + return `rgb(${processRGB(rgbcomp.slice(0, 3)).join(",")})`; + case "RGBA": + rgbcomp = rgbcomp.slice(0, 4); + var a = rgbcomp.length == 4 ? processA(rgbcomp.pop()) : 1; + return `rgba(${processRGB(rgbcomp).concat(a).join(",")})`; + case "HSLCOMP": + var a = rgbcomp.length == 4 ? processA(rgbcomp.pop()) : null; + var hslcomp = processHSL(BDFDB.ColorUtils.convert(rgbcomp, "HSL").replace(/\s/g, "").split(",")); + return a != null ? hslcomp.concat(a) : hslcomp; + case "HSL": + var r = processC(rgbcomp[0]), g = processC(rgbcomp[1]), b = processC(rgbcomp[2]); + var max = Math.max(r, g, b), min = Math.min(r, g, b), dif = max - min, h, l = max === 0 ? 0 : dif / max, s = max / 255; + switch (max) { + case min: h = 0; break; + case r: h = g - b + dif * (g < b ? 6 : 0); h /= 6 * dif; break; + case g: h = b - r + dif * 2; h /= 6 * dif; break; + case b: h = r - g + dif * 4; h /= 6 * dif; break; + } + return `hsl(${processHSL([Math.round(h * 360), l * 100, s * 100]).join(",")})`; + case "HSLA": + var a = rgbcomp.length == 4 ? processA(rgbcomp.pop()) : 1; + return `hsla(${BDFDB.ColorUtils.convert(rgbcomp, "HSL").slice(4, -1).split(",").concat(a).join(",")})`; + case "HEX": + return ("#" + (0x1000000 + (rgbcomp[2] | rgbcomp[1] << 8 | rgbcomp[0] << 16)).toString(16).slice(1)).toUpperCase(); + case "HEXA": + return ("#" + (0x1000000 + (rgbcomp[2] | rgbcomp[1] << 8 | rgbcomp[0] << 16)).toString(16).slice(1) + (0x100 + Math.round(BDFDB.NumberUtils.mapRange([0, 100], [0, 255], processA(rgbcomp[3]) * 100))).toString(16).slice(1)).toUpperCase(); + case "INT": + return processINT(rgbcomp[2] | rgbcomp[1] << 8 | rgbcomp[0] << 16); + default: + return null; + } + } + } + } + return null; + function processC(c) {if (c == null) {return 255;} else {c = parseInt(c.toString().replace(/[^0-9\-]/g, ""));return isNaN(c) || c > 255 ? 255 : c < 0 ? 0 : c;}}; + function processRGB(comp) {return comp.map(c => {return processC(c);});}; + function processA(a) {if (a == null) {return 1;} else {a = a.toString();a = (a.indexOf("%") > -1 ? 0.01 : 1) * parseFloat(a.replace(/[^0-9\.\-]/g, ""));return isNaN(a) || a > 1 ? 1 : a < 0 ? 0 : a;}}; + function processSL(sl) {if (sl == null) {return "100%";} else {sl = parseFloat(sl.toString().replace(/[^0-9\.\-]/g, ""));return (isNaN(sl) || sl > 100 ? 100 : sl < 0 ? 0 : sl) + "%";}}; + function processHSL(comp) {let h = parseFloat(comp.shift().toString().replace(/[^0-9\.\-]/g, ""));h = isNaN(h) || h > 360 ? 360 : h < 0 ? 0 : h;return [h].concat(comp.map(sl => {return processSL(sl);}));}; + function processINT(c) {if (c == null) {return 16777215;} else {c = parseInt(c.toString().replace(/[^0-9]/g, ""));return isNaN(c) || c > 16777215 ? 16777215 : c < 0 ? 0 : c;}}; + }; + BDFDB.ColorUtils.setAlpha = function (color, a, conv) { + if (BDFDB.ObjectUtils.is(color)) { + var newcolor = {}; + for (let pos in color) newcolor[pos] = BDFDB.ColorUtils.setAlpha(color[pos], a, conv); + return newcolor; + } + else { + var comp = BDFDB.ColorUtils.convert(color, "RGBCOMP"); + if (comp) { + a = a.toString(); + a = (a.indexOf("%") > -1 ? 0.01 : 1) * parseFloat(a.replace(/[^0-9\.\-]/g, "")); + a = isNaN(a) || a > 1 ? 1 : a < 0 ? 0 : a; + comp[3] = a; + conv = (conv || BDFDB.ColorUtils.getType(color)).toUpperCase(); + conv = conv == "RGB" || conv == "HSL" || conv == "HEX" ? conv + "A" : conv; + return BDFDB.ColorUtils.convert(comp, conv); + } + } + return null; + }; + BDFDB.ColorUtils.getAlpha = function (color) { + var comp = BDFDB.ColorUtils.convert(color, "RGBCOMP"); + if (comp) { + if (comp.length == 3) return 1; + else if (comp.length == 4) { + let a = comp[3].toString(); + a = (a.indexOf("%") > -1 ? 0.01 : 1) * parseFloat(a.replace(/[^0-9\.\-]/g, "")); + return isNaN(a) || a > 1 ? 1 : a < 0 ? 0 : a; + } + } + return null; + }; + BDFDB.ColorUtils.change = function (color, value, conv) { + value = parseFloat(value); + if (color != null && typeof value == "number" && !isNaN(value)) { + if (BDFDB.ObjectUtils.is(color)) { + var newcolor = {}; + for (let pos in color) newcolor[pos] = BDFDB.ColorUtils.change(color[pos], value, conv); + return newcolor; + } + else { + var comp = BDFDB.ColorUtils.convert(color, "RGBCOMP"); + if (comp) { + if (parseInt(value) !== value) { + value = value.toString(); + value = (value.indexOf("%") > -1 ? 0.01 : 1) * parseFloat(value.replace(/[^0-9\.\-]/g, "")); + value = isNaN(value) ? 0 : value; + return BDFDB.ColorUtils.convert([Math.round(comp[0] * (1 + value)), Math.round(comp[1] * (1 + value)), Math.round(comp[2] * (1 + value))], conv || BDFDB.ColorUtils.getType(color)); + } + else return BDFDB.ColorUtils.convert([Math.round(comp[0] + value), Math.round(comp[1] + value), Math.round(comp[2] + value)], conv || BDFDB.ColorUtils.getType(color)); + } + } + } + return null; + }; + BDFDB.ColorUtils.invert = function (color, conv) { + if (BDFDB.ObjectUtils.is(color)) { + var newcolor = {}; + for (let pos in color) newcolor[pos] = BDFDB.ColorUtils.invert(color[pos], conv); + return newcolor; + } + else { + var comp = BDFDB.ColorUtils.convert(color, "RGBCOMP"); + if (comp) return BDFDB.ColorUtils.convert([255 - comp[0], 255 - comp[1], 255 - comp[2]], conv || BDFDB.ColorUtils.getType(color)); + } + return null; + }; + BDFDB.ColorUtils.compare = function (color1, color2) { + if (color1 && color2) { + color1 = BDFDB.ColorUtils.convert(color1, "RGBA"); + color2 = BDFDB.ColorUtils.convert(color2, "RGBA"); + if (color1 && color2) return BDFDB.equals(color1, color2); + } + return null; + }; + BDFDB.ColorUtils.isBright = function (color, compare = 160) { + color = BDFDB.ColorUtils.convert(color, "RGBCOMP"); + if (!color) return false; + return parseInt(compare) < Math.sqrt(0.299 * color[0]**2 + 0.587 * color[1]**2 + 0.144 * color[2]**2); + }; + BDFDB.ColorUtils.getType = function (color) { + if (color != null) { + if (typeof color === "object" && (color.length == 3 || color.length == 4)) { + if (isRGB(color)) return "RGBCOMP"; + else if (isHSL(color)) return "HSLCOMP"; + } + else if (typeof color === "string") { + if (/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i.test(color)) return "HEX"; + else if (/^#[a-f\d]{4}$|^#[a-f\d]{8}$/i.test(color)) return "HEXA"; + else { + color = color.toUpperCase(); + var comp = color.replace(/[^0-9\.\-\,\%]/g, "").split(","); + if (color.indexOf("RGB(") == 0 && comp.length == 3 && isRGB(comp)) return "RGB"; + else if (color.indexOf("RGBA(") == 0 && comp.length == 4 && isRGB(comp)) return "RGBA"; + else if (color.indexOf("HSL(") == 0 && comp.length == 3 && isHSL(comp)) return "HSL"; + else if (color.indexOf("HSLA(") == 0 && comp.length == 4 && isHSL(comp)) return "HSLA"; + } + } + else if (typeof color === "number" && parseInt(color) == color && color > -1 && color < 16777216) return "INT"; + } + return null; + function isRGB(comp) {return comp.slice(0, 3).every(rgb => rgb.toString().indexOf("%") == -1 && parseFloat(rgb) == parseInt(rgb));}; + function isHSL(comp) {return comp.slice(1, 3).every(hsl => hsl.toString().indexOf("%") == hsl.length - 1);}; + }; + BDFDB.ColorUtils.createGradient = function (colorobj, direction = "to right") { + var sortedgradient = {}; + var gradientstring = "linear-gradient(" + direction; + for (let pos of Object.keys(colorobj).sort()) { + let color = BDFDB.ColorUtils.convert(colorobj[pos], "RGBA"); + gradientstring += color ? `, ${color} ${pos*100}%` : '' + } + return gradientstring += ")"; + }; + BDFDB.ColorUtils.getSwatchColor = function (container, number) { + if (!Node.prototype.isPrototypeOf(container)) return; + let swatches = container.querySelector(`${BDFDB.dotCN.colorpickerswatches}[number="${number}"], ${BDFDB.dotCN.colorpickerswatch}[number="${number}"]`); + if (!swatches) return null; + return BDFDB.ColorUtils.convert(BDFDB.ReactUtils.findValue(BDFDB.ReactUtils.getInstance(swatches), "selectedColor", {up:true, blacklist:{"props":true}})); + }; + + BDFDB.DOMUtils = {}; + BDFDB.DOMUtils.getSelection = function () { + let selection = document.getSelection(); + return selection && selection.anchorNode ? selection.getRangeAt(0).toString() : ""; + }; + BDFDB.DOMUtils.addClass = function (eles, ...classes) { + if (!eles || !classes) return; + for (let ele of [eles].flat(10).filter(n => n)) { + if (Node.prototype.isPrototypeOf(ele)) add(ele); + else if (NodeList.prototype.isPrototypeOf(ele)) for (let e of ele) add(e); + else if (typeof ele == "string") for (let e of ele.split(",")) if (e && (e = e.trim())) for (let n of document.querySelectorAll(e)) add(n); + } + function add(node) { + if (node && node.classList) for (let cla of classes) for (let cl of [cla].flat(10).filter(n => n)) if (typeof cl == "string") for (let c of cl.split(" ")) if (c) node.classList.add(c); + } + }; + BDFDB.DOMUtils.removeClass = function (eles, ...classes) { + if (!eles || !classes) return; + for (let ele of [eles].flat(10).filter(n => n)) { + if (Node.prototype.isPrototypeOf(ele)) remove(ele); + else if (NodeList.prototype.isPrototypeOf(ele)) for (let e of ele) remove(e); + else if (typeof ele == "string") for (let e of ele.split(",")) if (e && (e = e.trim())) for (let n of document.querySelectorAll(e)) remove(n); + } + function remove(node) { + if (node && node.classList) for (let cla of classes) for (let cl of [cla].flat(10).filter(n => n)) if (typeof cl == "string") for (let c of cl.split(" ")) if (c) node.classList.remove(c); + } + }; + BDFDB.DOMUtils.toggleClass = function (eles, ...classes) { + if (!eles || !classes) return; + var force = classes.pop(); + if (typeof force != "boolean") { + classes.push(force); + force = undefined; + } + if (!classes.length) return; + for (let ele of [eles].flat(10).filter(n => n)) { + if (!ele) {} + else if (Node.prototype.isPrototypeOf(ele)) toggle(ele); + else if (NodeList.prototype.isPrototypeOf(ele)) for (let e of ele) toggle(e); + else if (typeof ele == "string") for (let e of ele.split(",")) if (e && (e = e.trim())) for (let n of document.querySelectorAll(e)) toggle(n); + } + function toggle(node) { + if (node && node.classList) for (let cla of classes) for (let cl of [cla].flat(10).filter(n => n)) if (typeof cl == "string") for (let c of cl.split(" ")) if (c) node.classList.toggle(c, force); + } + }; + BDFDB.DOMUtils.containsClass = function (eles, ...classes) { + if (!eles || !classes) return; + let all = classes.pop(); + if (typeof all != "boolean") { + classes.push(all); + all = true; + } + if (!classes.length) return; + let contained = undefined; + for (let ele of BDFDB.ArrayUtils.is(eles) ? eles : Array.of(eles)) { + if (!ele) {} + else if (Node.prototype.isPrototypeOf(ele)) contains(ele); + else if (NodeList.prototype.isPrototypeOf(ele)) for (let e of ele) contains(e); + else if (typeof ele == "string") for (let c of ele.split(",")) if (c && (c = c.trim())) for (let n of document.querySelectorAll(c)) contains(n); + } + return contained; + function contains(node) { + if (node && node.classList) for (let cla of classes) if (typeof cla == "string") for (let c of cla.split(" ")) if (c) { + if (contained === undefined) contained = all; + if (all && !node.classList.contains(c)) contained = false; + if (!all && node.classList.contains(c)) contained = true; + } + } + }; + BDFDB.DOMUtils.replaceClass = function (eles, oldclass, newclass) { + if (!eles || typeof oldclass != "string" || typeof newclass != "string") return; + for (let ele of [eles].flat(10).filter(n => n)) { + if (Node.prototype.isPrototypeOf(ele)) replace(ele); + else if (NodeList.prototype.isPrototypeOf(ele)) for (let e of ele) replace(e); + else if (typeof ele == "string") for (let e of ele.split(",")) if (e && (e = e.trim())) for (let n of document.querySelectorAll(e)) replace(n); + } + function replace(node) { + if (node && node.tagName && node.className) node.className = node.className.replace(new RegExp(oldclass, "g"), newclass).trim(); + } + }; + BDFDB.DOMUtils.formatClassName = function (...classes) { + return BDFDB.ArrayUtils.removeCopies(classes.flat(10).filter(n => n).join(" ").split(" ")).join(" ").trim(); + }; + BDFDB.DOMUtils.removeClassFromDOM = function (...classes) { + for (let c of classes.flat(10).filter(n => n)) if (typeof c == "string") for (let a of c.split(",")) if (a && (a = a.replace(/\.|\s/g, ""))) BDFDB.DOMUtils.removeClass(document.querySelectorAll("." + a), a); + }; + BDFDB.DOMUtils.show = function (...eles) { + BDFDB.DOMUtils.toggle(...eles, true); + }; + BDFDB.DOMUtils.hide = function (...eles) { + BDFDB.DOMUtils.toggle(...eles, false); + }; + BDFDB.DOMUtils.toggle = function (...eles) { + if (!eles) return; + var force = eles.pop(); + if (typeof force != "boolean") { + eles.push(force); + force = undefined; + } + if (!eles.length) return; + for (let ele of eles.flat(10).filter(n => n)) { + if (Node.prototype.isPrototypeOf(ele)) toggle(ele); + else if (NodeList.prototype.isPrototypeOf(ele)) for (let node of ele) toggle(node); + else if (typeof ele == "string") for (let c of ele.split(",")) if (c && (c = c.trim())) for (let node of document.querySelectorAll(c)) toggle(node); + } + function toggle(node) { + if (!node || !Node.prototype.isPrototypeOf(node)) return; + var hidden = force === undefined ? !BDFDB.DOMUtils.isHidden(node) : !force; + if (hidden) node.style.setProperty("display", "none", "important"); + else node.style.removeProperty("display"); + } + }; + BDFDB.DOMUtils.isHidden = function (node) { + if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) return getComputedStyle(node, null).getPropertyValue("display") == "none"; + }; + BDFDB.DOMUtils.remove = function (...eles) { + for (let ele of eles.flat(10).filter(n => n)) { + if (Node.prototype.isPrototypeOf(ele)) ele.remove(); + else if (NodeList.prototype.isPrototypeOf(ele)) { + let nodes = Array.from(ele); + while (nodes.length) nodes.shift().remove(); + } + else if (typeof ele == "string") for (let c of ele.split(",")) if (c && (c = c.trim())) { + let nodes = Array.from(document.querySelectorAll(c)); + while (nodes.length) nodes.shift().remove(); + } + } + }; + BDFDB.DOMUtils.create = function (html) { + if (typeof html != "string" || !html.trim()) return null; + let template = document.createElement("template"); + try {template.innerHTML = html.replace(/(?[\t\r\n]+<(?!pre)/g, "><");} + catch (err) {template.innerHTML = html.replace(/>[\t\r\n]+<(?!pre)/g, "><");} + if (template.content.childNodes.length == 1) return template.content.firstElementChild; + else { + let wrapper = document.createElement("span"); + let nodes = Array.from(template.content.childNodes); + while (nodes.length) wrapper.appendChild(nodes.shift()); + return wrapper; + } + }; + BDFDB.DOMUtils.getParent = function (listOrSelector, node) { + let parent = null; + if (Node.prototype.isPrototypeOf(node) && listOrSelector) { + let list = NodeList.prototype.isPrototypeOf(listOrSelector) ? listOrSelector : typeof listOrSelector == "string" ? document.querySelectorAll(listOrSelector) : null; + if (list) for (let listNode of list) if (listNode.contains(node)) { + parent = listNode; + break; + } + } + return parent; + }; + BDFDB.DOMUtils.setText = function (node, stringOrNode) { + if (!node || !Node.prototype.isPrototypeOf(node)) return; + let textnode = node.nodeType == Node.TEXT_NODE ? node : null; + if (!textnode) for (let child of node.childNodes) if (child.nodeType == Node.TEXT_NODE || BDFDB.DOMUtils.containsClass(child, "BDFDB-textnode")) { + textnode = child; + break; + } + if (textnode) { + if (Node.prototype.isPrototypeOf(stringOrNode) && stringOrNode.nodeType != Node.TEXT_NODE) { + BDFDB.DOMUtils.addClass(stringOrNode, "BDFDB-textnode"); + node.replaceChild(stringOrNode, textnode); + } + else if (Node.prototype.isPrototypeOf(textnode) && textnode.nodeType != Node.TEXT_NODE) node.replaceChild(document.createTextNode(stringOrNode), textnode); + else textnode.textContent = stringOrNode; + } + else node.appendChild(Node.prototype.isPrototypeOf(stringOrNode) ? stringOrNode : document.createTextNode(stringOrNode)); + }; + BDFDB.DOMUtils.getText = function (node) { + if (!node || !Node.prototype.isPrototypeOf(node)) return; + for (let child of node.childNodes) if (child.nodeType == Node.TEXT_NODE) return child.textContent; + }; + BDFDB.DOMUtils.getRects = function (node) { + let rects = {}; + if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) { + let hideNode = node; + while (hideNode) { + let hidden = BDFDB.DOMUtils.isHidden(hideNode); + if (hidden) { + BDFDB.DOMUtils.toggle(hideNode, true); + hideNode.BDFDBgetRectsHidden = true; + } + hideNode = hideNode.parentElement; + } + rects = node.getBoundingClientRect(); + hideNode = node; + while (hideNode) { + if (hideNode.BDFDBgetRectsHidden) { + BDFDB.DOMUtils.toggle(hideNode, false); + delete hideNode.BDFDBgetRectsHidden; + } + hideNode = hideNode.parentElement; + } + } + return rects; + }; + BDFDB.DOMUtils.getHeight = function (node) { + if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) { + let rects = BDFDB.DOMUtils.getRects(node); + let style = getComputedStyle(node); + return rects.height + parseInt(style.marginTop) + parseInt(style.marginBottom); + } + return 0; + }; + BDFDB.DOMUtils.getInnerHeight = function (node) { + if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) { + let rects = BDFDB.DOMUtils.getRects(node); + let style = getComputedStyle(node); + return rects.height - parseInt(style.paddingTop) - parseInt(style.paddingBottom); + } + return 0; + }; + BDFDB.DOMUtils.getWidth = function (node) { + if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) { + let rects = BDFDB.DOMUtils.getRects(node); + let style = getComputedStyle(node); + return rects.width + parseInt(style.marginLeft) + parseInt(style.marginRight); + } + return 0; + }; + BDFDB.DOMUtils.getInnerWidth = function (node) { + if (Node.prototype.isPrototypeOf(node) && node.nodeType != Node.TEXT_NODE) { + let rects = BDFDB.DOMUtils.getRects(node); + let style = getComputedStyle(node); + return rects.width - parseInt(style.paddingLeft) - parseInt(style.paddingRight); + } + return 0; + }; + BDFDB.DOMUtils.appendWebScript = function (url, container) { + if (!container && !document.head.querySelector("bd-head bd-scripts")) document.head.appendChild(BDFDB.DOMUtils.create(``)); + container = container || document.head.querySelector("bd-head bd-scripts") || document.head; + container = Node.prototype.isPrototypeOf(container) ? container : document.head; + BDFDB.DOMUtils.removeWebScript(url, container); + let script = document.createElement("script"); + script.src = url; + container.appendChild(script); + }; + BDFDB.DOMUtils.removeWebScript = function (url, container) { + container = container || document.head.querySelector("bd-head bd-scripts") || document.head; + container = Node.prototype.isPrototypeOf(container) ? container : document.head; + BDFDB.DOMUtils.remove(container.querySelectorAll(`script[src="${url}"]`)); + }; + BDFDB.DOMUtils.appendWebStyle = function (url, container) { + if (!container && !document.head.querySelector("bd-head bd-styles")) document.head.appendChild(BDFDB.DOMUtils.create(``)); + container = container || document.head.querySelector("bd-head bd-styles") || document.head; + container = Node.prototype.isPrototypeOf(container) ? container : document.head; + BDFDB.DOMUtils.removeWebStyle(url, container); + container.appendChild(BDFDB.DOMUtils.create(``)); + }; + BDFDB.DOMUtils.removeWebStyle = function (url, container) { + container = container || document.head.querySelector("bd-head bd-styles") || document.head; + container = Node.prototype.isPrototypeOf(container) ? container : document.head; + BDFDB.DOMUtils.remove(container.querySelectorAll(`link[href="${url}"]`)); + }; + BDFDB.DOMUtils.appendLocalStyle = function (id, css, container) { + if (!container && !document.head.querySelector("bd-head bd-styles")) document.head.appendChild(BDFDB.DOMUtils.create(``)); + container = container || document.head.querySelector("bd-head bd-styles") || document.head; + container = Node.prototype.isPrototypeOf(container) ? container : document.head; + BDFDB.DOMUtils.removeLocalStyle(id, container); + container.appendChild(BDFDB.DOMUtils.create(``)); + }; + BDFDB.DOMUtils.removeLocalStyle = function (id, container) { + container = container || document.head.querySelector("bd-head bd-styles") || document.head; + container = Node.prototype.isPrototypeOf(container) ? container : document.head; + BDFDB.DOMUtils.remove(container.querySelectorAll(`style[id="${id}CSS"]`)); + }; + + BDFDB.ModalUtils = {}; + BDFDB.ModalUtils.open = function (plugin, config) { + if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ObjectUtils.is(config)) return; + let modal, modalInstance, modalProps, cancels = [], closeModal = _ => { + if (BDFDB.ObjectUtils.is(modalProps) && typeof modalProps.onClose == "function") modalProps.onClose(); + }; + let headerChildren = [], contentChildren = [], footerChildren = []; + if (typeof config.text == "string") { + contentChildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, { + children: config.text + })); + } + if (config.children) { + let tabBarItems = []; + for (let child of [config.children].flat(10).filter(n => n)) if (LibraryModules.React.isValidElement(child)) { + if (child.type == InternalComponents.LibraryComponents.ModalComponents.ModalTabContent) { + if (!tabBarItems.length) child.props.open = true; + else delete child.props.open; + tabBarItems.push({value:child.props.tab}); + } + contentChildren.push(child); + } + if (tabBarItems.length) headerChildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.tabbarcontainer, + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TabBar, { + className: BDFDB.disCN.tabbar, + itemClassName: BDFDB.disCN.tabbaritem, + type: InternalComponents.LibraryComponents.TabBar.Types.TOP, + items: tabBarItems, + onItemSelect: (value, instance) => { + let tabContentInstances = BDFDB.ReactUtils.findOwner(modal, {name:"BDFDB_ModalTabContent", all:true, unlimited:true}); + for (let ins of tabContentInstances) { + if (ins.props.tab == value) ins.props.open = true; + else delete ins.props.open; + } + BDFDB.ReactUtils.forceUpdate(tabContentInstances); + } + }), + config.tabBarChildren + ].flat(10).filter(n => n) + })); + } + if (BDFDB.ArrayUtils.is(config.buttons)) for (let button of config.buttons) { + let contents = typeof button.contents == "string" && button.contents; + if (contents) { + let color = typeof button.color == "string" && InternalComponents.LibraryComponents.Button.Colors[button.color.toUpperCase()]; + let look = typeof button.look == "string" && InternalComponents.LibraryComponents.Button.Looks[button.look.toUpperCase()]; + let click = typeof button.click == "function" ? button.click : (typeof button.onClick == "function" ? button.onClick : _ => {}); + + if (button.cancel) cancels.push(click); + + footerChildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Button, BDFDB.ObjectUtils.exclude(Object.assign({}, button, { + look: look || (color ? InternalComponents.LibraryComponents.Button.Looks.FILLED : InternalComponents.LibraryComponents.Button.Looks.LINK), + color: color || InternalComponents.LibraryComponents.Button.Colors.PRIMARY, + onClick: _ => { + if (button.close) closeModal(); + if (!(button.close && button.cancel)) click(modal, modalInstance); + }, + children: contents + }), "click", "close", "cancel", "contents"))); + } + } + contentChildren = contentChildren.concat(config.contentChildren).filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n))); + headerChildren = headerChildren.concat(config.headerChildren).filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n))); + footerChildren = footerChildren.concat(config.footerChildren).filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n))); + if (contentChildren.length) { + if (typeof config.onClose != "function") config.onClose = _ => {}; + if (typeof config.onOpen != "function") config.onOpen = _ => {}; + + let name = plugin.name || (typeof plugin.getName == "function" ? plugin.getName() : null); + name = typeof name == "string" ? name : null; + let oldTransitionState = 0; + LibraryModules.ModalUtils.openModal(props => { + modalProps = props; + return BDFDB.ReactUtils.createElement(class BDFDB_Modal extends LibraryModules.React.Component { + render () { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalRoot, { + className: BDFDB.DOMUtils.formatClassName(name && `${name}-modal`, BDFDB.disCN.modalwrapper, config.className), + size: typeof config.size == "string" && InternalComponents.LibraryComponents.ModalComponents.ModalSize[config.size.toUpperCase()] || InternalComponents.LibraryComponents.ModalComponents.ModalSize.SMALL, + transitionState: props.transitionState, + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalHeader, { + className: BDFDB.DOMUtils.formatClassName(config.headerClassName, headerChildren.length && BDFDB.disCN.modalheaderhassibling), + separator: config.headerSeparator || false, + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, { + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, { + tag: InternalComponents.LibraryComponents.FormComponents.FormTitle.Tags.H4, + children: config.header + }), + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, { + size: InternalComponents.LibraryComponents.TextElement.Sizes.SIZE_12, + children: typeof config.subheader == "string" || BDFDB.ReactUtils.isValidElement(config.subheader) ? config.subheader : (name || "") + }) + ] + }), + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalCloseButton, { + onClick: closeModal + }) + ] + }), + headerChildren.length ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + grow: 0, + shrink: 0, + children: headerChildren + }) : null, + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalContent, { + className: config.contentClassName, + scroller: config.scroller, + children: contentChildren + }), + footerChildren.length ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalFooter, { + className: config.footerClassName, + children: footerChildren + }) : null + ] + }); + } + componentDidMount () { + modalInstance = this; + modal = BDFDB.ReactUtils.findDOMNode(this); + modal = modal && modal.parentElement ? modal.parentElement.querySelector(BDFDB.dotCN.modalwrapper) : null; + if (modal && props.transitionState == 1 && props.transitionState > oldTransitionState) config.onOpen(modal, this); + oldTransitionState = props.transitionState; + } + componentWillUnmount () { + if (modal && props.transitionState == 3) { + for (let cancel of cancels) cancel(modal); + config.onClose(modal, this); + } + } + }, props); + }, { + onCloseRequest: closeModal + }); + } + }; + BDFDB.ModalUtils.confirm = function (plugin, text, callback) { + if (!BDFDB.ObjectUtils.is(plugin) || typeof text != "string") return; + BDFDB.ModalUtils.open(plugin, {text, header:"Are you sure?", className:BDFDB.disCN.modalconfirmmodal, scroller:false, buttons:[ + {contents: BDFDB.LanguageUtils.LanguageStrings.OKAY, close:true, color:"RED", click:typeof callback == "function" ? callback : _ => {}}, + {contents: BDFDB.LanguageUtils.LanguageStrings.CANCEL, close:true} + ]}); + }; + + const RealMenuItems = BDFDB.ModuleUtils.findByProperties("MenuItem", "MenuGroup"); + BDFDB.ContextMenuUtils = {}; + BDFDB.ContextMenuUtils.open = function (plugin, e, children) { + LibraryModules.ContextMenuUtils.openContextMenu(e, function (e) { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Menu, { + navId: "bdfdb-context", + onClose: BDFDB.LibraryModules.ContextMenuUtils.closeContextMenu, + children: children + }); + }); + }; + BDFDB.ContextMenuUtils.close = function (nodeOrInstance) { + if (!BDFDB.ObjectUtils.is(nodeOrInstance)) return; + let instance = BDFDB.ReactUtils.findOwner(nodeOrInstance, {props:"closeContextMenu", up:true}); + if (BDFDB.ObjectUtils.is(instance) && instance.props && typeof instance.props.closeContextMenu == "function") instance.props.closeContextMenu(); + else BDFDB.LibraryModules.ContextMenuUtils.closeContextMenu(); + }; + BDFDB.ContextMenuUtils.createItem = function (component, props = {}) { + if (!component) return null; + else { + if (BDFDB.ObjectUtils.toArray(RealMenuItems).some(c => c == component)) return BDFDB.ReactUtils.createElement(component, props); + else return BDFDB.ReactUtils.createElement(RealMenuItems.MenuItem, { + id: props.id, + disabled: props.disabled, + render: menuItemProps => { + if (!props.state) props.state = BDFDB.ObjectUtils.extract(props, "checked", "value"); + return BDFDB.ReactUtils.createElement(component, Object.assign(props, menuItemProps)); + } + }); + } + }; + BDFDB.ContextMenuUtils.createItemId = function (...strings) { + return strings.map(s => typeof s == "number" ? s.toString() : s).filter(s => typeof s == "string").map(s => s.toLowerCase().replace(/\s/, "-")).join("-"); + }; + BDFDB.ContextMenuUtils.findItem = function (returnvalue, config) { + if (!returnvalue || !BDFDB.ObjectUtils.is(config) || !config.label && !config.id) return [null, -1]; + config.label = config.label && [config.label].flat().filter(n => n); + config.id = config.id && [config.id].flat().filter(n => n); + let contextMenu = BDFDB.ReactUtils.findChild(returnvalue, {props: "navId"}); + if (contextMenu) { + for (let i in contextMenu.props.children) { + if (contextMenu.props.children[i] && contextMenu.props.children[i].type == RealMenuItems.MenuGroup) { + if (BDFDB.ArrayUtils.is(contextMenu.props.children[i].props.children)) { + for (let j in contextMenu.props.children[i].props.children) if (check(contextMenu.props.children[i].props.children[j])) { + if (config.group) return [contextMenu.props.children, parseInt(i)]; + else return [contextMenu.props.children[i].props.children, parseInt(j)]; + } + } + else if (contextMenu.props.children[i] && contextMenu.props.children[i].props) { + if (check(contextMenu.props.children[i].props.children)) { + if (config.group) return [contextMenu.props.children, parseInt(i)]; + else { + contextMenu.props.children[i].props.children = [contextMenu.props.children[i].props.children]; + return [contextMenu.props.children[i].props.children, 0]; + } + } + else if (contextMenu.props.children[i].props.children && contextMenu.props.children[i].props.children.props && BDFDB.ArrayUtils.is(contextMenu.props.children[i].props.children.props.children)) { + for (let j in contextMenu.props.children[i].props.children.props.children) if (check(contextMenu.props.children[i].props.children.props.children[j])) { + if (config.group) return [contextMenu.props.children, parseInt(i)]; + else return [contextMenu.props.children[i].props.children.props.children, parseInt(j)]; + } + } + } + } + else if (check(contextMenu.props.children[i])) return [contextMenu.props.children, parseInt(i)]; + } + return [contextMenu.props.children, -1]; + } + return [null, -1]; + function check (child) { + if (!child) return false; + let props = child.stateNode ? child.stateNode.props : child.props; + if (!props) return false; + return config.id && config.id.some(key => props.id == key) || config.label && config.label.some(key => props.label == key); + } + }; + + BDFDB.TimeUtils = {}; + BDFDB.TimeUtils.interval = function (callback, delay, ...args) { + if (typeof callback != "function" || typeof delay != "number" || delay < 1) return; + else { + let count = 0, interval = setInterval(_ => {BDFDB.TimeUtils.suppress(callback, "Interval")(...[interval, count++, args].flat());}, delay); + return interval; + } + }; + BDFDB.TimeUtils.timeout = function (callback, delay, ...args) { + if (typeof callback != "function") return; + else if (typeof delay != "number" || delay < 1) { + let immediate = setImmediate(_ => {BDFDB.TimeUtils.suppress(callback, "Immediate")(...[immediate, args].flat());}); + return immediate; + } + else { + let timeout = setTimeout(_ => {BDFDB.TimeUtils.suppress(callback, "Timeout")(...[timeout, args].flat());}, delay); + return timeout; + } + }; + BDFDB.TimeUtils.clear = function (...timeObjects) { + for (let t of timeObjects.flat(10).filter(n => n)) { + if (typeof t == "number") { + clearInterval(t); + clearTimeout(t); + } + else if (typeof t == "object") clearImmediate(t); + } + }; + BDFDB.TimeUtils.suppress = function (callback, string, name) {return function (...args) { + try {return callback(...args);} + catch (err) {BDFDB.LogUtils.error((typeof string == "string" && string || "") + " " + err, name);} + }}; + + BDFDB.StringUtils = {}; + BDFDB.StringUtils.htmlEscape = function (string) { + let ele = document.createElement("div"); + ele.innerText = string; + return ele.innerHTML; + }; + BDFDB.StringUtils.regEscape = function (string) { + return typeof string == "string" && string.replace(/([\-\/\\\^\$\*\+\?\.\(\)\|\[\]\{\}])/g, "\\$1"); + }; + BDFDB.StringUtils.insertNRST = function (string) { + return typeof string == "string" && string.replace(/\\r/g, "\r").replace(/\\n/g, "\n").replace(/\\t/g, "\t").replace(/\\s/g, " "); + }; + BDFDB.StringUtils.highlight = function (string, searchstring, prefix = ``, suffix = ``) { + if (typeof string != "string" || !searchstring || searchstring.length < 1) return string; + let offset = 0, original = string; + BDFDB.ArrayUtils.getAllIndexes(string.toUpperCase(), searchstring.toUpperCase()).forEach(index => { + let d1 = offset * (prefix.length + suffix.length); + index = index + d1; + let d2 = index + searchstring.length; + let d3 = [-1].concat(BDFDB.ArrayUtils.getAllIndexes(string.substring(0, index), "<")); + let d4 = [-1].concat(BDFDB.ArrayUtils.getAllIndexes(string.substring(0, index), ">")); + if (d3[d3.length - 1] > d4[d4.length - 1]) return; + string = string.substring(0, index) + prefix + string.substring(index, d2) + suffix + string.substring(d2); + offset++; + }); + return string || original; + }; + BDFDB.StringUtils.extractSelection = function (original, selection) { + if (typeof original != "string") return ""; + if (typeof selection != "string") return original; + let s = [], f = [], wrong = 0, canceled = false, done = false; + for (let i of BDFDB.ArrayUtils.getAllIndexes(original, selection[0])) if (!done) { + while (i <= original.length && !done) { + let subSelection = selection.slice(s.filter(n => n != undefined).length); + if (!subSelection && s.length - 20 <= selection.length) done = true; + else for (let j in subSelection) if (!done && !canceled) { + if (original[i] == subSelection[j]) { + s[i] = subSelection[j]; + f[i] = subSelection[j]; + wrong = 0; + if (i == original.length) done = true; + } + else { + s[i] = null; + f[i] = original[i]; + wrong++; + if (wrong > 4) { + s = [], f = [], wrong = 0, canceled = true; + break; + } + } + break; + } + canceled = false; + i++; + } + } + if (s.filter(n => n).length) { + let reverseS = [].concat(s).reverse(), i = 0, j = 0; + for (let k in s) { + if (s[k] == null) i = parseInt(k) + 1; + else break; + } + for (let k in reverseS) { + if (reverseS[k] == null) j = parseInt(k) + 1; + else break; + } + return f.slice(i, f.length - j).join(""); + } + else return original; + }; + + BDFDB.SlateUtils = {}; + BDFDB.SlateUtils.isRichValue = function (richValue) { + return BDFDB.ObjectUtils.is(richValue) && LibraryModules.SlateUtils.deserialize("").constructor.prototype.isPrototypeOf(richValue); + }; + BDFDB.SlateUtils.copyRichValue = function (string, richValue) { + let newRichValue = LibraryModules.SlateUtils.deserialize(string); + if (BDFDB.SlateUtils.isRichValue(richValue) && richValue._map && richValue._map._root && BDFDB.ArrayUtils.is(richValue._map._root.entries)) { + for (let i in richValue._map._root.entries) if (richValue._map._root.entries[i][0] == "selection") { + newRichValue._map._root.entries[i] = richValue._map._root.entries[i]; + break; + } + } + return newRichValue; + }; + BDFDB.SlateUtils.hasOpenPlainTextCodeBlock = function (editor) { + let richValue = BDFDB.ReactUtils.getValue(editor, "props.richValue"); + if (!BDFDB.SlateUtils.isRichValue(richValue)) return false; + let codeMatches = BDFDB.LibraryModules.SlateSelectionUtils.serializeSelection(richValue.document, { + start: { + key: richValue.document.getFirstText().key, + offset: 0 + }, + end: richValue.selection.start + }, "raw").match(/```/g); + return codeMatches && codeMatches.length && codeMatches.length % 2 != 0; + }; + BDFDB.SlateUtils.getCurrentWord = function (editor) { + let richValue = BDFDB.ReactUtils.getValue(editor, "props.richValue"); + if (!BDFDB.SlateUtils.isRichValue(richValue) || !richValue.selection.isCollapsed || BDFDB.SlateUtils.hasOpenPlainTextCodeBlock(editor) || richValue.document.text.trim().length == 0) return {word: null, isAtStart: false}; + if (editor.props.useSlate) { + if (richValue.document.text.startsWith("/giphy ") || richValue.document.text.startsWith("/tenor ")) { + let node = richValue.document.getNode(richValue.selection.start.key); + if (node) return { + word: node.text.substring(0, richValue.selection.start.offset), + isAtStart: true + } + } + let node = richValue.document.getNode(richValue.selection.start.key); + if (node == null) return { + word: null, + isAtStart: false + }; + let word = "", atStart = false; + let offset = richValue.selection.start.offset; + let block = richValue.document.getClosestBlock(node.key); + while (true) { + if (--offset < 0) { + if ((node = block.getPreviousNode(node.key) == null)) { + atStart = true; + break; + } + if (node.object!== "text") break; + offset = node.text.length - 1; + } + if (node.object !== "text") break; + let prefix = node.text[offset]; + if (/(\t|\s)/.test(prefix)) break; + word = prefix + word; + } + return { + word: !word ? null : word, + isAtStart: atStart && block.type == "line" && richValue.document.nodes.get(0) === block + }; + } + else { + let textarea = BDFDB.ReactUtils.findDOMNode(editor.ref.current); + if (!Node.prototype.isPrototypeOf(textarea) || textarea.tagName != "TEXTAREA" || !textarea.value.length || /\s/.test(textarea.value.slice(textarea.selectionStart, textarea.selectionEnd))) return { + word: null, + isAtStart: true + }; + else { + if (textarea.selectionEnd == textarea.value.length) { + let words = textarea.value.split(/\s/).reverse(); + return { + word: !words[0] ? null : words[0], + isAtStart: words.length > 1 + }; + } + else { + let chars = textarea.value.split(""), word = "", currentWord = "", isCurrentWord = false, isAtStart = true; + for (let i in chars) { + if (i == textarea.selectionStart) isCurrentWord = true; + if (/\s/.test(chars[i])) { + word = ""; + isAtStart = currentWord.length > 0 && isAtStart || false; + isCurrentWord = false; + } + else { + word += chars[i]; + if (isCurrentWord) currentWord = word; + } + } + return { + word: !currentWord ? null : currentWord, + isAtStart: isAtStart + }; + } + } + } + }; + + BDFDB.NumberUtils = {}; + BDFDB.NumberUtils.formatBytes = function (bytes, sigDigits) { + bytes = parseInt(bytes); + if (isNaN(bytes) || bytes < 0) return "0 Bytes"; + if (bytes == 1) return "1 Byte"; + let size = Math.floor(Math.log(bytes) / Math.log(1024)); + return parseFloat((bytes / Math.pow(1024, size)).toFixed(sigDigits < 1 ? 0 : sigDigits > 20 ? 20 : sigDigits || 2)) + " " + ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"][size]; + }; + BDFDB.NumberUtils.mapRange = function (from, to, value) { + if (parseFloat(value) < parseFloat(from[0])) return parseFloat(to[0]); + else if (parseFloat(value) > parseFloat(from[1])) return parseFloat(to[1]); + else return parseFloat(to[0]) + (parseFloat(value) - parseFloat(from[0])) * (parseFloat(to[1]) - parseFloat(to[0])) / (parseFloat(from[1]) - parseFloat(from[0])); + }; + BDFDB.NumberUtils.generateId = function (array) { + array = BDFDB.ArrayUtils.is(array) ? array : []; + let id = Math.floor(Math.random() * 10000000000000000); + if (array.includes(id)) return BDFDB.NumberUtils.generateId(array); + else { + array.push(id); + return id; + } + }; + BDFDB.NumberUtils.compareVersions = function (newv, oldv) { + if (!newv || !oldv) return true; + newv = newv.toString().replace(/["'`]/g, "").split(/,|\./g).map(n => parseInt(n)).filter(n => (n || n == 0) && !isNaN(n)); + oldv = oldv.toString().replace(/["'`]/g, "").split(/,|\./g).map(n => parseInt(n)).filter(n => (n || n == 0) && !isNaN(n)); + var length = Math.max(newv.length, oldv.length); + if (!length) return true; + if (newv.length > oldv.length) { + var temparray = new Array(newv.length - oldv.length); + for (let i = 0; i < temparray.length; i++) temparray[i] = 0; + oldv = temparray.concat(oldv); + } + else if (newv.length < oldv.length) { + var temparray = new Array(oldv.length - newv.length); + for (let i = 0; i < temparray.length; i++) temparray[i] = 0; + newv = temparray.concat(newv); + } + for (let i = 0; i < length; i++) for (let ioutdated = false, j = 0; j <= i; j++) { + if (j == i && newv[j] < oldv[j]) return false; + if (j < i) ioutdated = newv[j] == oldv[j]; + if ((j == 0 || ioutdated) && j == i && newv[j] > oldv[j]) return true; + } + return false; + }; + BDFDB.NumberUtils.getVersionDifference = function (newv, oldv) { + if (!newv || !oldv) return false; + newv = newv.toString().replace(/["'`]/g, "").split(/,|\./g).map(n => parseInt(n)).filter(n => (n || n == 0) && !isNaN(n)); + oldv = oldv.toString().replace(/["'`]/g, "").split(/,|\./g).map(n => parseInt(n)).filter(n => (n || n == 0) && !isNaN(n)); + var length = Math.max(newv.length, oldv.length); + if (!length) return false; + if (newv.length > oldv.length) { + var temparray = new Array(newv.length - oldv.length); + for (let i = 0; i < temparray.length; i++) temparray[i] = 0; + oldv = temparray.concat(oldv); + } + else if (newv.length < oldv.length) { + var temparray = new Array(oldv.length - newv.length); + for (let i = 0; i < temparray.length; i++) temparray[i] = 0; + newv = temparray.concat(newv); + } + var oldvvalue = 0, newvvalue = 0; + for (let i in oldv.reverse()) oldvvalue += (oldv[i] * (10 ** i)); + for (let i in newv.reverse()) newvvalue += (newv[i] * (10 ** i)); + return (newvvalue - oldvvalue) / (10 ** (length-1)); + }; + + BDFDB.DiscordUtils = {}; + BDFDB.DiscordUtils.openLink = function (url, inbuilt, minimized) { + if (!inbuilt) window.open(url, "_blank"); + else { + let browserWindow = new LibraryRequires.electron.remote.BrowserWindow({ + frame: true, + resizeable: true, + show: true, + darkTheme: BDFDB.DiscordUtils.getTheme() == BDFDB.disCN.themedark, + webPreferences: { + nodeIntegration: false, + nodeIntegrationInWorker: false + } + }); + browserWindow.setMenu(null); + browserWindow.loadURL(url); + if (minimized) browserWindow.minimize(null); + } + }; + BDFDB.DiscordUtils.getFolder = function () { + var built = BDFDB.DiscordUtils.getBuilt(); + built = "discord" + (built == "stable" ? "" : built); + return LibraryRequires.path.resolve(LibraryRequires.electron.remote.app.getPath("appData"), built, BDFDB.DiscordUtils.getVersion()); + }; + BDFDB.DiscordUtils.getBuilt = function () { + if (BDFDB.DiscordUtils.getBuilt.built) return BDFDB.DiscordUtils.getBuilt.built; + else { + var built = null; + try {built = require(LibraryRequires.electron.remote.app.getAppPath() + "/build_info.json").releaseChannel.toLowerCase();} + catch (err) { + try {built = require(LibraryRequires.electron.remote.app.getAppPath().replace("\app.asar", "") + "/build_info.json").releaseChannel.toLowerCase();} + catch (err) { + var version = BDFDB.DiscordUtils.getVersion(); + if (version) { + version = version.split("."); + if (version.length == 3 && !isNaN(version = parseInt(version[2]))) built = version > 300 ? "stable" : da > 200 ? "canary" : "ptb"; + else built = "stable"; + } + else built = "stable"; + } + } + BDFDB.DiscordUtils.getBuilt.built = built; + return built; + } + }; + BDFDB.DiscordUtils.getVersion = function () { + if (BDFDB.DiscordUtils.getBuilt.version) return BDFDB.DiscordUtils.getBuilt.version; + else { + let version = null; + try {version = LibraryRequires.electron.remote.app.getVersion();} + catch (err) {version = "";} + BDFDB.DiscordUtils.getBuilt.version = version; + return version; + } + }; + BDFDB.DiscordUtils.isDevModeEnabled = function () { + return LibraryModules.StoreChangeUtils.get("UserSettingsStore").developerMode; + }; + BDFDB.DiscordUtils.getTheme = function () { + return LibraryModules.StoreChangeUtils.get("UserSettingsStore").theme == "dark" ? BDFDB.disCN.themedark : BDFDB.disCN.themelight; + }; + BDFDB.DiscordUtils.getMode = function () { + return LibraryModules.StoreChangeUtils.get("UserSettingsStore").message_display_compact ? "compact" : "cozy"; + }; + BDFDB.DiscordUtils.getZoomFactor = function () { + let aRects = BDFDB.DOMUtils.getRects(document.querySelector(BDFDB.dotCN.appmount)); + let widthZoom = Math.round(100 * window.outerWidth / aRects.width); + let heightZoom = Math.round(100 * window.outerHeight / aRects.height); + return widthZoom < heightZoom ? widthZoom : heightZoom; + }; + BDFDB.DiscordUtils.getFontScale = function () { + return parseInt(document.firstElementChild.style.fontSize.replace("%", "")); + }; + BDFDB.DiscordUtils.shake = function () { + BDFDB.ReactUtils.getInstance(document.querySelector(BDFDB.dotCN.appold)).return.stateNode.shake(); + }; + + BDFDB.WindowUtils = {}; + BDFDB.WindowUtils.open = function (plugin, url, options = {}) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!BDFDB.ObjectUtils.is(plugin) || !url) return; + if (!BDFDB.ArrayUtils.is(plugin.browserWindows)) plugin.browserWindows = []; + let config = Object.assign({ + show: false, + webPreferences: { + nodeIntegration: true, + nodeIntegrationInWorker: true + } + }, options); + let browserWindow = new LibraryRequires.electron.remote.BrowserWindow(BDFDB.ObjectUtils.exclude(config, "showOnReady", "onLoad")); + + if (!config.show && config.showOnReady) browserWindow.once("ready-to-show", browserWindow.show); + if (config.devTools) browserWindow.openDevTools(); + if (typeof config.onLoad == "function") browserWindow.webContents.on("did-finish-load", (...args) => {config.onLoad(...args);}); + if (typeof config.onClose == "function") browserWindow.once("closed", (...args) => {config.onClose(...args);}); + + if (typeof browserWindow.removeMenu == "function") browserWindow.removeMenu(); + else browserWindow.setMenu(null); + browserWindow.loadURL(url); + browserWindow.executeJavaScriptSafe = js => {if (!browserWindow.isDestroyed()) browserWindow.webContents.executeJavaScript(`(_ => {${js}})();`);}; + plugin.browserWindows.push(browserWindow); + return browserWindow; + }; + BDFDB.WindowUtils.close = function (browserWindow) { + if (BDFDB.ObjectUtils.is(browserWindow) && !browserWindow.isDestroyed() && browserWindow.isClosable()) browserWindow.close(); + }; + BDFDB.WindowUtils.closeAll = function (plugin) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (BDFDB.ObjectUtils.is(plugin) && BDFDB.ArrayUtils.is(plugin.browserWindows)) while (plugin.browserWindows.length) BDFDB.WindowUtils.close(plugin.browserWindows.pop()); + }; + BDFDB.WindowUtils.addListener = function (plugin, actions, callback) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!BDFDB.ObjectUtils.is(plugin) || !actions || typeof callback != "function") return; + BDFDB.WindowUtils.removeListener(plugin, actions); + for (let action of actions.split(" ")) { + action = action.split("."); + let eventName = action.shift(); + if (!eventName) return; + let namespace = (action.join(".") || "") + plugin.name; + if (!BDFDB.ArrayUtils.is(plugin.ipcListeners)) plugin.ipcListeners = []; + + plugin.ipcListeners.push({eventName, namespace, callback}); + LibraryRequires.electron.ipcRenderer.on(eventName, callback); + } + }; + BDFDB.WindowUtils.removeListener = function (plugin, actions = "") { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ArrayUtils.is(plugin.ipcListeners)) return; + if (actions) { + for (let action of actions.split(" ")) { + action = action.split("."); + let eventName = action.shift(); + let namespace = (action.join(".") || "") + plugin.name; + for (let listener of plugin.ipcListeners) { + let removedListeners = []; + if (listener.eventName == eventName && listener.namespace == namespace) { + LibraryRequires.electron.ipcRenderer.off(listener.eventName, listener.callback); + removedListeners.push(listener); + } + if (removedListeners.length) plugin.ipcListeners = plugin.ipcListeners.filter(listener => {return removedListeners.indexOf(listener) < 0;}); + } + } + } + else { + for (let listener of plugin.ipcListeners) LibraryRequires.electron.ipcRenderer.off(listener.eventName, listener.callback); + plugin.ipcListeners = []; + } + }; + + BDFDB.BDUtils = {}; + BDFDB.BDUtils.getPluginsFolder = function () { + if (LibraryRequires.process.env.injDir) return LibraryRequires.path.resolve(LibraryRequires.process.env.injDir, "plugins/"); + else switch (LibraryRequires.process.platform) { + case "win32": + return LibraryRequires.path.resolve(LibraryRequires.process.env.appdata, "BetterDiscord/plugins/"); + case "darwin": + return LibraryRequires.path.resolve(LibraryRequires.process.env.HOME, "Library/Preferences/BetterDiscord/plugins/"); + default: + if (LibraryRequires.process.env.XDG_CONFIG_HOME) return LibraryRequires.path.resolve(LibraryRequires.process.env.XDG_CONFIG_HOME, "BetterDiscord/plugins/"); + else return LibraryRequires.path.resolve(LibraryRequires.process.env.HOME, ".config/BetterDiscord/plugins/"); + } + }; + BDFDB.BDUtils.getThemesFolder = function () { + if (LibraryRequires.process.env.injDir) return LibraryRequires.path.resolve(LibraryRequires.process.env.injDir, "plugins/"); + else switch (LibraryRequires.process.platform) { + case "win32": + return LibraryRequires.path.resolve(LibraryRequires.process.env.appdata, "BetterDiscord/themes/"); + case "darwin": + return LibraryRequires.path.resolve(LibraryRequires.process.env.HOME, "Library/Preferences/BetterDiscord/themes/"); + default: + if (LibraryRequires.process.env.XDG_CONFIG_HOME) return LibraryRequires.path.resolve(LibraryRequires.process.env.XDG_CONFIG_HOME, "BetterDiscord/themes/"); + else return LibraryRequires.path.resolve(LibraryRequires.process.env.HOME, ".config/BetterDiscord/themes/"); + } + }; + BDFDB.BDUtils.isPluginEnabled = function (pluginName) { + if (!window.BdApi) return null; + else if (BdApi.Plugins && typeof BdApi.Plugins.isEnabled == "function") return BdApi.Plugins.isEnabled(pluginName); + else if (typeof BdApi.isPluginEnabled == "function") return BdApi.isPluginEnabled(pluginName); + }; + BDFDB.BDUtils.enablePlugin = function (pluginName) { + if (!window.BdApi) return; + else if (BdApi.Plugins && typeof BdApi.Plugins.enable == "function") BdApi.Plugins.enable(pluginName); + else if (window.pluginModule) window.pluginModule.startPlugin(pluginName); + }; + BDFDB.BDUtils.disablePlugin = function (pluginName) { + if (!window.BdApi) return; + else if (BdApi.Plugins && typeof BdApi.Plugins.disable == "function") BdApi.Plugins.disable(pluginName); + else if (window.pluginModule) window.pluginModule.stopPlugin(pluginName); + }; + BDFDB.BDUtils.getPlugin = function (pluginName, hasToBeEnabled = false, overHead = false) { + if (window.BdApi && !hasToBeEnabled || BDFDB.BDUtils.isPluginEnabled(pluginName)) { + if (BdApi.Plugins.get && typeof BdApi.Plugins.get == "function") { + let plugin = BdApi.Plugins.get(pluginName); + if (overHead) return plugin ? {filename: LibraryRequires.fs.existsSync(LibraryRequires.path.join(BDFDB.BDUtils.getPluginsFolder(), `${pluginName}.plugin.js`)) ? `${pluginName}.plugin.js` : null, id: pluginName, name: pluginName, plugin: plugin} : null; + else return plugin; + } + else if (window.bdplugins) overHead ? window.bdplugins[pluginName] : (window.bdplugins[pluginName] || {}).plugin; + } + return null; + }; + BDFDB.BDUtils.isThemeEnabled = function (themeName) { + if (!window.BdApi) return null; + else if (BdApi.Themes && typeof BdApi.Themes.isEnabled == "function") return BdApi.Themes.isEnabled(themeName); + else if (typeof BdApi.isThemeEnabled == "function") return BdApi.isThemeEnabled(themeName); + }; + BDFDB.BDUtils.enableTheme = function (themeName) { + if (!window.BdApi) return; + else if (BdApi.Themes && typeof BdApi.Themes.enable == "function") BdApi.Themes.enable(themeName); + else if (window.themeModule) window.themeModule.enableTheme(themeName); + }; + BDFDB.BDUtils.disableTheme = function (themeName) { + if (!window.BdApi) return; + else if (BdApi.Themes && typeof BdApi.Themes.disable == "function") BdApi.Themes.disable(themeName); + else if (window.themeModule) window.themeModule.disableTheme(themeName); + }; + BDFDB.BDUtils.getTheme = function (themeName, hasToBeEnabled = false) { + if (window.BdApi && !hasToBeEnabled || BDFDB.BDUtils.isThemeEnabled(themeName)) { + if (BdApi.Themes && typeof BdApi.Themes.get == "function") return BdApi.Themes.get(themeName); + else if (window.bdthemes) window.bdthemes[themeName]; + } + return null; + }; + let oldSettings = window.BdApi && !BDFDB.ArrayUtils.is(BdApi.settings); + BDFDB.BDUtils.settingsIds = oldSettings ? { + automaticLoading: "fork-ps-5", + coloredText: "bda-gs-7", + normalizedClasses: "fork-ps-4", + showToasts: "fork-ps-2" + } : { + automaticLoading: "settings.addons.autoReload", + coloredText: "settings.appearance.coloredText", + normalizedClasses: "settings.general.classNormalizer", + showToasts: "settings.general.showToasts" + }; + BDFDB.BDUtils.toggleSettings = function (key, state) { + if (window.BdApi && typeof key == "string") { + let path = key.split("."); + let currentState = BDFDB.BDUtils.getSettings(key); + if (state === true) { + if (currentState === false) BdApi.enableSetting(...path); + } + else if (state === false) { + if (currentState === true) BdApi.disableSetting(...path); + } + else if (currentState === true || currentState === false) BDFDB.BDUtils.toggleSettings(key, !currentState); + } + }; + BDFDB.BDUtils.getSettings = function (key) { + if (!window.BdApi) return {}; + if (typeof key == "string") return BdApi.isSettingEnabled(...key.split(".")); + else return oldSettings ? BDFDB.ReactUtils.getValue(BdApi.getBDData("settings"), `${BDFDB.DiscordUtils.getBuilt()}.settings`) : BdApi.settings.map(n => n.settings.map(m => m.settings.map(l => ({id: [n.id, m.id, l.id].join("."), value:l.value})))).flat(10).reduce((newObj, setting) => (newObj[setting.id] = setting.value, newObj), {}); + }; + + var DiscordClassModules = {}; + DiscordClassModules.BDFDB = { + BDFDBundefined: "BDFDB_undefined", + badge: "badge-7R_W3s", + bdaRepoEntry: "entry-9JnAPs", + bdaRepoListHeader: "repoHeader-2KfNvH", + bdaRepoListWrapper: "repoList-9JnAPs", + cardInner: "inner-OP_8zd", + cardWrapper: "card-rT4Wbb", + charCounter: "counter-uAzbKp", + changeLogModal: "changeLogModal-ny_dHC", + collapseContainer: "container-fAVkOf", + collapseContainerArrow: "arrow-uglXxc", + collapseContainerCollapsed: "collapsed-2BUBZm", + collapseContainerHeader: "header-2s6x-5", + collapseContainerInner: "inner-TkGytd", + collapseContainerMini: "container-fAVkOf containerMini-_k6Rts", + collapseContainerTitle: "title-ROsJi-", + colorPicker: "colorPicker-h5sF8g", + colorPickerAlpha: "alpha-VcPGeR", + colorPickerAlphaCheckered: "alpha-checkered", + colorPickerAlphaCursor: "alpha-cursor", + colorPickerAlphaHorizontal: "alpha-horizontal", + colorPickerGradient: "gradient-TJOYTr", + colorPickerGradientCheckered: "gradient-checkered", + colorPickerGradientCursor: "gradient-cursor", + colorPickerGradientCursorEdge: "gradient-cursor-edge", + colorPickerGradientCursorSelected: "gradient-cursor-selected", + colorPickerGradientHorizontal: "gradient-horizontal", + colorPickerGradientButton: "gradientButton-eBBuwD", + colorPickerGradientButtonEnabled: "enabled-MypHME", + colorPickerSwatches: "swatches-QxZw_N", + colorPickerSwatchesDisabled: "disabled-2JgNxl", + colorPickerSwatchSingle: "single-Fbb1wB", + colorPickerSwatchSelected: "selected-f5IVXN", + confirmModal: "confirmModal-t-WDWJ", + dev: "dev-A7f2Rx", + favButtonContainer: "favbutton-8Fzu45", + guild: "guild-r3yAE_", + guildLowerLeftBadge: "lowerLeftBadge-zr4T_9", + guildUpperLeftBadge: "upperLeftBadge-e35IpL", + hasBadge: "hasBadge-4rT8_u", + hotkeyResetButton: "resetButton-hI9Ax7", + hotkeyWrapper: "recorder-can0vx", + inputNumberButton: "button-J9muv5", + inputNumberButtonDown: "down-cOY7Qp button-J9muv5", + inputNumberButtonUp: "up-mUs_72 button-J9muv5", + inputNumberButtons: "buttons-our3p-", + inputNumberWrapper: "numberInputWrapper-j4svZS", + inputNumberWrapperDefault: "numberInputWrapperDefault-gRxcuK numberInputWrapper-j4svZS", + inputNumberWrapperMini: "numberInputWrapperMini-wtUU31 numberInputWrapper-j4svZS", + loadingIcon: "loadingIcon-cOYMPl", + loadingIconWrapper: "loadingIconWrapper-PsVJ9m", + overflowEllipsis: "ellipsis-qlo9sA", + paginationList: "list-PIKebU", + paginationListAlphabet: "alphabet-2ANo0x", + paginationListAlphabetChar: "alphabetChar-bq-8Go", + paginationListAlphabetCharDisabled: "disabled-XmhCq2", + paginationListContent: "listContent-aG3Fq8", + paginationListPagination: "pagination-ko4zZk", + popoutWrapper: "popout-xwjvsX", + quickSelectWrapper: "quickSelectWrapper-UCfTKz", + menuItemHint: "hint-BK71lM", + modalHeaderHasSibling: "hasSiblings-fRyjyl", + modalNoScroller: "noScroller-YgPpF3", + modalTabContent: "tabContent-nZ-1U5", + modalTabContentOpen: "open-yICTYu", + modalSubInner: "inner-t84Frz", + modalWrapper: "modal-6GHvdM", + noticeWrapper: "noticeWrapper-8z511t", + selectWrapper: "selectWrapper-yPjeij", + settingsGuild: "guild-J3Egt5", + settingsGuildDisabled: "disabled-b2o83O", + settingsPanel: "settingsPanel-w2ySNR", + settingsPanelHeader: "settingsHeader-7g994w", + settingsPanelHeaderButton: "button-ff4a_z", + settingsPanelHeaderControls: "controls-g2WW5_", + settingsPanelInner: "settingsInner-zw1xAY", + settingsPanelList: "settingsList-eZjkXj", + settingsPanelTitle: "title-GTF_8J", + settingsTableCard: "settingsTableCard-628t52", + settingsTableCardConfigs: "settingsTableCardConfigs-w5X9-Z", + settingsTableCardLabel: "settingsTableCardLabel-MElgIg", + settingsTableHeaders: "settingsTableHeaders-WKzw9_", + settingsTableHeaderVertical: "headerVertical-4MNxqk", + settingsTableList: "settingsTableList-f6sW2y", + sliderBubble: "bubble-3we2di", + supporter: "supporter-Z3FfwL", + supporterCustom: "customSupporter-thxL4U", + svgIcon: "icon-GhnIRB", + svgIconWrapper: "iconWrapper-g20jFn", + tabBarContainerBottom: "bottom-b8sdfs", + table: "table-moqjM0", + tableBodyCell: "bodyCell-dQam9V", + tableHeader: "header-g67q9_", + tableHeaderCell: "headerCell-T6Fo3K", + tableHeaderCellSorted: "headerCellSorted-FMjMWK", + tableHeaderSortIcon: "sortIcon-WZjMja", + tableRow: "row-_9Ehcp", + tableStickyHeader: "stickyHeader-JabwjW header-g67q9_", + textScroller: "textScroller-dc9_kz", + themedPopout: "themedPopout-1TrfdI", + tooltipCustom: "tooltipCustom-hH39_Z", + userInfoDate: "date-YN6TCS" + }; + DiscordClassModules.BDrepo = { + bdAddonCard: "bd-addon-card", + bdButton: "bd-button", + bdaAuthor: "bd-author author bda-author", + bdaControls: "bd-controls bd-addon-controls bda-controls", + bdaControlsButton: "bd-addon-button", + bdaDescription: "bd-description bd-addon-description bda-description", + bdaDescriptionWrap: "bd-description-wrap bda-description-wrap", + bdaFooter: "bd-footer bd-card-footer bda-footer", + bdaHeader: "bd-addon-header bda-header", + bdaHeaderTitle: "bd-title bd-card-title bda-header-title", + bdaLink: "bd-link bda-link", + bdaLinks: "bd-links bd-addon-links bda-links", + bdaName: "bd-name name bda-name", + bdaSettingsButton: "bd-button bd-button-addon-settings bd-settings-button bda-settings-button", + bdaSlist: "bda-slist bd-addon-list", + bdaVersion: "bd-version version bda-version", + bdGuild: "bd-guild", + bdGuildAnimatable: "bd-animatable", + bdGuildAudio: "bd-audio", + bdGuildSelected: "bd-selected", + bdGuildSeparator: "bd-guild-separator", + bdGuildUnread: "bd-unread", + bdGuildVideo: "bd-video", + bdIcon: "bd-icon", + bdPillSelected: "bd-selected", + bdPillUnread: "bd-unread", + bdPfbtn: "bd-pfbtn", + bdSwitch: "bd-switch", + bdSwitchChecked: "bd-switch-checked", + bdSwitchInner: "bd-checkbox", + bdUpdatebtn: "bd-updatebtn", + settings: "plugin-settings", + settingsOpen: "settings-open", + settingsClosed: "settings-closed", + switch: "ui-switch", + switchCheckbox: "ui-switch-checkbox", + switchChecked: "checked", + switchItem: "ui-switch-item", + switchWrapper: "ui-switch-wrapper" + }; + DiscordClassModules.BadgesEverywhere = { + badge: "badge-7CsdQq", + badges: "badges-XRnWAp", + badgesChat: "badgesChat-f_cbR8", + badgesInner: "inner-dA0J42", + badgesList: "badgesList-Aw_p52", + badgesPopout: "badgesPopout-srZ8EX", + badgesSettings: "badgesSettings-ychoGn", + indicator: "indicator-cY1-b4", + indicatorInner: "indicatorInner-08W8Jl", + mini: "mini-g-JPgX", + size17: "size17-2GsONg", + size21: "size21-Y634b3", + size22: "size22-AJj9xV", + size24: "size24-NlR6be" + }; + DiscordClassModules.BetterNsfwTag = { + nsfwTag: "nsfwTag-666omg" + }; + DiscordClassModules.ChatFilter = { + blocked: "blocked-jUhayi", + blockedStamp: "blockedStamp-ijVeNn", + censored: "censored-UYfeYg", + censoredStamp: "censoredStamp-fb2cYb" + }; + DiscordClassModules.CharCounter = { + charCounter: "charCounter-7fw40k", + chatCounter: "chatCounter-XOMPsh", + counterAdded: "charCounterAdded-zz9O4t", + editCounter: "editCounter-pNT1Xe", + nickCounter: "nickCounter-tJrO_4", + popoutNoteCounter: "popoutNoteCounter-62U4Rh", + profileNoteCounter: "profileNoteCounter-p0fWA_", + uploadCounter: "uploadCounter-iEGQQk" + }; + DiscordClassModules.CreationDate = { + date: "creationDate-CJwdKT" + }; + DiscordClassModules.DisplayLargeMessages = { + injectButton: "injectButton-8eKqGu" + }; + DiscordClassModules.DisplayServersAsChannels = { + badge: "badge-fxFrUP", + name: "name-z5133D", + styled: "styledGuildsAsChannels-DNHtg_" + }; + DiscordClassModules.EmojiStatistics = { + statisticsButton: "statisticsButton-nW2KoM", + amountCell: "amountCell-g_W6Rx", + iconCell: "iconCell--wniOu", + nameCell: "nameCell-xyXENZ" + }; + DiscordClassModules.FriendNotifications = { + friendsOnline: "friendsOnline-2JkivW" + }; + DiscordClassModules.GoogleTranslateOption = { + reverseButton: "reverseButton-5S47qV", + translateButton: "translateButton-DhP9x8", + translated: "translated-5YO8i3", + translating: "translating-Yi-YxC" + }; + DiscordClassModules.ImageGallery = { + details: "details-9dkFPc", + detailsLabel: "label-mrlccN", + detailsWrapper: "detailsWrapper-TE1mu5", + gallery: "gallery-JViwKR", + icon: "icon-QY6cR4", + next: "next-SHEZrz", + previous: "previous-xsNq6B", + sibling: "sibling-6vI7Pu" + }; + DiscordClassModules.ImageZoom = { + backdrop: "lenseBackdrop-yEm7Om", + lense: "zoomLense-uOK8xV", + modal: "imageModal-8J0ttB", + operations: "operations-3V47CY" + }; + DiscordClassModules.JoinedAtDate = { + date: "joinedAtDate-IawR02" + }; + DiscordClassModules.LastMessageDate = { + date: "lastMessageDate-ocEw13" + }; + DiscordClassModules.OldTitleBar = { + oldTitleBarEnabled: "oldTitleBarEnabled-D8ppJQ", + settingsToolbar: "settingsToolbar-wu4yfQ", + toolbar: "toolbar-hRzFw-" + }; + DiscordClassModules.PinDMs = { + dragPreview: "dragPreview-nXiByA", + dmChannelPinned: "pinned-0lM4wD", + dmChannelPlaceholder: "placeholder-7bhR5s", + pinnedChannelsHeaderAmount: "headerAmount-_-7GrS", + pinnedChannelsHeaderArrow: "pinnedChannelsHeaderArrow-44rrTz", + pinnedChannelsHeaderCollapsed: "collapsed-3w_-ff", + pinnedChannelsHeaderColored: "colored-oIzG5s", + pinnedChannelsHeaderContainer: "pinnedChannelsHeaderContainer-89Gjv4", + recentPinned: "pinned-jHvFrr", + recentPlaceholder: "placeholder-Uff-gH", + unpinButton: "unpinButton-z3-UVO", + unpinIcon: "unpinIcon-79ZnEr" + }; + DiscordClassModules.ReadAllNotificationsButton = { + button: "button-Jt-tIg", + frame: "frame-oXWS21", + innerFrame: "innerFrame-8Hg64E" + }; + DiscordClassModules.ServerFolders = { + dragPreview: "dragPreview-nXiByA", + guildPlaceholder: "placeholder-7bhR5s", + folderContent: "content-Pph8t6", + folderContentClosed: "closed-j55_T-", + folderContentIsOpen: "folderContentIsOpen-zz6FgW", + iconSwatch: "iconSwatch-_78Ghj", + iconSwatchInner: "iconInner-aOY-qk", + iconSwatchPreview: "preview-Bbg_24", + iconSwatchSelected: "selected-P5oePO" + }; + DiscordClassModules.ShowImageDetails = { + details: "details-1t6Zms", + detailsAdded: "detailsAdded-SAy48f" + }; + DiscordClassModules.SpellCheck = { + error: "error-k9z2IV", + overlay: "spellCheckOverlay-cNSap5" + }; + DiscordClassModules.SpotifyControls = { + bar: "bar-g2ZMIm", + barGabber: "grabber-7sd5f5", + barFill: "barFill-Dhkah7", + barText: "barText-lmqc5O", + buttonActive: "active-6TsW-_", + container: "container-6sXIoE", + containerInner: "inner-WRV6k5", + containerMaximized: "maximized-vv2Wr0", + containerWithTimeline: "withTimeline-824fT_", + cover: "cover-SwJ-ck", + coverMaximizer: "maximizer-RVu85p", + coverWrapper: "coverWrapper-YAplwJ", + details: "details-ntX2k5", + interpret: "interpret-F93iqP", + song: "song-tIdBpF", + timeline: "timeline-UWmgAx", + volumeSlider: "volumeSlider-sR5g00" + }; + DiscordClassModules.TimedLightDarkMode = { + dateGrabber: "dateGrabber-QrRkIX", + timerGrabber: "timerGrabber-zpRAIk", + timerSettings: "timerSettings-wkvEfF" + }; + DiscordClassModules.TopRolesEverywhere = { + badgeStyle: "badgeStyle-tFiEQ8", + chatTag: "chatTag-Y-5TDc", + memberTag: "memberTag-QVWzGc", + roleStyle: "roleStyle-jQ7KI2", + tag: "tag-wWVHyf" + }; + DiscordClassModules.NotFound = { + _: "", + badgeWrapper: "wrapper-232cHJ", + channelPanelTitle: "title-eS5yk3", + emoji: "emoji", + guildChannels: "container-PNkimc", + highlight: "highlight", + hoverCardButton: "button-2CgfFz", + loginScreen: "wrapper-3Q5DdO", + mention: "mention", + mentionInteractive: "interactive", + mentionWrapper: "wrapper-3WhCwL", + nameContainerNameContainer: "container-2ax-kl", + hueCursor: "hue-cursor", + hueHorizontal: "hue-horizontal", + hueVertical: "hue-vertical", + saturationBlack: "saturation-black", + saturationColor: "saturation-color", + saturationCursor: "saturation-cursor", + saturationWhite: "saturation-white", + splashBackground: "splashBackground-1FRCko", + stopAnimations: "stop-animations", + subtext: "subtext-3CDbHg", + themeDark: "theme-dark", + themeLight: "theme-light", + themeUndefined: "theme-undefined", + voiceDraggable: "draggable-1KoBzC" + }; + + /* LOADED ON RUNTIME, BAD DISCORD */ + DiscordClassModules.ColorPicker = { + colorPickerCustom: "colorPickerCustom-2CWBn2", + colorPickerDropper: "colorPickerDropper-3c2mIf", + colorPickerDropperFg: "colorPickerDropperFg-3jYKWI", + colorPickerRow: "colorPickerRow-1LgLnl", + colorPickerSwatch: "colorPickerSwatch-5GX3Ve", + custom: "custom-2SJn4n", + customColorPickerInput: "customColorPickerInput-14pB0r", + default: "default-cS_caM", + disabled: "disabled-1C4eHl", + input: "input-GfazGc", + noColor: "noColor-1pdBDm" + }; + DiscordClassModules.ColorPickerInner = { + hue: "hue-13HAGb", + saturation: "saturation-1FDvtn", + wrapper: "wrapper-2AQieU" + }; + + DiscordClassModules.AccountDetails = BDFDB.ModuleUtils.findByProperties("usernameContainer", "container"); + DiscordClassModules.AccountDetailsButtons = BDFDB.ModuleUtils.findByProperties("button", "enabled", "disabled"); + DiscordClassModules.Anchor = BDFDB.ModuleUtils.findByProperties("anchor", "anchorUnderlineOnHover"); + DiscordClassModules.AnimationContainer = BDFDB.ModuleUtils.findByProperties("animatorLeft", "didRender"); + DiscordClassModules.AppBase = BDFDB.ModuleUtils.findByProperties("container", "base"); + DiscordClassModules.AppInner = BDFDB.ModuleUtils.findByProperties("app", "layers"); + DiscordClassModules.AppMount = BDFDB.ModuleUtils.findByProperties("appMount"); + DiscordClassModules.ApplicationStore = BDFDB.ModuleUtils.findByProperties("applicationStore", "navigation"); + DiscordClassModules.AppOuter = BDFDB.ModuleUtils.find(m => typeof m.app == "string" && Object.keys(m).length == 1); + DiscordClassModules.AuditLog = BDFDB.ModuleUtils.findByProperties("auditLog"); + DiscordClassModules.AuthBox = BDFDB.ModuleUtils.findByProperties("authBox"); + DiscordClassModules.Autocomplete = BDFDB.ModuleUtils.findByProperties("autocomplete", "autocompleteRow"); + DiscordClassModules.Avatar = BDFDB.ModuleUtils.findByProperties("avatar", "mask", "wrapper"); + DiscordClassModules.AvatarIcon = BDFDB.ModuleUtils.findByProperties("iconActiveLarge", "iconActiveMedium"); + DiscordClassModules.Backdrop = BDFDB.ModuleUtils.findByProperties("backdrop", "backdropWithLayer"); + DiscordClassModules.Badge = BDFDB.ModuleUtils.findByProperties("numberBadge", "textBadge", "iconBadge"); + DiscordClassModules.BotTag = BDFDB.ModuleUtils.findByProperties("botTag", "botTagInvert"); + DiscordClassModules.Button = BDFDB.ModuleUtils.findByProperties("colorBlack", "button"); + DiscordClassModules.CallCurrent = BDFDB.ModuleUtils.findByProperties("wrapper", "fullScreen"); + DiscordClassModules.CallDetails = BDFDB.ModuleUtils.findByProperties("container", "hotspot"); + DiscordClassModules.CallIncoming = BDFDB.ModuleUtils.findByProperties("incomingCall", "container") || BDFDB.ModuleUtils.findByProperties("wrapper", "mainChannelInfo"); + DiscordClassModules.CallIncomingInner = BDFDB.ModuleUtils.findByProperties("incomingCallInner", "members"); + DiscordClassModules.Card = BDFDB.ModuleUtils.findByProperties("card", "cardBrand"); + DiscordClassModules.CardStatus = BDFDB.ModuleUtils.findByProperties("reset", "error", "card"); + DiscordClassModules.Category = BDFDB.ModuleUtils.findByProperties("wrapper", "children", "muted"); + DiscordClassModules.CategoryContainer = BDFDB.ModuleUtils.findByProperties("addButtonIcon", "containerDefault"); + DiscordClassModules.ChangeLog = BDFDB.ModuleUtils.findByProperties("added", "fixed", "improved", "progress"); + DiscordClassModules.Channel = BDFDB.ModuleUtils.findByProperties("wrapper", "content", "modeSelected"); + DiscordClassModules.ChannelContainer = BDFDB.ModuleUtils.findByProperties("actionIcon", "containerDefault"); + DiscordClassModules.ChannelLimit = BDFDB.ModuleUtils.findByProperties("users", "total", "wrapper"); + DiscordClassModules.ChannelTextArea = BDFDB.ModuleUtils.findByProperties("textArea", "buttons"); + DiscordClassModules.ChannelTextAreaAttachButton = BDFDB.ModuleUtils.findByProperties("attachButton", "attachWrapper"); + DiscordClassModules.ChannelTextAreaButton = BDFDB.ModuleUtils.findByProperties("buttonWrapper", "active"); + DiscordClassModules.ChannelTextAreaCharCounter = BDFDB.ModuleUtils.findByProperties("characterCount", "error"); + DiscordClassModules.ChannelTextAreaSlate = BDFDB.ModuleUtils.findByProperties("slateContainer", "placeholder"); + DiscordClassModules.ChatWindow = BDFDB.ModuleUtils.findByProperties("chat", "channelTextArea"); + DiscordClassModules.Checkbox = BDFDB.ModuleUtils.findByProperties("checkboxWrapper", "round"); + DiscordClassModules.CtaVerification = BDFDB.ModuleUtils.findByProperties("attendeeCTA", "verificationNotice"); + DiscordClassModules.Cursor = BDFDB.ModuleUtils.findByProperties("cursorDefault", "userSelectNone"); + DiscordClassModules.CustomStatusIcon = BDFDB.ModuleUtils.findByProperties("textRuler", "emoji", "icon"); + DiscordClassModules.DmAddPopout = BDFDB.ModuleUtils.findByProperties("popout", "searchBarComponent"); + DiscordClassModules.DmAddPopoutItems = BDFDB.ModuleUtils.findByProperties("friendSelected", "friendWrapper"); + DiscordClassModules.DownloadLink = BDFDB.ModuleUtils.findByProperties("downloadLink"); + DiscordClassModules.Embed = BDFDB.ModuleUtils.findByProperties("embed", "embedAuthorIcon"); + DiscordClassModules.EmbedActions = BDFDB.ModuleUtils.findByProperties("iconPlay", "iconWrapperActive"); + DiscordClassModules.Emoji = BDFDB.ModuleUtils.find(m => typeof m.emoji == "string" && Object.keys(m).length == 1); + DiscordClassModules.EmojiButton = BDFDB.ModuleUtils.findByProperties("emojiButton", "sprite"); + DiscordClassModules.EmojiInput = BDFDB.ModuleUtils.findByProperties("inputContainer", "emojiButton"); + DiscordClassModules.EmojiPicker = BDFDB.ModuleUtils.findByProperties("emojiPicker", "inspector"); + DiscordClassModules.EmojiPickerDiversitySelector = BDFDB.ModuleUtils.findByProperties("diversityEmojiItemImage", "diversitySelectorPopout"); + DiscordClassModules.EmojiPickerItem = BDFDB.ModuleUtils.findByProperties("emojiSpriteImage"); + DiscordClassModules.EmojiPickerInspector = BDFDB.ModuleUtils.findByProperties("inspector", "glyphEmoji"); + DiscordClassModules.ExpressionPicker = BDFDB.ModuleUtils.findByProperties("contentWrapper", "navButton", "navList"); + DiscordClassModules.File = BDFDB.ModuleUtils.findByProperties("downloadButton", "fileNameLink"); + DiscordClassModules.Flex = BDFDB.ModuleUtils.findByProperties("alignBaseline", "alignCenter"); + DiscordClassModules.FlexChild = BDFDB.ModuleUtils.findByProperties("flexChild", "flex"); + DiscordClassModules.FlowerStar = BDFDB.ModuleUtils.findByProperties("flowerStarContainer", "flowerStar"); + DiscordClassModules.Focusable = BDFDB.ModuleUtils.findByProperties("focusable"); + DiscordClassModules.FormText = BDFDB.ModuleUtils.findByProperties("description", "modeDefault"); + DiscordClassModules.Game = BDFDB.ModuleUtils.findByProperties("game", "gameName"); + DiscordClassModules.GameIcon = BDFDB.ModuleUtils.findByProperties("gameIcon", "small", "xsmall"); + DiscordClassModules.GameLibraryTable = BDFDB.ModuleUtils.findByProperties("stickyHeader", "emptyStateText"); + DiscordClassModules.GifFavoriteButton = BDFDB.ModuleUtils.findByProperties("gifFavoriteButton", "showPulse"); + DiscordClassModules.GoLiveDetails = BDFDB.ModuleUtils.findByProperties("panel", "gameWrapper"); + DiscordClassModules.Guild = BDFDB.ModuleUtils.findByProperties("wrapper", "lowerBadge", "svg"); + DiscordClassModules.GuildChannels = BDFDB.ModuleUtils.findByProperties("positionedContainer", "unreadBar"); + DiscordClassModules.GuildDiscovery = BDFDB.ModuleUtils.findByProperties("pageWrapper", "guildList"); + DiscordClassModules.GuildDm = BDFDB.ModuleUtils.find(m => typeof m.pill == "string" && Object.keys(m).length == 1); + DiscordClassModules.GuildEdges = BDFDB.ModuleUtils.findByProperties("wrapper", "edge", "autoPointerEvents"); + DiscordClassModules.GuildFolder = BDFDB.ModuleUtils.findByProperties("folder", "expandedFolderIconWrapper"); + DiscordClassModules.GuildHeader = BDFDB.ModuleUtils.findByProperties("header", "name", "bannerImage"); + DiscordClassModules.GuildHeaderButton = BDFDB.ModuleUtils.findByProperties("button", "open"); + DiscordClassModules.GuildIcon = BDFDB.ModuleUtils.findByProperties("acronym", "selected", "wrapper"); + DiscordClassModules.GuildInvite = BDFDB.ModuleUtils.findByProperties("wrapper", "guildIconJoined"); + DiscordClassModules.GuildSettingsBanned = BDFDB.ModuleUtils.findByProperties("bannedUser", "bannedUserAvatar"); + DiscordClassModules.GuildSettingsEmoji = BDFDB.ModuleUtils.findByProperties("emojiRow", "emojiAliasPlaceholder"); + DiscordClassModules.GuildSettingsInvite = BDFDB.ModuleUtils.findByProperties("countdownColumn", "inviteSettingsInviteRow"); + DiscordClassModules.GuildSettingsMember = BDFDB.ModuleUtils.findByProperties("member", "membersFilterPopout"); + DiscordClassModules.GuildSettingsRoles = BDFDB.ModuleUtils.findByProperties("buttonWrapper", "addRoleIcon"); + DiscordClassModules.GuildServer = BDFDB.ModuleUtils.findByProperties("blobContainer", "pill"); + DiscordClassModules.GuildsItems = BDFDB.ModuleUtils.findByProperties("guildSeparator", "guildsError"); + DiscordClassModules.GuildsWrapper = BDFDB.ModuleUtils.findByProperties("scroller", "unreadMentionsBar", "wrapper"); + DiscordClassModules.HeaderBar = BDFDB.ModuleUtils.findByProperties("container", "children", "toolbar"); + DiscordClassModules.HeaderBarExtras = BDFDB.ModuleUtils.findByProperties("headerBarLoggedOut", "search"); + DiscordClassModules.HeaderBarSearch = BDFDB.ModuleUtils.findByProperties("search", "searchBar", "open"); + DiscordClassModules.HeaderBarTopic = BDFDB.ModuleUtils.findByProperties("topic", "expandable", "content"); + DiscordClassModules.HomeIcon = BDFDB.ModuleUtils.findByProperties("homeIcon"); + DiscordClassModules.HotKeyRecorder = BDFDB.ModuleUtils.findByProperties("editIcon", "recording"); + DiscordClassModules.HoverCard = BDFDB.ModuleUtils.findByProperties("card", "active"); + DiscordClassModules.IconDirection = BDFDB.ModuleUtils.findByProperties("directionDown", "directionUp"); + DiscordClassModules.ImageWrapper = BDFDB.ModuleUtils.findByProperties("clickable", "imageWrapperBackground"); + DiscordClassModules.InviteModal = BDFDB.ModuleUtils.findByProperties("inviteRow", "modal"); + DiscordClassModules.Item = BDFDB.ModuleUtils.findByProperties("item", "side", "header"); + DiscordClassModules.ItemRole = BDFDB.ModuleUtils.findByProperties("role", "dragged"); + DiscordClassModules.ItemLayerContainer = BDFDB.ModuleUtils.findByProperties("layer", "layerContainer"); + DiscordClassModules.Input = BDFDB.ModuleUtils.findByProperties("inputMini", "inputDefault"); + DiscordClassModules.LayerModal = BDFDB.ModuleUtils.findByProperties("root", "small", "medium"); + DiscordClassModules.Layers = BDFDB.ModuleUtils.findByProperties("layer", "layers"); + DiscordClassModules.LiveTag = BDFDB.ModuleUtils.findByProperties("liveLarge", "live"); + DiscordClassModules.LoadingScreen = BDFDB.ModuleUtils.findByProperties("container", "problemsText", "problems"); + DiscordClassModules.Margins = BDFDB.ModuleUtils.findByProperties("marginBottom4", "marginCenterHorz"); + DiscordClassModules.Menu = BDFDB.ModuleUtils.findByProperties("menu", "styleFlexible", "item"); + DiscordClassModules.MenuReactButton = BDFDB.ModuleUtils.findByProperties("wrapper", "icon", "focused"); + DiscordClassModules.MenuSlider = BDFDB.ModuleUtils.findByProperties("slider", "sliderContainer"); + DiscordClassModules.Member = BDFDB.ModuleUtils.findByProperties("member", "ownerIcon"); + DiscordClassModules.MembersThreads = BDFDB.ModuleUtils.findByProperties("tabBar", "thread"); + DiscordClassModules.MembersWrap = BDFDB.ModuleUtils.findByProperties("membersWrap", "membersGroup"); + DiscordClassModules.Message = BDFDB.ModuleUtils.findByProperties("message", "mentioned"); + DiscordClassModules.MessageAccessory = BDFDB.ModuleUtils.findByProperties("embedWrapper", "gifFavoriteButton"); + DiscordClassModules.MessageBlocked = BDFDB.ModuleUtils.findByProperties("blockedMessageText", "expanded"); + DiscordClassModules.MessageBody = BDFDB.ModuleUtils.findByProperties("markupRtl", "edited"); + DiscordClassModules.MessageDivider = BDFDB.ModuleUtils.findByProperties("isUnread", "divider"); + DiscordClassModules.MessageElements = BDFDB.ModuleUtils.findByProperties("messageGroupBlockedBtn", "dividerRed"); + DiscordClassModules.MessageFile = BDFDB.ModuleUtils.findByProperties("cancelButton", "filenameLinkWrapper"); + DiscordClassModules.MessageLocalBot = BDFDB.ModuleUtils.find(m => typeof m.localBotMessage == "string" && Object.keys(m).length == 1); + DiscordClassModules.MessageMarkup = BDFDB.ModuleUtils.findByProperties("markup"); + DiscordClassModules.MessageOperations = BDFDB.ModuleUtils.find(m => typeof m.operations == "string" && Object.keys(m).length == 1); + DiscordClassModules.MessageReactions = BDFDB.ModuleUtils.findByProperties("reactions", "reactionMe"); + DiscordClassModules.MessageReactionsModal = BDFDB.ModuleUtils.findByProperties("reactor", "reactionSelected"); + DiscordClassModules.MessageSystem = BDFDB.ModuleUtils.findByProperties("container", "actionAnchor"); + DiscordClassModules.MessageToolbar = BDFDB.ModuleUtils.findByProperties("container", "icon", "isHeader"); + DiscordClassModules.MessageToolbarItems = BDFDB.ModuleUtils.findByProperties("wrapper", "button", "separator"); + DiscordClassModules.MessagesPopout = BDFDB.ModuleUtils.findByProperties("messagesPopoutWrap", "jumpButton"); + DiscordClassModules.MessagesPopoutButtons = BDFDB.ModuleUtils.findByProperties("secondary", "tertiary", "button"); + DiscordClassModules.MessagesPopoutTabBar = BDFDB.ModuleUtils.findByProperties("header", "tabBar", "active"); + DiscordClassModules.MessagesWelcome = BDFDB.ModuleUtils.findByProperties("emptyChannelIcon", "description", "header"); + DiscordClassModules.MessagesWrap = BDFDB.ModuleUtils.findByProperties("messagesWrapper", "messageGroupBlocked"); + DiscordClassModules.Modal = BDFDB.ModuleUtils.findByProperties("modal", "sizeLarge"); + DiscordClassModules.ModalDivider = BDFDB.ModuleUtils.find(m => typeof m.divider == "string" && Object.keys(m).length == 1); + DiscordClassModules.ModalItems = BDFDB.ModuleUtils.findByProperties("guildName", "checkboxContainer"); + DiscordClassModules.ModalMiniContent = BDFDB.ModuleUtils.find(m => typeof m.modal == "string" && typeof m.content == "string" && Object.keys(m).length == 2); + DiscordClassModules.ModalWrap = BDFDB.ModuleUtils.find(m => typeof m.modal == "string" && typeof m.inner == "string" && Object.keys(m).length == 2); + DiscordClassModules.NameContainer = BDFDB.ModuleUtils.findByProperties("nameAndDecorators", "name"); + DiscordClassModules.NameTag = BDFDB.ModuleUtils.findByProperties("bot", "nameTag"); + DiscordClassModules.NitroStore = BDFDB.ModuleUtils.findByProperties("applicationStore", "marketingHeader"); + DiscordClassModules.NoteTextarea = BDFDB.ModuleUtils.find(m => typeof m.textarea == "string" && Object.keys(m).length == 1); + DiscordClassModules.Notice = BDFDB.ModuleUtils.findByProperties("notice", "noticeFacebook"); + DiscordClassModules.Peoples = BDFDB.ModuleUtils.findByProperties("peopleColumn", "tabBar"); + DiscordClassModules.PictureInPicture = BDFDB.ModuleUtils.findByProperties("pictureInPicture", "pictureInPictureWindow"); + DiscordClassModules.PillWrapper = BDFDB.ModuleUtils.find(m => typeof m.item == "string" && typeof m.wrapper == "string" && Object.keys(m).length == 2); + DiscordClassModules.PrivateChannel = BDFDB.ModuleUtils.findByProperties("channel", "closeButton"); + DiscordClassModules.PrivateChannelList = BDFDB.ModuleUtils.findByProperties("privateChannels", "searchBar"); + DiscordClassModules.PrivateChannelListScroller = BDFDB.ModuleUtils.findByProperties("scroller", "empty"); + DiscordClassModules.Popout = BDFDB.ModuleUtils.findByProperties("popout", "arrowAlignmentTop"); + DiscordClassModules.PopoutActivity = BDFDB.ModuleUtils.findByProperties("ellipsis", "activityActivityFeed"); + DiscordClassModules.QuickMessage = BDFDB.ModuleUtils.find(m => typeof m.input == "string" && Object.keys(m).length == 1); + DiscordClassModules.QuickSelect = BDFDB.ModuleUtils.findByProperties("quickSelectArrow", "selected"); + DiscordClassModules.QuickSwitch = BDFDB.ModuleUtils.findByProperties("resultFocused", "guildIconContainer"); + DiscordClassModules.QuickSwitchWrap = BDFDB.ModuleUtils.findByProperties("container", "miscContainer"); + DiscordClassModules.Reactions = BDFDB.ModuleUtils.findByProperties("reactionBtn", "reaction"); + DiscordClassModules.RecentMentions = BDFDB.ModuleUtils.findByProperties("recentMentionsPopout"); + DiscordClassModules.RecentMentionsHeader = BDFDB.ModuleUtils.findByProperties("channelName", "channelHeader", "dmIcon"); + DiscordClassModules.Role = BDFDB.ModuleUtils.findByProperties("roleCircle", "roleName", "roleRemoveIcon"); + DiscordClassModules.Scrollbar = BDFDB.ModuleUtils.findByProperties("scrollbar", "scrollbarGhost"); + DiscordClassModules.Scroller = BDFDB.ModuleUtils.findByProperties("scrollerBase", "none", "fade"); + DiscordClassModules.ScrollerOld = BDFDB.ModuleUtils.findByProperties("scrollerThemed", "scroller"); + DiscordClassModules.SearchBar = BDFDB.ModuleUtils.findByProperties("clear", "container", "pointer"); + DiscordClassModules.SearchPopout = BDFDB.ModuleUtils.findByProperties("datePicker", "searchResultChannelIconBackground"); + DiscordClassModules.SearchPopoutWrap = BDFDB.ModuleUtils.findByProperties("container", "queryContainer"); + DiscordClassModules.SearchResults = BDFDB.ModuleUtils.findByProperties("noResults", "searchResultsWrap"); + DiscordClassModules.SearchResultsElements = BDFDB.ModuleUtils.findByProperties("resultsBlocked", "channelSeparator"); + DiscordClassModules.SearchResultsPagination = BDFDB.ModuleUtils.findByProperties("paginationButton", "pagination"); + DiscordClassModules.SearchResultsMessage = BDFDB.ModuleUtils.findByProperties("after", "messageGroupCozy"); + DiscordClassModules.Select = BDFDB.ModuleUtils.findByProperties("select", "error", "errorMessage"); + DiscordClassModules.SettingsCloseButton = BDFDB.ModuleUtils.findByProperties("closeButton", "keybind"); + DiscordClassModules.SettingsItems = BDFDB.ModuleUtils.findByProperties("dividerMini", "note"); + DiscordClassModules.SettingsTable = BDFDB.ModuleUtils.findByProperties("headerOption", "headerName"); + DiscordClassModules.SettingsWindow = BDFDB.ModuleUtils.findByProperties("contentRegion", "standardSidebarView"); + DiscordClassModules.SettingsWindowScroller = BDFDB.ModuleUtils.findByProperties("sidebarScrollable", "content", "scroller"); + DiscordClassModules.Slider = BDFDB.ModuleUtils.findByProperties("slider", "grabber"); + DiscordClassModules.Spoiler = BDFDB.ModuleUtils.findByProperties("spoilerContainer", "hidden"); + DiscordClassModules.SpoilerEmbed = BDFDB.ModuleUtils.findByProperties("hiddenSpoilers", "spoiler"); + DiscordClassModules.Switch = BDFDB.ModuleUtils.findByProperties("switchDisabled", "valueChecked"); + DiscordClassModules.Table = BDFDB.ModuleUtils.findByProperties("stickyHeader", "sortIcon"); + DiscordClassModules.Text = BDFDB.ModuleUtils.findByProperties("defaultColor", "defaultMarginh1"); + DiscordClassModules.TextColor = BDFDB.ModuleUtils.findByProperties("colorStandard", "colorMuted", "colorError"); + DiscordClassModules.TextColor2 = BDFDB.ModuleUtils.findByProperties("muted", "wrapper", "base"); + DiscordClassModules.TextSize = BDFDB.ModuleUtils.findByProperties("size10", "size14", "size20"); + DiscordClassModules.TextStyle = BDFDB.ModuleUtils.findByProperties("strikethrough", "underline", "bold"); + DiscordClassModules.Tip = BDFDB.ModuleUtils.findByProperties("pro", "inline"); + DiscordClassModules.Title = BDFDB.ModuleUtils.findByProperties("title", "size18"); + DiscordClassModules.TitleBar = BDFDB.ModuleUtils.findByProperties("titleBar", "wordmark"); + DiscordClassModules.Tooltip = BDFDB.ModuleUtils.findByProperties("tooltip", "tooltipTop"); + DiscordClassModules.TooltipGuild = BDFDB.ModuleUtils.findByProperties("rowIcon", "rowGuildName"); + DiscordClassModules.Typing = BDFDB.ModuleUtils.findByProperties("cooldownWrapper", "typing"); + DiscordClassModules.UnreadBar = BDFDB.ModuleUtils.findByProperties("active", "bar", "unread"); + DiscordClassModules.UploadModal = BDFDB.ModuleUtils.findByProperties("uploadModal", "bgScale"); + DiscordClassModules.UserInfo = BDFDB.ModuleUtils.findByProperties("userInfo", "discordTag"); + DiscordClassModules.UserPopout = BDFDB.ModuleUtils.findByProperties("userPopout", "headerPlaying"); + DiscordClassModules.UserProfile = BDFDB.ModuleUtils.findByProperties("topSectionNormal", "tabBarContainer"); + DiscordClassModules.Video = BDFDB.ModuleUtils.findByProperties("video", "fullScreen"); + DiscordClassModules.VoiceChannel = BDFDB.ModuleUtils.findByProperties("avatarSpeaking", "voiceUser"); + DiscordClassModules.VoiceChannelList = BDFDB.ModuleUtils.findByProperties("list", "collapsed"); + DiscordClassModules.VoiceDetails = BDFDB.ModuleUtils.findByProperties("container", "customStatusContainer"); + DiscordClassModules.VoiceDetailsPing = BDFDB.ModuleUtils.findByProperties("rtcConnectionQualityBad", "rtcConnectionQualityFine"); + DiscordClassModules.WebhookCard = BDFDB.ModuleUtils.findByProperties("pulseBorder", "copyButton"); + BDFDB.DiscordClassModules = Object.assign({}, DiscordClassModules); + + var DiscordClasses = { + _bdguild: ["BDrepo", "bdGuild"], + _bdguildanimatable: ["BDrepo", "bdGuildAnimatable"], + _bdguildaudio: ["BDrepo", "bdGuildAudio"], + _bdguildselected: ["BDrepo", "bdGuildSelected"], + _bdguildseparator: ["BDrepo", "bdGuildSeparator"], + _bdguildunread: ["BDrepo", "bdGuildUnread"], + _bdguildvideo: ["BDrepo", "bdGuildVideo"], + _bdpillselected: ["BDrepo", "bdPillSelected"], + _bdpillunread: ["BDrepo", "bdPillUnread"], + _betternsfwtagtag: ["BetterNsfwTag", "nsfwTag"], + _badgeseverywherebadge: ["BadgesEverywhere", "badge"], + _badgeseverywherebadges: ["BadgesEverywhere", "badges"], + _badgeseverywherebadgeschat: ["BadgesEverywhere", "badgesChat"], + _badgeseverywherebadgesinner: ["BadgesEverywhere", "badgesInner"], + _badgeseverywherebadgeslist: ["BadgesEverywhere", "badgesList"], + _badgeseverywherebadgespopout: ["BadgesEverywhere", "badgesPopout"], + _badgeseverywherebadgessettings: ["BadgesEverywhere", "badgesSettings"], + _badgeseverywhereindicator: ["BadgesEverywhere", "indicator"], + _badgeseverywhereindicatorinner: ["BadgesEverywhere", "indicatorInner"], + _badgeseverywheremini: ["BadgesEverywhere", "mini"], + _badgeseverywheresize17: ["BadgesEverywhere", "size17"], + _badgeseverywheresize21: ["BadgesEverywhere", "size21"], + _badgeseverywheresize22: ["BadgesEverywhere", "size22"], + _badgeseverywheresize24: ["BadgesEverywhere", "size24"], + _chatfilterblocked: ["ChatFilter", "blocked"], + _chatfilterblockedstamp: ["ChatFilter", "blockedStamp"], + _chatfiltercensored: ["ChatFilter", "censored"], + _chatfiltercensoredstamp: ["ChatFilter", "censoredStamp"], + _charcountercounter: ["CharCounter", "charCounter"], + _charcounterchatcounter: ["CharCounter", "chatCounter"], + _charcountercounteradded: ["CharCounter", "counterAdded"], + _charcountereditcounter: ["CharCounter", "editCounter"], + _charcounternickcounter: ["CharCounter", "nickCounter"], + _charcounterpopoutnotecounter: ["CharCounter", "popoutNoteCounter"], + _charcounterprofilenotecounter: ["CharCounter", "profileNoteCounter"], + _charcounteruploadcounter: ["CharCounter", "uploadCounter"], + _creationdatedate: ["CreationDate", "date"], + _displaylargemessagesinjectbutton: ["DisplayLargeMessages", "injectButton"], + _displayserversaschannelsbadge: ["DisplayServersAsChannels", "badge"], + _displayserversaschannelsname: ["DisplayServersAsChannels", "name"], + _displayserversaschannelsstyled: ["DisplayServersAsChannels", "styled"], + _emojistatisticsstatisticsbutton: ["EmojiStatistics", "statisticsButton"], + _emojistatisticsamountcell: ["EmojiStatistics", "amountCell"], + _emojistatisticsiconcell: ["EmojiStatistics", "iconCell"], + _emojistatisticsnamecell: ["EmojiStatistics", "nameCell"], + _friendnotificationsfriendsonline: ["FriendNotifications", "friendsOnline"], + _imagegallerydetails: ["ImageGallery", "details"], + _imagegallerydetailslabel: ["ImageGallery", "detailsLabel"], + _imagegallerydetailswrapper: ["ImageGallery", "detailsWrapper"], + _imagegallerygallery: ["ImageGallery", "gallery"], + _imagegalleryicon: ["ImageGallery", "icon"], + _imagegallerynext: ["ImageGallery", "next"], + _imagegalleryprevious: ["ImageGallery", "previous"], + _imagegallerysibling: ["ImageGallery", "sibling"], + _imagezoombackdrop: ["ImageZoom", "backdrop"], + _imagezoomimagemodal: ["ImageZoom", "modal"], + _imagezoomlense: ["ImageZoom", "lense"], + _imagezoomoperations: ["ImageZoom", "operations"], + _joinedatdatedate: ["JoinedAtDate", "date"], + _lastmessagedatedate: ["LastMessageDate", "date"], + _googletranslateoptionreversebutton: ["GoogleTranslateOption", "reverseButton"], + _googletranslateoptiontranslatebutton: ["GoogleTranslateOption", "translateButton"], + _googletranslateoptiontranslated: ["GoogleTranslateOption", "translated"], + _googletranslateoptiontranslating: ["GoogleTranslateOption", "translating"], + _oldtitlebarenabled: ["OldTitleBar", "oldTitleBarEnabled"], + _oldtitlebarsettingstoolbar: ["OldTitleBar", "settingsToolbar"], + _oldtitlebartoolbar: ["OldTitleBar", "toolbar"], + _pindmsdragpreview: ["PinDMs", "dragPreview"], + _pindmsdmchannelpinned: ["PinDMs", "dmChannelPinned"], + _pindmsdmchannelplaceholder: ["PinDMs", "dmChannelPlaceholder"], + _pindmspinnedchannelsheaderamount: ["PinDMs", "pinnedChannelsHeaderAmount"], + _pindmspinnedchannelsheaderarrow: ["PinDMs", "pinnedChannelsHeaderArrow"], + _pindmspinnedchannelsheadercollapsed: ["PinDMs", "pinnedChannelsHeaderCollapsed"], + _pindmspinnedchannelsheadercolored: ["PinDMs", "pinnedChannelsHeaderColored"], + _pindmspinnedchannelsheadercontainer: ["PinDMs", "pinnedChannelsHeaderContainer"], + _pindmsrecentpinned: ["PinDMs", "recentPinned"], + _pindmsrecentplaceholder: ["PinDMs", "recentPlaceholder"], + _pindmsunpinbutton: ["PinDMs", "unpinButton"], + _pindmsunpinicon: ["PinDMs", "unpinIcon"], + _readallnotificationsbuttonbutton: ["ReadAllNotificationsButton", "button"], + _readallnotificationsbuttonframe: ["ReadAllNotificationsButton", "frame"], + _readallnotificationsbuttoninner: ["ReadAllNotificationsButton", "innerFrame"], + _serverfoldersdragpreview: ["ServerFolders", "dragPreview"], + _serverfoldersfoldercontent: ["ServerFolders", "folderContent"], + _serverfoldersfoldercontentclosed: ["ServerFolders", "folderContentClosed"], + _serverfoldersfoldercontentisopen: ["ServerFolders", "folderContentIsOpen"], + _serverfoldersguildplaceholder: ["ServerFolders", "guildPlaceholder"], + _serverfoldersiconswatch: ["ServerFolders", "iconSwatch"], + _serverfoldersiconswatchinner: ["ServerFolders", "iconSwatchInner"], + _serverfoldersiconswatchpreview: ["ServerFolders", "iconSwatchPreview"], + _serverfoldersiconswatchselected: ["ServerFolders", "iconSwatchSelected"], + _showimagedetailsdetails: ["ShowImageDetails", "details"], + _spellcheckerror: ["SpellCheck", "error"], + _spellcheckoverlay: ["SpellCheck", "overlay"], + _spotifycontrolsbar: ["SpotifyControls", "bar"], + _spotifycontrolsbarfill: ["SpotifyControls", "barFill"], + _spotifycontrolsbargrabber: ["SpotifyControls", "barGabber"], + _spotifycontrolsbartext: ["SpotifyControls", "barText"], + _spotifycontrolsbuttonactive: ["SpotifyControls", "buttonActive"], + _spotifycontrolscontainer: ["SpotifyControls", "container"], + _spotifycontrolscontainerinner: ["SpotifyControls", "containerInner"], + _spotifycontrolscontainermaximized: ["SpotifyControls", "containerMaximized"], + _spotifycontrolscontainerwithtimeline: ["SpotifyControls", "containerWithTimeline"], + _spotifycontrolscover: ["SpotifyControls", "cover"], + _spotifycontrolscovermaximizer: ["SpotifyControls", "coverMaximizer"], + _spotifycontrolscoverwrapper: ["SpotifyControls", "coverWrapper"], + _spotifycontrolsdetails: ["SpotifyControls", "details"], + _spotifycontrolsinterpret: ["SpotifyControls", "interpret"], + _spotifycontrolssong: ["SpotifyControls", "song"], + _spotifycontrolstimeline: ["SpotifyControls", "timeline"], + _spotifycontrolsvolumeslider: ["SpotifyControls", "volumeSlider"], + _timedlightdarkmodedategrabber: ["TimedLightDarkMode", "dateGrabber"], + _timedlightdarkmodetimergrabber: ["TimedLightDarkMode", "timerGrabber"], + _timedlightdarkmodetimersettings: ["TimedLightDarkMode", "timerSettings"], + _toproleseverywherebadgestyle: ["TopRolesEverywhere", "badgeStyle"], + _toproleseverywherechattag: ["TopRolesEverywhere", "chatTag"], + _toproleseverywheremembertag: ["TopRolesEverywhere", "memberTag"], + _toproleseverywhererolestyle: ["TopRolesEverywhere", "roleStyle"], + _toproleseverywheretag: ["TopRolesEverywhere", "tag"], + _repoauthor: ["BDrepo", "bdaAuthor"], + _repobutton: ["BDrepo", "bdButton"], + _repocard: ["BDrepo", "bdAddonCard"], + _repocheckbox: ["BDrepo", "switchCheckbox"], + _repocheckboxchecked: ["BDrepo", "switchChecked"], + _repocheckboxinner: ["BDrepo", "switch"], + _repocheckboxitem: ["BDrepo", "switchItem"], + _repocheckboxwrap: ["BDrepo", "switchWrapper"], + _repocontrols: ["BDrepo", "bdaControls"], + _repocontrolsbutton: ["BDrepo", "bdaControlsButton"], + _repodescription: ["BDrepo", "bdaDescription"], + _repodescriptionwrap: ["BDrepo", "bdaDescriptionWrap"], + _repoentry: ["BDFDB", "bdaRepoEntry"], + _repofolderbutton: ["BDrepo", "bdPfbtn"], + _repofooter: ["BDrepo", "bdaFooter"], + _repoheader: ["BDrepo", "bdaHeader"], + _repoheadertitle: ["BDrepo", "bdaHeaderTitle"], + _repoicon: ["BDrepo", "bdIcon"], + _repolist: ["BDrepo", "bdaSlist"], + _repolistheader: ["BDFDB", "bdaRepoListHeader"], + _repolistwrapper: ["BDFDB", "bdaRepoListWrapper"], + _repolink: ["BDrepo", "bdaLink"], + _repolinks: ["BDrepo", "bdaLinks"], + _reponame: ["BDrepo", "bdaName"], + _reposettings: ["BDrepo", "settings"], + _reposettingsbutton: ["BDrepo", "bdaSettingsButton"], + _reposettingsopen: ["BDrepo", "settingsOpen"], + _reposettingsclosed: ["BDrepo", "settingsClosed"], + _reposwitch: ["BDrepo", "bdSwitch"], + _reposwitchchecked: ["BDrepo", "bdSwitchChecked"], + _reposwitchinner: ["BDrepo", "bdSwitchInner"], + _repoupdatebutton: ["BDrepo", "bdUpdatebtn"], + _repoversion: ["BDrepo", "bdaVersion"], + accountinfo: ["AccountDetails", "container"], + accountinfoavatar: ["AccountDetails", "avatar"], + accountinfoavatarwrapper: ["AccountDetails", "avatarWrapper"], + accountinfobutton: ["AccountDetailsButtons", "button"], + accountinfobuttondisabled: ["AccountDetailsButtons", "disabled"], + accountinfobuttonenabled: ["AccountDetailsButtons", "enabled"], + accountinfodetails: ["AccountDetails", "usernameContainer"], + accountinfonametag: ["AccountDetails", "nameTag"], + alignbaseline: ["Flex", "alignBaseline"], + aligncenter: ["Flex", "alignCenter"], + alignend: ["Flex", "alignEnd"], + alignstart: ["Flex", "alignStart"], + alignstretch: ["Flex", "alignStretch"], + anchor: ["Anchor", "anchor"], + anchorunderlineonhover: ["Anchor", "anchorUnderlineOnHover"], + animationcontainerbottom: ["AnimationContainer", "animatorBottom"], + animationcontainerleft: ["AnimationContainer", "animatorLeft"], + animationcontainerright: ["AnimationContainer", "animatorRight"], + animationcontainertop: ["AnimationContainer", "animatorTop"], + animationcontainerrender: ["AnimationContainer", "didRender"], + animationcontainerscale: ["AnimationContainer", "scale"], + animationcontainertranslate: ["AnimationContainer", "translate"], + app: ["AppOuter", "app"], + appcontainer: ["AppBase", "container"], + appmount: ["AppMount", "appMount"], + applayers: ["AppInner", "layers"], + applicationstore: ["ApplicationStore", "applicationStore"], + appold: ["AppInner", "app"], + auditlog: ["AuditLog", "auditLog"], + auditlogoverflowellipsis: ["AuditLog", "overflowEllipsis"], + auditloguserhook: ["AuditLog", "userHook"], + authbox: ["AuthBox", "authBox"], + autocomplete: ["Autocomplete", "autocomplete"], + autocompletecontent: ["Autocomplete", "content"], + autocompletecontenttitle: ["Autocomplete", "contentTitle"], + autocompletedescription: ["Autocomplete", "description"], + autocompletedescriptiondiscriminator: ["Autocomplete", "descriptionDiscriminator"], + autocompletedescriptionusername: ["Autocomplete", "descriptionUsername"], + autocompleteicon: ["Autocomplete", "icon"], + autocompleteiconforeground: ["Autocomplete", "iconForeground"], + autocompleteinner: ["Autocomplete", "autocompleteInner"], + autocompleterow: ["Autocomplete", "autocompleteRow"], + autocompleterowhorizontal: ["Autocomplete", "autocompleteRowHorizontal"], + autocompleterowvertical: ["Autocomplete", "autocompleteRowVertical"], + autocompleteselectable: ["Autocomplete", "selectable"], + autocompleteselected: ["Autocomplete", "selectorSelected"], + autocompleteselector: ["Autocomplete", "selector"], + avatar: ["Avatar", "avatar"], + avatarcursordefault: ["Avatar", "cursorDefault"], + avataricon: ["AvatarIcon", "icon"], + avatariconactivelarge: ["AvatarIcon", "iconActiveLarge"], + avatariconactivemedium: ["AvatarIcon", "iconActiveMedium"], + avatariconactivemini: ["AvatarIcon", "iconActiveMini"], + avatariconactivesmall: ["AvatarIcon", "iconActiveSmall"], + avatariconactivexlarge: ["AvatarIcon", "iconActiveXLarge"], + avatariconinactive: ["AvatarIcon", "iconInactive"], + avatariconsizelarge: ["AvatarIcon", "iconSizeLarge"], + avatariconsizemedium: ["AvatarIcon", "iconSizeMedium"], + avatariconsizemini: ["AvatarIcon", "iconSizeMini"], + avatariconsizesmol: ["AvatarIcon", "iconSizeSmol"], + avatariconsizesmall: ["AvatarIcon", "iconSizeSmall"], + avatariconsizexlarge: ["AvatarIcon", "iconSizeXLarge"], + avatarmask: ["Avatar", "mask"], + avatarnoicon: ["AvatarIcon", "noIcon"], + avatarpointer: ["Avatar", "pointer"], + avatarpointerevents: ["Avatar", "pointerEvents"], + avatarwrapper: ["Avatar", "wrapper"], + backdrop: ["Backdrop", "backdrop"], + backdropwithlayer: ["Backdrop", "backdropWithLayer"], + badgebase: ["Badge", "base"], + badgeicon: ["Badge", "icon"], + badgeiconbadge: ["Badge", "iconBadge"], + badgenumberbadge: ["Badge", "numberBadge"], + badgetextbadge: ["Badge", "textBadge"], + badgewrapper: ["NotFound", "badgeWrapper"], + bdfdbbadge: ["BDFDB", "badge"], + bdfdbdev: ["BDFDB", "dev"], + bdfdbhasbadge: ["BDFDB", "hasBadge"], + bdfdbsupporter: ["BDFDB", "supporter"], + bdfdbsupportercustom: ["BDFDB", "supporterCustom"], + bold: ["TextStyle", "bold"], + bottag: ["BotTag", "botTag"], + bottaginvert: ["BotTag", "botTagInvert"], + bottagmember: ["Member", "botTag"], + bottagnametag: ["NameTag", "bot"], + bottagpx: ["BotTag", "px"], + bottagregular: ["BotTag", "botTagRegular"], + bottagrem: ["BotTag", "rem"], + bottagtext: ["BotTag", "botText"], + bottagverified: ["BotTag", "botTagVerified"], + button: ["Button", "button"], + buttoncolorblack: ["Button", "colorBlack"], + buttoncolorbrand: ["Button", "colorBrand"], + buttoncolorgreen: ["Button", "colorGreen"], + buttoncolorgrey: ["Button", "colorGrey"], + buttoncolorlink: ["Button", "colorLink"], + buttoncolorprimary: ["Button", "colorPrimary"], + buttoncolorred: ["Button", "colorRed"], + buttoncolortransparent: ["Button", "colorTransparent"], + buttoncolorwhite: ["Button", "colorWhite"], + buttoncoloryellow: ["Button", "colorYellow"], + buttoncontents: ["Button", "contents"], + buttondisabledoverlay: ["Button", "disabledButtonOverlay"], + buttondisabledwrapper: ["Button", "disabledButtonWrapper"], + buttonfullwidth: ["Button", "fullWidth"], + buttongrow: ["Button", "grow"], + buttonhashover: ["Button", "hasHover"], + buttonhoverblack: ["Button", "hoverBlack"], + buttonhoverbrand: ["Button", "hoverBrand"], + buttonhovergreen: ["Button", "hoverGreen"], + buttonhovergrey: ["Button", "hoverGrey"], + buttonhoverlink: ["Button", "hoverLink"], + buttonhoverprimary: ["Button", "hoverPrimary"], + buttonhoverred: ["Button", "hoverRed"], + buttonhovertransparent: ["Button", "hoverTransparent"], + buttonhoverwhite: ["Button", "hoverWhite"], + buttonhoveryellow: ["Button", "hoverYellow"], + buttonlookblank: ["Button", "lookBlank"], + buttonlookfilled: ["Button", "lookFilled"], + buttonlookghost: ["Button", "lookGhost"], + buttonlookinverted: ["Button", "lookInverted"], + buttonlooklink: ["Button", "lookLink"], + buttonlookoutlined: ["Button", "lookOutlined"], + buttonsizeicon: ["Button", "sizeIcon"], + buttonsizelarge: ["Button", "sizeLarge"], + buttonsizemax: ["Button", "sizeMax"], + buttonsizemedium: ["Button", "sizeMedium"], + buttonsizemin: ["Button", "sizeMin"], + buttonsizesmall: ["Button", "sizeSmall"], + buttonsizexlarge: ["Button", "sizeXlarge"], + buttonspinner: ["Button", "spinner"], + buttonspinneritem: ["Button", "spinnerItem"], + buttonsubmitting: ["Button", "submitting"], + callcurrentcontainer: ["CallCurrent", "wrapper"], + callcurrentdetails: ["CallDetails", "container"], + callcurrentvideo: ["Video", "video"], + callincoming: ["CallIncoming", "incomingCall"], + callincomingcontainer: ["CallIncoming", "container"], + callincominginner: ["CallIncomingInner", "incomingCallInner"], + callmembers: ["CallIncomingInner", "members"], + callincomingroot: ["CallIncoming", "root"], + callincomingtitle: ["CallIncoming", "title"], + callincomingwrapper: ["CallIncoming", "wrapper"], + card: ["Card", "card"], + cardbrand: ["Card", "cardBrand"], + cardbrandoutline: ["Card", "cardBrandOutline"], + carddanger: ["Card", "cardDanger"], + carddangeroutline: ["Card", "cardDangerOutline"], + carderror: ["CardStatus", "error"], + cardprimary: ["Card", "cardPrimary"], + cardprimaryeditable: ["Card", "cardPrimaryEditable"], + cardprimaryoutline: ["Card", "cardPrimaryOutline"], + cardprimaryoutlineeditable: ["Card", "cardPrimaryOutlineEditable"], + cardreset: ["CardStatus", "reset"], + cardsuccess: ["Card", "cardSuccess"], + cardsuccessoutline: ["Card", "cardSuccessOutline"], + cardwarning: ["Card", "cardWarning"], + cardwarningoutline: ["Card", "cardWarningOutline"], + categoryaddbutton: ["CategoryContainer", "addButton"], + categoryaddbuttonicon: ["CategoryContainer", "addButtonIcon"], + categorychildren: ["Category", "children"], + categoryclickable: ["Category", "clickable"], + categorycollapsed: ["Category", "collapsed"], + categorycontainerdefault: ["CategoryContainer", "containerDefault"], + categoryforcevisible: ["CategoryContainer", "forceVisible"], + categoryicon: ["Category", "icon"], + categoryiconvisibility: ["CategoryContainer", "iconVisibility"], + categorymuted: ["Category", "muted"], + categoryname: ["Category", "name"], + categorywrapper: ["Category", "wrapper"], + changelogadded: ["ChangeLog", "added"], + changelogcontainer: ["ChangeLog", "container"], + changelogfixed: ["ChangeLog", "fixed"], + changelogimproved: ["ChangeLog", "improved"], + changelogprogress: ["ChangeLog", "progress"], + changelogtitle: ["ChangeLog", "title"], + channelactionicon: ["ChannelContainer", "actionIcon"], + channelchildicon: ["ChannelContainer", "iconItem"], + channelchildiconbase: ["ChannelContainer", "iconBase"], + channelchildren: ["Channel", "children"], + channelcontainerdefault: ["ChannelContainer", "containerDefault"], + channelcontent: ["Channel", "content"], + channeldisabled: ["ChannelContainer", "disabled"], + channelheaderchannelname: ["ChatWindow", "channelName"], + channelheaderchildren: ["HeaderBar", "children"], + channelheaderdivider: ["HeaderBar", "divider"], + channelheaderheaderbar: ["HeaderBar", "container"], + channelheaderheaderbarthemed: ["HeaderBar", "themed"], + channelheaderheaderbartitle: ["HeaderBar", "title"], + channelheadericon: ["HeaderBar", "icon"], + channelheadericonbadge: ["HeaderBar", "iconBadge"], + channelheadericonclickable: ["HeaderBar", "clickable"], + channelheadericonselected: ["HeaderBar", "selected"], + channelheadericonwrapper: ["HeaderBar", "iconWrapper"], + channelheadertitle: ["ChatWindow", "title"], + channelheadertitlewrapper: ["ChatWindow", "titleWrapper"], + channelheadersearch: ["HeaderBarExtras", "search"], + channelheadersearchbar: ["HeaderBarSearch", "searchBar"], + channelheadersearchicon: ["HeaderBarSearch", "icon"], + channelheadersearchinner: ["HeaderBarSearch", "search"], + channelheadertoolbar: ["HeaderBar", "toolbar"], + channelheadertoolbar2: ["HeaderBarExtras", "toolbar"], + channelheadertopic: ["HeaderBarTopic", "topic"], + channelheadertopicexpandable: ["HeaderBarTopic", "expandable"], + channelicon: ["Channel", "icon"], + channeliconvisibility: ["ChannelContainer", "iconVisibility"], + channelmentionsbadge: ["ChannelContainer", "mentionsBadge"], + channelmodeconnected: ["Channel", "modeConnected"], + channelmodelocked: ["Channel", "modeLocked"], + channelmodemuted: ["Channel", "modeMuted"], + channelmodeselected: ["Channel", "modeSelected"], + channelmodeunread: ["Channel", "modeUnread"], + channelname: ["Channel", "name"], + channelpanel: ["AppBase", "activityPanel"], + channelpaneltitle: ["NotFound", "channelPanelTitle"], + channelpanels: ["AppBase", "panels"], + channels: ["AppBase", "sidebar"], + channelselected: ["ChannelContainer", "selected"], + channelsscroller: ["GuildChannels", "scroller"], + channelsunreadbar: ["GuildChannels", "unreadBar"], + channelsunreadbarcontainer: ["GuildChannels", "positionedContainer"], + channelsunreadbarbottom: ["GuildChannels", "unreadBottom"], + channelsunreadbarunread: ["GuildChannels", "unread"], + channelsunreadbartop: ["GuildChannels", "unreadTop"], + channelunread: ["Channel", "unread"], + channeluserlimit: ["ChannelLimit", "wrapper"], + channeluserlimitcontainer: ["ChannelContainer", "userLimit"], + channeluserlimittotal: ["ChannelLimit", "total"], + channeluserlimitusers: ["ChannelLimit", "users"], + channelwrapper: ["Channel", "wrapper"], + charcounter: ["BDFDB", "charCounter"], + chat: ["ChatWindow", "chat"], + chatbase: ["AppBase", "base"], + chatcontent: ["ChatWindow", "chatContent"], + chatform: ["ChatWindow", "form"], + chatinner: ["ChatWindow", "content"], + chatspacer: ["AppBase", "content"], + checkbox: ["Checkbox", "checkbox"], + checkboxchecked: ["Checkbox", "checked"], + checkboxcontainer: ["ModalItems", "checkboxContainer"], + checkboxinput: ["Checkbox", "input"], + checkboxinputdefault: ["Checkbox", "inputDefault"], + checkboxinputdisabled: ["Checkbox", "inputDisabled"], + checkboxround: ["Checkbox", "round"], + checkboxwrapper: ["Checkbox", "checkboxWrapper"], + checkboxwrapperdisabled: ["Checkbox", "checkboxWrapperDisabled"], + collapsecontainer: ["BDFDB", "collapseContainer"], + collapsecontainerarrow: ["BDFDB", "collapseContainerArrow"], + collapsecontainercollapsed: ["BDFDB", "collapseContainerCollapsed"], + collapsecontainerheader: ["BDFDB", "collapseContainerHeader"], + collapsecontainerinner: ["BDFDB", "collapseContainerInner"], + collapsecontainermini: ["BDFDB", "collapseContainerMini"], + collapsecontainertitle: ["BDFDB", "collapseContainerTitle"], + colorbase: ["TextColor2", "base"], + colorbrand: ["TextColor", "colorBrand"], + colorerror: ["TextColor", "colorError"], + colormuted: ["TextColor", "colorMuted"], + colorgreen: ["TextColor", "colorStatusGreen"], + colorpicker: ["ColorPicker", "colorPickerCustom"], + colorpickeralpha: ["BDFDB", "colorPickerAlpha"], + colorpickeralphacheckered: ["BDFDB", "colorPickerAlphaCheckered"], + colorpickeralphacursor: ["BDFDB", "colorPickerAlphaCursor"], + colorpickeralphahorizontal: ["BDFDB", "colorPickerAlphaHorizontal"], + colorpickergradient: ["BDFDB", "colorPickerGradient"], + colorpickergradientbutton: ["BDFDB", "colorPickerGradientButton"], + colorpickergradientbuttonenabled: ["BDFDB", "colorPickerGradientButtonEnabled"], + colorpickergradientcheckered: ["BDFDB", "colorPickerGradientCheckered"], + colorpickergradientcursor: ["BDFDB", "colorPickerGradientCursor"], + colorpickergradientcursoredge: ["BDFDB", "colorPickerGradientCursorEdge"], + colorpickergradientcursorselected: ["BDFDB", "colorPickerGradientCursorSelected"], + colorpickergradienthorizontal: ["BDFDB", "colorPickerGradientHorizontal"], + colorpickerhexinput: ["ColorPicker", "customColorPickerInput"], + colorpickerhue: ["ColorPickerInner", "hue"], + colorpickerhuecursor: ["NotFound", "hueCursor"], + colorpickerhuehorizontal: ["NotFound", "hueHorizontal"], + colorpickerhuevertical: ["NotFound", "hueVertical"], + colorpickerinner: ["ColorPickerInner", "wrapper"], + colorpickerrow: ["ColorPicker", "colorPickerRow"], + colorpickersaturation: ["ColorPickerInner", "saturation"], + colorpickersaturationblack: ["NotFound", "saturationBlack"], + colorpickersaturationcolor: ["NotFound", "saturationColor"], + colorpickersaturationcursor: ["NotFound", "saturationCursor"], + colorpickersaturationwhite: ["NotFound", "saturationWhite"], + colorpickerswatch: ["ColorPicker", "colorPickerSwatch"], + colorpickerswatches: ["BDFDB", "colorPickerSwatches"], + colorpickerswatchesdisabled: ["BDFDB", "colorPickerSwatchesDisabled"], + colorpickerswatchcustom: ["ColorPicker", "custom"], + colorpickerswatchdefault: ["ColorPicker", "default"], + colorpickerswatchdisabled: ["ColorPicker", "disabled"], + colorpickerswatchdropper: ["ColorPicker", "colorPickerDropper"], + colorpickerswatchdropperfg: ["ColorPicker", "colorPickerDropperFg"], + colorpickerswatchnocolor: ["ColorPicker", "noColor"], + colorpickerswatchselected: ["BDFDB", "colorPickerSwatchSelected"], + colorpickerswatchsingle: ["BDFDB", "colorPickerSwatchSingle"], + colorpickerwrapper: ["BDFDB", "colorPicker"], + colorprimary: ["TextColor", "colorHeaderPrimary"], + colorred: ["TextColor", "colorStatusRed"], + colorsecondary: ["TextColor", "colorHeaderSecondary"], + colorselectable: ["TextColor", "selectable"], + colorstandard: ["TextColor", "colorStandard"], + coloryellow: ["TextColor", "colorStatusYellow"], + cursordefault: ["Cursor", "cursorDefault"], + cursorpointer: ["Cursor", "cursorPointer"], + customstatusemoji: ["CustomStatusIcon", "emoji"], + customstatusicon: ["CustomStatusIcon", "icon"], + defaultcolor: ["Text", "defaultColor"], + description: ["FormText", "description"], + directioncolumn: ["Flex", "directionColumn"], + directiondown: ["IconDirection", "directionDown"], + directionleft: ["IconDirection", "directionLeft"], + directionright: ["IconDirection", "directionRight"], + directionrow: ["Flex", "directionRow"], + directionrowreverse: ["Flex", "directionRowReverse"], + directionup: ["IconDirection", "directionUp"], + directiontransition: ["IconDirection", "transition"], + disabled: ["SettingsItems", "disabled"], + discriminator: ["NameTag", "discriminator"], + divider: ["ModalDivider", "divider"], + dividerdefault: ["SettingsItems", "dividerDefault"], + dividermini: ["SettingsItems", "dividerMini"], + dmchannel: ["PrivateChannel", "channel"], + dmchannelactivity: ["PrivateChannel", "activity"], + dmchannelactivityemoji: ["PrivateChannel", "activityEmoji"], + dmchannelactivitytext: ["PrivateChannel", "activityText"], + dmchannelclose: ["PrivateChannel", "closeButton"], + dmchannelheadercontainer: ["PrivateChannelListScroller", "privateChannelsHeaderContainer"], + dmchannelheadertext: ["PrivateChannelListScroller", "headerText"], + dmchannels: ["PrivateChannelList", "privateChannels"], + dmchannelsempty: ["PrivateChannelListScroller", "empty"], + dmchannelsscroller: ["PrivateChannelListScroller", "scroller"], + dmpill: ["GuildDm", "pill"], + downloadlink: ["DownloadLink", "downloadLink"], + ellipsis: ["PopoutActivity", "ellipsis"], + embed: ["Embed", "embed"], + embedauthor: ["Embed", "embedAuthor"], + embedauthoricon: ["Embed", "embedAuthorIcon"], + embedauthorname: ["Embed", "embedAuthorName"], + embedauthornamelink: ["Embed", "embedAuthorNameLink"], + embedcentercontent: ["Embed", "centerContent"], + embeddescription: ["Embed", "embedDescription"], + embedfield: ["Embed", "embedField"], + embedfieldname: ["Embed", "embedFieldName"], + embedfields: ["Embed", "embedFields"], + embedfieldvalue: ["Embed", "embedFieldValue"], + embedfooter: ["Embed", "embedFooter"], + embedfootericon: ["Embed", "embedFooterIcon"], + embedfooterseparator: ["Embed", "embedFooterSeparator"], + embedfootertext: ["Embed", "embedFooterText"], + embedfull: ["Embed", "embedFull"], + embedgiftag: ["Embed", "embedGIFTag"], + embedgrid: ["Embed", "grid"], + embedhasthumbnail: ["Embed", "hasThumbnail"], + embedhiddenspoiler: ["Embed", "hiddenSpoiler"], + embediframe: ["Embed", "embedIframe"], + embedimage: ["Embed", "embedImage"], + embedlink: ["Embed", "embedLink"], + embedmargin: ["Embed", "embedMargin"], + embedmedia: ["Embed", "embedMedia"], + embedprovider: ["Embed", "embedProvider"], + embedspoilerattachment: ["Embed", "spoilerAttachment"], + embedspoilerembed: ["Embed", "spoilerEmbed"], + embedspotify: ["Embed", "embedSpotify"], + embedthumbnail: ["Embed", "embedThumbnail"], + embedtitle: ["Embed", "embedTitle"], + embedtitlelink: ["Embed", "embedTitleLink"], + embedvideo: ["Embed", "embedVideo"], + embedvideoaction: ["Embed", "embedVideoAction"], + embedvideoactions: ["Embed", "embedVideoActions"], + embedvideoimagecomponent: ["Embed", "embedVideoImageComponent"], + embedvideoimagecomponentinner: ["Embed", "embedVideoImageComponentInner"], + embedwrapper: ["MessageAccessory", "embedWrapper"], + emoji: ["Emoji", "emoji"], + emojiold: ["NotFound", "emoji"], + emojibutton: ["EmojiButton", "emojiButton"], + emojibuttonhovered: ["EmojiButton", "emojiButtonHovered"], + emojibuttonnormal: ["EmojiButton", "emojiButtonNormal"], + emojibuttonsprite: ["EmojiButton", "sprite"], + emojiinput: ["EmojiInput", "input"], + emojiinputbutton: ["EmojiInput", "emojiButton"], + emojiinputbuttoncontainer: ["EmojiInput", "emojiButtonContainer"], + emojiinputclearbutton: ["EmojiInput", "clearButton"], + emojiinputclearicon: ["EmojiInput", "clearIcon"], + emojiinputcontainer: ["EmojiInput", "inputContainer"], + emojipickerbutton: ["Reactions", "reactionBtn"], + emojipicker: ["EmojiPicker", "emojiPicker"], + emojipickerdiversityemojiitem: ["EmojiPickerDiversitySelector", "diversityEmojiItem"], + emojipickerdiversityemojiitemimage: ["EmojiPickerDiversitySelector", "diversityEmojiItemImage"], + emojipickerdiversityselector: ["EmojiPickerDiversitySelector", "diversitySelector"], + emojipickerdiversityselectorpopout: ["EmojiPickerDiversitySelector", "diversitySelectorPopout"], + emojipickerdiversityselectorwrapper: ["EmojiPicker", "diversitySelector"], + emojipickeremojispriteimage: ["EmojiPickerItem", "emojiSpriteImage"], + emojipickerheader: ["EmojiPicker", "header"], + emojipickerinspector: ["EmojiPickerInspector", "inspector"], + emojipickerinspectoremoji: ["EmojiPickerInspector", "emoji"], + expressionpicker: ["ExpressionPicker", "contentWrapper"], + expressionpickernav: ["ExpressionPicker", "nav"], + expressionpickernavbutton: ["ExpressionPicker", "navButton"], + expressionpickernavbuttonactive: ["ExpressionPicker", "navButtonActive"], + expressionpickernavitem: ["ExpressionPicker", "navItem"], + expressionpickernavlist: ["ExpressionPicker", "navList"], + favbuttoncontainer: ["BDFDB", "favButtonContainer"], + fileattachment: ["File", "attachment"], + fileattachmentinner: ["File", "attachmentInner"], + filecancelbutton: ["File", "cancelButton"], + filedownloadbutton: ["File", "downloadButton"], + filename: ["File", "filename"], + filenamelink: ["File", "fileNameLink"], + filenamelinkwrapper: ["File", "filenameLinkWrapper"], + filenamewrapper: ["File", "filenameWrapper"], + flex: ["FlexChild", "flex"], + flex2: ["Flex", "flex"], + flexcenter: ["Flex", "flexCenter"], + flexchild: ["FlexChild", "flexChild"], + flexmarginreset: ["FlexChild", "flexMarginReset"], + flexspacer: ["Flex", "spacer"], + flowerstar: ["FlowerStar", "flowerStar"], + flowerstarchild: ["FlowerStar", "childContainer"], + flowerstarcontainer: ["FlowerStar", "flowerStarContainer"], + focusable: ["Focusable", "focusable"], + formtext: ["FormText", "formText"], + game: ["Game", "game"], + gameicon: ["GameIcon", "gameIcon"], + gameiconlarge: ["GameIcon", "large"], + gameiconmedium: ["GameIcon", "medium"], + gameiconsmall: ["GameIcon", "small"], + gameiconxsmall: ["GameIcon", "xsmall"], + gamelibrarytable: ["GameLibraryTable", "table"], + gamelibrarytableheader: ["GameLibraryTable", "header"], + gamelibrarytableheadercell: ["GameLibraryTable", "headerCell"], + gamelibrarytableheadercellsorted: ["GameLibraryTable", "headerCellSorted"], + gamelibrarytablerow: ["GameLibraryTable", "row"], + gamelibrarytablerowwrapper: ["GameLibraryTable", "rowWrapper"], + gamelibrarytablestickyheader: ["GameLibraryTable", "stickyHeader"], + gamename: ["Game", "gameName"], + gamenameinput: ["Game", "gameNameInput"], + giffavoritebutton: ["MessageAccessory", "gifFavoriteButton"], + giffavoritecolor: ["GifFavoriteButton", "gifFavoriteButton"], + giffavoriteicon: ["GifFavoriteButton", "icon"], + giffavoriteshowpulse: ["GifFavoriteButton", "showPulse"], + giffavoritesize: ["GifFavoriteButton", "size"], + giffavoriteselected: ["GifFavoriteButton", "selected"], + goliveactions: ["GoLiveDetails", "actions"], + golivebody: ["GoLiveDetails", "body"], + goliveclickablegamewrapper: ["GoLiveDetails", "clickableGameWrapper"], + golivegameicon: ["GoLiveDetails", "gameIcon"], + golivegamename: ["GoLiveDetails", "gameName"], + golivegamewrapper: ["GoLiveDetails", "gameWrapper"], + goliveinfo: ["GoLiveDetails", "info"], + golivepanel: ["GoLiveDetails", "panel"], + guild: ["BDFDB", "guild"], + guildbuttoncontainer: ["GuildsItems", "circleButtonMask"], + guildbuttoninner: ["GuildsItems", "circleIconButton"], + guildbuttonicon: ["GuildsItems", "circleIcon"], + guildbuttonpill: ["GuildsItems", "pill"], + guildbuttonselected: ["GuildsItems", "selected"], + guildchannels: ["NotFound", "guildChannels"], + guildcontainer: ["GuildServer", "blobContainer"], + guilddiscovery: ["GuildDiscovery", "pageWrapper"], + guildedge: ["GuildEdges", "edge"], + guildedgehalf: ["GuildEdges", "half"], + guildedgehigher: ["GuildEdges", "higher"], + guildedgemiddle: ["GuildEdges", "middle"], + guildedgewrapper: ["GuildEdges", "wrapper"], + guildserror: ["GuildsItems", "guildsError"], + guildserrorinner: ["GuildsItems", "errorInner"], + guildfolder: ["GuildFolder", "folder"], + guildfolderexpandedbackground: ["GuildFolder", "expandedFolderBackground"], + guildfolderexpandedbackgroundcollapsed: ["GuildFolder", "collapsed"], + guildfolderexpandedbackgroundhover: ["GuildFolder", "hover"], + guildfolderguildicon: ["GuildFolder", "guildIcon"], + guildfoldericonwrapper: ["GuildFolder", "folderIconWrapper"], + guildfoldericonwrapperclosed: ["GuildFolder", "closedFolderIconWrapper"], + guildfoldericonwrapperexpanded: ["GuildFolder", "expandedFolderIconWrapper"], + guildfolderwrapper: ["GuildFolder", "wrapper"], + guildheader: ["GuildHeader", "container"], + guildheaderbannerimage: ["GuildHeader", "bannerImage"], + guildheaderbannerimagecontainer: ["GuildHeader", "animatedContainer"], + guildheaderbannervisible: ["GuildHeader", "bannerVisible"], + guildheaderbutton: ["GuildHeaderButton", "button"], + guildheaderbuttonopen: ["GuildHeaderButton", "open"], + guildheaderclickable: ["GuildHeader", "clickable"], + guildheaderhasbanner: ["GuildHeader", "hasBanner"], + guildheadericoncontainer: ["GuildHeader", "guildIconContainer"], + guildheadericonbgtiernone: ["GuildHeader", "iconBackgroundTierNone"], + guildheadericonbgtierone: ["GuildHeader", "iconBackgroundTierOne"], + guildheadericonbgtierthree: ["GuildHeader", "iconBackgroundTierThree"], + guildheadericonbgtiertwo: ["GuildHeader", "iconBackgroundTierTwo"], + guildheadericonpremiumgem: ["GuildHeader", "premiumGuildIconGem"], + guildheadericontiernone: ["GuildHeader", "iconTierNone"], + guildheadericontierone: ["GuildHeader", "iconTierOne"], + guildheadericontierthree: ["GuildHeader", "iconTierThree"], + guildheadericontiertwo: ["GuildHeader", "iconTierTwo"], + guildheaderheader: ["GuildHeader", "header"], + guildheadername: ["GuildHeader", "name"], + guildicon: ["GuildIcon", "icon"], + guildiconacronym: ["GuildIcon", "acronym"], + guildiconbadge: ["GuildsItems", "iconBadge"], + guildiconchildwrapper: ["GuildIcon", "childWrapper"], + guildiconselected: ["GuildIcon", "selected"], + guildiconwrapper: ["GuildIcon", "wrapper"], + guildinner: ["Guild", "wrapper"], + guildinnerwrapper: ["GuildsItems", "listItemWrapper"], + guildlowerbadge: ["Guild", "lowerBadge"], + guildlowerleftbadge: ["BDFDB", "guildLowerLeftBadge"], + guildouter: ["GuildsItems", "listItem"], + guildpill: ["GuildServer", "pill"], + guildpillitem: ["PillWrapper", "item"], + guildpillwrapper: ["PillWrapper", "wrapper"], + guildplaceholder: ["GuildsItems", "dragInner"], + guildplaceholdermask: ["GuildsItems", "placeholderMask"], + guilds: ["AppBase", "guilds"], + guildseparator: ["GuildsItems", "guildSeparator"], + guildserror: ["GuildsItems", "guildsError"], + guildsettingsbannedcard: ["GuildSettingsBanned", "bannedUser"], + guildsettingsbanneddiscrim: ["GuildSettingsBanned", "discrim"], + guildsettingsbannedusername: ["GuildSettingsBanned", "username"], + guildsettingsemojicard: ["GuildSettingsEmoji", "emojiRow"], + guildsettingsinvitecard: ["GuildSettingsInvite", "inviteSettingsInviteRow"], + guildsettingsinvitechannelname: ["GuildSettingsInvite", "channelName"], + guildsettingsinviteusername: ["GuildSettingsInvite", "username"], + guildsettingsmembercard: ["GuildSettingsMember", "member"], + guildsettingsmembername: ["GuildSettingsMember", "name"], + guildsettingsmembernametag: ["GuildSettingsMember", "nameTag"], + guildsettingsrolesbuttonwrapper: ["GuildSettingsRoles", "buttonWrapper"], + guildsscroller: ["GuildsWrapper", "scroller"], + guildsvg: ["Guild", "svg"], + guildswrapper: ["GuildsWrapper", "wrapper"], + guildswrapperunreadmentionsbar: ["GuildsWrapper", "unreadMentionsBar"], + guildswrapperunreadmentionsbarbottom: ["GuildsWrapper", "unreadMentionsIndicatorBottom"], + guildswrapperunreadmentionsbartop: ["GuildsWrapper", "unreadMentionsIndicatorTop"], + guildtutorialcontainer: ["GuildsItems", "tutorialContainer"], + guildupperbadge: ["Guild", "upperBadge"], + guildupperleftbadge: ["BDFDB", "guildUpperLeftBadge"], + h1: ["Text", "h1"], + h1defaultmargin: ["Text", "defaultMarginh1"], + h2: ["Text", "h2"], + h2defaultmargin: ["Text", "defaultMarginh2"], + h3: ["Text", "h3"], + h3defaultmargin: ["Text", "defaultMarginh3"], + h4: ["Text", "h4"], + h4defaultmargin: ["Text", "defaultMarginh4"], + h5: ["Text", "h5"], + h5defaultmargin: ["Text", "defaultMarginh5"], + headertitle: ["Text", "title"], + height12: ["UserPopout", "height12"], + height16: ["File", "height16"], + height24: ["Title", "height24"], + height36: ["Notice", "height36"], + highlight: ["NotFound", "highlight"], + homebuttonicon: ["HomeIcon", "homeIcon"], + homebuttonpill: ["HomeIcon", "pill"], + horizontal: ["FlexChild", "horizontal"], + horizontal2: ["NotFound", "_"], + horizontalreverse: ["FlexChild", "horizontalReverse"], + horizontalreverse2: ["NotFound", "_"], + hotkeybase: ["NotFound", "_"], + hotkeybutton: ["HotKeyRecorder", "button"], + hotkeybutton2: ["NotFound", "_"], + hotkeycontainer: ["HotKeyRecorder", "container"], + hotkeycontainer2: ["NotFound", "_"], + hotkeydisabled: ["HotKeyRecorder", "disabled"], + hotkeydisabled2: ["NotFound", "_"], + hotkeyediticon: ["HotKeyRecorder", "editIcon"], + hotkeyhasvalue: ["HotKeyRecorder", "hasValue"], + hotkeyinput: ["HotKeyRecorder", "input"], + hotkeyinput2: ["HotKeyRecorder", "input"], + hotkeylayout: ["HotKeyRecorder", "layout"], + hotkeylayout2: ["HotKeyRecorder", "layout"], + hotkeyrecording: ["HotKeyRecorder", "recording"], + hotkeyresetbutton: ["BDFDB", "hotkeyResetButton"], + hotkeyshadowpulse: ["HotKeyRecorder", "shadowPulse"], + hotkeytext: ["HotKeyRecorder", "text"], + hotkeywrapper: ["BDFDB", "hotkeyWrapper"], + hovercard: ["HoverCard", "card"], + hovercardbutton: ["NotFound", "hoverCardButton"], + hovercardinner: ["BDFDB", "cardInner"], + hovercardwrapper: ["BDFDB", "cardWrapper"], + icon: ["EmbedActions", "icon"], + iconactionswrapper: ["EmbedActions", "wrapper"], + iconexternal: ["EmbedActions", "iconExternal"], + iconexternalmargins: ["EmbedActions", "iconExternalMargins"], + iconplay: ["EmbedActions", "iconPlay"], + iconwrapper: ["EmbedActions", "iconWrapper"], + iconwrapperactive: ["EmbedActions", "iconWrapperActive"], + imageaccessory: ["ImageWrapper", "imageAccessory"], + imageclickable: ["ImageWrapper", "clickable"], + imageerror: ["ImageWrapper", "imageError"], + imageplaceholder: ["ImageWrapper", "imagePlaceholder"], + imageplaceholderoverlay: ["ImageWrapper", "imagePlaceholderOverlay"], + imagewrapper: ["ImageWrapper", "imageWrapper"], + imagewrapperbackground: ["ImageWrapper", "imageWrapperBackground"], + imagewrapperinner: ["ImageWrapper", "imageWrapperInner"], + imagezoom: ["ImageWrapper", "imageZoom"], + itemlayer: ["ItemLayerContainer", "layer"], + itemlayercontainer: ["ItemLayerContainer", "layerContainer"], + itemlayerdisabledpointerevents: ["ItemLayerContainer", "disabledPointerEvents"], + input: ["Input", "input"], + inputdefault: ["Input", "inputDefault"], + inputdisabled: ["Input", "disabled"], + inputeditable: ["Input", "editable"], + inputerror: ["Input", "error"], + inputfocused: ["Input", "focused"], + inputmini: ["Input", "inputMini"], + inputprefix: ["Input", "inputPrefix"], + inputsuccess: ["Input", "success"], + inputwrapper: ["Input", "inputWrapper"], + inputnumberbutton: ["BDFDB", "inputNumberButton"], + inputnumberbuttondown: ["BDFDB", "inputNumberButtonDown"], + inputnumberbuttonup: ["BDFDB", "inputNumberButtonUp"], + inputnumberbuttons: ["BDFDB", "inputNumberButtons"], + inputnumberwrapper: ["BDFDB", "inputNumberWrapper"], + inputnumberwrapperdefault: ["BDFDB", "inputNumberWrapperDefault"], + inputnumberwrappermini: ["BDFDB", "inputNumberWrapperMini"], + invite: ["GuildInvite", "wrapper"], + invitebutton: ["GuildInvite", "button"], + invitebuttonfornonmember: ["GuildInvite", "buttonForNonMember"], + invitebuttonresolving: ["GuildInvite", "invite-button-resolving"], + invitebuttonsize: ["GuildInvite", "buttonSize"], + invitechannel: ["GuildInvite", "channel"], + invitechannelicon: ["GuildInvite", "channelIcon"], + invitechannelname: ["GuildInvite", "channelName"], + invitecontent: ["GuildInvite", "content"], + invitecount: ["GuildInvite", "count"], + invitecursordefault: ["GuildInvite", "cursorDefault"], + invitedestination: ["GuildInvite", "inviteDestination"], + invitedestinationexpired: ["GuildInvite", "inviteDestinationExpired"], + invitedestinationjoined: ["GuildInvite", "inviteDestinationJoined"], + inviteguildbadge: ["GuildInvite", "guildBadge"], + inviteguilddetail: ["GuildInvite", "guildDetail"], + inviteguildicon: ["GuildInvite", "guildIcon"], + inviteguildiconexpired: ["GuildInvite", "guildIconExpired"], + inviteguildiconimage: ["GuildInvite", "guildIconImage"], + inviteguildiconimagejoined: ["GuildInvite", "guildIconImageJoined"], + inviteguildiconjoined: ["GuildInvite", "guildIconJoined"], + inviteguildinfo: ["GuildInvite", "guildInfo"], + inviteguildname: ["GuildInvite", "guildName"], + inviteguildnamewrapper: ["GuildInvite", "guildNameWrapper"], + inviteheader: ["GuildInvite", "header"], + invitemodal: ["InviteModal", "modal"], + invitemodalinviterow: ["InviteModal", "inviteRow"], + invitemodalinviterowname: ["InviteModal", "inviteRowName"], + invitemodalwrapper: ["InviteModal", "wrapper"], + invitesplash: ["GuildInvite", "inviteSplash"], + invitesplashimage: ["GuildInvite", "inviteSplashImage"], + invitesplashimageloaded: ["GuildInvite", "inviteSplashImageLoaded"], + inviteresolving: ["GuildInvite", "resolving"], + inviteresolvingbackground: ["GuildInvite", "resolvingBackground"], + invitestatus: ["GuildInvite", "status"], + invitestatuscounts: ["GuildInvite", "statusCounts"], + invitestatusoffline: ["GuildInvite", "statusOffline"], + invitestatusonline: ["GuildInvite", "statusOnline"], + inviteuserselectnone: ["GuildInvite", "userSelectNone"], + italics: ["TextStyle", "italics"], + justifycenter: ["Flex", "justifyCenter"], + justifyend: ["Flex", "justifyEnd"], + justifystart: ["Flex", "justifyStart"], + layermodal: ["LayerModal", "root"], + layermodallarge: ["LayerModal", "large"], + layermodalmedium: ["LayerModal", "medium"], + layermodalsmall: ["LayerModal", "small"], + layer: ["Layers", "layer"], + layerbase: ["Layers", "baseLayer"], + layers: ["Layers", "layers"], + layersbg: ["Layers", "bg"], + listavatar: ["UserProfile", "listAvatar"], + listdiscriminator: ["UserProfile", "listDiscriminator"], + listname: ["UserProfile", "listName"], + listrow: ["UserProfile", "listRow"], + listrowcontent: ["UserProfile", "listRowContent"], + listscroller: ["UserProfile", "listScroller"], + livetag: ["LiveTag", "live"], + livetaggrey: ["LiveTag", "grey"], + livetaglarge: ["LiveTag", "liveLarge"], + livetagsmall: ["LiveTag", "liveSmall"], + loadingicon: ["BDFDB", "loadingIcon"], + loadingiconwrapper: ["BDFDB", "loadingIconWrapper"], + loadingscreen: ["LoadingScreen", "container"], + loginscreen: ["NotFound", "loginScreen"], + marginbottom4: ["Margins", "marginBottom4"], + marginbottom8: ["Margins", "marginBottom8"], + marginbottom20: ["Margins", "marginBottom20"], + marginbottom40: ["Margins", "marginBottom40"], + marginbottom60: ["Margins", "marginBottom60"], + margincenterhorz: ["Margins", "marginCenterHorz"], + marginleft4: ["Autocomplete", "marginLeft4"], + marginleft8: ["Autocomplete", "marginLeft8"], + marginreset: ["Margins", "marginReset"], + margintop4: ["Margins", "marginTop4"], + margintop8: ["Margins", "marginTop8"], + margintop20: ["Margins", "marginTop20"], + margintop40: ["Margins", "marginTop40"], + margintop60: ["Margins", "marginTop60"], + member: ["Member", "member"], + memberactivity: ["Member", "activity"], + membericon: ["Member", "icon"], + memberoffline: ["Member", "offline"], + memberownericon: ["Member", "ownerIcon"], + memberpremiumicon: ["Member", "premiumIcon"], + members: ["MembersWrap", "members"], + membersgroup: ["MembersWrap", "membersGroup"], + memberstabbar: ["MembersThreads", "tabBar"], + membersthread: ["MembersThreads", "thread"], + memberswrap: ["MembersWrap", "membersWrap"], + memberusername: ["Member", "roleColor"], + mention: ["NotFound", "mention"], + mentioninteractive: ["NotFound", "mentionInteractive"], + mentionwrapper: ["NotFound", "mentionWrapper"], + menu: ["Menu", "menu"], + menucaret: ["Menu", "caret"], + menucheck: ["Menu", "check"], + menucheckbox: ["Menu", "checkbox"], + menucolorbrand: ["Menu", "colorBrand"], + menucolordanger: ["Menu", "colorDanger"], + menucolordefault: ["Menu", "colorDefault"], + menucolorpremium: ["Menu", "colorPremium"], + menucustomitem: ["Menu", "customItem"], + menudisabled: ["Menu", "disabled"], + menufocused: ["Menu", "focused"], + menuhideinteraction: ["Menu", "hideInteraction"], + menuhint: ["BDFDB", "menuItemHint"], + menuhintcontainer: ["Menu", "hintContainer"], + menuicon: ["Menu", "icon"], + menuiconcontainer: ["Menu", "iconContainer"], + menuimage: ["Menu", "image"], + menuimagecontainer: ["Menu", "imageContainer"], + menuitem: ["Menu", "item"], + menulabel: ["Menu", "label"], + menulabelcontainer: ["Menu", "labelContainer"], + menureactbutton: ["MenuReactButton", "button"], + menureactbuttonfocused: ["MenuReactButton", "focused"], + menureactbuttonicon: ["MenuReactButton", "icon"], + menureactbuttons: ["MenuReactButton", "wrapper"], + menuscroller: ["Menu", "scroller"], + menuseparator: ["Menu", "separator"], + menuslider: ["MenuSlider", "slider"], + menuslidercontainer: ["MenuSlider", "sliderContainer"], + menustylefixed: ["Menu", "styleFixed"], + menustyleflexible: ["Menu", "styleFlexible"], + menusubmenu: ["Menu", "submenu"], + menusubmenucontainer: ["Menu", "submenuContainer"], + menusubtext: ["Menu", "subtext"], + message: ["Message", "message"], + messageaccessory: ["MessageAccessory", "container"], + messageavatar: ["MessageBody", "avatar"], + messageavatarclickable: ["MessageBody", "clickable"], + messagebackgroundflash: ["Message", "backgroundFlash"], + messagebarbase: ["MessageElements", "barBase"], + messagebarbuttonalt: ["MessageElements", "barButtonAlt"], + messagebarbuttonbase: ["MessageElements", "barButtonBase"], + messagebarbuttonicon: ["MessageElements", "barButtonIcon"], + messagebarbuttonmain: ["MessageElements", "barButtonMain"], + messagebarhasmore: ["MessageElements", "hasMore"], + messagebarjumptopresentbar: ["MessageElements", "jumpToPresentBar"], + messagebarloadingmore: ["MessageElements", "loadingMore"], + messagebarnewmessagesbar: ["MessageElements", "newMessagesBar"], + messagebarspan: ["MessageElements", "span"], + messagebarspinner: ["MessageElements", "spinner"], + messagebarspinneritem: ["MessageElements", "spinnerItem"], + messagebeforegroup: ["Message", "beforeGroup"], + messageblockedaction: ["MessageBlocked", "blockedAction"], + messageblockedcontainer: ["MessageBlocked", "container"], + messageblockedexpanded: ["MessageBlocked", "expanded"], + messageblockedicon: ["MessageBlocked", "blockedIcon"], + messageblockedsystemmessage: ["MessageBlocked", "blockedSystemMessage"], + messageblockedtext: ["MessageBlocked", "blockedMessageText"], + messageblockquotecontainer: ["MessageMarkup", "blockquoteContainer"], + messageblockquotedivider: ["MessageMarkup", "blockquoteDivider"], + messagebottag: ["MessageBody", "botTag"], + messagebottagcompact: ["MessageBody", "botTagCompact"], + messagebottagcozy: ["MessageBody", "botTagCozy"], + messagebuttoncontainer: ["MessageBody", "buttonContainer"], + messagebuttons: ["Message", "buttons"], + messagechanneltextarea: ["Message", "channelTextArea"], + messagecompact: ["MessageBody", "compact"], + messagecontents: ["MessageBody", "contents"], + messagecozy: ["MessageBody", "cozy"], + messagecozymessage: ["Message", "cozyMessage"], + messagedisableinteraction: ["Message", "disableInteraction"], + messagedivider: ["Message", "divider"], + messagedividerhascontent: ["Message", "hasContent"], + messageedited: ["MessageBody", "edited"], + messagegroupstart: ["Message", "groupStart"], + messagegroupblocked: ["MessageElements", "messageGroupBlocked"], + messagegroupblockedbtn: ["MessageElements", "messageGroupBlockedBtn"], + messagegroupblockedrevealed: ["MessageElements", "revealed"], + messageheader: ["MessageBody", "header"], + messagelocalbot: ["Message", "localBot"], + messagelocalbotoperations: ["MessageLocalBot", "localBotMessage"], + messagemarkup: ["MessageMarkup", "markup"], + messagemarkupcompact: ["MessageBody", "compact"], + messagemarkupcontent: ["MessageBody", "messageContent"], + messagemarkupcozy: ["MessageBody", "cozy"], + messagemarkupisfailed: ["MessageBody", "isFailed"], + messagemarkupissending: ["MessageBody", "isSending"], + messagemarkuprtl: ["MessageBody", "markupRtl"], + messagementioned: ["Message", "mentioned"], + messageoperations: ["MessageOperations", "operations"], + messagereaction: ["MessageReactions", "reaction"], + messagereactionme: ["MessageReactions", "reactionMe"], + messagereactions: ["MessageReactions", "reactions"], + messagereactionsmodalemoji: ["MessageReactionsModal", "emoji"], + messagereactionsmodalname: ["MessageReactionsModal", "name"], + messagereactionsmodalnickname: ["MessageReactionsModal", "nickname"], + messagereactionsmodalreactor: ["MessageReactionsModal", "reactor"], + messagereactionsmodalusername: ["MessageReactionsModal", "username"], + messageselected: ["Message", "selected"], + messages: ["MessagesWrap", "messages"], + messagesdivider: ["MessagesWrap", "divider"], + messagespopout: ["MessagesPopout", "messagesPopout"], + messagespopoutactionbuttons: ["MessagesPopout", "actionButtons"], + messagespopoutbody: ["MessagesPopout", "body"], + messagespopoutbottom: ["MessagesPopout", "bottom"], + messagespopoutbutton: ["MessagesPopoutButtons", "button"], + messagespopoutbuttonsecondary: ["MessagesPopoutButtons", "secondary"], + messagespopoutbuttontertiary: ["MessagesPopoutButtons", "tertiary"], + messagespopoutchannelname: ["MessagesPopout", "channelName"], + messagespopoutchannelseparator: ["MessagesPopout", "channelSeparator"], + messagespopoutclosebutton: ["MessagesPopout", "closeIcon"], + messagespopoutemptyplaceholder: ["MessagesPopout", "emptyPlaceholder"], + messagespopoutfooter: ["MessagesPopout", "footer"], + messagespopoutguildname: ["MessagesPopout", "guildName"], + messagespopoutgroupcozy: ["MessagesPopout", "messageGroupCozy"], + messagespopoutgroupwrapper: ["MessagesPopout", "messageGroupWrapper"], + messagespopouthasmore: ["MessagesPopout", "hasMore"], + messagespopouthasmorebutton: ["MessagesPopout", "hasMoreButton"], + messagespopoutheader: ["MessagesPopout", "header"], + messagespopoutimage: ["MessagesPopout", "image"], + messagespopoutjumpbutton: ["MessagesPopout", "jumpButton"], + messagespopoutloading: ["MessagesPopout", "loading"], + messagespopoutloadingmore: ["MessagesPopout", "loadingMore"], + messagespopoutloadingplaceholder: ["MessagesPopout", "loadingPlaceholder"], + messagespopoutscrollingfooterwrap: ["MessagesPopout", "scrollingFooterWrap"], + messagespopoutspinner: ["MessagesPopout", "spinner"], + messagespopouttabbar: ["MessagesPopoutTabBar", "tabBar"], + messagespopouttabbarheader: ["MessagesPopoutTabBar", "header"], + messagespopouttabbartab: ["MessagesPopoutTabBar", "tab"], + messagespopouttabbartabactive: ["MessagesPopoutTabBar", "active"], + messagespopouttitle: ["MessagesPopout", "title"], + messagespopoutvisible: ["MessagesPopout", "visible"], + messagespopoutwrap: ["MessagesPopout", "messagesPopoutWrap"], + messagesscroller: ["MessagesWrap", "scroller"], + messagesscrollerinner: ["MessagesWrap", "scrollerInner"], + messagesscrollerwrapper: ["MessagesWrap", "scrollerWrap"], + messageswelcomebase: ["MessagesWelcome", "base"], + messageswelcomedefault: ["MessagesWelcome", "default"], + messageswelcomedescription: ["MessagesWelcome", "description"], + messageswelcomeeditchannelbutton: ["MessagesWrap", "editChannelButton"], + messageswelcomeemptychannelicon: ["MessagesWelcome", "emptyChannelIcon"], + messageswelcomeheader: ["MessagesWelcome", "header"], + messageswelcome: ["MessagesWelcome", "header"], + messageswrapper: ["MessagesWrap", "messagesWrapper"], + messagesystem: ["Message", "systemMessage"], + messagesystemaccessories: ["MessageBody", "systemMessageAccessories"], + messagesystemcontainer: ["MessageSystem", "container"], + messagesystemcontent: ["MessageSystem", "content"], + messagesystemicon: ["MessageSystem", "icon"], + messagesystemiconcontainer: ["MessageSystem", "iconContainer"], + messagesystemiconsize: ["MessageSystem", "iconSize"], + messagetimedivider: ["MessageDivider", "divider"], + messagetimedividercontent: ["MessageDivider", "content"], + messagetimedividerhascontent: ["MessageDivider", "hasContent"], + messagetimedividerisunread: ["MessageDivider", "isUnread"], + messagetimedividerunreadpill: ["MessageDivider", "unreadPill"], + messagetimedividerunreadpillcap: ["MessageDivider", "unreadPillCap"], + messagetimedividerunreadpillcapstroke: ["MessageDivider", "unreadPillCapStroke"], + messagetimestampasiancompact: ["MessageBody", "asianCompactTimeStamp"], + messagetimestamp: ["MessageBody", "timestamp"], + messagetimestampalt: ["MessageBody", "alt"], + messagetimestamplatin12compact: ["MessageBody", "latin12CompactTimeStamp"], + messagetimestamplatin24compact: ["MessageBody", "latin24CompactTimeStamp"], + messagetimestampseparator: ["MessageBody", "separator"], + messagetimestampsystem: ["MessageSystem", "timestamp"], + messagetimestamptooltip: ["MessageBody", "timestampTooltip"], + messagetimestampvisibleonhover: ["MessageBody", "timestampVisibleOnHover"], + messagetoolbar: ["MessageToolbar", "container"], + messagetoolbarbutton: ["MessageToolbarItems", "button"], + messagetoolbarbuttondisabled: ["MessageToolbarItems", "disabled"], + messagetoolbarbuttonselected: ["MessageToolbarItems", "selected"], + messagetoolbaricon: ["MessageToolbar", "icon"], + messagetoolbarinner: ["MessageToolbarItems", "wrapper"], + messagetoolbarisheader: ["MessageToolbar", "isHeader"], + messagetoolbarseparator: ["MessageToolbarItems", "separator"], + messageuploadcancel: ["MessageFile", "cancelButton"], + messageusername: ["MessageBody", "username"], + messagewrapper: ["MessageBody", "wrapper"], + messagezalgo: ["MessageBody", "zalgo"], + modal: ["ModalWrap", "modal"], + modalclose: [DiscordClassModules.LayerModal.close ? "LayerModal" : "Modal", "close"], + modalchangelogmodal: ["BDFDB", "changeLogModal"], + modalconfirmmodal: ["BDFDB", "confirmModal"], + modalcontent: [DiscordClassModules.LayerModal.content ? "LayerModal" : "Modal", "content"], + modalfooter: ["Modal", "footer"], + modalguildname: ["ModalItems", "guildName"], + modalheader: ["Modal", "header"], + modalheaderhassibling: ["BDFDB", "modalHeaderHasSibling"], + modalinner: ["ModalWrap", "inner"], + modalmini: ["ModalMiniContent", "modal"], + modalminicontent: ["ModalMiniContent", "content"], + modalminitext: ["HeaderBarTopic", "content"], + modalnoscroller: ["BDFDB", "modalNoScroller"], + modalseparator: ["LayerModal", "separator"], + modalsizelarge: ["Modal", "sizeLarge"], + modalsizemedium: ["Modal", "sizeMedium"], + modalsizesmall: ["Modal", "sizeSmall"], + modalsub: ["Modal", "modal"], + modalsubinner: ["BDFDB", "modalSubInner"], + modaltabcontent: ["BDFDB", "modalTabContent"], + modaltabcontentopen: ["BDFDB", "modalTabContentOpen"], + modalwrapper: ["BDFDB", "modalWrapper"], + modedefault: ["FormText", "modeDefault"], + modedisabled: ["FormText", "modeDisabled"], + modeselectable: ["FormText", "modeSelectable"], + namecontainer: ["NameContainer", "container"], + namecontaineravatar: ["NameContainer", "avatar"], + namecontainerchildren: ["NameContainer", "children"], + namecontainerclickable: ["NameContainer", "clickable"], + namecontainercontent: ["NameContainer", "content"], + namecontainerlayout: ["NameContainer", "layout"], + namecontainername: ["NameContainer", "name"], + namecontainernamecontainer: ["NotFound", "nameContainerNameContainer"], + namecontainernamewrapper: ["NameContainer", "nameAndDecorators"], + namecontainerselected: ["NameContainer", "selected"], + namecontainersubtext: ["NameContainer", "subText"], + nametag: ["NameTag", "nameTag"], + nitrostore: ["NitroStore", "applicationStore"], + nochannel: ["ChatWindow", "noChannel"], + notice: ["Notice", "notice"], + noticebrand: ["Notice", "noticeBrand"], + noticebutton: ["Notice", "button"], + noticedanger: ["Notice", "noticeDanger"], + noticedefault: ["Notice", "noticeDefault"], + noticedownload: ["Notice", "noticeDownload"], + noticedismiss: ["Notice", "dismiss"], + noticefacebook: ["Notice", "noticeFacebook"], + noticeicon: ["Notice", "icon"], + noticeiconandroid: ["Notice", "iconAndroid"], + noticeiconapple: ["Notice", "iconApple"], + noticeiconwindows: ["Notice", "iconWindows"], + noticeinfo: ["Notice", "noticeInfo"], + noticenotification: ["Notice", "noticeNotification"], + noticeplatformicon: ["Notice", "platformIcon"], + noticepremium: ["Notice", "noticePremium"], + noticepremiumaction: ["Notice", "premiumAction"], + noticepremiumlogo: ["Notice", "premiumLogo"], + noticepremiumtext: ["Notice", "premiumText"], + noticepremiumtier1: ["Notice", "noticePremiumTier1"], + noticepremiumtier2: ["Notice", "noticePremiumTier2"], + noticerichpresence: ["Notice", "noticeRichPresence"], + noticespotify: ["Notice", "noticeSpotify"], + noticestreamer: ["Notice", "noticeStreamerMode"], + noticesuccess: ["Notice", "noticeSuccess"], + noticesurvey: ["Notice", "noticeSurvey"], + noticewrapper: ["BDFDB", "noticeWrapper"], + note: ["SettingsItems", "note"], + nowrap: ["Flex", "noWrap"], + overflowellipsis: ["BDFDB", "overflowEllipsis"], + paginationlist: ["BDFDB", "paginationList"], + paginationlistalphabet: ["BDFDB", "paginationListAlphabet"], + paginationlistalphabetchar: ["BDFDB", "paginationListAlphabetChar"], + paginationlistalphabetchardisabled: ["BDFDB", "paginationListAlphabetCharDisabled"], + paginationlistcontent: ["BDFDB", "paginationListContent"], + paginationlistpagination: ["BDFDB", "paginationListPagination"], + peoples: ["Peoples", "container"], + peoplesbadge: ["Peoples", "badge"], + peoplesnowplayingcolumn: ["Peoples", "nowPlayingColumn"], + peoplespeoplecolumn: ["Peoples", "peopleColumn"], + peoplestabbar: ["Peoples", "tabBar"], + pictureinpicture: ["PictureInPicture", "pictureInPicture"], + pictureinpicturewindow: ["PictureInPicture", "pictureInPictureWindow"], + popout: ["Popout", "popout"], + popoutarrowalignmentmiddle: ["Popout", "arrowAlignmentMiddle"], + popoutarrowalignmenttop: ["Popout", "arrowAlignmentTop"], + popoutbottom: ["Popout", "popoutBottom"], + popoutbottomleft: ["Popout", "popoutBottomLeft"], + popoutbottomright: ["Popout", "popoutBottomRight"], + popoutinvert: ["Popout", "popoutInvert"], + popoutleft: ["Popout", "popoutLeft"], + popoutnoarrow: ["Popout", "noArrow"], + popoutnoshadow: ["Popout", "noShadow"], + popoutright: ["Popout", "popoutRight"], + popouts: ["Popout", "popouts"], + popoutthemedpopout: ["BDFDB", "themedPopout"], + popouttop: ["Popout", "popoutTop"], + popouttopleft: ["Popout", "popoutTopLeft"], + popouttopright: ["Popout", "popoutTopRight"], + popoutwrapper: ["BDFDB", "popoutWrapper"], + quickmessage: ["QuickMessage", "input"], + quickselect: ["QuickSelect", "quickSelect"], + quickselectarrow: ["QuickSelect", "quickSelectArrow"], + quickselectclick: ["QuickSelect", "quickSelectClick"], + quickselectlabel: ["QuickSelect", "quickSelectLabel"], + quickselectvalue: ["QuickSelect", "quickSelectValue"], + quickselectwrapper: ["BDFDB", "quickSelectWrapper"], + quickswitcher: ["QuickSwitchWrap", "quickswitcher"], + quickswitchresult: ["QuickSwitch", "result"], + quickswitchresultfocused: ["QuickSwitch", "resultFocused"], + quickswitchresultguildicon: ["QuickSwitch", "guildIcon"], + quickswitchresulticon: ["QuickSwitch", "icon"], + quickswitchresulticoncontainer: ["QuickSwitch", "iconContainer"], + quickswitchresultmatch: ["QuickSwitch", "match"], + quickswitchresultmisccontainer: ["QuickSwitchWrap", "miscContainer"], + quickswitchresultname: ["QuickSwitch", "name"], + quickswitchresultnote: ["QuickSwitch", "note"], + quickswitchresultusername: ["QuickSwitch", "username"], + recentmentionschannelname: ["RecentMentionsHeader", "channelName"], + recentmentionsclosebutton: ["RecentMentions", "closeButton"], + recentmentionsdmicon: ["RecentMentionsHeader", "dmIcon"], + recentmentionsguildicon: ["RecentMentionsHeader", "guildIcon"], + recentmentionsguildname: ["RecentMentionsHeader", "guildName"], + recentmentionsjumpbutton: ["RecentMentions", "jumpButton"], + recentmentionspopout: ["RecentMentions", "recentMentionsPopout"], + scrollbar: ["Scrollbar", "scrollbar"], + scrollbardefault: ["Scrollbar", "scrollbarDefault"], + scrollbarghost: ["Scrollbar", "scrollbarGhost"], + scrollbarghosthairline: ["Scrollbar", "scrollbarGhostHairline"], + scroller: ["ScrollerOld", "scroller"], + scrollerbase: ["Scroller", "scrollerBase"], + scrollerbaseauto: ["Scroller", "auto"], + scrollerbasefade: ["Scroller", "fade"], + scrollerbaselistcontent: ["Scroller", "listContent"], + scrollerbasenone: ["Scroller", "none"], + scrollerbasescrolling: ["Scroller", "scrolling"], + scrollerbasethin: ["Scroller", "thin"], + scrollerfade: ["ScrollerOld", "scrollerFade"], + scrollersystempad: ["ScrollerOld", "systemPad"], + scrollerthemed: ["ScrollerOld", "scrollerThemed"], + scrollerthemedwithtrack: ["ScrollerOld", "themedWithTrack"], + scrollerthemeghost: ["ScrollerOld", "themeGhost"], + scrollerthemeghosthairline: ["ScrollerOld", "themeGhostHairline"], + scrollerthemeghosthairlinechannels: ["ScrollerOld", "themeGhostHairlineChannels"], + scrollerwrap: ["ScrollerOld", "scrollerWrap"], + searchbar: ["SearchBar", "container"], + searchbarclear: ["SearchBar", "clear"], + searchbarclose: ["SearchBar", "close"], + searchbaricon: ["SearchBar", "icon"], + searchbariconlayout: ["SearchBar", "iconLayout"], + searchbariconwrap: ["SearchBar", "iconContainer"], + searchbarinner: ["SearchBar", "inner"], + searchbarinput: ["SearchBar", "input"], + searchbarlarge: ["SearchBar", "large"], + searchbarmedium: ["SearchBar", "medium"], + searchbarsmall: ["SearchBar", "small"], + searchbartag: ["SearchBar", "tag"], + searchbarvisible: ["SearchBar", "visible"], + searchpopout: ["SearchPopoutWrap", "container"], + searchpopoutanswer: ["SearchPopout", "answer"], + searchpopoutdatepicker: ["SearchPopout", "datePicker"], + searchpopoutdatepickerhint: ["SearchPopout", "datePickerHint"], + searchpopoutdmaddpopout: ["DmAddPopout", "popout"], + searchpopoutddmadddiscordtag: ["DmAddPopoutItems", "discordTag"], + searchpopoutddmaddfriend: ["DmAddPopoutItems", "friend"], + searchpopoutddmaddfriendwrapper: ["DmAddPopoutItems", "friendWrapper"], + searchpopoutddmaddnickname: ["DmAddPopoutItems", "nickname"], + searchpopoutdisplayavatar: ["SearchPopout", "displayAvatar"], + searchpopoutdisplayusername: ["SearchPopout", "displayUsername"], + searchpopoutdisplayednick: ["SearchPopout", "displayedNick"], + searchpopoutfilter: ["SearchPopout", "filter"], + searchpopoutheader: ["SearchPopout", "header"], + searchpopouthint: ["SearchPopout", "hint"], + searchpopouthintvalue: ["SearchPopout", "hintValue"], + searchpopoutlinksource: ["SearchPopout", "linkSource"], + searchpopoutnontext: ["SearchPopout", "nonText"], + searchpopoutoption: ["SearchPopout", "option"], + searchpopoutplusicon: ["SearchPopout", "plusIcon"], + searchpopoutresultchannel: ["SearchPopout", "resultChannel"], + searchpopoutresultsgroup: ["SearchPopout", "resultsGroup"], + searchpopoutsearchclearhistory: ["SearchPopout", "searchClearHistory"], + searchpopoutsearchlearnmore: ["SearchPopout", "searchLearnMore"], + searchpopoutsearchoption: ["SearchPopout", "searchOption"], + searchpopoutsearchresultchannelcategory: ["SearchPopout", "searchResultChannelCategory"], + searchpopoutsearchresultchannelicon: ["SearchPopout", "searchResultChannelIcon"], + searchpopoutsearchresultchanneliconbackground: ["SearchPopout", "searchResultChannelIconBackground"], + searchpopoutselected: ["SearchPopout", "selected"], + searchpopoutuser: ["SearchPopout", "user"], + searchresultsafter: ["SearchResultsMessage", "after"], + searchresultsalt: ["SearchResults", "alt"], + searchresultsbefore: ["SearchResultsMessage", "before"], + searchresultschannelname: ["SearchResultsElements", "channelName"], + searchresultschannelSeparator: ["SearchResultsElements", "channelSeparator"], + searchresultsexpanded: ["SearchResultsMessage", "expanded"], + searchresultsgroupcozy: ["SearchResultsMessage", "messageGroupCozy"], + searchresultshit: ["SearchResultsMessage", "hit"], + searchresultspagination: ["SearchResultsPagination", "pagination"], + searchresultspaginationbutton: ["SearchResultsPagination", "paginationButton"], + searchresultspaginationdisabled: ["SearchResultsPagination", "disabled"], + searchresultspaginationicon: ["SearchResultsPagination", "icon"], + searchresultssibling: ["SearchResultsMessage", "sibling"], + searchresultswrap: ["SearchResults", "searchResultsWrap"], + select: ["Select", "select"], + selectwrapper: ["BDFDB", "selectWrapper"], + settingsclosebutton: ["SettingsCloseButton", "closeButton"], + settingsclosebuttoncontainer: ["SettingsCloseButton", "container"], + settingsguild: ["BDFDB", "settingsGuild"], + settingsguilddisabled: ["BDFDB", "settingsGuildDisabled"], + settingsheader: ["Item", "header"], + settingsitem: ["Item", "item"], + settingsitemdragged: ["ItemRole", "dragged"], + settingsitemdlock: ["ItemRole", "lock"], + settingsitemrole: ["ItemRole", "role"], + settingsitemroleinner: ["ItemRole", "roleInner"], + settingsitemselected: ["Item", "selected"], + settingsitemthemed: ["Item", "themed"], + settingsPanel: ["BDFDB", "settingsPanel"], + settingspanelheader: ["BDFDB", "settingsPanelHeader"], + settingspanelheaderbutton: ["BDFDB", "settingsPanelHeaderButton"], + settingspanelheadercontrols: ["BDFDB", "settingsPanelHeaderControls"], + settingspanelinner: ["BDFDB", "settingsPanelInner"], + settingspanellist: ["BDFDB", "settingsPanelList"], + settingspaneltitle: ["BDFDB", "settingsPanelTitle"], + settingsseparator: ["Item", "separator"], + settingstableheader: ["SettingsTable", "header"], + settingstableheadername: ["SettingsTable", "headerName"], + settingstableheaderoption: ["SettingsTable", "headerOption"], + settingstableheaders: ["BDFDB", "settingsTableHeaders"], + settingstableheadervertical: ["BDFDB", "settingsTableHeaderVertical"], + settingstablecard: ["BDFDB", "settingsTableCard"], + settingstablecardconfigs: ["BDFDB", "settingsTableCardConfigs"], + settingstablecardlabel: ["BDFDB", "settingsTableCardLabel"], + settingstablelist: ["BDFDB", "settingsTableList"], + settingswindowcontentcolumn: ["SettingsWindow", "contentColumn"], + settingswindowcontentregion: ["SettingsWindow", "contentRegion"], + settingswindowcontentregionscroller: ["SettingsWindow", "contentRegionScroller"], + settingswindowsidebarregion: ["SettingsWindow", "sidebarRegion"], + settingswindowsidebarregionscroller: ["SettingsWindow", "sidebarRegionScroller"], + settingswindowstandardsidebarview: ["SettingsWindow", "standardSidebarView"], + settingswindowsubsidebarcontent: ["SettingsWindowScroller", "content"], + settingswindowsubsidebarscroller: ["SettingsWindowScroller", "scroller"], + settingswindowtoolscontainer: ["SettingsWindow", "toolsContainer"], + size10: ["TextSize", "size10"], + size12: ["TextSize", "size12"], + size14: ["TextSize", "size14"], + size16: ["TextSize", "size16"], + size20: ["TextSize", "size20"], + size24: ["TextSize", "size24"], + size32: ["TextSize", "size32"], + slider: ["Slider", "slider"], + sliderbar: ["Slider", "bar"], + sliderbarfill: ["Slider", "barFill"], + sliderbubble: ["BDFDB", "sliderBubble"], + sliderdisabled: ["Slider", "disabled"], + slidergrabber: ["Slider", "grabber"], + sliderinput: ["Slider", "input"], + slidermark: ["Slider", "mark"], + slidermarkdash: ["Slider", "markDash"], + slidermarkdashsimple: ["Slider", "markDashSimple"], + slidermarkvalue: ["Slider", "markValue"], + slidermini: ["Slider", "mini"], + slidertrack: ["Slider", "track"], + spoilercontainer: ["Spoiler", "spoilerContainer"], + spoilerembed: ["SpoilerEmbed", "spoiler"], + spoilerembedhidden: ["SpoilerEmbed", "hiddenSpoilers"], + spoilerembedinline: ["SpoilerEmbed", "inline"], + spoilerhidden: ["Spoiler", "hidden"], + spoilertext: ["Spoiler", "spoilerText"], + spoilerwarning: ["Spoiler", "spoilerWarning"], + splashbackground: ["NotFound", "splashBackground"], + strikethrough: ["TextStyle", "strikethrough"], + status: ["Avatar", "status"], + stopanimations: ["NotFound", "stopAnimations"], + subtext: ["NotFound", "subtext"], + svgicon: ["BDFDB", "svgIcon"], + svgiconwrapper: ["BDFDB", "svgIconWrapper"], + switch: ["Switch", "switch"], + switchdisabled: ["Switch", "switchDisabled"], + switchenabled: ["Switch", "switchEnabled"], + switchinner: ["Switch", "checkbox"], + switchinnerdisabled: ["Switch", "checkboxDisabled"], + switchinnerenabled: ["Switch", "checkboxEnabled"], + switchsize: ["Switch", "size"], + switchsizedefault: ["Switch", "sizeDefault"], + switchsizemini: ["Switch", "sizeMini"], + switchthemeclear: ["Switch", "themeClear"], + switchthemedefault: ["Switch", "themeDefault"], + switchvalue: ["Switch", "value"], + switchvaluechecked: ["Switch", "valueChecked"], + switchvalueunchecked: ["Switch", "valueUnchecked"], + tabbar: ["UserProfile", "tabBar"], + tabbarcontainer: ["UserProfile", "tabBarContainer"], + tabbarcontainerbottom: ["BDFDB", "tabBarContainerBottom"], + tabbaritem: ["UserProfile", "tabBarItem"], + tabbartop: ["Item", "top"], + table: ["BDFDB", "table"], + tablebodycell: ["BDFDB", "tableBodyCell"], + tableheader: ["BDFDB", "tableHeader"], + tableheadercell: ["BDFDB", "tableHeaderCellSorted"], + tableheadercellsorted: ["BDFDB", "tableHeaderCell"], + tableheadersorticon: ["BDFDB", "tableHeaderSortIcon"], + tablerow: ["BDFDB", "tableRow"], + tablestickyheader: ["BDFDB", "tableStickyHeader"], + textarea: ["ChannelTextArea", "textArea"], + textareaattachbutton: ["ChannelTextAreaAttachButton", "attachButton"], + textareaattachbuttoninner: ["ChannelTextAreaAttachButton", "attachButtonInner"], + textareaattachbuttonplus: ["ChannelTextAreaAttachButton", "attachButtonPlus"], + textareaattachwrapper: ["ChannelTextAreaAttachButton", "attachWrapper"], + textareabutton: ["ChannelTextAreaButton", "button"], + textareabuttonactive: ["ChannelTextAreaButton", "active"], + textareabuttonpulse: ["ChannelTextAreaButton", "pulseButton"], + textareabuttonwrapper: ["ChannelTextAreaButton", "buttonWrapper"], + textareacharcounter: ["ChannelTextAreaCharCounter", "characterCount"], + textareacharcountererror: ["ChannelTextAreaCharCounter", "error"], + textareadisabled: ["ChannelTextArea", "textAreaDisabled"], + textareafontsize12padding: ["ChannelTextArea", "fontSize12Padding"], + textareafontsize14padding: ["ChannelTextArea", "fontSize14Padding"], + textareafontsize15padding: ["ChannelTextArea", "fontSize15Padding"], + textareafontsize16padding: ["ChannelTextArea", "fontSize16Padding"], + textareafontsize18padding: ["ChannelTextArea", "fontSize18Padding"], + textareafontsize20padding: ["ChannelTextArea", "fontSize20Padding"], + textareafontsize24padding: ["ChannelTextArea", "fontSize24Padding"], + textareaicon: ["ChannelTextAreaButton", "icon"], + textareaiconpulse: ["ChannelTextAreaButton", "pulseIcon"], + textareainner: ["ChannelTextArea", "inner"], + textareainnerdisabled: ["ChannelTextArea", "innerDisabled"], + textareapickerbutton: ["ChannelTextArea", "button"], + textareapickerbuttoncontainer: ["ChannelTextArea", "buttonContainer"], + textareapickerbuttons: ["ChannelTextArea", "buttons"], + textareascrollablecontainer: ["ChannelTextArea", "scrollableContainer"], + textareaslate: ["ChannelTextArea", "textAreaSlate"], + textareaslatemarkup: ["ChannelTextAreaSlate", "slateTextArea"], + textareaslatecontainer: ["ChannelTextAreaSlate", "slateContainer"], + textareaslateplaceholder: ["ChannelTextAreaSlate", "placeholder"], + textareauploadinput: ["ChannelTextAreaAttachButton", "uploadInput"], + textareawebkit: ["ChannelTextArea", "webkit"], + textareawrapall: ["ChannelTextArea", "channelTextArea"], + textareawrapchat: ["ChatWindow", "channelTextArea"], + textareawrapdisabled: ["ChannelTextArea", "channelTextAreaDisabled"], + textlink: ["Notice", "textLink"], + textrow: ["PopoutActivity", "textRow"], + textscroller: ["BDFDB", "textScroller"], + themedark: ["NotFound", "themeDark"], + themelight: ["NotFound", "themeLight"], + themeundefined: ["NotFound", "themeUndefined"], + tip: ["Tip", "tip"], + tipblock: ["Tip", "block"], + tippro: ["Tip", "pro"], + tipinline: ["Tip", "inline"], + title: ["SettingsItems", "title"], + titlebar: ["TitleBar", "titleBar"], + titlebarmac: ["TitleBar", "typeMacOS"], + titlebarmacbutton: ["TitleBar", "macButton"], + titlebarmacbuttonclose: ["TitleBar", "macButtonClose"], + titlebarmacbuttonmin: ["TitleBar", "macButtonMinimize"], + titlebarmacbuttonmax: ["TitleBar", "macButtonMaximize"], + titlebarmacbuttons: ["TitleBar", "macButtons"], + titlebarmacwithframe: ["TitleBar", "typeMacOSWithFrame"], + titlebarwinbutton: ["TitleBar", "winButton"], + titlebarwinbuttonclose: ["TitleBar", "winButtonClose"], + titlebarwinbuttonminmax: ["TitleBar", "winButtonMinMax"], + titlebarwindows: ["TitleBar", "typeWindows"], + titlebarwithframe: ["TitleBar", "withFrame"], + titlebarwordmark: ["TitleBar", "wordmark"], + titlebarwordmarkmac: ["TitleBar", "wordmarkMacOS"], + titlebarwordmarkwindows: ["TitleBar", "wordmarkWindows"], + titledefault: ["SettingsItems", "titleDefault"], + titlemini: ["SettingsItems", "titleMini"], + titlesize10: ["UserPopout", "size10"], + titlesize12: ["UserPopout", "size12"], + titlesize14: ["UserPopout", "size14"], + titlesize16: ["UserPopout", "size16"], + titlesize18: ["Title", "size18"], + tooltip: ["Tooltip", "tooltip"], + tooltipactivityicon: ["TooltipGuild", "activityIcon"], + tooltipblack: ["Tooltip", "tooltipBlack"], + tooltipbottom: ["Tooltip", "tooltipBottom"], + tooltipbrand: ["Tooltip", "tooltipBrand"], + tooltipcontent: ["Tooltip", "tooltipContent"], + tooltipcontentallowoverflow: ["Tooltip", "tooltipContentAllowOverflow"], + tooltipcustom: ["BDFDB", "tooltipCustom"], + tooltipgreen: ["Tooltip", "tooltipGreen"], + tooltipgrey: ["Tooltip", "tooltipGrey"], + tooltipguildnametext: ["TooltipGuild", "guildNameText"], + tooltipguildnametextlimitedsize: ["TooltipGuild", "guildNameTextLimitedSize"], + tooltipleft: ["Tooltip", "tooltipLeft"], + tooltiplistitem: ["GuildsItems", "listItemTooltip"], + tooltippointer: ["Tooltip", "tooltipPointer"], + tooltipred: ["Tooltip", "tooltipRed"], + tooltipright: ["Tooltip", "tooltipRight"], + tooltiprow: ["TooltipGuild", "row"], + tooltiprowguildname: ["TooltipGuild", "rowGuildName"], + tooltiprowicon: ["TooltipGuild", "rowIcon"], + tooltiptop: ["Tooltip", "tooltipTop"], + tooltipyellow: ["Tooltip", "tooltipYellow"], + typing: ["Typing", "typing"], + typingcooldownwrapper: ["Typing", "cooldownWrapper"], + typingtext: ["Typing", "text"], + underline: ["TextStyle", "underline"], + unreadbar: ["UnreadBar", "bar"], + unreadbaractive: ["UnreadBar", "active"], + unreadbarcontainer: ["UnreadBar", "container"], + unreadbaricon: ["UnreadBar", "icon"], + unreadbarmention: ["UnreadBar", "mention"], + unreadbartext: ["UnreadBar", "text"], + unreadbarunread: ["UnreadBar", "unread"], + uploadmodal: ["UploadModal", "uploadModal"], + userinfo: ["UserInfo", "userInfo"], + userinfoavatar: ["UserInfo", "avatar"], + userinfodate: ["BDFDB", "userInfoDate"], + userinfodiscordtag: ["UserInfo", "discordTag"], + userinfodiscriminator: ["UserInfo", "discriminator"], + userinfohovered: ["UserInfo", "hovered"], + userinfosubtext: ["UserInfo", "subtext"], + userinfotext: ["UserInfo", "text"], + userinfousername: ["UserInfo", "username"], + userpopout: ["UserPopout", "userPopout"], + userpopoutavatarhint: ["UserPopout", "avatarHint"], + userpopoutavatarhintinner: ["UserPopout", "avatarHintInner"], + userpopoutavatarwrapper: ["UserPopout", "avatarWrapper"], + userpopoutavatarwrappernormal: ["UserPopout", "avatarWrapperNormal"], + userpopoutbody: ["UserPopout", "body"], + userpopoutbodytitle: ["UserPopout", "bodyTitle"], + userpopoutcustomstatus: ["UserPopout", "customStatus"], + userpopoutcustomstatusemoji: ["UserPopout", "customStatusEmoji"], + userpopoutcustomstatussoloemoji: ["UserPopout", "customStatusSoloEmoji"], + userpopoutcustomstatustext: ["UserPopout", "customStatusText"], + userpopoutendbodysection: ["UserPopout", "endBodySection"], + userpopoutfooter: ["UserPopout", "footer"], + userpopoutheader: ["UserPopout", "header"], + userpopoutheaderbottagwithnickname: ["UserPopout", "headerBotTagWithNickname"], + userpopoutheadernamewrapper: ["UserPopout", "headerNameWrapper"], + userpopoutheadernickname: ["UserPopout", "headerName"], + userpopoutheadernormal: ["UserPopout", "headerNormal"], + userpopoutheaderplaying: ["UserPopout", "headerPlaying"], + userpopoutheaderspotify: ["UserPopout", "headerSpotify"], + userpopoutheaderstreaming: ["UserPopout", "headerStreaming"], + userpopoutheadertag: ["UserPopout", "headerTag"], + userpopoutheadertagnonickname: ["UserPopout", "headerTagNoNickname"], + userpopoutheadertagusernamenonickname: ["UserPopout", "headerTagUsernameNoNickname"], + userpopoutheadertagwithnickname: ["UserPopout", "headerTagWithNickname"], + userpopoutheadertext: ["UserPopout", "headerText"], + userpopoutheadertop: ["UserPopout", "headerTop"], + userpopoutprotip: ["UserPopout", "protip"], + userpopoutrole: ["Role", "role"], + userpopoutrolecircle: ["Role", "roleCircle"], + userpopoutrolelist: ["UserPopout", "rolesList"], + userpopoutrolename: ["Role", "roleName"], + userpopoutroles: ["Role", "root"], + userprofile: ["UserProfile", "root"], + userprofilebody: ["UserProfile", "body"], + userprofilebottag: ["UserProfile", "botTag"], + userprofilecustomstatus: ["UserProfile", "customStatusText"], + userprofilecustomstatusemoji: ["UserProfile", "customStatusEmoji"], + userprofileheader: ["UserProfile", "header"], + userprofileheaderfill: ["UserProfile", "headerFill"], + userprofileheaderinfo: ["UserProfile", "headerInfo"], + userprofilelistavatar: ["UserProfile", "listAvatar"], + userprofilelistguildavatarwithouticon: ["UserProfile", "guildAvatarWithoutIcon"], + userprofilenametag: ["UserProfile", "nameTag"], + userprofiletopsectionnormal: ["UserProfile", "topSectionNormal"], + userprofiletopsectionplaying: ["UserProfile", "topSectionPlaying"], + userprofiletopsectionspotify: ["UserProfile", "topSectionSpotify"], + userprofiletopsectionstreaming: ["UserProfile", "topSectionStreaming"], + userprofiletopsectionxbox: ["UserProfile", "topSectionXbox"], + userprofileusername: ["UserProfile", "username"], + username: ["NameTag", "username"], + usernotepopout: ["UserPopout", "note"], + usernoteprofile: ["UserProfile", "note"], + usernotetextarea: ["NoteTextarea", "textarea"], + vertical: ["Flex", "vertical"], + voiceavatar: ["VoiceChannel", "avatar"], + voiceavatarcontainer: ["VoiceChannel", "avatarContainer"], + voiceavatarlarge: ["VoiceChannel", "avatarLarge"], + voiceavatarsmall: ["VoiceChannel", "avatarSmall"], + voiceavatarspeaking: ["VoiceChannel", "avatarSpeaking"], + voiceclickable: ["VoiceChannel", "clickable"], + voicecontent: ["VoiceChannel", "content"], + voicedetails: ["VoiceDetails", "container"], + voicedetailsactionbuttons: ["VoiceDetails", "actionButtons"], + voicedetailsbutton: ["VoiceDetails", "button"], + voicedetailsbuttonactive: ["VoiceDetails", "buttonActive"], + voicedetailsbuttoncolor: ["VoiceDetails", "buttonColor"], + voicedetailsbuttonicon: ["VoiceDetails", "buttonIcon"], + voicedetailschannel: ["VoiceDetails", "channel"], + voicedetailscustomstatuscontainer: ["VoiceDetails", "customStatusContainer"], + voicedetailshotspot: ["VoiceDetails", "hotspot"], + voicedetailsinner: ["VoiceDetails", "inner"], + voicedetailslabelwrapper: ["VoiceDetailsPing", "labelWrapper"], + voicedetailsping: ["VoiceDetailsPing", "ping"], + voicedetailspingforeground: ["VoiceDetailsPing", "pingForeground"], + voicedetailsqualityaverage: ["VoiceDetailsPing", "rtcConnectionQualityAverage"], + voicedetailsqualitybad: ["VoiceDetailsPing", "rtcConnectionQualityBad"], + voicedetailsqualityfine: ["VoiceDetailsPing", "rtcConnectionQualityFine"], + voicedetailsstatus: ["VoiceDetailsPing", "rtcConnectionStatus"], + voicedetailsstatusconnected: ["VoiceDetailsPing", "rtcConnectionStatusConnected"], + voicedetailsstatusconnecting: ["VoiceDetailsPing", "rtcConnectionStatusConnecting"], + voicedetailsstatuserror: ["VoiceDetailsPing", "rtcConnectionStatusError"], + voicedetailsstatuswithpopout: ["VoiceDetails", "statusWithPopout"], + voicedraggable: ["NotFound", "voiceDraggable"], + voiceflipped: ["VoiceChannel", "flipped"], + voiceicon: ["VoiceChannel", "icon"], + voiceicons: ["VoiceChannel", "icons"], + voiceiconspacing: ["VoiceChannel", "iconSpacing"], + voicelist: ["VoiceChannel", "list"], + voicelist2: ["VoiceChannelList", "list"], + voicelistcollapsed: ["VoiceChannel", "listCollapse"], + voicelistcollapsed2: ["VoiceChannelList", "collapsed"], + voicelistdefault: ["VoiceChannel", "listDefault"], + voiceliveicon: ["VoiceChannel", "liveIcon"], + voicename: ["VoiceChannel", "username"], + voicenamefont: ["VoiceChannel", "usernameFont"], + voicenamespeaking: ["VoiceChannel", "usernameSpeaking"], + voiceselected: ["VoiceChannel", "selected"], + voiceuser: ["VoiceChannel", "voiceUser"], + voiceuserlarge: ["VoiceChannel", "userLarge"], + voiceusersmall: ["VoiceChannel", "userSmall"], + webhookcard: ["WebhookCard", "card"], + webhookcardbody: ["WebhookCard", "body"], + webhookcardcopybutton: ["WebhookCard", "copyButton"], + webhookcardheader: ["WebhookCard", "header"], + wrap: ["Flex", "wrap"], + wrapreverse: ["Flex", "wrapReverse"] + }; + BDFDB.DiscordClasses = Object.assign({}, DiscordClasses); + + InternalBDFDB.getDiscordClass = (item, selector) => { + let className = DiscordClassModules.BDFDB.BDFDBundefined; + if (DiscordClasses[item] === undefined) { + BDFDB.LogUtils.warn(item + " not found in DiscordClasses"); + return className; + } + else if (!BDFDB.ArrayUtils.is(DiscordClasses[item]) || DiscordClasses[item].length != 2) { + BDFDB.LogUtils.warn(item + " is not an Array of Length 2 in DiscordClasses"); + return className; + } + else if (DiscordClassModules[DiscordClasses[item][0]] === undefined) { + BDFDB.LogUtils.warn(DiscordClasses[item][0] + " not found in DiscordClassModules"); + return className; + } + else if (DiscordClassModules[DiscordClasses[item][0]][DiscordClasses[item][1]] === undefined) { + BDFDB.LogUtils.warn(DiscordClasses[item][1] + " not found in " + DiscordClasses[item][0] + " in DiscordClassModules"); + return className; + } + else { + className = DiscordClassModules[DiscordClasses[item][0]][DiscordClasses[item][1]]; + if (selector) { + className = className.split(" ").filter(n => n.indexOf("da-") != 0).join(selector ? "." : " "); + className = className || DiscordClassModules.BDFDB.BDFDBundefined; + } + return className; + } + }; + BDFDB.disCN = new Proxy(DiscordClasses, { + get: function (list, item) { + return InternalBDFDB.getDiscordClass(item, false).replace("#", ""); + } + }); + BDFDB.disCNS = new Proxy(DiscordClasses, { + get: function (list, item) { + return InternalBDFDB.getDiscordClass(item, false).replace("#", "") + " "; + } + }); + BDFDB.disCNC = new Proxy(DiscordClasses, { + get: function (list, item) { + return InternalBDFDB.getDiscordClass(item, false).replace("#", "") + ","; + } + }); + BDFDB.dotCN = new Proxy(DiscordClasses, { + get: function (list, item) { + let className = InternalBDFDB.getDiscordClass(item, true); + return (className.indexOf("#") == 0 ? "" : ".") + className; + } + }); + BDFDB.dotCNS = new Proxy(DiscordClasses, { + get: function (list, item) { + let className = InternalBDFDB.getDiscordClass(item, true); + return (className.indexOf("#") == 0 ? "" : ".") + className + " "; + } + }); + BDFDB.dotCNC = new Proxy(DiscordClasses, { + get: function (list, item) { + let className = InternalBDFDB.getDiscordClass(item, true); + return (className.indexOf("#") == 0 ? "" : ".") + className + ","; + } + }); + BDFDB.notCN = new Proxy(DiscordClasses, { + get: function (list, item) { + return `:not(.${InternalBDFDB.getDiscordClass(item, true).split(".")[0]})`; + } + }); + BDFDB.notCNS = new Proxy(DiscordClasses, { + get: function (list, item) { + return `:not(.${InternalBDFDB.getDiscordClass(item, true).split(".")[0]}) `; + } + }); + BDFDB.notCNC = new Proxy(DiscordClasses, { + get: function (list, item) { + return `:not(.${InternalBDFDB.getDiscordClass(item, true).split(".")[0]}),`; + } + }); + + var LanguageStrings = LibraryModules.LanguageStore && LibraryModules.LanguageStore._proxyContext ? Object.assign({}, LibraryModules.LanguageStore._proxyContext.defaultMessages) : {}; + BDFDB.LanguageUtils = {}; + BDFDB.LanguageUtils.languages = { + "$discord": {name:"Discord (English))", id:"en", ownlang:"English"}, + "af": {name:"Afrikaans", id:"af", ownlang:"Afrikaans"}, + "sq": {name:"Albanian", id:"sq", ownlang:"Shqiptar"}, + "am": {name:"Amharic", id:"am", ownlang:"አማርኛ"}, + "ar": {name:"Arabic", id:"ar", ownlang:"اللغة العربية"}, + "hy": {name:"Armenian", id:"hy", ownlang:"Հայերեն"}, + "az": {name:"Azerbaijani", id:"az", ownlang:"آذربایجان دیلی"}, + "ba": {name:"Bashkir", id:"ba", ownlang:"Башҡорт"}, + "eu": {name:"Basque", id:"eu", ownlang:"Euskara"}, + "be": {name:"Belarusian", id:"be", ownlang:"Беларуская"}, + "bn": {name:"Bengali", id:"bn", ownlang:"বাংলা"}, + "bs": {name:"Bosnian", id:"bs", ownlang:"Босански"}, + "bg": {name:"Bulgarian", id:"bg", ownlang:"български"}, + "my": {name:"Burmese", id:"my", ownlang:"မြန်မာစာ"}, + "ca": {name:"Catalan", id:"ca", ownlang:"Català"}, + "ceb": {name:"Cebuano", id:"ceb", ownlang:"Bisaya"}, + "ny": {name:"Chichewa", id:"ny", ownlang:"Nyanja"}, + "zh": {name:"Chinese", id:"zh", ownlang:"中文"}, + "zh-HK": {name:"Chinese (Hong Kong)", id:"zh-HK", ownlang:"香港中文"}, + "zh-CN": {name:"Chinese (Simplified)", id:"zh-CN", ownlang:"简体中文"}, + "zh-TW": {name:"Chinese (Traditional)", id:"zh-TW", ownlang:"繁體中文"}, + "co": {name:"Corsican", id:"co", ownlang:"Corsu"}, + "hr": {name:"Croatian", id:"hr", ownlang:"Hrvatski"}, + "cs": {name:"Czech", id:"cs", ownlang:"Čeština"}, + "da": {name:"Danish", id:"da", ownlang:"Dansk"}, + "nl": {name:"Dutch", id:"nl", ownlang:"Nederlands"}, + "en": {name:"English", id:"en", ownlang:"English"}, + "en-GB": {name:"English (UK)", id:"en-GB", ownlang:"English (UK)"}, + "en-US": {name:"English (US)", id:"en-US", ownlang:"English (US)"}, + "eo": {name:"Esperanto", id:"eo", ownlang:"Esperanto"}, + "et": {name:"Estonian", id:"et", ownlang:"Eesti"}, + "fil": {name:"Filipino", id:"fil", ownlang:"Wikang Filipino"}, + "fi": {name:"Finnish", id:"fi", ownlang:"Suomi"}, + "fr": {name:"French", id:"fr", ownlang:"Français"}, + "fr-CA": {name:"French (Canadian)", id:"fr-CA", ownlang:"Français Canadien"}, + "fy": {name:"Frisian", id:"fy", ownlang:"Frysk"}, + "gl": {name:"Galician", id:"gl", ownlang:"Galego"}, + "ka": {name:"Georgian", id:"ka", ownlang:"ქართული"}, + "de": {name:"German", id:"de", ownlang:"Deutsch"}, + "de-AT": {name:"German (Austria)", id:"de-AT", ownlang:"Österreichisch Deutsch"}, + "de-CH": {name:"German (Switzerland)", id:"de-CH", ownlang:"Schweizerdeutsch"}, + "el": {name:"Greek", id:"el", ownlang:"Ελληνικά"}, + "gu": {name:"Gujarati", id:"gu", ownlang:"ગુજરાતી"}, + "ht": {name:"Haitian Creole", id:"ht", ownlang:"Kreyòl Ayisyen"}, + "ha": {name:"Hausa", id:"ha", ownlang:"حَوْسَ"}, + "haw": {name:"Hawaiian", id:"haw", ownlang:"ʻŌlelo Hawaiʻi"}, + "he": {name:"Hebrew", id:"he", ownlang:"עברית"}, + "iw": {name:"Hebrew (Israel)", id:"iw", ownlang:"עברית"}, + "hi": {name:"Hindi", id:"hi", ownlang:"हिन्दी"}, + "hmn": {name:"Hmong", id:"hmn", ownlang:"lol Hmongb"}, + "hu": {name:"Hungarian", id:"hu", ownlang:"Magyar"}, + "is": {name:"Icelandic", id:"is", ownlang:"Íslenska"}, + "ig": {name:"Igbo", id:"ig", ownlang:"Asụsụ Igbo"}, + "id": {name:"Indonesian", id:"id", ownlang:"Bahasa Indonesia"}, + "ga": {name:"Irish", id:"ga", ownlang:"Gaeilge"}, + "it": {name:"Italian", id:"it", ownlang:"Italiano"}, + "ja": {name:"Japanese", id:"ja", ownlang:"日本語"}, + "jv": {name:"Javanese", id:"jv", ownlang:"ꦧꦱꦗꦮ"}, + "jw": {name:"Javanese (Javanese)", id:"jw", ownlang:"ꦧꦱꦗꦮ"}, + "kn": {name:"Kannada", id:"kn", ownlang:"ಕನ್ನಡ"}, + "kk": {name:"Kazakh", id:"kk", ownlang:"Қазақ Tілі"}, + "km": {name:"Khmer", id:"km", ownlang:"ភាសាខ្មែរ"}, + "rw": {name:"Kinyarwanda", id:"rw", ownlang:"Ikinyarwanda"}, + "ko": {name:"Korean", id:"ko", ownlang:"한국어"}, + "ku": {name:"Kurdish", id:"ku", ownlang:"کوردی"}, + "ky": {name:"Kyrgyz", id:"ky", ownlang:"кыргызча"}, + "lo": {name:"Lao", id:"lo", ownlang:"ພາສາລາວ"}, + "la": {name:"Latin", id:"la", ownlang:"Latina"}, + "lv": {name:"Latvian", id:"lv", ownlang:"Latviešu"}, + "lt": {name:"Lithuanian", id:"lt", ownlang:"Lietuvių"}, + "lb": {name:"Luxembourgish", id:"lb", ownlang:"Lëtzebuergesch"}, + "mk": {name:"Macedonian", id:"mk", ownlang:"Mакедонски"}, + "mg": {name:"Malagasy", id:"mg", ownlang:"Malagasy"}, + "ms": {name:"Malay", id:"ms", ownlang:"بهاس ملايو"}, + "ml": {name:"Malayalam", id:"ml", ownlang:"മലയാളം"}, + "mt": {name:"Maltese", id:"mt", ownlang:"Malti"}, + "mi": {name:"Maori", id:"mi", ownlang:"te Reo Māori"}, + "mr": {name:"Marathi", id:"mr", ownlang:"मराठी"}, + "mhr": {name:"Mari", id:"mhr", ownlang:"марий йылме"}, + "mn": {name:"Mongolian", id:"mn", ownlang:"Монгол Хэл"}, + "my": {name:"Myanmar (Burmese)", id:"my", ownlang:"မြန်မာл Хэл"}, + "ne": {name:"Nepali", id:"ne", ownlang:"नेपाली"}, + "no": {name:"Norwegian", id:"no", ownlang:"Norsk"}, + "or": {name:"Odia", id:"or", ownlang:"ଓଡ଼ିଆ"}, + "pap": {name:"Papiamento", id:"pap", ownlang:"Papiamentu"}, + "ps": {name:"Pashto", id:"ps", ownlang:"پښتو"}, + "fa": {name:"Persian", id:"fa", ownlang:"فارسی"}, + "pl": {name:"Polish", id:"pl", ownlang:"Polski"}, + "pt": {name:"Portuguese", id:"pt", ownlang:"Português"}, + "pt-BR": {name:"Portuguese (Brazil)", id:"pt-BR", ownlang:"Português do Brasil"}, + "pt-PT": {name:"Portuguese (Portugal)", id:"pt-PT", ownlang:"Português do Portugal"}, + "pa": {name:"Punjabi", id:"pa", ownlang:"पंजाबी"}, + "ro": {name:"Romanian", id:"ro", ownlang:"Română"}, + "ru": {name:"Russian", id:"ru", ownlang:"Pусский"}, + "sm": {name:"Samoan", id:"sm", ownlang:"Gagana Sāmoa"}, + "gd": {name:"Scottish Gaelic", id:"gd", ownlang:"Gàidhlig"}, + "sr": {name:"Serbian", id:"sr", ownlang:"Српски"}, + "st": {name:"Sesotho", id:"st", ownlang:"Sesotho"}, + "sn": {name:"Shona", id:"sn", ownlang:"Shona"}, + "sd": {name:"Sindhi", id:"sd", ownlang:"سنڌي"}, + "si": {name:"Sinhala", id:"si", ownlang:"සිංහල"}, + "sk": {name:"Slovak", id:"sk", ownlang:"Slovenčina"}, + "sl": {name:"Slovenian", id:"sl", ownlang:"Slovenščina"}, + "so": {name:"Somali", id:"so", ownlang:"Soomaali"}, + "es": {name:"Spanish", id:"es", ownlang:"Español"}, + "es-419": {name:"Spanish (Latin America)", id:"es-419", ownlang:"Español latinoamericano"}, + "su": {name:"Sundanese", id:"su", ownlang:"Basa Sunda"}, + "sw": {name:"Swahili", id:"sw", ownlang:"Kiswahili"}, + "sv": {name:"Swedish", id:"sv", ownlang:"Svenska"}, + "tl": {name:"Tagalog", id:"tl", ownlang:"Wikang Tagalog"}, + "tg": {name:"Tajik", id:"tg", ownlang:"тоҷикӣ"}, + "ta": {name:"Tamil", id:"ta", ownlang:"தமிழ்"}, + "tt": {name:"Tatar", id:"tt", ownlang:"татарча"}, + "te": {name:"Telugu", id:"te", ownlang:"తెలుగు"}, + "th": {name:"Thai", id:"th", ownlang:"ภาษาไทย"}, + "tr": {name:"Turkish", id:"tr", ownlang:"Türkçe"}, + "tk": {name:"Turkmen", id:"tk", ownlang:"Türkmençe"}, + "udm": {name:"Udmurt", id:"udm", ownlang:"удмурт кыл"}, + "uk": {name:"Ukrainian", id:"uk", ownlang:"Yкраїнський"}, + "ur": {name:"Urdu", id:"ur", ownlang:"اُردُو"}, + "ug": {name:"Uyghur", id:"ug", ownlang:"ئۇيغۇر تىلى"}, + "uz": {name:"Uzbek", id:"uz", ownlang:"اوزبیک"}, + "vi": {name:"Vietnamese", id:"vi", ownlang:"Tiếng Việt Nam"}, + "cy": {name:"Welsh", id:"cy", ownlang:"Cymraeg"}, + "xh": {name:"Xhosa", id:"xh", ownlang:"Xhosa"}, + "yi": {name:"Yiddish", id:"yi", ownlang:"ייִדיש ייִדיש‬"}, + "yo": {name:"Yoruba", id:"yo", ownlang:"Èdè Yorùbá"}, + "zu": {name:"Zulu", id:"zu", ownlang:"Zulu"} + }; + InternalBDFDB.LibraryStrings = { + "hr": { //croatian + ascending: "Uzlazni", + descending: "Silazni", + file_navigator_text: "Pregledajte datoteku", + first: "Prvi", + last: "Zadnji", + library_settings: "Postavke biblioteke", + order: "Slijed", + sort_by: "Poredaj po", + toast_plugin_started: "{{var0}} je započeo.", + toast_plugin_stopped: "{{var0}} zaustavljen.", + toast_plugin_translated: "prijevod na {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} zamijenjen je s {{var2}} {{var3}}.", + update_notice_click: "Kliknite za ažuriranje!", + update_notice_reload: "Za završetak ažuriranja potrebno je ponovo učitati.", + update_notice_update: "Sljedeće dodatke treba ažurirati:" + }, + "da": { //danish + ascending: "Stigende", + descending: "Aftagende", + file_navigator_text: "Gennemse fil", + first: "Første", + last: "Sidste", + library_settings: "Biblioteksindstillinger", + order: "Sekvens", + sort_by: "Sorter efter", + toast_plugin_started: "{{var0}} er startet.", + toast_plugin_stopped: "{{var0}} er stoppet.", + toast_plugin_translated: "oversat til {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} blev erstattet af {{var2}} {{var3}}.", + update_notice_click: "Klik for at opdatere!", + update_notice_reload: "For at afslutte opdateringen skal du genindlæse.", + update_notice_update: "Følgende plugins skal opdateres:" + }, + "de": { //german + ascending: "Aufsteigend", + descending: "Absteigend", + file_navigator_text: "Datei durchsuchen", + first: "Erste", + last: "Letzte", + library_settings: "Bibliothekseinstellungen", + order: "Reihenfolge", + sort_by: "Sortieren nach", + toast_plugin_started: "{{var0}} wurde gestartet.", + toast_plugin_stopped: "{{var0}} wurde gestoppt.", + toast_plugin_translated: "auf {{var0}} übersetzt.", + toast_plugin_updated: "{{var0}} {{var1}} wurde durch {{var2}} {{var3}} ersetzt.", + update_notice_click: "Zum Aktualisieren klicken!", + update_notice_reload: "Lade neu, die Aktualisierung abzuschließen.", + update_notice_update: "Die folgenden Plugins müssen aktualisiert werden:" + }, + "es": { //spanish + ascending: "Ascendente", + descending: "Descendente", + file_navigator_text: "Buscar archivo", + first: "Primero", + last: "Último", + library_settings: "Configuraciones de biblioteca", + order: "Secuencia", + sort_by: "Ordenar por", + toast_plugin_started: "{{var0}} se guilddiv iniciado.", + toast_plugin_stopped: "{{var0}} se guilddiv detenido.", + toast_plugin_translated: "traducido a {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} ha sido reemplazado por {{var2}} {{var3}}.", + update_notice_click: "Haga clic para actualizar!", + update_notice_reload: "Para finalizar la actualización, debe volver a cargar.", + update_notice_update: "Los siguientes complementos deben actualizarse:" + }, + "fr": { //french + ascending: "Ascendant", + descending: "Descendant", + file_navigator_text: "Parcourir le fichier", + first: "Première", + last: "Dernier", + library_settings: "Paramètres de la bibliothèque", + order: "Séquence", + sort_by: "Trier par", + toast_plugin_started: "{{var0}} a été démarré.", + toast_plugin_stopped: "{{var0}} a été arrêté.", + toast_plugin_translated: "traduit en {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} a été remplacé par {{var2}} {{var3}}.", + update_notice_click: "Cliquez pour mettre à jour!", + update_notice_reload: "Pour terminer la mise à jour, vous devez recharger.", + update_notice_update: "Les plugins suivants doivent être mis à jour:" + }, + "it": { //italian + ascending: "Ascendente", + descending: "Discendente", + file_navigator_text: "Sfoglia file", + first: "Primo", + last: "Ultimo", + library_settings: "Impostazioni della libreria", + order: "Sequenza", + sort_by: "Ordina per", + toast_plugin_started: "{{var0}} è stato avviato.", + toast_plugin_stopped: "{{var0}} è stato interrotto.", + toast_plugin_translated: "tradotto in {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} è stato sostituito da {{var2}} {{var3}}.", + update_notice_click: "Clicca per aggiornare!", + update_notice_reload: "Per terminare l'aggiornamento è necessario ricaricare.", + update_notice_update: "I seguenti plugin devono essere aggiornati:" + }, + "nl": { //dutch + ascending: "Oplopend", + descending: "Aflopend", + file_navigator_text: "Bestand zoeken", + first: "Eerste", + last: "Laatste", + library_settings: "Bibliotheekinstellingen", + order: "Volgorde", + sort_by: "Sorteer op", + toast_plugin_started: "{{var0}} is gestart.", + toast_plugin_stopped: "{{var0}} is gestopt.", + toast_plugin_translated: "vertaald naar {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} is vervangen door {{var2}} {{var3}}.", + update_notice_click: "Klik om te updaten!", + update_notice_reload: "Om de update te voltooien, moet u opnieuw laden.", + update_notice_update: "De volgende plug-ins moeten worden bijgewerkt:" + }, + "no": { //norwegian + ascending: "Stigende", + descending: "Synkende", + file_navigator_text: "Bla gjennom fil", + first: "Første", + last: "Siste", + library_settings: "Bibliotekinnstillinger", + order: "Sekvens", + sort_by: "Sorter etter", + toast_plugin_started: "{{var0}} er startet.", + toast_plugin_stopped: "{{var0}} er stoppet.", + toast_plugin_translated: "oversatt til {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} er erstattet av {{var2}} {{var3}}.", + update_notice_click: "Klikk for å oppdatere!", + update_notice_reload: "For å fullføre oppdateringen må du laste inn på nytt.", + update_notice_update: "Følgende plugins må oppdateres:" + }, + "pl": { //polish + ascending: "Rosnąco", + descending: "Malejąco", + file_navigator_text: "Przeglądać plik", + first: "Pierwszy", + last: "Ostatni", + library_settings: "Ustawienia biblioteki", + order: "Sekwencja", + sort_by: "Sortuj według", + toast_plugin_started: "{{var0}} został uruchomiony.", + toast_plugin_stopped: "{{var0}} został zatrzymany.", + toast_plugin_translated: "przetłumaczono na {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} został zastąpiony przez {{var2}} {{var3}}.", + update_notice_click: "Kliknij, aby zaktualizować!", + update_notice_reload: "Aby zakończyć aktualizację, musisz ponownie załadować.", + update_notice_update: "Należy zaktualizować następujące wtyczki:" + }, + "pt-BR": { //portuguese (brazil) + ascending: "Crescente", + descending: "Descendente", + file_navigator_text: "Procurar arquivo", + first: "Primeiro", + last: "Último", + library_settings: "Configurações da biblioteca", + order: "Seqüência", + sort_by: "Ordenar por", + toast_plugin_started: "{{var0}} foi iniciado.", + toast_plugin_stopped: "{{var0}} foi interrompido.", + toast_plugin_translated: "traduzido para {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} foi substituído por {{var2}} {{var3}}.", + update_notice_click: "Clique para atualizar!", + update_notice_reload: "Para concluir a atualização, você precisa recarregar.", + update_notice_update: "Os seguintes plugins precisam ser atualizados:" + }, + "fi": { //finnish + ascending: "Nouseva", + descending: "Laskeva", + file_navigator_text: "Selaa tiedostoa", + first: "Ensimmäinen", + last: "Viimeinen", + library_settings: "Kirjastoasetukset", + order: "Jakso", + sort_by: "Järjestä", + toast_plugin_started: "{{var0}} on käynnistetty.", + toast_plugin_stopped: "{{var0}} on pysäytetty.", + toast_plugin_translated: "käännetty osoitteeseen {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} on korvattu {{var2}} {{var3}}.", + update_notice_click: "Napsauta päivittääksesi!", + update_notice_reload: "Päivittäminen on suoritettava uudelleen.", + update_notice_update: "Seuraavat laajennukset on päivitettävä:" + }, + "sv": { //swedish + ascending: "Stigande", + descending: "Nedåtgående", + file_navigator_text: "Bläddra i fil", + first: "Första", + last: "Sista", + library_settings: "Biblioteksinställningar", + order: "Sekvens", + sort_by: "Sortera efter", + toast_plugin_started: "{{var0}} har startats.", + toast_plugin_stopped: "{{var0}} har blivit stoppad.", + toast_plugin_translated: "översatt till {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} har ersatts av {{var2}} {{var3}}.", + update_notice_click: "Klicka för att uppdatera!", + update_notice_reload: "För att avsluta uppdateringen måste du ladda om.", + update_notice_update: "Följande plugins måste uppdateras:" + }, + "tr": { //turkish + ascending: "Yükselen", + descending: "Azalan", + file_navigator_text: "Dosyaya gözat", + first: "Ilk", + last: "Son", + library_settings: "Kütüphane Ayarları", + order: "Sıra", + sort_by: "Göre sırala", + toast_plugin_started: "{{var0}} başlatıldı.", + toast_plugin_stopped: "{{var0}} durduruldu.", + toast_plugin_translated: "{{var0}} olarak çevrildi.", + toast_plugin_updated: "{{var0}} {{var1}}, {{var2}} {{var3}} ile değiştirildi.", + update_notice_click: "Güncellemek için tıklayın!", + update_notice_reload: "Güncellemeyi tamamlamak için yeniden yüklemeniz gerekir.", + update_notice_update: "Aşağıdaki eklentilerin güncellenmesi gerekir:" + }, + "cs": { //czech + ascending: "Vzestupně", + descending: "Klesající", + file_navigator_text: "Procházet soubor", + first: "První", + last: "Poslední", + library_settings: "Nastavení knihovny", + order: "Sekvence", + sort_by: "Seřazeno podle", + toast_plugin_started: "{{var0}} byl spuštěn.", + toast_plugin_stopped: "{{var0}} byl zastaven.", + toast_plugin_translated: "přeložen do {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} byl nahrazen {{var2}} {{var3}}.", + update_notice_click: "Klepnutím aktualizujte!", + update_notice_reload: "Pro dokončení aktualizace je třeba znovu načíst.", + update_notice_update: "Následující doplňky je třeba aktualizovat:" + }, + "bg": { //bulgarian + ascending: "Възходящ", + descending: "Низходящ", + file_navigator_text: "Прегледайте файла", + first: "Първият", + last: "Последният", + library_settings: "Настройки на библиотеката", + order: "Последователност", + sort_by: "Сортиране по", + toast_plugin_started: "{{var0}} е стартиран.", + toast_plugin_stopped: "{{var0}} е спрян.", + toast_plugin_translated: "преведена на {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} е заменен с {{var2}} {{var3}}.", + update_notice_click: "Кликнете, за да актуализирате!", + update_notice_reload: "За да завършите актуализацията, трябва да презаредите.", + update_notice_update: "Следните приставки трябва да бъдат актуализирани:" + }, + "ru": { //russian + ascending: "По возрастанию", + descending: "По убыванию", + file_navigator_text: "Просмотр файла", + first: "Первый", + last: "Последний", + library_settings: "Настройки библиотеки", + order: "Последовательность", + sort_by: "Сортировать по", + toast_plugin_started: "{{var0}} запущен.", + toast_plugin_stopped: "{{var0}} остановлен.", + toast_plugin_translated: "переведен на {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} был заменен {{var2}} {{var3}}.", + update_notice_click: "Нажмите, чтобы обновить!", + update_notice_reload: "Для завершения обновления необходимо перезагрузить.", + update_notice_update: "Следующие плагины должны быть обновлены:" + }, + "uk": { //ukrainian + ascending: "Зростання", + descending: "Спад", + file_navigator_text: "Перегляньте файл", + first: "Перший", + last: "Останній", + library_settings: "Налаштування бібліотеки", + order: "Послідовність", + sort_by: "Сортувати за", + toast_plugin_started: "{{var0}} було запущено.", + toast_plugin_stopped: "{{var0}} було зупинено.", + toast_plugin_translated: "перекладено {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} було замінено на {{var2}} {{var3}}.", + update_notice_click: "Натисніть, щоб оновити!", + update_notice_reload: "Щоб закінчити оновлення, вам потрібно перезавантажити.", + update_notice_update: "Необхідно оновити наступні плагіни:" + }, + "ja": { //japanese + ascending: "上昇", + descending: "降順", + file_navigator_text: "ファイルを参照", + first: "最初", + last: "最後", + library_settings: "ライブラリ設定", + order: "ソート順", + sort_by: "並び替え", + toast_plugin_started: "{{var0}}が開始されました.", + toast_plugin_stopped: "{{var0}}が停止しました.", + toast_plugin_translated: "は{{var0}}に翻訳されました.", + toast_plugin_updated: "{{var0}} {{var1}}は{{var2}} {{var3}}に置き換えられました.", + update_notice_click: "クリックして更新!", + update_notice_reload: "更新を完了するには、リロードする必要があります.", + update_notice_update: "次のプラグインを更新する必要があります:" + }, + "zh-TW": { //chinese (traditional) + ascending: "上升", + descending: "降序", + file_navigator_text: "瀏覽文件", + first: "首先", + last: "最後", + library_settings: "庫設置", + order: "排序", + sort_by: "排序方式", + toast_plugin_started: "{{var0}}已經啟動.", + toast_plugin_stopped: "{{var0}}已停止.", + toast_plugin_translated: "翻譯為{{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}}已由{{var2}} {{var3}}取代.", + update_notice_click: "點擊更新!", + update_notice_reload: "要完成更新,您需要重新加載.", + update_notice_update: "以下插件需要更新:" + }, + "ko": { //korean + ascending: "오름차순", + descending: "내림차순", + file_navigator_text: "파일 찾아보기", + first: "첫번째", + last: "마지막", + library_settings: "라이브러리 설정", + order: "정렬 순서", + sort_by: "정렬 기준", + toast_plugin_started: "{{var0}} 시작되었습니다.", + toast_plugin_stopped: "{{var0}} 중지되었습니다.", + toast_plugin_translated: "{{var0}} 로 번역되었습니다.", + toast_plugin_updated: "{{var0}} {{var1}}이 (가) {{var2}} {{var3}} (으)로 대체되었습니다.", + update_notice_click: "업데이트하려면 클릭하십시오!", + update_notice_reload: "업데이트를 마치려면 다시로드해야합니다.", + update_notice_update: "다음 플러그인을 업데이트해야합니다:" + }, + "default": { //default: english + ascending: "Ascending", + descending: "Descending", + file_navigator_text: "Browse File", + first: "First", + last: "Last", + library_settings: "Library Settings", + order: "Order", + sort_by: "Sort by", + toast_plugin_started: "{{var0}} has been started.", + toast_plugin_stopped: "{{var0}} has been stopped.", + toast_plugin_translated: "translated to {{var0}}.", + toast_plugin_updated: "{{var0}} {{var1}} has been replaced by {{var2}} {{var3}}.", + update_notice_click: "Click to update!", + update_notice_reload: "To finish updating you need to reload.", + update_notice_update: "The following plugins need to be updated:" + } + }; + BDFDB.LanguageUtils.getLanguage = function () { + let lang = LibraryModules.LanguageStore.chosenLocale || "en"; + if (lang == "en-GB" || lang == "en-US") lang = "en"; + let langIds = lang.split("-"); + let langId = langIds[0]; + let langId2 = langIds[1] || ""; + lang = langId2 && langId.toUpperCase() !== langId2.toUpperCase() ? langId + "-" + langId2 : langId; + return BDFDB.LanguageUtils.languages[lang] || BDFDB.LanguageUtils.languages[langId] || BDFDB.LanguageUtils.languages["en"]; + }; + BDFDB.LanguageUtils.LanguageStrings = new Proxy(LanguageStrings, { + get: function (list, item) { + let stringObj = LibraryModules.LanguageStore.Messages[item]; + if (!stringObj) BDFDB.LogUtils.warn(item + " not found in BDFDB.LanguageUtils.LanguageStrings"); + else { + if (stringObj && typeof stringObj == "object" && typeof stringObj.format == "function") return BDFDB.LanguageUtils.LanguageStringsFormat(item); + else return stringObj; + } + return ""; + } + }); + BDFDB.LanguageUtils.LanguageStringsCheck = new Proxy(LanguageStrings, { + get: function (list, item) { + return !!LibraryModules.LanguageStore.Messages[item]; + } + }); + let parseLanguageStringObj = obj => { + let string = ""; + if (typeof obj == "string") string += obj; + else if (BDFDB.ObjectUtils.is(obj)) { + if (obj.props) string += parseLanguageStringObj(obj.props); + else if (obj.type) { + let text = obj.content || obj.children && obj.children[0] && obj.children[0].toString() || ""; + if (text) { + if (obj.type == "text" || obj.content) string = parseLanguageStringObj(text); + else string += `<${obj.type}>${parseLanguageStringObj(text)}`; + } + } + } + else if (BDFDB.ArrayUtils.is(obj)) for (let ele of obj) string += parseLanguageStringObj(ele); + return string; + }; + BDFDB.LanguageUtils.LanguageStringsFormat = function (item, ...values) { + if (item) { + let stringObj = LibraryModules.LanguageStore.Messages[item]; + if (stringObj && typeof stringObj == "object" && typeof stringObj.format == "function") { + let i = 0, returnvalue, formatVars = {}; + while (!returnvalue && i < 10) { + i++; + try {returnvalue = stringObj.format(formatVars, false);} + catch (err) { + returnvalue = null; + let value = values.shift(); + formatVars[err.toString().split("for: ")[1]] = value != null ? (value === 0 ? "0" : value) : "undefined"; + } + } + if (returnvalue) return parseLanguageStringObj(returnvalue); + else { + BDFDB.LogUtils.warn(item + " failed to format string in BDFDB.LanguageUtils.LanguageStrings"); + return ""; + } + } + else return BDFDB.LanguageUtils.LanguageStrings[item]; + } + else BDFDB.LogUtils.warn(item + " enter a valid key to format the string in BDFDB.LanguageUtils.LanguageStrings"); + return ""; + }; + BDFDB.LanguageUtils.LibraryStrings = new Proxy(InternalBDFDB.LibraryStrings.default, { + get: function (list, item) { + let languageId = BDFDB.LanguageUtils.getLanguage().id; + if (InternalBDFDB.LibraryStrings[languageId] && InternalBDFDB.LibraryStrings[languageId][item]) return InternalBDFDB.LibraryStrings[languageId][item]; + else if (InternalBDFDB.LibraryStrings.default[item]) return InternalBDFDB.LibraryStrings.default[item]; + else BDFDB.LogUtils.warn(item + " not found in BDFDB.LanguageUtils.LibraryStrings"); + return ""; + } + }); + BDFDB.LanguageUtils.LibraryStringsCheck = new Proxy(LanguageStrings, { + get: function (list, item) { + return !!InternalBDFDB.LibraryStrings.default[item]; + } + }); + BDFDB.LanguageUtils.LibraryStringsFormat = function (item, ...values) { + if (item && values.length) { + let languageId = BDFDB.LanguageUtils.getLanguage().id, string = null; + if (InternalBDFDB.LibraryStrings[languageId] && InternalBDFDB.LibraryStrings[languageId][item]) string = InternalBDFDB.LibraryStrings[languageId][item]; + else if (InternalBDFDB.LibraryStrings.default[item]) string = InternalBDFDB.LibraryStrings.default[item]; + if (string) { + for (let i = 0; i < values.length; i++) if (typeof values[i] == "string") string = string.replace(new RegExp(`{{var${i}}}`, "g"), values[i]); + return string; + } + else BDFDB.LogUtils.warn(item + " not found in BDFDB.LanguageUtils.LibraryStrings"); + } + else BDFDB.LogUtils.warn(item + " enter a valid key and at least one value to format the string in BDFDB.LanguageUtils.LibraryStrings"); + return ""; + }; + BDFDB.TimeUtils.interval(interval => { + if (LibraryModules.LanguageStore.chosenLocale) { + BDFDB.TimeUtils.clear(interval); + let language = BDFDB.LanguageUtils.getLanguage(); + BDFDB.LanguageUtils.languages.$discord.name = `Discord (${language.name})`; + BDFDB.LanguageUtils.languages.$discord.id = language.id; + BDFDB.LanguageUtils.languages.$discord.google = language.google; + BDFDB.LanguageUtils.languages.$discord.ownlang = language.ownlang; + } + }, 100); + + var InternalComponents = {NativeSubComponents: {}, LibraryComponents: {}}, reactInitialized = LibraryModules.React && LibraryModules.React.Component; + InternalComponents.NativeSubComponents.Button = BDFDB.ModuleUtils.findByProperties("Colors", "Hovers", "Looks"); + InternalComponents.NativeSubComponents.Checkbox = BDFDB.ModuleUtils.findByName("Checkbox"); + InternalComponents.NativeSubComponents.Clickable = BDFDB.ModuleUtils.findByName("Clickable"); + InternalComponents.NativeSubComponents.FavButton = BDFDB.ModuleUtils.findByName("GIFFavButton"); + InternalComponents.NativeSubComponents.KeybindRecorder = BDFDB.ModuleUtils.findByName("KeybindRecorder"); + InternalComponents.NativeSubComponents.MenuCheckboxItem = BDFDB.ModuleUtils.findByName("MenuCheckboxItem"); + InternalComponents.NativeSubComponents.MenuControlItem = BDFDB.ModuleUtils.findByName("MenuControlItem"); + InternalComponents.NativeSubComponents.MenuItem = BDFDB.ModuleUtils.findByName("MenuItem"); + InternalComponents.NativeSubComponents.PopoutContainer = BDFDB.ModuleUtils.findByName("Popout"); + InternalComponents.NativeSubComponents.QuickSelect = BDFDB.ModuleUtils.findByName("QuickSelectWrapper"); + InternalComponents.NativeSubComponents.RadioGroup = BDFDB.ModuleUtils.findByName("RadioGroup"); + InternalComponents.NativeSubComponents.SearchBar = BDFDB.ModuleUtils.find(m => m && m.displayName == "SearchBar" && m.defaultProps.placeholder == BDFDB.LanguageUtils.LanguageStrings.SEARCH); + InternalComponents.NativeSubComponents.Select = BDFDB.ModuleUtils.findByName("SelectTempWrapper"); + InternalComponents.NativeSubComponents.Slider = BDFDB.ModuleUtils.findByName("Slider"); + InternalComponents.NativeSubComponents.Switch = BDFDB.ModuleUtils.findByName("Switch"); + InternalComponents.NativeSubComponents.TabBar = BDFDB.ModuleUtils.findByName("TabBar"); + InternalComponents.NativeSubComponents.Table = BDFDB.ModuleUtils.findByName("Table"); + InternalComponents.NativeSubComponents.TextArea = BDFDB.ModuleUtils.findByName("TextArea"); + InternalComponents.NativeSubComponents.TextInput = BDFDB.ModuleUtils.findByName("TextInput"); + InternalComponents.NativeSubComponents.TooltipContainer = BDFDB.ModuleUtils.findByName("Tooltip"); + + InternalComponents.LibraryComponents.AddonCard = InternalBDFDB.loadPatchedComp("AddonCard") || reactInitialized && class BDFDB_AddonCard extends LibraryModules.React.Component { + render() { + return !BDFDB.ObjectUtils.is(this.props.data) ? null : BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN._repoentry, this.props.className, BDFDB.disCN._repocard, BDFDB.disCN._reposettingsclosed, BDFDB.disCN._repocheckboxitem), + children: [ + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN._repoheader, + style: {overflow: "visible"}, + children: [ + BDFDB.ReactUtils.createElement("span", { + className: BDFDB.disCN._repoheadertitle, + children: [ + BDFDB.ReactUtils.createElement("span", { + className: BDFDB.disCN._reponame, + children: this.props.data.name + }), + " v", + BDFDB.ReactUtils.createElement("span", { + className: BDFDB.disCN._repoversion, + children: this.props.data.version + }), + " by ", + BDFDB.ReactUtils.createElement("span", { + className: BDFDB.disCN._repoauthor, + children: this.props.data.author + }) + ] + }), + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN._repocontrols, + children: this.props.controls + }) + ] + }), + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ScrollerVertical, { + outerClassName: BDFDB.disCN._repodescriptionwrap, + className: BDFDB.disCN._repodescription, + children: this.props.data.description + }), + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN._repofooter, + children: [ + BDFDB.ReactUtils.createElement("span", { + className: BDFDB.disCN._repolinks, + children: [].concat(this.props.links).map((link, i) => BDFDB.ObjectUtils.is(link) && [ + i > 0 && " | ", + BDFDB.ReactUtils.createElement("a", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN._repolink, typeof link.label == "string" && BDFDB.disCN._repolink + "-" + link.label.toLowerCase().replace(/\s/g, "")), + href: link.href, + children: link.label + }) + ]).flat(10).filter(n => n) + }), + this.props.buttons + ].flat(10).filter(n => n) + }), + ] + }); + } + }; + + InternalComponents.LibraryComponents.Anchor = BDFDB.ModuleUtils.findByName("Anchor"); + + InternalComponents.LibraryComponents.Animations = Object.assign({}, BDFDB.ModuleUtils.findByProperties("Controller", "Spring")); + + InternalComponents.LibraryComponents.AutocompleteItems = BDFDB.ModuleUtils.findByProperties("Generic", "User", "Command"); + + InternalComponents.LibraryComponents.AutocompleteMenu = BDFDB.ModuleUtils.findByName("Autocomplete"); + + let AvatarComponents = BDFDB.ModuleUtils.findByProperties("AnimatedAvatar") || {}; + InternalComponents.LibraryComponents.Avatar = AvatarComponents.default; + InternalComponents.LibraryComponents.AvatarComponents = AvatarComponents; + + InternalComponents.LibraryComponents.BadgeAnimationContainer = InternalBDFDB.loadPatchedComp("BadgeAnimationContainer") || reactInitialized && class BDFDB_BadgeAnimationContainer extends LibraryModules.React.Component { + componentDidMount() {BDFDB.ReactUtils.forceUpdate(this);} + componentWillAppear(e) {if (typeof e == "function") e();} + componentWillEnter(e) {if (typeof e == "function") e();} + componentWillLeave(e) {if (typeof e == "function") this.timeoutId = setTimeout(e, 300);} + componentWillUnmount() {clearTimeout(this.timeoutId)} + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Animations.animated.div, { + className: this.props.className, + style: this.props.animatedStyle, + children: this.props.children + }); + } + }; + + InternalComponents.LibraryComponents.Badges = Object.assign({}, BDFDB.ModuleUtils.findByProperties("IconBadge", "NumberBadge")); + InternalComponents.LibraryComponents.Badges.IconBadge = InternalBDFDB.loadPatchedComp("Badges.IconBadge") || reactInitialized && class BDFDB_IconBadge extends LibraryModules.React.Component { + render() { + return BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.badgeiconbadge, this.props.className), + style: Object.assign({ + backgroundColor: this.props.disableColor ? null : (this.props.color || BDFDB.DiscordConstants.Colors.STATUS_RED) + }, this.props.style), + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, { + className: BDFDB.disCN.badgeicon, + name: this.props.icon + }) + }); + } + }; + + InternalComponents.LibraryComponents.BotTag = InternalBDFDB.loadPatchedComp("BotTag") || reactInitialized && class BDFDB_BotTag extends LibraryModules.React.Component { + handleClick(e) {if (typeof this.props.onClick == "function") this.props.onClick(e, this);} + handleContextMenu(e) {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);} + render() { + return BDFDB.ReactUtils.createElement("span", { + className: BDFDB.DOMUtils.formatClassName(this.props.className, this.props.invertColor ? BDFDB.disCN.bottaginvert : BDFDB.disCN.bottagregular, this.props.useRemSizes ? BDFDB.disCN.bottagrem : BDFDB.disCN.bottagpx), + style: this.props.style, + onClick: this.handleClick.bind(this), + onContextMenu: this.handleContextMenu.bind(this), + children: BDFDB.ReactUtils.createElement("span", { + className: BDFDB.disCN.bottagtext, + children: this.props.tag || BDFDB.LanguageUtils.LanguageStrings.BOT_TAG_BOT + }) + }); + } + }; + + InternalComponents.LibraryComponents.Button = InternalBDFDB.loadPatchedComp("Button") || reactInitialized && class BDFDB_Button extends LibraryModules.React.Component { + handleClick(e) {if (typeof this.props.onClick == "function") this.props.onClick(e, this);} + handleContextMenu(e) {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);} + handleMouseDown(e) {if (typeof this.props.onMouseDown == "function") this.props.onMouseDown(e, this);} + handleMouseUp(e) {if (typeof this.props.onMouseUp == "function") this.props.onMouseUp(e, this);} + handleMouseEnter(e) {if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this);} + handleMouseLeave(e) {if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this);} + render() { + let processingAndListening = (this.props.disabled || this.props.submitting) && (null != this.props.onMouseEnter || null != this.props.onMouseLeave); + let props = BDFDB.ObjectUtils.exclude(this.props, "look", "color", "hover", "size", "fullWidth", "grow", "disabled", "submitting", "type", "style", "wrapperClassName", "className", "innerClassName", "onClick", "onContextMenu", "onMouseDown", "onMouseUp", "onMouseEnter", "onMouseLeave", "children", "rel"); + let button = BDFDB.ReactUtils.createElement("button", Object.assign({}, !this.props.disabled && !this.props.submitting && props, { + className: BDFDB.DOMUtils.formatClassName(this.props.className, BDFDB.disCN.button, this.props.look != null ? this.props.look : InternalComponents.LibraryComponents.Button.Looks.FILLED, this.props.color != null ? this.props.color : InternalComponents.LibraryComponents.Button.Colors.BRAND, this.props.hover, this.props.size != null ? this.props.size : InternalComponents.LibraryComponents.Button.Sizes.MEDIUM, processingAndListening && this.props.wrapperClassName, this.props.fullWidth && BDFDB.disCN.buttonfullwidth, (this.props.grow === undefined || this.props.grow) && BDFDB.disCN.buttongrow, this.props.hover && this.props.hover !== InternalComponents.LibraryComponents.Button.Hovers.DEFAULT && BDFDB.disCN.buttonhashover, this.props.submitting && BDFDB.disCN.buttonsubmitting), + onClick: (this.props.disabled || this.props.submitting) ? e => {return e.preventDefault();} : this.handleClick.bind(this), + onContextMenu: (this.props.disabled || this.props.submitting) ? e => {return e.preventDefault();} : this.handleContextMenu.bind(this), + onMouseUp: !this.props.disabled && this.handleMouseDown.bind(this), + onMouseDown: !this.props.disabled && this.handleMouseUp.bind(this), + onMouseEnter: this.handleMouseEnter.bind(this), + onMouseLeave: this.handleMouseLeave.bind(this), + type: this.props.type === "undefined" ? "button" : this.props.type, + disabled: this.props.disabled, + style: this.props.style, + rel: this.props.rel, + children: [ + this.props.submitting && !this.props.disabled ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Spinner, { + type: InternalComponents.LibraryComponents.Spinner.Type.PULSING_ELLIPSIS, + className: BDFDB.disCN.buttonspinner, + itemClassName: BDFDB.disCN.buttonspinneritem + }) : null, + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.buttoncontents, this.props.innerClassName), + children: this.props.children + }) + ] + })); + return !processingAndListening ? button : BDFDB.ReactUtils.createElement("span", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.buttondisabledwrapper, this.props.wrapperClassName, this.props.size != null ? this.props.size : InternalComponents.LibraryComponents.Button.Sizes.MEDIUM, this.props.fullWidth && BDFDB.disCN.buttonfullwidth, (this.props.grow === undefined || this.props.grow) && BDFDB.disCN.buttongrow), + children: [ + button, + BDFDB.ReactUtils.createElement("span", { + onMouseEnter: this.handleMouseEnter.bind(this), + onMouseLeave: this.handleMouseLeave.bind(this), + className: BDFDB.disCN.buttondisabledoverlay + }) + ] + }); + } + }; + + InternalComponents.LibraryComponents.Card = InternalBDFDB.loadPatchedComp("Card") || reactInitialized && class BDFDB_Card extends LibraryModules.React.Component { + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.hovercardwrapper, this.props.backdrop && BDFDB.disCN.hovercard, this.props.className), + onMouseEnter: e => {if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this);}, + onMouseLeave: e => {if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this);}, + onClick: e => {if (typeof this.props.onClick == "function") this.props.onClick(e, this);}, + onContextMenu: e => {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);}, + children: [ + !this.props.noRemove ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.CardRemoveButton, { + onClick: e => { + if (typeof this.props.onRemove == "function") this.props.onRemove(e, this); + BDFDB.ListenerUtils.stopEvent(e); + } + }) : null, + typeof this.props.children == "string" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, { + className: BDFDB.disCN.hovercardinner, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextScroller, {children: this.props.children}) + }) : this.props.children + ].flat(10).filter(n => n) + }), "backdrop", "noRemove")); + } + }; + InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.Card, {backdrop:true, noRemove:false}); + + InternalComponents.LibraryComponents.CardRemoveButton = BDFDB.ModuleUtils.findByName("RemoveButton"); + + InternalComponents.LibraryComponents.ChannelTextAreaButton = InternalBDFDB.loadPatchedComp("ChannelTextAreaButton") || reactInitialized && class BDFDB_ChannelTextAreaButton extends LibraryModules.React.Component { + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Button, { + look: InternalComponents.LibraryComponents.Button.Looks.BLANK, + size: InternalComponents.LibraryComponents.Button.Sizes.NONE, + "aria-label": this.props.label, + tabIndex: this.props.tabIndex, + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.textareabuttonwrapper, this.props.isActive && BDFDB.disCN.textareabuttonactive), + innerClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.textareabutton, this.props.className, this.props.pulse && BDFDB.disCN.textareaattachbuttonplus), + onClick: this.props.onClick, + onContextMenu: this.props.onContextMenu, + onMouseEnter: this.props.onMouseEnter, + onMouseLeave: this.props.onMouseLeave, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, { + name: this.props.iconName, + iconSVG: this.props.iconSVG, + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.textareaicon, this.props.iconClassName, this.props.pulse && BDFDB.disCN.textareaiconpulse) + }) + }); + } + }; + + InternalComponents.LibraryComponents.CharCounter = InternalBDFDB.loadPatchedComp("CharCounter") || reactInitialized && class BDFDB_CharCounter extends LibraryModules.React.Component { + getCounterString() { + let input = this.refElement || {}, string = ""; + if (BDFDB.DOMUtils.containsClass(this.refElement, BDFDB.disCN.textarea)) { + let instance = BDFDB.ReactUtils.findOwner(input, {name:"ChannelEditorContainer", up:true}); + if (instance) string = instance.props.textValue; + else string = input.value || input.textContent || ""; + } + else string = input.value || input.textContent || ""; + let start = input.selectionStart || 0, end = input.selectionEnd || 0, selectlength = end - start, selection = BDFDB.DOMUtils.getSelection(); + let select = !selectlength && !selection ? 0 : (selectlength || selection.length); + select = !select ? 0 : (select > string.length ? (end || start ? string.length - (string.length - end - start) : string.length) : select); + let children = [ + typeof this.props.renderPrefix == "function" && this.props.renderPrefix(string.length), + `${string.length}${!this.props.max ? "" : "/" + this.props.max}${!select ? "" : " (" + select + ")"}`, + typeof this.props.renderSuffix == "function" && this.props.renderSuffix(string.length) + ].filter(n => n); + if (typeof this.props.onChange == "function") this.props.onChange(this); + return children.length == 1 ? children[0] : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + children: children + }); + } + updateCounter() { + if (!this.refElement) return; + BDFDB.TimeUtils.clear(this.updateTimeout); + this.updateTimeout = BDFDB.TimeUtils.timeout(this.forceUpdateCounter.bind(this), 100); + } + forceUpdateCounter() { + if (!this.refElement) return; + this.props.children = this.getCounterString(); + BDFDB.ReactUtils.forceUpdate(this); + } + handleSelection() { + if (!this.refElement) return; + let mousemove = _ => { + BDFDB.TimeUtils.timeout(this.forceUpdateCounter.bind(this), 10); + }; + let mouseup = _ => { + document.removeEventListener("mousemove", mousemove); + document.removeEventListener("mouseup", mouseup); + if (this.refElement.selectionEnd - this.refElement.selectionStart) BDFDB.TimeUtils.timeout(_ => { + document.addEventListener("click", click); + }); + }; + let click = _ => { + BDFDB.TimeUtils.timeout(this.forceUpdateCounter.bind(this), 100); + document.removeEventListener("mousemove", mousemove); + document.removeEventListener("mouseup", mouseup); + document.removeEventListener("click", click); + }; + document.addEventListener("mousemove", mousemove); + document.addEventListener("mouseup", mouseup); + } + componentDidMount() { + if (this.props.refClass) { + let node = BDFDB.ReactUtils.findDOMNode(this); + if (node && node.parentElement) { + this.refElement = node.parentElement.querySelector(this.props.refClass); + if (this.refElement) { + if (!this._updateCounter) this._updateCounter = _ => { + if (!document.contains(node)) BDFDB.ListenerUtils.multiRemove(this.refElement, "keydown click change", this._updateCounter); + else this.updateCounter(); + }; + if (!this._handleSelection) this._handleSelection = _ => { + if (!document.contains(node)) BDFDB.ListenerUtils.multiRemove(this.refElement, "mousedown", this._handleSelection); + else this.handleSelection(); + }; + BDFDB.ListenerUtils.multiRemove(this.refElement, "mousedown", this._handleSelection); + BDFDB.ListenerUtils.multiAdd(this.refElement, "mousedown", this._handleSelection); + if (this.refElement.tagName == "INPUT" || this.refElement.tagName == "TEXTAREA") { + BDFDB.ListenerUtils.multiRemove(this.refElement, "keydown click change", this._updateCounter); + BDFDB.ListenerUtils.multiAdd(this.refElement, "keydown click change", this._updateCounter); + } + else { + if (!this._mutationObserver) this._mutationObserver = new MutationObserver(changes => { + if (!document.contains(node)) this._mutationObserver.disconnect(); + else this.updateCounter(); + }); + else this._mutationObserver.disconnect(); + this._mutationObserver.observe(this.refElement, {childList: true, subtree: true}); + } + this.updateCounter(); + } + else BDFDB.LogUtils.warn("could not find referenceElement for BDFDB_CharCounter"); + } + } + else BDFDB.LogUtils.warn("refClass can not be undefined for BDFDB_CharCounter"); + } + render() { + let string = this.getCounterString(); + BDFDB.TimeUtils.timeout(_ => {if (string != this.getCounterString()) BDFDB.ReactUtils.forceUpdate(this);}); + return BDFDB.ReactUtils.createElement("div", BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.charcounter, this.props.className), + children: string + }), "parsing", "max", "refClass", "renderPrefix", "renderSuffix")); + } + }; + + InternalComponents.LibraryComponents.Checkbox = InternalBDFDB.loadPatchedComp("Checkbox") || reactInitialized && class BDFDB_Checkbox extends LibraryModules.React.Component { + handleChange() { + this.props.value = !this.props.value; + if (typeof this.props.onChange == "function") this.props.onChange(this.props.value, this); + BDFDB.ReactUtils.forceUpdate(this); + } + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Checkbox, Object.assign({}, this.props, {onChange: this.handleChange.bind(this)})); + } + }; + + InternalComponents.LibraryComponents.Clickable = InternalBDFDB.loadPatchedComp("Clickable") || reactInitialized && class BDFDB_Clickable extends LibraryModules.React.Component { + handleClick(e) {if (typeof this.props.onClick == "function") this.props.onClick(e, this);} + handleContextMenu(e) {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);} + handleMouseDown(e) {if (typeof this.props.onMouseDown == "function") this.props.onMouseDown(e, this);} + handleMouseUp(e) {if (typeof this.props.onMouseUp == "function") this.props.onMouseUp(e, this);} + handleMouseEnter(e) {if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this);} + handleMouseLeave(e) {if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this);} + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Clickable, Object.assign({}, this.props, { + className: BDFDB.DOMUtils.formatClassName(this.props.className, (this.props.className || "").toLowerCase().indexOf("disabled") == -1 && BDFDB.disCN.cursorpointer), + onClick: this.handleClick.bind(this), + onContextMenu: this.handleContextMenu.bind(this), + onMouseUp: this.handleMouseDown.bind(this), + onMouseDown: !this.props.disabled && this.handleMouseUp.bind(this), + onMouseEnter: this.handleMouseEnter.bind(this), + onMouseLeave: this.handleMouseLeave.bind(this) + })); + } + }; + + InternalComponents.LibraryComponents.CollapseContainer = InternalBDFDB.loadPatchedComp("CollapseContainer") || reactInitialized && class BDFDB_CollapseContainer extends LibraryModules.React.Component { + render() { + if (!BDFDB.ObjectUtils.is(this.props.collapseStates)) this.props.collapseStates = {}; + this.props.collapsed = this.props.collapsed && (this.props.collapseStates[this.props.title] || this.props.collapseStates[this.props.title] == undefined); + this.props.collapseStates[this.props.title] = this.props.collapsed; + return BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(this.props.collapsed && BDFDB.disCN.collapsecontainercollapsed, this.props.mini ? BDFDB.disCN.collapsecontainermini : BDFDB.disCN.collapsecontainer, this.props.className), + id: this.props.id, + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.collapsecontainerheader, + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + onClick: e => { + this.props.collapsed = !this.props.collapsed; + this.props.collapseStates[this.props.title] = this.props.collapsed; + if (typeof this.props.onClick == "function") this.props.onClick(this.props.collapsed, this); + BDFDB.ReactUtils.forceUpdate(this); + }, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, { + tag: InternalComponents.LibraryComponents.FormComponents.FormTitle.Tags.H5, + className: BDFDB.disCN.collapsecontainertitle, + children: this.props.title + }) + }), + !this.props.collapsed ? BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.collapsecontainerinner, + children: this.props.children + }) : null + ] + }); + } + }; + InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.CollapseContainer, {collapsed:true, mini:true}); + + InternalComponents.LibraryComponents.ColorPicker = InternalBDFDB.loadPatchedComp("ColorPicker") || reactInitialized && class BDFDB_ColorPicker extends LibraryModules.React.Component { + constructor(props) { + super(props); + if (!this.state) this.state = {}; + this.state.isGradient = props.gradient && props.color && BDFDB.ObjectUtils.is(props.color); + this.state.gradientBarEnabled = this.state.isGradient; + this.state.draggingAlphaCursor = false; + this.state.draggingGradientCursor = false; + this.state.selectedGradientCursor = 0; + } + handleColorChange(color) { + let changed = false; + if (color != null) { + changed = !BDFDB.equals(this.state.isGradient ? this.props.color[this.state.selectedGradientCursor] : this.props.color, color); + if (this.state.isGradient) this.props.color[this.state.selectedGradientCursor] = color; + else this.props.color = color; + } + else changed = true; + if (changed) { + if (typeof this.props.onColorChange == "function") this.props.onColorChange(this.props.color); + BDFDB.ReactUtils.forceUpdate(this); + } + } + componentDidMount() { + this.domElementRef = {current: BDFDB.DOMUtils.getParent(BDFDB.dotCN.itemlayer, BDFDB.ReactUtils.findDOMNode(this))}; + let popoutContainerInstance = BDFDB.ReactUtils.findOwner(this.domElementRef.current, {name:"BDFDB_PopoutContainer", up:true, unlimited:true}); + if (popoutContainerInstance) { + let mousedown = event => { + if (!this.domElementRef.current || !document.contains(this.domElementRef.current)) document.removeEventListener("mousedown", mousedown); + else if (!this.domElementRef.current.contains(event.target)) { + let mouseup = event => { + if (!this.domElementRef.current || !document.contains(this.domElementRef.current)) { + document.removeEventListener("mousedown", mousedown); + document.removeEventListener("mouseup", mouseup); + } + else if (!this.domElementRef.current.contains(event.target)) { + document.removeEventListener("mousedown", mousedown); + document.removeEventListener("mouseup", mouseup); + popoutContainerInstance.handleClick(event); + } + }; + document.addEventListener("mouseup", mouseup); + } + }; + document.addEventListener("mousedown", mousedown); + } + } + render() { + if (this.state.isGradient) this.props.color = Object.assign({}, this.props.color); + + let hslFormat = this.props.alpha ? "HSLA" : "HSL"; + let hexRegex = this.props.alpha ? /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i : /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i; + + let selectedColor = BDFDB.ColorUtils.convert(this.state.isGradient ? this.props.color[this.state.selectedGradientCursor] : this.props.color, hslFormat) || BDFDB.ColorUtils.convert("#000000FF", hslFormat); + let currentGradient = (this.state.isGradient ? Object.entries(this.props.color, hslFormat) : [[0, selectedColor], [1, selectedColor]]); + + let [h, s, l] = BDFDB.ColorUtils.convert(selectedColor, "HSLCOMP"); + let a = BDFDB.ColorUtils.getAlpha(selectedColor); + a = a == null ? 1 : a; + + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.PopoutFocusLock, { + className: BDFDB.disCNS.colorpickerwrapper + BDFDB.disCN.colorpicker, + children: [ + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickerinner, + children: [ + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickersaturation, + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickersaturationcolor, + style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0, cursor: "crosshair", backgroundColor: BDFDB.ColorUtils.convert([h, "100%", "100%"], "RGB")}, + onClick: event => { + let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickersaturationcolor, event.target)); + let newS = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 100], event.clientX) + "%"; + let newL = BDFDB.NumberUtils.mapRange([rects.top, rects.top + rects.height], [100, 0], event.clientY) + "%"; + this.handleColorChange(BDFDB.ColorUtils.convert([h, newS, newL, a], hslFormat)); + }, + onMouseDown: event => { + let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickersaturationcolor, event.target)); + + let mouseup = _ => { + document.removeEventListener("mouseup", mouseup); + document.removeEventListener("mousemove", mousemove); + }; + let mousemove = event2 => { + let newS = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 100], event2.clientX) + "%"; + let newL = BDFDB.NumberUtils.mapRange([rects.top, rects.top + rects.height], [100, 0], event2.clientY) + "%"; + this.handleColorChange(BDFDB.ColorUtils.convert([h, newS, newL, a], hslFormat)); + }; + document.addEventListener("mouseup", mouseup); + document.addEventListener("mousemove", mousemove); + }, + children: [ + BDFDB.ReactUtils.createElement("style", { + children: `${BDFDB.dotCN.colorpickersaturationwhite} {background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));background: linear-gradient(to right, #fff, rgba(255,255,255,0));}${BDFDB.dotCN.colorpickersaturationblack} {background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));background: linear-gradient(to top, #000, rgba(0,0,0,0));}` + }), + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickersaturationwhite, + style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0}, + children: [ + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickersaturationblack, + style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0} + }), + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickersaturationcursor, + style: {position: "absolute", cursor: "crosshair", left: s, top: `${BDFDB.NumberUtils.mapRange([0, 100], [100, 0], parseFloat(l))}%`}, + children: BDFDB.ReactUtils.createElement("div", { + style: {width: 4, height: 4, boxShadow: "rgb(255, 255, 255) 0px 0px 0px 1.5px, rgba(0, 0, 0, 0.3) 0px 0px 1px 1px inset, rgba(0, 0, 0, 0.4) 0px 0px 1px 2px", borderRadius: "50%", transform: "translate(-2px, -2px)"} + }) + }) + ] + }) + ] + }) + }), + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickerhue, + children: BDFDB.ReactUtils.createElement("div", { + style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0}, + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickerhuehorizontal, + style: {padding: "0px 2px", position: "relative", height: "100%"}, + onClick: event => { + let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickerhuehorizontal, event.target)); + let newH = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 360], event.clientX); + this.handleColorChange(BDFDB.ColorUtils.convert([newH, s, l, a], hslFormat)); + }, + onMouseDown: event => { + let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickerhuehorizontal, event.target)); + + let mouseup = _ => { + document.removeEventListener("mouseup", mouseup); + document.removeEventListener("mousemove", mousemove); + }; + let mousemove = event2 => { + let newH = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 360], event2.clientX); + this.handleColorChange(BDFDB.ColorUtils.convert([newH, s, l, a], hslFormat)); + }; + document.addEventListener("mouseup", mouseup); + document.addEventListener("mousemove", mousemove); + }, + children: [ + BDFDB.ReactUtils.createElement("style", { + children: `${BDFDB.dotCN.colorpickerhuehorizontal} {background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);background: -webkit-linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);}${BDFDB.dotCN.colorpickerhuevertical} {background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);}` + }), + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickerhuecursor, + style: {position: "absolute", cursor: "ew-resize", left: `${BDFDB.NumberUtils.mapRange([0, 360], [0, 100], h)}%`}, + children: BDFDB.ReactUtils.createElement("div", { + style: {marginTop: 1, width: 4, borderRadius: 1, height: 8, boxShadow: "rgba(0, 0, 0, 0.6) 0px 0px 2px", background: "rgb(255, 255, 255)", transform: "translateX(-2px)"} + }) + }) + ] + }) + }) + }), + this.props.alpha && BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickeralpha, + children: [ + BDFDB.ReactUtils.createElement("div", { + style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0}, + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickeralphacheckered, + style: {padding: "0px 2px", position: "relative", height: "100%"} + }) + }), + BDFDB.ReactUtils.createElement("div", { + style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0}, + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickeralphahorizontal, + style: {padding: "0px 2px", position: "relative", height: "100%", background: `linear-gradient(to right, ${BDFDB.ColorUtils.setAlpha([h, s, l], 0, "RGBA")}, ${BDFDB.ColorUtils.setAlpha([h, s, l], 1, "RGBA")}`}, + onClick: event => { + let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickeralphahorizontal, event.target)); + let newA = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 1], event.clientX); + this.handleColorChange(BDFDB.ColorUtils.setAlpha(selectedColor, newA, hslFormat)); + }, + onMouseDown: event => { + let rects = BDFDB.DOMUtils.getRects(BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickeralphahorizontal, event.target)); + + let mouseup = _ => { + document.removeEventListener("mouseup", mouseup); + document.removeEventListener("mousemove", mousemove); + this.state.draggingAlphaCursor = false; + BDFDB.ReactUtils.forceUpdate(this); + }; + let mousemove = event2 => { + this.state.draggingAlphaCursor = true; + let newA = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0, 1], event2.clientX); + this.handleColorChange(BDFDB.ColorUtils.setAlpha(selectedColor, newA, hslFormat)); + }; + document.addEventListener("mouseup", mouseup); + document.addEventListener("mousemove", mousemove); + }, + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickeralphacursor, + style: {position: "absolute", cursor: "ew-resize", left: `${a * 100}%`}, + children: [ + BDFDB.ReactUtils.createElement("div", { + style: {marginTop: 1, width: 4, borderRadius: 1, height: 8, boxShadow: "rgba(0, 0, 0, 0.6) 0px 0px 2px", background: "rgb(255, 255, 255)", transform: "translateX(-2px)"} + }), + this.state.draggingAlphaCursor && BDFDB.ReactUtils.createElement("span", { + className: BDFDB.disCN.sliderbubble, + style: {opacity: 1, visibility: "visible", left: 2}, + children: `${Math.floor(a * 100)}%` + }) + ].filter(n => n) + }) + }) + }) + ] + }), + this.state.gradientBarEnabled && BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickergradient, + children: [ + BDFDB.ReactUtils.createElement("div", { + style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0}, + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickergradientcheckered, + style: {padding: "0px 2px", position: "relative", height: "100%"} + }) + }), + BDFDB.ReactUtils.createElement("div", { + style: {position: "absolute", top: 0, right: 0, bottom: 0, left: 0}, + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.colorpickergradienthorizontal, + style: {padding: "0px 2px", position: "relative", cursor: "copy", height: "100%", background: BDFDB.ColorUtils.createGradient(currentGradient.reduce((colorObj, posAndColor) => (colorObj[posAndColor[0]] = posAndColor[1], colorObj), {}))}, + onClick: event => { + let rects = BDFDB.DOMUtils.getRects(event.target); + let pos = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0.01, 0.99], event.clientX); + if (Object.keys(this.props.color).indexOf(pos) == -1) { + this.props.color[pos] = BDFDB.ColorUtils.convert("#000000FF", hslFormat); + this.state.selectedGradientCursor = pos; + this.handleColorChange(); + } + }, + children: currentGradient.map(posAndColor => BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.colorpickergradientcursor, (posAndColor[0] == 0 || posAndColor[0] == 1) && BDFDB.disCNS.colorpickergradientcursoredge, this.state.selectedGradientCursor == posAndColor[0] && BDFDB.disCN.colorpickergradientcursorselected), + style: {position: "absolute", cursor: "pointer", left: `${posAndColor[0] * 100}%`}, + onMouseDown: posAndColor[0] == 0 || posAndColor[0] == 1 ? _ => {} : event => { + event = event.nativeEvent || event; + let mousemove = event2 => { + if (Math.sqrt((event.pageX - event2.pageX)**2) > 10) { + document.removeEventListener("mousemove", mousemove); + document.removeEventListener("mouseup", mouseup); + + this.state.draggingGradientCursor = true; + let cursor = BDFDB.DOMUtils.getParent(BDFDB.dotCN.colorpickergradientcursor, event.target); + let rects = BDFDB.DOMUtils.getRects(cursor.parentElement); + + let releasing = _ => { + document.removeEventListener("mousemove", dragging); + document.removeEventListener("mouseup", releasing); + BDFDB.TimeUtils.timeout(_ => {this.state.draggingGradientCursor = false;}); + }; + let dragging = event3 => { + let pos = BDFDB.NumberUtils.mapRange([rects.left, rects.left + rects.width], [0.01, 0.99], event3.clientX); + if (Object.keys(this.props.color).indexOf(pos) == -1) { + delete this.props.color[posAndColor[0]]; + posAndColor[0] = pos; + this.props.color[pos] = posAndColor[1]; + this.state.selectedGradientCursor = pos; + this.handleColorChange(); + } + }; + document.addEventListener("mousemove", dragging); + document.addEventListener("mouseup", releasing); + } + }; + let mouseup = _ => { + document.removeEventListener("mousemove", mousemove); + document.removeEventListener("mouseup", mouseup); + }; + document.addEventListener("mousemove", mousemove); + document.addEventListener("mouseup", mouseup); + }, + onClick: event => { + BDFDB.ListenerUtils.stopEvent(event); + if (!this.state.draggingGradientCursor) { + this.state.selectedGradientCursor = posAndColor[0]; + BDFDB.ReactUtils.forceUpdate(this); + } + }, + onContextMenu: posAndColor[0] == 0 || posAndColor[0] == 1 ? _ => {} : event => { + BDFDB.ListenerUtils.stopEvent(event); + delete this.props.color[posAndColor[0]]; + this.state.selectedGradientCursor = 0; + this.handleColorChange(); + }, + children: BDFDB.ReactUtils.createElement("div", { + style: {background: BDFDB.ColorUtils.convert(posAndColor[1], "RGBA")} + }) + })) + }) + }) + ] + }) + ].filter(n => n) + }), + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextInput, { + className: BDFDB.disCNS.colorpickerhexinput + BDFDB.disCN.margintop8, + maxLength: this.props.alpha ? 9 : 7, + valuePrefix: "#", + value: BDFDB.ColorUtils.convert(selectedColor, this.props.alpha ? "HEXA" : "HEX"), + autoFocus: true, + onChange: value => { + if (hexRegex.test(value)) this.handleColorChange(value); + }, + inputChildren: this.props.gradient && BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, { + text: "Gradient", + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Clickable, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.colorpickergradientbutton, this.state.gradientBarEnabled && BDFDB.disCN.colorpickergradientbuttonenabled), + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, { + nativeClass: true, + width: 28, + height: 28, + name: InternalComponents.LibraryComponents.SvgIcon.Names.GRADIENT + }), + onClick: _ => { + this.state.gradientBarEnabled = !this.state.gradientBarEnabled; + if (this.state.gradientBarEnabled && !this.state.isGradient) this.props.color = {0: selectedColor, 1: selectedColor}; + else if (!this.state.gradientBarEnabled && this.state.isGradient) this.props.color = selectedColor; + this.state.isGradient = this.props.color && BDFDB.ObjectUtils.is(this.props.color); + this.handleColorChange(); + } + }) + }) + }), + BDFDB.ReactUtils.createElement("div", { + className: "move-corners", + children: [{top: 0, left: 0}, {top: 0, right: 0}, {bottom: 0, right: 0}, {bottom: 0, left: 0}].map(pos => BDFDB.ReactUtils.createElement("div", { + className: "move-corner", + onMouseDown: e => { + if (!this.domElementRef.current) return; + let rects = BDFDB.DOMUtils.getRects(this.domElementRef.current); + let left = rects.left, top = rects.top; + let oldX = e.pageX, oldY = e.pageY; + let mouseup = _ => { + document.removeEventListener("mouseup", mouseup); + document.removeEventListener("mousemove", mousemove); + }; + let mousemove = e2 => { + left = left - (oldX - e2.pageX), top = top - (oldY - e2.pageY); + oldX = e2.pageX, oldY = e2.pageY; + this.domElementRef.current.style.setProperty("left", left + "px", "important"); + this.domElementRef.current.style.setProperty("top", top + "px", "important"); + }; + document.addEventListener("mouseup", mouseup); + document.addEventListener("mousemove", mousemove); + }, + style: Object.assign({}, pos, {width: 10, height: 10, cursor: "move", position: "absolute"}) + })) + }) + ] + }); + } + }; + + InternalComponents.LibraryComponents.ColorSwatches = InternalBDFDB.loadPatchedComp("ColorSwatches") || reactInitialized && class BDFDB_ColorSwatches extends LibraryModules.React.Component { + constructor(props) { + super(props); + + props.selectedColor = BDFDB.ObjectUtils.is(props.color) ? props.color : BDFDB.ColorUtils.convert(props.color, "RGBA"); + props.colors = (BDFDB.ArrayUtils.is(props.colors) ? props.colors : [null, 5433630, 3066993, 1752220, 3447003, 3429595, 8789737, 10181046, 15277667, 15286558, 15158332, 15105570, 15844367, 13094093, 7372936, 6513507, 16777215, 3910932, 2067276, 1146986, 2123412, 2111892, 7148717, 7419530, 11342935, 11345940, 10038562, 11027200, 12745742, 9936031, 6121581, 2894892]).map(c => BDFDB.ColorUtils.convert(c, "RGBA")); + props.colorRows = props.colors.length ? [props.colors.slice(0, parseInt(props.colors.length/2)), props.colors.slice(parseInt(props.colors.length/2))] : []; + props.customColor = props.selectedColor != null ? (props.colors.indexOf(props.selectedColor) > -1 ? null : props.selectedColor) : null; + props.customSelected = !!props.customColor; + props.pickerConfig = BDFDB.ObjectUtils.is(props.pickerConfig) ? props.pickerConfig : {gradient: true, alpha: true}; + this.state = props; + + var swatches = this; + this.ColorSwatch = class BDFDB_ColorSwatch extends LibraryModules.React.Component { + render() { + let useWhite = !BDFDB.ColorUtils.isBright(this.props.color); + let swatch = BDFDB.ReactUtils.createElement("button", { + type: "button", + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.colorpickerswatch, this.props.isSingle && BDFDB.disCN.colorpickerswatchsingle, this.props.isDisabled && BDFDB.disCN.colorpickerswatchdisabled, this.props.isSelected && BDFDB.disCN.colorpickerswatchselected, this.props.isCustom && BDFDB.disCN.colorpickerswatchcustom, this.props.color == null && BDFDB.disCN.colorpickerswatchnocolor), + number: this.props.number, + disabled: this.props.isDisabled, + onClick: _ => { + if (!this.props.isSelected) { + let color = this.props.isCustom && this.props.color == null ? "rgba(0, 0, 0, 1)" : this.props.color; + if (typeof swatches.props.onColorChange == "function") swatches.props.onColorChange(BDFDB.ColorUtils.convert(color, "RGBA")); + swatches.setState({ + selectedColor: color, + customColor: this.props.isCustom ? color : swatches.state.customColor, + customSelected: this.props.isCustom + }); + } + }, + style: Object.assign({}, this.props.style, { + background: BDFDB.ObjectUtils.is(this.props.color) ? BDFDB.ColorUtils.createGradient(this.props.color) : BDFDB.ColorUtils.convert(this.props.color, "RGBA") + }), + children: [ + this.props.isCustom || this.props.isSingle ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, { + className: BDFDB.disCN.colorpickerswatchdropper, + foreground: BDFDB.disCN.colorpickerswatchdropperfg, + name: InternalComponents.LibraryComponents.SvgIcon.Names.DROPPER, + width: this.props.isCustom ? 14 : 10, + height: this.props.isCustom ? 14 : 10, + color: useWhite ? BDFDB.DiscordConstants.Colors.WHITE : BDFDB.DiscordConstants.Colors.BLACK + }) : null, + this.props.isSelected && !this.props.isSingle ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, { + name: InternalComponents.LibraryComponents.SvgIcon.Names.CHECKMARK, + width: this.props.isCustom ? 32 : 16, + height: this.props.isCustom ? 24 : 16, + color: useWhite ? BDFDB.DiscordConstants.Colors.WHITE : BDFDB.DiscordConstants.Colors.BLACK + }) : null + ] + }); + if (this.props.isCustom || this.props.isSingle || this.props.color == null) swatch = BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, { + text: this.props.isCustom || this.props.isSingle ? BDFDB.LanguageUtils.LanguageStrings.CUSTOM_COLOR : BDFDB.LanguageUtils.LanguageStrings.DEFAULT, + tooltipConfig: {type: this.props.isSingle ? "top" : "bottom"}, + children: swatch + }); + if (this.props.isCustom || this.props.isSingle) swatch = BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.PopoutContainer, { + children: swatch, + wrap: false, + popoutClassName: BDFDB.disCNS.colorpickerwrapper + BDFDB.disCN.colorpicker, + animation: InternalComponents.LibraryComponents.PopoutContainer.Animation.TRANSLATE, + position: InternalComponents.LibraryComponents.PopoutContainer.Positions.BOTTOM, + align: InternalComponents.LibraryComponents.PopoutContainer.Align.CENTER, + renderPopout: _ => { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ColorPicker, Object.assign({ + color: this.props.color, + onColorChange: color => { + if (typeof swatches.props.onColorChange == "function") swatches.props.onColorChange(BDFDB.ColorUtils.convert(color, "RGBA")) + this.props.color = color; + swatches.setState({ + selectedColor: color, + customColor: color, + customSelected: true + }); + } + }, props.pickerConfig)); + } + }); + return swatch; + } + } + } + renderRow(colors) { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.colorpickerrow, + wrap: InternalComponents.LibraryComponents.Flex.Wrap.WRAP, + children: colors.map(color => { + return BDFDB.ReactUtils.createElement(this.ColorSwatch, { + color: color, + isCustom: false, + isSelected: !this.state.customSelected && color === this.state.selectedColor, + isDisabled: this.state.disabled + }) + }) + }); + } + render() { + let customSwatch = BDFDB.ReactUtils.createElement(this.ColorSwatch, { + number: !this.state.colors.length ? (this.props.number != null ? this.props.number : 0) : null, + color: this.state.customColor, + isSingle: !this.state.colors.length, + isCustom: this.state.colors.length, + isSelected: this.state.customSelected, + isDisabled: this.state.disabled, + style: {margin: 0} + }); + return !this.state.colors.length ? customSwatch : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.colorpickerswatches, this.state.disabled && BDFDB.disCN.colorpickerswatchesdisabled), + number: this.props.number != null ? this.props.number : 0, + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, { + className: BDFDB.disCN.marginreset, + shrink: 0, + grow: 0, + children: customSwatch + }), + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL, + className: BDFDB.disCN.flexmarginreset, + grow: 1, + children: [ + this.renderRow(this.state.colorRows[0]), + this.renderRow(this.state.colorRows[1]) + ] + }) + ] + }); + } + }; + + InternalComponents.LibraryComponents.Connectors = Object.assign({}, BDFDB.ModuleUtils.findByProperties("Router", "Link")); + + InternalComponents.LibraryComponents.DiscordTag = BDFDB.ModuleUtils.findByName("DiscordTag"); + + InternalComponents.LibraryComponents.Emoji = BDFDB.ModuleUtils.findByName("Emoji"); + + InternalComponents.LibraryComponents.EmojiButton = BDFDB.ModuleUtils.findByName("EmojiButton"); + + InternalComponents.LibraryComponents.EmojiPickerButton = InternalBDFDB.loadPatchedComp("EmojiPickerButton") || reactInitialized && class BDFDB_EmojiPickerButton extends LibraryModules.React.Component { + handleEmojiChange(emoji) { + if (emoji != null) { + this.props.emoji = emoji.id ? { + id: emoji.id, + name: emoji.name, + animated: emoji.animated + } : { + id: null, + name: emoji.optionallyDiverseSequence, + animated: false + }; + if (typeof this.props.onSelect == "function") this.props.onSelect(this.props.emoji, this); + BDFDB.ReactUtils.forceUpdate(this); + } + } + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.PopoutContainer, { + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.EmojiButton, { + className: BDFDB.DOMUtils.formatClassName(this.props.className, BDFDB.disCN.emojiinputbutton), + renderButtonContents: this.props.emoji ? _ => BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Emoji, { + className: BDFDB.disCN.emoji, + emoji: this.props.emoji + }) : null + }), + wrap: false, + animation: InternalComponents.LibraryComponents.PopoutContainer.Animation.NONE, + position: InternalComponents.LibraryComponents.PopoutContainer.Positions.TOP, + align: InternalComponents.LibraryComponents.PopoutContainer.Align.LEFT, + renderPopout: instance => { + return BDFDB.ReactUtils.createElement(BDFDB.ModuleUtils.findByString("allowManagedEmojis", "EMOJI_PICKER_TAB_PANEL_ID", "diversitySelector"), { + closePopout: instance.close, + onSelectEmoji: this.handleEmojiChange.bind(this), + allowManagedEmojis: false + }); + } + }) + } + }; + + InternalComponents.LibraryComponents.FavButton = InternalBDFDB.loadPatchedComp("FavButton") || reactInitialized && class BDFDB_FavButton extends LibraryModules.React.Component { + handleClick() { + this.props.isFavorite = !this.props.isFavorite; + if (typeof this.props.onClick == "function") this.props.onClick(this.props.isFavorite, this); + BDFDB.ReactUtils.forceUpdate(this); + } + render() { + return BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.favbuttoncontainer, this.props.className), + children: BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.FavButton, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {onClick: this.handleClick.bind(this)}), "className")) + }); + } + }; + + InternalComponents.LibraryComponents.FileButton = InternalBDFDB.loadPatchedComp("FileButton") || reactInitialized && class BDFDB_FileButton extends LibraryModules.React.Component { + render() { + let filter = this.props.filter && [this.props.filter].flat(10).filter(n => typeof n == "string") || []; + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Button, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + onClick: e => {e.currentTarget.querySelector("input").click();}, + children: [ + BDFDB.LanguageUtils.LibraryStrings.file_navigator_text, + BDFDB.ReactUtils.createElement("input", { + type: "file", + accept: filter.length && (filter.join("/*,") + "/*"), + style: {display: "none"}, + onChange: e => { + let file = e.currentTarget.files[0]; + if (this.refInput && file && (!filter.length || filter.some(n => file.type.indexOf(n) == 0))) { + this.refInput.props.value = `${this.props.mode == "url" ? "url('" : ""}${(this.props.useFilePath || this.props.useFilepath) ? file.path : `data:${file.type};base64,${BDFDB.LibraryRequires.fs.readFileSync(file.path).toString("base64")}`}${this.props.mode ? "')" : ""}`; + BDFDB.ReactUtils.forceUpdate(this.refInput); + this.refInput.handleChange(this.refInput.props.value); + } + } + }) + ] + }), "filter", "mode", "useFilePath", "useFilepath")); + } + }; + + InternalComponents.LibraryComponents.Flex = BDFDB.ModuleUtils.findByProperties("Wrap", "Direction", "Child"); + + InternalComponents.LibraryComponents.FlowerStarIcon = BDFDB.ModuleUtils.findByName("FlowerStarIcon"); + + InternalComponents.LibraryComponents.FormComponents = Object.assign({}, BDFDB.ModuleUtils.findByProperties("FormSection", "FormText")); + + InternalComponents.LibraryComponents.FormComponents.FormItem = InternalBDFDB.loadPatchedComp("FormComponents.FormItem") || reactInitialized && class BDFDB_FormItem extends LibraryModules.React.Component { + render() { + return BDFDB.ReactUtils.createElement("div", { + className: this.props.className, + style: this.props.style, + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + align: InternalComponents.LibraryComponents.Flex.Align.BASELINE, + children: [ + this.props.title != null || this.props.error != null ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, { + wrap: true, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, { + tag: this.props.tag || InternalComponents.LibraryComponents.FormComponents.FormTitle.Tags.H5, + disabled: this.props.disabled, + required: this.props.required, + error: this.props.error, + className: this.props.titleClassName, + children: this.props.title + }) + }) : null + ].concat([this.props.titlechildren].flat(10)).filter(n => n) + }), + ].concat(this.props.children) + }); + } + }; + + InternalComponents.LibraryComponents.GuildComponents = {}; + + InternalComponents.LibraryComponents.GuildComponents.Badge = BDFDB.ModuleUtils.findByName("GuildBadge"); + + InternalComponents.LibraryComponents.GuildComponents.BlobMask = BDFDB.ModuleUtils.findByName("BlobMask"); + + InternalComponents.LibraryComponents.GuildComponents.Guild = InternalBDFDB.loadPatchedComp("GuildComponents.Guild") || reactInitialized && class BDFDB_Guild extends LibraryModules.React.Component { + constructor(props) { + super(props); + this.state = {hovered: false}; + } + handleMouseEnter(e) { + if (!this.props.sorting) this.setState({hovered: true}); + if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this); + } + handleMouseLeave(e) { + if (!this.props.sorting) this.setState({hovered: false}); + if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this); + } + handleMouseDown(e) { + if (!this.props.unavailable && this.props.guild && this.props.selectedChannelId) LibraryModules.DirectMessageUtils.preload(this.props.guild.id, this.props.selectedChannelId); + if (e.button == 0 && typeof this.props.onMouseDown == "function") this.props.onMouseDown(e, this); + } + handleMouseUp(e) { + if (e.button == 0 && typeof this.props.onMouseUp == "function") this.props.onMouseUp(e, this); + } + handleClick(e) { + if (typeof this.props.onClick == "function") this.props.onClick(e, this); + } + handleContextMenu(e) { + if (this.props.menu) BDFDB.GuildUtils.openMenu(this.props.guild, e); + if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this); + } + setRef(e) { + if (typeof this.props.setRef == "function") this.props.setRef(this.props.guild.id, e) + } + componentDidMount() { + let node = BDFDB.ReactUtils.findDOMNode(this); + if (node) for (let child of node.querySelectorAll("a")) child.setAttribute("draggable", false); + } + render() { + if (!this.props.guild) return null; + this.props.guildId = this.props.guild.id; + this.props.selectedChannelId = LibraryModules.LastChannelStore.getChannelId(this.props.guild.id); + this.props.selected = this.props.state ? LibraryModules.LastGuildStore.getGuildId() == this.props.guild.id : false; + this.props.unread = this.props.state ? LibraryModules.UnreadGuildUtils.hasUnread(this.props.guild.id) : false; + this.props.badge = this.props.state ? LibraryModules.UnreadGuildUtils.getMentionCount(this.props.guild.id) : 0; + this.props.audio = this.props.state ? (LibraryModules.ChannelStore.getChannel(LibraryModules.LastChannelStore.getVoiceChannelId()) || {}).guild_id == this.props.guild.id : false; + this.props.video = this.props.state ? (LibraryModules.StreamUtils.getActiveStream() || {}).guildId == this.props.guild.id : false; + this.props.screenshare = this.props.state ? !!LibraryModules.StreamUtils.getAllApplicationStreams().filter(stream => stream.guildId == this.props.guild.id)[0] : false; + this.props.isCurrentUserInThisGuildVoice = this.props.state ? LibraryModules.CurrentVoiceUtils.getGuildId() == this.props.guild.id : false; + this.props.animatable = this.props.state ? LibraryModules.IconUtils.hasAnimatedGuildIcon(this.props.guild) : false; + this.props.unavailable = this.props.state ? LibraryModules.GuildUnavailableStore.unavailableGuilds.includes(this.props.guild.id) : false; + let isDraggedGuild = this.props.draggingGuildId === this.props.guild.id; + let guild = isDraggedGuild ? BDFDB.ReactUtils.createElement("div", { + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.GuildComponents.Items.DragPlaceholder, {}) + }) : BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.guildcontainer, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.GuildComponents.BlobMask, { + selected: this.state.isDropHovering || this.props.selected || this.state.hovered, + upperBadge: this.props.unavailable ? InternalComponents.LibraryComponents.GuildComponents.Items.renderUnavailableBadge() : InternalComponents.LibraryComponents.GuildComponents.Items.renderIconBadge(this.props.audio, this.props.video, this.props.screenshare, this.props.isCurrentUserInThisGuildVoice), + lowerBadge: this.props.badge > 0 ? InternalComponents.LibraryComponents.GuildComponents.Items.renderMentionBadge(this.props.badge) : null, + lowerBadgeWidth: InternalComponents.LibraryComponents.Badges.getBadgeWidthForValue(this.props.badge), + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.NavItem, { + to: { + pathname: BDFDB.DiscordConstants.Routes.CHANNEL(this.props.guild.id, this.props.selectedChannelId), + state: { + analyticsSource: { + page: BDFDB.DiscordConstants.AnalyticsPages.GUILD_CHANNEL, + section: BDFDB.DiscordConstants.AnalyticsSections.CHANNEL_LIST, + object: BDFDB.DiscordConstants.AnalyticsObjects.CHANNEL + } + } + }, + name: this.props.guild.name, + onMouseEnter: this.handleMouseEnter.bind(this), + onMouseLeave: this.handleMouseLeave.bind(this), + onMouseDown: this.handleMouseDown.bind(this), + onMouseUp: this.handleMouseUp.bind(this), + onClick: this.handleClick.bind(this), + onContextMenu: this.handleContextMenu.bind(this), + icon: this.props.guild.getIconURL(this.state.hovered && this.props.animatable ? "gif" : "jpg"), + selected: this.props.selected || this.state.hovered + }) + }) + }); + + if (this.props.draggable && typeof this.props.connectDragSource == "function") guild = this.props.connectDragSource(guild); + + let children = [ + this.props.list || this.props.pill ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.GuildComponents.Pill, { + hovered: !isDraggedGuild && this.state.hovered, + selected: !isDraggedGuild && this.props.selected, + unread: !isDraggedGuild && this.props.unread, + className: BDFDB.disCN.guildpill + }) : null, + !this.props.tooltip ? guild : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, { + tooltipConfig: Object.assign({type: "right"}, this.props.tooltipConfig, {guild: this.props.list && this.props.guild}), + children: guild + }) + ].filter(n => n); + return this.props.list ? BDFDB.ReactUtils.createElement("div", { + ref: null != this.props.setRef ? this.props.setRef : null, + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.guildouter, BDFDB.disCN._bdguild, this.props.unread && BDFDB.disCN._bdguildunread, this.props.selected && BDFDB.disCN._bdguildselected, this.props.unread && BDFDB.disCN._bdguildunread, this.props.audio && BDFDB.disCN._bdguildaudio, this.props.video && BDFDB.disCN._bdguildvideo), + children: BDFDB.ReactUtils.createElement(BDFDB.ReactUtils.Fragment, { + children: children + }) + }) : BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.guild, this.props.className), + children: children + }); + } + }; + InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.GuildComponents.Guild, {menu:true, tooltip:true, list:false, state:false, draggable:false, sorting:false}); + + InternalComponents.LibraryComponents.GuildComponents.Icon = BDFDB.ModuleUtils.findByName("GuildIconWrapper"); + + InternalComponents.LibraryComponents.GuildComponents.Items = BDFDB.ModuleUtils.findByProperties("Separator", "DragPlaceholder"); + + InternalComponents.LibraryComponents.GuildComponents.Pill = BDFDB.ModuleUtils.findByString("opacity:1,height:", "20:8", "default.item"); + + InternalComponents.LibraryComponents.HeaderBarComponents = BDFDB.ModuleUtils.findByName("HeaderBarContainer"); + + InternalComponents.LibraryComponents.KeybindRecorder = InternalBDFDB.loadPatchedComp("KeybindRecorder") || reactInitialized && class BDFDB_KeybindRecorder extends LibraryModules.React.Component { + handleChange(arrays) { + if (typeof this.props.onChange == "function") this.props.onChange(arrays.map(platformkey => LibraryModules.KeyEvents.codes[BDFDB.LibraryModules.KeyCodeUtils.codeToKey(platformkey)] || platformkey[1]), this); + } + handleReset() { + this.props.defaultValue = []; + let recorder = BDFDB.ReactUtils.findOwner(this, {name: "KeybindRecorder"}); + if (recorder) recorder.setState({codes: []}); + if (typeof this.props.onChange == "function") this.props.onChange([], this); + if (typeof this.props.onReset == "function") this.props.onReset(this); + } + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.hotkeywrapper, + direction: InternalComponents.LibraryComponents.Flex.Direction.HORIZONTAL, + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.KeybindRecorder, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + defaultValue: [this.props.defaultValue].flat(10).filter(n => n).map(keycode => [BDFDB.DiscordConstants.KeyboardDeviceTypes.KEYBOARD_KEY, keycode, BDFDB.DiscordConstants.KeyboardEnvs.BROWSER]), + onChange: this.handleChange.bind(this) + }), "reset", "onReset")), + this.props.reset || this.props.onReset ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, { + text: BDFDB.LanguageUtils.LanguageStrings.REMOVE_KEYBIND, + tooltipConfig: {type: "top"}, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Clickable, { + className: BDFDB.disCN.hotkeyresetbutton, + onClick: this.handleReset.bind(this), + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, { + iconSVG: ``, + }) + }) + }) : null + ].filter(n => n) + }); + } + }; + + InternalComponents.LibraryComponents.LazyImage = BDFDB.ModuleUtils.findByName("LazyImage"); + + InternalComponents.LibraryComponents.ListHeader = BDFDB.ModuleUtils.findByName("ListSectionItem"); + + InternalComponents.LibraryComponents.ListRow = InternalBDFDB.loadPatchedComp("ListRow") || reactInitialized && class BDFDB_ListRow extends LibraryModules.React.Component { + render () { + return BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.listrow, this.props.className), + children: [ + this.props.prefix, + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.listrowcontent, + style: {flex: "1 1 auto"}, + children: [ + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.listname, this.props.labelClassName), + style: {flex: "1 1 auto"}, + children: this.props.label + }), + typeof this.props.note == "string" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormText, { + type: InternalComponents.LibraryComponents.FormComponents.FormText.Types.DESCRIPTION, + children: this.props.note + }) : null + ].filter(n => n) + }), + this.props.suffix + ].filter(n => n) + }); + } + }; + + InternalComponents.LibraryComponents.MemberRole = InternalBDFDB.loadPatchedComp("MemberRole") || reactInitialized && class BDFDB_MemberRole extends LibraryModules.React.Component { + handleClick(e) {if (typeof this.props.onClick == "function") this.props.onClick(e, this);} + handleContextMenu(e) {if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this);} + render() { + let color = BDFDB.ColorUtils.convert(this.props.role.colorString || BDFDB.DiscordConstants.Colors.PRIMARY_DARK_300, "RGB"); + return BDFDB.ReactUtils.createElement("li", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.userpopoutrole, this.props.className), + style: {borderColor: BDFDB.ColorUtils.setAlpha(color, 0.6)}, + onClick: this.handleClick.bind(this), + onContextMenu: this.handleContextMenu.bind(this), + children: [ + !this.props.noCircle ? BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.userpopoutrolecircle, + style: {backgroundColor: color} + }) : null, + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.userpopoutrolename, + children: this.props.role.name + }) + ].filter(n => n) + }); + } + }; + + InternalComponents.LibraryComponents.Menu = BDFDB.ModuleUtils.findByName("Menu"); + + InternalComponents.LibraryComponents.MenuItems = Object.assign({}, BDFDB.ModuleUtils.findByProperties("MenuItem", "MenuGroup")); + + InternalComponents.LibraryComponents.MenuItems.Colors = ((BDFDB.ModuleUtils.findByProperties("MenuItemColor") || {}).MenuItemColor || {}); + + InternalComponents.LibraryComponents.MenuItems.MenuCheckboxItem = InternalBDFDB.loadPatchedComp("MenuItems.MenuCheckboxItem") || reactInitialized && class BDFDB_MenuCheckboxItem extends LibraryModules.React.Component { + handleClick() { + if (this.props.state) { + this.props.state.checked = !this.props.state.checked; + if (typeof this.props.action == "function") this.props.action(this.props.state.checked, this); + } + BDFDB.ReactUtils.forceUpdate(this); + } + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.MenuCheckboxItem, Object.assign({}, this.props, { + checked: this.props.state && this.props.state.checked, + action: this.handleClick.bind(this) + })); + } + }; + + InternalComponents.LibraryComponents.MenuItems.MenuHint = InternalBDFDB.loadPatchedComp("MenuItems.MenuHint") || reactInitialized && class BDFDB_MenuHint extends LibraryModules.React.Component { + render() { + return !this.props.hint ? null : BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.menuhint, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextScroller, { + children: this.props.hint + }) + }); + } + }; + + InternalComponents.LibraryComponents.MenuItems.MenuIcon = InternalBDFDB.loadPatchedComp("MenuItems.MenuIcon") || reactInitialized && class BDFDB_MenuIcon extends LibraryModules.React.Component { + render() { + let isString = typeof this.props.icon == "string"; + return !this.props.icon ? null : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SvgIcon, { + className: BDFDB.disCN.menuicon, + nativeClass: true, + iconSVG: isString ? this.props.icon : null, + name: !isString ? this.props.icon : null + }); + } + }; + + InternalComponents.LibraryComponents.MenuItems.MenuPersistingItem = InternalBDFDB.loadPatchedComp("MenuItems.MenuPersistingItem") || reactInitialized && class BDFDB_MenuPersistingItem extends LibraryModules.React.Component { + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.MenuItem, Object.assign({}, this.props, {onClose: _ => {}})); + } + }; + + InternalComponents.LibraryComponents.MenuItems.MenuSliderItem = InternalBDFDB.loadPatchedComp("MenuItems.MenuSliderItem") || reactInitialized && class BDFDB_MenuSliderItem extends LibraryModules.React.Component { + handleValueChange(value) { + if (this.props.state) { + this.props.state.value = Math.round(BDFDB.NumberUtils.mapRange([0, 100], [this.props.minValue, this.props.maxValue], value) * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits); + if (typeof this.props.onValueChange == "function") this.props.onValueChange(this.props.state.value, this); + } + BDFDB.ReactUtils.forceUpdate(this); + } + handleValueRender(value) { + let newValue = Math.round(BDFDB.NumberUtils.mapRange([0, 100], [this.props.minValue, this.props.maxValue], value) * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits); + if (typeof this.props.onValueRender == "function") { + let tempReturn = this.props.onValueRender(newValue, this); + if (tempReturn != undefined) newValue = tempReturn; + } + return newValue; + } + render() { + let value = this.props.state && this.props.state.value || 0; + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.MenuControlItem, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + label: typeof this.props.renderLabel == "function" ? this.props.renderLabel(Math.round(value * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits)) : this.props.label, + control: (menuItemProps, ref) => { + return BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.menuslidercontainer, + children: BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Slider, Object.assign({}, menuItemProps, { + ref: ref, + className: BDFDB.disCN.menuslider, + mini: true, + initialValue: Math.round(BDFDB.NumberUtils.mapRange([this.props.minValue, this.props.maxValue], [0, 100], value) * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits), + onValueChange: this.handleValueChange.bind(this), + onValueRender: this.handleValueRender.bind(this) + })) + }); + } + }), "digits", "renderLabel")); + } + }; + InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.MenuItems.MenuSliderItem, {minValue:0, maxValue:100, digits:0}); + + InternalComponents.LibraryComponents.MessageGroup = BDFDB.ModuleUtils.findByName("ChannelMessage"); + + InternalComponents.LibraryComponents.MessagesPopoutComponents = BDFDB.ModuleUtils.findByProperties("Header", "EmptyStateBottom"); + + InternalComponents.LibraryComponents.ModalComponents = Object.assign({}, BDFDB.ModuleUtils.findByProperties("ModalContent", "ModalFooter")); + + InternalComponents.LibraryComponents.ModalComponents.ModalContent = InternalBDFDB.loadPatchedComp("ModalComponents.ModalContent") || reactInitialized && class BDFDB_ModalContent extends LibraryModules.React.Component { + render() { + return this.props.scroller ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ScrollerThin, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.modalcontent, this.props.className), + ref: this.props.scrollerRef, + children: this.props.children + }) : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.modalcontent, BDFDB.disCN.modalnoscroller, this.props.className), + direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL, + align: InternalComponents.LibraryComponents.Flex.Align.STRETCH, + children: this.props.children + }); + } + }; + InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.ModalComponents.ModalContent, {scroller:true}); + + InternalComponents.LibraryComponents.ModalComponents.ModalTabContent = InternalBDFDB.loadPatchedComp("ModalComponents.ModalTabContent") || reactInitialized && class BDFDB_ModalTabContent extends LibraryModules.React.Component { + render() { + return BDFDB.ReactUtils.forceStyle(BDFDB.ReactUtils.createElement(this.props.scroller ? InternalComponents.LibraryComponents.ScrollerThin : "div", Object.assign(BDFDB.ObjectUtils.exclude(this.props, "scroller", "open", "render"), { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.modaltabcontent, this.props.open && BDFDB.disCN.modaltabcontentopen, this.props.className), + style: Object.assign({}, this.props.style, { + display: this.props.open ? null : "none" + }), + children: !this.props.open && !this.props.render ? null : this.props.children + })), ["display"]); + } + }; + InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.ModalComponents.ModalTabContent, {tab:"unnamed", render:true}); + + InternalComponents.LibraryComponents.NavItem = BDFDB.ModuleUtils.findByName("NavItem"); + + InternalComponents.LibraryComponents.PaginatedList = InternalBDFDB.loadPatchedComp("PaginatedList") || reactInitialized && class BDFDB_PaginatedList extends LibraryModules.React.Component { + jump(offset) { + if (offset > -1 && offset < Math.ceil(this.props.items.length/this.props.amount) && this.props.offset != offset) { + this.props.offset = offset; + BDFDB.ReactUtils.forceUpdate(this); + } + } + renderPagination() { + let maxOffset = Math.ceil(this.props.items.length/this.props.amount) - 1; + return this.props.items.length > this.props.amount && BDFDB.ReactUtils.createElement("nav", { + className: BDFDB.disCN.paginationlistpagination, + children: [ + BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, { + text: BDFDB.LanguageUtils.LibraryStrings.first, + "aria-label": BDFDB.LanguageUtils.LibraryStrings.first, + onClick: _ => {if (this.props.offset > 0) this.jump(0);}, + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.searchresultspaginationbutton, this.props.offset <= 0 && BDFDB.disCN.searchresultspaginationdisabled, BDFDB.disCN.focusable), + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, { + className: BDFDB.disCN.searchresultspaginationicon, + name: BDFDB.LibraryComponents.SvgIcon.Names.LEFT_DOUBLE_CARET + }) + }) + }), + BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, { + text: BDFDB.LanguageUtils.LanguageStrings.PAGINATION_PREVIOUS, + "aria-label": BDFDB.LanguageUtils.LanguageStrings.PAGINATION_PREVIOUS, + onClick: _ => {if (this.props.offset > 0) this.jump(this.props.offset - 1);}, + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.searchresultspaginationbutton, this.props.offset <= 0 && BDFDB.disCN.searchresultspaginationdisabled, BDFDB.disCN.focusable), + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, { + className: BDFDB.disCN.searchresultspaginationicon, + name: BDFDB.LibraryComponents.SvgIcon.Names.LEFT_CARET + }) + }) + }), + BDFDB.LanguageUtils.LanguageStringsFormat("PAGINATION_PAGE_OF", this.props.offset + 1, maxOffset + 1), + BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, { + text: BDFDB.LanguageUtils.LanguageStrings.PAGINATION_NEXT, + "aria-label": BDFDB.LanguageUtils.LanguageStrings.PAGINATION_NEXT, + onClick: _ => {if (this.props.offset < maxOffset) this.jump(this.props.offset + 1);}, + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.searchresultspaginationbutton, this.props.offset >= maxOffset && BDFDB.disCN.searchresultspaginationdisabled, BDFDB.disCN.focusable), + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, { + className: BDFDB.disCN.searchresultspaginationicon, + name: BDFDB.LibraryComponents.SvgIcon.Names.RIGHT_CARET + }) + }) + }), + BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, { + text: BDFDB.LanguageUtils.LibraryStrings.last, + "aria-label": BDFDB.LanguageUtils.LibraryStrings.last, + onClick: _ => {if (this.props.offset < maxOffset) this.jump(maxOffset);}, + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.searchresultspaginationbutton, this.props.offset >= maxOffset && BDFDB.disCN.searchresultspaginationdisabled, BDFDB.disCN.focusable), + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, { + className: BDFDB.disCN.searchresultspaginationicon, + name: BDFDB.LibraryComponents.SvgIcon.Names.RIGHT_DOUBLE_CARET + }) + }) + }), + BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextInput, { + key: "pagination-list-jumpinput", + type: "number", + size: BDFDB.LibraryComponents.TextInput.Sizes.MINI, + value: this.props.offset + 1, + min: 1, + max: maxOffset + 1, + onKeyDown: (event, instance) => {if (event.which == 13) this.jump(isNaN(parseInt(instance.props.value)) ? -1 : instance.props.value - 1);} + }), + BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, { + text: BDFDB.LanguageUtils.LanguageStrings.JUMP, + "aria-label": BDFDB.LanguageUtils.LanguageStrings.JUMP, + onClick: (event, instance) => { + let jumpInput = BDFDB.ReactUtils.findOwner(instance._reactInternalFiber.return, {key:"pagination-list-jumpinput"}); + if (jumpInput) this.jump(isNaN(parseInt(jumpInput.props.value)) ? -1 : jumpInput.props.value - 1); + }, + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, { + className: BDFDB.disCN.searchresultspaginationbutton, + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, { + className: BDFDB.disCN.searchresultspaginationicon, + style: {transform: "rotate(90deg"}, + name: BDFDB.LibraryComponents.SvgIcon.Names.RIGHT_CARET + }) + }) + }) + ] + }); + } + render() { + let items = [], alphabet = {}; + if (BDFDB.ArrayUtils.is(this.props.items) && this.props.items.length) { + if (!this.props.alphabetKey) items = this.props.items; + else { + let unsortedItems = [].concat(this.props.items); + for (let key of ["0-9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]) { + let numbers = key == "0-9", alphaItems = []; + for (let item of unsortedItems) if (item && item[this.props.alphabetKey] && (numbers && !isNaN(parseInt(item[this.props.alphabetKey][0])) || item[this.props.alphabetKey].toUpperCase().indexOf(key) == 0)) alphaItems.push(item); + for (let sortedItem of alphaItems) BDFDB.ArrayUtils.remove(unsortedItems, sortedItem); + alphabet[key] = {items:BDFDB.ArrayUtils.keySort(alphaItems, this.props.alphabetKey), disabled:!alphaItems.length}; + } + alphabet["?!"] = {items:BDFDB.ArrayUtils.keySort(unsortedItems, this.props.alphabetKey), disabled:!unsortedItems.length}; + for (let key in alphabet) items.push(alphabet[key].items); + items = items.flat(10); + } + } + return typeof this.props.renderItem != "function" || !items.length ? null : BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.paginationlist, + children: [ + this.renderPagination(), + items.length > this.props.amount && this.props.alphabetKey && BDFDB.ReactUtils.createElement("nav", { + className: BDFDB.disCN.paginationlistalphabet, + children: Object.keys(alphabet).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.paginationlistalphabetchar, alphabet[key].disabled &&BDFDB.disCN.paginationlistalphabetchardisabled), + onClick: _ => {if (!alphabet[key].disabled) this.jump(Math.floor(items.indexOf(alphabet[key].items[0])/this.props.amount));}, + children: key + })) + }), + this.props.header, + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.paginationlistcontent, + children: items.slice(this.props.offset * this.props.amount, (this.props.offset + 1) * this.props.amount).map((data, i) => {return this.props.renderItem(data, i);}).flat(10).filter(n => n) + }), + this.props.copyToBottom && this.renderPagination() + ].flat(10).filter(n => n) + }); + } + }; + InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.PaginatedList, {amount:50, offset:0}); + + InternalComponents.LibraryComponents.Popout = InternalBDFDB.loadPatchedComp("Popout") || reactInitialized && class BDFDB_Popout extends LibraryModules.React.Component { + componentWillUnmount() { + delete this.props.containerInstance.popout; + if (typeof this.props.onClose == "function") this.props.onClose(this.props.containerInstance, this); + } + render() { + let pos = typeof this.props.position == "string" ? this.props.position.toLowerCase() : null; + let positionClass = pos && DiscordClasses["popout" + pos] ? BDFDB.disCN["popout" + pos] : BDFDB.disCN.popouttop; + let arrowClass = !this.props.arrow ? BDFDB.disCN.popoutnoarrow : (pos && pos.indexOf("top") > -1 && pos != "top" ? BDFDB.disCN.popoutarrowalignmenttop : BDFDB.disCN.popoutarrowalignmentmiddle); + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.PopoutFocusLock, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.popoutwrapper, BDFDB.disCN.popout, positionClass, this.props.invert && pos && pos != "bottom" && BDFDB.disCN.popoutinvert, arrowClass, !this.props.shadow && BDFDB.disCN.popoutnoshadow), + id: this.props.id, + onClick: e => {e.stopPropagation();}, + style: Object.assign({}, this.props.style, { + position: this.props.isChild ? "relative" : "absolute" + }), + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(this.props.className, this.props.themed && BDFDB.disCN.popoutthemedpopout), + style: BDFDB.ObjectUtils.extract(this.props, "padding", "height", "maxHeight", "minHeight", "width", "maxWidth", "minWidth"), + children: this.props.children + }) + }); + } + }; + InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.Popout, {themed:true}); + + InternalComponents.LibraryComponents.PopoutContainer = InternalBDFDB.loadPatchedComp("PopoutContainer") || reactInitialized && class BDFDB_PopoutContainer extends LibraryModules.React.Component { + handleRender(e) { + let children = typeof this.props.renderPopout == "function" ? this.props.renderPopout(this) : null; + return this.popout = !children ? null : (!this.props.wrap ? children : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Popout, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + className: this.props.popoutClassName, + containerInstance: this, + isChild: true, + position: e.position, + style: this.props.popoutStyle, + onClose: typeof this.props.onClose == "function" ? this.props.onClose.bind(this) : _ => {}, + children: children + }), "popoutStyle", "popoutClassName"))); + } + componentDidMount() { + let basepopout = BDFDB.ReactUtils.findOwner(this, {name:"BasePopout"}); + if (!basepopout || !basepopout.handleClick) return; + basepopout.isBDFDBpopout = true; + this.handleClick = e => {return basepopout.handleClick(BDFDB.ObjectUtils.is(e) ? e : (new MouseEvent({})));}; + this.close = basepopout.close; + this.domElementRef = basepopout.domElementRef; + } + render() { + let child = (BDFDB.ArrayUtils.is(this.props.children) ? this.props.children[0] : this.props.children) || BDFDB.ReactUtils.createElement("div", {style: {height: "100%", width: "100%"}}); + child.props.className = BDFDB.DOMUtils.formatClassName(child.props.className, this.props.className); + let childClick = child.props.onClick, childContextMenu = child.props.onContextMenu; + child.props.onClick = (e, childThis) => { + if (!this.domElementRef.current || this.domElementRef.current.contains(e.target)) { + if ((this.props.openOnClick || this.props.openOnClick === undefined) && typeof this.handleClick == "function") this.handleClick(e); + if (typeof this.props.onClick == "function") this.props.onClick(e, this); + if (typeof childClick == "function") childClick(e, childThis); + } + else e.stopPropagation(); + }; + child.props.onContextMenu = (e, childThis) => { + if (!this.domElementRef.current || this.domElementRef.current.contains(e.target)) { + if (this.props.openOnContextMenu && typeof this.handleClick == "function") this.handleClick(e); + if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this); + if (typeof childContextMenu == "function") childContextMenu(e, childThis); + } + else e.stopPropagation(); + }; + return BDFDB.ReactUtils.createElement(LibraryModules.React.Fragment, { + children: BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.PopoutContainer, Object.assign({}, this.props, { + children: _ => {return child;}, + renderPopout: this.handleRender.bind(this) + })) + }); + } + }; + InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.PopoutContainer, {wrap:true}); + + InternalComponents.LibraryComponents.PopoutFocusLock = BDFDB.ModuleUtils.findByString("useFocusLock", "useImperativeHandle"); + + InternalComponents.LibraryComponents.PrivateChannelItems = BDFDB.ModuleUtils.findByProperties("DirectMessage", "GroupDM"); + + InternalComponents.LibraryComponents.QuickSelect = InternalBDFDB.loadPatchedComp("QuickSelect") || reactInitialized && class BDFDB_QuickSelect extends LibraryModules.React.Component { + handleChange(option) { + this.props.value = option; + if (typeof this.props.onChange == "function") this.props.onChange(option.value || option.key, this); + BDFDB.ReactUtils.forceUpdate(this); + } + render() { + let options = (BDFDB.ArrayUtils.is(this.props.options) ? this.props.options : [{}]).filter(n => n); + let selectedOption = BDFDB.ObjectUtils.is(this.props.value) ? this.props.value : (options[0] || {}); + return BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(this.props.className, BDFDB.disCN.quickselectwrapper), + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.quickselect, + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + children: [ + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.quickselectlabel, + children: this.props.label + }), + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + className: BDFDB.disCN.quickselectclick, + onClick: event => { + LibraryModules.ContextMenuUtils.openContextMenu(event, _ => { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Menu, { + navId: "bdfdb-quickselect", + onClose: BDFDB.LibraryModules.ContextMenuUtils.closeContextMenu, + className: this.props.popoutClassName, + children: BDFDB.ContextMenuUtils.createItem(InternalComponents.LibraryComponents.MenuItems.MenuGroup, { + children: options.map((option, i) => { + let selected = option.value && option.value === selectedOption.value || option.key && option.key === selectedOption.key; + return BDFDB.ContextMenuUtils.createItem(InternalComponents.LibraryComponents.MenuItems.MenuItem, { + label: option.label, + id: BDFDB.ContextMenuUtils.createItemId("option", option.key || option.value || i), + action: selected ? null : event2 => { + BDFDB.ContextMenuUtils.close(event2._targetInst); + this.handleChange.bind(this)(option) + } + }) + }) + }) + }); + }); + }, + children: [ + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.quickselectvalue, + children: typeof this.props.renderValue == "function" ? this.props.renderValue(this.props.value) : this.props.value.label + }), + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.quickselectarrow + }) + ] + }) + ] + }) + }); + } + }; + + InternalComponents.LibraryComponents.QuickSwitchItems = BDFDB.ModuleUtils.findByProperties("Channel", "GroupDM", "Header"); + + InternalComponents.LibraryComponents.QuickSwitchMenu = BDFDB.ModuleUtils.findByName("QuickSwitcher"); + + InternalComponents.LibraryComponents.RadioGroup = InternalBDFDB.loadPatchedComp("RadioGroup") || reactInitialized && class BDFDB_RadioGroup extends LibraryModules.React.Component { + handleChange(value) { + this.props.value = value.value; + if (typeof this.props.onChange == "function") this.props.onChange(value, this); + BDFDB.ReactUtils.forceUpdate(this); + } + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.RadioGroup, Object.assign({}, this.props, { + onChange: this.handleChange.bind(this) + })); + } + }; + + let AdvancedScrollers = BDFDB.ModuleUtils.findByProperties("AdvancedScrollerThin", "AdvancedScrollerAuto") || {}; + InternalComponents.LibraryComponents.ScrollerAuto = AdvancedScrollers.AdvancedScrollerAuto || AdvancedScrollers.default; + InternalComponents.LibraryComponents.ScrollerNone = AdvancedScrollers.AdvancedScrollerNone || AdvancedScrollers.default; + InternalComponents.LibraryComponents.ScrollerThin = AdvancedScrollers.AdvancedScrollerThin || AdvancedScrollers.default; + + InternalComponents.LibraryComponents.ScrollerVertical = BDFDB.ModuleUtils.findByName("VerticalScroller"); + + InternalComponents.LibraryComponents.SearchBar = InternalBDFDB.loadPatchedComp("SearchBar") || reactInitialized && class BDFDB_SearchBar extends LibraryModules.React.Component { + handleChange(query) { + this.props.query = query; + if (typeof this.props.onChange == "function") this.props.onChange(query, this); + BDFDB.ReactUtils.forceUpdate(this); + } + handleClear() { + this.props.query = ""; + if (this.props.changeOnClear && typeof this.props.onChange == "function") this.props.onChange("", this); + if (typeof this.props.onClear == "function") this.props.onClear(this); + BDFDB.ReactUtils.forceUpdate(this); + } + render() { + let props = Object.assign({}, this.props, { + onChange: this.handleChange.bind(this), + onClear: this.handleClear.bind(this) + }); + if (typeof props.query != "string") props.query = ""; + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.SearchBar, props); + } + }; + + InternalComponents.LibraryComponents.Select = InternalBDFDB.loadPatchedComp("Select") || reactInitialized && class BDFDB_Select extends LibraryModules.React.Component { + handleChange(value) { + this.props.value = value.value || value; + if (typeof this.props.onChange == "function") this.props.onChange(value, this); + BDFDB.ReactUtils.forceUpdate(this); + } + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.selectwrapper, + direction: InternalComponents.LibraryComponents.Flex.Direction.HORIZONTAL, + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + children: BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Select, Object.assign({}, this.props, { + onChange: this.handleChange.bind(this) + })) + }); + } + }; + + InternalComponents.LibraryComponents.SettingsGuildList = InternalBDFDB.loadPatchedComp("SettingsGuildList") || reactInitialized && class BDFDB_SettingsGuildList extends LibraryModules.React.Component { + render() { + this.props.disabled = BDFDB.ArrayUtils.is(this.props.disabled) ? this.props.disabled : []; + return BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Flex, { + className: this.props.className, + wrap: BDFDB.LibraryComponents.Flex.Wrap.WRAP, + children: [this.props.includeDMs && {name:"Direct Messages", acronym:"DMs", id:BDFDB.DiscordConstants.ME, getIconURL: _ => {}}].concat(BDFDB.LibraryModules.FolderStore.getFlattenedGuilds()).filter(n => n).map(guild => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, { + text: guild.name, + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(this.props.guildClassName, BDFDB.disCN.settingsguild, this.props.disabled.includes(guild.id) && BDFDB.disCN.settingsguilddisabled), + children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.GuildComponents.Icon, { + guild: guild, + size: this.props.size || BDFDB.LibraryComponents.GuildComponents.Icon.Sizes.MEDIUM + }), + onClick: e => { + let isDisabled = this.props.disabled.includes(guild.id); + if (isDisabled) BDFDB.ArrayUtils.remove(this.props.disabled, guild.id, true); + else this.props.disabled.push(guild.id); + if (typeof this.props.onClick == "function") this.props.onClick(this.props.disabled, this); + BDFDB.ReactUtils.forceUpdate(this); + } + }) + })) + }); + } + }; + + InternalComponents.LibraryComponents.SettingsPanel = InternalBDFDB.loadPatchedComp("SettingsPanel") || reactInitialized && class BDFDB_SettingsPanel extends LibraryModules.React.Component { + render() { + let headerItems = [ + this.props.title && BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, { + className: BDFDB.disCN.settingspaneltitle, + tag: InternalComponents.LibraryComponents.FormComponents.FormTitle.Tags.H2, + children: this.props.title + }), + this.props.controls && BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.settingspanelheadercontrols, + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + grow: 0, + children: this.props.controls + }) + ].flat(10).filter(n => n); + + let panelItems = [ + this.props.children + ].flat(10).filter(n => n); + + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL, + grow: 1, + children: [ + headerItems.length && [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.settingspanelheader, + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + children: headerItems + }), + panelItems.length && BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, { + className: BDFDB.disCNS.margintop4 + BDFDB.disCN.marginbottom8 + }) + ], + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.settingspanelinner, + direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL, + children: panelItems + }) + ].flat(10).filter(n => n) + }); + } + }; + + InternalComponents.LibraryComponents.SettingsPanelInner = InternalBDFDB.loadPatchedComp("SettingsPanelInner") || reactInitialized && class BDFDB_SettingsPanelInner extends LibraryModules.React.Component { + render() { + return this.props.children ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: this.props.className, + direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL, + children: [ + !this.props.first ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, { + className: BDFDB.disCN.marginbottom8 + }) : null, + typeof this.props.title == "string" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, { + className: BDFDB.disCN.marginbottom4, + tag: InternalComponents.LibraryComponents.FormComponents.FormTitle.Tags.H3, + children: this.props.title + }) : null, + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.settingspanellist, + direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL, + children: this.props.children + }), + !this.props.last ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, { + className: BDFDB.disCN.marginbottom20 + }) : null + ] + }) : null; + } + }; + + InternalComponents.LibraryComponents.SettingsItem = InternalBDFDB.loadPatchedComp("SettingsItem") || reactInitialized && class BDFDB_SettingsItem extends LibraryModules.React.Component { + handleChange(value) { + if (typeof this.props.onChange == "function") this.props.onChange(value, this); + } + render() { + if (typeof this.props.type != "string" || !["BUTTON", "SELECT", "SWITCH", "TEXTINPUT"].includes(this.props.type.toUpperCase())) return null; + let childcomponent = InternalComponents.LibraryComponents[this.props.type]; + if (!childcomponent) return null; + if (this.props.mini && childcomponent.Sizes) this.props.size = childcomponent.Sizes.MINI || childcomponent.Sizes.MIN; + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.DOMUtils.formatClassName(this.props.className, this.props.disabled && BDFDB.disCN.disabled), + id: this.props.id, + direction: InternalComponents.LibraryComponents.Flex.Direction.VERTICAL, + align: InternalComponents.LibraryComponents.Flex.Align.STRETCH, + grow: this.props.grow, + stretch: this.props.stretch, + children: [ + this.props.dividertop ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, { + className: this.props.mini ? BDFDB.disCN.marginbottom4 : BDFDB.disCN.marginbottom8 + }) : null, + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + children: [ + this.props.label ? (this.props.tag ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormTitle, { + className: BDFDB.DOMUtils.formatClassName(this.props.labelClassName, BDFDB.disCN.marginreset), + tag: this.props.tag, + children: this.props.label + }) : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, { + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SettingsLabel, { + className: this.props.labelClassName, + mini: this.props.mini, + label: this.props.label + }) + })) : null, + this.props.labelchildren, + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, { + grow: 0, + shrink: this.props.basis ? 0 : 1, + basis: this.props.basis, + wrap: true, + children: BDFDB.ReactUtils.createElement(childcomponent, BDFDB.ObjectUtils.exclude(Object.assign(BDFDB.ObjectUtils.exclude(this.props, "className", "id", "type"), this.props.childProps, {onChange: this.handleChange.bind(this)}), "grow", "stretch", "basis", "dividerbottom", "dividertop", "label", "labelClassName", "labelchildren", "tag", "mini", "note", "childProps")) + }) + ].flat(10).filter(n => n) + }), + typeof this.props.note == "string" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, { + className: BDFDB.disCN.note, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormText, { + disabled: this.props.disabled, + type: InternalComponents.LibraryComponents.FormComponents.FormText.Types.DESCRIPTION, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextScroller, {speed: 2, children: this.props.note}) + }) + }) : null, + this.props.dividerbottom ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FormComponents.FormDivider, { + className: this.props.mini ? BDFDB.disCN.margintop4 : BDFDB.disCN.margintop8 + }) : null + ] + }); + } + }; + + InternalComponents.LibraryComponents.SettingsLabel = InternalBDFDB.loadPatchedComp("SettingsLabel") || reactInitialized && class BDFDB_SettingsLabel extends LibraryModules.React.Component { + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextScroller, { + className: BDFDB.DOMUtils.formatClassName(this.props.className, this.props.mini ? BDFDB.disCN.titlemini : BDFDB.disCN.titledefault, BDFDB.disCN.cursordefault), + speed: 2, + children: this.props.label + }); + } + }; + + InternalComponents.LibraryComponents.SettingsList = InternalBDFDB.loadPatchedComp("SettingsList") || reactInitialized && class BDFDB_SettingsList extends LibraryModules.React.Component { + componentDidMount() { + let list = BDFDB.ReactUtils.findDOMNode(this); + if (list && !this.props.maxWidth) { + let headers = Array.from(list.querySelectorAll(BDFDB.dotCN.settingstableheader)); + headers.shift(); + if (BDFDB.DOMUtils.getRects(headers[0]).width == 0) BDFDB.TimeUtils.timeout(_ => {this.resizeList(list, headers);}); + else this.resizeList(list, headers); + } + } + resizeList(list, headers) { + let maxWidth = 0, biggestWidth = 0; + if (!maxWidth) { + for (let header of headers) { + header.style = ""; + let width = BDFDB.DOMUtils.getRects(header).width; + maxWidth = width > maxWidth ? width : maxWidth; + } + maxWidth += 4; + biggestWidth = maxWidth; + } + if (headers.length * maxWidth > 300) { + this.props.vertical = true; + maxWidth = parseInt(290 / headers.length); + } + else if (maxWidth < 36) { + maxWidth = 36; + biggestWidth = maxWidth; + } + this.props.maxWidth = maxWidth; + this.props.biggestWidth = biggestWidth; + this.props.fullWidth = BDFDB.DOMUtils.getRects(list).width; + BDFDB.ReactUtils.forceUpdate(this); + } + render() { + this.props.settings = BDFDB.ArrayUtils.is(this.props.settings) ? this.props.settings : []; + this.props.renderLabel = typeof this.props.renderLabel == "function" ? this.props.renderLabel : data => data.label; + this.props.data = (BDFDB.ArrayUtils.is(this.props.data) ? this.props.data : [{}]).filter(n => n); + let labelWidth = this.props.maxWidth && this.props.fullWidth && (this.props.fullWidth - 20 - (this.props.maxWidth * this.props.settings.length)); + let configWidth = this.props.maxWidth && this.props.maxWidth * this.props.settings.length; + let isHeaderClickable = typeof this.props.onHeaderClick == "function" || typeof this.props.onHeaderContextMenu == "function"; + let renderItem = data => BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Card, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + className: BDFDB.DOMUtils.formatClassName([this.props.cardClassName, data.className].filter(n => n).join(" ").indexOf(BDFDB.disCN.card) == -1 && BDFDB.disCN.cardprimaryoutline, BDFDB.disCN.settingstablecard, this.props.cardClassName, data.className), + cardId: data.key, + backdrop: false, + style: Object.assign({}, this.props.cardStyle, data.style), + children: [ + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.settingstablecardlabel, + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + grow: 0, + shrink: 0, + basis: labelWidth || "auto", + style: {maxWidth: labelWidth || null}, + children: this.props.renderLabel(data) + }), + BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.settingstablecardconfigs, + justify: InternalComponents.LibraryComponents.Flex.Justify.AROUND, + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + grow: 0, + shrink: 0, + basis: configWidth || "auto", + style: {maxWidth: configWidth || null}, + children: this.props.settings.map(setting => BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, { + className: BDFDB.disCN.checkboxcontainer, + grow: 0, + shrink: 0, + wrap: true, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Checkbox, { + disabled: data.disabled, + cardId: data.key, + settingId: setting, + shape: InternalComponents.LibraryComponents.Checkbox.Shapes.ROUND, + type: InternalComponents.LibraryComponents.Checkbox.Types.INVERTED, + value: data[setting], + onChange: this.props.onCheckboxChange + }) + })).flat(10).filter(n => n) + }) + ] + }), "title", "data", "settings", "renderLabel", "cardClassName", "cardStyle", "onCheckboxChange", "maxWidth", "fullWidth", "pagination")); + let header = BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + className: BDFDB.disCN.settingstableheaders, + align: InternalComponents.LibraryComponents.Flex.Align.STRETCH, + style: this.props.vertical && this.props.biggestWidth ? { + marginTop: this.props.biggestWidth - 15 || 0 + } : {}, + children: [].concat(this.props.title || "", this.props.settings).map((setting, i) => BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(i == 0 ? BDFDB.disCN.settingstableheadername : BDFDB.disCN.settingstableheaderoption, i != 0 && this.props.vertical && BDFDB.disCN.settingstableheadervertical, BDFDB.disCN.colorbase, BDFDB.disCN.size10, isHeaderClickable && BDFDB.disCN.cursorpointer), + onClick: _ => {if (typeof this.props.onHeaderClick == "function") this.props.onHeaderClick(setting, this);}, + onContextMenu: _ => {if (typeof this.props.onHeaderContextMenu == "function") this.props.onHeaderContextMenu(setting, this);}, + style: i != 0 && this.props.maxWidth ? { + maxWidth: this.props.maxWidth, + width: this.props.maxWidth, + flex: `0 0 ${this.props.maxWidth}px` + } : {}, + children: BDFDB.ReactUtils.createElement("span", { + children: setting + }) + })) + }); + let usePagination = BDFDB.ObjectUtils.is(this.props.pagination); + return !this.props.data.length ? null : BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.settingstablelist, this.props.className), + children: [ + !usePagination && header, + !usePagination ? this.props.data.map(renderItem) : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.PaginatedList, Object.assign({}, this.props.pagination, { + header: header, + items: this.props.data, + renderItem: renderItem + })) + ].filter(n => n) + }); + } + }; + + InternalComponents.LibraryComponents.SettingsSaveItem = InternalBDFDB.loadPatchedComp("SettingsSaveItem") || reactInitialized && class BDFDB_SettingsSaveItem extends LibraryModules.React.Component { + saveSettings(value) { + if (!BDFDB.ArrayUtils.is(this.props.keys) || !BDFDB.ObjectUtils.is(this.props.plugin)) return; + let keys = this.props.keys.filter(n => n); + let option = keys.shift(); + if (BDFDB.ObjectUtils.is(this.props.plugin) && option) { + let data = BDFDB.DataUtils.load(this.props.plugin, option); + let newdata = ""; + for (let key of keys) newdata += `{"${key}":`; + value = value != null && value.value != null ? value.value : value; + let isString = typeof value == "string"; + let marker = isString ? `"` : ``; + newdata += (marker + (isString ? value.replace(/\\/g, "\\\\") : value) + marker) + "}".repeat(keys.length); + newdata = JSON.parse(newdata); + BDFDB.DataUtils.save(BDFDB.ObjectUtils.is(newdata) ? BDFDB.ObjectUtils.deepAssign({}, data, newdata) : newdata, this.props.plugin, option); + this.props.plugin.SettingsUpdated = true; + } + if (typeof this.props.onChange == "function") this.props.onChange(value, this); + } + render() { + if (typeof this.props.type != "string" || !["SELECT", "SWITCH", "TEXTINPUT"].includes(this.props.type.toUpperCase())) return null; + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.SettingsItem, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + onChange: this.saveSettings.bind(this) + }), "keys", "plugin")); + } + }; + + InternalComponents.LibraryComponents.Slider = InternalBDFDB.loadPatchedComp("Slider") || reactInitialized && class BDFDB_Slider extends LibraryModules.React.Component { + handleValueChange(value) { + let newValue = BDFDB.ArrayUtils.is(this.props.edges) && this.props.edges.length == 2 ? BDFDB.NumberUtils.mapRange([0, 100], this.props.edges, value) : value; + if (typeof this.props.digits == "number") newValue = Math.round(newValue * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits); + this.props.defaultValue = newValue; + if (typeof this.props.onValueChange == "function") this.props.onValueChange(newValue, this); + BDFDB.ReactUtils.forceUpdate(this); + } + handleValueRender(value) { + let newValue = BDFDB.ArrayUtils.is(this.props.edges) && this.props.edges.length == 2 ? BDFDB.NumberUtils.mapRange([0, 100], this.props.edges, value) : value; + if (typeof this.props.digits == "number") newValue = Math.round(newValue * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits); + if (typeof this.props.onValueRender == "function") { + let tempReturn = this.props.onValueRender(newValue, this); + if (tempReturn != undefined) newValue = tempReturn; + } + return newValue; + } + render() { + let defaultValue = BDFDB.ArrayUtils.is(this.props.edges) && this.props.edges.length == 2 ? BDFDB.NumberUtils.mapRange(this.props.edges, [0, 100], this.props.defaultValue) : this.props.defaultValue; + if (typeof this.props.digits == "number") defaultValue = Math.round(defaultValue * Math.pow(10, this.props.digits)) / Math.pow(10, this.props.digits); + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Slider, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + initialValue: defaultValue, + onValueChange: this.handleValueChange.bind(this), + onValueRender: this.handleValueRender.bind(this) + }), "digits", "edges")); + } + }; + + InternalComponents.LibraryComponents.Spinner = BDFDB.ModuleUtils.findByName("Spinner"); + + InternalComponents.LibraryComponents.SvgIcon = InternalBDFDB.loadPatchedComp("SvgIcon") || reactInitialized && class BDFDB_Icon extends LibraryModules.React.Component { + render() { + if (BDFDB.ObjectUtils.is(this.props.name)) { + if (this.props.className) this.props.nativeClass = true; + this.props.iconSVG = this.props.name.icon; + let props = Object.assign({ + width: 24, + height: 24, + color: "currentColor" + }, this.props.name.defaultProps, this.props); + for (let key in props) this.props.iconSVG = this.props.iconSVG.replace(new RegExp(`%%${key}`, "g"), props[key]); + } + if (this.props.iconSVG) { + let icon = BDFDB.ReactUtils.elementToReact(BDFDB.DOMUtils.create(this.props.iconSVG)); + if (BDFDB.ReactUtils.isValidElement(icon)) { + icon.props.className = BDFDB.DOMUtils.formatClassName(!this.props.nativeClass && BDFDB.disCN.svgicon, icon.props.className, this.props.className); + icon.props.style = Object.assign({}, icon.props.style, this.props.style); + icon.props = Object.assign({}, BDFDB.ObjectUtils.extract(this.props, "onClick", "onContextMenu", "onMouseDown", "onMouseUp", "onMouseEnter", "onMouseLeave"), icon.props); + return icon; + } + } + return null; + } + }; + InternalComponents.LibraryComponents.SvgIcon.Names = { + CHANGELOG: { + icon: `` + }, + CHECKBOX: { + defaultProps: { + background: "", + foreground: "" + }, + icon: `` + }, + CHECKBOX_EMPTY: { + defaultProps: { + foreground: "" + }, + icon: `` + }, + CHECKMARK: { + defaultProps: { + width: 18, + height: 18 + }, + icon: `` + }, + CLOSE: { + defaultProps: { + width: 12, + height: 12 + }, + icon: `` + }, + CLOSE_CIRCLE: { + icon: `` + }, + COG: { + defaultProps: { + width: 20, + height: 20 + }, + icon: `` + }, + CROWN: { + icon: `` + }, + DROPPER: { + defaultProps: { + width: 16, + height: 16, + foreground: "" + }, + icon: `` + }, + FOLDER: { + icon: `` + }, + GITHUB: { + icon: `` + }, + GRADIENT: { + defaultProps: { + width: 36, + height: 36 + }, + icon: `` + }, + LEFT_CARET: { + icon: `` + }, + LEFT_DOUBLE_CARET: { + icon: `` + }, + LOCK_CLOSED: { + icon: `` + }, + NOVA_AT: { + icon: `` + }, + NOVA_PIN: { + icon: `` + }, + NOVA_TRASH: { + icon: `` + }, + PENCIL: { + defaultProps: { + width: 16, + height: 16 + }, + icon: `` + }, + PIN: { + defaultProps: { + width: 16, + height: 16 + }, + icon: `` + }, + RAW_TEXT: { + icon: `` + }, + RIGHT_CARET: { + icon: `` + }, + RIGHT_DOUBLE_CARET: { + icon: `` + }, + SEARCH: { + defaultProps: { + width: 18, + height: 18 + }, + icon: `` + }, + SPEAKER: { + icon: `` + }, + STREAM: { + icon: `` + } + }; + + InternalComponents.LibraryComponents.Switch = InternalBDFDB.loadPatchedComp("Switch") || reactInitialized && class BDFDB_Switch extends LibraryModules.React.Component { + handleChange() { + this.props.value = !this.props.value; + if (typeof this.props.onChange == "function") this.props.onChange(this.props.value, this); + BDFDB.ReactUtils.forceUpdate(this); + } + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Switch, Object.assign({}, this.props, {onChange: this.handleChange.bind(this)})); + } + }; + + InternalComponents.LibraryComponents.TabBar = InternalBDFDB.loadPatchedComp("TabBar") || reactInitialized && class BDFDB_TabBar extends LibraryModules.React.Component { + handleItemSelect(item) { + this.props.selectedItem = item; + if (typeof this.props.onItemSelect == "function") this.props.onItemSelect(item, this); + BDFDB.ReactUtils.forceUpdate(this); + } + render() { + let items = (BDFDB.ArrayUtils.is(this.props.items) ? this.props.items : [{}]).filter(n => n); + let selectedItem = this.props.selectedItem || (items[0] || {}).value; + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.TabBar, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + selectedItem: selectedItem, + onItemSelect: this.handleItemSelect.bind(this), + children: items.map(data => { + return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TabBar.Item, { + className: BDFDB.DOMUtils.formatClassName(this.props.itemClassName, selectedItem == data.value && this.props.itemSelectedClassName), + itemType: this.props.type, + id: data.value, + children: data.label || data.value, + "aria-label": data.label || data.value + }) + }) + }), "itemClassName", "items")); + } + }; + + InternalComponents.NativeSubComponents.TabBar = BDFDB.ModuleUtils.findByName("TabBar"); + + InternalComponents.LibraryComponents.Table = InternalBDFDB.loadPatchedComp("Table") || reactInitialized && class BDFDB_Table extends LibraryModules.React.Component { + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.Table, Object.assign({}, this.props, { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.table, this.props.className), + headerClassName: BDFDB.DOMUtils.formatClassName(this.props.stickyHeader ? BDFDB.disCN.tablestickyheader : BDFDB.disCN.tableheader, this.props.headerClassName), + headerCellClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tableheadercell, this.props.headerCellClassName), + sortedHeaderCellClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tableheadercellsorted, this.props.sortedHeaderCellClassName), + bodyCellClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tablebodycell, this.props.bodyCellClassName), + rowClassName: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tablerow, this.props.rowClassName), + onSort: (sortKey, sortDirection) => { + this.props.sortDirection = this.props.sortKey != sortKey && sortDirection == InternalComponents.LibraryComponents.Table.SortDirection.ASCENDING && this.props.columns.filter(n => n.key == sortKey)[0].reverse ? InternalComponents.LibraryComponents.Table.SortDirection.DESCENDING : sortDirection; + this.props.sortKey = sortKey; + this.props.data = BDFDB.ArrayUtils.keySort(this.props.data, this.props.sortKey); + if (this.props.sortDirection == InternalComponents.LibraryComponents.Table.SortDirection.DESCENDING) this.props.data.reverse(); + if (typeof this.props.onSort == "function") this.props.onSort(this.props.sortKey, this.props.sortDirection); + BDFDB.ReactUtils.forceUpdate(this); + } + })); + } + }; + + InternalComponents.LibraryComponents.TextArea = InternalBDFDB.loadPatchedComp("TextArea") || reactInitialized && class BDFDB_TextArea extends LibraryModules.React.Component { + handleChange(e) { + this.props.value = e; + if (typeof this.props.onChange == "function") this.props.onChange(e, this); + BDFDB.ReactUtils.forceUpdate(this); + } + handleBlur(e) {if (typeof this.props.onBlur == "function") this.props.onBlur(e, this);} + handleFocus(e) {if (typeof this.props.onFocus == "function") this.props.onFocus(e, this);} + render() { + return BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.TextArea, Object.assign({}, this.props, { + onChange: this.handleChange.bind(this), + onBlur: this.handleBlur.bind(this), + onFocus: this.handleFocus.bind(this) + })); + } + }; + + InternalComponents.LibraryComponents.TextElement = BDFDB.ModuleUtils.findByName("Text"); + + InternalComponents.LibraryComponents.TextGradientElement = InternalBDFDB.loadPatchedComp("TextGradientElement") || reactInitialized && class BDFDB_TextGradientElement extends LibraryModules.React.Component { + render() { + if (this.props.gradient && this.props.children) return BDFDB.ReactUtils.createElement("span", { + children: this.props.children, + ref: instance => { + let ele = BDFDB.ReactUtils.findDOMNode(instance); + if (ele) { + ele.style.setProperty("background-image", this.props.gradient, "important"); + ele.style.setProperty("color", "transparent", "important"); + ele.style.setProperty("-webkit-background-clip", "text", "important"); + } + } + }); + return this.props.children || null; + } + }; + + InternalComponents.LibraryComponents.TextInput = InternalBDFDB.loadPatchedComp("TextInput") || reactInitialized && class BDFDB_TextInput extends LibraryModules.React.Component { + handleChange(e) { + let value = e = BDFDB.ObjectUtils.is(e) ? e.currentTarget.value : e; + this.props.value = this.props.valuePrefix && !value.startsWith(this.props.valuePrefix) ? (this.props.valuePrefix + value) : value; + if (typeof this.props.onChange == "function") this.props.onChange(this.props.value, this); + BDFDB.ReactUtils.forceUpdate(this); + } + handleInput(e) {if (typeof this.props.onInput == "function") this.props.onInput(BDFDB.ObjectUtils.is(e) ? e.currentTarget.value : e, this);} + handleKeyDown(e) {if (typeof this.props.onKeyDown == "function") this.props.onKeyDown(e, this);} + handleBlur(e) {if (typeof this.props.onBlur == "function") this.props.onBlur(e, this);} + handleFocus(e) {if (typeof this.props.onFocus == "function") this.props.onFocus(e, this);} + handleMouseEnter(e) {if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this);} + handleMouseLeave(e) {if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this);} + handleNumberButton(ins, value) { + BDFDB.TimeUtils.clear(ins.pressedTimeout); + ins.pressedTimeout = BDFDB.TimeUtils.timeout(_ => { + delete this.props.focused; + BDFDB.ReactUtils.forceUpdate(this); + }, 1000); + this.props.focused = true; + this.handleChange.bind(this)(value); + this.handleInput.bind(this)(value); + } + componentDidMount() { + if (this.props.type == "file") { + let navigatorInstance = BDFDB.ReactUtils.findOwner(this, {name: "BDFDB_FileButton"}); + if (navigatorInstance) navigatorInstance.refInput = this; + } + let input = BDFDB.ReactUtils.findDOMNode(this); + if (!input) return; + input = input.querySelector("input") || input; + if (input && !input.patched) { + input.addEventListener("keydown", e => { + this.handleKeyDown.bind(this)(e); + e.stopImmediatePropagation(); + }); + input.patched = true; + } + } + render() { + let inputChildren = [ + BDFDB.ReactUtils.createElement("input", BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, { + className: BDFDB.DOMUtils.formatClassName(this.props.size && InternalComponents.LibraryComponents.TextInput.Sizes[this.props.size.toUpperCase()] && BDFDB.disCN["input" + this.props.size.toLowerCase()] || BDFDB.disCN.inputdefault, this.props.inputClassName, this.props.focused && BDFDB.disCN.inputfocused, this.props.error || this.props.errorMessage ? BDFDB.disCN.inputerror : (this.props.success && BDFDB.disCN.inputsuccess), this.props.disabled && BDFDB.disCN.inputdisabled, this.props.editable && BDFDB.disCN.inputeditable), + type: this.props.type == "color" || this.props.type == "file" ? "text" : this.props.type, + onChange: this.handleChange.bind(this), + onInput: this.handleInput.bind(this), + onKeyDown: this.handleKeyDown.bind(this), + onBlur: this.handleBlur.bind(this), + onFocus: this.handleFocus.bind(this), + onMouseEnter: this.handleMouseEnter.bind(this), + onMouseLeave: this.handleMouseLeave.bind(this), + maxLength: this.props.type == "file" ? false : this.props.maxLength, + ref: this.props.inputRef + }), "errorMessage", "focused", "error", "success", "inputClassName", "inputChildren", "valuePrefix", "inputPrefix", "size", "editable", "inputRef", "style", "mode", "filter", "useFilePath", "useFilepath")), + this.props.inputChildren, + this.props.type == "color" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, { + wrap: true, + children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ColorSwatches, { + colors: [], + color: this.props.value && this.props.mode == "comp" ? BDFDB.ColorUtils.convert(this.props.value.split(","), "RGB") : this.props.value, + onColorChange: color => { + this.handleChange(!color ? "" : (this.props.mode == "comp" ? BDFDB.ColorUtils.convert(color, "RGBCOMP").slice(0, 3).join(",") : color)); + }, + pickerConfig: {gradient:false, alpha:this.props.mode != "comp"} + }) + }) : null, + this.props.type == "file" ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.FileButton, { + filter: this.props.filter, + mode: this.props.mode, + useFilePath: this.props.useFilePath || this.props.useFilepath, + }) : null + ].flat(10).filter(n => n); + + return BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.inputwrapper, this.props.type == "number" && (this.props.size && InternalComponents.LibraryComponents.TextInput.Sizes[this.props.size.toUpperCase()] && BDFDB.disCN["inputnumberwrapper" + this.props.size.toLowerCase()] || BDFDB.disCN.inputnumberwrapperdefault), this.props.className), + style: this.props.style, + children: [ + this.props.inputPrefix ? BDFDB.ReactUtils.createElement("span", { + className: BDFDB.disCN.inputprefix + }) : null, + this.props.type == "number" ? BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.inputnumberbuttons, + children: [ + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.inputnumberbuttonup, + onClick: e => { + let min = parseInt(this.props.min); + let max = parseInt(this.props.max); + let newv = parseInt(this.props.value) + 1 || min || 0; + if (isNaN(max) || !isNaN(max) && newv <= max) this.handleNumberButton.bind(this)(e._targetInst, isNaN(min) || !isNaN(min) && newv >= min ? newv : min); + } + }), + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.inputnumberbuttondown, + onClick: e => { + let min = parseInt(this.props.min); + let max = parseInt(this.props.max); + let newv = parseInt(this.props.value) - 1 || min || 0; + if (isNaN(min) || !isNaN(min) && newv >= min) this.handleNumberButton.bind(this)(e._targetInst, isNaN(max) || !isNaN(max) && newv <= max ? newv : max); + } + }) + ] + }) : null, + inputChildren.length == 1 ? inputChildren[0] : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { + align: InternalComponents.LibraryComponents.Flex.Align.CENTER, + children: inputChildren.map((child, i) => i != 0 ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {shrink: 0, children: child}) : child) + }), + this.props.errorMessage ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, { + className: BDFDB.disCN.carderror, + size: InternalComponents.LibraryComponents.TextElement.Sizes.SIZE_12, + color: InternalComponents.LibraryComponents.TextElement.Colors.STATUS_RED, + children: this.props.errorMessage + }) : null + ].filter(n => n) + }); + } + }; + + InternalComponents.LibraryComponents.TextScroller = InternalBDFDB.loadPatchedComp("TextScroller") || reactInitialized && class BDFDB_TextScroller extends LibraryModules.React.Component { + render() { + return BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.textscroller, this.props.className), + style: Object.assign({}, this.props.style, { + position: "relative", + display: "block", + overflow: "hidden" + }), + ref: instance => { + let ele = BDFDB.ReactUtils.findDOMNode(instance); + if (ele && ele.parentElement) { + let maxWidth = BDFDB.DOMUtils.getInnerWidth(ele.parentElement); + if (maxWidth > 50) ele.style.setProperty("max-width", `${maxWidth}px`); + BDFDB.TimeUtils.timeout(_ => { + if (document.contains(ele.parentElement)) { + let newMaxWidth = BDFDB.DOMUtils.getInnerWidth(ele.parentElement); + if (newMaxWidth > maxWidth) ele.style.setProperty("max-width", `${newMaxWidth}px`); + } + }, 3000); + let Animation = new LibraryModules.AnimationUtils.Value(0); + Animation + .interpolate({inputRange:[0, 1], outputRange:[0, (BDFDB.DOMUtils.getRects(ele.firstElementChild).width - BDFDB.DOMUtils.getRects(ele).width) * -1]}) + .addListener(v => {ele.firstElementChild.style.setProperty("left", v.value + "px", "important");}); + this.scroll = p => { + let w = p + parseFloat(ele.firstElementChild.style.getPropertyValue("left")) / (BDFDB.DOMUtils.getRects(ele.firstElementChild).width - BDFDB.DOMUtils.getRects(ele).width); + w = isNaN(w) || !isFinite(w) ? p : w; + w *= BDFDB.DOMUtils.getRects(ele.firstElementChild).width / (BDFDB.DOMUtils.getRects(ele).width * 2); + LibraryModules.AnimationUtils.parallel([LibraryModules.AnimationUtils.timing(Animation, {toValue:p, duration:Math.sqrt(w**2) * 4000 / (parseInt(this.props.speed) || 1)})]).start(); + } + } + }, + onClick: e => { + if (typeof this.props.onClick == "function") this.props.onClick(e, this); + }, + onMouseEnter: e => { + if (BDFDB.DOMUtils.getRects(e.currentTarget).width < BDFDB.DOMUtils.getRects(e.currentTarget.firstElementChild).width) { + this.scrolling = true; + e.currentTarget.firstElementChild.style.setProperty("display", "block", "important"); + this.scroll(1); + } + }, + onMouseLeave: e => { + if (this.scrolling) { + delete this.scrolling; + e.currentTarget.firstElementChild.style.setProperty("display", "inline", "important"); + this.scroll(0); + } + }, + children: BDFDB.ReactUtils.createElement("div", { + style: { + left: "0", + position: "relative", + display: "inline", + whiteSpace: "nowrap" + }, + children: this.props.children + }) + }); + } + }; + InternalComponents.LibraryComponents.TooltipContainer = InternalBDFDB.loadPatchedComp("TooltipContainer") || reactInitialized && class BDFDB_TooltipContainer extends LibraryModules.React.Component { + render() { + let child = (BDFDB.ArrayUtils.is(this.props.children) ? this.props.children[0] : this.props.children) || BDFDB.ReactUtils.createElement("div", {}); + child.props.className = BDFDB.DOMUtils.formatClassName(child.props.className, this.props.className); + let childMouseEnter = child.props.onMouseEnter, childMouseLeave = child.props.onMouseLeave, childClick = child.props.onClick, childContextMenu = child.props.onContextMenu; + let shown = false; + child.props.onMouseEnter = (e, childThis) => { + if (!shown) { + shown = true; + BDFDB.TooltipUtils.create(e.currentTarget, this.props.text, Object.assign({delay: this.props.delay}, this.props.tooltipConfig)); + if (typeof this.props.onMouseEnter == "function") this.props.onMouseEnter(e, this); + if (typeof childMouseEnter == "function") childMouseEnter(e, childThis); + } + }; + child.props.onMouseLeave = (e, childThis) => { + shown = false; + if (typeof this.props.onMouseLeave == "function") this.props.onMouseLeave(e, this); + if (typeof childMouseLeave == "function") childMouseLeave(e, childThis); + }; + child.props.onClick = (e, childThis) => { + if (typeof this.props.onClick == "function") this.props.onClick(e, this); + if (typeof childClick == "function") childClick(e, childThis); + }; + child.props.onContextMenu = (e, childThis) => { + if (typeof this.props.onContextMenu == "function") this.props.onContextMenu(e, this); + if (typeof childContextMenu == "function") childContextMenu(e, childThis); + }; + return BDFDB.ReactUtils.createElement(LibraryModules.React.Fragment, { + children: child + }); + } + }; + + InternalComponents.LibraryComponents.UserSummaryItem = BDFDB.ModuleUtils.findByName("UserSummaryItem"); + + for (let type in InternalComponents.NativeSubComponents) if (InternalComponents.LibraryComponents[type]) for (let key in InternalComponents.NativeSubComponents[type]) if (key != "displayName" && key != "name" && (typeof InternalComponents.NativeSubComponents[type][key] != "function" || key.charAt(0) == key.charAt(0).toUpperCase())) { + if (key == "defaultProps") InternalComponents.LibraryComponents[type][key] = Object.assign({}, InternalComponents.LibraryComponents[type][key], InternalComponents.NativeSubComponents[type][key]); + else InternalComponents.LibraryComponents[type][key] = InternalComponents.NativeSubComponents[type][key]; + } + BDFDB.LibraryComponents = Object.assign({}, InternalComponents.LibraryComponents); + + BDFDB.DOMUtils.appendLocalStyle("BDFDB", ` + @import url(https://mwittrien.github.io/BetterDiscordAddons/Themes/res/SupporterBadge.css); + + img:not([src]), img[src=""], img[src="null"] { + opacity: 0; + } + + ${BDFDB.dotCN.loadingiconwrapper} { + position: absolute; + bottom: 0; + right: 0; + z-index: 1000; + animation: loadingwrapper-fade 3s infinite ease; + } + ${BDFDB.dotCNS.loadingiconwrapper + BDFDB.dotCN.loadingicon} { + margin: 0 5px; + } + @keyframes loadingwrapper-fade { + from {opacity: 0.1;} + 50% {opacity: 0.9;} + to {opacity: 0.1;} + } + + ${BDFDB.dotCN.settingspanelheader} { + padding-right: 5px; + } + ${BDFDB.dotCN.settingspanelheadercontrols} > * { + margin-left: 8px; + } + ${BDFDB.dotCN.settingspanelheaderbutton} { + height: 24px; + } + ${BDFDB.dotCN.settingspanelinner} { + padding-left: 15px; + padding-right: 5px; + } + ${BDFDB.dotCN.settingspanellist} { + padding-left: 15px; + } + + ${BDFDB.dotCN.collapsecontainer} { + margin-bottom: 20px; + } + ${BDFDB.dotCN.collapsecontainermini} { + margin-bottom: 8px; + } + ${BDFDB.dotCN.collapsecontainerheader} { + margin-bottom: 4px; + } + ${BDFDB.dotCNS.collapsecontainercollapsed + BDFDB.dotCN.collapsecontainertitle} { + margin-bottom: 0; + } + ${BDFDB.dotCN.collapsecontainertitle} { + display: flex; + justify-content: space-between; + align-items: center; + cursor: pointer; + order: 1; + } + ${BDFDB.dotCN.collapsecontainertitle}:hover { + color: var(--text-normal); + } + ${BDFDB.dotCN.collapsecontainertitle}::before { + content: ""; + flex: 1 1 auto; + background-color: currentColor; + height: 2px; + margin: 0 10px 0 15px; + opacity: 0.2; + order: 2; + } + ${BDFDB.dotCN.collapsecontainertitle}::after { + content: ""; + -webkit-mask: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K) center/cover no-repeat; + background-color: currentColor; + width: 20px; + height: 20px; + order: 3; + transition: transform .3s ease; + transform: rotate(0); + } + ${BDFDB.dotCNS.collapsecontainercollapsed + BDFDB.dotCN.collapsecontainertitle}::after { + transform: rotate(90deg) + } + ${BDFDB.dotCN.collapsecontainerinner} { + padding-left: 15px; + } + + ${BDFDB.dotCN.settingsguild} { + border-radius: 50%; + border: 3px solid ${BDFDB.DiscordConstants.Colors.STATUS_GREEN}; + box-sizing: border-box; + cursor: pointer; + margin: 3px; + overflow: hidden; + } + ${BDFDB.dotCN.settingsguilddisabled} { + border-color: ${BDFDB.DiscordConstants.Colors.STATUS_GREY}; + filter: grayscale(100%) brightness(50%); + } + + ${BDFDB.dotCN.paginationlistpagination} { + display: flex; + align-items: center; + justify-content: center; + font-size: 16px; + line-height: 20px; + margin-top: 10px; + margin-bottom: 10px; + color: var(--text-normal); + } + ${BDFDB.dotCN.paginationlistalphabet} { + display: flex; + align-items: center; + justify-content: center; + font-size: 16px; + line-height: 20px; + margin-bottom: 10px; + color: var(--text-normal); + } + ${BDFDB.dotCN.paginationlistalphabetchar} { + min-width: 12px; + text-align: center; + margin: 0 4px; + } + ${BDFDB.dotCN.paginationlistalphabetchar + BDFDB.notCN.paginationlistalphabetchardisabled}:hover { + color: var(--header-primary); + } + ${BDFDB.dotCN.paginationlistalphabetchar + BDFDB.dotCN.paginationlistalphabetchardisabled} { + color: var(--text-muted); + } + + ${BDFDB.dotCN.overflowellipsis} { + overflow: hidden; + text-overflow: ellipsis; + } + + ${BDFDB.dotCNS.userpopout + BDFDB.dotCN.userpopoutheadertext} + ${BDFDB.dotCN.userinfodate}, + ${BDFDB.dotCNS.userprofile + BDFDB.dotCN.userprofilenametag} + ${BDFDB.dotCN.userinfodate} { + margin-top: 8px; + } + ${BDFDB.dotCN.userinfodate} + ${BDFDB.dotCN.userpopoutcustomstatus} { + margin-top: 4px; + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCNS.userpopoutheadernormal + BDFDB.dotCN.userinfodate} { + color: #b9bbbe; + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCN.userpopoutheader + BDFDB.notCNS.userpopoutheadernormal + BDFDB.dotCN.userinfodate}, + ${BDFDB.dotCNS.themedark + BDFDB.dotCNS.userpopoutheader + BDFDB.dotCN.userinfodate} { + color: hsla(0,0%,100%,.6); + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCNS.userprofiletopsectionnormal + BDFDB.dotCN.userinfodate} { + color: hsla(216,4%,74%,.6); + } + ${BDFDB.dotCN.themelight} [class*='topSection']${BDFDB.notCNS.userprofiletopsectionnormal + BDFDB.dotCN.userinfodate}, + ${BDFDB.dotCN.themedark} [class*='topSection'] ${BDFDB.dotCN.userinfodate} { + color: hsla(0,0%,100%,.6); + } + + ${BDFDB.dotCN.messageavatar + BDFDB.dotCN.bdfdbbadge} { + position: absolute; + overflow: visible; + border-radius: 0; + } + + ${BDFDB.dotCN.favbuttoncontainer} { + display: flex; + position: relative; + cursor: pointer; + } + + ${BDFDB.dotCN.menuhint} { + width: 42px; + max-width: 42px; + margin-left: 8px; + } + + ${BDFDB.dotCN.cursordefault} { + cursor: default !important; + } + ${BDFDB.dotCN.cursorpointer} { + cursor: pointer !important; + } + + ${BDFDB.dotCN.slidergrabber}:active ${BDFDB.dotCN.sliderbubble}, + ${BDFDB.dotCN.slidergrabber}:hover ${BDFDB.dotCN.sliderbubble} { + visibility: visible; + } + ${BDFDB.dotCN.sliderbubble} { + border-radius: 3px; + top: -32px; + height: 22px; + width: auto; + padding: 0 5px; + white-space: pre; + transform: translateX(-50%); + line-height: 22px; + text-align: center; + font-weight: 600; + font-size: 12px; + color: #f6f6f7; + visibility: hidden; + } + ${BDFDB.dotCN.sliderbubble}, + ${BDFDB.dotCN.sliderbubble}:before { + position: absolute; + left: 50%; + pointer-events: none; + } + ${BDFDB.dotCN.sliderbubble}:before { + border: 5px solid transparent; + content: " "; + width: 0; + height: 0; + margin-left: -5px; + top: 100%; + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCN.sliderbubble} { + background-color: #4f545c; + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCN.sliderbubble}:before { + border-top-color: #4f545c; + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.sliderbubble} { + background-color: #72767d; + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.sliderbubble}:before { + border-top-color: #72767d; + } + + ${BDFDB.dotCNS.selectwrapper + BDFDB.dotCN.select} { + flex: 1 1 auto; + } + ${BDFDB.dotCN.selectwrapper} [class*="css-"][class*="-container"] > [class*="css-"][class*="-menu"] { + z-index: 3; + } + + ${BDFDB.dotCNS.hotkeywrapper + BDFDB.dotCN.hotkeycontainer} { + flex: 1 1 auto; + } + ${BDFDB.dotCN.hotkeyresetbutton} { + cursor: pointer; + margin-left: 5px; + } + ${BDFDB.dotCNS.hotkeyresetbutton + BDFDB.dotCN.svgicon}:hover { + color: ${BDFDB.DiscordConstants.Colors.STATUS_RED}; + } + + ${BDFDB.dotCN.hovercardwrapper} { + position: relative; + } + ${BDFDB.dotCN.hovercardwrapper + BDFDB.dotCN.hovercard} { + padding: 10px 0; + } + ${BDFDB.dotCN.hovercardwrapper + BDFDB.dotCN.hovercard} > * { + z-index: 1; + } + ${BDFDB.dotCNC.hovercardwrapper + BDFDB.dotCN.hovercardinner} { + min-height: 28px; + } + ${BDFDB.dotCN.hovercardinner} { + width: 100%; + padding-right: 5px; + display: flex; + align-items: center; + z-index: 1; + } + ${BDFDB.dotCNS.hovercardwrapper + BDFDB.dotCN.hovercardbutton} { + position: absolute; + top: -6px; + right: -6px; + opacity: 0; + } + ${BDFDB.dotCN.hovercardwrapper + BDFDB.dotCNS.hovercard + BDFDB.dotCN.hovercardbutton} { + right: -25px; + } + ${BDFDB.dotCN.hovercardwrapper}:hover ${BDFDB.dotCN.hovercardbutton} { + opacity: 1; + } + + ${BDFDB.dotCN.table} { + width: 100%; + } + ${BDFDB.dotCN.tableheader} { + padding: 0px 12px 8px 0; + margin-bottom: 5px; + font-size: 12px; + font-weight: 600; + box-sizing: border-box; + background-color: var(--background-primary); + border-bottom: 1px solid var(--background-modifier-accent); + } + ${BDFDB.dotCN.tablestickyheader}:first-child { + position: absolute; + width: 100%; + } + ${BDFDB.dotCNS.modalsub + BDFDB.dotCN.tablestickyheader}:first-child { + padding-left: 20px; + } + ${BDFDB.dotCN.tableheadercell} { + text-transform: uppercase; + color: var(--interactive-normal); + } + ${BDFDB.dotCN.tableheadercell}, + ${BDFDB.dotCN.tablebodycell} { + border-left: 1px solid var(--background-modifier-accent); + box-sizing: border-box; + padding: 0 12px; + } + ${BDFDB.dotCN.tableheadercell}:first-child, + ${BDFDB.dotCN.tablebodycell}:first-child { + border-left: none; + padding-left: 0; + } + ${BDFDB.dotCN.tableheadercellsorted}, + ${BDFDB.dotCN.tableheadercellsorted}:hover { + color: var(--interactive-active); + } + ${BDFDB.dotCN.tableheadersorticon} { + width: 18px; + height: 18px; + margin-left: 4px; + } + ${BDFDB.dotCN.tablerow} { + position: relative; + display: flex; + margin-bottom: 5px; + align-items: center; + color: var(--header-secondary); + } + ${BDFDB.dotCN.tablebodycell} { + font-size: 15px; + } + + ${BDFDB.dotCNS.settingstablelist + BDFDB.dotCN.checkboxcontainer}:before { + display: none; + } + + ${BDFDB.dotCNS.settingstablelist + BDFDB.dotCN.settingstableheader} { + min-height: 10px; + } + ${BDFDB.dotCNS.settingstablelist + BDFDB.dotCN.settingstableheaderoption} { + width: unset; + } + ${BDFDB.dotCN.settingstableheadervertical} { + position: relative; + } + ${BDFDB.dotCN.settingstableheadervertical} > span { + position: absolute; + bottom: 50%; + right: calc(50% - 5px); + margin-bottom: -5px; + writing-mode: vertical-rl; + } + ${BDFDB.dotCN.settingstablecard} { + height: 60px; + padding: 0 10px; + margin-bottom: 10px; + } + ${BDFDB.dotCNS.settingstablecard + BDFDB.dotCN.settingstablecardlabel} { + padding-right: 10px; + } + ${BDFDB.dotCNS.settingstablecard + BDFDB.dotCN.settingstablecardlabel}, + ${BDFDB.dotCNS.settingstablecard + BDFDB.dotCN.settingstablecardconfigs} { + margin: 0; + } + ${BDFDB.dotCN.settingstableheaders} { + margin-right: 10px; + } + + ${BDFDB.dotCNS.popoutwrapper + BDFDB.dotCN.messagespopouttabbarheader} { + flex: 1 0 auto; + align-items: center; + height: unset; + min-height: 56px; + } + ${BDFDB.dotCNS.popoutwrapper + BDFDB.dotCNS.messagespopouttabbarheader + BDFDB.dotCN.messagespopouttabbar} { + min-height: 32px; + } + + ${BDFDB.dotCN.charcounter} { + color: var(--channels-default); + } + + ${BDFDB.dotCN.inputnumberwrapper} { + position: relative; + } + ${BDFDB.dotCN.inputnumberbuttons}:hover + ${BDFDB.dotCN.input + BDFDB.notCN.inputfocused + BDFDB.notCN.inputerror + BDFDB.notCN.inputsuccess + BDFDB.notCN.inputdisabled}:not(:focus) { + border-color: #040405; + } + ${BDFDB.dotCNS.inputnumberwrapperdefault + BDFDB.dotCN.input} { + padding-right: 25px; + } + ${BDFDB.dotCNS.inputnumberwrappermini + BDFDB.dotCN.input} { + padding-left: 6px; + padding-right: 17px; + } + ${BDFDB.dotCNS.inputnumberwrapper + BDFDB.dotCN.input}::-webkit-inner-spin-button, + ${BDFDB.dotCNS.inputnumberwrapper + BDFDB.dotCN.input}::-webkit-outer-spin-button{ + -webkit-appearance: none !important; + } + ${BDFDB.dotCN.inputnumberbuttons} { + position: absolute; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-around; + height: 110%; + top: -2%; + } + ${BDFDB.dotCNS.inputnumberwrapperdefault + BDFDB.dotCN.inputnumberbuttons} { + right: 8px; + } + ${BDFDB.dotCNS.inputnumberwrappermini + BDFDB.dotCN.inputnumberbuttons} { + right: 4px; + } + ${BDFDB.dotCN.inputnumberbutton} { + cursor: pointer; + border: transparent solid 5px; + border-top-width: 2.5px; + display: inline-block; + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCN.inputnumberbutton} { + border-bottom-color: #dcddde; + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCN.inputnumberbutton}:hover { + border-bottom-color: #4f545c; + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.inputnumberbutton} { + border-bottom-color: #72767d; + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.inputnumberbutton}:hover { + border-bottom-color: #f6f6f7; + } + ${BDFDB.dotCN.inputnumberbuttondown} { + transform: rotate(180deg); + } + + ${BDFDB.dotCN.guildupperleftbadge} { + top: 0; + } + ${BDFDB.dotCN.guildlowerleftbadge} { + bottom: 0; + } + ${BDFDB.dotCNC.guildlowerleftbadge + BDFDB.dotCN.guildupperleftbadge} { + pointer-events: none; + position: absolute; + left: 0; + } + + ${BDFDB.dotCN.svgiconwrapper} { + display: flex; + justify-content: center; + align-items: center; + } + ${BDFDB.dotCN.svgicon} { + color: var(--interactive-normal); + } + ${BDFDB.dotCN.svgicon}:hover { + color: var(--interactive-hover); + } + ${BDFDB.dotCN.svgicon}:active { + color: var(--interactive-active); + } + + ${BDFDB.dotCN.modalsubinner} { + padding-left: 16px; + padding-right: 8px; + } + ${BDFDB.dotCN.modalnoscroller} { + padding-bottom: 10px; + overflow: visible; + } + ${BDFDB.dotCN.modaltabcontent} { + margin-top: 10px; + } + ${BDFDB.dotCNS.listscroller + BDFDB.dotCN.modaltabcontent} { + margin-top: 0; + } + ${BDFDB.dotCNS.modalwrapper + BDFDB.dotCN.modalheader + BDFDB.dotCN.modalheaderhassibling} { + padding-bottom: 10px; + } + ${BDFDB.dotCN.tabbarcontainer + BDFDB.dotCN.tabbarcontainerbottom} { + border-top: unset; + border-bottom: 1px solid hsla(0,0%,100%,.1); + } + ${BDFDB.dotCNS.modalwrapper + BDFDB.dotCN.tabbarcontainer} { + background: rgba(0, 0, 0, 0.1); + border: none; + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.05); + padding-right: 12px; + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCNS.modalwrapper + BDFDB.dotCN.tabbarcontainer} { + background: rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.1); + } + + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popoutright + BDFDB.dotCN.popoutarrowalignmentmiddle}:before { + border-right-color: #2f3136; + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popoutleft + BDFDB.dotCN.popoutarrowalignmentmiddle}:before { + border-left-color: #2f3136; + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popoutbottom + BDFDB.dotCN.popoutarrowalignmentmiddle}:before, + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popoutbottom + BDFDB.dotCN.popoutarrowalignmenttop}:before, + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popoutbottomleft + BDFDB.dotCN.popoutarrowalignmentmiddle}:before, + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popoutbottomleft + BDFDB.dotCN.popoutarrowalignmenttop}:before, + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popoutbottomright + BDFDB.dotCN.popoutarrowalignmentmiddle}:before, + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popoutbottomright + BDFDB.dotCN.popoutarrowalignmenttop}:before { + border-bottom-color: #2f3136; + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popouttop}:after, + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popouttopleft}:after, + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutwrapper + BDFDB.dotCN.popouttopright}:after { + border-top-color: #2f3136; + } + ${BDFDB.dotCN.popoutthemedpopout} { + background-color: #fff; + border: 1px solid hsla(0,0%,74.9%,.3); + -webkit-box-shadow: 0 2px 10px 0 rgba(0,0,0,.1); + box-shadow: 0 2px 10px 0 rgba(0,0,0,.1); + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 5px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCN.popoutthemedpopout} { + background-color: #2f3136; + border: 1px solid rgba(28,36,43,.6); + -webkit-box-shadow: 0 2px 10px 0 rgba(0,0,0,20%); + box-shadow: 0 2px 10px 0 rgba(0,0,0,.2); + } + ${BDFDB.dotCN.popoutwrapper + BDFDB.dotCNS.popoutarrowalignmentmiddle + BDFDB.dotCN.popoutthemedpopout}, + ${BDFDB.dotCN.popoutwrapper + BDFDB.dotCNS.popoutarrowalignmenttop + BDFDB.dotCN.popoutthemedpopout} { + border-color: transparent; + } + + #bd-settingspane-container .ui-form-title { + display: inline-block; + } + #bd-settingspane-container ${BDFDB.dotCN._repofolderbutton} { + position: static; + margin-bottom: 0; + border-radius: 5px; + display: inline-block; + margin-left: 10px; + } + #bd-settingspane-container ${BDFDB.dotCN._repoupdatebutton}[style] { + display: none !important; + } + + ${BDFDB.dotCNS._repolistwrapper + BDFDB.dotCN._repolistheader} { + display: flex; + flex-direction: column; + padding-top: 60px; + padding-right: 70px; + } + ${BDFDB.dotCNS._repolistwrapper + BDFDB.dotCN._repolistheader} > * { + max-width: 740px; + min-width: 460px; + padding-left: 40px; + padding-right: 40px; + } + ${BDFDB.dotCNS._repolistwrapper + BDFDB.dotCN.settingswindowtoolscontainer} { + margin-top: -140px; + } + ${BDFDB.dotCNS._repolistwrapper + BDFDB.dotCN.settingswindowcontentregionscroller} { + height: calc(100% - 140px); + } + ${BDFDB.dotCNS._repolistwrapper + BDFDB.dotCN.settingswindowcontentcolumn} { + padding-top: 20px; + } + ${BDFDB.dotCNS._repolistwrapper + BDFDB.dotCNS._repoentry + BDFDB.dotCN._repocontrols} > * { + margin-left: 10px; + } + ${BDFDB.dotCNS._repolistwrapper + BDFDB.dotCNS._repoentry + BDFDB.dotCN._repofooter} > * { + margin-left: 10px; + } + ${BDFDB.dotCNS._repolistwrapper + BDFDB.dotCNS._repoentry + BDFDB.dotCN._repofooter} > *:first-child { + margin-left: auto; + } + + ${BDFDB.dotCN.noticewrapper} { + transition: height 0.5s ease !important; + border-radius: 0 !important; + } + ${BDFDB.dotCNS.noticewrapper + BDFDB.dotCN.noticeplatformicon} { + margin-top: -7px; + } + ${BDFDB.dotCNS.noticewrapper + BDFDB.dotCN.noticeplatformicon} svg { + max-height: 28px; + } + ${BDFDB.dotCN.noticesurvey} { + background-color: #222; + } + + ${BDFDB.dotCN.tooltip + BDFDB.dotCNS.tooltipcustom + BDFDB.dotCN.tooltippointer} { + border-top-color: inherit !important; + } + + ${BDFDB.dotCN.colorpickerswatchsingle} { + height: 30px; + width: 30px; + } + ${BDFDB.dotCN.colorpickerswatches + BDFDB.dotCN.colorpickerswatchesdisabled} { + cursor: no-drop; + filter: grayscale(70%) brightness(50%); + } + ${BDFDB.dotCN.colorpickerswatch + BDFDB.notCN.colorpickerswatchnocolor + BDFDB.notCN.colorpickerswatchdefault + BDFDB.notCN.colorpickerswatchdisabled} { + overflow: hidden; + } + ${BDFDB.dotCN.colorpickerswatch + BDFDB.notCN.colorpickerswatchnocolor + BDFDB.notCN.colorpickerswatchdefault + BDFDB.notCN.colorpickerswatchdisabled}:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: -1; + } + ${BDFDB.dotCN.colorpickerswatch + BDFDB.dotCN.colorpickerswatchcustom}[style*="background"] { + border: none; + } + ${BDFDB.dotCN.colorpickerswatch + BDFDB.notCN.colorpickerswatchdefault}:after { + border-radius: 3px; + } + ${BDFDB.dotCN.colorpickerswatch + BDFDB.dotCN.colorpickerswatchcustom + BDFDB.notCN.colorpickerswatchdefault}:after { + border-radius: 5px; + } + ${BDFDB.dotCN.colorpickerswatch + BDFDB.notCN.colorpickerswatchnocolor + BDFDB.notCN.colorpickerswatchdefault + BDFDB.notCN.colorpickerswatchdisabled}:after { + background: url('data:image/svg+xml; utf8, ') center repeat; + } + + ${BDFDB.dotCN.colorpickeralpha} { + position: relative; + height: 8px; + margin: 16px 0 8px; + } + ${BDFDB.dotCN.colorpickergradient} { + position: relative; + height: 8px; + margin: 27px 2px 2px 2px; + } + ${BDFDB.dotCN.colorpickeralpha} > div > div > div > div { + height: 16px !important; + width: 8px !important; + margin-top: -3px !important; + border-radius: 3px !important; + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCN.colorpickersaturation} > div > div > div > div { + box-shadow: rgb(200, 200, 200) 0px 0px 0px 1.5px, rgba(0, 0, 0, 0.6) 0px 0px 1px 1px inset, rgba(0, 0, 0, 0.6) 0px 0px 1px 2px !important; + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCN.colorpickerhue} > div > div > div > div, + ${BDFDB.dotCNS.themelight + BDFDB.dotCN.colorpickeralpha} > div > div > div > div { + background: rgb(200, 200, 200) !important; + box-shadow: rgba(0, 0, 0, 1) 0px 0px 2px !important; + } + ${BDFDB.dotCN.colorpickeralpha} > div > div, + ${BDFDB.dotCN.colorpickergradient} > div > div { + border-radius: 3px; + } + ${BDFDB.dotCNS.colorpickeralpha + BDFDB.dotCN.colorpickeralphacheckered}, + ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcheckered}, + ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor} > div:after { + background: url('data:image/svg+xml; utf8, ') center repeat; + } + ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor} > div { + height: 8px; + width: 8px; + margin-top: -15px; + border: 1px solid rgb(128, 128, 128); + border-radius: 3px; + transform: translateX(-5px); + transform-style: preserve-3d; + } + ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor} > div:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: -1; + border-radius: 3px; + transform: translateZ(-1px); + } + ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor} > div:before { + content: ""; + position: absolute; + border: 3px solid transparent; + border-top-width: 5px; + border-top-color: rgb(128, 128, 128); + width: 0; + height: 0; + top: 100%; + left: -50%; + transform: translateX(5px); + } + ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursoredge} > div:before { + border-right-width: 0; + border-left-width: 5px; + } + ${BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursoredge} ~ ${BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursoredge} > div:before { + border-right-width: 5px; + border-left-width: 0; + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursorselected} > div { + border-color: rgb(55, 55, 55); + } + ${BDFDB.dotCNS.themelight + BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursorselected} > div:before { + border-top-color: rgb(55, 55, 55); + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursorselected} > div { + border-color: rgb(200, 200, 200); + } + ${BDFDB.dotCNS.themedark + BDFDB.dotCNS.colorpickergradient + BDFDB.dotCN.colorpickergradientcursor + BDFDB.dotCN.colorpickergradientcursorselected} > div:before { + border-top-color: rgb(200, 200, 200); + } + ${BDFDB.dotCN.colorpickergradientbutton} { + color: var(--interactive-normal); + opacity: 0.6; + margin-left: 6px; + transition: color 200ms ease, opactity 200ms ease; + } + ${BDFDB.dotCN.colorpickergradientbutton}:hover { + color: var(--interactive-hover); + opacity: 1; + } + ${BDFDB.dotCN.colorpickergradientbutton + BDFDB.dotCN.colorpickergradientbuttonenabled}, + ${BDFDB.dotCN.colorpickergradientbutton + BDFDB.dotCN.colorpickergradientbuttonenabled}:hover { + color: var(--interactive-active); + opacity: 1; + } + + ${BDFDB.dotCNC.layermodallarge + BDFDB.dotCN.modalsizelarge} { + max-height: 95vh; + } + @media only screen and (max-height: 900px) { + ${BDFDB.dotCNC.layermodalmedium + BDFDB.dotCN.modalsizemedium} { + max-height: 75vh; + } + } + + #pluginNotice .notice-message { + white-space: pre; + } + #pluginNotice #outdatedPlugins span { + -webkit-app-region: no-drag; + color: #FFF; + cursor: pointer; + } + #pluginNotice #outdatedPlugins span:hover { + text-decoration: underline; + } + + .toasts { + position: fixed; + display: flex; + top: 0; + flex-direction: column; + align-items: center; + justify-content: flex-end; + pointer-events: none; + z-index: 4000; + } + @keyframes toast-up { + from { + transform: translateY(0); + opacity: 0; + } + } + .toast { + animation: toast-up 300ms ease; + transform: translateY(-10px); + background-color: #36393F; + padding: 10px; + border-radius: 5px; + box-shadow: 0 0 0 1px rgba(32,34,37,.6), 0 2px 10px 0 rgba(0,0,0,.2); + font-weight: 500; + color: #fff; + user-select: text; + font-size: 14px; + opacity: 1; + margin-top: 10px; + pointer-events: auto; + } + @keyframes toast-down { + to { + transform: translateY(0px); + opacity: 0; + } + } + .toast.closing { + animation: toast-down 200ms ease; + animation-fill-mode: forwards; + opacity: 1; + transform: translateY(-10px); + } + .toast .toast-inner { + display: flex; + align-items: center; + } + .toast .toast-avatar { + margin-right: 5px; + width: 25px; + height: 25px; + flex: 0 0 auto; + background-size: cover; + background-position: center; + border-radius: 50%; + } + .toast.icon { + padding-left: 30px; + background-position: 6px 50%; + background-size: 20px 20px; + background-repeat: no-repeat; + } + .toast.toast-brand { + background-color: #7289DA; + } + .toast.toast-brand.icon { + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiIHZpZXdCb3g9IjI3IDI3IDExNSAxMTUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDkwIDkwOyI+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMTEuMywxMjQuMWMwLDAtMy40LTQuMS02LjMtNy43YzEyLjYtMy41LDE3LjQtMTEuMywxNy40LTExLjMgYy00LDIuNi03LjcsNC40LTExLjEsNS42Yy00LjgsMi05LjUsMy4zLTE0LDQuMWMtOS4yLDEuNy0xNy42LDEuMy0yNC45LTAuMWMtNS41LTEtMTAuMi0yLjUtMTQuMS00LjFjLTIuMi0wLjgtNC42LTEuOS03LjEtMy4zIGMtMC4zLTAuMi0wLjYtMC4zLTAuOS0wLjVjLTAuMS0wLjEtMC4zLTAuMi0wLjQtMC4yYy0xLjctMS0yLjYtMS42LTIuNi0xLjZzNC42LDcuNiwxNi44LDExLjJjLTIuOSwzLjYtNi40LDcuOS02LjQsNy45IGMtMjEuMi0wLjYtMjkuMy0xNC41LTI5LjMtMTQuNWMwLTMwLjYsMTMuOC01NS40LDEzLjgtNTUuNGMxMy44LTEwLjMsMjYuOS0xMCwyNi45LTEwbDEsMS4xQzUyLjgsNTAuMyw0NSw1Ny45LDQ1LDU3LjkgczIuMS0xLjIsNS43LTIuN2MxMC4zLTQuNSwxOC40LTUuNywyMS44LTZjMC41LTAuMSwxLjEtMC4yLDEuNi0wLjJjNS45LTAuNywxMi41LTAuOSwxOS40LTAuMmM5LjEsMSwxOC45LDMuNywyOC45LDkuMSBjMCwwLTcuNS03LjItMjMuOS0xMi4xbDEuMy0xLjVjMCwwLDEzLjEtMC4zLDI2LjksMTBjMCwwLDEzLjgsMjQuOCwxMy44LDU1LjRDMTQwLjYsMTA5LjYsMTMyLjUsMTIzLjUsMTExLjMsMTI0LjF6IE0xMDEuNyw3OS43Yy01LjQsMC05LjgsNC43LTkuOCwxMC41YzAsNS44LDQuNCwxMC41LDkuOCwxMC41YzUuNCwwLDkuOC00LjcsOS44LTEwLjUgQzExMS41LDg0LjQsMTA3LjEsNzkuNywxMDEuNyw3OS43eiBNNjYuNyw3OS43Yy01LjQsMC05LjgsNC43LTkuOCwxMC41YzAsNS44LDQuNCwxMC41LDkuOCwxMC41YzUuNCwwLDkuOC00LjcsOS44LTEwLjUgQzc2LjUsODQuNCw3Mi4xLDc5LjcsNjYuNyw3OS43eiIvPjwvc3ZnPg==); + } + .toast.toast-danger, + .toast.toast-error { + background-color: #F04747; + } + .toast.toast-danger.icon, + .toast.toast-error.icon { + background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+); + } + .toast.toast-default { + background-color: #F26522; + } + .toast.toast-default.icon { + padding-left: 10px; + } + .toast.toast-facebook { + background-color: #355089; + } + .toast.toast-facebook.icon { + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiIHZpZXdCb3g9Ii01IC01IDEwMCAxMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDkwIDkwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PHBhdGggaWQ9IkZhY2Vib29rX194MjhfYWx0X3gyOV8iIGQ9Ik05MCwxNS4wMDFDOTAsNy4xMTksODIuODg0LDAsNzUsMEgxNUM3LjExNiwwLDAsNy4xMTksMCwxNS4wMDF2NTkuOTk4ICAgQzAsODIuODgxLDcuMTE2LDkwLDE1LjAwMSw5MEg0NVY1NkgzNFY0MWgxMXYtNS44NDRDNDUsMjUuMDc3LDUyLjU2OCwxNiw2MS44NzUsMTZINzR2MTVINjEuODc1QzYwLjU0OCwzMSw1OSwzMi42MTEsNTksMzUuMDI0VjQxICAgaDE1djE1SDU5djM0aDE2YzcuODg0LDAsMTUtNy4xMTksMTUtMTUuMDAxVjE1LjAwMXoiIGZpbGw9IndoaXRlIi8+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjwvc3ZnPg==); + } + .toast.toast-info { + background-color: #4A90E2; + } + .toast.toast-info.icon { + background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=); + } + .toast.toast-premium { + background-color: #202225; + } + .toast.toast-premium.icon { + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDMiIGhlaWdodD0iMjYiPiAgPHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOTYuMjgyNiA4LjYwMjc4ODI0bC0xLjIxNTUgOC4zOTAzNTI5NmMtLjI3NzUgMS45ODI2Mjc0LTIuNDY1NSAyLjkwMzMzMzMtNC40NzkgMi45MDMzMzMzLTEuODc1IDAtMy43MTU1LS45MjA3MDU5LTMuNDcyNS0yLjcyNTkyMTZsMS4yMTU1LTguNTY3NzY0NjZjLjI3NzUtMS44NzY1ODgyNCAyLjQ2NTUtMi44MzI0NzA2IDQuNDc5LTIuODMyNDcwNiAyLjAxNCAwIDMuNzUuOTU1ODgyMzYgMy40NzI1IDIuODMyNDcwNk05My43NzIxLjAwMzkyNTVsLjAwMDUtLjAwNDA3ODQ0aC0xMy4wODRjLS4zMzQgMC0uNjE4LjI1MDMxMzcyLS42NjYuNTg3Mjk0MTJsLS42MzY1IDQuNDMyMjM1M2MtLjA1OTUuNDE0NDcwNTguMjU2Ljc4NjExNzY0LjY2NjUuNzg2MTE3NjRoMi4zODk1Yy4yNCAwIC40MDQ1LjI0OTgwMzkyLjMxLjQ3NTY0NzA2LS4yOTguNzEyMTk2MDctLjUxNTUgMS40ODYwNzg0My0uNjM2IDIuMzIxNjQ3MDZsLTEuMjE1NSA4LjU2Nzc2NDY2Yy0uNzk5IDUuNzM1Mjk0MiAzLjg4OSA4LjYwMjQzMTQgOC45OTMgOC42MDI0MzE0IDUuMzQ3NSAwIDEwLjU5MDUtMi44NjcxMzcyIDExLjM4OS04LjYwMjQzMTRsMS4yMTUtOC41Njc3NjQ2NmMuNzgzLTUuNjIyMTE3NjUtMy43Mzk1LTguNDg4MjM1My04LjcyNTUtOC41OTg4NjI3NW0tNzguNTk1MjUgMTEuNzI4NjUxbC4wNjcgNC4xNTg5ODA0Yy4wMDE1LjA4NTEzNzItLjA1NS4xNjA1ODgyLS4xMzYuMTgxNDkwMmgtLjAwMDVsLTEuMzg1NS01LjAxNjQ3MDZjLS4wMDItLjAwNzY0NzEtLjAwNS0uMDE0Nzg0My0uMDA4LS4wMjI0MzE0TDkuNDE0MzUuNzcwNzcyNTNjLS4xMDYtLjI1Mjg2Mjc1LS4zNDk1LS40MTY1MDk4LS42MTk1LS40MTY1MDk4aC00Ljg3MjVjLS4zMzYgMC0uNjIwNS4yNTIzNTI5NC0uNjY3LjU5MTM3MjU0TC4wMDY4NSAyNC42MzcyNDMxYy0uMDU3LjQxMzQ1MS4yNTc1Ljc4MjAzOTMuNjY2NS43ODIwMzkzaDQuODU0Yy4zMzY1IDAgLjYyMTUtLjI1MzM3MjYuNjY3NS0uNTkyOTAybDEuMjcyLTkuNDEyNTA5OGMuMDAxNS0uMDA5MTc2NS4wMDItLjAxODM1My4wMDItLjAyNzUyOTRsLS4wNjk1LTQuODM2NTA5OC4xMzg1LS4wMzUxNzY1IDEuNDU1NSA1LjAxNjQ3MDZjLjAwMjUuMDA3MTM3Mi4wMDUuMDEzNzY0Ny4wMDc1LjAyMDkwMmw0LjAyMTUgOS40NTM4MDM5Yy4xMDY1LjI1MDgyMzUuMzQ5NS40MTM0NTEuNjE3NS40MTM0NTFoNS4yNTY1Yy4zMzYgMCAuNjIwNS0uMjUyMzUzLjY2Ny0uNTkxODgyNGwzLjI0OTUtMjMuNjkxNjA3ODRjLjA1NjUtLjQxMjk0MTE4LS4yNTgtLjc4MTUyOTQyLS42NjctLjc4MTUyOTQyaC00LjgyMDVjLS4zMzYgMC0uNjIwNS4yNTE4NDMxNC0uNjY3LjU5MDg2Mjc1bC0xLjQ4IDEwLjc1ODkwMmMtLjAwMS4wMDkxNzY0LS4wMDE1LjAxODg2MjctLjAwMTUuMDI4NTQ5bTkuMzk0IDEzLjY4NjYwMzloNC44NTVjLjMzNiAwIC42MjA1LS4yNTIzNTI5LjY2Ny0uNTkxMzcyNmwzLjI0OS0yMy42OTIxMTc2Yy4wNTY1LS40MTI5NDEyLS4yNTgtLjc4MTUyOTQ0LS42NjctLjc4MTUyOTQ0aC00Ljg1NWMtLjMzNiAwLS42MjA1LjI1MjM1Mjk0LS42NjcuNTkxMzcyNTVsLTMuMjQ5IDIzLjY5MjExNzY4Yy0uMDU2NS40MTI5NDEyLjI1OC43ODE1Mjk0LjY2Ny43ODE1Mjk0TTM2LjYyMTE1LjkwNjA3NDVsLS42MzYgNC40MzIyMzUzYy0uMDU5NS40MTQ0NzA2LjI1NTUuNzg2MTE3NjUuNjY2Ljc4NjExNzY1aDUuMDgwNWMuNDA4NSAwIC43MjMuMzY3NTY4NjMuNjY3NS43ODA1MDk4bC0yLjM5MzUgMTcuNzM0MDM5MjVjLS4wNTU1LjQxMjQzMTMuMjU4NS43OC42NjcuNzhoNC45MjU1Yy4zMzY1IDAgLjYyMS0uMjUyODYyOC42NjctLjU5MjkwMmwyLjQ0NC0xOC4xMDg3NDUxYy4wNDYtLjMzOTUyOTQuMzMwNS0uNTkyOTAxOTUuNjY3LS41OTI5MDE5NWg1LjQ2MjVjLjMzNCAwIC42MTgtLjI0OTgwMzkyLjY2Ni0uNTg3Mjk0MTJsLjYzNy00LjQzMjIzNTNjLjA1OTUtLjQxNDQ3MDU4LS4yNTU1LS43ODYxMTc2NC0uNjY2NS0uNzg2MTE3NjRoLTE4LjE4NzVjLS4zMzQ1IDAtLjYxOC4yNTAzMTM3LS42NjY1LjU4NzI5NDFNNzEuMDM4NyA5LjA5ODM2ODZjLS4xNzQgMS40NTE0MTE3Ny0xLjI4NDUgMi45MDI4MjM1Ny0zLjE5NSAyLjkwMjgyMzU3aC0yLjg2OTVjLS40MSAwLS43MjQ1LS4zNjk2MDc5LS42NjctLjc4MzA1ODlsLjYwNzUtNC4zNjE4ODIzM2MuMDQ3LS4zMzg1MDk4LjMzMTUtLjU5MDM1Mjk0LjY2Ny0uNTkwMzUyOTRoMy4wNjFjMS44NDA1IDAgMi41Njk1IDEuMzEwMTk2MDggMi4zOTYgMi44MzI0NzA2TTY5LjMzNzIuMzU0MjExNzZoLTkuMjQwNWMtLjMzNiAwLS42MjA1LjI1MjM1Mjk0LS42NjcuNTkxMzcyNTRsLTMuMjQ5IDIzLjY5MjExNzdjLS4wNTY1LjQxMjk0MTEuMjU4Ljc4MTUyOTQuNjY3Ljc4MTUyOTRoNC45MjM1Yy4zMzY1IDAgLjYyMTUtLjI1MzM3MjYuNjY3NS0uNTkyOTAybC45NTYtNy4wNzY1ODgyYy4wMjMtLjE2OTc2NDcuMTY1LS4yOTYxOTYxLjMzMzUtLjI5NjE5NjFoLjYzM2MuMTE0NSAwIC4yMjE1LjA1OTY0NzEuMjgzNS4xNTgwMzkybDQuNzAyIDcuNDkxMDU4OGMuMTI0LjE5NzI5NDIuMzM3NS4zMTY1ODgzLjU2NzUuMzE2NTg4M2g2LjA4MWMuNTQ1IDAgLjg2NDUtLjYyNTAxOTYuNTUyLTEuMDgwMjc0NWwtNC45MzQ1LTcuMTkxODA0Yy0uMTE4LS4xNzI4MjM1LS4wNTc1LS40MTI0MzEzLjEyOC0uNTA0NzA1OCAzLjE1MDUtMS41Njk2ODYzIDQuOTc5NS0zLjE3ODExNzcgNS41ODMtNy42NTAxMTc3LjY5MzUtNS44NzcwMTk2LTIuOTE3LTguNjM4MTE3NjMtNy45ODY1LTguNjM4MTE3NjMiLz48L3N2Zz4=); + background-size: 63px 16px; + padding-left: 73px; + } + .toast.toast-spotify { + background-color: #1DB954; + } + .toast.toast-spotify.icon { + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDUwOC41MiA1MDguNTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUwOC41MiA1MDguNTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4Ij4KPGc+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZD0iTTI1NC4yNiwwQzExMy44NDUsMCwwLDExMy44NDUsMCwyNTQuMjZzMTEzLjg0NSwyNTQuMjYsMjU0LjI2LDI1NC4yNiAgICAgczI1NC4yNi0xMTMuODQ1LDI1NC4yNi0yNTQuMjZTMzk0LjY3NSwwLDI1NC4yNiwweiBNMzcxLjY5Niw0MDMuMjg4Yy0zLjE3OCw1LjgxNi05LjEyMiw5LjA1OC0xNS4yODcsOS4wNTggICAgIGMtMi44NiwwLTUuNzIxLTAuNjY3LTguNDIyLTIuMTI5Yy00MC43MTMtMjIuNDM4LTg2Ljk1Ny0zNC4yOTMtMTMzLjY3Ny0zNC4yOTNjLTI4LDAtNTUuNjUxLDQuMTYzLTgyLjEyNiwxMi4zNjMgICAgIGMtOS4yMTcsMi44Ni0xOS4wMDYtMi4yODgtMjEuODM1LTExLjUzN2MtMi44Ni05LjE4NSwyLjI4OC0yOC43LDExLjUzNy0zMS41OTJjMjkuODQ0LTkuMjQ5LDYwLjk1OS0xMy45MjEsOTIuNDU1LTEzLjkyMSAgICAgYzUyLjU2OCwwLDEwNC42NiwxMy4zNDksMTUwLjUyMiwzOC42MTZDMzczLjMxNywzNzQuNDYxLDM3Ni40LDM5NC44NjYsMzcxLjY5Niw0MDMuMjg4eiBNNDA0LjAxOSwzMDcuNTI3ICAgICBjLTMuNjIzLDcuMDI0LTEwLjc0MiwxOC4zMzgtMTguMDg0LDE4LjMzOGMtMy4yMSwwLTYuMzg4LTAuNjk5LTkuMzc2LTIuMzJjLTUwLjQ3MS0yNi4xODktMTA1LjA0MS0zOS40NzQtMTYyLjIxOC0zOS40NzQgICAgIGMtMzEuNDk2LDAtNjIuNzcsNC4xMzItOTIuOTY0LDEyLjQ1OWMtMTAuOTAxLDIuOTU2LTIyLjA4OS0zLjQwMS0yNS4wNDUtMTQuMzAyYy0yLjkyNC0xMC45MDEsMy40NjQtMjkuNDMxLDE0LjMzNC0zMi4zODYgICAgIGMzMy42ODktOS4xODUsNjguNTg3LTEzLjg1NywxMDMuNjc0LTEzLjg1N2M2Mi44OTgsMCwxMjUuNDQ1LDE1LjI1NiwxODAuOTM4LDQ0LjExNCAgICAgQzQwNS4yOSwyODUuMjQ4LDQwOS4xOTksMjk3LjUxNiw0MDQuMDE5LDMwNy41Mjd6IE00MTcuNTI2LDIzMC44MzZjLTMuNDY0LDAtNy4wMjQtMC43OTUtMTAuMzYxLTIuNDQ3ICAgICBjLTYwLjIyOC0zMC4wMzQtMTI1LjA5Ni00NS4yMjYtMTkyLjc2MS00NS4yMjZjLTM1LjI3OSwwLTcwLjQzLDQuMjkxLTEwNC41MzMsMTIuNzEzYy0xMi41MjIsMy4wODMtMjUuMTQtNC41MTMtMjguMjIzLTE3LjAwNCAgICAgYy0zLjExNS0xMi40NTksNC41MTMtMjcuNTU1LDE3LjAwNC0zMC42MzhjMzcuNzI2LTkuMzc2LDc2LjY1OS0xNC4xMTEsMTE1LjcyLTE0LjExMWM3NC45NzUsMCwxNDYuODY3LDE2Ljg3NywyMTMuNTc4LDUwLjEyMSAgICAgYzExLjUzNyw1Ljc1MywxNi4yNDEsMTkuNzM3LDEwLjQ4OCwzMS4yNDJDNDM0LjMwOCwyMjMuNjUzLDQyNi4xMDgsMjMwLjgzNiw0MTcuNTI2LDIzMC44MzZ6IiBmaWxsPSIjRkZGRkZGIi8+CgkJPC9nPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=); + } + .toast.toast-streamermode { + background-color: #593695; + } + .toast.toast-streamermode.icon { + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSItMjUgLTI1IDU0MiA1NDIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ5MiA0OTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iNTEycHgiIGhlaWdodD0iNTEycHgiPjxwYXRoIGQ9Ik00ODguMywxNDIuNXYyMDMuMWMwLDE1LjctMTcsMjUuNS0zMC42LDE3LjdsLTg0LjYtNDguOHYxMy45YzAsNDEuOC0zMy45LDc1LjctNzUuNyw3NS43SDc1LjdDMzMuOSw0MDQuMSwwLDM3MC4yLDAsMzI4LjQgICBWMTU5LjljMC00MS44LDMzLjktNzUuNyw3NS43LTc1LjdoMjIxLjhjNDEuOCwwLDc1LjcsMzMuOSw3NS43LDc1Ljd2MTMuOWw4NC42LTQ4LjhDNDcxLjMsMTE3LDQ4OC4zLDEyNi45LDQ4OC4zLDE0Mi41eiIgZmlsbD0iI0ZGRkZGRiIvPjwvc3ZnPg==); + } + .toast.toast-success { + background-color: #43B581; + } + .toast.toast-success.icon { + background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=); + } + .toast.toast-warning, + .toast.toast-warn { + background-color: #FFA600; + } + .toast.toast-warning.icon, + .toast.toast-warn.icon { + background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==); + }`); + + var KeyDownTimeouts = {}; + BDFDB.ListenerUtils.add(BDFDB, document, "keydown.BDFDBPressedKeys", e => { + if (!BDFDB.InternalData.pressedKeys.includes(e.which)) { + BDFDB.TimeUtils.clear(KeyDownTimeouts[e.which]); + BDFDB.InternalData.pressedKeys.push(e.which); + KeyDownTimeouts[e.which] = BDFDB.TimeUtils.timeout(_ => { + BDFDB.ArrayUtils.remove(BDFDB.InternalData.pressedKeys, e.which, true); + }, 60000); + } + }); + BDFDB.ListenerUtils.add(BDFDB, document, "keyup.BDFDBPressedKeys", e => { + BDFDB.TimeUtils.clear(KeyDownTimeouts[e.which]); + BDFDB.ArrayUtils.remove(BDFDB.InternalData.pressedKeys, e.which, true); + }); + BDFDB.ListenerUtils.add(BDFDB, document, "mousedown.BDFDBMousePosition", e => { + BDFDB.InternalData.mousePosition = e; + }); + BDFDB.ListenerUtils.add(BDFDB, window, "focus.BDFDBPressedKeysReset", e => { + BDFDB.InternalData.pressedKeys = []; + }); + + InternalBDFDB.patchedModules = { + before: { + MessageContent: "type" + }, + after: { + DiscordTag: "default", + Mention: "default", + Message: "default", + MessageHeader: "default", + MemberListItem: ["componentDidMount", "componentDidUpdate"], + PrivateChannel: ["componentDidMount", "componentDidUpdate"], + UserPopout: ["componentDidMount", "componentDidUpdate"], + UserProfile: ["componentDidMount", "componentDidUpdate"], + V2C_ContentColumn: "render" + } + }; + + InternalBDFDB.processV2CContentColumn = function (e) { + if (window.PluginUpdates && window.PluginUpdates.plugins && typeof e.instance.props.title == "string" && e.instance.props.title.toUpperCase().indexOf("PLUGINS") == 0) { + let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {key: "folder-button"}); + if (index > -1) children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, { + text: "Only checks for updates of plugins, which support the updatecheck. Rightclick for a list of supported plugins. (Listed ≠ Outdated)", + tooltipConfig: { + selector: "update-button-tooltip", + style: "max-width: 420px" + }, + children: BDFDB.ReactUtils.createElement("button", { + className: `${BDFDB.disCNS._repobutton + BDFDB.disCN._repofolderbutton} bd-updatebtn`, + onClick: _ => { + let toast = BDFDB.NotificationUtils.toast("Plugin update check in progress.", {type: "info", timeout: 0}); + BDFDB.PluginUtils.checkAllUpdates().then(outdated => { + toast.close(); + if (outdated > 0) BDFDB.NotificationUtils.toast(`Plugin update check complete. ${outdated} outdated!`, {type: "error"}); + else BDFDB.NotificationUtils.toast(`Plugin update check complete.`, {type: "success"}); + }); + }, + onContextMenu: e => { + if (window.PluginUpdates && window.PluginUpdates.plugins && !document.querySelector(".update-list-tooltip")) BDFDB.TooltipUtils.create(e.currentTarget, BDFDB.ObjectUtils.toArray(window.PluginUpdates.plugins).map(p => p.name).filter(n => n).sort().join(", "), {type: "bottom", selector: "update-list-tooltip", style: "max-width: 420px"}); + }, + children: "Check for Updates" + }) + })); + } + }; + + let MessageHeaderExport = BDFDB.ModuleUtils.findByProperties("MessageTimestamp", false); + if (MessageHeaderExport) InternalBDFDB.processMessage = function (e) { + if (BDFDB.ReactUtils.getValue(e, "instance.props.childrenHeader.type.type.name") && BDFDB.ReactUtils.getValue(e, "instance.props.childrenHeader.props.message")) { + e.instance.props.childrenHeader.type = MessageHeaderExport.exports.default; + } + }; + + const BDFDB_Patrons_T2 = [ + "363785301195358221", // TRENT + "106938698938978304" // GABRIEL + ]; + const BDFDB_Patrons_T3 = [ + "443943393660239872", // SARGE (PaSh) + "329018006371827713", // FUSL + "562008872467038230" // BEAUDEN + ]; + const BDFDB_Patrons_T3_hasBadge = [ + "562008872467038230" // BEAUDEN + ]; + InternalBDFDB._processAvatarRender = function (user, avatar) { + if (BDFDB.ReactUtils.isValidElement(avatar) && BDFDB.ObjectUtils.is(user)) { + avatar.props["user_by_BDFDB"] = user.id; + let role = "", className = BDFDB.DOMUtils.formatClassName((avatar.props.className || "").replace(BDFDB.disCN.avatar, "")); + if (BDFDB_Patrons_T2.includes(user.id)) { + role = "BDFDB Patron"; + className = BDFDB.DOMUtils.formatClassName(className, settings.showSupportBadges && BDFDB.disCN.bdfdbhasbadge, BDFDB.disCN.bdfdbsupporter); + } + if (BDFDB_Patrons_T3.includes(user.id)) { + role = "BDFDB Patron Level 2"; + className = BDFDB.DOMUtils.formatClassName(className, settings.showSupportBadges && BDFDB.disCN.bdfdbhasbadge, BDFDB.disCN.bdfdbsupporter, settings.showSupportBadges && BDFDB_Patrons_T3_hasBadge.includes(user.id) && BDFDB.disCN.bdfdbsupportercustom); + } + if (user.id == myId) { + role = "Theme Developer"; + className = BDFDB.DOMUtils.formatClassName(className, BDFDB.disCN.bdfdbhasbadge, BDFDB.disCN.bdfdbdev); + } + if (role) { + delete avatar.props["user_by_BDFDB"]; + if (avatar.type == "img") avatar = BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.AvatarComponents.default, Object.assign({}, avatar.props, { + size: BDFDB.LibraryComponents.AvatarComponents.Sizes.SIZE_40 + })); + delete avatar.props.className; + avatar = BDFDB.ReactUtils.createElement("div", { + className: className, + style: {borderRadius: 0, overflow: "visible"}, + "custombadge_id": BDFDB_Patrons_T3_hasBadge.includes(user.id) ? user.id : null, + "user_by_BDFDB": user.id, + children: [avatar] + }); + if (settings.showSupportBadges) avatar.props.children.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TooltipContainer, { + text: role, + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.bdfdbbadge, + }) + })); + return avatar; + } + } + }; + InternalBDFDB._processAvatarMount = function (user, avatar, position = "top") { + if (Node.prototype.isPrototypeOf(avatar) && BDFDB.ObjectUtils.is(user)) { + avatar.setAttribute("user_by_BDFDB", user.id); + let role = ""; + if (BDFDB_Patrons_T2.includes(user.id) && settings.showSupportBadges) { + role = "BDFDB Patron"; + avatar.className = BDFDB.DOMUtils.formatClassName(avatar.className, settings.showSupportBadges && BDFDB.disCN.bdfdbhasbadge, BDFDB.disCN.bdfdbsupporter); + } + else if (BDFDB_Patrons_T3.includes(user.id) && settings.showSupportBadges) { + role = "BDFDB Patron Level 2"; + avatar.className = BDFDB.DOMUtils.formatClassName(avatar.className, settings.showSupportBadges && BDFDB.disCN.bdfdbhasbadge, BDFDB.disCN.bdfdbsupporter, settings.showSupportBadges && BDFDB_Patrons_T3_hasBadge.includes(user.id) && BDFDB.disCN.bdfdbsupportercustom); + + } + else if (user.id == myId) { + role = "Theme Developer"; + avatar.className = BDFDB.DOMUtils.formatClassName(avatar.className, BDFDB.disCN.bdfdbhasbadge, BDFDB.disCN.bdfdbdev); + } + if (role && !avatar.querySelector(BDFDB.dotCN.bdfdbbadge)) { + if (settings.showSupportBadges) { + if (BDFDB_Patrons_T3_hasBadge.includes(user.id)) avatar.setAttribute("custombadge_id", user.id); + let badge = document.createElement("div"); + badge.className = BDFDB.disCN.bdfdbbadge; + badge.addEventListener("mouseenter", _ => {BDFDB.TooltipUtils.create(badge, role, {position});}); + avatar.style.setProperty("position", "relative"); + avatar.style.setProperty("overflow", "visible"); + avatar.style.setProperty("border-radius", 0); + avatar.appendChild(badge); + } + } + } + }; + InternalBDFDB.processMessageHeader = function (e) { + if (e.instance.props.message && e.instance.props.message.author) { + let avatarWrapper = BDFDB.ReactUtils.getValue(e, "returnvalue.props.children.0"); + if (avatarWrapper && avatarWrapper.props && typeof avatarWrapper.props.children == "function") { + let renderChildren = avatarWrapper.props.children; + avatarWrapper.props.children = (...args) => { + let renderedChildren = renderChildren(...args); + return InternalBDFDB._processAvatarRender(e.instance.props.message.author, renderedChildren) || renderedChildren; + }; + } + else if (avatarWrapper && avatarWrapper.type == "img") e.returnvalue.props.children[0] = InternalBDFDB._processAvatarRender(e.instance.props.message.author, avatarWrapper) || avatarWrapper; + } + }; + InternalBDFDB.processMemberListItem = function (e) { + InternalBDFDB._processAvatarMount(e.instance.props.user, e.node.querySelector(BDFDB.dotCN.avatarwrapper)); + }; + InternalBDFDB.processPrivateChannel = function (e) { + InternalBDFDB._processAvatarMount(e.instance.props.user, e.node.querySelector(BDFDB.dotCN.avatarwrapper)); + }; + InternalBDFDB.processUserPopout = function (e) { + InternalBDFDB._processAvatarMount(e.instance.props.user, e.node.querySelector(BDFDB.dotCN.userpopoutavatarwrapper)); + }; + InternalBDFDB.processUserProfile = function (e) { + InternalBDFDB._processAvatarMount(e.instance.props.user, e.node.querySelector(BDFDB.dotCN.avatarwrapper)); + }; + InternalBDFDB.processDiscordTag = function (e) { + if (e.instance && e.instance.props && e.instance.props.user && e.returnvalue) e.returnvalue.props.user = e.instance.props.user; + }; + InternalBDFDB.processMessageContent = function (e) { + if (BDFDB.ArrayUtils.is(e.instance.props.content)) for (let ele of e.instance.props.content) InternalBDFDB._processMessageContentEle(ele, e.instance.props.message); + }; + InternalBDFDB._processMessageContentEle = function (ele, message) { + if (BDFDB.ReactUtils.isValidElement(ele)) { + if (typeof ele.props.render == "function" && BDFDB.ReactUtils.getValue(ele, "props.children.type.displayName") == "Mention") { + let userId = BDFDB.ReactUtils.getValue(ele.props.render(), "props.userId"); + if (userId && !ele.props.children.props.userId) ele.props.children.props.userId = userId; + if (message && message.mentioned) ele.props.children.props.mentioned = true; + } + else if (BDFDB.ReactUtils.isValidElement(ele.props.children)) InternalBDFDB._processMessageContentEle(ele.props.children, message); + else if (BDFDB.ArrayUtils.is(ele.props.children)) for (let child of ele.props.children) InternalBDFDB._processMessageContentEle(child, message); + } + else if (BDFDB.ArrayUtils.is(ele)) for (let child of ele) InternalBDFDB._processMessageContentEle(child, message); + }; + InternalBDFDB.processMention = function (e) { + delete e.returnvalue.props.userId; + }; + + const ContextMenuTypes = ["UserSettingsCog", "User", "Developer", "Slate", "GuildFolder", "GroupDM", "SystemMessage", "Message", "Native", "Channel", "Guild"]; + const QueuedComponents = BDFDB.ArrayUtils.removeCopies([].concat(ContextMenuTypes.map(n => n + "ContextMenu"), ["MessageOptionContextMenu", "MessageOptionToolbar"])); + InternalBDFDB.addContextListeners = function (plugin) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + for (let type of QueuedComponents) if (typeof plugin[`on${type}`] === "function") { + BDFDB.InternalData.componentPatchQueries[type].query.push(plugin); + BDFDB.InternalData.componentPatchQueries[type].query = BDFDB.ArrayUtils.removeCopies(BDFDB.InternalData.componentPatchQueries[type].query); + BDFDB.InternalData.componentPatchQueries[type].query.sort((x, y) => {return x.name < y.name ? -1 : x.name > y.name ? 1 : 0;}); + for (let module of BDFDB.InternalData.componentPatchQueries[type].modules) InternalBDFDB.patchContextMenuForPlugin(plugin, type, module); + } + }; + InternalBDFDB.patchContextMenuForPlugin = function (plugin, type, module) { + plugin = plugin == BDFDB && InternalBDFDB || plugin; + if (module && module.exports && module.exports.default) BDFDB.ModuleUtils.patch(plugin, module.exports, "default", {after: e => { + if (e.returnValue && typeof plugin[`on${type}`] === "function") plugin[`on${type}`]({instance:{props:e.methodArguments[0]}, returnvalue:e.returnValue, methodname:"default", type:module.exports.default.displayName}); + }}); + }; + InternalBDFDB.executeExtraPatchedPatches = function (type, e) { + if (e.returnvalue && BDFDB.ObjectUtils.is(BDFDB.InternalData.componentPatchQueries[type]) && BDFDB.ArrayUtils.is(BDFDB.InternalData.componentPatchQueries[type].query)) { + for (let plugin of BDFDB.InternalData.componentPatchQueries[type].query) if(typeof plugin[`on${type}`] === "function") plugin[`on${type}`](e); + } + }; + + InternalBDFDB.patchPlugin(BDFDB); + + for (let type of QueuedComponents) if (!BDFDB.InternalData.componentPatchQueries[type]) BDFDB.InternalData.componentPatchQueries[type] = {query:[], modules:[]}; + BDFDB.ModuleUtils.patch(BDFDB, LibraryModules.ContextMenuUtils, "openContextMenu", {before: e => { + let menu = e.methodArguments[1](); + if (BDFDB.ObjectUtils.is(menu) && menu.type && menu.type.displayName) { + for (let type of ContextMenuTypes) if (menu.type.displayName.indexOf(type) > -1) { + let patchType = type + "ContextMenu"; + let module = BDFDB.ModuleUtils.find(m => m == menu.type, false); + if (module && module.exports && module.exports.default && BDFDB.InternalData.componentPatchQueries[patchType]) { + BDFDB.InternalData.componentPatchQueries[patchType].modules.push(module); + BDFDB.InternalData.componentPatchQueries[patchType].modules = BDFDB.ArrayUtils.removeCopies(BDFDB.InternalData.componentPatchQueries[patchType].modules); + for (let plugin of BDFDB.InternalData.componentPatchQueries[patchType].query) InternalBDFDB.patchContextMenuForPlugin(plugin, patchType, module); + } + break; + } + } + }}); + + BDFDB.ModuleUtils.patch(BDFDB, BDFDB.ReactUtils.getValue(BDFDB.ModuleUtils.findByString("renderReactions", "canAddNewReactions", "showMoreUtilities", false), "exports.default"), "type", {after: e => { + if (document.querySelector(BDFDB.dotCN.emojipicker) || !BDFDB.ObjectUtils.toArray(BDFDB.myPlugins).some(p => p.onMessageOptionContextMenu || p.onMessageOptionToolbar)) return; + let toolbar = BDFDB.ReactUtils.findChild(e.returnValue, {filter: c => c && c.props && c.props.showMoreUtilities != undefined && c.props.showEmojiPicker != undefined && c.props.setPopout != undefined}); + if (toolbar) BDFDB.ModuleUtils.patch(BDFDB, toolbar, "type", {after: e2 => { + let menu = BDFDB.ReactUtils.findChild(e2.returnValue, {filter: c => c && c.props && typeof c.props.onRequestClose == "function" && c.props.onRequestClose.toString().indexOf("moreUtilities") > -1}); + InternalBDFDB.executeExtraPatchedPatches("MessageOptionToolbar", {instance:{props:e2.methodArguments[0]}, returnvalue:e2.returnValue, methodname:"default"}); + if (menu && typeof menu.props.renderPopout == "function") { + let renderPopout = menu.props.renderPopout; + menu.props.renderPopout = (...args) => { + let renderedPopout = renderPopout(...args); + BDFDB.ModuleUtils.patch(BDFDB, renderedPopout, "type", {after: e3 => { + InternalBDFDB.executeExtraPatchedPatches("MessageOptionContextMenu", {instance:{props:e3.methodArguments[0]}, returnvalue:e3.returnValue, methodname:"default"}); + }}, {noCache: true}); + return renderedPopout; + } + } + }}, {once: true}); + }}); + + InternalBDFDB.onSettingsClosed = function () { + if (InternalBDFDB.SettingsUpdated) { + delete InternalBDFDB.SettingsUpdated; + InternalBDFDB.forceUpdateAll(); + } + }; + + InternalBDFDB.forceUpdateAll = function () { + if (LibraryRequires.path) settings = BDFDB.DataUtils.get(this, "settings"); + + BDFDB.MessageUtils.rerenderAll(); + BDFDB.ModuleUtils.forceAllUpdates(BDFDB); + }; + + InternalBDFDB.addSpecialListeners(BDFDB); + + let BasePopout = BDFDB.ModuleUtils.findByName("BasePopout"), ReferencePositionLayer = BDFDB.ModuleUtils.findByName("ReferencePositionLayer"); + if (BasePopout && ReferencePositionLayer) BDFDB.ModuleUtils.patch(BDFDB, BasePopout.prototype, "renderLayer", {after: e => { + if (e.returnValue && e.thisObject.isBDFDBpopout) { + e.returnValue = BDFDB.ReactUtils.createPortal(BDFDB.ReactUtils.createElement(ReferencePositionLayer, e.returnValue.props), document.querySelector(BDFDB.dotCN.appmount + " > " + BDFDB.dotCN.itemlayercontainer)); + } + }}); + + if (InternalComponents.LibraryComponents.GuildComponents.BlobMask) { + let newBadges = ["lowerLeftBadge", "upperLeftBadge"]; + BDFDB.ModuleUtils.patch(BDFDB, InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype, "render", { + before: e => { + e.thisObject.props = Object.assign({}, InternalComponents.LibraryComponents.GuildComponents.BlobMask.defaultProps, e.thisObject.props); + for (let type of newBadges) if (!e.thisObject.state[`${type}Mask`]) e.thisObject.state[`${type}Mask`] = new InternalComponents.LibraryComponents.Animations.Controller({spring: 0}); + }, + after: e => { + let [children, index] = BDFDB.ReactUtils.findParent(e.returnValue, {name: "TransitionGroup"}); + if (index > -1) { + children[index].props.children.push(!e.thisObject.props.lowerLeftBadge ? null : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.BadgeAnimationContainer, { + className: BDFDB.disCN.guildlowerleftbadge, + key: "lower-left-badge", + animatedStyle: e.thisObject.getLowerLeftBadgeStyles(), + children: e.thisObject.props.lowerLeftBadge + })); + children[index].props.children.push(!e.thisObject.props.upperLeftBadge ? null : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.BadgeAnimationContainer, { + className: BDFDB.disCN.guildupperleftbadge, + key: "upper-left-badge", + animatedStyle: e.thisObject.getUpperLeftBadgeStyles(), + children: e.thisObject.props.upperLeftBadge + })); + } + [children, index] = BDFDB.ReactUtils.findParent(e.returnValue, {name: "mask"}); + if (index > -1) { + children[index].props.children.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Animations.animated.rect, { + x: -4, + y: -4, + width: e.thisObject.props.upperLeftBadgeWidth + 8, + height: 24, + rx: 12, + ry: 12, + transform: e.thisObject.getLeftBadgePositionInterpolation(e.thisObject.state.upperLeftBadgeMask, -1), + fill: "black" + })); + children[index].props.children.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Animations.animated.rect, { + x: -4, + y: 28, + width: e.thisObject.props.lowerLeftBadgeWidth + 8, + height: 24, + rx: 12, + ry: 12, + transform: e.thisObject.getLeftBadgePositionInterpolation(e.thisObject.state.lowerLeftBadgeMask), + fill: "black" + })); + } + } + }); + BDFDB.ModuleUtils.patch(BDFDB, InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype, "componentDidMount", { + after: e => { + for (let type of newBadges) e.thisObject.state[`${type}Mask`].update({ + spring: e.thisObject.props[type] != null ? 1 : 0, + immediate: true + }).start(); + } + }); + BDFDB.ModuleUtils.patch(BDFDB, InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype, "componentWillUnmount", { + after: e => { + for (let type of newBadges) if (e.thisObject.state[`${type}Mask`]) e.thisObject.state[`${type}Mask`].destroy(); + } + }); + BDFDB.ModuleUtils.patch(BDFDB, InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype, "componentDidUpdate", { + after: e => { + for (let type of newBadges) if (e.thisObject.props[type] != null && e.methodArguments[0][type] == null) { + e.thisObject.state[`${type}Mask`].update({ + spring: 1, + immediate: !document.hasFocus(), + config: {friction: 30, tension: 900, mass: 1} + }).start(); + } + else if (e.thisObject.props[type] == null && e.methodArguments[0][type] != null) { + e.thisObject.state[`${type}Mask`].update({ + spring: 0, + immediate: !document.hasFocus(), + config: {duration: 150, friction: 10, tension: 100, mass: 1} + }).start(); + } + } + }); + InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype.getLeftBadgePositionInterpolation = function (e, t) { + return void 0 === t && (t = 1), e.animated.spring.to([0, 1], [20, 0]).to(function (e) { + return "translate(" + e * -1 + " " + e * t + ")"; + }); + }; + InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype.getLowerLeftBadgeStyles = function () { + var e = this.state.lowerLeftBadgeMask.animated.spring; + return { + opacity: e.to([0, .5, 1], [0, 0, 1]), + transform: e.to(function (e) { + return "translate(" + -1 * (16 - 16 * e) + "px, " + (16 - 16 * e) + "px)"; + }) + }; + }; + InternalComponents.LibraryComponents.GuildComponents.BlobMask.prototype.getUpperLeftBadgeStyles = function () { + var e = this.state.upperLeftBadgeMask.animated.spring; + return { + opacity: e.to([0, .5, 1], [0, 0, 1]), + transform: e.to(function (e) { + return "translate(" + -1 * (16 - 16 * e) + "px, " + -1 * (16 - 16 * e) + "px)"; + }) + }; + }; + let extraDefaultProps = {}; + for (let type of newBadges) extraDefaultProps[`${type}Width`] = 16; + InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.GuildComponents.BlobMask, extraDefaultProps); + } + + BDFDB.ModuleUtils.patch(BDFDB, LibraryModules.GuildStore, "getGuild", {after: e => { + if (e.returnValue && e.methodArguments[0] == myGuildId) e.returnValue.banner = "https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB_banner.png"; + }}); + + BDFDB.ModuleUtils.patch(BDFDB, LibraryModules.IconUtils, "getGuildBannerURL", {instead: e => { + return e.methodArguments[0].id == myGuildId ? e.methodArguments[0].banner : e.callOriginalMethod(); + }}); + + InternalBDFDB.forceUpdateAll(); + + BDFDB.ReactUtils.findChildren = BDFDB.ReactUtils.findParent; + + if (BDFDB.UserUtils.me.id == myId) { + for (let module in DiscordClassModules) if (!DiscordClassModules[module]) BDFDB.LogUtils.warn(module + " not initialized in DiscordClassModules"); + for (let obj in DiscordObjects) if (!DiscordObjects[obj]) BDFDB.LogUtils.warn(obj + " not initialized in DiscordObjects"); + for (let require in LibraryRequires) if (!LibraryRequires[require]) BDFDB.LogUtils.warn(require + " not initialized in LibraryRequires"); + for (let module in LibraryModules) if (!LibraryModules[module]) BDFDB.LogUtils.warn(module + " not initialized in LibraryModules"); + for (let component in InternalComponents.NativeSubComponents) if (!InternalComponents.NativeSubComponents[component]) BDFDB.LogUtils.warn(component + " not initialized in NativeSubComponents"); + for (let component in InternalComponents.LibraryComponents) if (!InternalComponents.LibraryComponents[component]) BDFDB.LogUtils.warn(component + " not initialized in LibraryComponents"); + + BDFDB.ModuleUtils.DevFuncs = {}; + BDFDB.ModuleUtils.DevFuncs.generateClassId = function () { + let id = ""; + while (id.length < 6) id += BDFDB.ModuleUtils.DevFuncs.generateClassId.chars[Math.floor(Math.random() * BDFDB.ModuleUtils.DevFuncs.generateClassId.chars.length)]; + return id; + }; + BDFDB.ModuleUtils.DevFuncs.generateClassId.chars = "0123456789ABCDEFGHIJKMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""); + BDFDB.ModuleUtils.DevFuncs.findByIndex = function (index) { + return BDFDB.ModuleUtils.DevFuncs.req.c[index]; + }; + BDFDB.ModuleUtils.DevFuncs.findPropAny = function (...strings) { + window.t = {"$filter":(prop => [...strings].flat(10).filter(n => typeof n == "string").every(string => prop.toLowerCase().indexOf(string.toLowerCase()) > -1))}; + for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) { + let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports; + if (m && typeof m == "object") for (let j in m) if (window.t.$filter(j)) window.t[j + "_" + i] = m; + if (m && typeof m == "object" && typeof m.default == "object") for (let j in m.default) if (window.t.$filter(j)) window.t[j + "_default_" + i] = m.default; + } + console.clear(); + console.log(window.t); + }; + BDFDB.ModuleUtils.DevFuncs.findPropFunc = function (...strings) { + window.t = {"$filter":(prop => [...strings].flat(10).filter(n => typeof n == "string").every(string => prop.toLowerCase().indexOf(string.toLowerCase()) > -1))}; + for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) { + let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports; + if (m && typeof m == "object") for (let j in m) if (window.t.$filter(j) && typeof m[j] != "string") window.t[j + "_" + i] = m; + if (m && typeof m == "object" && typeof m.default == "object") for (let j in m.default) if (window.t.$filter(j) && typeof m.default[j] != "string") window.t[j + "_default_" + i] = m.default; + } + console.clear(); + console.log(window.t); + }; + BDFDB.ModuleUtils.DevFuncs.findPropStringLib = function (...strings) { + window.t = {"$filter":(prop => [...strings].flat(10).filter(n => typeof n == "string").every(string => prop.toLowerCase().indexOf(string.toLowerCase()) > -1))}; + for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) { + let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports; + if (m && typeof m == "object") for (let j in m) if (window.t.$filter(j) && typeof m[j] == "string" && /^[A-z0-9]+\-[A-z0-9_-]{6}$/.test(m[j])) window.t[j + "_" + i] = m; + if (m && typeof m == "object" && typeof m.default == "object") for (let j in m.default) if (window.t.$filter(j) && typeof m.default[j] == "string" && /^[A-z0-9]+\-[A-z0-9_-]{6}$/.test(m.default[j])) window.t[j + "_default_" + i] = m.default; + } + console.clear(); + console.log(window.t); + }; + BDFDB.ModuleUtils.DevFuncs.findNameAny = function (...strings) { + window.t = {"$filter":(modu => [...strings].flat(10).filter(n => typeof n == "string").some(string => typeof modu.displayName == "string" && modu.displayName.toLowerCase().indexOf(string.toLowerCase()) > -1 || modu.name == "string" && modu.name.toLowerCase().indexOf(string.toLowerCase()) > -1))}; + for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) { + let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports; + if (m && (typeof m == "object" || typeof m == "function") && window.t.$filter(m)) window.t[(m.displayName || m.name) + "_" + i] = m; + if (m && (typeof m == "object" || typeof m == "function") && m.default && (typeof m.default == "object" || typeof m.default == "function") && window.t.$filter(m.default)) window.t[(m.default.displayName || m.default.name) + "_" + i] = m.default; + } + console.clear(); + console.log(window.t); + }; + BDFDB.ModuleUtils.DevFuncs.findCodeAny = function (...strings) { + window.t = {"$filter":(m => [...strings].flat(10).filter(n => typeof n == "string").map(string => string.toLowerCase()).every(string => typeof m == "function" && (m.toString().toLowerCase().indexOf(string) > -1 || typeof m.__originalMethod == "function" && m.__originalMethod.toString().toLowerCase().indexOf(string) > -1 || typeof m.__originalFunction == "function" && m.__originalFunction.toString().toLowerCase().indexOf(string) > -1) || BDFDB.ObjectUtils.is(m) && typeof m.type == "function" && m.type.toString().toLowerCase().indexOf(string) > -1))}; + for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) { + let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports; + if (m && typeof m == "function" && window.t.$filter(m)) window.t["module_" + i] = {string:m.toString(), func:m}; + if (m && m.__esModule) { + for (let j in m) if (m[j] && typeof m[j] == "function" && window.t.$filter(m[j])) window.t[j + "_module_" + i] = {string:m[j].toString(), func:m[j], module:m}; + if (m.default && (typeof m.default == "object" || typeof m.default == "function")) for (let j in m.default) if (m.default[j] && typeof m.default[j] == "function" && window.t.$filter(m.default[j])) window.t[j + "_module_" + i + "_default"] = {string:m.default[j].toString(), func:m.default[j], module:m}; + } + } + for (let i in BDFDB.ModuleUtils.DevFuncs.req.m) if (typeof BDFDB.ModuleUtils.DevFuncs.req.m[i] == "function" && window.t.$filter(BDFDB.ModuleUtils.DevFuncs.req.m[i])) window.t["funtion_" + i] = {string:BDFDB.ModuleUtils.DevFuncs.req.m[i].toString(), func:BDFDB.ModuleUtils.DevFuncs.req.m[i]}; + console.clear(); + console.log(window.t); + }; + BDFDB.ModuleUtils.DevFuncs.getAllModules = function () { + window.t = {}; + for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) { + let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports; + if (m && typeof m == "object") window.t[i] = m; + } + console.clear(); + console.log(window.t); + }; + BDFDB.ModuleUtils.DevFuncs.getAllStringLibs = function () { + window.t = []; + for (let i in BDFDB.ModuleUtils.DevFuncs.req.c) if (BDFDB.ModuleUtils.DevFuncs.req.c.hasOwnProperty(i)) { + let m = BDFDB.ModuleUtils.DevFuncs.req.c[i].exports; + if (m && typeof m == "object" && !BDFDB.ArrayUtils.is(m) && Object.keys(m).length) { + var string = true, stringlib = false; + for (let j in m) { + if (typeof m[j] != "string") string = false; + if (typeof m[j] == "string" && /^[A-z0-9]+\-[A-z0-9_-]{6}$/.test(m[j])) stringlib = true; + } + if (string && stringlib) window.t.push(m); + } + if (m && typeof m == "object" && m.default && typeof m.default == "object" && !BDFDB.ArrayUtils.is(m.default) && Object.keys(m.default).length) { + var string = true, stringlib = false; + for (let j in m.default) { + if (typeof m.default[j] != "string") string = false; + if (typeof m.default[j] == "string" && /^[A-z0-9]+\-[A-z0-9_-]{6}$/.test(m.default[j])) stringlib = true; + } + if (string && stringlib) window.t.push(m.default); + } + } + console.clear(); + console.log(window.t); + }; + BDFDB.ModuleUtils.DevFuncs.listen = function (strings) { + strings = BDFDB.ArrayUtils.is(strings) ? strings : Array.from(arguments); + BDFDB.ModuleUtils.DevFuncs.listenstop(); + BDFDB.ModuleUtils.DevFuncs.listen.p = BDFDB.ModuleUtils.patch("WebpackSearch", BDFDB.ModuleUtils.findByProperties(strings), strings[0], {after: e => { + console.log(e); + }}); + }; + BDFDB.ModuleUtils.DevFuncs.listenstop = function () { + if (typeof BDFDB.ModuleUtils.DevFuncs.listen.p == "function") BDFDB.ModuleUtils.DevFuncs.listen.p(); + }; + BDFDB.ModuleUtils.DevFuncs.req = InternalBDFDB.getWebModuleReq(); + } + for (let obj in DiscordObjects) if (!DiscordObjects[obj]) { + DiscordObjects[obj] = function () {}; + BDFDB.DiscordObjects[obj] = function () {}; + } + for (let component in InternalComponents.NativeSubComponents) if (!InternalComponents.NativeSubComponents[component]) InternalComponents.NativeSubComponents[component] = "div"; + for (let component in InternalComponents.LibraryComponents) if (!InternalComponents.LibraryComponents[component]) { + InternalComponents.LibraryComponents[component] = "div"; + BDFDB.LibraryComponents[component] = "div"; + } + + BDFDB.loaded = true; + window.BDFDB = BDFDB; + InternalBDFDB.reloadLib = _ => { + let libraryScript = document.querySelector("head script#BDFDBLibraryScript"); + if (libraryScript) libraryScript.remove(); + libraryScript = document.createElement("script"); + libraryScript.setAttribute("id", "BDFDBLibraryScript"); + libraryScript.setAttribute("type", "text/javascript"); + libraryScript.setAttribute("src", "https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.min.js"); + libraryScript.setAttribute("date", performance.now()); + document.head.appendChild(libraryScript); + }; + let libKeys = Object.keys(BDFDB).length - 10; + BDFDB.TimeUtils.interval(interval => { + if (!window.BDFDB || typeof BDFDB != "object" || Object.keys(BDFDB).length < libKeys || !BDFDB.InternalData.loadId) { + BDFDB.LogUtils.warn("Reloading library due to internal error."); + BDFDB.TimeUtils.clear(interval); + InternalBDFDB.reloadLib(); + } + else if (BDFDB.InternalData.loadId != loadId) { + BDFDB.TimeUtils.clear(interval); + } + else if (!BDFDB.InternalData.creationTime || performance.now() - BDFDB.InternalData.creationTime > 18000000) { + BDFDB.TimeUtils.clear(interval); + InternalBDFDB.reloadLib(); + } + }, 10000); +})(); \ No newline at end of file