((q,m)=>{if(XF.activate)console.error("XF core has been double loaded");else{XF.browser||(XF.browser={browser:"",version:0,os:"",osVersion:null});XF.extendObject=(...a)=>{let c=!1,b=a[0]||{},f=1;"boolean"===typeof b&&(c=b,b=a[f]||{},f++);for(;f{const g=b[e],h=d[e];c&&h&&"object"===typeof h?(Array.isArray(h)?b[e]=g&&Array.isArray(g)?g:[]:b[e]=g&&"object"===typeof g?g:{},b[e]=XF.extendObject(c,b[e],h)):void 0!==h&&(b[e]=h)})}return b}; XF.createElement=(a,c={},b=null)=>{const f=m.createElement(a);Object.entries(c).forEach(([d,e])=>{"object"===typeof e?Object.entries(e).forEach(([g,h])=>{switch(d){case "properties":return f[g]=h;case "attributes":return f.setAttribute(g,h);case "dataset":return f.dataset[g]=h;case "style":return f.style[g]=h;default:console.error("XF.createElement supports properties, attributes, dataset and style objects only.")}}):f[d]=e});b instanceof HTMLElement&&b.appendChild(f);return f};XF.createElementFromString= (a,c=null)=>{a=`${a}`;a=(new q.DOMParser).parseFromString(a,"text/html").body;if(1a instanceof Element&&a.classList.contains("js-createdContainer");XF.extendObject(XF,{config:{userId:null,enablePush:!1,skipServiceWorkerRegistration:!1,skipPushNotificationSubscription:!1,skipPushNotificationCta:!1, serviceWorkerPath:null,pushAppServerKey:null,csrf:m.querySelector("html").dataset.csrf,time:{now:0,today:0,todayDow:0,tomorrow:0,yesterday:0,week:0,month:0,year:0},cookie:{path:"/",domain:"",prefix:"xf_"},url:{fullBase:"/",basePath:"/",css:"",js:"",icon:"",keepAlive:""},css:{},js:{},jsMt:{},fullJs:!1,jsState:{},speed:{xxfast:50,xfast:100,fast:200,normal:400,slow:600},job:{manualUrl:""},borderSizeFeature:"3px",fontAwesomeWeight:"r",enableRtnProtect:!0,enableFormSubmitSticky:!0,visitorCounts:{conversations_unread:"0", alerts_unviewed:"0",total_unread:"0",title_count:!1,icon_indicator:!1},uploadMaxFilesize:null,uploadMaxWidth:0,uploadMaxHeight:0,allowedVideoExtensions:[],allowedAudioExtensions:[],shortcodeToEmoji:!0,publicMetadataLogoUrl:"",publicPushBadgeUrl:""},debug:{disableAjaxSubmit:!1},counter:1,pageDisplayTime:null,phrases:{},getApp:()=>m.querySelector("html").dataset.app||null,isFunction:a=>"function"===typeof a,isObject:a=>a===Object(a),isPlainObject:a=>"[object Object]"===Object.prototype.toString.call(a), isEmptyObject:a=>0===Object.keys(a).length,hasOwn:(a,c)=>Object.prototype.hasOwnProperty.call(a,c),isNumeric:a=>!isNaN(parseFloat(a))&&isFinite(a),isHidden:a=>"none"===q.getComputedStyle(a).display||0===a.offsetHeight||"hidden"===a.type&&"input"===a.tagName.toLowerCase(),toBoolean:a=>{switch(a){case "true":case "yes":case "on":case "1":case 1:return!0;default:return!1}},toCamelCase:a=>a.replace(/-([a-z])/g,(c,b)=>b.toUpperCase()),_scrollLeftType:null,scrollLeftType:()=>{if(null!==XF._scrollLeftType)return XF._scrollLeftType; if(XF.isRtl()){const a=XF.createElementFromString('

MMMMMMMMMM
');m.body.append(a);XF._scrollLeftType=0new H(a,c),trigger:(a, c,b={})=>{"string"===typeof c&&(c=XF.customEvent(c,b));const f=c.type,[d,e="default"]=f.split(".");if(!XF.eventHandlers[e]||!XF.eventHandlers[e][d])return!(d.cancelable&&d.defaultPrevented);if("default"===e)return a.dispatchEvent(c);XF.eventHandlers[e][d].forEach(g=>{if(a===g.element){const {handler:h,options:k}=g;k.once&&XF.off(a,f,h,k);h.call(a,c);k.passive&&c.defaultPrevented&&console.warn("preventDefault() was called on a namespaced passive event listener and this is not supported.")}});return!(d.cancelable&& d.defaultPrevented)},onDelegated:(a,c,b,f,d={})=>{const e=g=>{const h=g.target.closest(b);h&&a.contains(h)&&f.call(h,g)};e.originalHandler=f;XF.on(a,c,e,d)},on:(a,c,b,f={})=>{a?c.split(" ").forEach(d=>{const [e,g="default"]=d.split(".");d={element:a,handler:b,options:f};XF.eventHandlers[g]||(XF.eventHandlers[g]={});XF.eventHandlers[g][e]||(XF.eventHandlers[g][e]=[]);XF.eventHandlers[g][e].push(d);a.addEventListener(e,b,f)}):console.error("No element passed in to event.")},off:(a,c,b=null,f=!1)=>{const [d, e="default"]=c.split(".");!d&&e?XF.eventHandlers[e]&&(Object.keys(XF.eventHandlers[e]).forEach(g=>{XF.eventHandlers[e][g].forEach(h=>{a.removeEventListener(g,h.handler,f)})}),delete XF.eventHandlers[e]):XF.eventHandlers[e]&&XF.eventHandlers[e][d]&&(XF.eventHandlers[e][d]=XF.eventHandlers[e][d].filter(g=>b&&b!==g.handler&&b!==g.handler.originalHandler?!0:(a.removeEventListener(d,g.handler,f),!1)),XF.eventHandlers[e][d].length||delete XF.eventHandlers[e][d])},onTransitionEnd:(a,c,b)=>{let f=!1;const d= (e,...g)=>{if(e.target===e.currentTarget&&!f)return f=!0,XF.off(e.currentTarget,"transitionend",d),b(e,...g)};XF.on(a,"transitionend",d);setTimeout(()=>{f||XF.trigger(a,"transitionend")},c+10)},onWithin:(a,c,b,f=!1)=>{c.split(" ").forEach(d=>{const e=g=>{g.target.contains(a)&&(f&&XF.off(m,d,e),b(g))};XF.on(m,d,e)});return a},oneWithin:(a,c,b)=>XF.onWithin(a,c,b,!0),onPointer:(a,c,b,f={})=>{if(XF.isPlainObject(c)){for(const d of Object.keys(c))XF.onPointer(a,d,c[d],f);return a}"string"===typeof c&& (c=c.split(/\s+/));c.forEach(d=>XF.on(a,d,e=>{e.xfPointerType=e.pointerType||a.getAttribute("data-xf-pointer-type")||"";b(e)},f));XF.on(a,"pointerdown",d=>a.setAttribute("data-xf-pointer-type",d.pointerType),{passive:!0});return a},uniqueId:a=>{let c=a.getAttribute("id");c||(c="js-XFUniqueId"+XF.getUniqueCounter(),a.setAttribute("id",c));return c},findExtended:(a,c)=>{const b=a.match(/^<([^|]+)(\|([\s\S]+))?$/);if("string"===typeof a&&b){a=b[1].trim();let f,d;const e={up:"parentElement",next:"nextElementSibling", prev:"previousElementSibling"};let g;do if(f=a.match(/^:(up|next|prev)(\((\d+)\))?/)){f[2]||(f[3]=1);g=e[f[1]];for(d=0;d({top:a.offsetTop,left:a.offsetLeft}),dimensions:(a,c,b)=>{const f=a.getBoundingClientRect(),d={top:f.top+q.scrollY,left:f.left+q.scrollX};c?(d.width=a.offsetWidth||f.width, d.height=a.offsetHeight||f.height,b&&(a=q.getComputedStyle(a),d.width+=parseInt(a.marginLeft)+parseInt(a.marginRight),d.height+=parseInt(a.marginTop)+parseInt(a.marginBottom))):(d.width=a.clientWidth||f.width,d.height=a.clientHeight||f.height);d.right=d.left+d.width;d.bottom=d.top+d.height;return d},viewport:(a,c,b)=>{a===q&&(a=m.documentElement);a={width:c?a.offsetWidth:a.clientWidth,height:c?a.offsetHeight:a.clientHeight,left:a.scrollLeft,top:a.scrollTop,right:0,bottom:0,docWidth:m.documentElement.scrollWidth, docHeight:m.documentElement.scrollHeight};a.bottom=a.top+a.height;a.right=a.left+a.width;return a},hasFixableParent:a=>{let c=!1;for(;a.parentNode;)if(a=a.parentNode,a instanceof Element){switch(q.getComputedStyle(a).getPropertyValue("position")){case "fixed":case "sticky":case "-webkit-sticky":c=a}if(c)break}return c},hasFixedParent:a=>{let c=!1;for(;a.parentNode;)if(a=a.parentNode,a instanceof Element){var b=q.getComputedStyle(a);switch(b.getPropertyValue("position")){case "fixed":c=a;break;case "sticky":case "-webkit-sticky":const d= XF.dimensions(a,!0),e=XF.viewport(q);var f=b.getPropertyValue("top");b=b.getPropertyValue("bottom");if("auto"!==f&&(f=d.top-e.top-parseInt(f,10),.5>=Math.abs(f))){c=a;break}"auto"!==b&&(f=d.bottom-e.bottom-parseInt(b,10),.5>=Math.abs(f)&&(c=a))}if(c)break}return c},autofocus:a=>{XF.isIOS()?a.matches(":focus")||(a.classList.add("is-focused"),XF.on(a,"blur",()=>a.classList.remove("is-focused"))):a.focus();return this},replaceSelectedText:(a,c)=>{let b=a.selectionStart;a.setRangeText(c,b,a.selectionEnd, "preserve");a.selectionStart=b+c.length;a.selectionEnd=a.selectionStart},normalizedScrollLeft:(a,c)=>{const b=XF.scrollLeftType();if("undefined"!==typeof c){switch(b){case "negative":c=0c?-c:0;case "inverted":return a=a.scrollWidth-c-a.offsetWidth,.5>a?0:a;default:return c}},focusNext:a=>{var c=Array.prototype.slice.call(m.querySelectorAll('input:not([type="hidden"]),select,textarea,a,button')); c=c.filter(b=>0"input:not([type=radio], [type=checkbox], [type=submit], [type=reset]), textarea",onPageLoad:()=>{XF.trigger(m,"xf:page-load-start");XF.NavDeviceWatcher.initialize();XF.ActionIndicator.initialize();XF.DynamicDate.initialize();XF.KeepAlive.initialize();XF.LinkWatcher.initLinkProxy();XF.LinkWatcher.initExternalWatcher();XF.ExpandableContent.watch(); XF.ScrollButtons.initialize();XF.NavButtons.initialize();XF.KeyboardShortcuts.initialize();XF.FormInputValidation.initialize();XF.PWA.initialize();XF.Push.initialize();XF.IgnoreWatcher.initializeHash();XF.BrowserWarning.display();XF.BrowserWarning.hideJsWarning();XF.History.initialize();XF.PullToRefresh.initialize();XF.LazyHandlerLoader.initialize();XF.config.jsState=XF.applyJsState({},XF.config.jsState);XF.activate(m);XF.on(m,"ajax:complete",a=>{({data:a}=a);a&&a.visitor&&XF.updateVisitorCounts(a.visitor, !0)});XF.on(m,"ajax:before-success",a=>{({data:a}=a);a&&a&&a.job&&(a=a.job,a.manual&&XF.JobRunner.runManual(a.manual),a.autoBlocking?XF.JobRunner.runAutoBlocking(a.autoBlocking,a.autoBlockingMessage):a.auto&&setTimeout(XF.JobRunner.runAuto,0))});XF.on(m,"keyup",a=>{"Enter"===a.key&&(a=a.target,a.matches("a:not([href])")&&a.click())});m.querySelector("html[data-run-jobs]")&&setTimeout(XF.JobRunner.runAuto,100);XF.config.visitorCounts&&XF.updateVisitorCountsOnLoad(XF.config.visitorCounts);XF.CrossTab.on("visitorCounts", a=>{XF.updateVisitorCounts(a,!1)});XF.pageLoadScrollFix();setTimeout(()=>{const a=m.querySelector("[data-load-auto-click]");a&&a.click()},100);XF.trigger(m,"xf:page-load-complete")},addExtraPhrases:a=>{a.querySelectorAll("script.js-extraPhrases").forEach(c=>{let b;try{b=JSON.parse(c.textContent)||{},XF.extendObject(XF.phrases,b)}catch(f){console.error(f)}c.remove()})},phrase:(a,c,b)=>{let f=XF.phrases[a];f&&c&&(f=XF.stringTranslate(f,c));return f||b||a},_isRtl:null,isRtl:()=>{if(null===XF._isRtl){const a= m.querySelector("html").getAttribute("dir");XF._isRtl=a&&"RTL"===a.toUpperCase()}return XF._isRtl},rtlFlipKeyword:a=>{if(!XF.isRtl())return a;switch(a.toLowerCase()){case "left":return"right";case "right":return"left";default:return a}},isMac:()=>"mac"===XF.browser.os,isIOS:()=>"ios"===XF.browser.os,log:(...a)=>{console.log&&console.log(...a)},findRelativeIf:(a,c,b=!0)=>{if(!a)throw Error("No selector provided");a.endsWith(">")&&(a+=" *");const f=a.match(/^([<>|])/);f?"<"===f[1]?(a=XF.findExtended(a, c),b&&a instanceof NodeList&&(a=1<=a.length?a[0]:null)):("|"===f[1]?a=a.substring(1):">"===f[1]&&(a=":scope "+a),a=b?c.querySelector(a):c.querySelectorAll(a)):a=b?m.querySelector(a):m.querySelectorAll(a);return a},isElementVisible:a=>{const c=m.documentElement;a=a.getBoundingClientRect();return 0<=a.top&&0<=a.left&&a.bottom<=c.clientHeight&&a.right<=c.clientWidth},layoutChange:()=>{XF._layoutChangeTriggered||(XF._layoutChangeTriggered=!0,setTimeout(()=>{XF._layoutChangeTriggered=!1;XF.trigger(m.body, "xf:layout")},0))},_layoutChangeTriggered:!1,updateAvatars:(a,c,b)=>{m.querySelectorAll(".avatar").forEach(f=>{var d=f.querySelector("img, span");const e="avatar-u"+a+"-",g=f.classList.contains("avatar--updateLink")?f.querySelector(".avatar-update"):null;if((b||!d.classList.contains("js-croppedAvatar"))&&d.className.startsWith(e)){if(d.classList.contains(e+"s"))d=XF.createElementFromString(c.s);else if(d.classList.contains(e+"m"))d=XF.createElementFromString(c.m);else if(d.classList.contains(e+"l"))d= XF.createElementFromString(c.l);else if(d.classList.contains(e+"o"))d=XF.createElementFromString(c.o);else return;f.innerHTML="";f.append(...d.childNodes);d.classList.contains("avatar--default")?(f.classList.add("avatar--default"),d.classList.contains("avatar--default--dynamic")?f.classList.add("avatar--default--dynamic"):d.classList.contains("avatar--default--text")?f.classList.add("avatar--default--text"):d.classList.contains("avatar--default--image")&&f.classList.add("avatar--default--image")): f.classList.remove("avatar--default","avatar--default--dynamic","avatar--default--text","avatar--default--image");f.setAttribute("style",d.getAttribute("style"));g&&f.appendChild(g)}})},updateVisitorCounts:(a,c,b)=>{a&&"public"===XF.getApp()&&(XF.badgeCounterUpdate(m.querySelectorAll(".js-badge--conversations"),a.conversations_unread),XF.badgeCounterUpdate(m.querySelectorAll(".js-badge--alerts"),a.alerts_unviewed),XF.config.visitorCounts.title_count&&XF.pageTitleCounterUpdate(a.total_unread),XF.config.visitorCounts.icon_indicator&& XF.faviconUpdate(a.total_unread),c&&(XF.appBadgeUpdate(a.total_unread),XF.CrossTab.trigger("visitorCounts",a),XF.LocalStorage.setJson("visitorCounts",{time:b||Math.floor((new Date).getTime()/1E3)-1,conversations_unread:a.conversations_unread,alerts_unviewed:a.alerts_unviewed,total_unread:a.total_unread})))},updateVisitorCountsOnLoad:a=>{const c=XF.getLocalLoadTime(),b=XF.LocalStorage.getJson("visitorCounts");b&&b.time&&b.time>c&&(a.conversations_unread=b.conversations_unread,a.alerts_unviewed=b.alerts_unviewed, a.total_unread=b.total_unread);XF.updateVisitorCounts(a,!0,c)},badgeCounterUpdate:(a,c)=>{a.forEach(b=>{b&&(b.setAttribute("data-badge",c),"0"!==String(c)?b.classList.add("badgeContainer--highlighted"):b.classList.remove("badgeContainer--highlighted"))})},shouldCountBeShown:a=>0{let c=m.title;""===XF.pageTitleCache&&(XF.pageTitleCache=c);c!==XF.pageTitleCache&&"("===c.charAt(0)&&(c=XF.pageTitleCache);a=(XF.shouldCountBeShown(a)? "("+a+") ":"")+c;a!==m.title&&(m.title=a)},favIconAlertShown:!1,faviconUpdate:a=>{const c=XF.shouldCountBeShown(a);if(c!==XF.favIconAlertShown){var b=m.querySelectorAll('link[rel~="icon"]');b.length&&(XF.favIconAlertShown=c,b.forEach(f=>{const d=f.getAttribute("href"),e=f.dataset.originalHref;if(XF.shouldCountBeShown(a)){e||(f.dataset.originalHref=d);const g=new Image;XF.on(g,"load",()=>{const h=XF.faviconDraw(g);h&&f.setAttribute("href",h)});g.src=d}else e&&(f.setAttribute("href",e),delete f.dataset.originalHref)}))}}, faviconDraw:a=>{const c=a.naturalWidth,b=XF.createElement("canvas",{width:c,height:a.naturalHeight}),f=b.getContext("2d"),d=c/(32/6),e=2*Math.PI;f.drawImage(a,0,0);f.beginPath();f.arc(d,d,d,0,e,!1);f.fillStyle="#E03030";f.fill();f.lineWidth=c/16;f.strokeStyle="#EAEAEA";f.stroke();f.closePath();try{return b.toDataURL("image/png")}catch(g){return null}},appBadgeUpdate:a=>{"setAppBadge"in navigator&&!navigator.webdriver&&!navigator.userAgent.match(/Chrome-Lighthouse|Googlebot|AdsBot-Google|Mediapartners-Google/i)&& (a=parseInt(String(a).replace(/[,. ]/g,"")),navigator.setAppBadge(a))},unparseBbCode:a=>{const c=XF.createElement("div",{innerHTML:a||""});c.querySelectorAll(".js-noSelectToQuote").forEach(b=>b.remove());["B","I","U","S"].forEach(b=>{c.querySelectorAll(b).forEach(f=>{f.outerHTML=`[${b.toLowerCase()}]${f.innerHTML}[/${b.toLowerCase()}]`})});c.querySelectorAll(".bbCodeBlock--quote").forEach(b=>{const f=b.querySelector(".bbCodeBlock-expandContent");f?b.outerHTML=`
[QUOTE]${f.innerHTML}[/QUOTE]
`: f.querySelector(".bbCodeBlock-expand").remove()});c.querySelectorAll(".bbCodeBlock--code").forEach(b=>{const f=b.querySelector(".bbCodeCode code");if(!f)return!0;var d=f.className;d=(d=d?d.match(/language-(\S+)/):null)?d[1]:null;f.removeAttribute("class");b.outerHTML=f.outerHTML;f.setAttribute("data-language",d||"none")});c.querySelectorAll(".bbCodeBlock--unfurl").forEach(b=>{b.outerHTML="[URL unfurl=true]"+b.dataset.url+"[/URL]"});c.querySelectorAll('div[style*="text-align"]').forEach(b=>{const f= q.getComputedStyle(b).textAlign.toUpperCase();b.outerHTML=`[${f}]${b.innerHTML}[/${f}]`});c.querySelectorAll("div[data-media-site-id][data-media-key], form[data-media-site-id][data-media-key]").forEach(b=>{const f=b.dataset.mediaSiteId,d=b.dataset.mediaKey;if(!f||!d)return!0;b.outerHTML=`[MEDIA=${f}]${d}[/MEDIA]`});c.querySelectorAll(".bbCodeSpoiler").forEach(b=>{var f=b.querySelector(".bbCodeSpoiler-button");if(f){const d=b.querySelector(".bbCodeSpoiler-content").innerHTML;let e="";(f=f.querySelector(".bbCodeSpoiler-button-title"))&& (e=`="${f.textContent}"`);b.outerHTML=`[SPOILER${e}]${d}[/SPOILER]`}});c.querySelectorAll(".bbCodeInlineSpoiler").forEach(b=>{b.outerHTML=`[ISPOILER]${b.innerHTML}[/ISPOILER]`});return c.innerHTML},hideOverlays:()=>{Object.values(XF.Overlay.cache).forEach(a=>{a.hide()})},hideTooltips:()=>{Object.values(XF.TooltipTrigger.cache).forEach(a=>a.hide())},hideParentOverlay:a=>{(a=a.closest(".overlay-container"))&&(a=XF.DataStore.get(a,"overlay"))&&a.hide()},getStickyHeaderOffset:()=>{let a,c=0;for(a=0;a< XF.StickyHeader.cache.length;a++){const b=XF.StickyHeader.cache[a];b.target.classList.contains(b.options.stickyClass)&&(c+=b.target.offsetHeight)}return c},loadedScripts:{},loadScript:(a,c)=>{if(XF.hasOwn(XF.loadedScripts,a))return!1;XF.loadedScripts[a]=!0;a=XF.createElement("script",{src:a,onload:c});m.head.appendChild(a);return!0},loadScripts:(a,c)=>{var b=m.scripts[0];const f="async"in b;b=b.readyState;const d=m.head;let e=a.length;const g=[],h=()=>{e--;0===e&&c&&c()},k=()=>{let l;for(;g[0]&&"loaded"=== g[0].readyState;)l=g.shift(),l.onreadystatechange=null,l.onerror=null,d.appendChild(l),h()};for(const l of a)if(!XF.loadedScripts[l])if(XF.loadedScripts[l]=!0,f)XF.createElement("script",{src:l,async:!1,onload:h,onerror:h},d);else if(b){const p=XF.createElement("script",{onreadystatechange:k,onerror:()=>{p.onreadystatechange=null;p.onerror=null;h()},url:l});g.push(p)}else{const p=new XMLHttpRequest;p.open("GET",l,!0);p.onload=()=>{200<=p.status&&400>p.status&&XF.createElement("script",{text:p.response}, d);h()};p.onerror=h;p.send()}!e&&c&&c()},async ajax(a,c,b={},f,d={}){"function"===typeof b&&void 0===f&&(f=b,b={});b instanceof HTMLFormElement&&(b=new FormData(b));let e=!0,g=!0,h=!0,k=!0;d.skipDefault&&(g=e=!1,delete d.skipDefault);d.skipDefaultSuccessError&&(g=!1,delete d.skipDefaultSuccessError);d.skipDefaultSuccess&&(e=!1,delete d.skipDefaultSuccess);d.skipError&&(h=!1,delete d.skipError);void 0!==d.global&&(k=d.global?!0:!1,delete d.global);const l=(r,t,w)=>{XF.trigger(m,XF.customEvent("ajax:before-success", {request:r,response:t,status:t.status,data:w}));g&&XF.defaultAjaxSuccessError(w,t.status,t,r)||e&&XF.defaultAjaxSuccess(w,t.status,t,r)||f&&f(w,t.status,t,r)},p=(r,t,w,z=null)=>{h&&XF.defaultAjaxError(w,null==t?void 0:t.status,t,r,z)},n={"X-Requested-With":"XMLHttpRequest"};let u;var x=d.dataType||"json";delete d.dataType;switch(x){case "html":var v=r=>r.text();n.Accept="text/html";break;case "json":v=r=>r.json();n.Accept="application/json";break;case "xml":v=r=>r.text();n.Accept="application/xml"; break;default:throw Error(`Unsupported dataType: ${x}`);}"json"!==x&&(e=!1);b=XF.dataPush(b,"_xfResponseType",x);b=XF.dataPush(b,"_xfWithData",1);b=XF.dataPush(b,"_xfRequestUri",q.location.pathname+q.location.search);XF.config.csrf&&(b=XF.dataPush(b,"_xfToken",XF.config.csrf));if("GET"===a.toUpperCase())c+=(c.includes("?")?"&":"?")+(new URLSearchParams(b)).toString();else if(b instanceof FormData)u=b;else if(Array.isArray(b))u=XF.Serializer.serializeFormData(b),n["Content-Type"]="application/x-www-form-urlencoded"; else{function r(t){if(t instanceof Map)return Object.fromEntries([...t.entries()].map(([w,z])=>[w,r(z)]));if(t instanceof Set)return[...t].map(r);if(Array.isArray(t))return t.map(r);if(t&&"object"===typeof t){const w={};for(const [z,A]of Object.entries(t))w[z]=r(A);return w}return t}u=JSON.stringify(r(b));n["Content-Type"]="application/json"}const y=new AbortController;x=y.signal;d.signal&&d.signal.addEventListener("abort",()=>{y.abort()});delete d.signal;b="GET"===a.toUpperCase()?3E4:6E4;b=setTimeout(()=> {y.abort(new DOMException("_XF_TIMEOUT","AbortError"))},d.timeout||b);delete d.timeout;a=new Request(c,{method:a,headers:n,body:u,signal:x,...d});XF.trigger(m,XF.customEvent("ajax:send",{request:a}));k&&XF.trigger(m,"xf:action-start");try{const r=await fetch(a);let t;if(r.ok)t=await v(r),l(a,r,t);else{t=await r.text();v=!1;try{t=JSON.parse(t),v=!0}catch(w){}v?l(a,r,t):p(a,r,t)}XF.trigger(m,XF.customEvent("ajax:complete",{request:a,response:r,data:t}));return{request:a,response:r,data:t}}catch(r){return p(a, null,null,r),XF.trigger(m,XF.customEvent("ajax:complete",{request:a,error:r})),{request:a,error:r}}finally{clearTimeout(b),k&&XF.trigger(m,"xf:action-stop")}},ajaxAbortable(a,c,b={},f,d={}){const e=new AbortController;d.signal=e.signal;return{ajax:XF.ajax(a,c,b,f,d),controller:e}},dataPush:(a,c,b)=>{a&&"string"!==typeof a?void 0!==a[0]?a.push({name:c,value:b}):a instanceof FormData?a.append(c,b):a[c]=b:(a=String(a),a+="&"+encodeURIComponent(c)+"="+encodeURIComponent(b));return a},defaultAjaxSuccessError:(a, c,b,f)=>{if("object"!==typeof a)return XF.alert("Response was not JSON."),!0;a.html&&a.html.templateErrors&&(c="Errors were triggered when rendering this template:",a.html.templateErrorDetails&&(c+="\n* "+a.html.templateErrorDetails.join("\n* ")),console.error(c));return a.errorHtml?(XF.setupHtmlInsert(a.errorHtml,(d,e)=>{e=e.h1||e.title||XF.phrase("oops_we_ran_into_some_problems");XF.overlayMessage(e,d)}),!0):a.errors?(XF.alert(a.errors),!0):a.exception?(XF.alert(a.exception),!0):!1},defaultAjaxSuccess:(a, c,b,f)=>{a&&"ok"===a.status&&a.message&&XF.flashMessage(a.message,3E3);return!1},defaultAjaxError:(a,c,b,f,d)=>{if(d instanceof DOMException&&"AbortError"===d.name)"_XF_TIMEOUT"===d.message&&XF.alert(XF.phrase("server_did_not_respond_in_time_try_again"));else{if(d instanceof Error)throw d;console.error("Error:",a);XF.alert(XF.phrase("oops_we_ran_into_some_problems_more_details_console"))}},activate:a=>{XF.addExtraPhrases(a);XF.IgnoreWatcher.refresh(a);XF.Element.initialize(a);XF.DynamicDate.refresh(a); XF.ExpandableContent.checkSizing(a);XF.UnfurlLoader.activateContainer(a);XF.KeyboardShortcuts.initializeElements(a);XF.FormInputValidation.initializeElements(a);XF.LazyHandlerLoader.loadLazyHandlers(a);if(q.FB){const c=a instanceof Document?a.body:a;setTimeout(()=>FB.XFBML.parse(c),0)}XF.trigger(m,XF.customEvent("xf:reinit",{element:a}))},activateAll:a=>{Array.from(a).forEach(c=>XF.activate(c))},getDefaultFormData:(a,c,b,f)=>{let d,e;c&&c.hasAttribute("name")&&(e=c.getAttribute("name"));b&&"multipart/form-data"=== a.getAttribute("enctype")&&console.error("JSON serialized forms do not support the file upload-style enctype.");if(q.FormData&&!b)d=new FormData(a),e&&d.append(e,c.getAttribute("value")||e),a.querySelectorAll('input[type="file"]').forEach(g=>{const h=g.files;if("undefined"!==typeof h&&0===h.length)try{d.delete(g.getAttribute("name"))}catch(k){}});else{if(b){a=a.elements;let g;const h=[],k=[];if(f){"string"===typeof f&&(f=f.split(","));const l=[];f.forEach((p,n)=>{"number"===typeof n?l.push(XF.regexQuote(p.trim())): l.push(XF.regexQuote(n.trim()))});l.length&&(g=new RegExp("^("+l.join("|")+")(\\[|$)"))}Array.from(a).forEach(l=>{const p=l.name;p&&"_xf"!==p.substring(0,3)?!g||g.test(p)?h.push(l):k.push(l):k.push(l)});d=XF.Serializer.serializeArray(k);f=XF.Serializer.serializeJSON(h);d.unshift({name:b,value:JSON.stringify(f)})}else d=XF.Serializer.serializeArray(a);e&&d.push({name:e,value:e})}return d},scriptMatchRegex:/