WH.deepFreeze=e=>{"use strict";if(Object.isFrozen(e)){return e}const t=Object.getOwnPropertyNames(e);for(const a of t){const t=e[a];if(t&&typeof t==="object"){WH.deepFreeze(t)}}return Object.freeze(e)};(function(){function e(e){var t=true;var a=false;var i=null;var n={text:true,search:true,url:true,tel:true,email:true,password:true,number:true,date:true,month:true,week:true,time:true,datetime:true,"datetime-local":true};function s(e){if(e&&e!==document&&e.nodeName!=="HTML"&&e.nodeName!=="BODY"&&"classList"in e&&"contains"in e.classList){return true}return false}function r(e){var t=e.type;var a=e.tagName;if(a==="INPUT"&&n[t]&&!e.readOnly){return true}if(a==="TEXTAREA"&&!e.readOnly){return true}if(e.isContentEditable){return true}return false}function o(e){if(e.classList.contains("focus-visible")){return}e.classList.add("focus-visible");e.setAttribute("data-focus-visible-added","")}function l(e){if(!e.hasAttribute("data-focus-visible-added")){return}e.classList.remove("focus-visible");e.removeAttribute("data-focus-visible-added")}function c(a){if(a.metaKey||a.altKey||a.ctrlKey){return}if(s(e.activeElement)){o(e.activeElement)}t=true}function u(e){t=false}function d(e){if(!s(e.target)){return}if(t||r(e.target)){o(e.target)}}function f(e){if(!s(e.target)){return}if(e.target.classList.contains("focus-visible")||e.target.hasAttribute("data-focus-visible-added")){a=true;window.clearTimeout(i);i=window.setTimeout((function(){a=false}),100);l(e.target)}}function h(e){if(document.visibilityState==="hidden"){if(a){t=true}p()}}function p(){document.addEventListener("mousemove",H);document.addEventListener("mousedown",H);document.addEventListener("mouseup",H);document.addEventListener("pointermove",H);document.addEventListener("pointerdown",H);document.addEventListener("pointerup",H);document.addEventListener("touchmove",H);document.addEventListener("touchstart",H);document.addEventListener("touchend",H)}function m(){document.removeEventListener("mousemove",H);document.removeEventListener("mousedown",H);document.removeEventListener("mouseup",H);document.removeEventListener("pointermove",H);document.removeEventListener("pointerdown",H);document.removeEventListener("pointerup",H);document.removeEventListener("touchmove",H);document.removeEventListener("touchstart",H);document.removeEventListener("touchend",H)}function H(e){if(e.target.nodeName&&e.target.nodeName.toLowerCase()==="html"){return}t=false;m()}document.addEventListener("keydown",c,true);document.addEventListener("mousedown",u,true);document.addEventListener("pointerdown",u,true);document.addEventListener("touchstart",u,true);document.addEventListener("visibilitychange",h,true);p();e.addEventListener("focus",d,true);e.addEventListener("blur",f,true);if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host){e.host.setAttribute("data-js-focus-visible","")}else if(e.nodeType===Node.DOCUMENT_NODE){document.documentElement.classList.add("js-focus-visible");document.documentElement.setAttribute("data-js-focus-visible","")}}if(typeof window!=="undefined"&&typeof document!=="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(e){t=document.createEvent("CustomEvent");t.initCustomEvent("focus-visible-polyfill-ready",false,false,{})}window.dispatchEvent(t)}if(typeof document!=="undefined"){e(document)}})();
/*! iScroll v5.1.3 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */(function(e,t,a){var i=e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t){e.setTimeout(t,1e3/60)};var n=function(){var i={};var n=t.createElement("div").style;var s=function(){var e=["t","webkitT","MozT","msT","OT"],t,a=0,i=e.length;for(;a0){c=s?s/2.5*(l/8):0;o=a.abs(e)+c;u=o/l}return{destination:a.round(c),duration:u}};var o=r("transform");i.extend(i,{hasTransform:o!==false,hasPerspective:r("perspective")in n,hasTouch:"ontouchstart"in e,hasPointer:e.PointerEvent||e.MSPointerEvent,hasTransition:r("transition")in n});i.isBadAndroid=/Android /.test(e.navigator.appVersion)&&!/Chrome\/\d/.test(e.navigator.appVersion);i.extend(i.style={},{transform:o,transitionTimingFunction:r("transitionTimingFunction"),transitionDuration:r("transitionDuration"),transitionDelay:r("transitionDelay"),transformOrigin:r("transformOrigin")});i.hasClass=function(e,t){var a=new RegExp("(^|\\s)"+t+"(\\s|$)");return a.test(e.className)};i.addClass=function(e,t){if(i.hasClass(e,t)){return}var a=e.className.split(" ");a.push(t);e.className=a.join(" ")};i.removeClass=function(e,t){if(!i.hasClass(e,t)){return}var a=new RegExp("(^|\\s)"+t+"(\\s|$)","g");e.className=e.className.replace(a," ")};i.offset=function(e){var t=-e.offsetLeft,a=-e.offsetTop;while(e=e.offsetParent){t-=e.offsetLeft;a-=e.offsetTop}return{left:t,top:a}};i.preventDefaultException=function(e,t){for(var a in t){if(t[a].test(e[a])){return true}}return false};i.extend(i.eventType={},{touchstart:1,touchmove:1,touchend:1,mousedown:2,mousemove:2,mouseup:2,pointerdown:3,pointermove:3,pointerup:3,MSPointerDown:3,MSPointerMove:3,MSPointerUp:3});i.extend(i.ease={},{quadratic:{style:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",fn:function(e){return e*(2-e)}},circular:{style:"cubic-bezier(0.1, 0.57, 0.1, 1)",fn:function(e){return a.sqrt(1- --e*e)}},back:{style:"cubic-bezier(0.175, 0.885, 0.32, 1.275)",fn:function(e){var t=4;return(e=e-1)*e*((t+1)*e+t)+1}},bounce:{style:"",fn:function(e){if((e/=1)<1/2.75){return 7.5625*e*e}else if(e<2/2.75){return 7.5625*(e-=1.5/2.75)*e+.75}else if(e<2.5/2.75){return 7.5625*(e-=2.25/2.75)*e+.9375}else{return 7.5625*(e-=2.625/2.75)*e+.984375}}},elastic:{style:"",fn:function(e){var t=.22,i=.4;if(e===0){return 0}if(e==1){return 1}return i*a.pow(2,-10*e)*a.sin((e-t/4)*(2*a.PI)/t)+1}}});i.tap=function(e,a){var i=t.createEvent("Event");i.initEvent(a,true,true);i.pageX=e.pageX;i.pageY=e.pageY;e.target.dispatchEvent(i)};i.click=function(e){var a=e.target,i;if(!/(SELECT|INPUT|TEXTAREA)/i.test(a.tagName)){i=t.createEvent("MouseEvents");i.initMouseEvent("click",true,true,e.view,1,a.screenX,a.screenY,a.clientX,a.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,0,null);i._constructed=true;a.dispatchEvent(i)}};return i}();function s(e,a){this.wrapper=typeof e=="string"?t.querySelector(e):e;this.scroller=this.wrapper.children[0];this.scrollerStyle=this.scroller.style;this.options={startX:0,startY:0,scrollY:true,directionLockThreshold:5,momentum:true,bounce:true,bounceTime:600,bounceEasing:"",preventDefault:true,preventDefaultException:{tagName:/^(INPUT|TEXTAREA|BUTTON|SELECT)$/},HWCompositing:true,useTransition:true,useTransform:true};for(var i in a){this.options[i]=a[i]}this.translateZ=this.options.HWCompositing&&n.hasPerspective?" translateZ(0)":"";this.options.useTransition=n.hasTransition&&this.options.useTransition;this.options.useTransform=n.hasTransform&&this.options.useTransform;this.options.eventPassthrough=this.options.eventPassthrough===true?"vertical":this.options.eventPassthrough;this.options.preventDefault=!this.options.eventPassthrough&&this.options.preventDefault;this.options.scrollY=this.options.eventPassthrough=="vertical"?false:this.options.scrollY;this.options.scrollX=this.options.eventPassthrough=="horizontal"?false:this.options.scrollX;this.options.freeScroll=this.options.freeScroll&&!this.options.eventPassthrough;this.options.directionLockThreshold=this.options.eventPassthrough?0:this.options.directionLockThreshold;this.options.bounceEasing=typeof this.options.bounceEasing=="string"?n.ease[this.options.bounceEasing]||n.ease.circular:this.options.bounceEasing;this.options.resizePolling=this.options.resizePolling===undefined?60:this.options.resizePolling;if(this.options.tap===true){this.options.tap="tap"}this.x=0;this.y=0;this.directionX=0;this.directionY=0;this._events={};this._init();this.refresh();this.scrollTo(this.options.startX,this.options.startY);this.enable()}s.prototype={version:"5.1.3",_init:function(){this._initEvents()},destroy:function(){this._initEvents(true);this._execEvent("destroy")},_transitionEnd:function(e){if(e.target!=this.scroller||!this.isInTransition){return}this._transitionTime();if(!this.resetPosition(this.options.bounceTime)){this.isInTransition=false;this._execEvent("scrollEnd")}},_start:function(e){if(n.eventType[e.type]!=1){if(e.button!==0){return}}if(!this.enabled||this.initiated&&n.eventType[e.type]!==this.initiated){return}if(this.options.preventDefault&&!n.isBadAndroid&&!n.preventDefaultException(e.target,this.options.preventDefaultException)){e.preventDefault()}var t=e.touches?e.touches[0]:e,i;this.initiated=n.eventType[e.type];this.moved=false;this.distX=0;this.distY=0;this.directionX=0;this.directionY=0;this.directionLocked=0;this._transitionTime();this.startTime=n.getTime();if(this.options.useTransition&&this.isInTransition){this.isInTransition=false;i=this.getComputedPosition();this._translate(a.round(i.x),a.round(i.y));this._execEvent("scrollEnd")}else if(!this.options.useTransition&&this.isAnimating){this.isAnimating=false;this._execEvent("scrollEnd")}this.startX=this.x;this.startY=this.y;this.absStartX=this.x;this.absStartY=this.y;this.pointX=t.pageX;this.pointY=t.pageY;this._execEvent("beforeScrollStart")},_move:function(e){if(!this.enabled||n.eventType[e.type]!==this.initiated){return}if(this.options.preventDefault){e.preventDefault()}var t=e.touches?e.touches[0]:e,i=t.pageX-this.pointX,s=t.pageY-this.pointY,r=n.getTime(),o,l,c,u;this.pointX=t.pageX;this.pointY=t.pageY;this.distX+=i;this.distY+=s;c=a.abs(this.distX);u=a.abs(this.distY);if(r-this.endTime>300&&(c<10&&u<10)){return}if(!this.directionLocked&&!this.options.freeScroll){if(c>u+this.options.directionLockThreshold){this.directionLocked="h"}else if(u>=c+this.options.directionLockThreshold){this.directionLocked="v"}else{this.directionLocked="n"}}if(this.directionLocked=="h"){if(this.options.eventPassthrough=="vertical"){e.preventDefault()}else if(this.options.eventPassthrough=="horizontal"){this.initiated=false;return}s=0}else if(this.directionLocked=="v"){if(this.options.eventPassthrough=="horizontal"){e.preventDefault()}else if(this.options.eventPassthrough=="vertical"){this.initiated=false;return}i=0}i=this.hasHorizontalScroll?i:0;s=this.hasVerticalScroll?s:0;o=this.x+i;l=this.y+s;if(o>0||o0?0:this.maxScrollX}if(l>0||l0?0:this.maxScrollY}this.directionX=i>0?-1:i<0?1:0;this.directionY=s>0?-1:s<0?1:0;if(!this.moved){this._execEvent("scrollStart")}this.moved=true;this._translate(o,l);if(r-this.startTime>300){this.startTime=r;this.startX=this.x;this.startY=this.y}},_end:function(e){if(!this.enabled||n.eventType[e.type]!==this.initiated){return}if(this.options.preventDefault&&!n.preventDefaultException(e.target,this.options.preventDefaultException)){e.preventDefault()}var t=e.changedTouches?e.changedTouches[0]:e,i,s,r=n.getTime()-this.startTime,o=a.round(this.x),l=a.round(this.y),c=a.abs(o-this.startX),u=a.abs(l-this.startY),d=0,f="";this.isInTransition=0;this.initiated=0;this.endTime=n.getTime();if(this.resetPosition(this.options.bounceTime)){return}this.scrollTo(o,l);if(!this.moved){if(this.options.tap){n.tap(e,this.options.tap)}if(this.options.click){n.click(e)}this._execEvent("scrollCancel");return}if(this._events.flick&&r<200&&c<100&&u<100){this._execEvent("flick");return}if(this.options.momentum&&r<300){i=this.hasHorizontalScroll?n.momentum(this.x,this.startX,r,this.maxScrollX,this.options.bounce?this.wrapperWidth:0,this.options.deceleration):{destination:o,duration:0};s=this.hasVerticalScroll?n.momentum(this.y,this.startY,r,this.maxScrollY,this.options.bounce?this.wrapperHeight:0,this.options.deceleration):{destination:l,duration:0};o=i.destination;l=s.destination;d=a.max(i.duration,s.duration);this.isInTransition=1}if(o!=this.x||l!=this.y){if(o>0||o0||l0){t=0}else if(this.x0){a=0}else if(this.y-1){this._events[e].splice(a,1)}},_execEvent:function(e){if(!this._events[e]){return}var t=0,a=this._events[e].length;if(!a){return}for(;t0;if(!a||this.options.useTransition&&i.style){this._transitionTimingFunction(i.style);this._transitionTime(a);this._translate(e,t)}else{this._animate(e,t,a,i.fn)}},scrollToElement:function(e,t,i,s,r){e=e.nodeType?e:this.scroller.querySelector(e);if(!e){return}var o=n.offset(e);o.left-=this.wrapperOffset.left;o.top-=this.wrapperOffset.top;if(i===true){i=a.round(e.offsetWidth/2-this.wrapper.offsetWidth/2)}if(s===true){s=a.round(e.offsetHeight/2-this.wrapper.offsetHeight/2)}o.left-=i||0;o.top-=s||0;o.left=o.left>0?0:o.left0?0:o.top=u){r.isAnimating=false;r._translate(e,t);if(!r.resetPosition(r.options.bounceTime)){r._execEvent("scrollEnd")}return}f=(f-c)/a;m=s(f);h=(e-o)*m+o;p=(t-l)*m+l;r._translate(h,p);if(r.isAnimating){i(d)}}this.isAnimating=true;d()},handleEvent:function(e){switch(e.type){case"touchstart":case"pointerdown":case"MSPointerDown":case"mousedown":this._start(e);break;case"touchmove":case"pointermove":case"MSPointerMove":case"mousemove":this._move(e);break;case"touchend":case"pointerup":case"MSPointerUp":case"mouseup":case"touchcancel":case"pointercancel":case"MSPointerCancel":case"mousecancel":this._end(e);break;case"orientationchange":case"resize":this._resize();break;case"transitionend":case"webkitTransitionEnd":case"oTransitionEnd":case"MSTransitionEnd":this._transitionEnd(e);break;case"wheel":case"DOMMouseScroll":case"mousewheel":this._wheel(e);break;case"keydown":this._key(e);break;case"click":if(!e._constructed){e.preventDefault();e.stopPropagation()}break}}};s.utils=n;if(typeof module!="undefined"&&module.exports){module.exports=s}else{e.IScroll=s}})(window,document,Math);var g_localTime=new Date;var g_blogimages={};function MessageBox(e,t){e.find(".wh-message-box").remove();var a=$("");a.hide();a.addClass("wh-message-box");a.html(''+t+'
');a.click((function(){$(this).fadeOut()}));e.append(a[0]);a.fadeIn()}function Rectangle(e,t,a,i){this.l=e;this.t=t;this.r=e+a;this.b=t+i}Rectangle.prototype={intersectWith:function(e){return!(this.l>=e.r||e.l>=this.r||this.t>=e.b||e.t>=this.b)},contains:function(e){return this.l<=e.l&&this.t<=e.t&&this.r>=e.r&&this.b>=e.b},containedIn:function(e){return e.contains(this)}};WH.onLoad((()=>{const e=WH.SessionStorage;if(!(window.JSON&&e.isSupported())){return}let t=e.get(e.KEY_LISTVIEW_BROWSE);if(!t)return;let a=/^\/[a-z-]+(=|\/([\w-]*-)?)\d+[^?]*/i;let i=a.exec(location.pathname);if(!i)return;i=i[0];var n=function(e,t){if(!t){return WH.ce("i",{className:"fa fa-"+e})}return WH.ce("a",{className:"fa fa-"+e,href:t})};for(var s=0;s0?r[o-1]:false;var c=o+1").addClass("wsach-pts");s.mouseover((function(e){WH.Tooltips.showAtCursor(e,WH.TERMS.reputationtip,"q")})).mousemove((function(e){WH.Tooltips.cursorUpdate(e)})).mouseout((function(){WH.Tooltips.hide()}));s.addClass("q1");s.text(WH.numberFormat(i));var r=$("");r.append(" (");r.append(s);r.append(" – ");r.append(n);r.append(") ");return r};WH.getAchievementText=function(e,t,a,i){var n=$("").addClass("wsach-pts");n.mouseover((function(e){WH.Tooltips.showAtCursor(e,WH.TERMS.userachcount_tip,"q")})).mousemove((function(e){WH.Tooltips.cursorUpdate(e)})).mouseout((function(){WH.Tooltips.hide()}));var s=" ";if(!i){s+=" ("}if(e){s+=""+e+""+"·"}if(t){s+=""+t+""+"·"}if(!a){a=0}s+=""+a+"";if(!i){s+=")"}n.html(s);return n};WH.formatTimeElapsed=function(e){const t={abbreviated:[WH.TERMS.year_abbrev,WH.TERMS.month_abbrev,WH.TERMS.week_abbrev,WH.TERMS.day_abbrev,WH.TERMS.hour_abbrev,WH.TERMS.minute_abbrev,WH.TERMS.second_abbrev],singular:[WH.TERMS.year_lc,WH.TERMS.month_lc,WH.TERMS.week_lc,WH.TERMS.day_lc,WH.TERMS.hour_lc,WH.TERMS.minute_lc,WH.TERMS.second_lc],plural:[WH.TERMS.years_lc,WH.TERMS.months_lc,WH.TERMS.weeks_lc,WH.TERMS.days_lc,WH.TERMS.hours_lc,WH.TERMS.minutes_lc,WH.TERMS.seconds_lc]};function a(e,a,i){if(i){return e+" "+t.abbreviated[a]}else{return e+" "+(e==1?t.singular[a]:t.plural[a])}}var i=[31557600,2629800,604800,86400,3600,60,1];var n=[1,3,3,-1,5,-1,-1];e=Math.max(e,1);for(var s=3,r=i.length;s=i[s]){var o=s;var l=Math.floor(e/i[o]);if(n[o]!=-1){var c=n[o];e%=i[o];var u=Math.floor(e/i[c]);if(u>0){return a(l,o,1)+" "+a(u,c,1)}}return a(l,o,0)}}return"(n/a)"};WH.formatDate=function(e,t,a,i,n){var s=new Date;var r=new Date;r.setTime(s.getTime()-1e3*t);var o;var l=new Date(r.getYear(),r.getMonth(),r.getDate());var c=new Date(s.getYear(),s.getMonth(),s.getDate());var u=c.getTime()-l.getTime();u/=1e3;u/=86400;u=Math.round(u);if(t>=2592e3||t<0){o=WH.TERMS.on_lc+WH.formatDateSimple(a,i)}else if(u>1){o=WH.sprintf(WH.TERMS.daysago_format,u);if(e){var d=new Date;d.setTime(a.getTime()+(g_localTime-WH.getServerTime()));e.className+=" tip";e.title=d.toLocaleString()}}else if(t>=43200){if(s.getDay()==r.getDay()){o=WH.TERMS.today_lc}else{o=WH.TERMS.yesterday_lc}o=WH.formatTimeSimple(r,o);if(e){var d=new Date;d.setTime(a.getTime()+(g_localTime-WH.getServerTime()));e.className+=" tip";e.title=d.toLocaleString()}}else{o=WH.sprintf(WH.TERMS.ago2_format,WH.formatTimeElapsed(t));if(e){var d=new Date;d.setTime(a.getTime()+(g_localTime-WH.getServerTime()));e.className+=" tip";e.title=d.toLocaleString()}}if(n==1){o=o.substr(0,1).toUpperCase()+o.substr(1)}if(e){WH.ae(e,WH.ct(o))}else{return o}};WH.formatDateSimple=function(e,t){function a(e){return e<10?"0"+e:e}var i="",n=e.getDate(),s=e.getMonth()+1,r=e.getFullYear();if(r<=1970){i+=WH.TERMS.unknowndate_stc}else{i+=WH.sprintf(WH.TERMS.date3_format,a(n),a(s),r)}if(t!=null){i=WH.formatTimeSimple(e,i)}return i};WH.formatTimeSimple=function(e,t,a){function i(e){return e<10?"0"+e:e}var n=e.getHours(),s=e.getMinutes();if(t==null){t=""}t+=a?" ":WH.TERMS.at_lc;if(n==12){t+=WH.TERMS.noon_lc}else if(n==0){t+=WH.TERMS.midnight_lc}else if(n>12){t+=n-12+":"+i(s)+" "+WH.TERMS.pm}else{t+=n+":"+i(s)+" "+WH.TERMS.am}return t};WH.formatStartEndDates=function(e,t){if(!e&&!t){return""}var a=false;var i=false;if(e)a=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate());if(t)i=new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());var n="";if(!i){n=WH.TERMS.starts+" "+a.toLocaleDateString()}else if(!a){n=WH.TERMS.ends+" "+i.toLocaleDateString()}else{var s=function(){try{(new Date).toLocaleDateString("i")}catch(e){return e.name==="RangeError"}return false}();var r={month:"long",year:"numeric"};var o="",l="",c=0;if(s&&a.getDate()==1){o=a.toLocaleDateString(undefined,r);c++}else{o=a.toLocaleDateString()}if(s&&new Date(i.valueOf()+36*60*60*1e3).getMonth()!=i.getMonth()){l=i.toLocaleDateString(undefined,r);c++}else{l=i.toLocaleDateString()}if(o==l){n=o}else if(c==1){n=a.toLocaleDateString()+" - "+i.toLocaleDateString()}else{n=o+" - "+l}}return n};WH.createProgressBar=function(e){if(e==null)e={};if(typeof e.text=="undefined"){e.text=" "}if(e.color==null){e.color="rep0"}if(e.width==null||e.width>100){e.width=100}var t,a;if(e.hoverText){t=WH.ce("a");t.href="javascript:"}else{t=WH.ce("span")}t.className="progressbar";if(e.text||e.hoverText){a=WH.ce("div");a.className="progressbar-text";if(e.text){var i=WH.ce("del");WH.ae(i,WH.ct(e.text));WH.ae(a,i)}if(e.hoverText){var n=WH.ce("ins");WH.ae(n,WH.ct(e.hoverText));WH.ae(a,n)}WH.ae(t,a)}a=WH.ce("div");a.className="progressbar-"+e.color;a.style.width=e.width+"%";if(e.height){a.style.height=e.height}WH.ae(a,WH.ct(WH.Strings.nbsp));WH.ae(t,a);if(e.text){var a=WH.ce("div");a.className="progressbar-text progressbar-hidden";WH.ae(a,WH.ct(e.text));WH.ae(t,a)}return t};WH.createReputationBar=function(e,t){if(!t){t=0}var a=WH.getReputationProgress(t);var i=a.length>0?a[a.length-1][1]+999:0;if(!e)e=0;if(e<0){e=0}else if(e>i){e=i}var n=e,s=0,r,o=i;if(i!=0){while(s0?"(+"+i+")":"")+(t>0?" / "+t:""),color:a?"rep7":"ach"+(t>0?0:1),width:t>0?parseInt(e/t*100):100};return WH.createProgressBar(n)};WH.addCompletionIcons=function(e,t,a,i){var n=0;let s;if(t===WH.Types.TRANSMOG_SET){s=typeof a==="object"?a:WH.getPageData("transmog-set-detail-completion")}for(var r in g_user.lists){if(!g_user.lists.hasOwnProperty(r)){continue}let o=g_user.lists[r];if(!o.character){continue}let l=0;if(t===WH.Types.TRANSMOG_SET){l=WH.Wow.TransmogSet.getCompletionAmount(s,o.id);if(l==null){continue}}else{let e=WH.User.Completion.getByType(t);if(!e.hasOwnProperty(o.id)){continue}l=e[o.id].includes(a)?1:0}if(i&&!l){continue}WH.ae(e,WH.createCompletionIcon(o,l));n++}if(t===WH.Types.QUEST&&g_user.characterProfiles&&g_user.characterProfiles.length){for(var o,r=0;o=g_user.characterProfiles[r];r++){var l=WH.inArray(o.quests,a)!=-1;if(i&&!l){continue}WH.ae(e,WH.createCompletionIcon({classs:o["class"],character:o.name,realm:o.realm},l?1:0));n++}}return n};WH.createCompletionIcon=function(e,t,a){var i=WH.ce("a");if(e.url){i.href=WH.Profiler.getPath(e)}i.className="progress-icon progress-"+(t?Math.max(1,Math.floor(t*8)):0);WH.Tooltips.attach(i,WH.getCompletionTooltip(e,t));if(a){i.rel=a}return i};WH.getCompletionTooltip=function(e,t){let a=WH.ce("div");WH.ae(a,WH.ce("span",{className:"q"},WH.ct((t>=1?WH.TERMS.complete:WH.TERMS.incomplete)+WH.TERMS.colon_punct)));WH.ae(a,WH.ce("br"));let i=WH.ce("span",{style:{whiteSpace:"nowrap"}});WH.ae(a,i);WH.ae(i,WH.ce("b",{className:"c"+e.classs},WH.ct(e.character)));let n=[WH.Strings.nbsp,e.realm];if(e.hasOwnProperty("region")){n.push(e.region)}WH.ae(i,WH.ce("span",{className:"q0"},WH.ct(n.join(" "))));if(t>0&&t<1){WH.ae(i,WH.ct(WH.Strings.sprintf(WH.TERMS.parens_format,"",Math.round(t*100)+"%")))}return a.innerHTML};WH.getCompletionFlags=function(e,t){var a=0;var i=g_user.lists||[];let n=WH.User.Completion.getByType(e);for(var s=i.length-1;s>=0;s--){var r=i[s];if(!(r.id in n)||!r.character){continue}a=a<<1|(n[r.id].includes(t)?1:0)}if(e==="quest"&&g_user.characterProfiles&&g_user.characterProfiles.length){for(var s=g_user.characterProfiles.length-1;s>=0;s--){var o=g_user.characterProfiles[s];var l=WH.inArray(o.quests,t)!=-1;a=a<<1|(l?1:0)}}return a};WH.preventPageScroll=function(e){var t=e.originalEvent&&e.originalEvent.wheelDelta||e.originalEvent&&-e.originalEvent.detail||e.wheelDelta||-e.detail;this.scrollTop+=(t<0?1:-1)*100;e.preventDefault()};WH.pickerWheel=function(e){e.preventDefault();if(e.deltaY>0){this.scrollTop+=100}else{this.scrollTop-=100}};WH.setSelectedLink=function(e,t){if(!WH.setSelectedLink.groups){WH.setSelectedLink.groups={}}var a=WH.setSelectedLink.groups;if(a[t]){a[t].className=a[t].className.replace("selected","")}e.className+=" selected";a[t]=e};WH.addPagination=function(e,t){function a(e,a){var i;if(e==t.page){i=WH.ce("span");i.className="selected"}else{i=WH.ce("a");i.href=e>1?t.url+t.sep+e+t.pound:t.url+t.pound}WH.ae(i,WH.ct(a!=null?a:e));return i}if(!t.pound){t.pound=""}if(!t.sep){t.sep="."}if(t.allOrNothing&&t.nPages<=1){return}var i=t.align&&t.align=="left";var n=WH.ce("div"),s,r=WH.ce("var");n.className="pages";if(i){n.className+=" pages-left"}if(t.nPages>1){s=WH.ce("div");s.className="pages-numbers";var o=Math.max(2,t.page-2);var l=Math.min(t.nPages-1,t.page+2);var c=[];if(t.page!=t.nPages){c.push(a(t.page+1,String.fromCharCode(187)))}c.push(a(t.nPages));if(l=o;--d){c.push(a(d))}if(o>2){var u=WH.ce("span");WH.ae(u,WH.ct("..."));c.push(u)}c.push(a(1));if(t.page!=1){c.push(a(t.page-1,String.fromCharCode(171)))}if(i){c.reverse()}for(var d=0,f=c.length;d1){var u=WH.ce("span");WH.ae(u,WH.ct(String.fromCharCode(8211)));WH.ae(r,u);var h=WH.ce("a");h.className="go-to-page fa fa-files-o";h.href="javascript:";h.onclick=function(){var e=prompt(WH.sprintf(WH.TERMS.gotopage_format,1,t.nPages),t.page);if(e!=null){e|=0;if(e!=t.page&&e>=1&&e<=t.nPages){document.location.href=e>1?t.url+t.sep+e+t.pound:t.url+t.pound}}};h.onmouseover=function(e){WH.Tooltips.showAtCursor(e,WH.TERMS.gotopage_tip,"q2")};h.onmousemove=WH.Tooltips.cursorUpdate;h.onmouseout=WH.Tooltips.hide;WH.ae(r,h)}if(i){WH.ae(n,r);if(s){WH.ae(n,s)}}else{if(s){WH.ae(n,s)}WH.ae(n,r)}WH.ae(e,n)};WH.disclose=function(e,t){let a=WH.toggleDisplay(e,true);t.classList.remove("disclosure-"+(a?"off":"on"));t.classList.add("disclosure-"+(a?"on":"off"));return false};WH.toggle=function(e){let t=WH.toggleDisplay(e,true);this.classList.remove("toggler-"+(t?"off":"on"));this.classList.add("toggler-"+(t?"on":"off"));return false};WH.setupChangeWarning=function(e,t,a){if(!e){return}function i(){return a}e.submit((function(){window.onbeforeunload=null}));var n=[];for(var s in t){var r=t[s];if(!r){continue}n[s]=r.val();r.keydown((function(){for(var e in t){var a=t[e];if(!a){continue}if(a.val()!=n[e]){window.onbeforeunload=i;return}window.onbeforeunload=null}}))}};$(document).ready((function(){WH.qsa("dfn[title]").forEach((function(e){let t=e.title;e.removeAttribute("title");e.classList.add("tip");WH.Tooltips.attach(e,t,"q",{byCursor:true,maxWidth:250})}));$(".text").bind("copy",(function(){$("*[unselectable]",this).each((function(e,t){var a=$(t).text();$(t).text("");setTimeout((function(){$(t).text(a)}),1)}))}))}));$(document).ready((function(){$("input").each((function(){var e=$(this).attr("maxlength");var t=$(this).attr("data-charwarning");var a=t?$("#"+t):null;if(!e||!a){return}var i=function(){a.hide()};var n=function(t){var i=e-t;var n=t/e;var s=parseInt(n>=.5?255:n*2*255).toString(16);var r=parseInt(n<.5?255:255-(n-.5)*2*255).toString(16);if(s.length==1){s="0"+s}if(r.length==1){r="0"+r}a.text(WH.sprintf(WH.TERMS.charactersremaining_format,i));a.show();a.css("color","#"+s+r+"00")};$(this).focus((function(){n($(this).val().length)})).blur((function(){i()})).keyup((function(){n($(this).val().length)}))}))}));WH.getN5=function(e){var t=Math.abs(e);if(t<1e4){return WH.numberFormat(e)}if(t<1e5){return Math.round(e/100)/10+"k"}if(t<1e6){return Math.round(e/1e3)+"k"}if(t<1e7){return Math.round(e/1e3/10)/100+"m"}if(t<1e8){return Math.round(e/1e3/100)/10+"m"}if(t<1e9){return Math.round(e/1e3/1e3)+"m"}if(t<1e10){return Math.round(e/1e3/1e3/10)/100+"b"}if(t<1e10){return Math.round(e/1e3/1e3/100)/10+"b"}return Math.round(e/1e3/1e3/1e3)+"b"};WH.debug=function(e){if(!WH.isDev()&&!WH.User?.hasRole(WH.User.ROLE_ADMIN)){WH.debug=()=>{};return}WH.debug=function(){console.debug.apply(console.debug,Array.prototype.slice.call(arguments))};WH.debug.apply(WH,Array.prototype.slice.call(arguments))};WH.decodeNumber=function(e,t){var a=0;e=e+"";var i=1;while(e.length>0){var n=e.charAt(e.length-1);var s=t.indexOf(n);if(s===-1){return null}a+=s*i;i*=t.length;e=e.substr(0,e.length-1)}return a};WH.encodeNumber=function(e,t){var a=t.length;var i=[e];while(i[0]>a){var n=Math.floor(i[0]/a);i[0]=i[0]-n*a;i.unshift(n)}var s="";for(var r=0,o=i.length;rs){return a-s}if(t{if(a.hasOwnProperty(e)){s[e]=a[e]}}));var r=new MutationObserver(n);i.observer=r;r.observe(e,s)};WH.getMajorHeading=function(e,t,a,i){if(isNaN(t)||t<1||t>6){t=2}if(isNaN(a)||a<1||a>6){a=t}var n=["heading-size-"+a];return WH.constructHeading("h"+t,e,n,i)};WH.getImitationHeading=function(e,t,a){if(isNaN(t)||t<1||t>6){t=2}var i=["imitation-heading","heading-size-"+t];return WH.constructHeading("div",e,i,a)};WH.constructHeading=function(e,t,a,i){if(typeof i!="object"){i={}}if(typeof i.classes=="string"){a.push(i.classes)}var n=WH.ce(e);n.className=a.join(" ");if(typeof i.styles=="string"){n.style=i.styles}if(typeof i.id=="string"){n.id=i.id}if(typeof t=="string"){n.innerHTML=t}else if(t.nodeType===Node.ELEMENT_NODE||t.nodeType===Node.TEXT_NODE){n.appendChild(t)}else{$(n).append(t)}return n};WH.clickToCopy=function(e,t,a){a=a||{};WH.aE(e,"click",WH.clickToCopy.copy.bind(null,e,t,a));WH.preventSelectStart(e);e.classList.add("click-to-copy");if(a.modifyTooltip){e._fixTooltip=function(e){return e+"
"+WH.ce("span",{className:"q2",innerHTML:WH.clickToCopy.getTooltip(false,a)}).outerHTML};a.overrideOtherTooltips=false}WH.Tooltips.attach(e,WH.clickToCopy.getTooltip.bind(null,false,a),undefined,{byCursor:!a.attachToElement,stopPropagation:a.overrideOtherTooltips})};WH.clickToCopy.copy=function(e,t,a,i){i.preventDefault();i.stopPropagation();if(t===undefined){if(!e.childNodes[0]||!e.childNodes[0].textContent){let t="Could not find text to copy.";WH.error(t,e);if(a.attachToElement){WH.Tooltips.show(e,t,"q10")}else{WH.Tooltips.showAtCursor(i,t,"q10")}return}t=e.childNodes[0].textContent}else if(typeof t==="function"){t=t()}WH.copyToClipboard(t);if(a.attachToElement){WH.Tooltips.show(e,WH.clickToCopy.getTooltip(true,a))}else{WH.Tooltips.showAtCursor(i,WH.clickToCopy.getTooltip(true,a))}};WH.clickToCopy.getTooltip=function(e,t){let a="";let i=undefined;if(e){a=" "+WH.TERMS.copied;i={className:"q1 fa fa-check"}}else{a=WH.TERMS.clickToCopy}let n=WH.ce("div",i,WH.ct(a));if(t.prefix){n.style.marginTop="10px";let e=typeof t.prefix==="function"?t.prefix():t.prefix;return e+n.outerHTML}return n.outerHTML};WH.copyToClipboard=function(e,t){if(!WH.copyToClipboard.hiddenInput){WH.copyToClipboard.hiddenInput=WH.ce("textarea",{className:"hidden-element"});WH.ae(document.body,WH.copyToClipboard.hiddenInput)}WH.copyToClipboard.hiddenInput.value=e;let a=WH.copyToClipboard.hiddenInput.value==="";if(a){WH.copyToClipboard.hiddenInput.value=WH.TERMS.nothingToCopy_tip}WH.copyToClipboard.hiddenInput.focus();WH.copyToClipboard.hiddenInput.select();if(!document.execCommand("copy")){prompt(null,e)}WH.copyToClipboard.hiddenInput.blur();if(t){if(a){WH.Tooltips.showFadingTooltipAtCursor(WH.TERMS.nothingToCopy_tip,t,"q10")}else{let e=WH.ce("span",{className:"q1 fa fa-check"},WH.ct(" "+WH.TERMS.copied));WH.Tooltips.showFadingTooltipAtCursor(e.outerHTML,t)}}};WH.createRange=function(e,t){var a={};for(var i=e;i<=t;++i){a[i]=i}return a};WH.objectToArray=function(e,t){var a=[];for(var i in e){if(e.hasOwnProperty(i)){a.push({property:i,value:e[i]})}}if(t){a.sort((function(e,a){return WH.stringCompare(e[t],a[t])}))}return a};WH.sortIdArray=function(e,t,a){e.sort(a?function(e,i){return WH.stringCompare(t[e][a],t[i][a])}:function(e,a){return WH.stringCompare(t[e],t[a])})};WH.sortJsonArray=function(e,t,a,i){var n=[];for(var s in e){if(e.hasOwnProperty(s)&&t[s]&&(i==null||i(t[s]))){n.push(s)}}if(a!=null){n.sort(a)}else{WH.sortIdArray(n,t)}return n};WH.sortObjectArray=function(e,t){for(var a=0,i;i=t[a];a++){var n=1;if(i.substr(0,1)==="-"){n=-1;i=i.substr(1)}e.sort(function(e,t,a,i){if(a[e]===i[e]){return 1*t}if(typeof a[e]==="string"||typeof i[e]==="string"){return WH.stringCompare(""+a[e],""+i[e])*t}return(a[e]>i[e]?1:-1)*t}.bind(null,i,n))}};WH.isEqualSimpleObject=function(e,t){for(var a in e){if(typeof e[a]=="object"){if(typeof t[a]!="object")return false;if(!WH.isEqualSimpleObject(e[a],t[a]))return false}else{if(e[a]!==t[a])return false}}for(var i in t){if(typeof t[i]=="object"){if(typeof e[i]!="object")return false;if(!WH.isEqualSimpleObject(e[i],t[i]))return false}else{if(e[i]!==t[i])return false}}return true};WH.deUrlize=function(e){var t=e.split("-");var a="";for(var i=0;i64){return false}return e.match(/^([a-z0-9._-]+)(\+[a-z0-9._-]+)?(@[a-z0-9.-]+\.[a-z]{2,})$/i)!=null};WH.getCurrentDomain=function(){if(WH.getCurrentDomain.CACHE){return WH.getCurrentDomain.CACHE}var e=location.hostname;if(!WH.isIpAddress(e)){var t=e.split(".");if(t.length>2){t.splice(0,t.length-2)}e=t.join(".")}WH.getCurrentDomain.CACHE=e;return e};WH.isExternalUrl=function(e){return!(!e||e.indexOf("http")!=0&&e.indexOf("//")!=0||e.indexOf("wowhead.com")!=-1||e.indexOf("wowheadnews.")!=-1||e.indexOf(WH.getCurrentDomain())!=-1)};WH.getRelativeHostPrefix=function(){var e=true;if(WH.isDev()){e=location.protocol==="https:"}var t=e?"_https":"_http";if(!WH.getRelativeHostPrefix.CACHE){WH.getRelativeHostPrefix.CACHE={}}if(t in WH.getRelativeHostPrefix.CACHE){return WH.getRelativeHostPrefix.CACHE[t]}var a="";if(e!==(location.protocol==="https:")&&!/^[0-9\.]+$/.test(location.hostname)){var i=/^([\w\W]*)\.[^\.]+\.com$/.exec(location.hostname);i=i?i[1]:"www";var n="";if(location.port){n=location.port}if(n.substr(0,1)!==":"){n=":"+n}if(n===":80"||n===":"){n=""}a="https://"+i+".wowhead.com"+n}if(!e){a=a.replace(/^https:/,"http:")}WH.getRelativeHostPrefix.CACHE[t]=a;return a};WH.fixWowheadHttps=function(e){return e.replace(/\bhttp:(\/\/(?:[^\/:]+\.)?(?:wowhead\.com|zamimg\.com)[:\/])/g,"https:$1")};WH.goToLoginPage=function(e){window.location=WH.Url.getLoginPath(e)};WH.createOrRegex=function(e,t){e=e.replace(/(\(|\)|\|\+|\*|\?|\$|\^)/g,"\\$1");var a=e.split(" "),i="";for(var n=0,s=a.length;n0){i+="|"}i+=a[n]}return new RegExp((t!=null?"("+t+")?":"")+"("+i+")","gi")};WH.getHash=function(){return"#"+decodeURIComponent(location.href.split("#")[1]||"")};WH.modifyUrl=function(e,t,a,i){if(!a){a=$.noop}var n="";if(e.match(/(#.+)$/)){n=RegExp.$1;e=e.replace(n,"")}if(typeof a.custom=="function"){e=a.custom(e,i)}if(a.returnAfterCustom){return e+n}$.each(t,(function(t,i){var n;var s;var r;var o=e.match(new RegExp("(&|\\?)?"+t+"=?([^&]+)?"));if(o!=null){n=o[0];s=o[1];r=decodeURIComponent(o[2])}if(i==null){if(!n)return;r=null}else if(i.substr(0,2)=="+="){if(r&&a.onAppendCollision){r=a.onAppendCollision(r,i.substr(2),a.menuUrl)}else if(!r&&a.onAppendEmpty){r=a.onAppendEmpty(i.substr(2),a.menuUrl)}else{if(!r)r="";r+=$.trim(i.substr(2))}}else{r=i}if(n){var l="";if(s){l+=s}if(r!=null){l+=t;if(r){l+="="+WH.urlEncodeHref(r)}}e=e.replace(n,l)}else if(r||i==null||i.substr(0,2)!="+="){e+=(/[&?]/.test(e)?"&":"?")+t;if(r){e+="="+WH.urlEncodeHref(r)}}}));e=e.replace("?&","?");e=e.replace(/&&/g,"&");e=e.replace(/\/\?/g,"/");e=e.replace(/(&|\?)+$/,"");return e+n};WH.pageWasReloaded=function(){if(window.performance){if(performance.getEntriesByType){var e=performance.getEntriesByType("navigation");for(var t=0;t",{class:"enhanced-textarea-wrapper"}).insertBefore(e).append(e);if(!t.hasOwnProperty("dynamicSizing")||t.dynamicSizing||t.dynamicResizeOption){var r=$("",{class:"enhanced-textarea-expander"}).prependTo(s);r.css("width",r.parent().width()+"px");var o=function(e,t,a,i){if(!i()){return}var n=e.val()||e.attr("placeholder")||"";if(n){n=WH.htmlEntities(n)}t.html(n.replace(/\n/g,"
")+"
");var s=t.height()+(a?14:34);e.css("height",s+"px")};e.bind("keydown keyup change",o.bind(this,e,r,t.exactLineHeights,i));o(e,r,t.exactLineHeights,i);setTimeout(o.bind(this,e,r,t.exactLineHeights,i),100);if(!t.dynamicResizeOption||t.dynamicResizeOption&&i()){s.addClass("enhanced-textarea-dynamic-sizing")}}if(t.markup){var l=$("",{class:"enhanced-textarea-markup-wrapper"}).prependTo(s);var c=$("",{class:"enhanced-textarea-markup"}).appendTo(l);var u=$("",{class:"enhanced-textarea-markup-segment"}).appendTo(c);var d=$("",{class:"enhanced-textarea-markup-segment"}).appendTo(c);if(t.markup==="inline"){WH.markup.Toolbar.addInline(e.get(0),u.get(0),d.get(0))}else{WH.markup.Toolbar.addStandard(e.get(0),u.get(0),d.get(0))}if(t.dynamicResizeOption){var f=$("",{class:"enhanced-textarea-markup-segment"}).appendTo(c);var h=$("").appendTo(f);var p=$("",{type:"checkbox",checked:i()}).appendTo(h);p.change(function(e,t,i,n,s,r){var o=this.is(":checked");a.set(a.KEY_TEXTAREA_DYNAMIC_SIZING,o);if(o){t.addClass("enhanced-textarea-dynamic-sizing");r(i,e.exactLineHeights,n)}else{t.removeClass("enhanced-textarea-dynamic-sizing");i.css("height",s+"px")}}.bind(p,t,s,e,i,n,o));$("",{text:WH.TERMS.autoresizetextbox}).appendTo(h)}if(t.scrollingMarkup){if(WH.enhanceTextarea.scrollerCount){WH.enhanceTextarea.scrollerCount++}else{WH.enhanceTextarea.scrollerCount=1}var m="fixable-markup-controls-"+WH.enhanceTextarea.scrollerCount;var H="fixed-markup-controls-"+WH.enhanceTextarea.scrollerCount;var g=function(e){var t=e.css("backgroundColor");if(t=="rgba(0, 0, 0, 0)"||t=="transparent"){return g(e.parent())}else{return t}};var W=g(c);for(var E,_=0;(E=window.document.styleSheets[_])&&E.href;_++){}if(!E){window.document.head.appendChild(document.createElement("style"));E=window.document.styleSheets[_]}var T="."+H+" ."+m+" .enhanced-textarea-markup";E.insertRule(T+" {background:"+W+";padding-bottom:5px;padding-top:10px;position:fixed;top:0;z-index:3}",E.cssRules.length);E.insertRule('body[data-zul-bar="true"]'+T+" {padding-top: 50px}",E.cssRules.length);l.addClass(m);var v=function(e,t,a){let i=ZUL.getEnabled()?ZUL.HEIGHT:0;var n=this.scrollY||this.pageYOffset||0;if(n>e.offset().top-10-i&&n';WH.setupSmoothNavClicks=function(e){var t=$(".smooth-nav-inner > a",e);if(!t.length){setTimeout(WH.setupSmoothNavClicks.bind(null,e),9);return}let a=WH.Device.isTouch();t.each((function(){var e=this.href.replace(new RegExp("^"+location.href.replace(/#.*/,"")),"");if(e&&e.substr(0,1)==="#"){$(this).click(function(e,t){if(t.which===2){return}var i=e==="#top"?0:$(e).offset().top-20;if(isNaN(i)){return}if(a){i-=37}$("html, body").stop().animate({scrollTop:i},"500","swing");return false}.bind(null,e))}}))};WH.countdownClock=function(e){var t=$(e.element||"#countdown-clock-"+e.id);if(!t.length){return}var a;if(e.url){a=$("",{href:e.url,target:"_blank"})}else{a=$("
")}a.addClass("countdown-clock-content").css({"background-image":"url("+e.bg+")"});var i=$("",{class:"countdown-clock-content-inner"}).appendTo(a);if(e.impressionImage){$("",{src:e.impressionImage,css:{bottom:0,height:"1px",position:"absolute",right:0,width:"1px"}}).appendTo(a)}if(e.text){i.append($("",{class:"countdown-clock-text",html:e.text}))}var n=$("",{class:"countdown-clock-time"}).appendTo(i);var s=$("").appendTo(n);var r=$("
").appendTo(s);var o=$("
").appendTo(s);$(" | ").appendTo(r);$(" | ",{html:":"}).appendTo(r);$(" | ").appendTo(r);$(" | ",{html:":"}).appendTo(r);$(" | ").appendTo(r);$(" | ",{html:WH.TERMS.days_lc}).appendTo(o);$(" | ").appendTo(o);$(" | ",{html:WH.TERMS.hours_lc}).appendTo(o);$(" | ").appendTo(o);$(" | ",{html:WH.TERMS.minutes_lc}).appendTo(o);t.addClass("countdown-clock").append(a);var l={days:0,hours:0,minutes:0};var c=(new Date).getTime();var u=c;if(typeof e.time==="string"){u=new Date(e.time).getTime()}else if(typeof e.time==="object"){var d=new Date;if(!e.time.hasOwnProperty("year")){e.time.year=d.getFullYear()}if(!e.time.hasOwnProperty("month")){e.time.month=d.getMonth+1}if(!e.time.hasOwnProperty("day")){e.time.day=d.getDay()}if(!e.time.hasOwnProperty("hour")){e.time.hour=0}if(!e.time.hasOwnProperty("minute")){e.time.minute=0}if(!e.time.hasOwnProperty("second")){e.time.second=0}u=new Date(e.time.year,e.time.month-1,e.time.day,e.time.hour,e.time.minute,e.time.second).getTime()}var f=parseInt((u-c)/1e3);var h=60;var p=h*60;var m=p*24;l.days=parseInt(f/m);f=f-l.days*24*60*60;l.hours=parseInt(f/p);f=f-l.hours*60*60;l.minutes=parseInt(f/h);var H=function(e,t,a){if(t.days<=0&&t.hours<=0&&t.minutes<=0){e.html(a.completionText).parent().parent().addClass("countdown-clock-complete");return}$("tr:first-child > td:nth-child(1)",e).html(t.days);$("tr:last-child > td:nth-child(1)",e).html(t.days===1?WH.TERMS.day_lc:WH.TERMS.days_lc);$("tr:first-child > td:nth-child(3)",e).html(t.hours);$("tr:last-child > td:nth-child(3)",e).html(t.hours===1?WH.TERMS.hour_lc:WH.TERMS.hours_lc);$("tr:first-child > td:nth-child(5)",e).html(t.minutes);$("tr:last-child > td:nth-child(5)",e).html(WH.TERMS.minute_abbrev);t.minutes--;if(t.minutes<0){if(t.hours>0||t.days>0){t.minutes=59}else{t.minutes=0}t.hours--}if(t.hours<0){if(t.days>0){t.hours=23}else{t.hours=0}t.days--}if(t.days<0){t.days=0}setTimeout(H.bind(null,e,t,a),6e4)};H(n,l,e)};WH.slashHashEvent=null;try{WH.slashHashEvent=new Event("slashhash")}catch(e){try{WH.slashHashEvent=document.createEvent("Event");WH.slashHashEvent.initEvent("slashhash",true,true)}catch(e){}}WH.getSlashHash=function(e){var t=""+location.href;var a=t.indexOf(e);if(a==-1){return location.hash?(""+location.hash).replace(/^#/,""):""}var i=t.substr(0,a+e.length);return t.substr(i.length+1)};WH.setSlashHash=function(e,t,a){var i=""+location.href;var n=i.indexOf(e);if(n==-1){alert("Bad hash update: No root found!");return}var s=i.substr(0,n+e.length);var r=i.substr(s.length+1);if(t.substr(0,1)=="#"){t=t.substr(1)}var o=t?"/"+t:"";if(a){WH.Url.pushHistory(s+o);if(WH.slashHashEvent){dispatchEvent(WH.slashHashEvent)}}else{WH.Url.replaceHistory(s+o);if(WH.slashHashEvent){dispatchEvent(WH.slashHashEvent)}}return r};WH.setHash=function(e,t){let a=""+location.hash;if(!e.startsWith("#")){e="#"+e}if(e==="#."){WH.clearHash(t||false)}else{if(t){WH.Url.pushHistory(location.pathname+e)}else{WH.Url.replaceHistory(location.pathname+e)}}return a};WH.clearHash=function(e){var t=""+location.hash;var a=(""+location.href).replace(/#.*/,"");if(e){if(window.history){window.history.pushState({},"",a)}else{location.hash="#."}}else{if(window.history){window.history.replaceState({},"",a)}else{location.replace("#.")}}return t};WH.selectText=function(e){var t=document,a=t.getElementById(e),i,n;if(t.body.createTextRange){i=document.body.createTextRange();i.moveToElementText(a);i.select()}else if(window.getSelection){n=window.getSelection();i=document.createRange();i.selectNodeContents(a);n.removeAllRanges();n.addRange(i)}};WH.ucfirst=function(e){return e.charAt(0).toUpperCase()+e.slice(1)};WH.loadAssets=function(e,t,a){const i=WH.Game;let n=function(e,t){var a=WH.ce("link");a.rel="stylesheet";if(WH.PageMeta.scriptVersionQueryString){if(e.indexOf("?")<0){e+="?"+WH.PageMeta.scriptVersionQueryString}else{e=e.replace(/\?/,"?"+WH.PageMeta.scriptVersionQueryString+"&")}}a.href=e;if(t){WH.aE(a,"load",t)}WH.ae(document.getElementsByTagName("head")[0],a)};var s=function(e,t,a){var i=WH.ce("script");i.type="text/javascript";if(a&&WH.PageMeta.scriptVersionQueryString){if(e.indexOf("?")<0){e+="?"+WH.PageMeta.scriptVersionQueryString}else{e=e.replace(/\?/,"?"+WH.PageMeta.scriptVersionQueryString+"&")}}i.src=e;if(t){WH.aE(i,"load",t)}WH.ae(document.getElementsByTagName("head")[0],i)};switch(e){case"artifact-weapon-calc":if(WH.isSet("ArtifactCalc")){if(t){t()}return}n(WH.STATIC_URL+"/css/tools/artifact-calc.css");var r=WH.STATIC_URL+"/js/ArtifactCalc.js";if(WH.isSet("g_artifact_textures")){s(r,t,true)}else{var o=WH.Url.getDataPageUrl("artifact-calc");s(o,s.bind(null,r,t,true))}break;case"azerite-finder":if(WH.Wow.AzeriteFinder){if(t){t()}return}n(WH.STATIC_URL+"/css/tools/azerite-finder.css");s(WH.STATIC_URL+"/js/WH/Wow/AzeriteFinder.js",t,true);break;case"build-summary":if(WH.Wow.BuildSummary){if(t){t()}return}let d=2;let f=()=>--d<=0&&t&&t();n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}tools/build-summary.css`,f);s(WH.Url.getDataPageUrl("item-bonuses",a),(()=>{s(WH.STATIC_URL+"/js/WH/Wow/BuildSummary.js",f,true)}));break;case"di-paragon-skill-calc":if(WH.DI.ParagonCalc&&WH.DI.ParagonCalc.Shell){if(t){t()}break}WH.Fonts.load(i.DI);n(WH.STATIC_URL+"/css/tools/partials/paragon-calc.css");n(WH.STATIC_URL+"/css/tools/paragon-calc-shell.css");s(WH.Url.getDataPageUrl("paragon-calc",WH.dataEnv.DI),(()=>{s(WH.STATIC_URL+"/js/WH/DI/ParagonCalc.js",(()=>{s(WH.STATIC_URL+"/js/WH/DI/ParagonCalc/Shell.js",t,true)}),true)}));break;case"diablo-2-skill-calc":if(WH.D2.hasOwnProperty("SkillCalc")){if(t){t()}break}WH.Fonts.load(i.D2);n(WH.STATIC_URL+"/css/d2/skill-calc.css");s(WH.Url.getDataPageUrl("diablo2-skills",WH.dataEnv.D2),(function(){s(WH.STATIC_URL+"/js/WH/D2/SkillCalc.js",t,true)}));break;case"d4-skill-tree":{if(WH.D4.SkillPlanner?.isReady()){t&&t();return}a=i.getByEnv(a)===i.D4?a:i.getDefaultEnv(i.D4);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/skill-planner.css`);s(WH.Url.getDataPageUrl("skill-tree-planner",a),(()=>s(WH.STATIC_URL+"/js/WH/D4/SkillPlanner.js",t,true)));break}case"d4-paragon-calc":{if(WH.D4.ParagonCalc?.isReady()){t&&t();return}a=i.getByEnv(a)===i.D4?a:i.getDefaultEnv(i.D4);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/components/frame-box.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/components/modal.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/components/points.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/paragon-calc.css`);let e=3;let r=()=>--e>0||s(`${WH.STATIC_URL}/js/WH/D4/ParagonCalc.js`,t,true);s(WH.Url.getDataPageUrl("paragon-calc",a),r,false);s(`${WH.STATIC_URL}/js/WH/D4/Components/Modal.js`,r,true);s(`${WH.STATIC_URL}/js/WH/D4/Components/Points.js`,r,true);break}case"d4-build":{if(WH.D4.BuildPlanner?.isReady()){t&&t();return}a=i.getByEnv(a)===i.D4?a:i.getDefaultEnv(i.D4);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/paragon-calc.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/components/modal.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/components/points.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/skill-planner.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/vampiric-powers.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/seneschal-companion.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/build-planner.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/components/frame-box.css`);n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/d4/components/item-slot-box.css`);const e=`${WH.STATIC_URL}/js/WH/D4/`;const r=[{url:WH.Url.getDataPageUrl("paragon-calc",a),includeVersion:false},{url:WH.Url.getDataPageUrl("skill-tree-planner",a),includeVersion:false},{url:WH.Url.getDataPageUrl("build-planner",a),includeVersion:false},{url:`${e}Components/FrameBox.js`,includeVersion:true},{url:`${e}Components/ItemSlotBox.js`,includeVersion:true},{url:`${e}Components/Modal.js`,includeVersion:true},{url:`${e}Components/Points.js`,includeVersion:true},{url:`${e}ParagonCalc.js`,includeVersion:true},{url:`${e}SkillPlanner.js`,includeVersion:true},{url:`${e}VampiricPowers.js`,includeVersion:true},{url:`${e}SeneschalCompanion.js`,includeVersion:true},{url:`${e}BuildPlanner.js`,includeVersion:true}];let o=r.length;let l=()=>--o>0||t();r.forEach((e=>s(e.url,l,e.includeVersion)));break}case"dragonflight-talent-calc":if(WH.Wow.TalentCalcDragonflight&&WH.Wow.TalentCalcDragonflight.isReady(a)){if(t){t()}return}n(WH.STATIC_URL+"/css/tools/talent-calc-dragonflight.css");s(WH.Url.getDataPageUrl("talents-dragonflight",a),(()=>s(WH.STATIC_URL+"/js/WH/Wow/TalentCalcDragonflight.js",t,true)));break;case"dragonflight-talent-calc-manual":if(WH.Wow.TalentCalcDragonflightManual){if(t){t()}return}n(WH.STATIC_URL+"/css/tools/talent-calc-dragonflight.css");s(WH.STATIC_URL+"/js/WH/Wow/TalentCalcDragonflightManual.js",t,true);break;case"gear-planner":let h="GearPlanner";if(WH.isTbcTree())h="GearPlannerTbc";if(WH.isWrathTree())h="GearPlannerWrath";if(WH.Wow[h]){t&&t();return}const p=`${WH.STATIC_URL}/js/WH/`;let m=[{url:WH.Url.getDataPageUrl("gear-planner"),includeVersion:false},{url:WH.Url.getDataPageUrl("weight-presets"),includeVersion:false},{url:`${p}Wow/TalentCalcClassic.js`,includeVersion:true}];if(!WH.isCataTree()){n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/tools/gear-planner.css`);m=[...m,...[{url:`${p}Wow/CharacterCustomization.js`,includeVersion:true},{url:`${p}Listview/Templates/item.js`,includeVersion:true},{url:`${p}Wow/${h}.js`,includeVersion:true}]]}else{n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}/Components/GearPlanner/GearPlanner.css`)}if(h!=="GearPlanner"&&!WH.applyStatModifications.ScalingData){m=[...m,{url:WH.Url.getDataPageUrl("item-scaling"),includeVersion:false}]}if(WH.isWrathTree()){m=[...m,...[{url:`${p}Wow/GearPlanner/Ui.js`,includeVersion:true},{url:`${p}Wow/GearPlanner/Components/Tabs.js`,includeVersion:true}]]}let H=m.length;let g=()=>--H>0||t();WH.loadAssets("talent-calc-classic",(()=>m.forEach((e=>s(e.url,g,e.includeVersion)))));break;case"heart-of-azeroth-calc":if(WH.Wow.HeartOfAzerothCalc){if(t){t()}break}n(WH.staticUrl+"/css/tools/heart-of-azeroth-calc.css");var l=s.bind(null,WH.staticUrl+"/js/WH/Wow/HeartOfAzerothCalc.js",t,true);if(!WH.Wow.AzeriteEssence){s(WH.staticUrl+"/js/WH/Wow/AzeriteEssence.js",s.bind(null,WH.Url.getDataPageUrl("azerite-essence"),l,false),true)}else{l()}break;case"hero-talents-embed":n(WH.STATIC_URL+"/css/tools/hero-talents-embed.css");s(WH.STATIC_URL+"/js/WH/Wow/HeroTalentsEmbed.js",t,true);break;case"mythic-damage-calc":if(WH.Wow.MythicDamageCalc){if(t){t()}break}n(WH.staticUrl+"/css/tools/mythic-damage-calc.css");s(WH.staticUrl+"/js/WH/Wow/MythicDamageCalc.js",(function(){s(WH.Url.getDataPageUrl("mythic-damage-calc"),t)}),true);break;case"profession-tree-calc":if(WH.Wow.ProfessionTreeCalc&&WH.Wow.ProfessionTreeCalc.isReady(a)){if(t){t()}return}n(WH.STATIC_URL+"/css/tools/profession-tree-calc.css");s(WH.Url.getDataPageUrl("profession-tree-calc",a),(()=>s(WH.STATIC_URL+"/js/WH/Wow/ProfessionTreeCalc.js",t,true)));break;case"pvp-talent-calc":if(WH.isSet("PvpTalentCalc")){if(t){t()}return}n(WH.STATIC_URL+"/css/tools/pvp-calc.css");var c=WH.STATIC_URL+"/js/talent-pvp.js";if(WH.isSet("g_talents_pvp")){s(c,t,true)}else{s(WH.Url.getDataPageUrl("talents-pvp"),s.bind(null,c,t,true))}break;case"soulbind-calc":if(WH.Wow.SoulbindCalc){if(t){t()}break}n(WH.staticUrl+"/css/tools/soulbind-calc.css");s(WH.staticUrl+"/js/WH/Wow/SoulbindCalc.js",t,true);break;case"talent-calc":if(WH.isSet("TalentCalc")){if(t){t()}return}n(WH.STATIC_URL+"/css/tools/talent-calc.css");var u=WH.STATIC_URL+"/js/WH/Wow/TalentCalc.js";if(WH.isSet("g_glyphs")){s(u,t,true)}else{s(WH.Url.getDataPageUrl("glyphs"),s.bind(null,u,t,true))}break;case"talent-calc-classic":case"pet-talent-calc":let W=e==="pet-talent-calc";if(WH.Wow.hasOwnProperty("TalentCalcClassic")&&WH.Wow.TalentCalcClassic.isReady(W,a)){if(t){t()}return}n(WH.STATIC_URL+"/css/"+WH.Theme.getThemePath()+"tools/talent-calc-classic.css");s(WH.STATIC_URL+"/js/WH/Wow/TalentCalcClassic.js",s.bind(null,WH.Url.getDataPageUrl("talents-classic"+(W?"-pet":""),a),t),true);break;case"list-card":n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}Components/Guides/ListCard.css`);break;case"guide-hub-header":n(`${WH.STATIC_URL}/css/${WH.Theme.getThemePath()}Components/Guides/GuideHubHeader.css`);break;default:alert('Tried to load unknown asset set "'+String(e)+'".')}};WH.isInt=function(e){return typeof e==="number"&&parseFloat(e)==parseInt(e)&&!isNaN(e)};WH.ensureObjectPath=function(e,t){var a=Array.prototype.slice.call(arguments,1);if(typeof a[0]!="string"){return e}if(typeof e[a[0]]!="object"){e[a[0]]={}}if(a[1]){e[a[0]]=WH.ensureObjectPath.apply(this,[e[a[0]]].concat(a.slice(1)))}return e};WH.preventDefault=function(e){if(e&&e.preventDefault){e.preventDefault()}};WH.preventTyping=function(e){if(e&&e.preventDefault){var t="which"in e?e.which:e.keyCode;var a=t>=48&&t<=57||t>=65&&t<=90||t>=96&&t<=105||t>=106&&t<=111||t>=186&&t<=192||t>=219&&t<=222;var i=e.altKey||e.ctrlKey||e.shiftKey||e.metaKey;if(a&&!i){e.preventDefault()}}};WH.leadingZeroes=function(e,t){var a=e+"";while(a.length");l.append('');l.find("b").text(e);l.find("span").text(t);if(a){var c=null;var u=(new Date).getTime()/1e3;if(i){if(a>31*24*60*60){l.append('
'+WH.sprintf(o>1?WH.TERMS.earnedwsafirsttime4_format:WH.TERMS.earnedwsatime4_format,i,WH.formatDateSimple(new Date((u-a)*1e3)))+"")}else{l.append('
'+WH.sprintf(o>1?WH.TERMS.earnedwsafirsttime2_format:WH.TERMS.earnedwsatime2_format,i,WH.formatTimeElapsed(a))+"")}}else if(!n){if(a>31*24*60*60){l.append('
'+WH.sprintf(o>1?WH.TERMS.earnedwsafirsttime3_format:WH.TERMS.earnedwsatime3_format,WH.formatDateSimple(new Date((u-a)*1e3)))+"")}else{l.append('
'+WH.sprintf(o>1?WH.TERMS.earnedwsafirsttime_format:WH.TERMS.earnedwsatime_format,WH.formatTimeElapsed(a))+"")}}if(c){l.append('
'+c+"")}}else if(!n&&s){l.append('
'+WH.TERMS.progress_format.replace("%s",s)+"")}WH.Tooltips.attach(this,l.html(),undefined,{byCursor:true})}))}));WH.User=new function(){const e=this;this.ROLE_TESTER=1;this.ROLE_ADMIN=2;this.ROLE_EDITOR=4;this.ROLE_MOD=8;this.ROLE_BUREAU=16;this.ROLE_DEV=32;this.ROLE_VIP=64;this.ROLE_BLOGGER=128;this.ROLE_PREMIUM=256;this.ROLE_LOCALIZER=512;this.ROLE_SALES_AGENT=1024;this.ROLE_SCREENSHOT=2048;this.ROLE_VIDEO=4096;this.ROLE_API_ONLY=8192;this.ROLE_PENDING=16384;this.ROLE_BLIZZARD=32768;this.ROLE_GROUP_EMPLOYEE=this.ROLE_ADMIN|this.ROLE_BUREAU|this.ROLE_DEV;this.ROLE_GROUP_STAFF=this.ROLE_TESTER|this.ROLE_GROUP_EMPLOYEE|this.ROLE_EDITOR|this.ROLE_MOD|this.ROLE_BLOGGER|this.ROLE_LOCALIZER|this.ROLE_SALES_AGENT|this.ROLE_SCREENSHOT|this.ROLE_VIDEO;this.ROLE_GROUP_GREEN_TEXT=this.ROLE_MOD|this.ROLE_BUREAU|this.ROLE_DEV;this.ROLE_GROUP_MODERATOR=this.ROLE_ADMIN|this.ROLE_MOD|this.ROLE_BUREAU;this.ROLE_GROUP_COMMENTS_MODERATOR=this.ROLE_GROUP_MODERATOR|this.ROLE_LOCALIZER|this.ROLE_EDITOR;this.ROLE_GROUP_PREMIUM_PERMISSIONS=this.ROLE_PREMIUM|this.ROLE_GROUP_STAFF|this.ROLE_VIP|this.ROLE_EDITOR|this.ROLE_BLIZZARD;this.NEWS_AUTHOR_ROLES=this.ROLE_GROUP_EMPLOYEE|this.ROLE_BLOGGER;this.GUIDE_MANAGER_ROLES=this.ROLE_GROUP_EMPLOYEE;this.GUIDE_EDITOR_ROLES=this.GUIDE_MANAGER_ROLES|this.ROLE_EDITOR;const t="TOMRUS";this.disableDebug=function(){g_user.debug=false};this.getCommentRoleClass=function(e,a){if(e&(U_GROUP_ADMIN|U_GROUP_BLIZZARD)){return"comment-role-admin"}else if(e&U_GROUP_GREEN_TEXT&&a!==t){return"comment-role-moderator"}else if(e&U_GROUP_VIP){return"comment-role-vip"}else if(e&U_GROUP_PREMIUMISH){return"comment-role-premium"}return null};this.getCommentRoleLabel=function(t,a,i){if(a){return a}if(t&U_GROUP_ADMIN){return WH.TERMS.administrator_abbrev}else if(t&U_GROUP_BLIZZARD){return WH.TERMS.blizzardRep}else if(t&e.ROLE_MOD){return WH.TERMS.moderator}else if(t&U_GROUP_PREMIUMISH){return WH.TERMS.premiumuser}return null};this.getDebug=function(){return e.hasRole(U_GROUP_STAFF)&&(g_user.debug||WH.getGets().debug!=null)};this.getId=function(){return g_user.id};this.getPath=function(){if(!WH.User.isLoggedIn()){return null}return WH.Url.generatePath("/user="+encodeURIComponent(WH.User.getUsername()))};this.getReputation=function(){return g_user.reputation||0};this.getSessionKey=()=>g_user.sessionKey||"invalid-session-key";this.getUsername=function(){return g_user.name||""};this.hasRole=function(e){if(!e){return true}return!!(g_user.roles&e)};this.isLoggedIn=function(){return g_user.id>0};this.isPremium=function(){return!!g_user.premium};this.isUsernameValid=function(e){return e.match(/[^a-z0-9]/i)==null&&e.length>=4&&e.length<=16};this.saveOption=function(e,t,a){let i={method:"POST",json:{key:e,value:t}};if(typeof a==="function"){i.success=a}WH.fetch(WH.Url.generatePath("/account/save-option"),i)}};var U_GROUP_ADMIN=WH.User.ROLE_ADMIN;var U_GROUP_EDITOR=WH.User.ROLE_EDITOR;var U_GROUP_MOD=WH.User.ROLE_MOD;var U_GROUP_BUREAU=WH.User.ROLE_BUREAU;var U_GROUP_DEV=WH.User.ROLE_DEV;var U_GROUP_VIP=WH.User.ROLE_VIP;var U_GROUP_BLOGGER=WH.User.ROLE_BLOGGER;var U_GROUP_PREMIUM=WH.User.ROLE_PREMIUM;var U_GROUP_LOCALIZER=WH.User.ROLE_LOCALIZER;var U_GROUP_SALESAGENT=WH.User.ROLE_SALES_AGENT;var U_GROUP_SCREENSHOT=WH.User.ROLE_SCREENSHOT;var U_GROUP_VIDEO=WH.User.ROLE_VIDEO;var U_GROUP_PENDING=WH.User.ROLE_PENDING;var U_GROUP_BLIZZARD=WH.User.ROLE_BLIZZARD;var U_GROUP_EMPLOYEE=WH.User.ROLE_GROUP_EMPLOYEE;var U_GROUP_STAFF=WH.User.ROLE_GROUP_STAFF;var U_GROUP_GREEN_TEXT=WH.User.ROLE_GROUP_GREEN_TEXT;var U_GROUP_PREMIUMISH=WH.User.ROLE_PREMIUM|WH.User.ROLE_EDITOR;var U_GROUP_MODERATOR=WH.User.ROLE_GROUP_MODERATOR;var U_GROUP_COMMENTS_MODERATOR=WH.User.ROLE_GROUP_COMMENTS_MODERATOR;var g_users={};WH.LocalStorage=new function(){const e=this;const t=WH.Game;this.KEY_D4_EVENT_VOTING="d4.eventVoting";this.KEY_ANNOUNCEMENTS_CLOSED="announcements.closed";this.KEY_AUDIO_PLAYLIST="audioPlaylist";this.KEY_BLUETRACKER_GAMES_FILTER="bluetracker.games";this.KEY_BLUETRACKER_REGION_FILTER="bluetracker.region";this.KEY_EDIT_ADJACENT_PREVIEW="edit.adjacentPreview";this.KEY_GUIDE_SIDEBAR_STATE="guide.sidebarState";this.KEY_HIGHLIGHTS_CLOSED="highlights.closed";this.KEY_LAYOUT_FULLSCREEN="layout.fullscreen";this.KEY_LAYOUT_FULLSCREEN_DB2_READER="layout.fullscreen.db2Reader";this.KEY_LAYOUT_USER_RETURNED_FROM_CLASSIC="layout.userReturnedFromClassic";this.KEY_MENU_RECENT_PATHS="menu.recentPaths";this.KEY_NEWS_LIST_FILTER="news.listFilter";this.KEY_NEWS_TOGGLER="home.layout.togglers";this.KEY_NOTIFICATIONS_ERROR_SHOWN="notifications.errorShown";this.KEY_NOTIFICATIONS_ONBOARDING="notifications.onboarding";this.KEY_TEXTAREA_DYNAMIC_SIZING="textarea.dynamicSizing";this.KEY_TOOLTIP_SCREENSHOTS="tooltip.screenshots";this.KEY_WAS_BLIZZARD_REFERRAL_TIME="was.blizzardReferralTime";this.KEY_WAS_COIL_START_TIME="was.coilStartTime";this.KEY_WAS_DFP_LOG="was.dfpLog";this.KEY_WOW_API_CHARACTER_CACHE="wow.api.characterCache";this.KEY_WOW_ATTUNEMENT_TRACKER="wow.attunementTracker";this.KEY_WOW_DATABASE_CLASS_FILTER="wow.database.classFilter";this.KEY_WOW_DATABASE_SPEC_FILTER="wow.database.specFilter";this.KEY_WOW_DRESSING_ROOM_APPEARANCE_HISTORY="wow.dressingRoom.appearanceHistory";this.KEY_WOW_DRESSING_ROOM_LAST_CATEGORY="wow.dressingRoom.lastCategory";this.KEY_WOW_DRESSING_ROOM_LAST_MODEL="wow.dressingRoom.lastModel";this.KEY_WOW_GEAR_PLANNER_HASHES="wow.gearPlanner.hashes";this.KEY_WOW_GEAR_PLANNER_SHOW_MODEL="wow.gearPlanner.showModel";this.KEY_WOW_MODEL_VIEWER_DEFAULT_MODEL="wow.modelViewer.defaultModel";this.KEY_WOW_MODEL_VIEWER_LAST_MODEL="wow.modelViewer.lastModel";this.KEY_WOW_MODEL_VIEWER_SHEATHED="wow.modelViewer.sheathed";this.KEY_WOW_SHADOWLANDS_BUILD_PLANNER_HASH="wow.shadowlandsBuildPlanner.hash";this.KEY_WOW_TALENT_CALC_SHOW_TOP_BUILDS="wow.talentCalc.showTopBuilds";this.KEY_WOW_TODAY_IN_WOW_FILTER="wow.todayInWow.filter";this.KEY_WOW_TODAY_IN_WOW_VISIBILITY="wow.todayInWow.visibility";const a=["lvBrowse","showRandomWidget","transmog_racegender"];const i={[this.KEY_AUDIO_PLAYLIST]:"AudioPlaylist",[this.KEY_EDIT_ADJACENT_PREVIEW]:"edit.adjacentPreview",[this.KEY_GUIDE_SIDEBAR_STATE]:"guide.sidebarState",[this.KEY_LAYOUT_FULLSCREEN]:"fullscreenMode",[this.KEY_LAYOUT_FULLSCREEN_DB2_READER]:"fullscreenMode.db2Reader",[this.KEY_LAYOUT_USER_RETURNED_FROM_CLASSIC]:"fromClassic",[this.KEY_MENU_RECENT_PATHS]:"menu.recentPaths",[this.KEY_NEWS_LIST_FILTER]:"newsListFilter",[this.KEY_NOTIFICATIONS_ERROR_SHOWN]:"notifications-error-seen",[this.KEY_NOTIFICATIONS_ONBOARDING]:"notifications.onboarding",[this.KEY_TEXTAREA_DYNAMIC_SIZING]:"dynamic-textarea-resizing",[this.KEY_TOOLTIP_SCREENSHOTS]:"tooltipScreenshots",[this.KEY_WAS_BLIZZARD_REFERRAL_TIME]:"blizz-skin-suppression",[this.KEY_WAS_COIL_START_TIME]:"cmStarted",[this.KEY_WAS_DFP_LOG]:"dfpLog",[this.KEY_WOW_API_CHARACTER_CACHE]:"BattleNetCharCache",[this.KEY_WOW_ATTUNEMENT_TRACKER]:"wow.attunementTracker",[this.KEY_WOW_DATABASE_CLASS_FILTER]:"dynamic_quest_class",[this.KEY_WOW_DATABASE_SPEC_FILTER]:"tooltips_class:spec",[this.KEY_WOW_DRESSING_ROOM_APPEARANCE_HISTORY]:"dressingRoom.appearanceHistory",[this.KEY_WOW_DRESSING_ROOM_LAST_CATEGORY]:"WH.Wow.DressingRoom.lastCategory",[this.KEY_WOW_DRESSING_ROOM_LAST_MODEL]:"dressingRoom.lastViewedModel",[this.KEY_WOW_GEAR_PLANNER_HASHES]:(()=>{switch(WH.getDataTree()){case WH.dataTree.CLASSIC:return"wow.gearPlanner.hashes";case WH.dataTree.TBC:return"wow.gearPlannerTbc.hashes";default:return"wow.gearPlannerWrath.hashes"}})(),[this.KEY_WOW_MODEL_VIEWER_DEFAULT_MODEL]:"defaultModel",[this.KEY_WOW_MODEL_VIEWER_LAST_MODEL]:"lastViewedModel",[this.KEY_WOW_MODEL_VIEWER_SHEATHED]:"WH.ModelViewer.sheathed",[this.KEY_WOW_SHADOWLANDS_BUILD_PLANNER_HASH]:"WH.Wow.ShadowlandsBuildPlanner.hash",[this.KEY_WOW_TALENT_CALC_SHOW_TOP_BUILDS]:"talent-calc-show-top-builds",[this.KEY_WOW_TODAY_IN_WOW_FILTER]:"today-in-wow-filter",[this.KEY_WOW_TODAY_IN_WOW_VISIBILITY]:"today-in-wow-visibility"};const n=1;const s=2;const r={[this.KEY_AUDIO_PLAYLIST]:n,[this.KEY_BLUETRACKER_GAMES_FILTER]:n,[this.KEY_BLUETRACKER_REGION_FILTER]:n,[this.KEY_NEWS_LIST_FILTER]:n,[this.KEY_NEWS_TOGGLER]:n,[this.KEY_WOW_ATTUNEMENT_TRACKER]:s,[this.KEY_WOW_DATABASE_CLASS_FILTER]:n,[this.KEY_WOW_DATABASE_SPEC_FILTER]:n,[this.KEY_WOW_DRESSING_ROOM_APPEARANCE_HISTORY]:n,[this.KEY_WOW_DRESSING_ROOM_LAST_MODEL]:n,[this.KEY_WOW_GEAR_PLANNER_HASHES]:s,[this.KEY_WOW_MODEL_VIEWER_DEFAULT_MODEL]:s,[this.KEY_WOW_MODEL_VIEWER_LAST_MODEL]:s,[this.KEY_WOW_TALENT_CALC_SHOW_TOP_BUILDS]:n,[this.KEY_WOW_TODAY_IN_WOW_VISIBILITY]:s};const o="accessed";const l="created";const c="modified";this.get=function(t){if(!e.isSupported()){return undefined}let a=h(t);let i=m(a);if(i){try{i.accessed=u(new Date);localStorage.setItem(a,JSON.stringify(i))}catch(e){WH.error("Error when updating local storage data access time.",a,e)}return i.value}else{return i}};this.isSupported=function(){let t;try{t="localStorage"in window&&window["localStorage"]!==null;if(t){localStorage.setItem("test","123");t=localStorage.getItem("test")==="123";localStorage.removeItem("test")}}catch(e){t=false}e.isSupported=(e=>e).bind(null,t);return t};this.remove=function(t){if(!e.isSupported()){return}localStorage.removeItem(h(t));if(i[t]){localStorage.removeItem(i[t])}};this.set=function(t,a){if(!e.isSupported()){return}W(h(t),a)};function u(e){return Math.floor(e.getTime()/1e3).toString(36)}function d(e){return new Date(parseInt(e,36)*1e3)}function f(e){return{value:undefined,created:u(e||new Date)}}function h(e,t,a){let i="wh:";if(e.startsWith(i)){WH.error("Tried to re-finalize a local storage key.");return e}switch(r[e]){case n:a=WH.getDataTree(t);i+=`${WH.getDataTreeKey(a)}.${WH.getDataEnvKey(t)}`;break;case s:i+=`${WH.getDataTreeKey(a)}`;break}return`${i}/${e}`}function p(e,t){let a=m(h(e));if(a){return d(a[t])}}function m(e){try{let t=JSON.parse(localStorage.getItem(e));if(t===null||H(t)){return t}}catch(t){let a;try{a=localStorage.getItem(e)}catch(e){a="Error with getItem(): "+WH.getThrownErrorMessage(e)}WH.error("Failed to parse local storage data that should have been JSON.",e,a)}}function H(e){return!!(e&&typeof e==="object"&&typeof e.created==="string"&&e.hasOwnProperty("value"))}function g(){const n=WH.Wow.PlayerClass;const s=WH.Wow.Race;if(!e.isSupported()){return}let r=new Date;let o=WH.getDataTree();let l=t.getDataEnvs(t.WOW);let c=[WH.dataTree.CLASSIC,WH.dataTree.TBC,WH.dataTree.WRATH,WH.dataTree.CATA];try{let t=/^announcements-closed(-(\d+))?$/;let a=[];let i={};Object.keys(localStorage).filter((e=>e.startsWith("announcements-closed"))).forEach((e=>{let n=e.match(t);if(!n){return}let s;try{s=localStorage.getItem(e)}catch(t){WH.error(`Could not fetch closed announcement value from legacy key "${e}".`);return}let r;try{r=s.match(/^"?([\d,]+)"?$/)[1].split(",").map((e=>parseInt(e))).filter(Boolean)}catch(e){}if(!Array.isArray(r)){a.push(e);return}if(n[2]){i[n[2]]=r}else{i[0]=r}a.push(e)}));if(a.length){W(h(e.KEY_ANNOUNCEMENTS_CLOSED),i,r);a.forEach((e=>localStorage.removeItem(e)))}}catch(e){WH.error("Error when migrating announcements local storage values.",e)}try{let t=/^highlight-([a-z0-9-]+)$/;let a=[];let i=[];Object.keys(localStorage).filter((e=>e.startsWith("highlight-"))).forEach((e=>{let n=e.match(t);if(!n){return}let s;try{s=JSON.parse(localStorage.getItem(e))}catch(t){WH.error(`Could not fetch closed highlight value from legacy key "${e}".`);return}if(s!==true){return}i.push(n[1]);a.push(e)}));if(a.length){W(h(e.KEY_HIGHLIGHTS_CLOSED),i,r);a.forEach((e=>localStorage.removeItem(e)))}}catch(e){WH.error("Error when migrating highlights local storage values.",e)}const u=[e.KEY_WOW_DATABASE_SPEC_FILTER,e.KEY_WOW_SHADOWLANDS_BUILD_PLANNER_HASH];Object.entries(i).forEach((([t,a])=>{try{let i;try{i=localStorage.getItem(a)}catch(e){WH.error(`Could not migrate legacy local storage value from legacy key "${a}".`);return}if(i===null){return}let d;try{d=JSON.parse(i)}catch(e){if(u.includes(t)){WH.debug("Found legacy non-JSON local storage value. Migrating it to JSON.",a,i);d=i}else{WH.error(`Could not migrate invalid JSON value from legacy key "${a}".`);return}}let f;let p;switch(t){case e.KEY_AUDIO_PLAYLIST:f=l;break;case e.KEY_NEWS_LIST_FILTER:f=[WH.dataEnv.MAIN];break;case e.KEY_WOW_ATTUNEMENT_TRACKER:p=[WH.dataTree.TBC];break;case e.KEY_WOW_DATABASE_CLASS_FILTER:let u=parseInt(d);f=l.filter((e=>n.exists(u,e)));break;case e.KEY_WOW_DATABASE_SPEC_FILTER:try{d=d.split(":");d={classId:parseInt(d[0]),specId:parseInt(d[1])};f=l.filter((e=>n.exists(d.classId,e)))}catch(e){f=[]}break;case e.KEY_WOW_DRESSING_ROOM_APPEARANCE_HISTORY:f=[WH.dataEnv.MAIN,WH.dataEnv.PTR,WH.dataEnv.PTR2,WH.dataEnv.BETA];let m=false;if(c.includes(o)){m=true;c.forEach((e=>{Object.entries(WH.dataEnvToTree).forEach((([t,a])=>{if(a===e){f.push(parseInt(t))}}))}))}f.forEach((e=>{if(!m&&c.includes(WH.getDataTree(e))){return}let a=s.ID_HUMAN;let n=JSON.parse(i);Object.keys(n.entries).forEach((t=>{t=parseInt(t);if(s.exists(t,e)){a=Math.max(a,t)}else{if(![s.ID_BLOOD_ELF,s.ID_DRAENEI].includes(t)){m=false;if(c.includes(WH.getDataTree(e))){return}}delete n.entries[t]}}));if(!s.exists(n.race,e)){n.race=a}if(Object.keys(n.entries)){W(h(t,e),n,r)}}));localStorage.removeItem(a);return;case e.KEY_WOW_DRESSING_ROOM_LAST_MODEL:case e.KEY_WOW_MODEL_VIEWER_LAST_MODEL:l.forEach((e=>{let a=Array.isArray(d);if(a){d.forEach((t=>{if(t.race&&!s.exists(parseInt(t.race),e)){a=false}}))}if(a){W(h(t,e),d,r)}}));localStorage.removeItem(a);return;case e.KEY_WOW_GEAR_PLANNER_HASHES:p=[WH.dataTree.CLASSIC,WH.dataTree.TBC].includes(o)?[o]:[WH.dataTree.WRATH];break;case e.KEY_WOW_MODEL_VIEWER_DEFAULT_MODEL:if(d.race){p=l.filter((e=>s.exists(d.race,e)))}break;case e.KEY_WOW_TALENT_CALC_SHOW_TOP_BUILDS:f=[WH.dataEnv.MAIN];break;case e.KEY_WOW_TODAY_IN_WOW_VISIBILITY:p=[WH.dataTree.RETAIL];break}try{JSON.stringify(d)}catch(e){WH.error("Failed to stringify local storage value during migration.",WH.getThrownErrorMessage(e),t,d);return}localStorage.removeItem(a);if(f){f.forEach((e=>{W(h(t,e),d,r)}))}else if(p){p.forEach((e=>{W(h(t,undefined,e),d,r)}))}else{W(h(t),d,r)}}catch(e){WH.error(`Error when migrating legacy local storage key "${a}".`,e)}}));Object.values(a).forEach((e=>localStorage.removeItem(e)))}function W(e,t,a){a=a||new Date;let i=m(e);if(i){i.modified=u(a)}else{i=f(a)}i.value=t;let n;try{n=JSON.stringify(i)}catch(a){WH.error("Failed to stringify local storage data.",WH.getThrownErrorMessage(a),e,t);return}localStorage.setItem(e,n)}WH.aE(document,"bodyAvailable",g)};WH.SessionStorage=new function(){const e=this;this.KEY_RANDOM_SHOW_ICON="random.showIcon";this.KEY_LISTVIEW_BROWSE="listview.browse";const t=1;const a={[this.KEY_LISTVIEW_BROWSE]:t};this.isSupported=function(){let t;try{t="sessionStorage"in window&&window["sessionStorage"]!==null;if(t){let e=i("test");let a="123";sessionStorage.setItem(e,a);t=sessionStorage.getItem(e)===a;sessionStorage.removeItem(e)}}catch(e){t=false}e.isSupported=(e=>e).bind(null,t);return t};this.set=function(t,a){if(!e.isSupported()){return}let n;try{n=JSON.stringify(a)}catch(e){WH.error("Failed to stringify session storage data.",WH.getThrownErrorMessage(e),t,a);return}sessionStorage.setItem(i(t),n)};this.get=function(t){if(!e.isSupported()){return undefined}let a=i(t);try{return JSON.parse(sessionStorage.getItem(a))}catch(e){let i;try{i=sessionStorage.getItem(a)}catch(e){i="Error with getItem(): "+WH.getThrownErrorMessage(e)}WH.error("Failed to parse session storage data that should have been JSON.",t,i);return undefined}};this.remove=function(t){if(!e.isSupported()){return}sessionStorage.removeItem(i(t))};function i(e){let i="wh.";if(e.startsWith(i)){WH.error("Tried to re-finalize a session storage key.");return e}switch(a[e]){case t:i+=`dataEnv:${WH.getDataEnv()}.`;break}return i+e}};WH.Time=new function(){const e=this;this.DAYS_PER_WEEK=7;this.FORMAT_ABBR="ABBR";this.FORMAT_PLURAL="PLURAL";this.FORMAT_SINGULAR="SINGULAR";this.FORMAT_SYMBOL="SYMBOL";this.MS_SEC=1e3;this.MS_MIN=this.MS_SEC*60;this.MS_HOUR=this.MS_MIN*60;this.MS_DAY=this.MS_HOUR*24;this.SEC_MIN=60;this.SEC_HOUR=this.SEC_MIN*60;this.SEC_DAY=this.SEC_HOUR*24;this.MIN_HOUR=60;const t=[WH.TERMS.january,WH.TERMS.february,WH.TERMS.march,WH.TERMS.april,WH.TERMS.may,WH.TERMS.june,WH.TERMS.july,WH.TERMS.august,WH.TERMS.september,WH.TERMS.october,WH.TERMS.november,WH.TERMS.december];const a={[this.FORMAT_ABBR]:{SECOND:WH.TERMS.second_abbrev,MINUTE:WH.TERMS.minute_abbrev,HOUR:WH.TERMS.hour_abbrev,DAY:WH.TERMS.day_abbrev,WEEK:WH.TERMS.week_abbrev,MONTH:WH.TERMS.month_abbrev,YEAR:WH.TERMS.year_abbrev},[this.FORMAT_PLURAL]:{SECOND:WH.TERMS.seconds_lc,MINUTE:WH.TERMS.minutes_lc,HOUR:WH.TERMS.hours_lc,DAY:WH.TERMS.days_lc,WEEK:WH.TERMS.weeks_lc,MONTH:WH.TERMS.months_lc,YEAR:WH.TERMS.years_lc},[this.FORMAT_SINGULAR]:{SECOND:WH.TERMS.second_lc,MINUTE:WH.TERMS.minute_lc,HOUR:WH.TERMS.hour_lc,DAY:WH.TERMS.day_lc,WEEK:WH.TERMS.week_lc,MONTH:WH.TERMS.month_lc,YEAR:WH.TERMS.year_lc},[this.FORMAT_SYMBOL]:{SECOND:WH.TERMS.second_short_abbrev,MINUTE:WH.TERMS.minute_short_abbrev,HOUR:WH.TERMS.hour_short_abbrev,DAY:WH.TERMS.day_short_abbrev,WEEK:WH.TERMS.week_short_abbrev,MONTH:WH.TERMS.month_short_abbrev,YEAR:WH.TERMS.year_short_abbrev}};const i=[WH.TERMS.sunday,WH.TERMS.monday,WH.TERMS.tuesday,WH.TERMS.wednesday,WH.TERMS.thursday,WH.TERMS.friday,WH.TERMS.saturday];this.formatDeltaWithSymbols=function(t){let i;if(t0){i+=WH.TERMS.wordspace_punct+s+a.SYMBOL.MINUTE}}else{let n=Math.floor(t/e.SEC_DAY);let s=Math.floor((t-n*e.SEC_DAY)/e.SEC_HOUR);i=n+a.SYMBOL.DAY;if(s>0){i+=WH.TERMS.wordspace_punct+s+a.SYMBOL.HOUR}}return i};this.formatFutureTimeAndDay=(n,s,r)=>{let o;let l=new Date;let c=l.getTime()/e.MS_SEC;let u=n.getTime()/e.MS_SEC;if(u-e.SEC_HOUR0){let i=r??(t===1?e.FORMAT_SINGULAR:e.FORMAT_PLURAL);f+=WH.TERMS.wordspace_punct+t+l+a[i].MINUTE}o=f+WH.TERMS.wordspace_punct+WH.TERMS.openparenthesis_punct+e.formatTimeOfDay(n,s)+WH.TERMS.closedparenthesis_punct}else{if(n.toDateString()===l.toDateString()){o=e.formatTimeOfDay(n,s)}else{let a;if(n<=new Date(l.getFullYear(),l.getMonth(),l.getDate()+6,23,59)){a=n.getDate()-1===l.getDate()?WH.TERMS.tomorrow:i[n.getDay()]}else{a=i[n.getDay()]+WH.TERMS.wordspace_punct+t[n.getMonth()]+WH.TERMS.wordspace_punct+n.getDate()}o=e.formatTimeOfDay(n,s)+WH.TERMS.wordspace_punct+a}}return o};this.formatTimeOfDay=function(e,t){let a=e.getHours();let i=WH.leadingZeroes(e.getMinutes(),2);let n;if(t===true){n=a+":"+i}else{let e=a>=12?WH.TERMS.pm:WH.TERMS.am;if(a>12){n=a-12}else if(a===0){n=12}else{n=a}n+=":"+i+WH.TERMS.wordspace_punct+e}return n};this.getMonthName=function(e){return t[e]};this.getWeekdayName=function(e){return i[e]};this.toISO8601=e=>WH.Strings.sprintf("%04d-%02d-%02dT%02d:%02d:%02d",e.getFullYear(),e.getMonth()+1,e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds());this.unix=function(){return Math.floor((new Date).getTime()/1e3)}};WH.Admin=new function(){this.foo="test"};function Ajax(e,t){if(!e){return}var a;try{a=new XMLHttpRequest}catch(e){return}this.request=a;WH.cO(this,t);this.method=this.method||this.params&&"POST"||"GET";a.open(this.method,e,this.async==null?true:this.async);a.onreadystatechange=Ajax.onReadyStateChange.bind(this);if(this.method.toUpperCase()=="POST"){a.setRequestHeader("Content-Type",(this.contentType||"application/x-www-form-urlencoded")+"; charset="+(this.encoding||"UTF-8"))}a.send(this.params)}Ajax.onReadyStateChange=function(){if(this.request.readyState==4){if(this.request.status==0||this.request.status>=200&&this.request.status<300){this.onSuccess!=null&&this.onSuccess(this.request,this)}else{this.onFailure!=null&&this.onFailure(this.request,this)}if(this.onComplete!=null){this.onComplete(this.request,this)}}};WH.Announcement=function(e){const t=this;const a=WH.LocalStorage;const i=WH.Strings;const n=WH.Track;const s=WH.User;const r={allowMarkup:undefined,class:undefined,elements:{innerDiv:undefined},id:undefined,mobileText:undefined,parent:undefined,text:undefined};this.hide=function(){r.parentDiv.dataset.animation="hide";setTimeout((function(){r.parentDiv.classList.remove("show");delete r.parentDiv.dataset.animation}),200)};this.markRead=function(){n.interactiveEvent("Announcements","Close",""+r.name);if(!u()){let e=a.get(a.KEY_ANNOUNCEMENTS_CLOSED)||{};let t=s.getId();if(!Array.isArray(e[t])){e[t]=[]}if(!e[t].includes(r.id)){e[t].push(r.id)}a.set(a.KEY_ANNOUNCEMENTS_CLOSED,e)}t.hide()};this.setClass=function(e){r.class=e;r.parentDiv.className=l()};this.setStyle=function(e){r.elements.innerDiv.setAttribute("style",e?WH.fixWowheadHttps(e):"")};this.setText=function(e,t){r.text=e;r.mobiletext=t;o(r.parent+"-markup",r.text);o(r.parent+"-markup-responsive",t||e)};this.show=function(){r.parentDiv.classList.add("show");n.nonInteractiveEvent("Announcements","Show",""+r.name)};function o(e,t){let a=WH.ge(e);if(r.allowMarkup){WH.markup.printHtml(t,a.id,{allow:WH.markup.CLASS.STAFF})}else{WH.st(a,t)}WH.qsa("a",a).forEach((e=>{WH.aE(e,"click",(()=>{let t="unknown";let a=WH.getFirstTextContent(e);if(a){t=i.slug(a)}else if(e.title){t=i.slug(e.title)}else if(e.id){t=i.slug(e.id)}t=`${r.id||0}-${t}`;n.linkClick(e,"Announcements",t)}))}))}function l(){let e="announcement announcement-";switch(r.mode){case 2:e+="fixed";break;case 0:e+="pagetop";break;case 1:default:e+="contenttop"}if(r.class){r.class.split(" ").forEach((function(t){e+=" announcement-styling-"+t}))}return e}function c(e){if(WH.UserAgent.isWebCrawler()){return}if(!e||!e.hasOwnProperty("id")||!["number","string","undefined"].includes(typeof e.id)||typeof e.parent!=="string"||typeof e.text!=="string"){WH.error("Announcement initialized with invalid options.",e);return}r.id=e.id;r.parent=e.parent;r.text=e.text;if(!e.admin&&u()){return}r.allowMarkup=typeof e.allowMarkup==="boolean"?e.allowMarkup:true;r.parentDiv=e.parentDiv||WH.ge(r.parent);r.parentDiv.dataset.announcementId=r.id;WH.displayNone(r.parentDiv);r.class=e.class;r.parentDiv.className=l();let a=r.elements.innerDiv=WH.ce("div",{className:"announcement-inner text"});if(e.style){t.setStyle(e.style)}let i=typeof e.id==="string";if(WH.User.hasRole(U_GROUP_ADMIN|U_GROUP_BUREAU)>0&&!i){if(!e.admin){let e=WH.ce("a",{className:"fa fa-pencil",href:WH.Url.generatePath("/admin/announcements/edit/"+r.id)});WH.Tooltips.attachNonTouch(e,WH.TERMS.edit,"q2");WH.ae(a,e)}}WH.ae(a,WH.ce("div",{className:"announcement-markup",id:r.parent+"-markup"}));WH.ae(a,WH.ce("div",{className:"announcement-markup-responsive",id:r.parent+"-markup-responsive"}));if(!i&&!e.admin){let i=WH.ce("a",{className:"fa fa-times announcement-close",id:"closeannouncement"});WH.aE(i,"click",e.nocookie?t.hide:t.markRead);WH.ae(a,i);WH.Tooltips.attachNonTouch(i,WH.TERMS.close,"q2")}WH.ae(a,WH.ce("div",{style:{clear:"both"}}));WH.ae(r.parentDiv,a);t.setText(e.text,e.mobiletext);t.show()}function u(){if(!r.id){return false}let e=(a.get(a.KEY_ANNOUNCEMENTS_CLOSED)||{})[s.getId()];return Array.isArray(e)&&e.includes(r.id)}c(e)};WH.Announcement.forgetRead=function(){const e=WH.LocalStorage;let t=e.get(e.KEY_ANNOUNCEMENTS_CLOSED);delete t[WH.User.getId()];e.set(e.KEY_ANNOUNCEMENTS_CLOSED,t);let a=WH.ge("announcetext");if(a){WH.ee(a);WH.ae(a,WH.ct(WH.TERMS.purgesuccess_tip));a.className="q2"}else{alert(WH.TERMS.purgesuccess_tip)}};var g_audiocontrols={__windowloaded:false,__rewardedAchievement:false};var g_audioplaylist={};if(!window.JSON){window.JSON={parse:function(sJSON){return eval("("+sJSON+")")},stringify:function(e){if(e instanceof Object){var t="";if(e.constructor===Array){for(var a=0;ao.length-1){a=0;if(!i){WH.de(r.table);WH.de('a[href*="/sound&playlist"].btn');return}}if(a<0)a=o.length-1;h=o[a]}while(r.audio.canPlayType(h.type)=="");var p=WH.ce("source");p.src=h.url;p.type=h.type;WH.ae(r.audio,p);if(t.list){t.list.childNodes.forEach((function(e){e.dataset.current=JSON.stringify(e.dataset.track===h.title)}))}if(r.hasOwnProperty("trackDisplay")){WH.st(r.trackDisplay,a+1+" / "+o.length)}if(!i){i=true;for(let e=a+1;e<=o.length-1;e++){if(r.audio.canPlayType(o[e].type)){WH.qsa("a",r.controls).forEach((function(e){delete e.dataset.disabled}));break}}}if(r.hasOwnProperty("addbutton")){delete r.addbutton.dataset.disabled;WH.st(r.addbutton,WH.TERMS.playlist)}}function u(){if(!s)return;s=false;r.audio.play()}this.init=function(a,i,s){if(!Array.isArray(a)){return}if(a.length===0){return}if(i.id===""||g_audiocontrols.hasOwnProperty(i.id)){i.id=e.guid()}g_audiocontrols[i.id]=this;if(typeof s=="undefined"){s={}}t.list=s.list;n=!!s.loop;o=a;r.div=i;r.controls=WH.ce("div",{className:"audio-controls-controls"});if(!s.listview){var l=WH.ce("table",{className:"audio-controls"});r.table=l;r.table.style.visibility="hidden";WH.ae(r.div,l);var c=WH.ce("tr");WH.ae(l,c);var u=WH.ce("td");WH.ae(c,u);r.audio=WH.ce("div");WH.ae(u,r.audio);WH.ae(u,r.controls);let e=f(WH.TERMS.previous,"step-backward",true);WH.ae(r.controls,e);WH.aE(e,"click",this.btnPrevTrack.bind(this));r.trackDisplay=WH.ce("div",{className:"audio-controls-track"});WH.ae(r.controls,r.trackDisplay);let t=f(WH.TERMS.next,"step-forward",true);WH.ae(r.controls,t);WH.aE(t,"click",this.btnNextTrack.bind(this))}else{t.addAllTracks=true;let e=WH.ce("div",{className:"audio-controls"});r.table=e;WH.ae(r.div,e);r.audio=WH.ce("div");WH.ae(e,r.audio);r.trackDisplay=s.trackDisplay;WH.ae(e,r.controls)}r.table.dataset.tracks=""+o.length;r.trackDisplay.dataset.tracks=""+o.length;if(g_audioplaylist.isEnabled()&&!s.fromPlaylist){let e=f(WH.TERMS.playlist,"plus");WH.ae(r.controls,e);WH.aE(e,"click",this.btnAddToPlaylist.bind(this,e));r.addbutton=e}if(g_audiocontrols.__windowloaded)this.btnNextTrack()};function d(){c(this,1,n||a1&&!r.audio.paused)};this.btnPrevTrack=function(){c(this,-1,i&&r.audio.readyState>1&&!r.audio.paused)};this.btnAddToPlaylist=function(e){if(t.addAllTracks){for(let e=0;eMath.floor((Date.now()-1e3*60*60*24*4)/1e3)){s(i[o].substr(0,1)=="t");return}}var l=function(t){i[o]=(t&&t.is_valid?"t":"f")+Math.floor(Date.now()/1e3);e.set(e.KEY_WOW_API_CHARACTER_CACHE,i);s(t&&t.name)};WH.Wow.Realm.fetchData(function(){var e=WH.Wow.Realm.getSlugByName(t,a);if(!e){l(false)}else{this.apiCall(t,WH.Strings.sprintf("/profile/wow/character/%s/%s/status?namespace=profile-%s",encodeURIComponent(e),encodeURIComponent(n.toLocaleLowerCase()),t.toLowerCase()),{dataType:"json",method:"GET",success:l,error:l.bind(null,false)})}}.bind(this))};this.getCharacterThumbnailUrl=function(e,t){return"https://render-"+e.toLowerCase()+".worldofwarcraft.com/character/"+t};this.getNewToken=function(e){s.push(e);if(s.length>1){return}var t=$.ajax.bind($,{url:WH.Url.generatePath("/blizzard-api/token"),dataType:"json",method:"GET",success:this.setToken,error:function(e){WH.error("Could not get Blizzard API token from Wowhead",e);this.setToken(null)}.bind(this)});if(!n.hasOwnProperty("token")&&document.readyState=="loading"&&document.addEventListener){var a=function(){document.removeEventListener("readystatechange",a,false);if(!n.hasOwnProperty("token")){t()}};document.addEventListener("readystatechange",a,false)}else{t()}};this.getNotFoundMessage=function(){let e=document.createDocumentFragment();WH.ae(e,WH.ct(WH.TERMS.characterDoesNotExist_tip));let t=WH.ce("ul");WH.ae(e,t);WH.ae(t,WH.ce("li",{},WH.ct(WH.TERMS.characterHasBeenAccessedRecently_tip)));WH.ae(t,WH.ce("li",{innerHTML:WH.Strings.sprintf(WH.TERMS.yourBlizzardSettingsSetToEnabled_format,WH.ce("a",{href:"https://account.blizzard.com/privacy"},WH.ct(WH.TERMS.gameDataAndProfilePrivacy)).outerHTML)}));let a=WH.ce("div",{innerHTML:WH.Strings.sprintf(WH.TERMS.furtherIssues_format,WH.ce("a",{href:"javascript:"},WH.ct(WH.TERMS.feedback)).outerHTML)});WH.aE(a.querySelector("a"),"click",ContactTool.show.bind(ContactTool,undefined));while(a.hasChildNodes()){WH.ae(e,a.removeChild(a.firstChild))}return e};this.getRegionAbbreviation=function(e){return WH.TERMS[t[e.toLowerCase()]]};this.setToken=function(e){if(!e||!e.hasOwnProperty("token")){n={failed:true};while(s.length){s.shift()()}n={};return}n=e;n.expires=new Date(Date.now()+n.expires*1e3);while(s.length){s.shift()()}}};WH.CommentReplies=new function(){this.setupReplies=function(i,n,s){e(i,n,s,false);t(i,n,s);i.find(".comment-reply-row").each((function(){a($(this),n,s)}));i.find(".comment-reply-row").hover((function(){$(this).find("span").attr("data-hover","true")}),(function(){$(this).find("span").attr("data-hover","false")}))};function e(e,t,a,i){let n=null;let s=null;let r=null;let o=null;let l=null;let c=null;let u=WH.getPageData("guide.author")===WH.User.getUsername()?WH.Comments.MAX_LENGTH_COMMENT:WH.Comments.MAX_LENGTH_REPLY;let d=WH.Comments.MIN_LENGTH;let f=null;let h=false;let p=false;let m=false;let H=false;let g=e.find(".comment-replies > table");let W=e.find(".add-reply");let E=t.replies.length;if(i){T()}else{W.click((function(){T()}))}function _(){if(h){return}h=true;let a=$("
");if(i){a.addClass("comment-reply-row").addClass("reply-edit-row")}a.html(' | '+'