doxa-maps/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js
Doxa Maps d9548e5959
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions
Update from source 46b1e857b
2026-09-28 00:36:45 +00:00

283 lines
205 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(function(){"use strict";/**
* @vue/shared v3.5.42
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/function No(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const V={},nt=[],xe=()=>{},Ss=()=>!1,zt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Bt=e=>e.startsWith("onUpdate:"),J=Object.assign,Ro=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},Oi=Object.prototype.hasOwnProperty,D=(e,t)=>Oi.call(e,t),C=Array.isArray,ze=e=>ht(e)==="[object Map]",Kt=e=>ht(e)==="[object Set]",Cs=e=>ht(e)==="[object Date]",N=e=>typeof e=="function",q=e=>typeof e=="string",me=e=>typeof e=="symbol",H=e=>e!==null&&typeof e=="object",Es=e=>(H(e)||N(e))&&N(e.then)&&N(e.catch),Ts=Object.prototype.toString,ht=e=>Ts.call(e),Ii=e=>ht(e).slice(8,-1),qt=e=>ht(e)==="[object Object]",Ao=e=>q(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bt=No(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zt=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},Fi=/-\w/g,oe=Zt(e=>e.replace(Fi,t=>t.slice(1).toUpperCase())),Mi=/\B([A-Z])/g,be=Zt(e=>e.replace(Mi,"-$1").toLowerCase()),Xt=Zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Oo=Zt(e=>e?`on${Xt(e)}`:""),Fe=(e,t)=>!Object.is(e,t),Io=(e,...t)=>{for(let o=0;o<e.length;o++)e[o](...t)},Ns=(e,t,o,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:o})},Di=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Rs=e=>{const t=q(e)?Number(e):NaN;return isNaN(t)?e:t};let As;const Jt=()=>As||(As=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Fo(e){if(C(e)){const t={};for(let o=0;o<e.length;o++){const s=e[o],n=q(s)?Gi(s):Fo(s);if(n)for(const i in n)t[i]=n[i]}return t}else if(q(e)||H(e))return e}const Wi=/;(?![^(]*\))/g,Hi=/:([^]+)/,ji=/\/\*[^]*?\*\//g;function Gi(e){const t={};return e.replace(ji,"").split(Wi).forEach(o=>{if(o){const s=o.split(Hi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Be(e){let t="";if(q(e))t=e;else if(C(e))for(let o=0;o<e.length;o++){const s=Be(e[o]);s&&(t+=s+" ")}else if(H(e))for(const o in e)e[o]&&(t+=o+" ");return t.trim()}const Ui=No("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function Os(e){return!!e||e===""}function Vi(e,t){if(e.length!==t.length)return!1;let o=!0;for(let s=0;o&&s<e.length;s++)o=Yt(e[s],t[s]);return o}function Is(e,t){if(e.size!==t.size)return!1;const o=Array.from(t),s=new Uint8Array(o.length);for(const n of e){let i=-1;for(let a=0;a<o.length;a++)if(!s[a]&&Yt(n,o[a])){i=a;break}if(i<0)return!1;s[i]=1}return!0}function Yt(e,t){if(e===t)return!0;let o=Cs(e),s=Cs(t);if(o||s)return o&&s?e.getTime()===t.getTime():!1;if(o=me(e),s=me(t),o||s)return e===t;if(o=C(e),s=C(t),o||s)return o&&s?Vi(e,t):!1;if(o=H(e),s=H(t),o||s){if(!o||!s)return!1;if(o=ze(e),s=ze(t),o||s||(o=Kt(e),s=Kt(t),o||s))return o&&s?Is(e,t):!1;const n=Object.keys(e).length,i=Object.keys(t).length;if(n!==i)return!1;for(const a in e){const r=e.hasOwnProperty(a),l=t.hasOwnProperty(a);if(r&&!l||!r&&l||!Yt(e[a],t[a]))return!1}}return String(e)===String(t)}const Fs=e=>!!(e&&e.__v_isRef===!0),I=e=>q(e)?e:e==null?"":C(e)||H(e)&&(e.toString===Ts||!N(e.toString))?Fs(e)?I(e.value):JSON.stringify(e,Ms,2):String(e),Ms=(e,t)=>Fs(t)?Ms(e,t.value):ze(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[s,n],i)=>(o[Mo(s,i)+" =>"]=n,o),{})}:Kt(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Mo(o))}:me(t)?Mo(t):H(t)&&!C(t)&&!qt(t)?String(t):t,Mo=(e,t="")=>{var o;return me(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};/**
* @vue/reactivity v3.5.42
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let se;class zi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&se&&(se.active?(this.parent=se,this.index=(se.scopes||(se.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){const s=this.scopes.slice();for(t=0,o=s.length;t<o;t++)s[t].pause()}for(t=0,o=this.effects.length;t<o;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,o;if(this.scopes){const n=this.scopes.slice();for(t=0,o=n.length;t<o;t++)n[t].resume()}const s=this.effects.slice();for(t=0,o=s.length;t<o;t++)s[t].resume()}}run(t){if(this._active){const o=se;try{return se=this,t()}finally{se=o}}}on(){++this._on===1&&(this.prevScope=se,se=this)}off(){if(this._on>0&&--this._on===0){if(se===this)se=this.prevScope;else{let t=se;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,s;for(o=0,s=this.effects.length;o<s;o++)this.effects[o].stop();for(this.effects.length=0,o=0,s=this.cleanups.length;o<s;o++)this.cleanups[o]();if(this.cleanups.length=0,this.scopes){const n=this.scopes.slice();for(o=0,s=n.length;o<s;o++)n[o].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const n=this.parent.scopes.pop();n&&n!==this&&(this.parent.scopes[this.index]=n,n.index=this.index)}this.parent=void 0}}}function Bi(){return se}let B;const Do=new WeakSet;class Ds{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,se&&(se.active?se.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Do.has(this)&&(Do.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Hs(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,zs(this),js(this);const t=B,o=_e;B=this,_e=!0;try{return this.fn()}finally{Gs(this),B=t,_e=o,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Go(t);this.deps=this.depsTail=void 0,zs(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Do.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){jo(this)&&this.run()}get dirty(){return jo(this)}}let Ws=0,mt,_t;function Hs(e,t=!1){if(e.flags|=8,t){e.next=_t,_t=e;return}e.next=mt,mt=e}function Wo(){Ws++}function Ho(){if(--Ws>0)return;if(_t){let t=_t;for(_t=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;mt;){let t=mt;for(mt=void 0;t;){const o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=o}}if(e)throw e}function js(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Gs(e){let t,o=e.depsTail,s=o;for(;s;){const n=s.prevDep;s.version===-1?(s===o&&(o=n),Go(s),Ki(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=n}e.deps=t,e.depsTail=o}function jo(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Us(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Us(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===$t)||(e.globalVersion=$t,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!jo(e))))return;e.flags|=2;const t=e.dep,o=B,s=_e;B=e,_e=!0;try{js(e);const n=e.fn(e._value);(t.version===0||Fe(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{B=o,_e=s,Gs(e),e.flags&=-3}}function Go(e,t=!1){const{dep:o,prevSub:s,nextSub:n}=e;if(s&&(s.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=s,e.nextSub=void 0),o.subs===e&&(o.subs=s,!s&&o.computed)){o.computed.flags&=-5;for(let i=o.computed.deps;i;i=i.nextDep)Go(i,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function Ki(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let _e=!0;const Vs=[];function we(){Vs.push(_e),_e=!1}function Pe(){const e=Vs.pop();_e=e===void 0?!0:e}function zs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=B;B=void 0;try{t()}finally{B=o}}}let $t=0;class qi{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Bs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!B||!_e||B===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==B)o=this.activeLink=new qi(B,this),B.deps?(o.prevDep=B.depsTail,B.depsTail.nextDep=o,B.depsTail=o):B.deps=B.depsTail=o,Ks(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const s=o.nextDep;s.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=s),o.prevDep=B.depsTail,o.nextDep=void 0,B.depsTail.nextDep=o,B.depsTail=o,B.deps===o&&(B.deps=s)}return o}trigger(t){this.version++,$t++,this.notify(t)}notify(t){Wo();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{Ho()}}}function Ks(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Ks(s)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const Uo=new WeakMap,Xe=Symbol(""),Vo=Symbol(""),vt=Symbol("");function ae(e,t,o){if(_e&&B){let s=Uo.get(e);s||Uo.set(e,s=new Map);let n=s.get(o);n||(s.set(o,n=new Bs),n.map=s,n.key=o),n.track()}}function Me(e,t,o,s,n,i){const a=Uo.get(e);if(!a){$t++;return}const r=l=>{l&&l.trigger()};if(Wo(),t==="clear")a.forEach(r);else{const l=C(e),u=l&&Ao(o);if(l&&o==="length"){const d=Number(s);a.forEach((g,x)=>{(x==="length"||x===vt||!me(x)&&x>=d)&&r(g)})}else switch((o!==void 0||a.has(void 0))&&r(a.get(o)),u&&r(a.get(vt)),t){case"add":l?u&&r(a.get("length")):(r(a.get(Xe)),ze(e)&&r(a.get(Vo)));break;case"delete":l||(r(a.get(Xe)),ze(e)&&r(a.get(Vo)));break;case"set":ze(e)&&r(a.get(Xe));break}}Ho()}function it(e){const t=W(e);return t===e?t:(ae(t,"iterate",vt),$e(e)?t:t.map(We))}function Qt(e){return ae(e=W(e),"iterate",vt),e}function ke(e,t){return Ke(e)?at(Je(e)?We(t):t):We(t)}const Zi={__proto__:null,[Symbol.iterator](){return zo(this,Symbol.iterator,e=>ke(this,e))},concat(...e){return it(this).concat(...e.map(t=>C(t)?it(t):t))},entries(){return zo(this,"entries",e=>(e[1]=ke(this,e[1]),e))},every(e,t){return De(this,"every",e,t,void 0,arguments)},filter(e,t){return De(this,"filter",e,t,o=>o.map(s=>ke(this,s)),arguments)},find(e,t){return De(this,"find",e,t,o=>ke(this,o),arguments)},findIndex(e,t){return De(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return De(this,"findLast",e,t,o=>ke(this,o),arguments)},findLastIndex(e,t){return De(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return De(this,"forEach",e,t,void 0,arguments)},includes(...e){return Bo(this,"includes",e)},indexOf(...e){return Bo(this,"indexOf",e)},join(e){return it(this).join(e)},lastIndexOf(...e){return Bo(this,"lastIndexOf",e)},map(e,t){return De(this,"map",e,t,void 0,arguments)},pop(){return yt(this,"pop")},push(...e){return yt(this,"push",e)},reduce(e,...t){return qs(this,"reduce",e,t)},reduceRight(e,...t){return qs(this,"reduceRight",e,t)},shift(){return yt(this,"shift")},some(e,t){return De(this,"some",e,t,void 0,arguments)},splice(...e){return yt(this,"splice",e)},toReversed(){return it(this).toReversed()},toSorted(e){return it(this).toSorted(e)},toSpliced(...e){return it(this).toSpliced(...e)},unshift(...e){return yt(this,"unshift",e)},values(){return zo(this,"values",e=>ke(this,e))}};function zo(e,t,o){const s=Qt(e),n=s[t]();return s!==e&&!$e(e)&&(n._next=n.next,n.next=()=>{const i=n._next();return i.done||(i.value=o(i.value)),i}),n}const Xi=Array.prototype;function De(e,t,o,s,n,i){const a=Qt(e),r=a!==e&&!$e(e),l=a[t];if(l!==Xi[t]){const g=l.apply(e,i);return r?We(g):g}let u=o;a!==e&&(r?u=function(g,x){return o.call(this,ke(e,g),x,e)}:o.length>2&&(u=function(g,x){return o.call(this,g,x,e)}));const d=l.call(a,u,s);return r&&n?n(d):d}function qs(e,t,o,s){const n=Qt(e),i=n!==e&&!$e(e);let a=o,r=!1;n!==e&&(i?(r=s.length===0,a=function(u,d,g){return r&&(r=!1,u=ke(e,u)),o.call(this,u,ke(e,d),g,e)}):o.length>3&&(a=function(u,d,g){return o.call(this,u,d,g,e)}));const l=n[t](a,...s);return r?ke(e,l):l}function Bo(e,t,o){const s=W(e);ae(s,"iterate",vt);const n=s[t](...o);return(n===-1||n===!1)&&Xo(o[0])?(o[0]=W(o[0]),s[t](...o)):n}function yt(e,t,o=[]){we(),Wo();const s=W(e)[t].apply(e,o);return Ho(),Pe(),s}const Ji=No("__proto__,__v_isRef,__isVue"),Zs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(me));function Yi(e){me(e)||(e=String(e));const t=W(this);return ae(t,"has",e),t.hasOwnProperty(e)}class Xs{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,s){if(o==="__v_skip")return t.__v_skip;const n=this._isReadonly,i=this._isShallow;if(o==="__v_isReactive")return!n;if(o==="__v_isReadonly")return n;if(o==="__v_isShallow")return i;if(o==="__v_raw")return s===(n?i?on:tn:i?en:Qs).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const a=C(t);if(!n){let l;if(a&&(l=Zi[o]))return l;if(o==="hasOwnProperty")return Yi}const r=Reflect.get(t,o,re(t)?t:s);if((me(o)?Zs.has(o):Ji(o))||(n||ae(t,"get",o),i))return r;if(re(r)){const l=a&&Ao(o)?r:r.value;return n&&H(l)?Zo(l):l}return H(r)?n?Zo(r):qo(r):r}}class Js extends Xs{constructor(t=!1){super(!1,t)}set(t,o,s,n){let i=t[o];const a=C(t)&&Ao(o);if(!this._isShallow){const u=Ke(i);if(!$e(s)&&!Ke(s)&&(i=W(i),s=W(s)),!a&&re(i)&&!re(s))return u||(i.value=s),!0}const r=a?Number(o)<t.length:D(t,o),l=Reflect.set(t,o,s,re(t)?t:n);return t===W(n)&&l&&(r?Fe(s,i)&&Me(t,"set",o,s):Me(t,"add",o,s)),l}deleteProperty(t,o){const s=D(t,o);t[o];const n=Reflect.deleteProperty(t,o);return n&&s&&Me(t,"delete",o,void 0),n}has(t,o){const s=Reflect.has(t,o);return(!me(o)||!Zs.has(o))&&ae(t,"has",o),s}ownKeys(t){return ae(t,"iterate",C(t)?"length":Xe),Reflect.ownKeys(t)}}class Ys extends Xs{constructor(t=!1){super(!0,t)}set(t,o){return!0}deleteProperty(t,o){return!0}}const Qi=new Js,ea=new Ys,ta=new Js(!0),oa=new Ys(!0),Ko=e=>e,eo=e=>Reflect.getPrototypeOf(e);function sa(e,t,o){return function(...s){const n=this.__v_raw,i=W(n),a=ze(i),r=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,u=n[e](...s),d=o?Ko:t?at:We;return!t&&ae(i,"iterate",l?Vo:Xe),J(Object.create(u),{next(){const{value:g,done:x}=u.next();return x?{value:g,done:x}:{value:r?[d(g[0]),d(g[1])]:d(g),done:x}}})}}function to(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function na(e,t){const o={get(n){const i=this.__v_raw,a=W(i),r=W(n);e||(Fe(n,r)&&ae(a,"get",n),ae(a,"get",r));const{has:l}=eo(a),u=t?Ko:e?at:We;if(l.call(a,n))return u(i.get(n));if(l.call(a,r))return u(i.get(r));i!==a&&i.get(n)},get size(){const n=this.__v_raw;return!e&&ae(W(n),"iterate",Xe),n.size},has(n){const i=this.__v_raw,a=W(i),r=W(n);return e||(Fe(n,r)&&ae(a,"has",n),ae(a,"has",r)),n===r?i.has(n):i.has(n)||i.has(r)},forEach(n,i){const a=this,r=a.__v_raw,l=W(r),u=t?Ko:e?at:We;return!e&&ae(l,"iterate",Xe),r.forEach((d,g)=>n.call(i,u(d),u(g),a))}};return J(o,e?{add:to("add"),set:to("set"),delete:to("delete"),clear:to("clear")}:{add(n){const i=W(this),a=eo(i),r=W(n),l=!t&&!$e(n)&&!Ke(n)?r:n;return a.has.call(i,l)||Fe(n,l)&&a.has.call(i,n)||Fe(r,l)&&a.has.call(i,r)||(i.add(l),Me(i,"add",l,l)),this},set(n,i){!t&&!$e(i)&&!Ke(i)&&(i=W(i));const a=W(this),{has:r,get:l}=eo(a);let u=r.call(a,n);u||(n=W(n),u=r.call(a,n));const d=l.call(a,n);return a.set(n,i),u?Fe(i,d)&&Me(a,"set",n,i):Me(a,"add",n,i),this},delete(n){const i=W(this),{has:a,get:r}=eo(i);let l=a.call(i,n);l||(n=W(n),l=a.call(i,n)),r&&r.call(i,n);const u=i.delete(n);return l&&Me(i,"delete",n,void 0),u},clear(){const n=W(this),i=n.size!==0,a=n.clear();return i&&Me(n,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(n=>{o[n]=sa(n,e,t)}),o}function oo(e,t){const o=na(e,t);return(s,n,i)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?s:Reflect.get(D(o,n)&&n in s?o:s,n,i)}const ia={get:oo(!1,!1)},aa={get:oo(!1,!0)},ra={get:oo(!0,!1)},la={get:oo(!0,!0)},Qs=new WeakMap,en=new WeakMap,tn=new WeakMap,on=new WeakMap;function ca(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function qo(e){return Ke(e)?e:so(e,!1,Qi,ia,Qs)}function pa(e){return so(e,!1,ta,aa,en)}function Zo(e){return so(e,!0,ea,ra,tn)}function Xc(e){return so(e,!0,oa,la,on)}function so(e,t,o,s,n){if(!H(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=n.get(e);if(i)return i;const a=ca(Ii(e));if(a===0)return e;const r=new Proxy(e,a===2?s:o);return n.set(e,r),r}function Je(e){return Ke(e)?Je(e.__v_raw):!!(e&&e.__v_isReactive)}function Ke(e){return!!(e&&e.__v_isReadonly)}function $e(e){return!!(e&&e.__v_isShallow)}function Xo(e){return e?!!e.__v_raw:!1}function W(e){const t=e&&e.__v_raw;return t?W(t):e}function da(e){return!D(e,"__v_skip")&&Object.isExtensible(e)&&Ns(e,"__v_skip",!0),e}const We=e=>H(e)?qo(e):e,at=e=>H(e)?Zo(e):e;function re(e){return e?e.__v_isRef===!0:!1}function sn(e){return re(e)?e.value:e}const ua={get:(e,t,o)=>t==="__v_raw"?e:sn(Reflect.get(e,t,o)),set:(e,t,o,s)=>{const n=e[t];return re(n)&&!re(o)?(n.value=o,!0):Reflect.set(e,t,o,s)}};function nn(e){return Je(e)?e:new Proxy(e,ua)}class fa{constructor(t,o,s){this.fn=t,this.setter=o,this._value=void 0,this.dep=new Bs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=$t-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&B!==this)return Hs(this,!0),!0}get value(){const t=this.dep.track();return Us(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ga(e,t,o=!1){let s,n;return N(e)?s=e:(s=e.get,n=e.set),new fa(s,n,o)}const no={},io=new WeakMap;let Ye;function ha(e,t=!1,o=Ye){if(o){let s=io.get(o);s||io.set(o,s=[]),s.push(e)}}function ba(e,t,o=V){const{immediate:s,deep:n,once:i,scheduler:a,augmentJob:r,call:l}=o,u=S=>n?S:$e(S)||n===!1||n===0?He(S,1):He(S);let d,g,x,P,j=!1,R=!1;if(re(e)?(g=()=>e.value,j=$e(e)):Je(e)?(g=()=>u(e),j=!0):C(e)?(R=!0,j=e.some(S=>Je(S)||$e(S)),g=()=>e.map(S=>{if(re(S))return S.value;if(Je(S))return u(S);if(N(S))return l?l(S,2):S()})):N(e)?t?g=l?()=>l(e,2):e:g=()=>{if(x){we();try{x()}finally{Pe()}}const S=Ye;Ye=d;try{return l?l(e,3,[P]):e(P)}finally{Ye=S}}:g=xe,t&&n){const S=g,te=n===!0?1/0:n;g=()=>He(S(),te)}const Y=Bi(),Z=()=>{d.stop(),Y&&Y.active&&Ro(Y.effects,d)};if(i&&t){const S=t;t=(...te)=>{const Te=S(...te);return Z(),Te}}let M=R?new Array(e.length).fill(no):no;const G=S=>{if(!(!(d.flags&1)||!d.dirty&&!S))if(t){const te=d.run();if(S||n||j||(R?te.some((Te,Ne)=>Fe(Te,M[Ne])):Fe(te,M))){x&&x();const Te=Ye;Ye=d;try{const Ne=[te,M===no?void 0:R&&M[0]===no?[]:M,P];M=te,l?l(t,3,Ne):t(...Ne)}finally{Ye=Te}}}else d.run()};return r&&r(G),d=new Ds(g),d.scheduler=a?()=>a(G,!1):G,P=S=>ha(S,!1,d),x=d.onStop=()=>{const S=io.get(d);if(S){if(l)l(S,4);else for(const te of S)te();io.delete(d)}},t?s?G(!0):M=d.run():a?a(G.bind(null,!0),!0):d.run(),Z.pause=d.pause.bind(d),Z.resume=d.resume.bind(d),Z.stop=Z,Z}function He(e,t=1/0,o){if(t<=0||!H(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,re(e))He(e.value,t,o);else if(C(e))for(let s=0;s<e.length;s++)He(e[s],t,o);else if(Kt(e)||ze(e))e.forEach(s=>{He(s,t,o)});else if(qt(e)){for(const s in e)He(e[s],t,o);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&He(e[s],t,o)}return e}/**
* @vue/runtime-core v3.5.42
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/const xt=[];let Jo=!1;function Jc(e,...t){if(Jo)return;Jo=!0,we();const o=xt.length?xt[xt.length-1].component:null,s=o&&o.appContext.config.warnHandler,n=ma();if(s)rt(s,o,11,[e+t.map(i=>{var a,r;return(r=(a=i.toString)==null?void 0:a.call(i))!=null?r:JSON.stringify(i)}).join(""),o&&o.proxy,n.map(({vnode:i})=>`at <${ii(o,i.type)}>`).join(`
`),n]);else{const i=[`[Vue warn]: ${e}`,...t];n.length&&i.push(`
`,..._a(n)),console.warn(...i)}Pe(),Jo=!1}function ma(){let e=xt[xt.length-1];if(!e)return[];const t=[];for(;e;){const o=t[0];o&&o.vnode===e?o.recurseCount++:t.push({vnode:e,recurseCount:0});const s=e.component&&e.component.parent;e=s&&s.vnode}return t}function _a(e){const t=[];return e.forEach((o,s)=>{t.push(...s===0?[]:[`
`],...$a(o))}),t}function $a({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",s=e.component?e.component.parent==null:!1,n=` at <${ii(e.component,e.type,s)}`,i=">"+o;return e.props?[n,...va(e.props),i]:[n+i]}function va(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(s=>{t.push(...an(s,e[s]))}),o.length>3&&t.push(" ..."),t}function an(e,t,o){return q(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:re(t)?(t=an(e,W(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):N(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=W(t),o?t:[`${e}=`,t])}function rt(e,t,o,s){try{return s?e(...s):e()}catch(n){ao(n,t,o)}}function ve(e,t,o,s){if(N(e)){const n=rt(e,t,o,s);return n&&Es(n)&&n.catch(i=>{ao(i,t,o)}),n}if(C(e)){const n=[];for(let i=0;i<e.length;i++)n.push(ve(e[i],t,o,s));return n}}function ao(e,t,o,s=!0){const n=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:a}=t&&t.appContext.config||V;if(t){let r=t.parent;const l=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${o}`;for(;r;){const d=r.ec;if(d){for(let g=0;g<d.length;g++)if(d[g](e,l,u)===!1)return}r=r.parent}if(i){we(),rt(i,null,10,[e,l,u]),Pe();return}}ya(e,o,n,s,a)}function ya(e,t,o,s=!0,n=!1){if(n)throw e;console.error(e)}const ce=[];let Le=-1;const lt=[];let qe=null,ct=0;const rn=Promise.resolve();let ro=null;function ln(e){const t=ro||rn;return e?t.then(this?e.bind(this):e):t}function xa(e){let t=Le+1,o=ce.length;for(;t<o;){const s=t+o>>>1,n=ce[s],i=wt(n);i<e||i===e&&n.flags&2?t=s+1:o=s}return t}function Yo(e){if(!(e.flags&1)){const t=wt(e),o=ce[ce.length-1];!o||!(e.flags&2)&&t>=wt(o)?ce.push(e):ce.splice(xa(t),0,e),e.flags|=1,cn()}}function cn(){ro||(ro=rn.then(un))}function wa(e){if(!C(e))qe&&e.id===-1?qe.splice(ct+1,0,e):e.flags&1||(lt.push(e),e.flags|=1);else for(let t=0;t<e.length;t++)lt.push(e[t]);cn()}function pn(e,t,o=Le+1){for(;o<ce.length;o++){const s=ce[o];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;ce.splice(o,1),o--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function dn(e){if(lt.length){const t=[...new Set(lt)].sort((o,s)=>wt(o)-wt(s));if(lt.length=0,qe){for(let o=0;o<t.length;o++)qe.push(t[o]);return}for(qe=t,ct=0;ct<qe.length;ct++){const o=qe[ct];o.flags&4&&(o.flags&=-2),o.flags&8||o(),o.flags&=-2}qe=null,ct=0}}const wt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function un(e){try{for(Le=0;Le<ce.length;Le++){const t=ce[Le];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),rt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Le<ce.length;Le++){const t=ce[Le];t&&(t.flags&=-2)}Le=-1,ce.length=0,dn(),ro=null,(ce.length||lt.length)&&un()}}let ne=null,fn=null;function lo(e){const t=ne;return ne=e,fn=e&&e.type.__scopeId||null,t}function Pt(e,t=ne,o){if(!t||e._n)return e;const s=(...n)=>{s._d&&Xn(-1);const i=lo(t),a=Ge.length;let r;try{r=e(...n)}finally{for(let l=Ge.length;l>a;l--)gs();lo(i),s._d&&Xn(1)}return r};return s._n=!0,s._c=!0,s._d=!0,s}function Qo(e,t){if(ne===null)return e;const o=vo(ne),s=e.dirs||(e.dirs=[]);for(let n=0;n<t.length;n++){let[i,a,r,l=V]=t[n];i&&(N(i)&&(i={mounted:i,updated:i}),i.deep&&He(a),s.push({dir:i,instance:o,value:a,oldValue:void 0,arg:r,modifiers:l}))}return e}function Qe(e,t,o,s){const n=e.dirs,i=t&&t.dirs;for(let a=0;a<n.length;a++){const r=n[a];i&&(r.oldValue=i[a].value);let l=r.dir[s];l&&(we(),ve(l,o,8,[e.el,r,e,t]),Pe())}}function Pa(e,t){if(le){let o=le.provides;const s=le.parent&&le.parent.provides;s===o&&(o=le.provides=Object.create(s)),o[e]=t}}function kt(e,t,o=!1){const s=Qn();if(s||ut){let n=ut?ut._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(n&&e in n)return n[e];if(arguments.length>1)return o&&N(t)?t.call(s&&s.proxy):t}}const ka=Symbol.for("v-scx"),La=()=>kt(ka);function es(e,t,o){return gn(e,t,o)}function gn(e,t,o=V){const{immediate:s,deep:n,flush:i,once:a}=o,r=J({},o),l=t&&s||!t&&i!=="post";let u;if(Ot){if(i==="sync"){const P=La();u=P.__watcherHandles||(P.__watcherHandles=[])}else if(!l){const P=()=>{};return P.stop=xe,P.resume=xe,P.pause=xe,P}}const d=le;r.call=(P,j,R)=>ve(P,d,j,R);let g=!1;i==="post"?r.scheduler=P=>{fe(P,d&&d.suspense)}:i!=="sync"&&(g=!0,r.scheduler=(P,j)=>{j?P():Yo(P)}),r.augmentJob=P=>{t&&(P.flags|=4),g&&(P.flags|=2,d&&(P.id=d.uid,P.i=d))};const x=ba(e,t,r);return Ot&&(u?u.push(x):l&&x()),x}function Sa(e,t,o){const s=this.proxy,n=q(e)?e.includes(".")?hn(s,e):()=>s[e]:e.bind(s,s);let i;N(t)?i=t:(i=t.handler,o=t);const a=At(this),r=gn(n,i.bind(s),o);return a(),r}function hn(e,t){const o=t.split(".");return()=>{let s=e;for(let n=0;n<o.length&&s;n++)s=s[o[n]];return s}}const Ca=Symbol("_vte"),co=e=>e.__isTeleport,ts=Symbol("_leaveCb");function Ea(e){let t=e[0];if(e.length>1){for(const o of e)if(o.type!==Se){t=o;break}}return t}function bn(e){if(!ns(e))return co(e.type)&&e.children?Ea(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&N(o.default))return o.default()}}function os(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;os(co(o.type)&&bn(o)||o,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ss(e,t){return N(e)?J({name:e.name},t,{setup:e}):e}function mn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function _n(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}const po=new WeakMap;function Lt(e,t,o,s,n=!1){if(C(e)){e.forEach((R,Y)=>Lt(R,t&&(C(t)?t[Y]:t),o,s,n));return}if(pt(s)&&!n){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Lt(e,t,o,s.component.subTree);return}const i=s.shapeFlag&4?vo(s.component):s.el,a=n?null:i,{i:r,r:l}=e,u=t&&t.r,d=r.refs===V?r.refs={}:r.refs,g=r.setupState,x=W(g),P=g===V?Ss:R=>_n(d,R)?!1:D(x,R),j=(R,Y)=>!(Y&&_n(d,Y));if(u!=null&&u!==l){if($n(t),q(u))d[u]=null,P(u)&&(g[u]=null);else if(re(u)){const R=t;j(u,R.k)&&(u.value=null),R.k&&(d[R.k]=null)}}if(N(l))rt(l,r,12,[a,d]);else{const R=q(l),Y=re(l);if(R||Y){const Z=()=>{if(e.f){const M=R?P(l)?g[l]:d[l]:j()||!e.k?l.value:d[e.k];if(n)C(M)&&Ro(M,i);else if(C(M))M.includes(i)||M.push(i);else if(R)d[l]=[i],P(l)&&(g[l]=d[l]);else{const G=[i];j(l,e.k)&&(l.value=G),e.k&&(d[e.k]=G)}}else R?(d[l]=a,P(l)&&(g[l]=a)):Y&&(j(l,e.k)&&(l.value=a),e.k&&(d[e.k]=a))};if(a){const M=()=>{Z(),po.delete(e)};M.id=-1,po.set(e,M),fe(M,o)}else $n(e),Z()}}}function $n(e){const t=po.get(e);t&&(t.flags|=8,po.delete(e))}Jt().requestIdleCallback,Jt().cancelIdleCallback;const pt=e=>!!e.type.__asyncLoader,ns=e=>e.type.__isKeepAlive;function Ta(e,t){vn(e,"a",t)}function Na(e,t){vn(e,"da",t)}function vn(e,t,o=le){const s=e.__wdc||(e.__wdc=()=>{let n=o;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(uo(t,s,o),o){let n=o.parent;for(;n&&n.parent;)ns(n.parent.vnode)&&Ra(s,t,o,n),n=n.parent}}function Ra(e,t,o,s){const n=uo(t,e,s,!0);xn(()=>{Ro(s[t],n)},o)}function uo(e,t,o=le,s=!1){if(o){const n=o[e]||(o[e]=[]),i=t.__weh||(t.__weh=(...a)=>{we();const r=At(o),l=ve(t,o,e,a);return r(),Pe(),l});return s?n.unshift(i):n.push(i),i}}const je=e=>(t,o=le)=>{(!Ot||e==="sp")&&uo(e,(...s)=>t(...s),o)},Aa=je("bm"),yn=je("m"),Oa=je("bu"),Ia=je("u"),Fa=je("bum"),xn=je("um"),Ma=je("sp"),Da=je("rtg"),Wa=je("rtc");function Ha(e,t=le){uo("ec",e,t)}const ja="components";function Ga(e,t){return Va(ja,e,!0,t)||e}const Ua=Symbol.for("v-ndc");function Va(e,t,o=!0,s=!1){const n=ne||le;if(n){const i=n.type;{const r=ni(i,!1);if(r&&(r===t||r===oe(t)||r===Xt(oe(t))))return i}const a=wn(n[e]||i[e],t)||wn(n.appContext[e],t);return!a&&s?i:a}}function wn(e,t){return e&&(e[t]||e[oe(t)]||e[Xt(oe(t))])}function dt(e,t,o,s){let n;const i=o,a=C(e);if(a||q(e)){const r=a&&Je(e);let l=!1,u=!1;r&&(l=!$e(e),u=Ke(e),e=Qt(e)),n=new Array(e.length);for(let d=0,g=e.length;d<g;d++)n[d]=t(l?u?at(We(e[d])):We(e[d]):e[d],d,void 0,i)}else if(typeof e=="number"){n=new Array(e);for(let r=0;r<e;r++)n[r]=t(r+1,r,void 0,i)}else if(H(e))if(e[Symbol.iterator])n=Array.from(e,(r,l)=>t(r,l,void 0,i));else{const r=Object.keys(e);n=new Array(r.length);for(let l=0,u=r.length;l<u;l++){const d=r[l];n[l]=t(e[d],d,l,i)}}else n=[];return n}function za(e,t){for(let o=0;o<t.length;o++){const s=t[o];if(C(s))for(let n=0;n<s.length;n++)e[s[n].name]=s[n].fn;else s&&(e[s.name]=s.key?(...n)=>{const i=s.fn(...n);return i&&(i.key=s.key),i}:s.fn)}return e}function St(e,t,o,s,n,i){if(o==null&&(o={}),ne.ce||ne.parent&&pt(ne.parent)&&ne.parent.ce){const u=i!=null&&o.key==null?J({},o,{key:i}):o,d=Object.keys(u).length>0;return t!=="default"&&(u.name=t),A(),bo(ee,null,[ye("slot",u,s)],d?-2:64)}let a=e[t];a&&a._c&&(a._d=!1);const r=Ge.length;A();let l;try{const u=a&&Pn(a(o)),d=o.key||i||u&&u.key;l=bo(ee,{key:(d&&!me(d)?d:`_${t}`)+(!u&&s?"_fb":"")},u||(s?s():[]),u&&e._===1?64:-2)}catch(u){for(let d=Ge.length;d>r;d--)gs();throw u}finally{a&&a._c&&(a._d=!0)}return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),l}function Pn(e){return e.some(t=>hs(t)?!(t.type===Se||t.type===ee&&!Pn(t.children)):!0)?e:null}const is=e=>e?ti(e)?vo(e):is(e.parent):null,Ct=J(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>is(e.parent),$root:e=>is(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Cn(e),$forceUpdate:e=>e.f||(e.f=()=>{Yo(e.update)}),$nextTick:e=>e.n||(e.n=ln.bind(e.proxy)),$watch:e=>Sa.bind(e)}),as=(e,t)=>e!==V&&!e.__isScriptSetup&&D(e,t),Ba={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:s,data:n,props:i,accessCache:a,type:r,appContext:l}=e;if(t[0]!=="$"){const x=a[t];if(x!==void 0)switch(x){case 1:return s[t];case 2:return n[t];case 4:return o[t];case 3:return i[t]}else{if(as(s,t))return a[t]=1,s[t];if(n!==V&&D(n,t))return a[t]=2,n[t];if(D(i,t))return a[t]=3,i[t];if(o!==V&&D(o,t))return a[t]=4,o[t];rs&&(a[t]=0)}}const u=Ct[t];let d,g;if(u)return t==="$attrs"&&ae(e.attrs,"get",""),u(e);if((d=r.__cssModules)&&(d=d[t]))return d;if(o!==V&&D(o,t))return a[t]=4,o[t];if(g=l.config.globalProperties,D(g,t))return g[t]},set({_:e},t,o){const{data:s,setupState:n,ctx:i}=e;return as(n,t)?(n[t]=o,!0):s!==V&&D(s,t)?(s[t]=o,!0):D(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:s,appContext:n,props:i,type:a}},r){let l;return!!(o[r]||e!==V&&r[0]!=="$"&&D(e,r)||as(t,r)||D(i,r)||D(s,r)||D(Ct,r)||D(n.config.globalProperties,r)||(l=a.__cssModules)&&l[r])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:D(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function kn(e){return C(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let rs=!0;function Ka(e){const t=Cn(e),o=e.proxy,s=e.ctx;rs=!1,t.beforeCreate&&Ln(t.beforeCreate,e,"bc");const{data:n,computed:i,methods:a,watch:r,provide:l,inject:u,created:d,beforeMount:g,mounted:x,beforeUpdate:P,updated:j,activated:R,deactivated:Y,beforeDestroy:Z,beforeUnmount:M,destroyed:G,unmounted:S,render:te,renderTracked:Te,renderTriggered:Ne,errorCaptured:Ze,serverPrefetch:Lo,expose:tt,inheritAttrs:jt,components:So,directives:Co,filters:ks}=t;if(u&&qa(u,s,null),a)for(const X in a){const K=a[X];N(K)&&(s[X]=K.bind(o))}if(n){const X=n.call(o,o);H(X)&&(e.data=qo(X))}if(rs=!0,i)for(const X in i){const K=i[X],ot=N(K)?K.bind(o,o):N(K.get)?K.get.bind(o,o):xe,Eo=!N(K)&&N(K.set)?K.set.bind(o):xe,st=Nr({get:ot,set:Eo});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>st.value,set:Re=>st.value=Re})}if(r)for(const X in r)Sn(r[X],s,o,X);if(l){const X=N(l)?l.call(o):l;Reflect.ownKeys(X).forEach(K=>{Pa(K,X[K])})}d&&Ln(d,e,"c");function ue(X,K){C(K)?K.forEach(ot=>X(ot.bind(o))):K&&X(K.bind(o))}if(ue(Aa,g),ue(yn,x),ue(Oa,P),ue(Ia,j),ue(Ta,R),ue(Na,Y),ue(Ha,Ze),ue(Wa,Te),ue(Da,Ne),ue(Fa,M),ue(xn,S),ue(Ma,Lo),C(tt))if(tt.length){const X=e.exposed||(e.exposed={});tt.forEach(K=>{Object.defineProperty(X,K,{get:()=>o[K],set:ot=>o[K]=ot,enumerable:!0})})}else e.exposed||(e.exposed={});te&&e.render===xe&&(e.render=te),jt!=null&&(e.inheritAttrs=jt),So&&(e.components=So),Co&&(e.directives=Co),Lo&&mn(e)}function qa(e,t,o=xe){C(e)&&(e=ls(e));for(const s in e){const n=e[s];let i;H(n)?"default"in n?i=kt(n.from||s,n.default,!0):i=kt(n.from||s):i=kt(n),re(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[s]=i}}function Ln(e,t,o){ve(C(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,o)}function Sn(e,t,o,s){let n=s.includes(".")?hn(o,s):()=>o[s];if(q(e)){const i=t[e];N(i)&&es(n,i)}else if(N(e))es(n,e.bind(o));else if(H(e))if(C(e))e.forEach(i=>Sn(i,t,o,s));else{const i=N(e.handler)?e.handler.bind(o):t[e.handler];N(i)&&es(n,i,e)}}function Cn(e){const t=e.type,{mixins:o,extends:s}=t,{mixins:n,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,r=i.get(t);let l;return r?l=r:!n.length&&!o&&!s?l=t:(l={},n.length&&n.forEach(u=>fo(l,u,a,!0)),fo(l,t,a)),H(t)&&i.set(t,l),l}function fo(e,t,o,s=!1){const{mixins:n,extends:i}=t;i&&fo(e,i,o,!0),n&&n.forEach(a=>fo(e,a,o,!0));for(const a in t)if(!(s&&a==="expose")){const r=Za[a]||o&&o[a];e[a]=r?r(e[a],t[a]):t[a]}return e}const Za={data:En,props:Tn,emits:Tn,methods:Et,computed:Et,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Et,directives:Et,watch:Ja,provide:En,inject:Xa};function En(e,t){return t?e?function(){return J(N(e)?e.call(this,this):e,N(t)?t.call(this,this):t)}:t:e}function Xa(e,t){return Et(ls(e),ls(t))}function ls(e){if(C(e)){const t={};for(let o=0;o<e.length;o++)t[e[o]]=e[o];return t}return e}function pe(e,t){return e?[...new Set([].concat(e,t))]:t}function Et(e,t){return e?J(Object.create(null),e,t):t}function Tn(e,t){return e?C(e)&&C(t)?[...new Set([...e,...t])]:J(Object.create(null),kn(e),kn(t??{})):t}function Ja(e,t){if(!e)return t;if(!t)return e;const o=J(Object.create(null),e);for(const s in t)o[s]=pe(e[s],t[s]);return o}function Nn(){return{app:null,config:{isNativeTag:Ss,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Ya=0;function Qa(e,t){return function(s,n=null){N(s)||(s=J({},s)),n!=null&&!H(n)&&(n=null);const i=Nn(),a=new WeakSet,r=[];let l=!1;const u=i.app={_uid:Ya++,_component:s,_props:n,_container:null,_context:i,_instance:null,version:Rr,get config(){return i.config},set config(d){},use(d,...g){return a.has(d)||(d&&N(d.install)?(a.add(d),d.install(u,...g)):N(d)&&(a.add(d),d(u,...g))),u},mixin(d){return i.mixins.includes(d)||i.mixins.push(d),u},component(d,g){return g?(i.components[d]=g,u):i.components[d]},directive(d,g){return g?(i.directives[d]=g,u):i.directives[d]},mount(d,g,x){if(!l){const P=u._ceVNode||ye(s,n);return P.appContext=i,x===!0?x="svg":x===!1&&(x=void 0),e(P,d,x),l=!0,u._container=d,d.__vue_app__=u,vo(P.component)}},onUnmount(d){r.push(d)},unmount(){l&&(ve(r,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(d,g){return i.provides[d]=g,u},runWithContext(d){const g=ut;ut=u;try{return d()}finally{ut=g}}};return u}}let ut=null;const er=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${oe(t)}Modifiers`]||e[`${be(t)}Modifiers`];function tr(e,t,...o){if(e.isUnmounted)return;const s=e.vnode.props||V;let n=o;const i=t.startsWith("update:"),a=i&&er(s,t.slice(7));a&&(a.trim&&(n=o.map(d=>q(d)?d.trim():d)),a.number&&(n=n.map(Di)));let r,l=s[r=Oo(t)]||s[r=Oo(oe(t))];!l&&i&&(l=s[r=Oo(be(t))]),l&&ve(l,e,6,n);const u=s[r+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,ve(u,e,6,n)}}const or=new WeakMap;function Rn(e,t,o=!1){const s=o?or:t.emitsCache,n=s.get(e);if(n!==void 0)return n;const i=e.emits;let a={},r=!1;if(!N(e)){const l=u=>{const d=Rn(u,t,!0);d&&(r=!0,J(a,d))};!o&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!r?(H(e)&&s.set(e,null),null):(C(i)?i.forEach(l=>a[l]=null):J(a,i),H(e)&&s.set(e,a),a)}function go(e,t){return!e||!zt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),D(e,t[0].toLowerCase()+t.slice(1))||D(e,be(t))||D(e,t))}function Yc(){}function An(e){const{type:t,vnode:o,proxy:s,withProxy:n,propsOptions:[i],slots:a,attrs:r,emit:l,render:u,renderCache:d,props:g,data:x,setupState:P,ctx:j,inheritAttrs:R}=e,Y=lo(e);let Z,M;try{if(o.shapeFlag&4){const S=n||s,te=S;Z=Ce(u.call(te,S,d,g,P,x,j)),M=r}else{const S=t;Z=Ce(S.length>1?S(g,{attrs:r,slots:a,emit:l}):S(g,null)),M=t.props?r:sr(r)}}catch(S){Ge.length=0,ao(S,e,1),Z=ye(Se)}let G=Z;if(M&&R!==!1){const S=Object.keys(M),{shapeFlag:te}=G;S.length&&te&7&&(i&&S.some(Bt)&&(M=nr(M,i)),G=ft(G,M,!1,!0))}if(o.dirs&&(G=ft(G,null,!1,!0),G.dirs=G.dirs?G.dirs.concat(o.dirs):o.dirs),o.transition){const S=co(G.type)&&bn(G)||G;os(S,o.transition)}return Z=G,lo(Y),Z}const sr=e=>{let t;for(const o in e)(o==="class"||o==="style"||zt(o))&&((t||(t={}))[o]=e[o]);return t},nr=(e,t)=>{const o={};for(const s in e)(!Bt(s)||!(s.slice(9)in t))&&(o[s]=e[s]);return o};function ir(e,t,o){const{props:s,children:n,component:i}=e,{props:a,children:r,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&l>=0){if(l&1024)return!0;if(l&16)return s?On(s,a,u):!!a;if(l&8){const d=t.dynamicProps;for(let g=0;g<d.length;g++){const x=d[g];if(In(a,s,x)&&!go(u,x))return!0}}}else return(n||r)&&(!r||!r.$stable)?!0:s===a?!1:s?a?On(s,a,u):!0:!!a;return!1}function On(e,t,o){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let n=0;n<s.length;n++){const i=s[n];if(In(t,e,i)&&!go(o,i))return!0}return!1}function In(e,t,o){const s=e[o],n=t[o];return o==="style"&&H(s)&&H(n)?!Yt(s,n):s!==n}function ar({vnode:e,parent:t,suspense:o},s){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.suspense.vnode.el=n.el=s,e=n),n===e)(e=t.vnode).el=s,t=t.parent;else break}o&&o.activeBranch===e&&(o.vnode.el=s)}const Fn={},Mn=()=>Object.create(Fn),Dn=e=>Object.getPrototypeOf(e)===Fn;function rr(e,t,o,s=!1){const n={},i=Mn();e.propsDefaults=Object.create(null),Wn(e,t,n,i);for(const a in e.propsOptions[0])a in n||(n[a]=void 0);o?e.props=s?n:pa(n):e.type.props?e.props=n:e.props=i,e.attrs=i}function lr(e,t,o,s){const{props:n,attrs:i,vnode:{patchFlag:a}}=e,r=W(n),[l]=e.propsOptions;let u=!1;if((s||a>0)&&!(a&16)){if(a&8){const d=e.vnode.dynamicProps;for(let g=0;g<d.length;g++){let x=d[g];if(go(e.emitsOptions,x))continue;const P=t[x];if(l)if(D(i,x))P!==i[x]&&(i[x]=P,u=!0);else{const j=oe(x);n[j]=cs(l,r,j,P,e,!1)}else P!==i[x]&&(i[x]=P,u=!0)}}}else{Wn(e,t,n,i)&&(u=!0);let d;for(const g in r)(!t||!D(t,g)&&((d=be(g))===g||!D(t,d)))&&(l?o&&(o[g]!==void 0||o[d]!==void 0)&&(n[g]=cs(l,r,g,void 0,e,!0)):delete n[g]);if(i!==r)for(const g in i)(!t||!D(t,g))&&(delete i[g],u=!0)}u&&Me(e.attrs,"set","")}function Wn(e,t,o,s){const[n,i]=e.propsOptions;let a=!1,r;if(t)for(let l in t){if(bt(l))continue;const u=t[l];let d;n&&D(n,d=oe(l))?!i||!i.includes(d)?o[d]=u:(r||(r={}))[d]=u:go(e.emitsOptions,l)||(!(l in s)||u!==s[l])&&(s[l]=u,a=!0)}if(i){const l=W(o),u=r||V;for(let d=0;d<i.length;d++){const g=i[d];o[g]=cs(n,l,g,u[g],e,!D(u,g))}}return a}function cs(e,t,o,s,n,i){const a=e[o];if(a!=null){const r=D(a,"default");if(r&&s===void 0){const l=a.default;if(a.type!==Function&&!a.skipFactory&&N(l)){const{propsDefaults:u}=n;if(o in u)s=u[o];else{const d=At(n);s=u[o]=l.call(null,t),d()}}else s=l;n.ce&&n.ce._setProp(o,s)}a[0]&&(i&&!r?s=!1:a[1]&&(s===""||s===be(o))&&(s=!0))}return s}const cr=new WeakMap;function Hn(e,t,o=!1){const s=o?cr:t.propsCache,n=s.get(e);if(n)return n;const i=e.props,a={},r=[];let l=!1;if(!N(e)){const d=g=>{l=!0;const[x,P]=Hn(g,t,!0);J(a,x),P&&r.push(...P)};!o&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!l)return H(e)&&s.set(e,nt),nt;if(C(i))for(let d=0;d<i.length;d++){const g=oe(i[d]);jn(g)&&(a[g]=V)}else if(i)for(const d in i){const g=oe(d);if(jn(g)){const x=i[d],P=a[g]=C(x)||N(x)?{type:x}:J({},x),j=P.type;let R=!1,Y=!0;if(C(j))for(let Z=0;Z<j.length;++Z){const M=j[Z],G=N(M)&&M.name;if(G==="Boolean"){R=!0;break}else G==="String"&&(Y=!1)}else R=N(j)&&j.name==="Boolean";P[0]=R,P[1]=Y,(R||D(P,"default"))&&r.push(g)}}const u=[a,r];return H(e)&&s.set(e,u),u}function jn(e){return e[0]!=="$"&&!bt(e)}const ps=e=>e==="_"||e==="_ctx"||e==="$stable",ds=e=>C(e)?e.map(Ce):[Ce(e)],pr=(e,t,o)=>{if(t._n)return t;const s=Pt((...n)=>ds(t(...n)),o);return s._c=!1,s},Gn=(e,t,o)=>{const s=e._ctx;for(const n in e){if(ps(n))continue;const i=e[n];if(N(i))t[n]=pr(n,i,s);else if(i!=null){const a=ds(i);t[n]=()=>a}}},Un=(e,t)=>{const o=ds(t);e.slots.default=()=>o},Vn=(e,t,o)=>{for(const s in t)(o||!ps(s))&&(e[s]=t[s])},dr=(e,t,o)=>{const s=e.slots=Mn();if(e.vnode.shapeFlag&32){const n=t._;n?(Vn(s,t,o),o&&Ns(s,"_",n,!0)):Gn(t,s)}else t&&Un(e,t)},ur=(e,t,o)=>{const{vnode:s,slots:n}=e;let i=!0,a=V;if(s.shapeFlag&32){const r=t._;r?o&&r===1?i=!1:Vn(n,t,o):(i=!t.$stable,Gn(t,n)),a=t}else t&&(Un(e,t),a={default:1});if(i)for(const r in n)!ps(r)&&a[r]==null&&delete n[r]},fe=mr;function fr(e){return gr(e)}function gr(e,t){const o=Jt();o.__VUE__=!0;const{insert:s,remove:n,patchProp:i,createElement:a,createText:r,createComment:l,setText:u,setElementText:d,parentNode:g,nextSibling:x,setScopeId:P=xe,insertStaticContent:j}=e,R=(c,p,f,_=null,m=null,h=null,y=void 0,v=null,$=!!p.dynamicChildren)=>{if(c===p)return;c&&!Nt(c,p)&&(_=To(c),Re(c,m,h,!0),c=null),p.patchFlag===-2&&($=!1,p.dynamicChildren=null);const{type:b,ref:L,shapeFlag:w}=p;switch(b){case ho:Y(c,p,f,_);break;case Se:Z(c,p,f,_);break;case fs:c==null&&M(p,f,_,y);break;case ee:So(c,p,f,_,m,h,y,v,$);break;default:w&1?te(c,p,f,_,m,h,y,v,$):w&6?Co(c,p,f,_,m,h,y,v,$):(w&64||w&128)&&b.process(c,p,f,_,m,h,y,v,$,Ut)}L!=null&&m?Lt(L,c&&c.ref,h,p||c,!p):L==null&&c&&c.ref!=null&&Lt(c.ref,null,h,c,!0)},Y=(c,p,f,_)=>{if(c==null)s(p.el=r(p.children),f,_);else{const m=p.el=c.el;p.children!==c.children&&u(m,p.children)}},Z=(c,p,f,_)=>{c==null?s(p.el=l(p.children||""),f,_):p.el=c.el},M=(c,p,f,_)=>{[c.el,c.anchor]=j(c.children,p,f,_,c.el,c.anchor)},G=({el:c,anchor:p},f,_)=>{let m;for(;c&&c!==p;)m=x(c),s(c,f,_),c=m;s(p,f,_)},S=({el:c,anchor:p})=>{let f;for(;c&&c!==p;)f=x(c),n(c),c=f;n(p)},te=(c,p,f,_,m,h,y,v,$)=>{if(p.type==="svg"?y="svg":p.type==="math"&&(y="mathml"),c==null)Te(p,f,_,m,h,y,v,$);else{const b=c.el&&c.el._isVueCE?c.el:null;try{b&&b._beginPatch(),Lo(c,p,m,h,y,v,$)}finally{b&&b._endPatch()}}},Te=(c,p,f,_,m,h,y,v)=>{let $,b;const{props:L,shapeFlag:w,transition:k,dirs:T}=c;if($=c.el=a(c.type,h,L&&L.is,L),w&8?d($,c.children):w&16&&Ze(c.children,$,null,_,m,us(c,h),y,v),T&&Qe(c,null,_,"created"),Ne($,c,c.scopeId,y,_),L){for(const z in L)z!=="value"&&!bt(z)&&i($,z,null,L[z],h,_);"value"in L&&i($,"value",null,L.value,h),(b=L.onVnodeBeforeMount)&&Ee(b,_,c)}T&&Qe(c,null,_,"beforeMount");const F=hr(m,k);F&&k.beforeEnter($),s($,p,f),((b=L&&L.onVnodeMounted)||F||T)&&fe(()=>{try{b&&Ee(b,_,c),F&&k.enter($),T&&Qe(c,null,_,"mounted")}finally{}},m)},Ne=(c,p,f,_,m)=>{if(f&&P(c,f),_)for(let h=0;h<_.length;h++)P(c,_[h]);if(m){let h=m.subTree;if(p===h||Zn(h.type)&&(h.ssContent===p||h.ssFallback===p)){const y=m.vnode;Ne(c,y,y.scopeId,y.slotScopeIds,m.parent)}}},Ze=(c,p,f,_,m,h,y,v,$=0)=>{for(let b=$;b<c.length;b++){const L=c[b]=v?Ue(c[b]):Ce(c[b]);R(null,L,p,f,_,m,h,y,v)}},Lo=(c,p,f,_,m,h,y)=>{const v=p.el=c.el;let{patchFlag:$,dynamicChildren:b,dirs:L}=p;$|=c.patchFlag&16;const w=c.props||V,k=p.props||V;let T;if(f&&et(f,!1),(T=k.onVnodeBeforeUpdate)&&Ee(T,f,p,c),L&&Qe(p,c,f,"beforeUpdate"),f&&et(f,!0),b&&(!c.dynamicChildren||c.dynamicChildren.length!==b.length)&&($=0,y=!1,b=null),(w.innerHTML&&k.innerHTML==null||w.textContent&&k.textContent==null)&&d(v,""),b?tt(c.dynamicChildren,b,v,f,_,us(p,m),h):y||K(c,p,v,null,f,_,us(p,m),h,!1),$>0){if($&16)jt(v,w,k,f,m);else if($&2&&w.class!==k.class&&i(v,"class",null,k.class,m),$&4&&i(v,"style",w.style,k.style,m),$&8){const F=p.dynamicProps;for(let z=0;z<F.length;z++){const U=F[z],Q=w[U],ie=k[U];(ie!==Q||U==="value")&&i(v,U,Q,ie,m,f)}}$&1&&c.children!==p.children&&d(v,p.children)}else!y&&b==null&&jt(v,w,k,f,m);((T=k.onVnodeUpdated)||L)&&fe(()=>{T&&Ee(T,f,p,c),L&&Qe(p,c,f,"updated")},_)},tt=(c,p,f,_,m,h,y)=>{for(let v=0;v<p.length;v++){const $=c[v],b=p[v],L=$.el&&($.type===ee||!Nt($,b)||$.shapeFlag&198)?g($.el):f;R($,b,L,null,_,m,h,y,!0)}},jt=(c,p,f,_,m)=>{if(p!==f){if(p!==V)for(const h in p)!bt(h)&&!(h in f)&&i(c,h,p[h],null,m,_);for(const h in f){if(bt(h))continue;const y=f[h],v=p[h];y!==v&&h!=="value"&&i(c,h,v,y,m,_)}"value"in f&&i(c,"value",p.value,f.value,m)}},So=(c,p,f,_,m,h,y,v,$)=>{const b=p.el=c?c.el:r(""),L=p.anchor=c?c.anchor:r("");let{patchFlag:w,dynamicChildren:k,slotScopeIds:T}=p;T&&(v=v?v.concat(T):T),c==null?(s(b,f,_),s(L,f,_),Ze(p.children||[],f,L,m,h,y,v,$)):w>0&&w&64&&k&&c.dynamicChildren&&c.dynamicChildren.length===k.length?(tt(c.dynamicChildren,k,f,m,h,y,v),(p.key!=null||m&&p===m.subTree)&&zn(c,p,!0)):K(c,p,f,L,m,h,y,v,$)},Co=(c,p,f,_,m,h,y,v,$)=>{p.slotScopeIds=v,c==null?p.shapeFlag&512?m.ctx.activate(p,f,_,y,$):ks(p,f,_,m,h,y,$):Ci(c,p,$)},ks=(c,p,f,_,m,h,y)=>{const v=c.component=wr(c,_,m);if(ns(c)&&(v.ctx.renderer=Ut),Pr(v,!1,y),v.asyncDep){if(m&&m.registerDep(v,ue,y),!c.el){const $=v.subTree=ye(Se);Z(null,$,p,f),c.placeholder=$.el}}else ue(v,c,p,f,m,h,y)},Ci=(c,p,f)=>{const _=p.component=c.component;if(ir(c,p,f))if(_.asyncDep&&!_.asyncResolved){X(_,p,f);return}else _.next=p,_.update();else p.el=c.el,_.vnode=p},ue=(c,p,f,_,m,h,y)=>{const v=()=>{if(c.isMounted){let{next:w,bu:k,u:T,parent:F,vnode:z}=c;{const Oe=Bn(c);if(Oe){w&&(w.el=z.el,X(c,w,y)),Oe.asyncDep.then(()=>{fe(()=>{c.isUnmounted||b()},m)});return}}let U=w,Q;et(c,!1),w?(w.el=z.el,X(c,w,y)):w=z,k&&Io(k),(Q=w.props&&w.props.onVnodeBeforeUpdate)&&Ee(Q,F,w,z),et(c,!0);const ie=An(c),Ae=c.subTree;c.subTree=ie,R(Ae,ie,g(Ae.el),To(Ae),c,m,h),w.el=ie.el,U===null&&ar(c,ie.el),T&&fe(T,m),(Q=w.props&&w.props.onVnodeUpdated)&&fe(()=>Ee(Q,F,w,z),m)}else{let w;const{el:k,props:T}=p,{bm:F,m:z,parent:U,root:Q,type:ie}=c,Ae=pt(p);et(c,!1),F&&Io(F),!Ae&&(w=T&&T.onVnodeBeforeMount)&&Ee(w,U,p),et(c,!0);{Q.ce&&Q.ce._hasShadowRoot()&&Q.ce._injectChildStyle(ie,c.parent?c.parent.type:void 0);const Oe=c.subTree=An(c);R(null,Oe,f,_,c,m,h),p.el=Oe.el}if(z&&fe(z,m),!Ae&&(w=T&&T.onVnodeMounted)){const Oe=p;fe(()=>Ee(w,U,Oe),m)}(p.shapeFlag&256||U&&pt(U.vnode)&&U.vnode.shapeFlag&256)&&c.a&&fe(c.a,m),c.isMounted=!0,p=f=_=null}};c.scope.on();const $=c.effect=new Ds(v);c.scope.off();const b=c.update=$.run.bind($),L=c.job=$.runIfDirty.bind($);L.i=c,L.id=c.uid,$.scheduler=()=>Yo(L),et(c,!0),b()},X=(c,p,f)=>{p.component=c;const _=c.vnode.props;c.vnode=p,c.next=null,lr(c,p.props,_,f),ur(c,p.children,f),we(),pn(c),Pe()},K=(c,p,f,_,m,h,y,v,$=!1)=>{const b=c&&c.children,L=c?c.shapeFlag:0,w=p.children,{patchFlag:k,shapeFlag:T}=p;if(k>0){if(k&128){Eo(b,w,f,_,m,h,y,v,$);return}else if(k&256){ot(b,w,f,_,m,h,y,v,$);return}}T&8?(L&16&&Gt(b,m,h),w!==b&&d(f,w)):L&16?T&16?Eo(b,w,f,_,m,h,y,v,$):Gt(b,m,h,!0):(L&8&&d(f,""),T&16&&Ze(w,f,_,m,h,y,v,$))},ot=(c,p,f,_,m,h,y,v,$)=>{c=c||nt,p=p||nt;const b=c.length,L=p.length,w=Math.min(b,L);let k;for(k=0;k<w;k++){const T=p[k]=$?Ue(p[k]):Ce(p[k]);R(c[k],T,f,null,m,h,y,v,$)}b>L?Gt(c,m,h,!0,!1,w):Ze(p,f,_,m,h,y,v,$,w)},Eo=(c,p,f,_,m,h,y,v,$)=>{let b=0;const L=p.length;let w=c.length-1,k=L-1;for(;b<=w&&b<=k;){const T=c[b],F=p[b]=$?Ue(p[b]):Ce(p[b]);if(Nt(T,F))R(T,F,f,null,m,h,y,v,$);else break;b++}for(;b<=w&&b<=k;){const T=c[w],F=p[k]=$?Ue(p[k]):Ce(p[k]);if(Nt(T,F))R(T,F,f,null,m,h,y,v,$);else break;w--,k--}if(b>w){if(b<=k){const T=k+1,F=T<L?p[T].el:_;for(;b<=k;)R(null,p[b]=$?Ue(p[b]):Ce(p[b]),f,F,m,h,y,v,$),b++}}else if(b>k)for(;b<=w;)Re(c[b],m,h,!0),b++;else{const T=b,F=b,z=new Map;for(b=F;b<=k;b++){const he=p[b]=$?Ue(p[b]):Ce(p[b]);he.key!=null&&z.set(he.key,b)}let U,Q=0;const ie=k-F+1;let Ae=!1,Oe=0;const Vt=new Array(ie);for(b=0;b<ie;b++)Vt[b]=0;for(b=T;b<=w;b++){const he=c[b];if(Q>=ie){Re(he,m,h,!0);continue}let Ie;if(he.key!=null)Ie=z.get(he.key);else for(U=F;U<=k;U++)if(Vt[U-F]===0&&Nt(he,p[U])){Ie=U;break}Ie===void 0?Re(he,m,h,!0):(Vt[Ie-F]=b+1,Ie>=Oe?Oe=Ie:Ae=!0,R(he,p[Ie],f,null,m,h,y,v,$),Q++)}const Ni=Ae?br(Vt):nt;for(U=Ni.length-1,b=ie-1;b>=0;b--){const he=F+b,Ie=p[he],Ri=p[he+1],Ai=he+1<L?Ri.el||qn(Ri):_;Vt[b]===0?R(null,Ie,f,Ai,m,h,y,v,$):Ae&&(U<0||b!==Ni[U]?st(Ie,f,Ai,2):U--)}}},st=(c,p,f,_,m=null)=>{const{el:h,type:y,transition:v,children:$,shapeFlag:b}=c;if(b&6){st(c.component.subTree,p,f,_);return}if(b&128){c.suspense.move(p,f,_);return}if(b&64){y.move(c,p,f,Ut);return}if(y===ee){s(h,p,f);for(let w=0;w<$.length;w++)st($[w],p,f,_);s(c.anchor,p,f);return}if(y===fs){G(c,p,f);return}if(_!==2&&b&1&&v)if(_===0)v.persisted&&!h[ts]?s(h,p,f):(v.beforeEnter(h),s(h,p,f),fe(()=>v.enter(h),m));else{const{leave:w,delayLeave:k,afterLeave:T}=v,F=()=>{c.ctx.isUnmounted?n(h):s(h,p,f)},z=()=>{const U=h._isLeaving||!!h[ts];h._isLeaving&&h[ts](!0),v.persisted&&!U?F():w(h,()=>{F(),T&&T()})};k?k(h,F,z):z()}else s(h,p,f)},Re=(c,p,f,_=!1,m=!1)=>{const{type:h,props:y,ref:v,children:$,dynamicChildren:b,shapeFlag:L,patchFlag:w,dirs:k,cacheIndex:T,memo:F}=c;if(w===-2&&(m=!1),v!=null&&(we(),Lt(v,null,f,c,!0),Pe()),T!=null&&(p.renderCache[T]=void 0),L&256){p.ctx.deactivate(c);return}const z=L&1&&k,U=!pt(c);let Q;if(U&&(Q=y&&y.onVnodeBeforeUnmount)&&Ee(Q,p,c),L&6)qc(c.component,f,_);else{if(L&128){c.suspense.unmount(f,_);return}z&&Qe(c,null,p,"beforeUnmount"),L&64?c.type.remove(c,p,f,Ut,_):b&&!b.hasOnce&&(h!==ee||w>0&&w&64)?Gt(b,p,f,!1,!0):(h===ee&&w&384||!m&&L&16)&&Gt($,p,f),_&&Ei(c)}const ie=F!=null&&T==null;(U&&(Q=y&&y.onVnodeUnmounted)||z||ie)&&fe(()=>{Q&&Ee(Q,p,c),z&&Qe(c,null,p,"unmounted"),ie&&(c.el=null)},f)},Ei=c=>{const{type:p,el:f,anchor:_,transition:m}=c;if(p===ee){Kc(f,_);return}if(p===fs){S(c);return}const h=()=>{n(f),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(c.shapeFlag&1&&m&&!m.persisted){const{leave:y,delayLeave:v}=m,$=()=>y(f,h);v?v(c.el,h,$):$()}else h()},Kc=(c,p)=>{let f;for(;c!==p;)f=x(c),n(c),c=f;n(p)},qc=(c,p,f)=>{const{bum:_,scope:m,job:h,subTree:y,um:v,m:$,a:b}=c;Kn($),Kn(b),_&&Io(_),m.stop(),h&&(h.flags|=8,Re(y,c,p,f)),v&&fe(v,p),fe(()=>{c.isUnmounted=!0},p)},Gt=(c,p,f,_=!1,m=!1,h=0)=>{for(let y=h;y<c.length;y++)Re(c[y],p,f,_,m)},To=c=>{if(c.shapeFlag&6)return To(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const p=x(c.anchor||c.el),f=p&&p[Ca];return f?x(f):p};let Ls=!1;const Ti=(c,p,f)=>{let _;c==null?p._vnode&&(Re(p._vnode,null,null,!0),_=p._vnode.component):R(p._vnode||null,c,p,null,null,null,f),p._vnode=c,Ls||(Ls=!0,pn(_),dn(),Ls=!1)},Ut={p:R,um:Re,m:st,r:Ei,mt:ks,mc:Ze,pc:K,pbc:tt,n:To,o:e};return{render:Ti,hydrate:void 0,createApp:Qa(Ti)}}function us({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function et({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function hr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function zn(e,t,o=!1){const s=e.children,n=t.children;if(C(s)&&C(n))for(let i=0;i<s.length;i++){const a=s[i];let r=n[i];r.shapeFlag&1&&!r.dynamicChildren&&((r.patchFlag<=0||r.patchFlag===32)&&(r=n[i]=Ue(n[i]),r.el=a.el),!o&&r.patchFlag!==-2&&zn(a,r)),r.type===ho&&(r.patchFlag===-1&&(r=n[i]=Ue(r)),r.el=a.el),r.type===Se&&!r.el&&(r.el=a.el)}}function br(e){const t=e.slice(),o=[0];let s,n,i,a,r;const l=e.length;for(s=0;s<l;s++){const u=e[s];if(u!==0){if(n=o[o.length-1],e[n]<u){t[s]=n,o.push(s);continue}for(i=0,a=o.length-1;i<a;)r=i+a>>1,e[o[r]]<u?i=r+1:a=r;u<e[o[i]]&&(i>0&&(t[s]=o[i-1]),o[i]=s)}}for(i=o.length,a=o[i-1];i-- >0;)o[i]=a,a=t[a];return o}function Bn(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bn(t)}function Kn(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function qn(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?qn(t.subTree):null}const Zn=e=>e.__isSuspense;function mr(e,t){t&&t.pendingBranch?C(e)?t.effects.push(...e):t.effects.push(e):wa(e)}const ee=Symbol.for("v-fgt"),ho=Symbol.for("v-txt"),Se=Symbol.for("v-cmt"),fs=Symbol.for("v-stc"),Ge=[];let ge=null;function A(e=!1){Ge.push(ge=e?null:[])}function gs(){Ge.pop(),ge=Ge[Ge.length-1]||null}let Tt=1;function Xn(e,t=!1){Tt+=e,e<0&&ge&&t&&(ge.hasOnce=!0)}function Jn(e){return e.dynamicChildren=Tt>0?ge||nt:null,gs(),Tt>0&&ge&&ge.push(e),e}function O(e,t,o,s,n,i){return Jn(E(e,t,o,s,n,i,!0))}function bo(e,t,o,s,n){return Jn(ye(e,t,o,s,n,!0))}function hs(e){return e?e.__v_isVNode===!0:!1}function Nt(e,t){return e.type===t.type&&e.key===t.key}const Yn=({key:e})=>e??null,mo=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?q(e)||re(e)||N(e)?{i:ne,r:e,k:t,f:!!o}:e:null);function E(e,t=null,o=null,s=0,n=null,i=e===ee?0:1,a=!1,r=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Yn(t),ref:t&&mo(t),scopeId:fn,slotScopeIds:null,children:o,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:ne};return r?(_o(l,o),i&128&&e.normalize(l)):o&&(l.shapeFlag|=q(o)?8:16),Tt>0&&!a&&ge&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&ge.push(l),l}const ye=_r;function _r(e,t=null,o=null,s=0,n=null,i=!1){if((!e||e===Ua)&&(e=Se),hs(e)){const r=ft(e,t,!0);return o&&_o(r,o),Tt>0&&!i&&ge&&(r.shapeFlag&6?ge[ge.indexOf(e)]=r:ge.push(r)),r.patchFlag=-2,r}if(Tr(e)&&(e=e.__vccOpts),t){t=$r(t);let{class:r,style:l}=t;r&&!q(r)&&(t.class=Be(r)),H(l)&&(Xo(l)&&!C(l)&&(l=J({},l)),t.style=Fo(l))}const a=q(e)?1:Zn(e)?128:co(e)?64:H(e)?4:N(e)?2:0;return E(e,t,o,s,n,a,i,!0)}function $r(e){return e?Xo(e)||Dn(e)?J({},e):e:null}function ft(e,t,o=!1,s=!1){const{props:n,ref:i,patchFlag:a,children:r,transition:l}=e,u=t?vr(n||{},t):n,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Yn(u),ref:t&&t.ref?o&&i?C(i)?i.concat(mo(t)):[i,mo(t)]:mo(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ee?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ft(e.ssContent),ssFallback:e.ssFallback&&ft(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&s&&os(d,l.clone(d)),d}function gt(e=" ",t=0){return ye(ho,null,e,t)}function de(e="",t=!1){return t?(A(),bo(Se,null,e)):ye(Se,null,e)}function Ce(e){return e==null||typeof e=="boolean"?ye(Se):C(e)?ye(ee,null,e.slice()):hs(e)?Ue(e):ye(ho,null,String(e))}function Ue(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ft(e)}function _o(e,t){let o=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(C(t))o=16;else if(typeof t=="object")if(s&65){const n=t.default;n&&(n._c&&(n._d=!1),_o(e,n()),n._c&&(n._d=!0));return}else{o=32;const n=t._;!n&&!Dn(t)?t._ctx=ne:n===3&&ne&&(ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(N(t)){if(s&65){_o(e,{default:t});return}t={default:t,_ctx:ne},o=32}else t=String(t),s&64?(o=16,t=[gt(t)]):o=8;e.children=t,e.shapeFlag|=o}function vr(...e){const t={};for(let o=0;o<e.length;o++){const s=e[o];for(const n in s)if(n==="class")t.class!==s.class&&(t.class=Be([t.class,s.class]));else if(n==="style")t.style=Fo([t.style,s.style]);else if(zt(n)){const i=t[n],a=s[n];a&&i!==a&&!(C(i)&&i.includes(a))?t[n]=i?[].concat(i,a):a:a==null&&i==null&&!Bt(n)&&(t[n]=a)}else n!==""&&(t[n]=s[n])}return t}function Ee(e,t,o,s=null){ve(e,t,7,[o,s])}const yr=Nn();let xr=0;function wr(e,t,o){const s=e.type,n=(t?t.appContext:e.appContext)||yr,i={uid:xr++,vnode:e,type:s,parent:t,appContext:n,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new zi(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(n.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Hn(s,n),emitsOptions:Rn(s,n),emit:null,emitted:null,propsDefaults:V,inheritAttrs:s.inheritAttrs,ctx:V,data:V,props:V,attrs:V,slots:V,refs:V,setupState:V,setupContext:null,suspense:o,suspenseId:o?o.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=tr.bind(null,i),e.ce&&e.ce(i),i}let le=null;const Qn=()=>le||ne;let $o,Rt;{const e=Jt(),t=(o,s)=>{let n;return(n=e[o])||(n=e[o]=[]),n.push(s),i=>{n.length>1?n.forEach(a=>a(i)):n[0](i)}};$o=t("__VUE_INSTANCE_SETTERS__",o=>le=o),Rt=t("__VUE_SSR_SETTERS__",o=>Ot=o)}const At=e=>{const t=le;return $o(e),e.scope.on(),()=>{e.scope.off(),$o(t)}},ei=()=>{le&&le.scope.off(),$o(null)};function ti(e){return e.vnode.shapeFlag&4}let Ot=!1;function Pr(e,t=!1,o=!1){t&&Rt(t);const{props:s,children:n}=e.vnode,i=ti(e);rr(e,s,i,t),dr(e,n,o||t);const a=i?kr(e,t):void 0;return t&&Rt(!1),a}function kr(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ba);const{setup:s}=o;if(s){we();const n=e.setupContext=s.length>1?Sr(e):null,i=At(e),a=rt(s,e,0,[e.props,n]),r=Es(a);if(Pe(),i(),(r||e.sp)&&!pt(e)&&mn(e),r){if(a.then(ei,ei),t)return a.then(l=>{Rt(!0);try{oi(e,l,t)}finally{Rt(!1)}}).catch(l=>{ao(l,e,0)});e.asyncDep=a}else oi(e,a)}else si(e)}function oi(e,t,o){N(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:H(t)&&(e.setupState=nn(t)),si(e)}function si(e,t,o){const s=e.type;e.render||(e.render=s.render||xe);{const n=At(e);we();try{Ka(e)}finally{Pe(),n()}}}const Lr={get(e,t){return ae(e,"get",""),e[t]}};function Sr(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,Lr),slots:e.slots,emit:e.emit,expose:t}}function vo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(nn(da(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in Ct)return Ct[o](e)},has(t,o){return o in t||o in Ct}})):e.proxy}const Cr=/(?:^|[-_])\w/g,Er=e=>e.replace(Cr,t=>t.toUpperCase()).replace(/[-_]/g,"");function ni(e,t=!0){return N(e)?e.displayName||e.name:e.name||t&&e.__name}function ii(e,t,o=!1){let s=ni(t);if(!s&&t.__file){const n=t.__file.match(/([^/\\]+)\.\w+$/);n&&(s=n[1])}if(!s&&e){const n=i=>{for(const a in i)if(i[a]===t)return a};s=n(e.components)||e.parent&&n(e.parent.type.components)||n(e.appContext.components)}return s?Er(s):o?"App":"Anonymous"}function Tr(e){return N(e)&&"__vccOpts"in e}const Nr=(e,t)=>ga(e,t,Ot),Rr="3.5.42";/**
* @vue/runtime-dom v3.5.42
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let bs;const ai=typeof window<"u"&&window.trustedTypes;if(ai)try{bs=ai.createPolicy("vue",{createHTML:e=>e})}catch{}const ri=bs?e=>bs.createHTML(e):e=>e,Ar="http://www.w3.org/2000/svg",Or="http://www.w3.org/1998/Math/MathML",Ve=typeof document<"u"?document:null,li=Ve&&Ve.createElement("template"),Ir={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,s)=>{const n=t==="svg"?Ve.createElementNS(Ar,e):t==="mathml"?Ve.createElementNS(Or,e):o?Ve.createElement(e,{is:o}):Ve.createElement(e);return e==="select"&&s&&s.multiple!=null&&n.setAttribute("multiple",s.multiple),n},createText:e=>Ve.createTextNode(e),createComment:e=>Ve.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ve.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,s,n,i){const a=o?o.previousSibling:t.lastChild;if(n&&(n===i||n.nextSibling))for(;t.insertBefore(n.cloneNode(!0),o),!(n===i||!(n=n.nextSibling)););else{li.innerHTML=ri(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const r=li.content;if(s==="svg"||s==="mathml"){const l=r.firstChild;for(;l.firstChild;)r.appendChild(l.firstChild);r.removeChild(l)}t.insertBefore(r,o)}return[a?a.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},Fr=Symbol("_vtc");function Mr(e,t,o){const s=e[Fr];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const yo=Symbol("_vod"),ci=Symbol("_vsh"),ms={name:"show",beforeMount(e,{value:t},{transition:o}){e[yo]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):It(e,t)},mounted(e,{value:t},{transition:o}){o&&t&&o.enter(e)},updated(e,{value:t,oldValue:o},{transition:s}){!t!=!o&&(s?t?(s.beforeEnter(e),It(e,!0),s.enter(e)):s.leave(e,()=>{It(e,!1)}):It(e,t))},beforeUnmount(e,{value:t}){It(e,t)}};function It(e,t){e.style.display=t?e[yo]:"none",e[ci]=!t}const Dr=Symbol(""),Wr=/(?:^|;)\s*display\s*:/;function Hr(e,t,o){const s=e.style,n=q(o);let i=!1;if(o&&!n){if(t)if(q(t))for(const a of t.split(";")){const r=a.slice(0,a.indexOf(":")).trim();o[r]==null&&Ft(s,r,"")}else for(const a in t)o[a]==null&&Ft(s,a,"");for(const a in o){a==="display"&&(i=!0);const r=o[a];r!=null?Gr(e,a,!q(t)&&t?t[a]:void 0,r)||Ft(s,a,r):Ft(s,a,"")}}else if(n){if(t!==o){const a=s[Dr];a&&(o+=";"+a),s.cssText=o,i=Wr.test(o)}}else t&&e.removeAttribute("style");yo in e&&(e[yo]=i?s.display:"",e[ci]&&(s.display="none"))}const xo=/\s*!important$/;function Ft(e,t,o){if(C(o))o.forEach(s=>Ft(e,t,s));else if(o==null&&(o=""),t.startsWith("--"))xo.test(o)?e.setProperty(t,o.replace(xo,""),"important"):e.setProperty(t,o);else{const s=jr(e,t);xo.test(o)?e.setProperty(be(s),o.replace(xo,""),"important"):e[s]=o}}const pi=["Webkit","Moz","ms"],_s={};function jr(e,t){const o=_s[t];if(o)return o;let s=oe(t);if(s!=="filter"&&s in e)return _s[t]=s;s=Xt(s);for(let n=0;n<pi.length;n++){const i=pi[n]+s;if(i in e)return _s[t]=i}return t}function Gr(e,t,o,s){return e.tagName==="TEXTAREA"&&(t==="width"||t==="height")&&q(s)&&o===s}const di="http://www.w3.org/1999/xlink";function ui(e,t,o,s,n,i=Ui(t)){s&&t.startsWith("xlink:")?o==null?e.removeAttributeNS(di,t.slice(6,t.length)):e.setAttributeNS(di,t,o):o==null||i&&!Os(o)?e.removeAttribute(t):e.setAttribute(t,i?"":me(o)?String(o):o)}function fi(e,t,o,s,n){if(t==="innerHTML"||t==="textContent"){o!=null&&(e[t]=t==="innerHTML"?ri(o):o);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const r=i==="OPTION"?e.getAttribute("value")||"":e.value,l=o==null?e.type==="checkbox"?"on":"":String(o);(r!==l||!("_value"in e))&&(e.value=l),o==null&&e.removeAttribute(t),e._value=o;return}let a=!1;if(o===""||o==null){const r=typeof e[t];r==="boolean"?o=Os(o):o==null&&r==="string"?(o="",a=!0):r==="number"&&(o=0,a=!0)}try{e[t]=o}catch{}a&&e.removeAttribute(n||t)}function Ur(e,t,o,s){e.addEventListener(t,o,s)}function Vr(e,t,o,s){e.removeEventListener(t,o,s)}const gi=Symbol("_vei");function zr(e,t,o,s,n=null){const i=e[gi]||(e[gi]={}),a=i[t];if(s&&a)a.value=s;else{const[r,l]=qr(t);if(s){const u=i[t]=Jr(s,n);Ur(e,r,u,l)}else a&&(Vr(e,r,a,l),i[t]=void 0)}}const Br=/(Once|Passive|Capture)$/,Kr=/^on:?(?:Once|Passive|Capture)$/;function qr(e){let t,o;for(;(o=e.match(Br))&&!Kr.test(e);)t||(t={}),e=e.slice(0,e.length-o[1].length),t[o[1].toLowerCase()]=!0;return[e[2]===":"?e.slice(3):be(e.slice(2)),t]}let $s=0;const Zr=Promise.resolve(),Xr=()=>$s||(Zr.then(()=>$s=0),$s=Date.now());function Jr(e,t){const o=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=o.attached)return;const n=o.value;if(C(n)){const i=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{i.call(s),s._stopped=!0};const a=n.slice(),r=[s];for(let l=0;l<a.length&&!s._stopped;l++){const u=a[l];u&&ve(u,t,5,r)}}else ve(n,t,5,[s])};return o.value=e,o.attached=Xr(),o}const hi=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Yr=(e,t,o,s,n,i)=>{const a=n==="svg";t==="class"?Mr(e,s,a):t==="style"?Hr(e,o,s):zt(t)?Bt(t)||zr(e,t,o,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qr(e,t,s,a))?(fi(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ui(e,t,s,a,i,t!=="value")):e._isVueCE&&(el(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!q(s)))?fi(e,oe(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ui(e,t,s,a))};function Qr(e,t,o,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&hi(t)&&N(o));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const n=e.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return hi(t)&&q(o)?!1:t in e}function el(e,t){const o=e._def.props;if(!o)return!1;const s=oe(t);return Array.isArray(o)?o.some(n=>oe(n)===s):Object.keys(o).some(n=>oe(n)===s)}const bi={};function tl(e,t,o){let s=ss(e,t);qt(s)&&(s=J({},s,t));class n extends vs{constructor(a){super(s,a,o)}}return n.def=s,n}const ol=typeof HTMLElement<"u"?HTMLElement:class{};class vs extends ol{constructor(t,o={},s=$i){super(),this._def=t,this._props=o,this._createApp=s,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&s!==$i?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(J({},t.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof vs){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,ln(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(t){for(const o of t)this._setAttr(o.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let s=0;s<this.attributes.length;s++)this._setAttr(this.attributes[s].name);this._ob=new MutationObserver(this._processMutations.bind(this)),this._ob.observe(this,{attributes:!0});const t=(s,n=!1)=>{this._resolved=!0,this._pendingResolve=void 0;const{props:i,styles:a}=s;let r;if(i&&!C(i))for(const l in i){const u=i[l];(u===Number||u&&u.type===Number)&&(l in this._props&&(this._props[l]=Rs(this._props[l])),(r||(r=Object.create(null)))[oe(l)]=!0)}this._numberProps=r,this._resolveProps(s),this.shadowRoot&&this._applyStyles(a),this._mount(s)},o=this._def.__asyncLoader;if(o)return this._pendingResolve=o().then(s=>{s.configureApp=this._def.configureApp,t(this._def=s,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const o=this._instance&&this._instance.exposed;if(o)for(const s in o)D(this,s)||Object.defineProperty(this,s,{get:()=>sn(o[s])})}_resolveProps(t){const{props:o}=t,s=C(o)?o:Object.keys(o||{});for(const n of Object.keys(this))n[0]!=="_"&&s.includes(n)&&this._setProp(n,this[n]);for(const n of s.map(oe))Object.defineProperty(this,n,{get(){return this._getProp(n)},set(i){this._setProp(n,i,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const o=this.hasAttribute(t);let s=o?this.getAttribute(t):bi;const n=oe(t);o&&this._numberProps&&this._numberProps[n]&&(s=Rs(s)),this._setProp(n,s,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,o,s=!0,n=!1){if(o!==this._props[t]&&(this._dirty=!0,o===bi?delete this._props[t]:(this._props[t]=o,t==="key"&&this._app&&(this._app._ceVNode.key=o)),n&&this._instance&&this._update(),s)){const i=this._ob;i&&(this._processMutations(i.takeRecords()),i.disconnect()),o===!0?this.setAttribute(be(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute(be(t),o+""):o||this.removeAttribute(be(t)),i&&i.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),nl(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const o=ye(this._def,J(t,this._props));return this._instance||(o.ce=s=>{this._instance=s,s.ce=this,s.isCE=!0;const n=(i,a)=>{this.dispatchEvent(new CustomEvent(i,qt(a[0])?J({detail:a},a[0]):{detail:a}))};s.emit=(i,...a)=>{n(i,a),be(i)!==i&&n(be(i),a)},this._setParent()}),o}_applyStyles(t,o,s){if(!t)return;if(o){if(o===this._def||this._styleChildren.has(o))return;this._styleChildren.add(o)}const n=this._nonce,i=this.shadowRoot,a=s?this._getStyleAnchor(s)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(i);let r=null;for(let l=t.length-1;l>=0;l--){const u=document.createElement("style");n&&u.setAttribute("nonce",n),u.textContent=t[l],i.insertBefore(u,r||a),r=u,l===0&&(s||this._styleAnchors.set(this._def,u),o&&this._styleAnchors.set(o,u))}}_getStyleAnchor(t){if(!t)return null;const o=this._styleAnchors.get(t);return o&&o.parentNode===this.shadowRoot?o:(o&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let o=0;o<t.childNodes.length;o++){const s=t.childNodes[o];if(!(s instanceof HTMLStyleElement))return s}return null}_parseSlots(){const t=this._slots={};let o;for(;o=this.firstChild;){const s=o.nodeType===1&&o.getAttribute("slot")||"default";(t[s]||(t[s]=[])).push(o),this.removeChild(o)}}_renderSlots(){const t=this._getSlots(),o=this._instance.type.__scopeId;for(let s=0;s<t.length;s++){const n=t[s],i=n.getAttribute("name")||"default",a=this._slots[i],r=n.parentNode;if(a)for(const l of a){if(o&&l.nodeType===1){const u=o+"-s",d=document.createTreeWalker(l,1);l.setAttribute(u,"");let g;for(;g=d.nextNode();)g.setAttribute(u,"")}r.insertBefore(l,n)}else for(;n.firstChild;)r.insertBefore(n.firstChild,n);r.removeChild(n)}}_getSlots(){const t=[this];this._teleportTargets&&t.push(...this._teleportTargets);const o=new Set;for(const s of t){const n=s.querySelectorAll("slot");for(let i=0;i<n.length;i++)o.add(n[i])}return Array.from(o)}_injectChildStyle(t,o){this._applyStyles(t.styles,t,o)}_beginPatch(){this._patching=!0,this._dirty=!1}_endPatch(){this._patching=!1,this._dirty&&this._instance&&this._update()}_hasShadowRoot(){return this._def.shadowRoot!==!1}_removeChildStyle(t){}}const sl=J({patchProp:Yr},Ir);let mi;function _i(){return mi||(mi=fr(sl))}const nl=(...e)=>{_i().render(...e)},$i=(...e)=>{const t=_i().createApp(...e),{mount:o}=t;return t.mount=s=>{const n=al(s);if(!n)return;const i=t._component;!N(i)&&!i.render&&!i.template&&(i.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const a=o(n,!1,il(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),a},t};function il(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function al(e){return q(e)?document.querySelector(e):e}const rl=Object.assign({"./locales/ar/grid.json":{search:"ابحث عن الشعوب…",hide_filters:"إخفاء عوامل التصفية",show_filters:"إظهار عوامل التصفية",total:"الإجمالي",showing:"المعروض",load_more:"عرض المزيد",full_profile:"الملف الكامل",wagf_region:"المنطقة",wagf_block:"كتلة التقارب",rop1:"الشعب",religion:"الدين",exact_filter:"تطابق تام",clear_all:"مسح الكل",loading:"جارٍ التحميل…",no_results:"لا توجد شعوب مطابقة لهذا التصفية.",type_to_search:"اكتب للبحث...",load_failed:"تعذّر تحميل بيانات الشعوب. هذه مشكلة اتصال، وليست مشكلة في التصفية.",search_people_or_countries:"ابحث عن الشعوب أو الدول…"},"./locales/ar/messages.json":{menuComingSoon:"القائمة قادمة قريباً",pinHint:{tapDot:"اضغط على نقطة ملوّنة — لا يزال هناك من يحتاج إلى الصلاة"},upg100WallHeading:"قائمتي UPG 100 — قوائم الصلاة والملصقات",upg100WallTag:"تعبئة للصلاة",upg100WallIntroA:"وزّع مهمة الصلاة في مجموعات من خمسين ومئة — كما أطعم يسوع الخمسة آلاف (لوقا ٩:١٤). كل ملصق هو قائمة من 100 يمكنك أن تصلي بها وتطبعها وتعلّقها على الحائط — مصلّيًا لأجلهم ",upg100WallIntroEmph:"باسم شعبهم",upg100WallIntroB:".",loadingNamed:"جارٍ تحميل {name}…",couldNotLoadNamed:"تعذّر تحميل {name}.",engineMissing:"لم يتم تحميل محرك الخرائط {engine}.",packetFailed:"فشل إنشاء الكُتيّب: {reason}",selectionPacketFailed:"فشل إنشاء كُتيّب التحديد: {reason}",posterOneTerritory:"الملصق يطبع منطقة واحدة في كل مرة — {count} محددة.",selectionPosterFailed:"فشل إنشاء ملصق التحديد: {reason}",mapUnavailable:"الخريطة غير متاحة",copied:"تم النسخ!",copyFailed:"فشل النسخ — اضغط Ctrl/Cmd-C",engineNotLoaded:"لم يتم تحميل محرك الخريطة",engineNotLoadedDetail:"لم يتم تحميل محرك الخريطة {engine}. القائمة ووسيلة الإيضاح غير متأثرتين."},"./locales/ar/poster.json":{export_poster:"تصدير الملصق",size:"الحجم",orientation:"الاتجاه",portrait:"طولي",landscape:"عرضي",dpi:"DPI",format:"الصيغة",png_raster:"PNG (نقطي)",pdf_raster:"PDF (نقطي على صفحة متجهية)",title:"العنوان",map_title:"عنوان الخريطة",subtitle:"العنوان الفرعي",slots:"العناصر",scale_bar:"شريط المقياس",north_arrow:"سهم الشمال",footer_attribution:"التذييل (الإسناد مطلوب)",cancel:"إلغاء",map_preview:"معاينة الخريطة",loading_snapshot:"جارٍ تحميل لقطة الخريطة…",preview_unavailable:"المعاينة غير متاحة"},"./locales/ar/search.json":{placeholder:"شعب، مكان، لغة، ديانة",placeholderNoPlaces:"شعب، لغة، ديانة (البحث عن الأماكن يتطلب رمز Mapbox)",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"},sections:{within:"ضمن {selection}",allData:"كل بيانات DOXA"},upg100Placeholder:"ابحث عن شعب أو قائمة UPG-100 أو منطقة…"},"./locales/ar/tabs.json":{prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة",upg100Region:"المنطقة",upg100Zone:"قوائم UPG-100",upg100Group:"مجموعة شعبية",selectView:"اختر العرض",views:"العروض",prayerResources:"موارد الصلاة",map:"الخريطة",countryPosters:"ملصقات الدول"},"./locales/de/grid.json":{search:"Volksgruppen suchen…",hide_filters:"Filter ausblenden",show_filters:"Filter anzeigen",total:"Gesamt",showing:"Angezeigt",load_more:"Mehr laden",full_profile:"Vollständiges Profil",wagf_region:"Region",wagf_block:"Affinitätsblock",rop1:"Volk",religion:"Religion",exact_filter:"Exakt",clear_all:"Alle löschen",loading:"Wird geladen…",no_results:"Keine Volksgruppen entsprechen diesem Filter.",type_to_search:"Zum Suchen tippen...",load_failed:"Die Daten konnten nicht geladen werden. Das ist ein Verbindungsproblem, nicht Ihr Filter.",search_people_or_countries:"Volksgruppen oder Länder suchen…"},"./locales/de/messages.json":{menuComingSoon:"Menü folgt in Kürze",pinHint:{tapDot:"Tippe auf einen farbigen Punkt — jemand braucht noch Gebet"},upg100WallHeading:"Meine UPG-100-Liste — Gebetslisten und Poster",upg100WallTag:"Gebetsmobilisierung",upg100WallIntroA:"Teilen Sie die Gebetsaufgabe in Gruppen zu fünfzig und hundert auf — so wie Jesus die 5.000 speiste (Lukas 9,14). Jedes Poster ist eine 100er-Liste, die Sie beten, drucken und an die Wand hängen können — und für sie ",upg100WallIntroEmph:"mit dem Namen ihrer Volksgruppe",upg100WallIntroB:" beten.",loadingNamed:"{name} wird geladen…",couldNotLoadNamed:"{name} konnte nicht geladen werden.",engineMissing:"Die Karten-Engine {engine} wurde nicht geladen.",packetFailed:"Heft fehlgeschlagen: {reason}",selectionPacketFailed:"Heft der Auswahl fehlgeschlagen: {reason}",posterOneTerritory:"Das Plakat druckt ein Gebiet auf einmal — {count} ausgewählt.",selectionPosterFailed:"Plakat der Auswahl fehlgeschlagen: {reason}",mapUnavailable:"Karte nicht verfügbar",copied:"Kopiert!",copyFailed:"Kopieren fehlgeschlagen — Strg/Cmd-C drücken",engineNotLoaded:"Karten-Engine nicht geladen",engineNotLoadedDetail:"Die Karten-Engine {engine} wurde nicht geladen. Liste und Legende sind nicht betroffen."},"./locales/de/poster.json":{export_poster:"Poster exportieren",size:"Größe",orientation:"Ausrichtung",portrait:"Hochformat",landscape:"Querformat",dpi:"DPI",format:"Format",png_raster:"PNG (Raster)",pdf_raster:"PDF (Raster auf Vektorseite)",title:"Titel",map_title:"Kartentitel",subtitle:"Untertitel",slots:"Elemente",scale_bar:"Maßstabsleiste",north_arrow:"Nordpfeil",footer_attribution:"Fußzeile (Quellenangabe erforderlich)",cancel:"Abbrechen",map_preview:"Kartenvorschau",loading_snapshot:"Kartenaufnahme wird geladen…",preview_unavailable:"Vorschau nicht verfügbar"},"./locales/de/search.json":{placeholder:"Volk, Ort, Sprache, Religion",placeholderNoPlaces:"Volk, Sprache, Religion (Ortssuche braucht ein Mapbox-Token)",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle DOXA-Daten"},kinds:{people:"Volk + Land",peopleGroup:"Volk",bloc:"Affinitätsblock",cluster:"Völkercluster",country:"Land",region:"Region",family:"Sprachfamilie",languageKind:"Sprache",dialect:"Dialekt",religionKind:"Religion"},upg100Placeholder:"Volksgruppe, UPG-100-Liste oder Region suchen…"},"./locales/de/tabs.json":{prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land",upg100Region:"Region",upg100Zone:"UPG-100-Listen",upg100Group:"Volksgruppe",selectView:"Ansicht wählen",views:"Ansichten",prayerResources:"Gebetsressourcen",map:"Karte",countryPosters:"Länderposter"},"./locales/en/grid.json":{search:"Search people groups…",hide_filters:"Hide Filters",show_filters:"Show Filters",total:"Total",showing:"Showing",load_more:"Load More",full_profile:"Full Profile",wagf_region:"Region",wagf_block:"Affinity Block",rop1:"People Group",religion:"Religion",exact_filter:"Exact",clear_all:"Clear All",loading:"Loading…",no_results:"No people groups match this filter.",type_to_search:"Type to search...",load_failed:"People-group data could not be loaded. This is a connection problem, not your filter.",search_people_or_countries:"Search people groups or countries…"},"./locales/en/messages.json":{menuComingSoon:"Menu coming soon",pinHint:{tapDot:"Tap a coloured dot — someone still needs prayer"},upg100WallHeading:"My UPG 100 List — Prayer Lists & Posters",upg100WallTag:"Prayer Mobilization",upg100WallIntroA:"Hand away the prayer task in clusters of fifties and hundreds — the way Jesus fed the 5,000 (Luke 9:14). Each poster is a 100-list you can pray, print, and put on a wall — praying for them ",upg100WallIntroEmph:"by their people group name",upg100WallIntroB:".",loadingNamed:"Loading {name}…",couldNotLoadNamed:"Could not load {name}.",engineMissing:"The {engine} map engine did not load.",packetFailed:"Packet failed: {reason}",selectionPacketFailed:"Selection packet failed: {reason}",posterOneTerritory:"Poster prints one territory at a time — {count} selected.",selectionPosterFailed:"Selection poster failed: {reason}",mapUnavailable:"Map unavailable",copied:"Copied!",copyFailed:"Copy failed — press Ctrl/Cmd-C",engineNotLoaded:"map engine not loaded",engineNotLoadedDetail:"The {engine} map engine did not load. The list and legend are unaffected."},"./locales/en/poster.json":{export_poster:"Export Poster",size:"Size",orientation:"Orientation",portrait:"Portrait",landscape:"Landscape",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster on vector page)",title:"Title",map_title:"Map title",subtitle:"Subtitle",slots:"Slots",scale_bar:"Scale bar",north_arrow:"North arrow",footer_attribution:"Footer (attribution required)",cancel:"Cancel",map_preview:"map preview",loading_snapshot:"Loading map snapshot…",preview_unavailable:"preview unavailable"},"./locales/en/search.json":{placeholder:"People, place, language, religion",placeholderNoPlaces:"People, language, religion (place search needs a Mapbox token)",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All DOXA Data"},upg100Placeholder:"Search people group, UPG-100 list, or region…"},"./locales/en/tabs.json":{prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups (Affinity)",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country",upg100Region:"Region",upg100Zone:"UPG-100 Lists",upg100Group:"People Group",selectView:"Select View",views:"Views",prayerResources:"Prayer Resources",map:"Map",countryPosters:"Country Posters"},"./locales/es/grid.json":{search:"Buscar pueblos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Cargar más",full_profile:"Perfil completo",wagf_region:"Región",wagf_block:"Bloque de afinidad",rop1:"Pueblo",religion:"Religión",exact_filter:"Exacto",clear_all:"Borrar todo",loading:"Cargando…",no_results:"Ningún pueblo coincide con este filtro.",type_to_search:"Escribe para buscar...",load_failed:"No se pudieron cargar los datos de pueblos. Es un problema de conexión, no de tu filtro.",search_people_or_countries:"Buscar pueblos o países…"},"./locales/es/messages.json":{menuComingSoon:"Menú próximamente",pinHint:{tapDot:"Toca un punto de color: alguien todavía necesita oración"},upg100WallHeading:"Mi lista UPG 100 — Listas de oración y carteles",upg100WallTag:"Movilización de oración",upg100WallIntroA:"Reparte la tarea de la oración en grupos de cincuenta y de cien, como Jesús alimentó a los 5.000 (Lucas 9:14). Cada cartel es una lista de 100 que puedes orar, imprimir y poner en la pared — orando por ellos ",upg100WallIntroEmph:"por el nombre de su pueblo",upg100WallIntroB:".",loadingNamed:"Cargando {name}…",couldNotLoadNamed:"No se pudo cargar {name}.",engineMissing:"El motor de mapas {engine} no se cargó.",packetFailed:"Error al generar el cuadernillo: {reason}",selectionPacketFailed:"Error al generar el cuadernillo de la selección: {reason}",posterOneTerritory:"El cartel imprime un territorio a la vez: {count} seleccionados.",selectionPosterFailed:"Error al generar el cartel de la selección: {reason}",mapUnavailable:"Mapa no disponible",copied:"¡Copiado!",copyFailed:"Error al copiar: pulsa Ctrl/Cmd-C",engineNotLoaded:"motor de mapas no cargado",engineNotLoadedDetail:"El motor de mapas {engine} no se cargó. La lista y la leyenda no se ven afectadas."},"./locales/es/poster.json":{export_poster:"Exportar póster",size:"Tamaño",orientation:"Orientación",portrait:"Vertical",landscape:"Horizontal",dpi:"DPI",format:"Formato",png_raster:"PNG (ráster)",pdf_raster:"PDF (ráster en página vectorial)",title:"Título",map_title:"Título del mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Flecha norte",footer_attribution:"Pie de página (atribución obligatoria)",cancel:"Cancelar",map_preview:"vista previa del mapa",loading_snapshot:"Cargando la captura del mapa…",preview_unavailable:"vista previa no disponible"},"./locales/es/search.json":{placeholder:"Pueblo, lugar, idioma, religión",placeholderNoPlaces:"Pueblo, idioma, religión (buscar lugares requiere un token de Mapbox)",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"},sections:{within:"Dentro de {selection}",allData:"Todos los datos DOXA"},upg100Placeholder:"Buscar pueblo, lista UPG-100 o región…"},"./locales/es/tabs.json":{prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País",upg100Region:"Región",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Seleccionar vista",views:"Vistas",prayerResources:"Recursos de oración",map:"Mapa",countryPosters:"Carteles por país"},"./locales/fr/grid.json":{search:"Rechercher des peuples…",hide_filters:"Masquer les filtres",show_filters:"Afficher les filtres",total:"Total",showing:"Affichage",load_more:"Charger plus",full_profile:"Profil complet",wagf_region:"Région",wagf_block:"Bloc d'affinité",rop1:"Peuple",religion:"Religion",exact_filter:"Exact",clear_all:"Tout effacer",loading:"Chargement…",no_results:"Aucun peuple ne correspond à ce filtre.",type_to_search:"Tapez pour rechercher...",load_failed:"Les données n’ont pas pu être chargées. C’est un problème de connexion, pas votre filtre.",search_people_or_countries:"Rechercher des peuples ou des pays…"},"./locales/fr/messages.json":{menuComingSoon:"Menu bientôt disponible",pinHint:{tapDot:"Touchez un point coloré — quelqu’un a encore besoin de prière"},upg100WallHeading:"Ma liste UPG 100 — Listes de prière et affiches",upg100WallTag:"Mobilisation pour la prière",upg100WallIntroA:"Répartissez la tâche de la prière par groupes de cinquante et de cent — comme Jésus a nourri les 5 000 (Luc 9:14). Chaque affiche est une liste de 100 que vous pouvez prier, imprimer et afficher au mur — en priant pour eux ",upg100WallIntroEmph:"par le nom de leur peuple",upg100WallIntroB:".",loadingNamed:"Chargement de {name}…",couldNotLoadNamed:"Impossible de charger {name}.",engineMissing:"Le moteur de carte {engine} ne s’est pas chargé.",packetFailed:"Échec du livret : {reason}",selectionPacketFailed:"Échec du livret de la sélection : {reason}",posterOneTerritory:"L’affiche imprime un territoire à la fois — {count} sélectionnés.",selectionPosterFailed:"Échec de l’affiche de la sélection : {reason}",mapUnavailable:"Carte indisponible",copied:"Copié !",copyFailed:"Échec de la copie — appuyez sur Ctrl/Cmd-C",engineNotLoaded:"moteur cartographique non chargé",engineNotLoadedDetail:"Le moteur cartographique {engine} ne s’est pas chargé. La liste et la légende ne sont pas affectées."},"./locales/fr/poster.json":{export_poster:"Exporter l'affiche",size:"Taille",orientation:"Orientation",portrait:"Portrait",landscape:"Paysage",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster sur page vectorielle)",title:"Titre",map_title:"Titre de la carte",subtitle:"Sous-titre",slots:"Éléments",scale_bar:"Échelle",north_arrow:"Flèche du nord",footer_attribution:"Pied de page (attribution requise)",cancel:"Annuler",map_preview:"aperçu de la carte",loading_snapshot:"Chargement de l'instantané de la carte…",preview_unavailable:"aperçu indisponible"},"./locales/fr/search.json":{placeholder:"Peuple, lieu, langue, religion",placeholderNoPlaces:"Peuple, langue, religion (la recherche de lieux requiert un jeton Mapbox)",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"},sections:{within:"Dans {selection}",allData:"Toutes les données DOXA"},upg100Placeholder:"Rechercher un peuple, une liste UPG-100 ou une région…"},"./locales/fr/tabs.json":{prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays",upg100Region:"Région",upg100Zone:"Listes UPG-100",upg100Group:"Groupe de peuples",selectView:"Choisir la vue",views:"Vues",prayerResources:"Ressources de prière",map:"Carte",countryPosters:"Affiches par pays"},"./locales/hi/grid.json":{search:"जनसमूह खोजें…",hide_filters:"फ़िल्टर छिपाएँ",show_filters:"फ़िल्टर दिखाएँ",total:"कुल",showing:"दिखा रहे हैं",load_more:"और देखें",full_profile:"पूरी प्रोफ़ाइल",wagf_region:"क्षेत्र",wagf_block:"समानता समूह",rop1:"जनसमूह",religion:"धर्म",exact_filter:"सटीक",clear_all:"सब हटाएँ",loading:"लोड हो रहा है…",no_results:"इस फ़िल्टर से कोई जनसमूह मेल नहीं खाता।",type_to_search:"खोजने के लिए लिखें...",load_failed:"जनसमूह डेटा लोड नहीं हो सका। यह कनेक्शन की समस्या है, आपके फ़िल्टर की नहीं।",search_people_or_countries:"जनसमूह या देश खोजें…"},"./locales/hi/messages.json":{menuComingSoon:"मेनू शीघ्र आ रहा है",pinHint:{tapDot:"किसी रंगीन बिंदु पर टैप करें — किसी को अभी भी प्रार्थना की आवश्यकता है"},upg100WallHeading:"मेरी UPG 100 सूची — प्रार्थना सूचियाँ और पोस्टर",upg100WallTag:"प्रार्थना लामबंदी",upg100WallIntroA:"प्रार्थना के काम को पचास-पचास और सौ-सौ के समूहों में बाँटें — जैसे यीशु ने 5,000 लोगों को खिलाया (लूका 9:14)। हर पोस्टर 100 की एक सूची है जिसके लिए आप प्रार्थना कर सकते हैं, छाप सकते हैं और दीवार पर लगा सकते हैं — उनके लिए ",upg100WallIntroEmph:"उनके जनसमूह के नाम से",upg100WallIntroB:" प्रार्थना करते हुए।",loadingNamed:"{name} लोड हो रहा है…",couldNotLoadNamed:"{name} लोड नहीं हो सका।",engineMissing:"{engine} नक्शा इंजन लोड नहीं हुआ।",packetFailed:"पुस्तिका विफल: {reason}",selectionPacketFailed:"चयन की पुस्तिका विफल: {reason}",posterOneTerritory:"पोस्टर एक समय में एक क्षेत्र छापता है — {count} चयनित।",selectionPosterFailed:"चयन का पोस्टर विफल: {reason}",mapUnavailable:"मानचित्र अनुपलब्ध",copied:"कॉपी हो गया!",copyFailed:"कॉपी विफल — Ctrl/Cmd-C दबाएँ",engineNotLoaded:"मानचित्र इंजन लोड नहीं हुआ",engineNotLoadedDetail:"{engine} मानचित्र इंजन लोड नहीं हुआ। सूची और लेजेंड अप्रभावित हैं।"},"./locales/hi/poster.json":{export_poster:"पोस्टर निर्यात करें",size:"आकार",orientation:"अभिविन्यास",portrait:"पोर्ट्रेट",landscape:"लैंडस्केप",dpi:"DPI",format:"प्रारूप",png_raster:"PNG (रास्टर)",pdf_raster:"PDF (वेक्टर पृष्ठ पर रास्टर)",title:"शीर्षक",map_title:"मानचित्र शीर्षक",subtitle:"उपशीर्षक",slots:"स्लॉट",scale_bar:"स्केल बार",north_arrow:"उत्तर तीर",footer_attribution:"फ़ुटर (एट्रिब्यूशन आवश्यक)",cancel:"रद्द करें",map_preview:"मानचित्र पूर्वावलोकन",loading_snapshot:"मानचित्र स्नैपशॉट लोड हो रहा है…",preview_unavailable:"पूर्वावलोकन उपलब्ध नहीं"},"./locales/hi/search.json":{placeholder:"लोग, स्थान, भाषा, धर्म",placeholderNoPlaces:"लोग, भाषा, धर्म (स्थान खोज के लिए Mapbox टोकन चाहिए)",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"},sections:{within:"{selection} के भीतर",allData:"सभी DOXA डेटा"},kinds:{people:"जनसमूह + देश",peopleGroup:"जनसमूह",bloc:"समानता समूह",cluster:"जनसमूह क्लस्टर",country:"देश",region:"क्षेत्र",family:"भाषा परिवार",languageKind:"भाषा",dialect:"बोली",religionKind:"धर्म"},upg100Placeholder:"जनसमूह, UPG-100 सूची या क्षेत्र खोजें…"},"./locales/hi/tabs.json":{prayer:"प्रार्थना",adoption:"गोद लेना",engagement:"सहभागिता","affinity-blocks":"जनसमूह",regions:"क्षेत्र",countries:"देश","language-families":"भाषाएँ",religion:"धर्म",family:"भाषा परिवार",language:"भाषा",dialect:"बोली/रूप",bloc:"समानता समूह",cluster:"क्लस्टर",group:"जनसमूह",pgic:"देश में जनसमूह",region:"WAGF क्षेत्र",block:"WAGF ब्लॉक",country:"देश",upg100Region:"क्षेत्र",upg100Zone:"UPG-100 सूचियाँ",upg100Group:"जनसमूह",selectView:"दृश्य चुनें",views:"दृश्य",prayerResources:"प्रार्थना संसाधन",map:"मानचित्र",countryPosters:"देश पोस्टर"},"./locales/it/grid.json":{search:"Cerca popoli…",hide_filters:"Nascondi filtri",show_filters:"Mostra filtri",total:"Totale",showing:"Mostrati",load_more:"Carica altro",full_profile:"Profilo completo",wagf_region:"Regione",wagf_block:"Blocco di affinità",rop1:"Popolo",religion:"Religione",exact_filter:"Esatto",clear_all:"Cancella tutto",loading:"Caricamento…",no_results:"Nessun popolo corrisponde a questo filtro.",type_to_search:"Digita per cercare...",load_failed:"Impossibile caricare i dati dei popoli. È un problema di connessione, non del filtro.",search_people_or_countries:"Cerca popoli o paesi…"},"./locales/it/messages.json":{menuComingSoon:"Menu in arrivo",pinHint:{tapDot:"Tocca un punto colorato — qualcuno ha ancora bisogno di preghiera"},upg100WallHeading:"La mia lista UPG 100 — Liste di preghiera e poster",upg100WallTag:"Mobilitazione alla preghiera",upg100WallIntroA:"Distribuisci il compito della preghiera in gruppi di cinquanta e di cento — come Gesù sfamò i 5.000 (Luca 9:14). Ogni poster è una lista di 100 che puoi pregare, stampare e appendere al muro — pregando per loro ",upg100WallIntroEmph:"con il nome del loro popolo",upg100WallIntroB:".",loadingNamed:"Caricamento di {name}…",couldNotLoadNamed:"Impossibile caricare {name}.",engineMissing:"Il motore di mappa {engine} non è stato caricato.",packetFailed:"Libretto non riuscito: {reason}",selectionPacketFailed:"Libretto della selezione non riuscito: {reason}",posterOneTerritory:"Il manifesto stampa un territorio alla volta — {count} selezionati.",selectionPosterFailed:"Manifesto della selezione non riuscito: {reason}",mapUnavailable:"Mappa non disponibile",copied:"Copiato!",copyFailed:"Copia non riuscita — premi Ctrl/Cmd-C",engineNotLoaded:"motore di mappe non caricato",engineNotLoadedDetail:"Il motore di mappe {engine} non si è caricato. L’elenco e la legenda non sono interessati."},"./locales/it/poster.json":{export_poster:"Esporta poster",size:"Dimensione",orientation:"Orientamento",portrait:"Verticale",landscape:"Orizzontale",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster su pagina vettoriale)",title:"Titolo",map_title:"Titolo della mappa",subtitle:"Sottotitolo",slots:"Elementi",scale_bar:"Barra della scala",north_arrow:"Freccia nord",footer_attribution:"Piè di pagina (attribuzione obbligatoria)",cancel:"Annulla",map_preview:"anteprima della mappa",loading_snapshot:"Caricamento dell'istantanea della mappa…",preview_unavailable:"anteprima non disponibile"},"./locales/it/search.json":{placeholder:"Popolo, luogo, lingua, religione",placeholderNoPlaces:"Popolo, lingua, religione (la ricerca di luoghi richiede un token Mapbox)",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"},sections:{within:"In {selection}",allData:"Tutti i dati DOXA"},kinds:{people:"Popolo + paese",peopleGroup:"Popolo",bloc:"Blocco di affinità",cluster:"Cluster di popoli",country:"Paese",region:"Regione",family:"Famiglia linguistica",languageKind:"Lingua",dialect:"Dialetto",religionKind:"Religione"},upg100Placeholder:"Cerca popolo, elenco UPG-100 o regione…"},"./locales/it/tabs.json":{prayer:"Preghiera",adoption:"Adozione",engagement:"Impegno","affinity-blocks":"Popoli",regions:"Regioni",countries:"Paesi","language-families":"Lingue",religion:"Religioni",family:"Famiglia ling.",language:"Lingua",dialect:"Dialetto/Variante",bloc:"Blocco di affinità",cluster:"Cluster",group:"Popolo",pgic:"Popolo nel paese",region:"Regione WAGF",block:"Blocco WAGF",country:"Paese",upg100Region:"Regione",upg100Zone:"Liste UPG-100",upg100Group:"Gruppo etnico",selectView:"Seleziona vista",views:"Viste",prayerResources:"Risorse di preghiera",map:"Mappa",countryPosters:"Poster per paese"},"./locales/pt/grid.json":{search:"Pesquisar povos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Carregar mais",full_profile:"Perfil completo",wagf_region:"Região",wagf_block:"Bloco de afinidade",rop1:"Povo",religion:"Religião",exact_filter:"Exato",clear_all:"Limpar tudo",loading:"A carregar…",no_results:"Nenhum povo corresponde a este filtro.",type_to_search:"Escreva para pesquisar...",load_failed:"Não foi possível carregar os dados dos povos. É um problema de ligação, não do seu filtro.",search_people_or_countries:"Pesquisar povos ou países…"},"./locales/pt/messages.json":{menuComingSoon:"Menu em breve",pinHint:{tapDot:"Toque num ponto colorido — alguém ainda precisa de oração"},upg100WallHeading:"A minha lista UPG 100 — Listas de oração e cartazes",upg100WallTag:"Mobilização de oração",upg100WallIntroA:"Reparta a tarefa da oração em grupos de cinquenta e de cem — como Jesus alimentou os 5.000 (Lucas 9:14). Cada cartaz é uma lista de 100 que pode orar, imprimir e pôr na parede — orando por eles ",upg100WallIntroEmph:"pelo nome do seu povo",upg100WallIntroB:".",loadingNamed:"Carregando {name}…",couldNotLoadNamed:"Não foi possível carregar {name}.",engineMissing:"O motor de mapa {engine} não foi carregado.",packetFailed:"Falha ao gerar o caderno: {reason}",selectionPacketFailed:"Falha ao gerar o caderno da seleção: {reason}",posterOneTerritory:"O cartaz imprime um território de cada vez — {count} selecionados.",selectionPosterFailed:"Falha ao gerar o cartaz da seleção: {reason}",mapUnavailable:"Mapa indisponível",copied:"Copiado!",copyFailed:"Falha ao copiar — pressione Ctrl/Cmd-C",engineNotLoaded:"motor de mapas não carregado",engineNotLoadedDetail:"O motor de mapas {engine} não carregou. A lista e a legenda não são afetadas."},"./locales/pt/poster.json":{export_poster:"Exportar pôster",size:"Tamanho",orientation:"Orientação",portrait:"Retrato",landscape:"Paisagem",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster em página vetorial)",title:"Título",map_title:"Título do mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Seta norte",footer_attribution:"Rodapé (atribuição obrigatória)",cancel:"Cancelar",map_preview:"pré-visualização do mapa",loading_snapshot:"Carregando o instantâneo do mapa…",preview_unavailable:"pré-visualização indisponível"},"./locales/pt/search.json":{placeholder:"Povo, local, língua, religião",placeholderNoPlaces:"Povo, língua, religião (a busca de locais requer um token do Mapbox)",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"},sections:{within:"Dentro de {selection}",allData:"Todos os dados DOXA"},upg100Placeholder:"Procurar povo, lista UPG-100 ou região…"},"./locales/pt/tabs.json":{prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País",upg100Region:"Região",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Selecionar vista",views:"Vistas",prayerResources:"Recursos de oração",map:"Mapa",countryPosters:"Cartazes por país"},"./locales/ro/grid.json":{search:"Caută popoare…",hide_filters:"Ascunde filtrele",show_filters:"Arată filtrele",total:"Total",showing:"Se afișează",load_more:"Încarcă mai mult",full_profile:"Profil complet",wagf_region:"Regiune",wagf_block:"Bloc de afinitate",rop1:"Popor",religion:"Religie",exact_filter:"Exact",clear_all:"Șterge tot",loading:"Se încarcă…",no_results:"Niciun popor nu corespunde acestui filtru.",type_to_search:"Scrie pentru a căuta...",load_failed:"Datele despre popoare nu au putut fi încărcate. Este o problemă de conexiune, nu a filtrului.",search_people_or_countries:"Caută popoare sau țări…"},"./locales/ro/messages.json":{menuComingSoon:"Meniu în curând",pinHint:{tapDot:"Atinge un punct colorat — cineva are încă nevoie de rugăciune"},upg100WallHeading:"Lista mea UPG 100 — Liste de rugăciune și afișe",upg100WallTag:"Mobilizare pentru rugăciune",upg100WallIntroA:"Împarte sarcina rugăciunii în grupuri de câte cincizeci și o sută — așa cum Isus a hrănit cei 5.000 (Luca 9:14). Fiecare afiș este o listă de 100 pe care o poți ruga, tipări și pune pe perete — rugându-te pentru ei ",upg100WallIntroEmph:"pe numele poporului lor",upg100WallIntroB:".",loadingNamed:"Se încarcă {name}…",couldNotLoadNamed:"Nu s-a putut încărca {name}.",engineMissing:"Motorul de hartă {engine} nu s-a încărcat.",packetFailed:"Broșura a eșuat: {reason}",selectionPacketFailed:"Broșura selecției a eșuat: {reason}",posterOneTerritory:"Afișul tipărește un teritoriu pe rând — {count} selectate.",selectionPosterFailed:"Afișul selecției a eșuat: {reason}",mapUnavailable:"Harta indisponibilă",copied:"Copiat!",copyFailed:"Copierea a eșuat — apasă Ctrl/Cmd-C",engineNotLoaded:"motorul de hărți nu s-a încărcat",engineNotLoadedDetail:"Motorul de hărți {engine} nu s-a încărcat. Lista și legenda nu sunt afectate."},"./locales/ro/poster.json":{export_poster:"Exportă posterul",size:"Dimensiune",orientation:"Orientare",portrait:"Portret",landscape:"Peisaj",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster pe pagină vectorială)",title:"Titlu",map_title:"Titlul hărții",subtitle:"Subtitlu",slots:"Elemente",scale_bar:"Bară de scară",north_arrow:"Săgeata nord",footer_attribution:"Subsol (atribuire obligatorie)",cancel:"Anulează",map_preview:"previzualizare hartă",loading_snapshot:"Se încarcă instantaneul hărții…",preview_unavailable:"previzualizare indisponibilă"},"./locales/ro/search.json":{placeholder:"Popor, loc, limbă, religie",placeholderNoPlaces:"Popor, limbă, religie (căutarea locurilor necesită un token Mapbox)",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"},sections:{within:"În {selection}",allData:"Toate datele DOXA"},kinds:{people:"Popor + țară",peopleGroup:"Popor",bloc:"Bloc de afinitate",cluster:"Grup de popoare",country:"Țară",region:"Regiune",family:"Familie de limbi",languageKind:"Limbă",dialect:"Dialect",religionKind:"Religie"},upg100Placeholder:"Caută popor, listă UPG-100 sau regiune…"},"./locales/ro/tabs.json":{prayer:"Rugăciune",adoption:"Adopție",engagement:"Implicare","affinity-blocks":"Popoare",regions:"Regiuni",countries:"Țări","language-families":"Limbi",religion:"Religii",family:"Familie de limbi",language:"Limbă",dialect:"Dialect/Variantă",bloc:"Bloc de afinitate",cluster:"Grup",group:"Popor",pgic:"Popor în țară",region:"Regiune WAGF",block:"Bloc WAGF",country:"Țară",upg100Region:"Regiune",upg100Zone:"Liste UPG-100",upg100Group:"Grup etnic",selectView:"Alege vizualizarea",views:"Vizualizări",prayerResources:"Resurse de rugăciune",map:"Hartă",countryPosters:"Afișe pe țări"},"./locales/ru/grid.json":{search:"Поиск народов…",hide_filters:"Скрыть фильтры",show_filters:"Показать фильтры",total:"Всего",showing:"Показано",load_more:"Показать ещё",full_profile:"Полный профиль",wagf_region:"Регион",wagf_block:"Блок родства",rop1:"Народ",religion:"Религия",exact_filter:"Точное совпадение",clear_all:"Очистить всё",loading:"Загрузка…",no_results:"Нет народов, соответствующих этому фильтру.",type_to_search:"Введите для поиска...",load_failed:"Не удалось загрузить данные о народах. Это проблема соединения, а не фильтра.",search_people_or_countries:"Поиск народов или стран…"},"./locales/ru/messages.json":{menuComingSoon:"Меню скоро появится",pinHint:{tapDot:"Нажмите на цветную точку — кому-то всё ещё нужна молитва"},upg100WallHeading:"Мой список UPG 100 — молитвенные списки и плакаты",upg100WallTag:"Молитвенная мобилизация",upg100WallIntroA:"Разделите молитвенный труд на группы по пятьдесят и по сто — так Иисус накормил 5000 (Луки 9:14). Каждый плакат — это список из 100, о котором можно молиться, распечатать и повесить на стену, молясь о них ",upg100WallIntroEmph:"по имени их народа",upg100WallIntroB:".",loadingNamed:"Загрузка {name}…",couldNotLoadNamed:"Не удалось загрузить {name}.",engineMissing:"Картографический движок {engine} не загрузился.",packetFailed:"Не удалось создать буклет: {reason}",selectionPacketFailed:"Не удалось создать буклет выбора: {reason}",posterOneTerritory:"Плакат печатает по одной территории — выбрано {count}.",selectionPosterFailed:"Не удалось создать плакат выбора: {reason}",mapUnavailable:"Карта недоступна",copied:"Скопировано!",copyFailed:"Не удалось скопировать — нажмите Ctrl/Cmd-C",engineNotLoaded:"движок карты не загружен",engineNotLoadedDetail:"Движок карты {engine} не загрузился. Список и легенда не затронуты."},"./locales/ru/poster.json":{export_poster:"Экспорт плаката",size:"Размер",orientation:"Ориентация",portrait:"Портретная",landscape:"Альбомная",dpi:"DPI",format:"Формат",png_raster:"PNG (растр)",pdf_raster:"PDF (растр на векторной странице)",title:"Заголовок",map_title:"Заголовок карты",subtitle:"Подзаголовок",slots:"Элементы",scale_bar:"Масштабная линейка",north_arrow:"Указатель севера",footer_attribution:"Нижний колонтитул (указание источника обязательно)",cancel:"Отмена",map_preview:"предпросмотр карты",loading_snapshot:"Загрузка снимка карты…",preview_unavailable:"предпросмотр недоступен"},"./locales/ru/search.json":{placeholder:"Народ, место, язык, религия",placeholderNoPlaces:"Народ, язык, религия (для поиска мест нужен токен Mapbox)",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"},sections:{within:"В пределах {selection}",allData:"Все данные DOXA"},upg100Placeholder:"Поиск народа, списка UPG-100 или региона…"},"./locales/ru/tabs.json":{prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна",upg100Region:"Регион",upg100Zone:"Списки UPG-100",upg100Group:"Народ",selectView:"Выбрать вид",views:"Виды",prayerResources:"Молитвенные ресурсы",map:"Карта",countryPosters:"Плакаты по странам"},"./locales/zh/grid.json":{search:"搜索民族…",hide_filters:"隐藏筛选",show_filters:"显示筛选",total:"总计",showing:"显示",load_more:"加载更多",full_profile:"完整档案",wagf_region:"区域",wagf_block:"亲缘板块",rop1:"民族",religion:"宗教",exact_filter:"精确",clear_all:"全部清除",loading:"加载中…",no_results:"没有符合此筛选条件的民族。",type_to_search:"输入以搜索...",load_failed:"无法加载民族数据。这是连接问题,而不是筛选问题。",search_people_or_countries:"搜索民族或国家…"},"./locales/zh/messages.json":{menuComingSoon:"菜单即将推出",pinHint:{tapDot:"点按一个彩色圆点——仍有人需要祷告"},upg100WallHeading:"我的 UPG 100 名單 — 禱告名單與海報",upg100WallTag:"禱告動員",upg100WallIntroA:"將禱告的工作分成五十人、一百人一組 — 就像耶穌餵飽五千人那樣(路加福音 9:14)。每一張海報都是一份 100 人名單,你可以為他們禱告、列印出來、貼在牆上 — ",upg100WallIntroEmph:"按著他們族群的名字",upg100WallIntroB:"為他們禱告。",loadingNamed:"正在加载{name}…",couldNotLoadNamed:"无法加载{name}。",engineMissing:"{engine} 地图引擎未能加载。",packetFailed:"祷告册生成失败:{reason}",selectionPacketFailed:"所选内容的祷告册生成失败:{reason}",posterOneTerritory:"海报一次只能打印一个区域——已选 {count} 个。",selectionPosterFailed:"所选内容的海报生成失败:{reason}",mapUnavailable:"地图不可用",copied:"已复制!",copyFailed:"复制失败——请按 Ctrl/Cmd-C",engineNotLoaded:"地图引擎未加载",engineNotLoadedDetail:"{engine} 地图引擎未能加载。列表和图例不受影响。"},"./locales/zh/poster.json":{export_poster:"导出海报",size:"尺寸",orientation:"方向",portrait:"纵向",landscape:"横向",dpi:"DPI",format:"格式",png_raster:"PNG(位图)",pdf_raster:"PDF(矢量页面上的位图)",title:"标题",map_title:"地图标题",subtitle:"副标题",slots:"元素",scale_bar:"比例尺",north_arrow:"指北针",footer_attribution:"页脚(必须署名)",cancel:"取消",map_preview:"地图预览",loading_snapshot:"正在加载地图快照…",preview_unavailable:"预览不可用"},"./locales/zh/search.json":{placeholder:"民族、地点、语言、宗教",placeholderNoPlaces:"民族、语言、宗教(地点搜索需要 Mapbox 令牌)",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"},sections:{within:"在 {selection} 之內",allData:"所有 DOXA 資料"},kinds:{people:"民族 + 国家",peopleGroup:"民族",bloc:"亲缘板块",cluster:"民族群",country:"国家",region:"区域",family:"语系",languageKind:"语言",dialect:"方言",religionKind:"宗教"},upg100Placeholder:"搜索民族、UPG-100 名单或区域…"},"./locales/zh/tabs.json":{prayer:"祷告",adoption:"认领",engagement:"参与","affinity-blocks":"民族",regions:"区域",countries:"国家","language-families":"语言",religion:"宗教",family:"语系",language:"语言",dialect:"方言/变体",bloc:"亲缘板块",cluster:"民族群",group:"民族",pgic:"国内民族",region:"WAGF 区域",block:"WAGF 板块",country:"国家",upg100Region:"区域",upg100Zone:"UPG-100 名单",upg100Group:"族群",selectView:"選擇檢視",views:"檢視",prayerResources:"禱告資源",map:"地圖",countryPosters:"国家海报"}}),Mt={};for(const[e,t]of Object.entries(rl)){const o=e.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const[,s,n]=o;Mt[s]??(Mt[s]={}),Mt[s][n]=t}const vi=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"];function ll(){try{const e=new URLSearchParams(window.location.search);return(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase()}catch{return""}}function cl(){var s;const e=ll();if(vi.includes(e))return e;const o=(((s=document==null?void 0:document.documentElement)==null?void 0:s.lang)||"").split("-")[0].toLowerCase();return vi.includes(o)?o:"en"}const pl="__DOXA_PAGE_LOCALE";function dl(){try{return typeof window<"u"&&window[pl]||""}catch{return""}}function ul(e,t){const o=n=>{let i=Mt[n];for(const a of String(e).split(".")){if(!i||typeof i!="object")return;i=i[a]}return typeof i=="string"?i:void 0},s=dl()||cl();return o(s)??o("en")}function fl(e,t){const o=Qn(),s=t;yn(()=>{var l;if(!o)return;const n=(l=o.proxy)==null?void 0:l.$el;if(!n)return;const i=n.getRootNode();if(!(i instanceof ShadowRoot))return;if(!i.querySelector('style[data-shadow-styles="reduced-motion"]')){const u=document.createElement("style");u.setAttribute("data-shadow-styles","reduced-motion"),u.textContent=gl,i.appendChild(u)}const a=i.querySelector(`style[data-shadow-styles="${s}"]`);if(a){a.textContent!==e&&(a.textContent=e);return}const r=document.createElement("style");r.setAttribute("data-shadow-styles",s),r.textContent=e,i.appendChild(r)})}const gl=`@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}`,yi={menu:'<line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/>',map:'<polygon points="3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21"/><line x1="9" y1="3" x2="9" y2="18"/><line x1="15" y1="6" x2="15" y2="21"/>',globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18"/><path d="M12 3a15 15 0 0 1 0 18a15 15 0 0 1 0-18"/>',heart:'<path d="M19 14c1.5-1.5 3-3.5 3-5.5A4.5 4.5 0 0 0 12 6a4.5 4.5 0 0 0-10 2.5C2 10.5 3.5 12.5 5 14l7 7Z"/>',prayer:'<path d="M12 4.2c-.9 1.4-1.9 2.6-2.9 3.8-1 1.2-1.6 2.6-1.6 4.2v3.3c0 1.3.7 2.4 1.8 3 .5.3 1.1-.1 1.1-.7"/><path d="M12 4.2c.9 1.4 1.9 2.6 2.9 3.8 1 1.2 1.6 2.6 1.6 4.2v3.3c0 1.3-.7 2.4-1.8 3-.5.3-1.1-.1-1.1-.7"/><path d="M12 4.2V17"/>',list:'<line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><circle cx="4" cy="6" r="1"/><circle cx="4" cy="12" r="1"/><circle cx="4" cy="18" r="1"/>',users:'<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.9"/><path d="M16 3.1a4 4 0 0 1 0 7.8"/>',flag:'<path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V4s-1 1-4 1-5-2-8-2-4 1-4 1z"/><line x1="4" y1="22" x2="4" y2="15"/>',target:'<circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="5"/><circle cx="12" cy="12" r="1"/>',pin:'<path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0z"/><circle cx="12" cy="10" r="3"/>',monitor:'<rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/>',chart:'<line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/>',folder:'<path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>',layers:'<polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/>',flask:'<path d="M9 3h6v5l5 11a2 2 0 0 1-2 3H6a2 2 0 0 1-2-3l5-11z"/><line x1="9" y1="3" x2="15" y2="3"/><line x1="6" y1="15" x2="18" y2="15"/>',share:'<circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><line x1="8.6" y1="13.5" x2="15.4" y2="17.5"/><line x1="15.4" y1="6.5" x2="8.6" y2="10.5"/>',beaker:'<path d="M6 3h12"/><path d="M8 3v7l-3 8a2 2 0 0 0 2 3h10a2 2 0 0 0 2-3l-3-8V3"/>',chevron:'<polyline points="9 18 15 12 9 6"/>',grid:'<rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/>',tree:'<rect x="9" y="3" width="6" height="5" rx="1"/><rect x="2" y="16" width="6" height="5" rx="1"/><rect x="16" y="16" width="6" height="5" rx="1"/><path d="M12 8v4M5 16v-2h14v2"/>',dots:'<circle cx="12" cy="5" r="1.5"/><circle cx="12" cy="12" r="1.5"/><circle cx="12" cy="19" r="1.5"/>',embed:'<polyline points="9 7 4 12 9 17"/><polyline points="15 7 20 12 15 17"/>',send:'<path d="M21 3 L3 10.5 L9.5 13.5 L12.5 20 Z"/><line x1="21" y1="3" x2="9.5" y2="13.5"/>',poster:'<rect x="4" y="3" width="16" height="18" rx="2"/><circle cx="12" cy="10" r="2.5"/><path d="M8 17h8"/>',search:'<circle cx="10.5" cy="10.5" r="7.5"/><line x1="15.8" y1="15.8" x2="20.5" y2="20.5"/>',book:'<path d="M12 6.5C12 6.5 9.5 4.5 4 4.5v13C9.5 17.5 12 19.5 12 19.5"/><path d="M12 6.5C12 6.5 14.5 4.5 20 4.5v13C14.5 17.5 12 19.5 12 19.5"/>',wifi:'<path d="M3.5 9a13 13 0 0 1 17 0"/><path d="M6.8 12.4a8.5 8.5 0 0 1 10.4 0"/><path d="M10 15.7a4 4 0 0 1 4 0"/><circle cx="12" cy="19" r="1"/>'};function hl(e,t=""){const o=yi[e]||yi.map;return`<svg class="ic ${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${o}</svg>`}const bl=".vtl{position:absolute;top:0;right:0;bottom:0;left:0;display:grid!important;grid-template-rows:auto 1fr;height:100%;width:100%;min-height:420px;background:#f3f3f1;color:#3b463d;font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;--vtl-accent:#92b195;--vtl-border:#d1d4cd;--vtl-elevated:#ffffff;--vtl-accented:#d1d4cd;--vtl-muted:#6d766e;--vtl-rail:256px}.vtl.no-header{grid-template-rows:1fr}.vtl-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;box-sizing:border-box;min-height:64px;padding:8px 16px;border-bottom:1px solid var(--vtl-border);background:#fff}.vtl-menu{display:none;font:16px/1 system-ui;color:#3b463d;background:#d1d4cd;border:1px solid #d1d4cd;border-radius:8px;padding:5px 10px;cursor:pointer}.vtl-fab{position:absolute;z-index:15;left:calc(12px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));width:44px;height:44px;display:flex;align-items:center;justify-content:center;font:18px/1 system-ui;color:#3b463d;background:#fff;border:1px solid var(--vtl-border);border-radius:50%;box-shadow:0 2px 10px #0000002e;cursor:pointer}.vtl-fab:hover{background:#d1d4cd}.vtl-fab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:2px}.vtl-menu:hover{background:#d1d4cd}.vtl-brand{display:inline-flex;align-items:center}.vtl-brand:empty{display:none}.vtl-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:#3b463d}.vtl-meta{color:var(--vtl-muted);font-size:12px;margin-left:auto;display:inline-flex;align-items:center;gap:8px}.vtl-body{min-height:0;position:relative;display:flex}.vtl-nav{position:absolute;top:0;bottom:0;left:0;z-index:5;width:256px;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--vtl-border);padding:12px 12px 20px;background:#fff;scrollbar-width:thin;scrollbar-color:#c4c8c0 transparent;contain:layout paint;transform:translate(0);transition:transform .2s cubic-bezier(.4,0,.2,1);will-change:transform}.vtl-nav::-webkit-scrollbar{width:8px;height:8px}.vtl-nav::-webkit-scrollbar-track{background:transparent}.vtl-nav::-webkit-scrollbar-thumb{background:#c4c8c0;border-radius:8px}.vtl-nav::-webkit-scrollbar-thumb:hover{background:#9aa197}.vtl-collapse{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;margin:0 0 8px;padding:7px 10px;border:1px solid var(--vtl-border);border-radius:8px;background:#d1d4cd;color:var(--vtl-muted);font:inherit;font-size:12px;cursor:pointer}.vtl-collapse:hover{background:var(--vtl-accented);color:#3b463d}.vtl-collapse:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-collapse-ic{flex:0 0 auto;display:inline-flex;transition:transform .16s ease;transform:rotate(180deg)}.vtl-collapse-ic svg{width:16px;height:16px}.vtl-collapse-tx{white-space:nowrap}.vtl-grp{margin-bottom:2px}.vtl-grp+.vtl-grp{margin-top:8px;padding-top:8px;border-top:1px solid var(--vtl-border)}.vtl-tier{width:100%;padding:8px 8px 6px;display:flex;align-items:center;gap:8px;box-sizing:border-box}.vtl-tier-btn{border:0;background:none;color:inherit;font:inherit;cursor:pointer;text-align:left;border-radius:8px}.vtl-tier-btn:hover{background:var(--vtl-accented)}.vtl-tier-btn:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tier-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tier-ic svg{width:15px;height:15px}.vtl-cap{font:700 10px/1 system-ui;letter-spacing:.4px;color:#052e16;background:var(--vtl-accent);border-radius:999px;padding:3px 7px}.vtl-tl{font-weight:600;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--vtl-muted)}.vtl-td{color:#6b6b6b;font-size:11px;margin-left:auto}.vtl-chev{margin-left:auto;display:inline-flex;color:var(--vtl-muted);transition:transform .16s ease}.vtl-chev svg{width:15px;height:15px}.vtl-chev.open{transform:rotate(90deg)}.vtl-rows{display:flex;flex-direction:column;gap:1px}.vtl-tab{display:flex;align-items:center;gap:11px;width:100%;min-height:48px;text-align:left;border:0;background:none;color:var(--vtl-muted);padding:8px 12px;cursor:pointer;border-radius:var(--vtl-radius,8px);font:inherit;margin:0;transition:background .13s ease,color .13s ease}.vtl-tab:hover{background:var(--vtl-accented);color:#3b463d}.vtl-tab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tab.active{background:var(--vtl-accented);color:#3b463d;font-weight:500}.vtl-tab.active .vtl-tab-ic{color:var(--vtl-accent)}.vtl-tab-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tab-ic svg{width:20px;height:20px}.vtl-tab-emoji{font-size:17px;line-height:1;flex:0 0 auto}.vtl-tab-fallback{display:none;flex:0 0 auto;width:20px;height:20px;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--vtl-muted);background:var(--vtl-accented);border-radius:6px}.vtl-tab.active .vtl-tab-fallback{color:var(--vtl-accent)}.vtl-tab-text{display:flex;flex-direction:column;min-width:0}.vtl-tab-label{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}.vtl-tab-badge{font:600 9px/1 system-ui;letter-spacing:.3px;text-transform:uppercase;color:var(--vtl-accent);border:1px solid var(--vtl-accent);border-radius:var(--vtl-radius,8px);padding:2px 5px}.vtl-tab-sub{font-size:11px;color:#6b6b6b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vtl-tab-sub code{font-family:ui-monospace,Menlo,monospace}.vtl-tab.active .vtl-tab-sub{color:var(--vtl-muted)}.vtl-main{position:absolute;top:0;bottom:0;right:0;left:256px;min-width:0;display:flex;flex-direction:column}.vtl-content{flex:1 1 auto;position:relative;min-height:0}.vtl-host{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h:0}.vtl-host-slot{position:relative;min-height:100%}.vtl-host-slot>*{min-height:0;max-height:none}.vtl-host-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:var(--dx-muted, #6d766e);font-size:13px;padding:20px}.vtl-host-hint.err{color:#f87171}.vtl-host-hint small{color:var(--dx-muted, #6d766e)}.vtl.rail-collapsed .vtl-nav{transform:translate(-184px)}.vtl.rail-collapsed .vtl-main{left:72px}.vtl.rail-collapsed .vtl-collapse{padding-left:184px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(0)}.vtl.rail-collapsed .vtl-collapse-tx{display:none}.vtl.rail-collapsed .vtl-tab{padding-left:188px;gap:0}.vtl.rail-collapsed .vtl-tab-text{display:none}.vtl.rail-collapsed .vtl-tab-emoji{font-size:19px}.vtl.rail-collapsed .vtl-tab-fallback{display:inline-flex}.vtl.rail-collapsed .vtl-tier{padding-left:196px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:none}.vtl.rail-collapsed .vtl-grp+.vtl-grp{margin-top:6px;padding-top:6px}@media (max-width: 760px){.vtl-top{min-height:56px}.vtl-menu{display:inline-block}.vtl-meta{display:none}.vtl-nav{z-index:20;width:256px;box-shadow:0 0 28px #0000008c;transform:translate(-100%)}.vtl.nav-open .vtl-nav{transform:translate(0);z-index:1000}.vtl-main{left:0}.vtl.rail-collapsed .vtl-nav{transform:translate(-100%)}.vtl.rail-collapsed.nav-open .vtl-nav{transform:translate(0)}.vtl.rail-collapsed .vtl-main{left:0}.vtl.rail-collapsed .vtl-collapse{padding-left:10px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(180deg)}.vtl.rail-collapsed .vtl-collapse-tx{display:inline}.vtl.rail-collapsed .vtl-tab{padding-left:10px;gap:11px}.vtl.rail-collapsed .vtl-tab-text{display:flex}.vtl.rail-collapsed .vtl-tab-fallback{display:none}.vtl.rail-collapsed .vtl-tier{padding-left:8px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:inline}}.vtl:dir(rtl) .vtl-nav{left:auto;right:0;border-right:0;border-left:1px solid var(--vtl-border)}.vtl:dir(rtl) .vtl-main{left:0;right:256px}.vtl:dir(rtl) .vtl-tab,.vtl:dir(rtl) .vtl-tier-btn{text-align:right}.vtl:dir(rtl) .vtl-meta,.vtl:dir(rtl) .vtl-td,.vtl:dir(rtl) .vtl-chev{margin-left:0;margin-right:auto}.vtl:dir(rtl) .vtl-chev:not(.open){transform:scaleX(-1)}.vtl:dir(rtl) .vtl-collapse-ic svg{transform:scaleX(-1)}.vtl:dir(rtl) .vtl-fab{left:auto;right:calc(12px + env(safe-area-inset-right))}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(184px)}.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:72px}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:184px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:188px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:196px}@media (max-width: 760px){.vtl:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl:dir(rtl) .vtl-main,.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:0}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.rail-collapsed.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:8px}}",xi=(e,t)=>{const o=e.__vccOpts||e;for(const[s,n]of t)o[s]=n;return o},ml=(e,t)=>ul(e)||t,Dt={};function _l(e){return e?(Dt[e]||(Dt[e]=new Promise((t,o)=>{const s=document.createElement("script");s.src=e,s.onload=()=>t(),s.onerror=()=>{delete Dt[e],o(new Error("failed to load "+e))},document.head.appendChild(s)})),Dt[e]):Promise.resolve()}function $l(e,t=5e3){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():customElements.whenDefined?Promise.race([customElements.whenDefined(e),new Promise((o,s)=>setTimeout(()=>s(new Error("timeout waiting for <"+e+">")),t))]):Promise.resolve()}const vl=`
/* STRUCTURAL DISPLAY — the !important is deliberate, not a hack. This layout's display mode is
load-bearing: it CANNOT function as a block. As a library/ (high-bar) component it ships across
all 5 deployment methods, and a host (app-shell direct-mount, WordPress, mobile webview) may force
its own inline display onto the element. Declaring it non-overridable is the correct contract.
grid-template-rows: auto 1fr = header takes its natural height, .vtl-body gets a DEFINITE
remaining track — no dependence on in-flow children (nav/main are absolute for the rail slide). */
.vtl { position:absolute; inset:0; display:grid !important; grid-template-rows:auto 1fr; height:100%; width:100%; min-height:420px; background:#f3f3f1; color:#3b463d; font-family:'Public Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif; -webkit-font-smoothing:antialiased; --vtl-accent:#92b195; --vtl-border:#d1d4cd; --vtl-elevated:#ffffff; --vtl-accented:#d1d4cd; --vtl-muted:#6d766e; --vtl-rail:256px; }
/* HEADER-OFF (header=false, e.g. the cap-5 doxa-maps-spa): the .vtl-top element is NOT rendered, so
.vtl-body becomes the ONLY grid child and auto-places into row 1 — the auto row — which has no
content to size it and collapses to 0 (the 1fr row sits empty) → the same 0-height black screen.
With no header there is only one region, so declare a single 1fr row and the body fills. */
.vtl.no-header { grid-template-rows:1fr; }
/* MATERIAL APP BAR = 64px desktop / 56px mobile (2026-09-21), was 51px from 11px padding.
Stated as an explicit min-height rather than left to padding arithmetic, so the number a
reader sees is the number that renders. min-height keeps a wrapping title from clipping.
★ box-sizing:border-box IS LOAD-BEARING HERE. Without it this element is content-box, so
min-height:64px MEASURED 81px live: 64 + 16px vertical padding + 1px border. A height stated
in a comment is worth nothing if the box model adds to it — measure the rendered value, do not
trust the declaration. (Found exactly that way: the probe read 81 against a 64 target.)
THIS RULE EXISTS TWICE (VTL_SHADOW_CSS and the scoped style block); keep them identical. */
.vtl-top { flex:0 0 auto; display:flex; align-items:center; gap:10px; box-sizing:border-box; min-height:64px; padding:8px 16px; border-bottom:1px solid var(--vtl-border); background:#ffffff; }
.vtl-menu { display:none; font:16px/1 system-ui; color:#3b463d; background:#d1d4cd; border:1px solid #d1d4cd; border-radius:8px; padding:5px 10px; cursor:pointer; }
/* Headerless-mobile drawer opener. Only ever rendered when narrow AND header-off AND the drawer is
shut, so it cannot appear in any layout that already has a working toggle. z-index sits ABOVE the
content but BELOW the drawer (.vtl-nav is z-index:20) so the drawer covers it when it slides in.
44px is the minimum comfortable touch target; the safe-area insets keep it clear of an iOS home
indicator and a notch in landscape. */
.vtl-fab { position:absolute; z-index:15; left:calc(12px + env(safe-area-inset-left)); bottom:calc(12px + env(safe-area-inset-bottom)); width:44px; height:44px; display:flex; align-items:center; justify-content:center; font:18px/1 system-ui; color:#3b463d; background:#ffffff; border:1px solid var(--vtl-border); border-radius:50%; box-shadow:0 2px 10px rgba(0,0,0,.18); cursor:pointer; }
.vtl-fab:hover { background:#d1d4cd; }
.vtl-fab:focus-visible { outline:2px solid var(--vtl-accent); outline-offset:2px; }
.vtl-menu:hover { background:#d1d4cd; }
.vtl-brand { display:inline-flex; align-items:center; }
.vtl-brand:empty { display:none; }
.vtl-title { font-size:15px; font-weight:600; letter-spacing:-0.01em; color:#3b463d; }
.vtl-meta { color:var(--vtl-muted); font-size:12px; margin-left:auto; display:inline-flex; align-items:center; gap:8px; }
/* GRID ROWS, not flex (BUG-EMBEDDED-PLUGIN-STUDIO-BLACK-SCREEN). The collapsible-rail design makes
.vtl-nav and .vtl-main position:absolute (so the rail slides by transform without reflowing the
heavy map sibling). That leaves .vtl-body with NO in-flow children → ZERO intrinsic height, so it
could only fill via flex:1 from a flex parent. A host that forces display:block on .vtl (the
app-shell direct-mounts cap-5 elements that way) made that flex inert → .vtl-body collapsed to 0
→ black screen. The auto/1fr grid on .vtl gives this row a DEFINITE height by construction, so
it no longer depends on the parent's display mode NOR on in-flow children. Header-off
(header=false) still works: the auto row collapses to 0 and 1fr takes the full height. */
.vtl-body { min-height:0; position:relative; display:flex; }
.vtl-nav { position:absolute; top:0; bottom:0; left:0; z-index:5; width:256px; box-sizing:border-box; overflow-y:auto; overflow-x:hidden; border-right:1px solid var(--vtl-border); padding:12px 12px 20px; background:#ffffff; scrollbar-width:thin; scrollbar-color:#c4c8c0 transparent; contain:layout paint; transform:translateX(0); transition:transform .2s cubic-bezier(.4,0,.2,1); will-change:transform; }
/* Thin OVERLAY scrollbar: transparent track so the bar costs no visual space and sits flush to
the nav edge; low-contrast thumb that darkens on hover. Matches the research-dashboard rails. */
.vtl-nav::-webkit-scrollbar { width:8px; height:8px; }
.vtl-nav::-webkit-scrollbar-track { background:transparent; }
.vtl-nav::-webkit-scrollbar-thumb { background:#c4c8c0; border-radius:8px; }
.vtl-nav::-webkit-scrollbar-thumb:hover { background:#9aa197; }
.vtl-collapse { display:flex; align-items:center; gap:8px; width:100%; box-sizing:border-box; margin:0 0 8px; padding:7px 10px; border:1px solid var(--vtl-border); border-radius:8px; background:#d1d4cd; color:var(--vtl-muted); font:inherit; font-size:12px; cursor:pointer; }
.vtl-collapse:hover { background:var(--vtl-accented); color:#3b463d; }
.vtl-collapse:focus-visible { outline:2px solid var(--vtl-accent); outline-offset:-2px; }
.vtl-collapse-ic { flex:0 0 auto; display:inline-flex; transition:transform .16s ease; transform:rotate(180deg); }
.vtl-collapse-ic svg { width:16px; height:16px; }
.vtl-collapse-tx { white-space:nowrap; }
.vtl-grp { margin-bottom:2px; }
.vtl-grp + .vtl-grp { margin-top:8px; padding-top:8px; border-top:1px solid var(--vtl-border); }
.vtl-tier { width:100%; padding:8px 8px 6px; display:flex; align-items:center; gap:8px; box-sizing:border-box; }
.vtl-tier-btn { border:0; background:none; color:inherit; font:inherit; cursor:pointer; text-align:left; border-radius:8px; }
.vtl-tier-btn:hover { background:var(--vtl-accented); }
.vtl-tier-btn:focus-visible { outline:2px solid var(--vtl-accent); outline-offset:-2px; }
.vtl-tier-ic { flex:0 0 auto; display:inline-flex; color:var(--vtl-muted); }
.vtl-tier-ic svg { width:15px; height:15px; }
.vtl-cap { font:700 10px/1 system-ui; letter-spacing:.4px; color:#052e16; background:var(--vtl-accent); border-radius:999px; padding:3px 7px; }
.vtl-tl { font-weight:600; font-size:11px; letter-spacing:.03em; text-transform:uppercase; color:var(--vtl-muted); }
.vtl-td { color:#6b6b6b; font-size:11px; margin-left:auto; }
.vtl-chev { margin-left:auto; display:inline-flex; color:var(--vtl-muted); transition:transform .16s ease; }
.vtl-chev svg { width:15px; height:15px; }
.vtl-chev.open { transform:rotate(90deg); }
.vtl-rows { display:flex; flex-direction:column; gap:1px; }
/* MATERIAL NAV-ROW METRICS (2026-09-21). Product decision: follow the familiar
Material/YouTube list layout rather than custom styling readers are not used to.
Measured before this change: 44px rows with an 8px radius.
min-height:48px the Material list-item height. min-height, not height, so a wrapping
label still grows instead of clipping.
border-radius var(--vtl-radius,8px) — SUPERSEDED THE FULL PILL (2026-09-23).
The 999px stadium above was a real instruction ("imitate the YouTube
active row") and it shipped. It was then measured against the
rest of the product and reversed it: "the roundedness of the tabs is a
little bit too round because there is nowhere else in the app that has
that same roundedness. Even the collapse button is not that round...
it looks more material UI to have a more rounded tab than a less
circular tab." He is right on the facts — .vtl-collapse is 8px, the
filter toggles in @map/components/search are 8px, and 8px is already
the most common radius in this file. A 999px radius on a 48px row is a
stadium, which is why it reads as foreign beside everything else.
★ DO NOT "RESTORE" THE PILL on the strength of the YouTube rationale
above — that rationale is kept because it is true history, not because
it is current. The 48px Material row height is unaffected and stays.
NOT VENDORED: the card's law is to imitate the metrics in our own CSS, never to add Quasar or
MUI. Same clone-dont-edit rule the library follows everywhere else.
THIS RULE EXISTS TWICE (VTL_SHADOW_CSS and the scoped style block) and the two copies must stay
byte-identical — edit both or neither. */
.vtl-tab { display:flex; align-items:center; gap:11px; width:100%; min-height:48px; text-align:left; border:0; background:none; color:var(--vtl-muted); padding:8px 12px; cursor:pointer; border-radius:var(--vtl-radius,8px); font:inherit; margin:0; transition:background .13s ease,color .13s ease; }
.vtl-tab:hover { background:var(--vtl-accented); color:#3b463d; }
.vtl-tab:focus-visible { outline:2px solid var(--vtl-accent); outline-offset:-2px; }
.vtl-tab.active { background:var(--vtl-accented); color:#3b463d; font-weight:500; }
.vtl-tab.active .vtl-tab-ic { color:var(--vtl-accent); }
.vtl-tab-ic { flex:0 0 auto; display:inline-flex; color:var(--vtl-muted); }
.vtl-tab-ic svg { width:20px; height:20px; }
.vtl-tab-emoji { font-size:17px; line-height:1; flex:0 0 auto; }
.vtl-tab-fallback { display:none; flex:0 0 auto; width:20px; height:20px; align-items:center; justify-content:center; font-size:12px; font-weight:600; color:var(--vtl-muted); background:var(--vtl-accented); border-radius:6px; }
.vtl-tab.active .vtl-tab-fallback { color:var(--vtl-accent); }
.vtl-tab-text { display:flex; flex-direction:column; min-width:0; }
.vtl-tab-label { font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:flex; align-items:center; gap:6px; }
.vtl-tab-badge { font:600 9px/1 system-ui; letter-spacing:.3px; text-transform:uppercase; color:var(--vtl-accent); border:1px solid var(--vtl-accent); border-radius:var(--vtl-radius,8px); padding:2px 5px; }
.vtl-tab-sub { font-size:11px; color:#6b6b6b; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.vtl-tab-sub code { font-family:ui-monospace,Menlo,monospace; }
.vtl-tab.active .vtl-tab-sub { color:var(--vtl-muted); }
.vtl-main { position:absolute; top:0; bottom:0; right:0; left:256px; min-width:0; display:flex; flex-direction:column; }
/* ★ contain:layout, NOT layout paint (BUG-STILL-CANNOT-SCROLL-DOWN-TO-THE-GRID, measured
2026-09-22). layout is the half that does the work the rail collapse needs — it isolates this
subtree so sliding the rail never reflows a heavy mounted map. paint additionally CLIPS the
subtree to this box, which silently swallowed every pixel a scroll-stack composite rendered below
one viewport. The clipping now belongs to .vtl-host, which owns a real scrollbar, so the content
is both contained AND reachable. Dropping paint costs the collapse nothing: paint never
contributed reflow isolation, only clipping. */
.vtl-content { flex:1 1 auto; position:relative; min-height:0; }
/* ★ NO containment AT ALL on .vtl-content (BUG-FULLSCREEN-MODALS-UNDERSIZED-INSIDE-THE-CAP5-SHELL,
measured 2026-09-23). contain:paint was dropped earlier for the scroll bug; contain:layout
stayed -- but LAYOUT containment ALSO makes this element the containing block for every
position:fixed descendant (CSS Containment spec), so all six modal scrims hosted in the shell
(PosterDialog, DataTable .dt-scrim, LegendTools .lt-overlay, SemanticTreeLegend export
backdrop, both poster-wall .modal-scrim) resolved inset:0 to the CONTENT PANE: measured, a
fixed inset:0 probe here read x=256 w=1184 on a 1440 viewport, leaving the 256px nav rail
uncovered and CLICKABLE behind an open modal. Visibly almost right, interactively wrong.
The perf rationale it was kept for does not hold: when the nav collapses, this element's own
width changes, and a width change re-lays-out the subtree with or without containment. */
/* ★ THE PANE OWNS THE SCROLL (BUG-STILL-CANNOT-SCROLL-DOWN-TO-THE-GRID). Measured in the cap-5
shell: the dashboard-plus-grid composite mounted here reported scrollHeight 3380 / clientHeight
769 — 2611px of real, mounted, populated content (the people-groups grid, h=2586) that NO element
could scroll to, because this box was position:absolute; inset:0 with the default
overflow:visible. The document itself measured scrollHeight 900 === clientHeight 900, so a
wheel gesture anywhere had nothing to move and the page simply sat still.
THIS IS A HOST GAP, NOT A PLUGIN BUG. The same composite is PERFECT standalone (document
2960/900, wheel scrolls to 2060, grid reachable) because its generated leaf sets
body{overflow-y:auto} — the document owns the scroll there. In this shell the pane is pinned to
viewport height and no ancestor scrolls, so the layout must own it. generate-tree.mjs keeps cap-5
leaves fixed-viewport on the reasoning that "any scroll-stack it hosts is its OWN iframe leaf" —
but the studio documents "there is NO iframe mode": every tab mounts its REAL custom element
directly into this pane. So the scroll has to land here.
WHY THIS IS SAFE FOR THE FIXED-VIEWPORT MAP TABS, which are the majority. A map element ships
position:absolute; inset:0 (or height:100%) and therefore fills this box exactly:
scrollHeight === clientHeight, so auto yields NO scrollbar and NOTHING changes for them. Only a
pane whose content genuinely exceeds one viewport — i.e. a StackLayout scroll-stack, which is the
composite that is meant to scroll — gets one. auto is load-bearing; scroll would paint a dead
scrollbar on all 19 map tabs.
overscroll-behavior:contain stops a wheel that bottoms out here from chaining to the document. */
.vtl-host { position:absolute; inset:0; overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; --profile-min-h:0; }
/* The slot is the element's mount point. It must NOT be position:absolute; inset:0 any more: that
pinned it to the pane's height and re-created the exact trap one level down — an absolutely
positioned child cannot grow a scroll container. min-height:100% keeps a fixed-viewport map
filling the pane (the behaviour absolute-inset gave it) while letting a taller scroll-stack
composite push the pane's scrollHeight past its clientHeight, which is what produces the
scrollbar. */
.vtl-host-slot { position:relative; min-height:100%; }
/* ★ THE dvh FLOOR, NEUTRALISED FOR HOSTED ELEMENTS (measured 2026-09-22 in the studio, same layout
shape). A hosted map ships .profile-loader { height:100%; min-height:100dvh }, and the two resolve
against DIFFERENT bases: height:100% against this pane, min-height:100dvh against the VIEWPORT.
Wherever the pane is shorter than the viewport (any header/toolbar chrome above it), the floor
wins, the element overflows by exactly that chrome height, and the overflow-y:auto above then
correctly paints a scrollbar on a fixed-viewport map that should never have one.
The floor is DELIBERATE and must stay in the element (standalone it prevents a collapse to 0
against an auto-height body). It is only wrong HERE, against a definite shorter pane. A genuine
scroll-stack composite is unaffected: it exceeds the pane on its own content, not on this floor. */
.vtl-host-slot > * { min-height:0; max-height:none; }
.vtl-host-hint { position:absolute; inset:0; display:grid; place-items:center; text-align:center; color:var(--dx-muted, #6d766e); font-size:13px; padding:20px; }
.vtl-host-hint.err { color:#f87171; }
.vtl-host-hint small { color:var(--dx-muted, #6d766e); }
/* MATERIAL MINI-VARIANT RAIL = 72px (2026-09-21), up from 60px.
★ THE COLLAPSE IS A TRANSLATE, NOT A WIDTH CHANGE — so FOUR numbers are coupled and must move
together, which is precisely where a partial edit would break the layout:
nav translate -184px the 256px rail slides left, leaving 256-184 = 72px visible
main left 72px the content pane starts exactly where the rail ends
collapse pad 184px pushes the toggle's icon into the 72px strip that stays on screen
tab pad 188px the same for each row's icon (4px more, matching the old 196/200 pair)
Change one without the others and the icons drift out of the visible strip or the content
overlaps the rail. Old values were -196 / 60 / 196 / 200.
THIS BLOCK EXISTS TWICE (VTL_SHADOW_CSS and the scoped style block); keep them byte-identical. */
.vtl.rail-collapsed .vtl-nav { transform:translateX(-184px); }
.vtl.rail-collapsed .vtl-main { left:72px; }
.vtl.rail-collapsed .vtl-collapse { padding-left:184px; justify-content:flex-start; }
.vtl.rail-collapsed .vtl-collapse-ic { transform:rotate(0deg); }
.vtl.rail-collapsed .vtl-collapse-tx { display:none; }
.vtl.rail-collapsed .vtl-tab { padding-left:188px; gap:0; }
.vtl.rail-collapsed .vtl-tab-text { display:none; }
.vtl.rail-collapsed .vtl-tab-emoji { font-size:19px; }
.vtl.rail-collapsed .vtl-tab-fallback { display:inline-flex; }
.vtl.rail-collapsed .vtl-tier { padding-left:196px; }
.vtl.rail-collapsed .vtl-tl, .vtl.rail-collapsed .vtl-td, .vtl.rail-collapsed .vtl-cap, .vtl.rail-collapsed .vtl-chev { display:none; }
.vtl.rail-collapsed .vtl-grp + .vtl-grp { margin-top:6px; padding-top:6px; }
@media (max-width: 760px) {
/* Material app bar is 56px on mobile, 64px on desktop — the desktop value is set above. */
.vtl-top { min-height:56px; }
.vtl-menu { display:inline-block; }
.vtl-meta { display:none; }
/* MOBILE = the SAME composited-transform model, taken to its full-off-canvas extreme: a full-width
drawer that slides in/out via transform (never a layout property), so opening/closing the drawer
never reflows the content. Content is full-width (left:0) and stays put; the drawer floats over it. */
.vtl-nav { z-index:20; width:256px; box-shadow:0 0 28px rgba(0,0,0,.55); transform:translateX(-100%); }
/* OPEN DRAWER ABOVE THE PLUGIN'S OWN LAYERS. Mounted content shares this stacking context, and
plugins raise their chrome (the research dashboard's filter bar is z-index:55), so at z-index 20
the open drawer had a plugin's filter row painted across it — measured 2026-09-25 at 390px.
Only while OPEN on a phone: that is when the drawer is the one thing you can use, and desktop
and plugin modal scrims keep their existing order. */
.vtl.nav-open .vtl-nav { transform:translateX(0); z-index:1000; }
.vtl-main { left:0; }
/* The desktop slim-rail collapse has no meaning on a phone — reconcileForWidth() clears railCollapsed
at this width, but neutralize its CSS too (belt-and-suspenders) so a full labelled drawer always
shows: no partial slide, no icon-column padding, labels/sections visible. */
.vtl.rail-collapsed .vtl-nav { transform:translateX(-100%); }
.vtl.rail-collapsed.nav-open .vtl-nav { transform:translateX(0); }
.vtl.rail-collapsed .vtl-main { left:0; }
.vtl.rail-collapsed .vtl-collapse { padding-left:10px; justify-content:flex-start; }
.vtl.rail-collapsed .vtl-collapse-ic { transform:rotate(180deg); }
.vtl.rail-collapsed .vtl-collapse-tx { display:inline; }
.vtl.rail-collapsed .vtl-tab { padding-left:10px; gap:11px; }
.vtl.rail-collapsed .vtl-tab-text { display:flex; }
.vtl.rail-collapsed .vtl-tab-fallback { display:none; }
.vtl.rail-collapsed .vtl-tier { padding-left:8px; }
.vtl.rail-collapsed .vtl-tl, .vtl.rail-collapsed .vtl-td, .vtl.rail-collapsed .vtl-cap, .vtl.rail-collapsed .vtl-chev { display:inline; }
}
/* ★ RIGHT-TO-LEFT (ar). THIS BLOCK EXISTS TWICE (VTL_SHADOW_CSS and the scoped style block); keep them
byte-identical. Everything above is written in PHYSICAL terms (left:0 rail, left:256px content,
translateX(-…) slides), so an Arabic shell kept the rail on the left with LTR geometry (reported by
studio for cell E, 2026-09-25). These are ADDITIVE overrides scoped by :dir(rtl), so an LTR consumer
matches none of them and renders exactly as before. :dir() follows the dir attribute through the
shadow boundary, so either a consumer setting dir="rtl" on the layout or an RTL host page flips it.
translateX has no logical form, which is why this is a mirror block rather than logical properties. */
.vtl:dir(rtl) .vtl-nav { left:auto; right:0; border-right:0; border-left:1px solid var(--vtl-border); }
.vtl:dir(rtl) .vtl-main { left:0; right:256px; }
.vtl:dir(rtl) .vtl-tab, .vtl:dir(rtl) .vtl-tier-btn { text-align:right; }
.vtl:dir(rtl) .vtl-meta, .vtl:dir(rtl) .vtl-td, .vtl:dir(rtl) .vtl-chev { margin-left:0; margin-right:auto; }
.vtl:dir(rtl) .vtl-chev:not(.open) { transform:scaleX(-1); }
.vtl:dir(rtl) .vtl-collapse-ic svg { transform:scaleX(-1); }
.vtl:dir(rtl) .vtl-fab { left:auto; right:calc(12px + env(safe-area-inset-right)); }
.vtl.rail-collapsed:dir(rtl) .vtl-nav { transform:translateX(184px); }
.vtl.rail-collapsed:dir(rtl) .vtl-main { left:0; right:72px; }
.vtl.rail-collapsed:dir(rtl) .vtl-collapse { padding-left:10px; padding-right:184px; }
.vtl.rail-collapsed:dir(rtl) .vtl-tab { padding-left:12px; padding-right:188px; }
.vtl.rail-collapsed:dir(rtl) .vtl-tier { padding-left:8px; padding-right:196px; }
@media (max-width: 760px) {
.vtl:dir(rtl) .vtl-nav { transform:translateX(100%); }
.vtl.nav-open:dir(rtl) .vtl-nav { transform:translateX(0); }
.vtl:dir(rtl) .vtl-main, .vtl.rail-collapsed:dir(rtl) .vtl-main { left:0; right:0; }
.vtl.rail-collapsed:dir(rtl) .vtl-nav { transform:translateX(100%); }
.vtl.rail-collapsed.nav-open:dir(rtl) .vtl-nav { transform:translateX(0); }
.vtl.rail-collapsed:dir(rtl) .vtl-collapse { padding-left:10px; padding-right:10px; }
.vtl.rail-collapsed:dir(rtl) .vtl-tab { padding-left:12px; padding-right:10px; }
.vtl.rail-collapsed:dir(rtl) .vtl-tier { padding-left:8px; padding-right:8px; }
}
`,yl=ss({name:"VerticalTabsLayout",props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},labels:{type:Object,default:()=>({})},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){return fl(vl,"vertical-tabs-layout"),{T:ml}},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{}}},computed:{railShown(){return this.narrow?this.navOpen:!0},allRows(){if(this.groups&&this.groups.length){const e=[];for(const t of this.groups)for(const o of t.rows||[])e.push(o);return e}return this.items},orderedKeys(){return this.allRows.map(e=>e.key)},elementRows(){return this.allRows.filter(e=>e&&e.element)},mountedElementRows(){return this.elementRows.filter(e=>this.activatedKeys[e.key])}},watch:{active:{immediate:!0,handler(e){this.activateElement(e)}}},mounted(){try{window.matchMedia&&(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this.reconcileForWidth(),this._onMedia=e=>{this.narrow=e.matches,this.reconcileForWidth()},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))}catch{}this.$nextTick(()=>this.activateElement(this.active))},beforeUnmount(){try{this._mql&&this._onMedia&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia))}catch{}this._mql=null,this._onMedia=null},methods:{registerTab(e,t){t&&(this._tabEls[e]=t)},isNarrow(){return this.narrow},reconcileForWidth(){this.narrow?(this.navOpen=!1,this.railCollapsed=!1):this.navOpen=!0},label(e){const t={toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse"};return this.labels&&this.labels[e]||t[e]},expandRail(){!this.narrow&&this.railCollapsed&&(this.railCollapsed=!1)},toggleRail(){this.narrow?this.navOpen=!this.navOpen:this.railCollapsed=!this.railCollapsed},setHostSlot(e,t){t&&(this._hostSlots[e]=t,this.$nextTick(()=>this.mountHostElement(e)))},activateElement(e){!e||!this.elementRows.find(o=>o.key===e)||(this.activatedKeys[e]||(this.activatedKeys={...this.activatedKeys,[e]:!0},this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(s=>s.key===e),o=this._hostSlots[e];!t||!o||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},_l(t.src).then(()=>$l(t.element)).then(()=>{o.innerHTML="";const s=document.createElement(t.element),n=t.attrs||{};for(const i in n){const a=n[i],r=a!=null&&typeof a=="object"?JSON.stringify(a):String(a);try{s[i]=a}catch{}try{s.setAttribute(i,r)}catch{}}s.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(s),this.hostState={...this.hostState,[e]:"ready"}}).catch(s=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:s&&s.message||String(s)}}))},iconSvg(e){return e?hl(e):""},initial(e){const t=(e||"").trim();return t?t.charAt(0).toUpperCase():"•"},isFolderClosed(e){const t=this.folderOverride[e.key];return t!=null?!t:e.open!==!0},toggleFolder(e){const t=this.folderOverride[e],o=(this.groups||[]).find(n=>n.key===e),s=t??(o&&o.open===!0);this.folderOverride={...this.folderOverride,[e]:!s}},pick(e){this.$emit("update:active",e),this.narrow&&(this.navOpen=!1)},onKey(e){const t=this.orderedKeys;if(!t.length)return;const o=t.indexOf(this.active);let s=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")s=(o+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")s=(o-1+t.length)%t.length;else if(e.key==="Home")s=0;else if(e.key==="End")s=t.length-1;else return;e.preventDefault();const n=t[s];this.pick(n),this.$nextTick(()=>{const i=this._tabEls[n];i&&i.focus&&i.focus()})}}}),xl={key:0,class:"vtl-top"},wl=["aria-expanded","aria-label"],Pl={class:"vtl-brand"},kl={class:"vtl-title"},Ll={class:"vtl-meta"},Sl=["aria-expanded","aria-label"],Cl={class:"vtl-body"},El=["aria-label","aria-hidden","role","aria-orientation"],Tl=["aria-expanded","aria-label"],Nl=["innerHTML"],Rl={class:"vtl-collapse-tx"},Al=["aria-expanded","onClick"],Ol={key:0,class:"vtl-cap"},Il={class:"vtl-tl"},Fl={key:1,class:"vtl-td"},Ml=["innerHTML"],Dl={key:1,class:"vtl-tier"},Wl={key:0,class:"vtl-cap"},Hl={class:"vtl-tl"},jl={key:1,class:"vtl-td"},Gl={class:"vtl-rows"},Ul=["aria-selected","tabindex","onClick"],Vl=["innerHTML"],zl={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},Bl={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Kl={class:"vtl-tab-text"},ql={class:"vtl-tab-label"},Zl={key:0,class:"vtl-tab-badge"},Xl={key:0,class:"vtl-tab-sub"},Jl=["innerHTML"],Yl=["aria-selected","tabindex","onClick"],Ql=["innerHTML"],ec={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},tc={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},oc={class:"vtl-tab-text"},sc={class:"vtl-tab-label"},nc={key:0,class:"vtl-tab-sub"},ic={class:"vtl-main"},ac={class:"vtl-content"},rc=["hidden"],lc={key:0,class:"vtl-host-hint"},cc={key:1,class:"vtl-host-hint err"};function pc(e,t,o,s,n,i){return A(),O("div",{class:Be(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(A(),O("header",xl,[E("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=a=>e.navOpen=!e.navOpen),"aria-label":e.label("toggleList")},"☰",8,wl),E("span",Pl,[St(e.$slots,"brand")]),E("b",kl,I(e.title),1),E("span",Ll,[St(e.$slots,"meta")])])):de("",!0),e.narrow&&!e.header&&!e.navOpen?(A(),O("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=a=>e.navOpen=!0),"aria-label":e.label("openViews")},"☰",8,Sl)):de("",!0),E("div",Cl,[E("nav",{class:"vtl-nav","aria-label":e.navLabel,"aria-hidden":String(!e.railShown),role:e.$slots.rail?null:"tablist","aria-orientation":e.$slots.rail?null:"vertical"},[E("button",{type:"button",class:"vtl-collapse","aria-expanded":String(!e.railCollapsed),"aria-label":e.railCollapsed?e.label("expandList"):e.label("collapseList"),onClick:t[2]||(t[2]=(...a)=>e.toggleRail&&e.toggleRail(...a))},[E("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,Nl),E("span",Rl,I(e.label("collapse")),1)],8,Tl),e.$slots.rail?St(e.$slots,"rail",{collapsed:e.railCollapsed&&!e.narrow,expand:e.expandRail,pick:e.pick},void 0,void 0,0):e.groups&&e.groups.length?(A(!0),O(ee,{key:1},dt(e.groups,a=>(A(),O("div",{class:"vtl-grp",key:a.key},[a.folder?(A(),O("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(a)),onClick:r=>e.toggleFolder(a.key)},[a.badge?(A(),O("span",Ol,I(a.badge),1)):de("",!0),E("span",Il,I(a.label),1),a.count!=null?(A(),O("span",Fl,I(a.count),1)):de("",!0),E("span",{class:Be(["vtl-chev",{open:!e.isFolderClosed(a)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,Ml)],8,Al)):(A(),O("div",Dl,[a.badge?(A(),O("span",Wl,I(a.badge),1)):de("",!0),E("span",Hl,I(a.label),1),a.count!=null?(A(),O("span",jl,I(a.count),1)):de("",!0)])),Qo(E("div",Gl,[(A(!0),O(ee,null,dt(a.rows,r=>(A(),O("button",{key:r.key,type:"button",role:"tab",class:Be(["vtl-tab",{active:r.key===e.active}]),"aria-selected":String(r.key===e.active),tabindex:r.key===e.active?0:-1,ref_for:!0,ref:l=>e.registerTab(r.key,l),onClick:l=>e.pick(r.key),onKeydown:t[3]||(t[3]=l=>e.onKey(l))},[r.icon?(A(),O("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(r.icon)},null,8,Vl)):r.emoji?(A(),O("span",zl,I(r.emoji),1)):(A(),O("span",Bl,I(e.initial(r.label)),1)),E("span",Kl,[E("span",ql,[gt(I(r.label),1),r.badge?(A(),O("span",Zl,I(r.badge),1)):de("",!0)]),r.sub?(A(),O("span",Xl,[E("span",{innerHTML:r.sub},null,8,Jl)])):de("",!0)])],42,Ul))),128))],512),[[ms,!a.folder||!e.isFolderClosed(a)]])]))),128)):(A(!0),O(ee,{key:2},dt(e.items,a=>(A(),O("button",{key:a.key,type:"button",role:"tab",class:Be(["vtl-tab",{active:a.key===e.active}]),"aria-selected":String(a.key===e.active),tabindex:a.key===e.active?0:-1,ref_for:!0,ref:r=>e.registerTab(a.key,r),onClick:r=>e.pick(a.key),onKeydown:t[4]||(t[4]=r=>e.onKey(r))},[a.icon?(A(),O("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(a.icon)},null,8,Ql)):a.emoji?(A(),O("span",ec,I(a.emoji),1)):(A(),O("span",tc,I(e.initial(a.label)),1)),E("span",oc,[E("span",sc,I(a.label),1),a.sub?(A(),O("span",nc,I(a.sub),1)):de("",!0)])],42,Yl))),128))],8,El),E("main",ic,[e.header?St(e.$slots,"toolbar",{},void 0,void 0,0):de("",!0),E("div",ac,[(A(!0),O(ee,null,dt(e.mountedElementRows,a=>Qo((A(),O("section",{key:a.key,class:"vtl-host",hidden:a.key!==e.active},[E("div",{class:"vtl-host-slot",ref_for:!0,ref:r=>e.setHostSlot(a.key,r)},null,512),e.hostState[a.key]==="loading"?(A(),O("div",lc,I(e.T("messages.loadingNamed","Loading {name}…").replace("{name}",a.label)),1)):e.hostState[a.key]==="error"?(A(),O("div",cc,[gt(I(e.T("messages.couldNotLoadNamed","Could not load {name}.").replace("{name}",a.label)),1),t[5]||(t[5]=E("br",null,null,-1)),E("small",null,I(e.hostError[a.key]),1)])):de("",!0)],8,rc)),[[ms,a.key===e.active]])),128)),St(e.$slots,"default")])])])],2)}const dc=xi(yl,[["render",pc],["styles",[bl]]]),ys=[{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"pt",name:"Portuguese",nativeName:"Português",flag:"🇵🇹"},{code:"ar",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",dir:"rtl"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪",hideFromSwitcher:!0},{code:"hi",name:"Hindi",nativeName:"हिन्दी",flag:"🇮🇳",hideFromSwitcher:!0},{code:"it",name:"Italian",nativeName:"Italiano",flag:"🇮🇹",hideFromSwitcher:!0},{code:"ro",name:"Romanian",nativeName:"Română",flag:"🇷🇴",hideFromSwitcher:!0},{code:"zh",name:"Chinese",nativeName:"中文",flag:"🇨🇳",hideFromSwitcher:!0}],uc=ys.filter(e=>!e.hideFromSwitcher);function fc(e){return ys.find(t=>t.code===e)}function wi(e){const t=String(e||"").split("-")[0].toLowerCase();return ys.some(o=>o.code===t)?t:"en"}const Pi="doxa-maps:locale";function gc(){try{const e=localStorage.getItem(Pi);if(e)return wi(e)}catch{}return wi(navigator==null?void 0:navigator.language)}function hc(e){try{localStorage.setItem(Pi,e)}catch{}}const Wt={en:{"sec.dashboards":"Dashboards","sec.prayer":"Prayer Mobilization","sec.gospel":"Gospel Research","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Big Picture","sub.dashboard-plus-grid":"dashboard + people-groups grid, stacked","tab.research-map":"Research Map","sub.research-map":"prayer · engagement · regions","tab.research-map-plus-grid":"Simple Research","sub.research-map-plus-grid":"research map + people-groups grid","tab.prayer-map":"Prayer Progress","sub.prayer-map":"simple world prayer map","tab.cities-internet":"Cities with Internet","sub.cities-internet":"connectivity of key cities","tab.gospel-resources":"Gospel Resources","sub.gospel-resources":"resources by place","tab.regions-dashboard":"Regions","sub.regions-dashboard":"regions and their countries","tab.upg-100":"UPG-100 List","sub.upg-100":"my unreached list + posters",navLabel:"Research maps",meta:"{n} maps",loading:"Loading {label}…",loadFailed:"Could not load {label}.",manifestHint:"This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.",desktopOnly:"desktop only",lab:"lab",experimentalSub:"experimental bundle",toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse","tab.prayer-walk-planner":"Prayer Walk Planner","tab.upg-neighbor":"UPG Neighbor","tab.key-cities":"Key Cities","tab.all-people-groups":"All People Groups","tab.pplr-data-maps":"PPLR Data Maps","tab.wall-of-people-groups":"Wall of People Groups","tab.country-posters":"Country Posters","tab.doxa-vision-card":"Doxa Vision Card",desktopNotice:"Big Picture only supports desktop — open this page on a desktop to use it."},es:{"sec.dashboards":"Paneles","sec.prayer":"Movilización de oración","sec.gospel":"Investigación del Evangelio","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Panorama general","sub.dashboard-plus-grid":"panel + cuadrícula de pueblos","tab.research-map":"Mapa de investigación","sub.research-map":"oración · compromiso · regiones","tab.research-map-plus-grid":"Investigación simple","sub.research-map-plus-grid":"mapa de investigación + cuadrícula de pueblos","tab.prayer-map":"Progreso de oración","sub.prayer-map":"mapa mundial de oración","tab.cities-internet":"Ciudades con Internet","sub.cities-internet":"conectividad de ciudades clave","tab.gospel-resources":"Recursos del Evangelio","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiones","sub.regions-dashboard":"regiones y sus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"mi lista de no alcanzados + carteles",navLabel:"Mapas de investigación",meta:"{n} mapas",loading:"Cargando {label}…",loadFailed:"No se pudo cargar {label}.",manifestHint:"Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.",desktopOnly:"solo escritorio",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar u ocultar la lista",openViews:"Abrir la lista de vistas",expandList:"Expandir la lista",collapseList:"Contraer la lista",collapse:"Contraer","tab.prayer-walk-planner":"Caminatas de oración","tab.upg-neighbor":"Vecino UPG","tab.key-cities":"Ciudades clave","tab.all-people-groups":"Todos los pueblos","tab.pplr-data-maps":"Mapas de datos PPLR","tab.wall-of-people-groups":"Muro de los pueblos","tab.country-posters":"Carteles por país","tab.doxa-vision-card":"Tarjeta de visión Doxa",desktopNotice:"Panorama general solo funciona en escritorio: abre esta página en una computadora para usarlo."},fr:{"sec.dashboards":"Tableaux de bord","sec.prayer":"Mobilisation à la prière","sec.gospel":"Recherche sur l'Évangile","sec.experimental":"Expérimental","tab.dashboard-plus-grid":"Vue d'ensemble","sub.dashboard-plus-grid":"tableau de bord + grille des peuples","tab.research-map":"Carte de recherche","sub.research-map":"prière · engagement · régions","tab.research-map-plus-grid":"Recherche simple","sub.research-map-plus-grid":"carte de recherche + grille des peuples","tab.prayer-map":"Progression de la prière","sub.prayer-map":"carte mondiale de la prière","tab.cities-internet":"Villes avec Internet","sub.cities-internet":"connectivité des villes clés","tab.gospel-resources":"Ressources de l'Évangile","sub.gospel-resources":"ressources par lieu","tab.regions-dashboard":"Régions","sub.regions-dashboard":"régions et leurs pays","tab.upg-100":"Liste UPG-100","sub.upg-100":"ma liste des non atteints + affiches",navLabel:"Cartes de recherche",meta:"{n} cartes",loading:"Chargement de {label}…",loadFailed:"Impossible de charger {label}.",manifestHint:"Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.",desktopOnly:"ordinateur uniquement",lab:"bêta",experimentalSub:"carte expérimentale",toggleList:"Afficher ou masquer la liste",openViews:"Ouvrir la liste des vues",expandList:"Déplier la liste",collapseList:"Replier la liste",collapse:"Replier","tab.prayer-walk-planner":"Marches de prière","tab.upg-neighbor":"Voisin UPG","tab.key-cities":"Villes clés","tab.all-people-groups":"Tous les peuples","tab.pplr-data-maps":"Cartes de données PPLR","tab.wall-of-people-groups":"Mur des peuples","tab.country-posters":"Affiches par pays","tab.doxa-vision-card":"Carte de vision Doxa",desktopNotice:"Vue d'ensemble ne fonctionne que sur ordinateur : ouvrez cette page sur un ordinateur pour l'utiliser."},de:{"sec.dashboards":"Dashboards","sec.prayer":"Gebetsmobilisierung","sec.gospel":"Evangeliumsforschung","sec.experimental":"Experimentell","tab.dashboard-plus-grid":"Gesamtbild","sub.dashboard-plus-grid":"Dashboard + Raster der Volksgruppen","tab.research-map":"Forschungskarte","sub.research-map":"Gebet · Engagement · Regionen","tab.research-map-plus-grid":"Einfache Recherche","sub.research-map-plus-grid":"Forschungskarte + Raster der Volksgruppen","tab.prayer-map":"Gebetsfortschritt","sub.prayer-map":"einfache Weltkarte des Gebets","tab.cities-internet":"Städte mit Internet","sub.cities-internet":"Konnektivität wichtiger Städte","tab.gospel-resources":"Evangeliumsressourcen","sub.gospel-resources":"Ressourcen nach Ort","tab.regions-dashboard":"Regionen","sub.regions-dashboard":"Regionen und ihre Länder","tab.upg-100":"UPG-100-Liste","sub.upg-100":"meine Liste der Unerreichten + Poster",navLabel:"Forschungskarten",meta:"{n} Karten",loading:"{label} wird geladen…",loadFailed:"{label} konnte nicht geladen werden.",manifestHint:"Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.",desktopOnly:"nur Desktop",lab:"Beta",experimentalSub:"experimentelle Karte",toggleList:"Liste ein-/ausblenden",openViews:"Ansichtsliste öffnen",expandList:"Liste ausklappen",collapseList:"Liste einklappen",collapse:"Einklappen","tab.prayer-walk-planner":"Gebetsspaziergänge","tab.upg-neighbor":"UPG-Nachbar","tab.key-cities":"Schlüsselstädte","tab.all-people-groups":"Alle Volksgruppen","tab.pplr-data-maps":"PPLR-Datenkarten","tab.wall-of-people-groups":"Wand der Volksgruppen","tab.country-posters":"Länderposter","tab.doxa-vision-card":"Doxa-Visionskarte",desktopNotice:"Gesamtbild funktioniert nur am Desktop – öffnen Sie diese Seite an einem Computer, um es zu nutzen."},pt:{"sec.dashboards":"Painéis","sec.prayer":"Mobilização de oração","sec.gospel":"Pesquisa do Evangelho","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Visão geral","sub.dashboard-plus-grid":"painel + grade de povos","tab.research-map":"Mapa de pesquisa","sub.research-map":"oração · engajamento · regiões","tab.research-map-plus-grid":"Pesquisa simples","sub.research-map-plus-grid":"mapa de pesquisa + grade de povos","tab.prayer-map":"Progresso da oração","sub.prayer-map":"mapa mundial de oração","tab.cities-internet":"Cidades com Internet","sub.cities-internet":"conectividade das principais cidades","tab.gospel-resources":"Recursos do Evangelho","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiões","sub.regions-dashboard":"regiões e seus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"minha lista de não alcançados + cartazes",navLabel:"Mapas de pesquisa",meta:"{n} mapas",loading:"Carregando {label}…",loadFailed:"Não foi possível carregar {label}.",manifestHint:"Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.",desktopOnly:"só no computador",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar ou ocultar a lista",openViews:"Abrir a lista de visualizações",expandList:"Expandir a lista",collapseList:"Recolher a lista",collapse:"Recolher","tab.prayer-walk-planner":"Caminhadas de oração","tab.upg-neighbor":"Vizinho UPG","tab.key-cities":"Cidades-chave","tab.all-people-groups":"Todos os povos","tab.pplr-data-maps":"Mapas de dados PPLR","tab.wall-of-people-groups":"Mural dos povos","tab.country-posters":"Cartazes por país","tab.doxa-vision-card":"Cartão de visão Doxa",desktopNotice:"Visão geral só funciona no computador — abra esta página em um computador para usá-la."},it:{"sec.dashboards":"Dashboard","sec.prayer":"Mobilitazione alla preghiera","sec.gospel":"Ricerca sul Vangelo","sec.experimental":"Sperimentale","tab.dashboard-plus-grid":"Quadro d'insieme","sub.dashboard-plus-grid":"dashboard + griglia dei popoli","tab.research-map":"Mappa di ricerca","sub.research-map":"preghiera · impegno · regioni","tab.research-map-plus-grid":"Ricerca semplice","sub.research-map-plus-grid":"mappa di ricerca + griglia dei popoli","tab.prayer-map":"Avanzamento preghiera","sub.prayer-map":"mappa mondiale della preghiera","tab.cities-internet":"Città con Internet","sub.cities-internet":"connettività delle città chiave","tab.gospel-resources":"Risorse del Vangelo","sub.gospel-resources":"risorse per luogo","tab.regions-dashboard":"Regioni","sub.regions-dashboard":"regioni e i loro paesi","tab.upg-100":"Lista UPG-100","sub.upg-100":"la mia lista dei non raggiunti + poster",navLabel:"Mappe di ricerca",meta:"{n} mappe",loading:"Caricamento di {label}…",loadFailed:"Impossibile caricare {label}.",manifestHint:"Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.",desktopOnly:"solo desktop",lab:"beta",experimentalSub:"mappa sperimentale",toggleList:"Mostra o nascondi l’elenco",openViews:"Apri l’elenco delle viste",expandList:"Espandi l’elenco",collapseList:"Comprimi l’elenco",collapse:"Comprimi","tab.prayer-walk-planner":"Passeggiate di preghiera","tab.upg-neighbor":"Vicino UPG","tab.key-cities":"Città chiave","tab.all-people-groups":"Tutti i popoli","tab.pplr-data-maps":"Mappe dati PPLR","tab.wall-of-people-groups":"Muro dei popoli","tab.country-posters":"Poster per paese","tab.doxa-vision-card":"Scheda visione Doxa",desktopNotice:"Quadro d'insieme funziona solo su desktop: apri questa pagina su un computer per usarlo."},ro:{"sec.dashboards":"Panouri","sec.prayer":"Mobilizare la rugăciune","sec.gospel":"Cercetarea Evangheliei","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Imaginea de ansamblu","sub.dashboard-plus-grid":"panou + grila popoarelor","tab.research-map":"Hartă de cercetare","sub.research-map":"rugăciune · implicare · regiuni","tab.research-map-plus-grid":"Cercetare simplă","sub.research-map-plus-grid":"hartă de cercetare + grila popoarelor","tab.prayer-map":"Progresul rugăciunii","sub.prayer-map":"hartă mondială a rugăciunii","tab.cities-internet":"Orașe cu internet","sub.cities-internet":"conectivitatea orașelor-cheie","tab.gospel-resources":"Resurse ale Evangheliei","sub.gospel-resources":"resurse după loc","tab.regions-dashboard":"Regiuni","sub.regions-dashboard":"regiunile și țările lor","tab.upg-100":"Lista UPG-100","sub.upg-100":"lista mea de neatinși + afișe",navLabel:"Hărți de cercetare",meta:"{n} hărți",loading:"Se încarcă {label}…",loadFailed:"{label} nu a putut fi încărcat.",manifestHint:"Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.",desktopOnly:"doar pe desktop",lab:"beta",experimentalSub:"hartă experimentală",toggleList:"Afișează sau ascunde lista",openViews:"Deschide lista de vizualizări",expandList:"Extinde lista",collapseList:"Restrânge lista",collapse:"Restrânge","tab.prayer-walk-planner":"Plimbări de rugăciune","tab.upg-neighbor":"Vecin UPG","tab.key-cities":"Orașe-cheie","tab.all-people-groups":"Toate popoarele","tab.pplr-data-maps":"Hărți de date PPLR","tab.wall-of-people-groups":"Zidul popoarelor","tab.country-posters":"Afișe pe țări","tab.doxa-vision-card":"Card de viziune Doxa",desktopNotice:"Imaginea de ansamblu funcționează doar pe desktop — deschideți această pagină pe un computer pentru a o folosi."},ru:{"sec.dashboards":"Панели","sec.prayer":"Молитвенная мобилизация","sec.gospel":"Исследование Евангелия","sec.experimental":"Экспериментальное","tab.dashboard-plus-grid":"Общая картина","sub.dashboard-plus-grid":"панель + таблица народов","tab.research-map":"Исследовательская карта","sub.research-map":"молитва · вовлечённость · регионы","tab.research-map-plus-grid":"Простое исследование","sub.research-map-plus-grid":"исследовательская карта + таблица народов","tab.prayer-map":"Прогресс молитвы","sub.prayer-map":"простая карта молитвы мира","tab.cities-internet":"Города с интернетом","sub.cities-internet":"подключённость ключевых городов","tab.gospel-resources":"Евангельские ресурсы","sub.gospel-resources":"ресурсы по местам","tab.regions-dashboard":"Регионы","sub.regions-dashboard":"регионы и их страны","tab.upg-100":"Список UPG-100","sub.upg-100":"мой список недостигнутых + плакаты",navLabel:"Исследовательские карты",meta:"Карт: {n}",loading:"Загрузка: {label}…",loadFailed:"Не удалось загрузить: {label}.",manifestHint:"Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.",desktopOnly:"только на компьютере",lab:"бета",experimentalSub:"экспериментальная карта",toggleList:"Показать или скрыть список",openViews:"Открыть список представлений",expandList:"Развернуть список",collapseList:"Свернуть список",collapse:"Свернуть","tab.prayer-walk-planner":"Молитвенные прогулки","tab.upg-neighbor":"Сосед UPG","tab.key-cities":"Ключевые города","tab.all-people-groups":"Все народы","tab.pplr-data-maps":"Карты данных PPLR","tab.wall-of-people-groups":"Стена народов","tab.country-posters":"Плакаты по странам","tab.doxa-vision-card":"Карточка видения Doxa",desktopNotice:"«Общая картина» работает только на компьютере — откройте эту страницу на компьютере."},ar:{"sec.dashboards":"لوحات المعلومات","sec.prayer":"التعبئة للصلاة","sec.gospel":"أبحاث الإنجيل","sec.experimental":"تجريبي","tab.dashboard-plus-grid":"الصورة الكاملة","sub.dashboard-plus-grid":"لوحة معلومات + شبكة الشعوب","tab.research-map":"خريطة البحث","sub.research-map":"الصلاة · الانخراط · المناطق","tab.research-map-plus-grid":"بحث مبسّط","sub.research-map-plus-grid":"خريطة البحث + شبكة الشعوب","tab.prayer-map":"تقدم الصلاة","sub.prayer-map":"خريطة عالمية مبسّطة للصلاة","tab.cities-internet":"مدن متصلة بالإنترنت","sub.cities-internet":"اتصال المدن الرئيسية","tab.gospel-resources":"موارد الإنجيل","sub.gospel-resources":"الموارد حسب المكان","tab.regions-dashboard":"المناطق","sub.regions-dashboard":"المناطق ودولها","tab.upg-100":"قائمة UPG-100","sub.upg-100":"قائمتي لغير المُبشَّرين + ملصقات",navLabel:"خرائط البحث",meta:"عدد الخرائط: {n}",loading:"جارٍ تحميل {label}…",loadFailed:"تعذّر تحميل {label}.",manifestHint:"تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.",desktopOnly:"على الحاسوب فقط",lab:"تجريبي",experimentalSub:"خريطة تجريبية",toggleList:"إظهار القائمة أو إخفاؤها",openViews:"فتح قائمة العروض",expandList:"توسيع القائمة",collapseList:"طي القائمة",collapse:"طي","tab.prayer-walk-planner":"جولات الصلاة","tab.upg-neighbor":"جار UPG","tab.key-cities":"المدن الرئيسية","tab.all-people-groups":"جميع الشعوب","tab.pplr-data-maps":"خرائط بيانات PPLR","tab.wall-of-people-groups":"جدار الشعوب","tab.country-posters":"ملصقات الدول","tab.doxa-vision-card":"بطاقة رؤية Doxa",desktopNotice:"تعمل «الصورة الكاملة» على الحاسوب فقط — افتح هذه الصفحة على حاسوب لاستخدامها."},hi:{"sec.dashboards":"डैशबोर्ड","sec.prayer":"प्रार्थना संचालन","sec.gospel":"सुसमाचार शोध","sec.experimental":"प्रायोगिक","tab.dashboard-plus-grid":"संपूर्ण चित्र","sub.dashboard-plus-grid":"डैशबोर्ड + जनसमूहों की ग्रिड","tab.research-map":"शोध मानचित्र","sub.research-map":"प्रार्थना · सहभागिता · क्षेत्र","tab.research-map-plus-grid":"सरल शोध","sub.research-map-plus-grid":"शोध मानचित्र + जनसमूहों की ग्रिड","tab.prayer-map":"प्रार्थना प्रगति","sub.prayer-map":"सरल विश्व प्रार्थना मानचित्र","tab.cities-internet":"इंटरनेट वाले शहर","sub.cities-internet":"प्रमुख शहरों की कनेक्टिविटी","tab.gospel-resources":"सुसमाचार संसाधन","sub.gospel-resources":"स्थान के अनुसार संसाधन","tab.regions-dashboard":"क्षेत्र","sub.regions-dashboard":"क्षेत्र और उनके देश","tab.upg-100":"UPG-100 सूची","sub.upg-100":"मेरी अप्राप्त सूची + पोस्टर",navLabel:"शोध मानचित्र",meta:"{n} मानचित्र",loading:"{label} लोड हो रहा है…",loadFailed:"{label} लोड नहीं हो सका।",manifestHint:"यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।",desktopOnly:"केवल डेस्कटॉप",lab:"बीटा",experimentalSub:"प्रायोगिक मानचित्र",toggleList:"सूची दिखाएँ या छिपाएँ",openViews:"दृश्यों की सूची खोलें",expandList:"सूची फैलाएँ",collapseList:"सूची संक्षिप्त करें",collapse:"संक्षिप्त करें","tab.prayer-walk-planner":"प्रार्थना पदयात्रा","tab.upg-neighbor":"UPG पड़ोसी","tab.key-cities":"प्रमुख शहर","tab.all-people-groups":"सभी जनसमूह","tab.pplr-data-maps":"PPLR डेटा मानचित्र","tab.wall-of-people-groups":"जनसमूहों की दीवार","tab.country-posters":"देश पोस्टर","tab.doxa-vision-card":"Doxa दर्शन कार्ड",desktopNotice:"संपूर्ण चित्र केवल डेस्कटॉप पर काम करता है — इसे उपयोग करने के लिए यह पेज कंप्यूटर पर खोलें।"},zh:{"sec.dashboards":"仪表板","sec.prayer":"祷告动员","sec.gospel":"福音研究","sec.experimental":"实验性","tab.dashboard-plus-grid":"全景","sub.dashboard-plus-grid":"仪表板 + 民族网格","tab.research-map":"研究地图","sub.research-map":"祷告 · 参与 · 区域","tab.research-map-plus-grid":"简易研究","sub.research-map-plus-grid":"研究地图 + 民族网格","tab.prayer-map":"祷告进度","sub.prayer-map":"简易世界祷告地图","tab.cities-internet":"有互联网的城市","sub.cities-internet":"主要城市的网络连接","tab.gospel-resources":"福音资源","sub.gospel-resources":"按地点划分的资源","tab.regions-dashboard":"区域","sub.regions-dashboard":"区域及其国家","tab.upg-100":"UPG-100 名单","sub.upg-100":"我的未得之民名单 + 海报",navLabel:"研究地图",meta:"{n} 张地图",loading:"正在加载{label}…",loadFailed:"无法加载{label}。",manifestHint:"此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。",desktopOnly:"仅限桌面",lab:"测试版",experimentalSub:"实验性地图",toggleList:"显示或隐藏列表",openViews:"打开视图列表",expandList:"展开列表",collapseList:"折叠列表",collapse:"折叠","tab.prayer-walk-planner":"祷告行走","tab.upg-neighbor":"UPG 邻居","tab.key-cities":"重点城市","tab.all-people-groups":"所有民族","tab.pplr-data-maps":"PPLR 数据地图","tab.wall-of-people-groups":"民族之墙","tab.country-posters":"国家海报","tab.doxa-vision-card":"Doxa 异象卡",desktopNotice:"全景仅支持桌面设备——请在电脑上打开此页面使用。"}},xs=Object.keys(Wt);function bc(e){return Object.prototype.hasOwnProperty.call(Wt.en,e)}function wo(e,t,o){let n=(Wt[e]||Wt.en)[t]??Wt.en[t]??t;if(o)for(const i in o)n=n.split("{"+i+"}").join(String(o[i]));return n}const mc=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.dms-slot{position:relative;min-height:100%}.dms-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:#6d766e;font-size:13px;padding:20px}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;margin-top:4px;z-index:30;min-width:180px;list-style:none;padding:6px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000080;max-height:320px;overflow:auto}.dms-locale-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:13px;padding:7px 9px;border:0;border-radius:7px;background:none;color:#3b463d;cursor:pointer}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}";function ki(){try{const e=new URLSearchParams(location.search),t=(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase();if(xs.includes(t))return t}catch{}try{const e=(document.documentElement.lang||"").split("-")[0].toLowerCase();if(xs.includes(e))return e}catch{}return""}const ws=[{key:"dashboards",label:"Dashboards",i18n:"sec.dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",i18n:"sec.prayer",icon:"heart",tabs:[{id:"upg-100",icon:"list"},{id:"prayer-map",icon:"embed"}]},{key:"gospel-research",label:"Gospel Research",i18n:"sec.gospel",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",i18n:"sec.experimental",icon:"flask",folder:!0,open:!1,tabs:[]}],_c=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo"]),Li={"prayer-walk-planner":1,"upg-neighbor":2,"key-cities":3,"all-people-groups":4,"country-posters":5,"doxa-vision-card":6},Ps=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"🌍",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer · engagement · regions",emoji:"🗺️",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"🗺️",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"🙏",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"📡",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"📖",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"🌐",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"upg-100",label:"UPG-100 List",sub:"my unreached list + posters",emoji:"📋",bundle:"my-upg-100-list",profile:"upg-100-mfe"}];vc(ws);const Po=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid","gospel-internet-board"]),ko=new Set(["dashboard-plus-grid","research-map-plus-grid"]);function $c(){const e=Object.fromEntries(Ps.map(o=>[o.id,o])),t=new Set;for(const o of ws)if(o.key!=="experimental")for(const s of o.tabs||[]){const n=e[s.id];n&&n.bundle&&t.add(n.bundle)}return t}function Si(e,t){const o=[];for(const s of e)!s||t.has(s.key)||(t.add(s.key),o.push(s));return o}function vc(e){const t=new Map,o=[];for(const s of e)if(s.key!=="experimental")for(const n of s.tabs||[]){if(!n||!n.id)continue;const i=t.get(n.id);if(i===void 0){t.set(n.id,s.key);continue}(i!==s.key||o.indexOf(n.id)===-1)&&o.push(n.id+" ("+i+" + "+s.key+")")}return o.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+o.join(", ")+" — VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),o}function yc(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function xc(e){const t=$c(),o=e&&Array.isArray(e.bundles)?e.bundles:[],s=[];for(const n of o){const i=n&&n.bundle;if(!i||t.has(i)||_c.has(i)||n.stage==="production")continue;const a=Array.isArray(n.profiles)?n.profiles:[];if(!a.length)continue;const r=a.find(d=>d.isMap)||a.find(d=>d.profile===i)||a[0],l=r.element||Array.isArray(n.elements)&&n.elements[0]||i,u=n.scriptUrl||r.scriptUrl||"";u&&s.push({id:i,label:r.title||yc(i),sub:(r.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"🧪",tag:l,bundle:i,profile:r.profile||i,scriptUrl:u,heavy:Po.has(l)||Po.has(i),scroll:ko.has(l)||ko.has(i),discovered:!0})}return s.sort((n,i)=>{const a=Li[n.id]||999,r=Li[i.id]||999;return a!==r?a-r:n.label.localeCompare(i.label)}),s}function wc(e,t){const o=e&&Array.isArray(e.bundles)?e.bundles:[],s=Object.fromEntries(o.map(i=>[i.bundle,i])),n={};for(const i of t){const a=s[i.bundle];if(!a)continue;const r=Array.isArray(a.profiles)?a.profiles:[],l=r.find(P=>P.profile===i.profile)||r[0],u=l&&l.element||Array.isArray(a.elements)&&a.elements[0]||i.bundle,d=a.scriptUrl||l&&l.scriptUrl||"";if(!d)continue;const g=l&&Array.isArray(l.instances)?l.instances:[],x=!!(i.instance&&g.some(P=>(P&&(P.id||P.instance))===i.instance));n[i.id]={tag:u,scriptUrl:d,profile:l&&l.profile||i.profile,instance:x?i.instance:"",heavy:Po.has(u)||Po.has(i.bundle),scroll:ko.has(u)||ko.has(i.bundle)}}return n}const Ht={};function Pc(e,t){return Ht[e]||(Ht[e]=new Promise((o,s)=>{const n=document.createElement("script");n.src=e,(/^\/plugin-designs\//.test(e)||/\/index\.js(\?|$)/.test(e))&&(n.type="module"),n.onload=()=>o(),n.onerror=()=>{delete Ht[e],s(new Error("failed to load "+e))},document.head.appendChild(n)})),Ht[e]}function kc(e,t){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():Promise.race([customElements.whenDefined(e),new Promise((o,s)=>setTimeout(()=>{customElements.get(e)||s(new Error("<"+e+"> never registered (bundle loaded but defined no element)"))},15e3))])}const Lc=ss({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:dc},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"DX-Maps"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:kt("dmsTreeBase","")}},data(){return{activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,manifestError:"",manifestBase:"",runtime:{},locale:gc(),hostLang:ki(),localeOpen:!1,switcherLangs:uc,tabs:Ps.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},navGroups(){const e=Object.fromEntries(this.tabs.map(o=>[o.id,o])),t=new Set;return ws.map(o=>{let s=Si((o.tabs||[]).filter(n=>e[n.id]).map(n=>{const i=e[n.id],a=this.isBigPictureDisabled(i.id);return{key:i.id,label:this.tabLabel(i),sub:this.tabSub(i),icon:n.icon,badge:a?this.tr("desktopOnly"):n.badge,disabled:a}}),t);return o.key==="experimental"&&(s=s.concat(Si(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:this.tabLabel(n),sub:this.tabSub(n),icon:"flask",badge:this.tr("lab")})),t))),{key:o.key,label:o.i18n?this.tr(o.i18n):o.label,icon:o.icon,folder:!!o.folder,open:o.open,rows:s}}).filter(o=>o.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return fc(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}},effectiveLocale(){const e=(this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim(),t=this.showLocaleSwitcher?this.locale:"";return(e||t||this.hostLang||"en").split("-")[0].toLowerCase()},uiLocale(){return xs.includes(this.effectiveLocale)?this.effectiveLocale:"en"},uiDir(){return this.uiLocale==="ar"?"rtl":"ltr"},layoutLabels(){const e={};for(const t of["toggleList","openViews","expandList","collapseList","collapse"])e[t]=this.tr(t);return e},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.watchHostLang(),this.select(this.initialIndex()),this.loadManifest()},beforeUnmount(){this._langObs&&(this._langObs.disconnect(),this._langObs=null),!(!this._mql||!this._onMedia)&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{effectiveLocale(e){const t=this.tabs[this.activeIndex];if(!(!t||!t.mounted))try{const o=this._slots&&this._slots[this.activeIndex],s=o&&o.firstElementChild;s&&s.setAttribute&&s.setAttribute("profile-config",JSON.stringify(this.childConfig(t)))}catch{}},tab(e){e&&this.onSelect(e)}},methods:{setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},tr(e,t){return wo(this.uiLocale,e,t)},t(e,t){return wo(this.uiLocale,e,t)},tabLabel(e){return!e.discovered||bc("tab."+e.id)?wo(this.uiLocale,"tab."+e.id):e.label},tabSub(e){return e.discovered?this.uiLocale==="en"?e.sub:this.tr("experimentalSub"):wo(this.uiLocale,"sub."+e.id)},watchHostLang(){typeof MutationObserver>"u"||typeof document>"u"||(this._langObs=new MutationObserver(()=>{this.hostLang=ki()}),this._langObs.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isBigPictureDisabled(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},isBigPictureDisabled(e){return e==="dashboard-plus-grid"&&this.narrow},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const o of t.rows){const s=this.tabs.findIndex(n=>n.id===o.key);if(!(s<0)&&(e<0&&(e=s),!o.disabled))return s}return e>=0?e:0},loadManifest(){const e=this.resolve("manifest.json"),t=u=>{try{return new URL(u,location.href).href.replace(/[^/]*$/,"")}catch{return""}},o={url:e,root:t(e)},s={url:this.resolve("doxa-maps-spa/manifest.json"),root:o.root};let n=!1;try{n=new URL(e,location.href).origin!==location.origin}catch{}const i=n?[s,o]:[o,s],a="/public/dx-maps/manifest.json";i.some(u=>u.url===a)||i.push({url:a,root:t(a)});const r=[],l=u=>{if(u>=i.length){this.manifestError="manifest.json not found (tried "+r.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" — every tab except Big Picture is composed from it, so their panes cannot mount.");return}const{url:d,root:g}=i[u];return r.push(d),fetch(d,{credentials:"same-origin"}).then(x=>{if(!x||!x.ok)throw new Error(d+" → HTTP "+(x?x.status:"?"));return x.json()}).then(x=>{if(!x)throw new Error(d+" → empty");this.manifestError="",this.manifestBase=g||"",this.applyManifest(x)}).catch(()=>l(u+1))};try{l(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.applyPageGlobals();const t=wc(e,Ps),o=this.activeKey,s=[];for(const l of this.tabs){if(l.discovered){s.push(l);continue}const u=t[l.id];u&&(Object.assign(l,u,{resolved:!0}),s.push(l))}const n=new Set(s.map(l=>l.id));for(const l of xc(e))n.has(l.id)||s.push({...l,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=s;const i=this.requestedTab(),a=i?this.tabs.findIndex(l=>l.id===i):-1,r=this.tabs.findIndex(l=>l.id===o);a>=0&&!this.isBigPictureDisabled(i)&&!this._honouredTab?this.select(a):this.select(r>=0?r:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(o=>o.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isBigPictureDisabled(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,hc(e)},onSelect(e){if(this.isBigPictureDisabled(e)){this.disabledNotice=this.tr("desktopNotice"),clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(o=>o.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const o=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+o:this.base?this.base.replace(/\/+$/,"")+"/"+o:"../"+o},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const s=this.tabs[t];s&&s.heavy&&s.mounted&&this.releaseTab(t,s)}const o=this.tabs[e];o&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:o.id,label:o.label})),o.scriptUrl&&(o.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const o=this._slots&&this._slots[e];o&&(o.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const o=this.tk||this.cfg.tk||this.runtime.token;return o&&(t.tk=o),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const o=this.resolve(t.scriptUrl);Pc(o).then(()=>kc(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const s=this._slots&&this._slots[e];if(!s){t.state="error",t.error="no slot";return}s.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;",s.appendChild(n),t.state="ready"}catch(s){t.state="error",t.error="mount failed: "+(s&&s.message||String(s))}}).catch(s=>{t.state="error",t.error=s&&s.message||String(s)})}}}),Sc={class:"dms-locale"},Cc=["aria-expanded"],Ec={class:"dms-flag"},Tc={class:"dms-locale-name"},Nc={key:0,class:"dms-locale-menu",role:"listbox"},Rc=["aria-selected"],Ac=["onClick"],Oc={class:"dms-flag"},Ic={class:"dms-locale-name"},Fc={class:"dms-locale-en"},Mc=["hidden"],Dc={key:0,class:"dms-hint"},Wc={key:1,class:"dms-hint err"},Hc={key:2,class:"dms-hint err"},jc={key:0,class:"dms-notice",role:"status"};function Gc(e,t,o,s,n,i){const a=Ga("VerticalTabsLayout");return A(),bo(a,{dir:e.uiDir,lang:e.uiLocale,labels:e.layoutLabels,title:e.heading,"nav-label":e.t("navLabel"),header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},za({brand:Pt(()=>[t[1]||(t[1]=E("span",{class:"dms-logo","aria-hidden":"true"},[E("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[E("circle",{cx:"12",cy:"12",r:"9"}),E("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),E("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:Pt(()=>[gt(I(e.t("meta",{n:e.tabs.length})),1)]),default:Pt(()=>[(A(!0),O(ee,null,dt(e.tabs,(r,l)=>Qo((A(),O("section",{key:r.id,class:"dms-pane",hidden:l!==e.activeIndex},[!r.heavy||l===e.activeIndex?(A(),O(ee,{key:0},[E("div",{class:"dms-slot",ref_for:!0,ref:u=>e.setSlot(l,u)},null,512),r.state==="loading"?(A(),O("div",Dc,I(e.tr("loading",{label:e.tabLabel(r)})),1)):r.state==="error"?(A(),O("div",Wc,[gt(I(e.tr("loadFailed",{label:e.tabLabel(r)})),1),t[3]||(t[3]=E("br",null,null,-1)),E("small",null,I(r.error),1)])):r.state==="idle"&&!r.scriptUrl&&e.manifestError?(A(),O("div",Hc,[gt(I(e.tr("loadFailed",{label:e.tabLabel(r)})),1),t[4]||(t[4]=E("br",null,null,-1)),E("small",null,I(e.manifestError),1),t[5]||(t[5]=E("br",null,null,-1)),E("small",null,I(e.tr("manifestHint")),1)])):de("",!0)],64)):de("",!0)],8,Mc)),[[ms,l===e.activeIndex]])),128)),e.disabledNotice?(A(),O("div",jc,I(e.disabledNotice),1)):de("",!0)]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:Pt(()=>[E("div",Sc,[E("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=r=>e.localeOpen=!e.localeOpen)},[E("span",Ec,I(e.activeLang.flag),1),E("span",Tc,I(e.activeLang.nativeName),1),t[2]||(t[2]=E("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,Cc),e.localeOpen?(A(),O("ul",Nc,[(A(!0),O(ee,null,dt(e.switcherLangs,r=>(A(),O("li",{key:r.code,role:"option","aria-selected":String(r.code===e.locale)},[E("button",{type:"button",class:Be(["dms-locale-opt",{active:r.code===e.locale}]),onClick:l=>e.setLocale(r.code)},[E("span",Oc,I(r.flag),1),E("span",Ic,I(r.nativeName),1),E("span",Fc,I(r.name),1)],10,Ac)],8,Rc))),128))])):de("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","title","nav-label","header","groups","active","onUpdate:active"])}const Uc=xi(Lc,[["render",Gc],["styles",[mc]]]);function Vc(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const zc=Vc(),Bc=tl(Uc,{configureApp(e){e.provide("dmsTreeBase",zc)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",Bc)})();