diff --git a/docs/assets/index-B27UlIE_.css b/docs/assets/index-B27UlIE_.css new file mode 100644 index 0000000..331f0c3 --- /dev/null +++ b/docs/assets/index-B27UlIE_.css @@ -0,0 +1 @@ +:root{--ink:#333;--muted:#8a857a;--rule:#eceadf;--canvas:#faf8f2}*{box-sizing:border-box}body{background:var(--canvas);color:var(--ink);margin:0;font:16px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}main{max-width:1200px;margin:auto;padding:1.5rem 1rem 3rem}h1{margin:0 0 .35rem;font-size:1.65rem;line-height:1.2}.lede{color:#59544b;max-width:75ch}.controls{flex-wrap:wrap;gap:.35rem;margin:1rem 0;display:flex}.chip{color:var(--ink);cursor:pointer;background:#fff;border:1px solid #d9d5ca;border-radius:999px;align-items:center;gap:.3rem;padding:.22rem .48rem;font:600 .78rem/1 inherit;display:flex}.chip img{width:13px;height:13px}.chip:hover{border-color:#8a857a}.chip:focus-visible,.model-mark:focus-visible{outline-offset:2px;outline:2px solid #2563eb}.chip[aria-pressed=false]{color:#8a857a;background:#f6f4ef;text-decoration:line-through}.chip[aria-pressed=false] img{opacity:.3}.release-axis-selector{color:#5b554b;align-items:baseline;gap:.65rem;margin:.15rem 0 .65rem;font-size:.82rem;display:flex}.release-axis-selector select{font:inherit}.release-axis-selector span{color:#756f64}.chart-shell{position:relative}.chart-shell svg{background:var(--canvas);border:1px solid #ded9cc;width:100%;height:auto;display:block}.canvas{fill:var(--canvas)}.grid line{stroke:var(--rule);stroke-width:.7px}.median{stroke:#c9c4b4;stroke-width:1.2px}.zone{fill:none;stroke-width:2px;opacity:.9}.country{stroke:#fff;stroke-width:.7px;opacity:.88}.country-label,.model-label,.zone-label,.poles text{paint-order:stroke;stroke:var(--canvas);stroke-width:4px;stroke-linejoin:round}.country-label{fill:#222;font-size:11px}.model-ring{fill:#fff;stroke-width:1.3px}.model-mark{cursor:default}.model-mark:focus{outline:none}.model-label{fill:#222;font-size:13px;font-weight:700}.leader{stroke:#aaa398;stroke-width:1px}.zone-label{font-size:15px;font-style:italic;font-weight:700}.poles line{stroke:#999;stroke-width:1.8px}.arrow{fill:#999}.poles text{fill:#555;font-size:18px;font-weight:700}.map-title{fill:#333;font-size:14px;font-weight:700}.map-note{fill:var(--muted);font-size:10px}.release-panels{grid-template-columns:1fr;gap:1rem;margin-top:1.5rem;display:grid}.release-panel{border-top:1px solid #ded9cc;padding-top:1rem}.release-panel h2{margin:0;font-size:1rem}.release-panel p{color:#756f64;margin:.2rem 0 .5rem;font-size:.82rem}.scatter-shell{position:relative}.scatter-shell svg{background:var(--canvas);border:1px solid #ded9cc;width:100%;height:auto;display:block}.scatter-grid line{stroke:var(--rule);stroke-width:.7px}.scatter-axis{stroke:#aaa398;stroke-width:1px}.scatter-arrow{fill:#aaa398}.scatter-y-label{fill:#555;font-size:12px;font-weight:700}.scatter-tick{fill:#756f64;font-size:11px}.release-fit line{stroke:#56514a;stroke-width:1.4px;stroke-dasharray:4 3}.release-fit text,.release-fit-unavailable{fill:#56514a;font-size:11px;font-weight:700}.release-mark{cursor:default}.release-mark:focus{outline:none}.tooltip{z-index:2;pointer-events:none;background:#fffffff7;border:1px solid #ddd7ca;border-radius:5px;max-width:275px;padding:.45rem .6rem;font-size:.82rem;line-height:1.35;position:absolute;transform:translate(14px,14px);box-shadow:0 2px 8px #0002}.tooltip strong,.tooltip span{display:block}.tooltip span{color:#5b554b}@media (width<=700px){main{padding:.9rem .5rem 2rem}.release-axis-selector{flex-direction:column;align-items:flex-start;gap:.15rem}.chip{font-size:.7rem}.poles text{font-size:14px}.country-label,.model-label{font-size:10px}.tooltip{max-width:230px;font-size:.75rem}} diff --git a/docs/assets/index-CyPTsa3p.css b/docs/assets/index-CyPTsa3p.css deleted file mode 100644 index fd4eecc..0000000 --- a/docs/assets/index-CyPTsa3p.css +++ /dev/null @@ -1 +0,0 @@ -:root{--ink:#333;--muted:#8a857a;--rule:#eceadf;--canvas:#faf8f2}*{box-sizing:border-box}body{background:var(--canvas);color:var(--ink);margin:0;font:16px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}main{max-width:1200px;margin:auto;padding:1.5rem 1rem 3rem}h1{margin:0 0 .35rem;font-size:1.65rem;line-height:1.2}.lede{color:#59544b;max-width:75ch}.controls{flex-wrap:wrap;gap:.35rem;margin:1rem 0;display:flex}.chip{color:var(--ink);cursor:pointer;background:#fff;border:1px solid #d9d5ca;border-radius:999px;align-items:center;gap:.3rem;padding:.22rem .48rem;font:600 .78rem/1 inherit;display:flex}.chip img{width:13px;height:13px}.chip:hover{border-color:#8a857a}.chip:focus-visible,.model-mark:focus-visible{outline-offset:2px;outline:2px solid #2563eb}.chip[aria-pressed=false]{color:#8a857a;background:#f6f4ef;text-decoration:line-through}.chip[aria-pressed=false] img{opacity:.3}.chart-shell{position:relative}.chart-shell svg{background:var(--canvas);border:1px solid #ded9cc;width:100%;height:auto;display:block}.canvas{fill:var(--canvas)}.grid line{stroke:var(--rule);stroke-width:.7px}.median{stroke:#c9c4b4;stroke-width:1.2px}.zone{fill:none;stroke-width:2px;opacity:.9}.country{stroke:#fff;stroke-width:.7px;opacity:.88}.country-label,.model-label,.zone-label,.poles text{paint-order:stroke;stroke:var(--canvas);stroke-width:4px;stroke-linejoin:round}.country-label{fill:#222;font-size:11px}.model-ring{fill:#fff;stroke-width:1.3px}.model-mark{cursor:default}.model-mark:focus{outline:none}.model-label{fill:#222;font-size:13px;font-weight:700}.leader{stroke:#aaa398;stroke-width:1px}.zone-label{font-size:15px;font-style:italic;font-weight:700}.poles line{stroke:#999;stroke-width:1.8px}.arrow{fill:#999}.poles text{fill:#555;font-size:18px;font-weight:700}.map-title{fill:#333;font-size:14px;font-weight:700}.map-note{fill:var(--muted);font-size:10px}.release-panels{grid-template-columns:1fr;gap:1rem;margin-top:1.5rem;display:grid}.release-panel{border-top:1px solid #ded9cc;padding-top:1rem}.release-panel h2{margin:0;font-size:1rem}.release-panel p{color:#756f64;margin:.2rem 0 .5rem;font-size:.82rem}.scatter-shell{position:relative}.scatter-shell svg{background:var(--canvas);border:1px solid #ded9cc;width:100%;height:auto;display:block}.scatter-grid line{stroke:var(--rule);stroke-width:.7px}.scatter-axis{stroke:#aaa398;stroke-width:1px}.scatter-arrow{fill:#aaa398}.scatter-y-label{fill:#555;font-size:12px;font-weight:700}.scatter-tick{fill:#756f64;font-size:11px}.release-fit line{stroke:#56514a;stroke-width:1.4px;stroke-dasharray:4 3}.release-fit text,.release-fit-unavailable{fill:#56514a;font-size:11px;font-weight:700}.release-mark{cursor:default}.release-mark:focus{outline:none}.tooltip{z-index:2;pointer-events:none;background:#fffffff7;border:1px solid #ddd7ca;border-radius:5px;max-width:275px;padding:.45rem .6rem;font-size:.82rem;line-height:1.35;position:absolute;transform:translate(14px,14px);box-shadow:0 2px 8px #0002}.tooltip strong,.tooltip span{display:block}.tooltip span{color:#5b554b}@media (width<=700px){main{padding:.9rem .5rem 2rem}.chip{font-size:.7rem}.poles text{font-size:14px}.country-label,.model-label{font-size:10px}.tooltip{max-width:230px;font-size:.75rem}} diff --git a/docs/assets/index-Co4wqFEb.js b/docs/assets/index-xQcEVNVX.js similarity index 94% rename from docs/assets/index-Co4wqFEb.js rename to docs/assets/index-xQcEVNVX.js index 8f24464..f64a961 100644 --- a/docs/assets/index-Co4wqFEb.js +++ b/docs/assets/index-xQcEVNVX.js @@ -6,6 +6,6 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r= `+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ue=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?He(n):``}function Ge(e,t){switch(e.tag){case 26:case 27:case 5:return He(e.type);case 16:return He(`Lazy`);case 13:return e.child!==t&&t!==null?He(`Suspense Fallback`):He(`Suspense`);case 19:return He(`SuspenseList`);case 0:case 15:return We(e.type,!1);case 11:return We(e.type.render,!1);case 1:return We(e.type,!0);case 31:return He(`Activity`);case 30:return He(`ViewTransition`);default:return``}}function Ke(e){try{var t=``,n=null;do t+=Ge(e,n),n=e,e=e.return;while(e);return t}catch(e){return` Error generating stack: `+e.message+` `+e.stack}}var qe=Object.prototype.hasOwnProperty,Je=t.unstable_scheduleCallback,Ye=t.unstable_cancelCallback,Xe=t.unstable_shouldYield,Ze=t.unstable_requestPaint,Qe=t.unstable_now,$e=t.unstable_getCurrentPriorityLevel,et=t.unstable_ImmediatePriority,tt=t.unstable_UserBlockingPriority,nt=t.unstable_NormalPriority,rt=t.unstable_LowPriority,it=t.unstable_IdlePriority,at=t.log,ot=t.unstable_setDisableYieldValue,st=null,ct=null;function lt(e){if(typeof at==`function`&&ot(e),ct&&typeof ct.setStrictMode==`function`)try{ct.setStrictMode(st,e)}catch{}}var ut=Math.clz32?Math.clz32:pt,dt=Math.log,ft=Math.LN2;function pt(e){return e>>>=0,e===0?32:31-(dt(e)/ft|0)|0}var mt=256,ht=262144,gt=4194304;function _t(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function vt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=_t(n))):i=_t(o):i=_t(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=_t(n))):i=_t(o)):i=_t(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function yt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function bt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function wt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Tt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),zn=!1;if(Rn)try{var Bn={};Object.defineProperty(Bn,"passive",{get:function(){zn=!0}}),window.addEventListener(`test`,Bn,Bn),window.removeEventListener(`test`,Bn,Bn)}catch{zn=!1}var Vn=null,Hn=null,Un=null;function Wn(){if(Un)return Un;var e,t=Hn,n=t.length,r,i=`value`in Vn?Vn.value:Vn.textContent,a=i.length;for(e=0;e=Cr),Er=` `,Dr=!1;function Or(e,t){switch(e){case`keyup`:return xr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function kr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Ar=!1;function jr(e,t){switch(e){case`compositionend`:return kr(t);case`keypress`:return t.which===32?(Dr=!0,Er):null;case`textInput`:return e=t.data,e===Er&&Dr?null:e;default:return null}}function Mr(e,t){if(Ar)return e===`compositionend`||!Sr&&Or(e,t)?(e=Wn(),Un=Hn=Vn=null,Ar=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=ti(n)}}function ri(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ri(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ii(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=ei(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=ei(e.document)}return t}function ai(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var oi=Rn&&`documentMode`in document&&11>=document.documentMode,si=null,ci=null,li=null,ui=!1;function di(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ui||si==null||si!==ei(r)||(r=si,`selectionStart`in r&&ai(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),li&&$r(li,r)||(li=r,r=Jf(ci,`onSelect`),0>=o,i-=o,sa=1<<32-ut(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),A&&la(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),A&&la(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return A&&la(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),A&&la(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===C&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case oe:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===C){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),vo(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ge&&uo(l)===r.type){n(e,r.sibling),c=a(r,o.props),vo(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===C?(c=Ji(o.props.children,e.mode,c,o.key),vo(c,o),c.return=e,e=c):(c=qi(o.type,o.key,o.props,null,e.mode,c),vo(c,o),c.return=e,e=c)}return s(e);case se:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Zi(o,e.mode,c),c.return=e,e=c}return s(e);case ge:return o=uo(o),_(e,r,o,c)}if(Ee(o))return h(e,r,o,c);if(Ce(o)){if(l=Ce(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,_o(o),c);if(o.$$typeof===de)return _(e,r,Ia(e,o),c);yo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=Yi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{go=0;var i=_(e,t,n,r);return ho=null,i}catch(t){if(t===io||t===oo)throw t;var a=Ui(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var xo=bo(!0),So=bo(!1),Co=!1;function wo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function To(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Eo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Do(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,W&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Bi(e),zi(e,null,n),t}return Ii(e,r,t,n),Bi(e)}function Oo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Dt(e,n)}}function ko(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ao=!1;function jo(){if(Ao){var e=Ya;if(e!==null)throw e}}function Mo(e,t,n,r){Ao=!1;var i=e.updateQueue;Co=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(q&f)===f:(r&f)===f){f!==0&&f===Ja&&(Ao=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=S({},d,f);break a;case 2:Co=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),sd|=o,e.lanes=o,e.memoizedState=d}}function No(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Po(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=w.T,s={};s.types=o===null?null:o.types,w.T=s,_c(e,!1,t,n);try{var c=i(),l=w.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?gc(e,t,Qa(c,r),jd(e)):gc(e,t,r,jd(e))}catch(n){gc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{T.p=a,o!==null&&s.types!==null&&(o.types=s.types),w.T=o}}function oc(){}function sc(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=cc(e).queue;ac(e,a,t,De,n===null?oc:function(){return lc(e),n(r)})}function cc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:De,baseState:De,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:vs,lastRenderedState:De},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:vs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function lc(e){var t=cc(e);t.next===null&&(t=e.alternate.memoizedState),gc(e,t.next.queue,{},jd())}function uc(){return Fa(sh)}function dc(){return I().memoizedState}function fc(){return I().memoizedState}function pc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=Eo(n);var r=Do(t,e,n);r!==null&&(Pd(r,t,n),Oo(r,t,n)),t={cache:Va()},e.payload=t;return}t=t.return}}function mc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},vc(e)?yc(t,n):(n=Li(e,t,n,r),n!==null&&(Pd(n,e,r),bc(n,t,r)))}function hc(e,t,n){gc(e,t,n,jd())}function gc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(vc(e))yc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Qr(s,o))return Ii(e,t,i,0),G===null&&Fi(),!1}catch{}if(n=Li(e,t,i,r),n!==null)return Pd(n,e,r),bc(n,t,r),!0}return!1}function _c(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},vc(e)){if(t)throw Error(i(479))}else t=Li(e,n,r,2),t!==null&&Pd(t,e,2)}function vc(e){var t=e.alternate;return e===M||t!==null&&t===M}function yc(e,t){$o=Qo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function bc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Dt(e,n)}}var xc={readContext:Fa,use:gs,useCallback:F,useContext:F,useEffect:F,useImperativeHandle:F,useLayoutEffect:F,useInsertionEffect:F,useMemo:F,useReducer:F,useRef:F,useState:F,useDebugValue:F,useDeferredValue:F,useTransition:F,useSyncExternalStore:F,useId:F,useHostTransitionStatus:F,useFormState:F,useActionState:F,useOptimistic:F,useMemoCache:F,useCacheRefresh:F,useEffectEvent:F},Sc={readContext:Fa,use:gs,useCallback:function(e,t){return ps().memoizedState=[e,t===void 0?null:t],e},useContext:Fa,useEffect:Ks,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Ws(4194308,4,Qs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ws(4194308,4,e,t)},useInsertionEffect:function(e,t){Ws(4,2,e,t)},useMemo:function(e,t){var n=ps();t=t===void 0?null:t;var r=e();if(es){lt(!0);try{e()}finally{lt(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=ps();if(n!==void 0){var i=n(t);if(es){lt(!0);try{n(t)}finally{lt(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=mc.bind(null,M,e),[r.memoizedState,e]},useRef:function(e){var t=ps();return e={current:e},t.memoizedState=e},useState:function(e){e=Os(e);var t=e.queue,n=hc.bind(null,M,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:ec,useDeferredValue:function(e,t){return rc(ps(),e,t)},useTransition:function(){var e=Os(!1);return e=ac.bind(null,M,e.queue,!0,!1),ps().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=M,a=ps();if(A){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),G===null)throw Error(i(349));q&127||Cs(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Ks(Ts.bind(null,r,o,e),[e]),r.flags|=2048,Hs(9,{destroy:void 0},ws.bind(null,r,o,n,t),null),n},useId:function(){var e=ps(),t=G.identifierPrefix;if(A){var n=ca,r=sa;n=(r&~(1<<32-ut(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=ts++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[Pt]=t,o[Ft]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(np(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&vl(t)}}return z(t),t.subtreeFlags&=-33554433,yl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&vl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=Pe.current,xa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ma,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Pt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||va(t,!0)}else e=lp(e).createTextNode(r),e[Pt]=t,t.stateNode=e}return z(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=xa(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[Pt]=t}else Sa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;z(t),e=!1}else n=Ca(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Ko(t),t):(Ko(t),null);if(t.flags&128)throw Error(i(558))}return z(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=xa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[Pt]=t}else Sa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;z(t),a=!1}else a=Ca(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Ko(t),t):(Ko(t),null)}return Ko(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),xl(t,t.updateQueue),z(t),null);case 4:return Le(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,z(t),null;case 10:return ka(t.type),z(t),null;case 19:if(Yo(t),r=t.memoizedState,r===null)return z(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)Sl(r,!1);else{if(Y!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Xo(e),o!==null){for(t.flags|=128,Sl(r,!1),e=o.updateQueue,t.updateQueue=e,xl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ki(n,e),n=n.sibling;return Jo(t,qo.current&1|2),A&&la(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Qe()>_d&&(t.flags|=128,a=!0,Sl(r,!1),t.lanes=4194304)}}else{if(!a){if(e=Xo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,xl(t,e),Sl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!A)return z(t),null}else 2*Qe()-r.renderingStartTime>_d&&n!==536870912&&(t.flags|=128,a=!0,Sl(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Qe(),e.sibling=null,o=qo.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||A?Jo(t,o):(n=o,E(Bo,t),E(qo,n),Vo===null&&(Vo=t)),A&&la(t,r.treeForkCount),e}return z(t),null;case 22:case 23:return Ko(t),zo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(z(t),t.subtreeFlags&6&&(t.flags|=8192)):z(t),n=t.updateQueue,n!==null&&xl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&je(eo),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ka(j),z(t),null;case 25:return null;case 30:return t.flags|=33554432,z(t),null}throw Error(i(156,t.tag))}function wl(e,t){switch(fa(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ka(j),Le(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ze(t),null;case 31:if(t.memoizedState!==null){if(Ko(t),t.alternate===null)throw Error(i(340));Sa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Ko(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Sa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Yo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Le(),null;case 10:return ka(t.type),null;case 22:case 23:return Ko(t),zo(),e!==null&&je(eo),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ka(j),null;case 25:return null;default:return null}}function Tl(e,t){switch(fa(t),t.tag){case 3:ka(j),Le();break;case 26:case 27:case 5:ze(t);break;case 4:Le();break;case 31:t.memoizedState!==null&&Ko(t);break;case 13:Ko(t);break;case 19:Yo(t);break;case 10:ka(t.type);break;case 22:case 23:Ko(t),zo(),e!==null&&je(eo);break;case 24:ka(j)}}function El(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Dl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Ol(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Po(t,n)}catch(t){Z(e,e.return,t)}}}function kl(e,t,n){n.props=kc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Al(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=Oi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);h(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function jl(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Ml(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[Pt]=e,D(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,a).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=ni(s,h),v=ni(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,w.T=null,n=wd,wd=null;var o=bd,s=Sd;if(X=0,xd=bd=null,Sd=0,W&6)throw Error(i(331));var c=W;if(W|=4,Zu(o.current),Uu(o,o.current,s,n),W=c,Df(0,!1),ct&&typeof ct.onPostCommitFiberRoot==`function`)try{ct.onPostCommitFiberRoot(st,o)}catch{}return!0}finally{T.p=a,w.T=r,uf(e,t)}}function pf(e,t,n){t=$i(n,t),t=Fc(e.stateNode,t,2),e=Do(e,t,2),e!==null&&(wt(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(yd===null||!yd.has(r))){e=$i(n,e),n=Ic(2),r=Do(t,n,2),r!==null&&(Lc(n,r,t,e),wt(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new td;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(ad=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,G===e&&(q&n)===n&&(Y===4||Y===3&&(q&62914560)===q&&300>Qe()-hd?W&2?ld|=n:Vd(e,0):ld|=n,dd===q&&(dd=0)),Ef(e)}function gf(e,t){t===0&&(t=St()),e=Ri(e,t),e!==null&&(wt(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return Je(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-ut(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=q,a=vt(r,r===G?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||yt(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=Qe(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}X!==0&&X!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=mn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),D(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+mn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+mn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+mn(n.imageSizes)+`"]`)):i+=`[href="`+mn(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=S({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Ht]=!0,o.onload=o.onerror=function(){Jt(o)}),D(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+mn(r)+`"][href="`+mn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=S({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),D(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=qt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=S({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);D(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=qt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=S({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),D(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=qt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=S({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),D(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var a=(a=Pe.current)?bm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=qt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=qt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=qt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Pm(e){return`href="`+mn(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return S({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Ht]){r.loading=1;return}}else t=e.createElement(`link`),t[Ht]=!0,t.onload=t.onerror=Jt.bind(null,t),np(t,`link`,n),D(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+mn(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+mn(n.href)+`"]`);if(r)return t.instance=r,D(r),r;var a=S({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),D(r),np(r,`style`,a),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Pm(n.href);var o=e.querySelector(Fm(a));if(o)return t.state.loading|=4,t.instance=o,D(o),o;r=Im(n),(a=vm.get(a))&&Hm(r,a),o=(e.ownerDocument||e).createElement(`link`),D(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(a=e.querySelector(zm(o)))?(t.instance=a,D(a),a):(r=n,(a=vm.get(o))&&(r=S({},n),Um(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),D(a),np(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,D(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),D(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u(),1),v=g(),y={width:1200,height:900,pad:{left:76,right:46,top:55,bottom:82}},b=[[0,-1],[0,1],[-1,0],[1,0],[-1,-1],[1,-1],[-1,1],[1,1]],ee=[22,34,48,64,82,104,130,160,196],te=(e,t,n,r)=>({cx:e,cy:t,width:n,height:r}),ne=(e,t)=>Math.abs(e.cx-t.cx)*2e.cx-e.width/2>=t.left&&e.cx+e.width/2<=t.right&&e.cy-e.height/2>=t.top&&e.cy+e.height/2<=t.bottom;function x(e){let t=[...e.countries,...e.models],n=Math.min(...t.map(e=>e.x)),r=Math.max(...t.map(e=>e.x)),i=Math.min(...t.map(e=>e.y)),a=Math.max(...t.map(e=>e.y)),o=(r-n)*.17,s=(a-i)*.17,c={x0:n-o,x1:r+o,y0:i-s,y1:a+s*1.22},l={left:y.pad.left,right:y.width-y.pad.right,top:y.pad.top,bottom:y.height-y.pad.bottom};return{x:e=>l.left+(e-c.x0)/(c.x1-c.x0)*(l.right-l.left),y:e=>l.bottom-(e-c.y0)/(c.y1-c.y0)*(l.bottom-l.top),bounds:l,limits:c}}function ie(e,t){let n=t===`zone`?15:t===`model`?13:11;return{width:e.length*n*.59+10,height:n+7}}function S(e,t){let{x:n,y:r,bounds:i}=t,a=[...e.countries.map(e=>te(n(e.x),r(e.y),10,10)),...e.models.map(e=>te(n(e.x),r(e.y),22,22))],o=[...e.models.filter(e=>e.label).map(e=>({id:`model:${e.name}`,point:e,text:e.label,kind:`model`})),...e.countries.filter(e=>e.label).map(e=>({id:`country:${e.name}`,point:e,text:e.name,kind:`country`})),...e.zone_hulls.map(e=>({id:`zone:${e.name}`,point:{x:e.label_anchor[0],y:e.label_anchor[1]},text:e.name,kind:`zone`}))],s={};for(let e of o){let t={x:n(e.point.x),y:r(e.point.y)},o=ie(e.text,e.kind),c=null;for(let e of ee){for(let[n,r]of b){let s=te(t.x+n*(e+o.width/3),t.y+r*e,o.width,o.height);if(re(s,i)&&!a.some(e=>ne(s,e))){c=s;break}}if(c)break}if(!c)throw Error(`no collision-free label location for ${e.id}`);s[e.id]={...c,anchor:t,kind:e.kind,text:e.text},a.push(c)}return s}function ae(e,t){let n=e.slice(0,-1).map(([e,n])=>({x:t.x(e),y:t.y(n)}));if(n.length<3)throw Error(`a closed hull needs three points`);let r=e=>n[(e+n.length)%n.length],i=(e,t)=>Math.hypot(e.x-t.x,e.y-t.y),a=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}),o=e=>{let t=r(e-1),n=r(e),o=r(e+1),s=Math.min(.24,14/i(t,n),14/i(n,o));return{before:a(n,t,s),current:n,after:a(n,o,s)}},s=o(0),c=`M ${s.after.x} ${s.after.y}`;for(let e=1;e<=n.length;e+=1){let t=o(e%n.length);c+=` L ${t.before.x} ${t.before.y} Q ${t.current.x} ${t.current.y} ${t.after.x} ${t.after.y}`}return`${c} Z`}function oe(e){let t=x(e),n=S(e,t),r=Object.entries(n);for(let[e,n]of r)if(!re(n,t.bounds))throw Error(`label out of bounds: ${e}`);for(let e=0;e{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),C=o(((e,t)=>{t.exports=se()}))(),ce=`wvs/`;function le(e,t){return Object.keys(e).filter(e=>!t.has(e))}function ue({active:e,geometry:t,data:n,id:r=`model-tooltip`}){if(!e)return null;let{provenance:i}=e,a=e.tooltipLeft??`${Math.min(86,t.x(e.x)/y.width*100)}%`,o=e.tooltipTop??`${Math.min(82,t.y(e.y)/y.height*100)}%`,s=i.items===null?`historical coordinate`:`${i.items} items x ${i.samples} samples`;return(0,C.jsxs)(`aside`,{id:r,className:`tooltip`,style:{left:a,top:o},role:`status`,children:[(0,C.jsx)(`strong`,{children:e.name}),(0,C.jsx)(`span`,{children:e.family}),(0,C.jsxs)(`span`,{children:[n.axis.x[0],` `,`->`,` `,n.axis.x[1],`: `,e.x.toFixed(3)]}),(0,C.jsxs)(`span`,{children:[n.axis.y[0],` `,`->`,` `,n.axis.y[1],`: `,e.y.toFixed(3)]}),(0,C.jsxs)(`span`,{children:[i.readout,`, `,s]}),(0,C.jsx)(`span`,{children:i.release_created?`release ${i.release_created}`:i.release_source})]})}function de({model:e,placement:t,geometry:n,setActive:r,clearActive:i,markerRef:a,logo:o}){let s=n.x(e.x),c=n.y(e.y),l=e.label?t[`model:${e.name}`]:null,u=l&&Math.hypot(l.cx-s,l.cy-c)>20;return(0,C.jsxs)(`g`,{ref:a,className:`model-mark`,"data-family":e.family,"data-model":e.name,"data-x":e.x,"data-y":e.y,tabIndex:`0`,role:`button`,"aria-label":`${e.name}, ${e.family}`,"aria-describedby":`model-tooltip`,onPointerEnter:()=>r(e),onPointerLeave:i,onFocus:()=>r(e),onBlur:i,children:[u&&(0,C.jsx)(`line`,{className:`leader`,x1:s,y1:c,x2:l.cx,y2:l.cy}),(0,C.jsx)(`circle`,{className:`model-ring`,cx:s,cy:c,r:`8`,stroke:e.color}),(0,C.jsx)(`image`,{href:`${ce}${o}`,x:s-5,y:c-5,width:`10`,height:`10`,preserveAspectRatio:`xMidYMid meet`,"aria-hidden":`true`,focusable:`false`}),l&&(0,C.jsx)(`text`,{className:`model-label`,x:l.cx,y:l.cy+4,textAnchor:`middle`,children:e.label})]})}function fe(e,t){let n=e.map(e=>Date.parse(e.provenance.release_created)),r=e.map(e=>e[t]);if(new Set(n).size<2)return null;let i=n.reduce((e,t)=>e+t,0)/n.length,a=r.reduce((e,t)=>e+t,0)/r.length,o=n.reduce((e,t,n)=>e+(t-i)*(r[n]-a),0)/n.reduce((e,t)=>e+(t-i)**2,0),s=a-o*i,c=r.reduce((e,t,r)=>e+(t-(s+o*n[r]))**2,0),l=r.reduce((e,t)=>e+(t-a)**2,0);return{slope:o,intercept:s,n:e.length,r2:l===0?null:1-c/l}}function pe({data:e,hidden:t,field:n,title:r}){let i=(0,_.useMemo)(()=>e.models.filter(e=>Number.isFinite(Date.parse(e.provenance.release_created??``))).toSorted((e,t)=>e.provenance.release_created.localeCompare(t.provenance.release_created)||e.name.localeCompare(t.name)),[e]),a=i.filter(e=>!t.has(e.family)),o=fe(a,n),[s,c]=(0,_.useState)(null),l=1200,u=i.map(e=>Date.parse(e.provenance.release_created)),d=i.map(e=>e[n]),f=Math.min(...u),p=Math.max(...u),m=Math.min(...d),h=Math.max(...d),g=e=>96+(e-f)/(p-f)*1069,v=e=>42+(h-e)/(h-m||1)*230,y=`release-${n}`,b=`${y}-tooltip`,ee=n===`y`?e.axis.y:e.axis.x,te=a.map(e=>Date.parse(e.provenance.release_created)),ne=o&&[Math.min(...te),Math.max(...te)].map(e=>[g(e),v(o.intercept+o.slope*e)]),re=(e,t)=>{let n=t.currentTarget.closest(`.scatter-shell`).getBoundingClientRect(),r=t.currentTarget.getBoundingClientRect();c({...e,tooltipLeft:`${Math.min(82,(r.left-n.left)/n.width*100)}%`,tooltipTop:`${Math.min(78,(r.top-n.top)/n.height*100)}%`})};return(0,C.jsxs)(`section`,{className:`release-panel`,"data-coordinate":n,"aria-labelledby":`${y}-heading`,children:[(0,C.jsx)(`h2`,{id:`${y}-heading`,children:r}),(0,C.jsxs)(`div`,{className:`scatter-shell`,children:[(0,C.jsxs)(`svg`,{viewBox:`0 0 ${l} 320`,role:`img`,"aria-labelledby":`${y}-svg-title ${y}-svg-desc`,"data-panel-model-count":a.length,"data-fit-n":o?.n??0,"data-fit-r2":o?.r2??``,children:[(0,C.jsx)(`title`,{id:`${y}-svg-title`,children:r}),(0,C.jsxs)(`desc`,{id:`${y}-svg-desc`,children:[`Scatter plot with release date on the horizontal axis and `,ee.join(` to `),` increasing upward on the vertical axis. `,a.length,` dated models are visible from `,le(Object.groupBy(e.models,e=>e.family),t).join(`, `)||`no families`,`. Each white-ring logo mark is a model. `,o?`The thin line is an ordinary least squares descriptive fit to the ${o.n} currently visible dated models${o.r2===null?`; R squared is unavailable because the y values are constant`:`; R squared is ${o.r2.toFixed(2)}`}.`:`The fit is hidden because fewer than two distinct release dates are visible.`,` Hover or keyboard focus a mark for model-specific details.`]}),(0,C.jsxs)(`defs`,{children:[(0,C.jsx)(`marker`,{id:`${y}-arrow`,markerWidth:`8`,markerHeight:`8`,refX:`6`,refY:`3`,orient:`auto`,children:(0,C.jsx)(`path`,{d:`M0,0 L0,6 L6,3 z`,className:`scatter-arrow`})}),(0,C.jsx)(`clipPath`,{id:`${y}-fit-clip`,children:(0,C.jsx)(`rect`,{x:96,y:42,width:1069,height:230})})]}),(0,C.jsx)(`rect`,{className:`canvas`,width:l,height:320}),(0,C.jsx)(`g`,{className:`scatter-grid`,children:Array.from({length:5},(e,t)=>(0,C.jsx)(`line`,{x1:96,x2:1165,y1:42+t*230/4,y2:42+t*230/4},t))}),(0,C.jsx)(`line`,{className:`scatter-axis`,x1:96,x2:1165,y1:272,y2:272}),(0,C.jsx)(`line`,{className:`scatter-axis`,x1:96,x2:96,y1:272,y2:42,markerEnd:`url(#${y}-arrow)`}),(0,C.jsxs)(`text`,{className:`scatter-y-label`,x:`17`,y:157,textAnchor:`middle`,transform:`rotate(-90 17 157)`,children:[ee.join(` -> `),` `,`↑`]}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:96,y:302,children:new Date(f).toISOString().slice(0,10)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:1165,y:302,textAnchor:`end`,children:new Date(p).toISOString().slice(0,10)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:88,y:46,textAnchor:`end`,children:h.toFixed(2)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:88,y:272,textAnchor:`end`,children:m.toFixed(2)}),ne&&(0,C.jsxs)(`g`,{className:`release-fit`,"data-fit-n":o.n,"data-fit-r2":o.r2??``,children:[(0,C.jsx)(`line`,{clipPath:`url(#${y}-fit-clip)`,x1:ne[0][0],y1:ne[0][1],x2:ne[1][0],y2:ne[1][1]}),` `,(0,C.jsxs)(`text`,{x:102,y:55,children:[`OLS, n=`,o.n,`, R² `,o.r2===null?`unavailable`:o.r2.toFixed(2)]})]}),!o&&(0,C.jsx)(`text`,{className:`release-fit-unavailable`,x:102,y:55,children:`Fit unavailable: fewer than two release dates`}),i.map(r=>(0,C.jsxs)(`g`,{className:`release-mark`,"data-family":r.family,"data-release-model":r.name,"data-release-date":r.provenance.release_created,display:t.has(r.family)?`none`:`inline`,tabIndex:`0`,role:`button`,"aria-label":`${r.name}, ${r.family}, ${r.provenance.release_created}`,"aria-describedby":b,onPointerEnter:e=>re(r,e),onPointerLeave:()=>c(null),onFocus:e=>re(r,e),onBlur:()=>c(null),children:[(0,C.jsx)(`circle`,{className:`model-ring`,cx:g(Date.parse(r.provenance.release_created)),cy:v(r[n]),r:`8`,stroke:r.color}),(0,C.jsx)(`image`,{href:`${ce}${e.logos[r.family]}`,x:g(Date.parse(r.provenance.release_created))-5,y:v(r[n])-5,width:`10`,height:`10`,preserveAspectRatio:`xMidYMid meet`,"aria-hidden":`true`,focusable:`false`})]},r.name))]}),(0,C.jsx)(ue,{active:s,geometry:null,data:e,id:b})]})]})}function me({data:e,hidden:t}){return(0,C.jsxs)(`section`,{className:`release-panels`,"aria-label":`Release-date scatter panels`,children:[(0,C.jsx)(pe,{data:e,hidden:t,field:`y`,title:`Release date vs Secular-Rational`}),(0,C.jsx)(pe,{data:e,hidden:t,field:`x`,title:`Release date vs Self-expression`})]})}function he({data:e}){let t=new URLSearchParams(location.search),[n,r]=(0,_.useState)(()=>new Set(t.get(`hide`)?.split(`,`).filter(Boolean))),[i,a]=(0,_.useState)(()=>e.models.find(e=>e.name===(t.get(`tooltip`)||t.get(`focus`)))??null),o=t.get(`focus`),s=(0,_.useRef)(null),c=(0,_.useMemo)(()=>Object.groupBy(e.models,e=>e.family),[e]),{labels:l,geometry:u}=(0,_.useMemo)(()=>oe(e),[e]),d=le(c,n),f=e.models.filter(e=>!n.has(e.family)).length;(0,_.useEffect)(()=>{o&&s.current?.focus()},[o]);let p=e=>{e.currentTarget.matches(`:focus`)||a(null)},m=e=>r(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),h=u.x(e.median.x),g=u.y(e.median.y);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`section`,{className:`controls`,"aria-label":`Model-family visibility`,children:Object.entries(c).map(([t])=>{let r=!n.has(t);return(0,C.jsxs)(`button`,{className:`chip`,type:`button`,"aria-pressed":r,onClick:()=>m(t),children:[(0,C.jsx)(`img`,{src:`${ce}${e.logos[t]}`,alt:``,"aria-hidden":`true`}),t]},t)})}),(0,C.jsxs)(`div`,{className:`chart-shell`,children:[(0,C.jsxs)(`svg`,{viewBox:`0 0 ${y.width} ${y.height}`,role:`img`,"aria-labelledby":`map-svg-title map-svg-desc`,"data-median-x":e.median.x,"data-median-y":e.median.y,"data-visible-model-count":f,children:[(0,C.jsx)(`title`,{id:`map-svg-title`,children:`Frontier LLMs on the World Values Survey`}),(0,C.jsxs)(`desc`,{id:`map-svg-desc`,children:[`World Values Survey cultural map. Horizontal direction runs from Self-expression on the left to Survival on the right. Vertical direction runs from Traditional below to Secular-Rational above. Coloured dots are selected WVS countries, outlines are cultural regions, and white-ring logo marks are models. `,f,` model marks are visible from `,d.join(`, `)||`no families`,`. Use the family controls to hide marks and labels. Hover or keyboard focus a model for model-specific details.`]}),(0,C.jsx)(`defs`,{children:(0,C.jsx)(`marker`,{id:`arrow`,markerWidth:`8`,markerHeight:`8`,refX:`6`,refY:`3`,orient:`auto`,children:(0,C.jsx)(`path`,{d:`M0,0 L0,6 L6,3 z`,className:`arrow`})})}),(0,C.jsx)(`rect`,{className:`canvas`,width:y.width,height:y.height}),(0,C.jsxs)(`g`,{className:`grid`,children:[Array.from({length:8},(e,t)=>(0,C.jsx)(`line`,{x1:u.bounds.left+t*(u.bounds.right-u.bounds.left)/7,y1:u.bounds.top,x2:u.bounds.left+t*(u.bounds.right-u.bounds.left)/7,y2:u.bounds.bottom},`v${t}`)),Array.from({length:6},(e,t)=>(0,C.jsx)(`line`,{x1:u.bounds.left,y1:u.bounds.top+t*(u.bounds.bottom-u.bounds.top)/5,x2:u.bounds.right,y2:u.bounds.top+t*(u.bounds.bottom-u.bounds.top)/5},`h${t}`))]}),(0,C.jsx)(`line`,{className:`median`,x1:u.bounds.left,y1:g,x2:u.bounds.right,y2:g}),(0,C.jsx)(`line`,{className:`median`,x1:h,y1:u.bounds.top,x2:h,y2:u.bounds.bottom}),e.zone_hulls.map(e=>(0,C.jsx)(`path`,{className:`zone`,d:ae(e.points,u),stroke:e.color},e.name)),e.countries.map(e=>(0,C.jsxs)(`g`,{children:[(0,C.jsx)(`circle`,{className:`country`,"data-country":e.name,"data-x":e.x,"data-y":e.y,cx:u.x(e.x),cy:u.y(e.y),r:`3.5`,fill:e.color}),e.label&&(0,C.jsx)(`text`,{className:`country-label`,x:l[`country:${e.name}`].cx,y:l[`country:${e.name}`].cy+4,textAnchor:`middle`,children:e.name})]},e.name)),e.zone_hulls.map(e=>(0,C.jsx)(`text`,{className:`zone-label`,x:l[`zone:${e.name}`].cx,y:l[`zone:${e.name}`].cy+5,textAnchor:`middle`,fill:e.color,children:e.name},e.name)),Object.entries(c).map(([t,r])=>(0,C.jsx)(`g`,{"data-family":t,display:n.has(t)?`none`:`inline`,children:r.map(t=>(0,C.jsx)(de,{model:t,placement:l,geometry:u,setActive:a,clearActive:p,markerRef:t.name===o?s:null,logo:e.logos[t.family]},t.name))},t)),(0,C.jsxs)(`g`,{className:`poles`,children:[(0,C.jsx)(`line`,{x1:h,y1:`62`,x2:h,y2:u.bounds.top,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:h,y1:u.bounds.bottom,x2:h,y2:`838`,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:`64`,y1:g,x2:u.bounds.left,y2:g,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:u.bounds.right,y1:g,x2:`1184`,y2:g,markerEnd:`url(#arrow)`}),(0,C.jsx)(`text`,{x:h,y:`40`,textAnchor:`middle`,children:e.axis.y[1]}),(0,C.jsx)(`text`,{x:h,y:`870`,textAnchor:`middle`,children:e.axis.y[0]}),(0,C.jsx)(`text`,{x:`25`,y:g+7,children:e.axis.x[0]}),(0,C.jsx)(`text`,{x:`1136`,y:g+7,textAnchor:`end`,children:e.axis.x[1]})]}),(0,C.jsx)(`text`,{className:`map-title`,x:u.bounds.left+8,y:u.bounds.bottom-34,children:e.title.split(` +`).replace(Qf,``)}function ep(e,t){return t=$f(t),$f(e)===t}function $(e,t,n,r,a,o){switch(n){case`children`:if(typeof r==`string`)t===`body`||t===`textarea`&&r===``||xn(e,r);else if(typeof r==`number`||typeof r==`bigint`)t!==`body`&&xn(e,``+r);else return;break;case`className`:on(e,`class`,r);break;case`tabIndex`:on(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:on(e,n,r);break;case`style`:wn(e,r,o);return;case`data`:if(t!==`object`){on(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=On(r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&$(e,t,`name`,a.name,a,null),$(e,t,`formEncType`,a.formEncType,a,null),$(e,t,`formMethod`,a.formMethod,a,null),$(e,t,`formTarget`,a.formTarget,a,null)):($(e,t,`encType`,a.encType,a,null),$(e,t,`method`,a.method,a,null),$(e,t,`target`,a.target,a,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=On(r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=kn);return;case`onScroll`:r!=null&&Q(`scroll`,e);return;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);return;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));o?.__html!==n&&(e.innerHTML=n)}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=On(r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`credentialless`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Q(`beforetoggle`,e),Q(`toggle`,e),an(e,`popover`,r);break;case`xlinkActuate`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:sn(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:sn(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:sn(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:an(e,`is`,r);break;case`innerText`:case`textContent`:return;default:if(!(2s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=mn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),D(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+mn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+mn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+mn(n.imageSizes)+`"]`)):i+=`[href="`+mn(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=S({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Ht]=!0,o.onload=o.onerror=function(){Jt(o)}),D(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+mn(r)+`"][href="`+mn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=S({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),D(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=qt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=S({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);D(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=qt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=S({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),D(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=qt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=S({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),D(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var a=(a=Pe.current)?bm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=qt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=qt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=qt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Pm(e){return`href="`+mn(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return S({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Ht]){r.loading=1;return}}else t=e.createElement(`link`),t[Ht]=!0,t.onload=t.onerror=Jt.bind(null,t),np(t,`link`,n),D(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+mn(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+mn(n.href)+`"]`);if(r)return t.instance=r,D(r),r;var a=S({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),D(r),np(r,`style`,a),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Pm(n.href);var o=e.querySelector(Fm(a));if(o)return t.state.loading|=4,t.instance=o,D(o),o;r=Im(n),(a=vm.get(a))&&Hm(r,a),o=(e.ownerDocument||e).createElement(`link`),D(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(a=e.querySelector(zm(o)))?(t.instance=a,D(a),a):(r=n,(a=vm.get(o))&&(r=S({},n),Um(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),D(a),np(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,D(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),D(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u(),1),v=g(),y={width:1200,height:900,pad:{left:76,right:46,top:55,bottom:82}},b=[[0,-1],[0,1],[-1,0],[1,0],[-1,-1],[1,-1],[-1,1],[1,1]],ee=[22,34,48,64,82,104,130,160,196],te=(e,t,n,r)=>({cx:e,cy:t,width:n,height:r}),ne=(e,t)=>Math.abs(e.cx-t.cx)*2e.cx-e.width/2>=t.left&&e.cx+e.width/2<=t.right&&e.cy-e.height/2>=t.top&&e.cy+e.height/2<=t.bottom;function x(e){let t=[...e.countries,...e.models],n=Math.min(...t.map(e=>e.x)),r=Math.max(...t.map(e=>e.x)),i=Math.min(...t.map(e=>e.y)),a=Math.max(...t.map(e=>e.y)),o=(r-n)*.17,s=(a-i)*.17,c={x0:n-o,x1:r+o,y0:i-s,y1:a+s*1.22},l={left:y.pad.left,right:y.width-y.pad.right,top:y.pad.top,bottom:y.height-y.pad.bottom};return{x:e=>l.left+(e-c.x0)/(c.x1-c.x0)*(l.right-l.left),y:e=>l.bottom-(e-c.y0)/(c.y1-c.y0)*(l.bottom-l.top),bounds:l,limits:c}}function ie(e,t){let n=t===`zone`?15:t===`model`?13:11;return{width:e.length*n*.59+10,height:n+7}}function S(e,t){let{x:n,y:r,bounds:i}=t,a=[...e.countries.map(e=>te(n(e.x),r(e.y),10,10)),...e.models.map(e=>te(n(e.x),r(e.y),22,22))],o=[...e.models.filter(e=>e.label).map(e=>({id:`model:${e.name}`,point:e,text:e.label,kind:`model`})),...e.countries.filter(e=>e.label).map(e=>({id:`country:${e.name}`,point:e,text:e.name,kind:`country`})),...e.zone_hulls.map(e=>({id:`zone:${e.name}`,point:{x:e.label_anchor[0],y:e.label_anchor[1]},text:e.name,kind:`zone`}))],s={};for(let e of o){let t={x:n(e.point.x),y:r(e.point.y)},o=ie(e.text,e.kind),c=null;for(let e of ee){for(let[n,r]of b){let s=te(t.x+n*(e+o.width/3),t.y+r*e,o.width,o.height);if(re(s,i)&&!a.some(e=>ne(s,e))){c=s;break}}if(c)break}if(!c)throw Error(`no collision-free label location for ${e.id}`);s[e.id]={...c,anchor:t,kind:e.kind,text:e.text},a.push(c)}return s}function ae(e,t){let n=e.slice(0,-1).map(([e,n])=>({x:t.x(e),y:t.y(n)}));if(n.length<3)throw Error(`a closed hull needs three points`);let r=e=>n[(e+n.length)%n.length],i=(e,t)=>Math.hypot(e.x-t.x,e.y-t.y),a=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}),o=e=>{let t=r(e-1),n=r(e),o=r(e+1),s=Math.min(.24,14/i(t,n),14/i(n,o));return{before:a(n,t,s),current:n,after:a(n,o,s)}},s=o(0),c=`M ${s.after.x} ${s.after.y}`;for(let e=1;e<=n.length;e+=1){let t=o(e%n.length);c+=` L ${t.before.x} ${t.before.y} Q ${t.current.x} ${t.current.y} ${t.after.x} ${t.after.y}`}return`${c} Z`}function oe(e){let t=x(e),n=S(e,t),r=Object.entries(n);for(let[e,n]of r)if(!re(n,t.bounds))throw Error(`label out of bounds: ${e}`);for(let e=0;e{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),C=o(((e,t)=>{t.exports=se()}))(),ce=`wvs/`;function le(e,t){return Object.keys(e).filter(e=>!t.has(e))}function ue({active:e,geometry:t,id:n=`model-tooltip`,panel:r}){if(!e)return null;let i=e.tooltipLeft??`${Math.min(86,t.x(e.x)/y.width*100)}%`,a=e.tooltipTop??`${Math.min(82,t.y(e.y)/y.height*100)}%`,o=e.provenance.release_created&&(0,C.jsxs)(`span`,{children:[`release `,e.provenance.release_created]});return(0,C.jsxs)(`aside`,{id:n,className:`tooltip`,style:{left:i,top:a},role:`status`,children:[(0,C.jsx)(`strong`,{children:e.name}),r===`secular`&&(0,C.jsxs)(`span`,{children:[`Secular-Rational: `,e.y.toFixed(3)]}),r===`self-expression`&&(0,C.jsxs)(`span`,{children:[`Self-expression: `,e.tooltipValue.toFixed(3)]}),!r&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`span`,{children:[`Self-expression/Survival: `,e.x.toFixed(3)]}),(0,C.jsxs)(`span`,{children:[`Traditional/Secular-Rational: `,e.y.toFixed(3)]})]}),o]})}function de({model:e,placement:t,geometry:n,setActive:r,clearActive:i,markerRef:a,logo:o}){let s=n.x(e.x),c=n.y(e.y),l=e.label?t[`model:${e.name}`]:null,u=l&&Math.hypot(l.cx-s,l.cy-c)>20;return(0,C.jsxs)(`g`,{ref:a,className:`model-mark`,"data-family":e.family,"data-model":e.name,"data-x":e.x,"data-y":e.y,tabIndex:`0`,role:`button`,"aria-label":`${e.name}, ${e.family}`,"aria-describedby":`model-tooltip`,onPointerEnter:()=>r(e),onPointerLeave:i,onFocus:()=>r(e),onBlur:i,children:[u&&(0,C.jsx)(`line`,{className:`leader`,x1:s,y1:c,x2:l.cx,y2:l.cy}),(0,C.jsx)(`circle`,{className:`model-ring`,cx:s,cy:c,r:`8`,stroke:e.color}),(0,C.jsx)(`image`,{href:`${ce}${o}`,x:s-5,y:c-5,width:`10`,height:`10`,preserveAspectRatio:`xMidYMid meet`,"aria-hidden":`true`,focusable:`false`}),l&&(0,C.jsx)(`text`,{className:`model-label`,x:l.cx,y:l.cy+4,textAnchor:`middle`,children:e.label})]})}function fe(e,t){let n=e.map(e=>Date.parse(e.provenance.release_created)),r=e.map(t);if(new Set(n).size<2)return null;let i=n.reduce((e,t)=>e+t,0)/n.length,a=r.reduce((e,t)=>e+t,0)/r.length,o=n.reduce((e,t,n)=>e+(t-i)*(r[n]-a),0)/n.reduce((e,t)=>e+(t-i)**2,0),s=a-o*i,c=r.reduce((e,t,r)=>e+(t-(s+o*n[r]))**2,0),l=r.reduce((e,t)=>e+(t-a)**2,0);return{slope:o,intercept:s,n:e.length,r2:l===0?null:1-c/l}}function pe({data:e,hidden:t,field:n,title:r}){let i=(0,_.useMemo)(()=>e.models.filter(e=>Number.isFinite(Date.parse(e.provenance.release_created??``))).toSorted((e,t)=>e.provenance.release_created.localeCompare(t.provenance.release_created)||e.name.localeCompare(t.name)),[e]),a=i.filter(e=>!t.has(e.family)),o=e=>n===`x`?-e.x:e.y,s=fe(a,o),[c,l]=(0,_.useState)(null),u=1200,d=i.map(e=>Date.parse(e.provenance.release_created)),f=i.map(o),p=Math.min(...d),m=Math.max(...d),h=Math.min(...f),g=Math.max(...f),v=e=>96+(e-p)/(m-p)*1069,y=e=>42+(g-e)/(g-h||1)*230,b=`release-${n}`,ee=`${b}-tooltip`,te=n===`y`?e.axis.y:[...e.axis.x].reverse(),ne=a.map(e=>Date.parse(e.provenance.release_created)),re=s&&[Math.min(...ne),Math.max(...ne)].map(e=>[v(e),y(s.intercept+s.slope*e)]),x=(e,t)=>{let n=t.currentTarget.closest(`.scatter-shell`).getBoundingClientRect(),r=t.currentTarget.getBoundingClientRect();l({...e,tooltipValue:o(e),tooltipLeft:`${Math.min(82,(r.left-n.left)/n.width*100)}%`,tooltipTop:`${Math.min(78,(r.top-n.top)/n.height*100)}%`})};return(0,C.jsxs)(`section`,{className:`release-panel`,"data-coordinate":n,"aria-labelledby":`${b}-heading`,children:[(0,C.jsx)(`h2`,{id:`${b}-heading`,children:r}),(0,C.jsxs)(`div`,{className:`scatter-shell`,children:[(0,C.jsxs)(`svg`,{viewBox:`0 0 ${u} 320`,role:`img`,"aria-labelledby":`${b}-svg-title ${b}-svg-desc`,"data-panel-model-count":a.length,"data-fit-n":s?.n??0,"data-fit-r2":s?.r2??``,"data-fit-slope":s?.slope??``,children:[(0,C.jsx)(`title`,{id:`${b}-svg-title`,children:r}),(0,C.jsxs)(`desc`,{id:`${b}-svg-desc`,children:[`Scatter plot with release date on the horizontal axis and `,te.join(` to `),` increasing upward on the vertical axis. `,a.length,` dated models are visible from `,le(Object.groupBy(e.models,e=>e.family),t).join(`, `)||`no families`,`. Each white-ring logo mark is a model. `,s?`The thin line is an ordinary least squares descriptive fit to the ${s.n} currently visible dated models${s.r2===null?`; R squared is unavailable because the y values are constant`:`; R squared is ${s.r2.toFixed(2)}`}.`:`The fit is hidden because fewer than two distinct release dates are visible.`,` Hover or keyboard focus a mark for model-specific details.`]}),(0,C.jsxs)(`defs`,{children:[(0,C.jsx)(`marker`,{id:`${b}-arrow`,markerWidth:`8`,markerHeight:`8`,refX:`6`,refY:`3`,orient:`auto`,children:(0,C.jsx)(`path`,{d:`M0,0 L0,6 L6,3 z`,className:`scatter-arrow`})}),(0,C.jsx)(`clipPath`,{id:`${b}-fit-clip`,children:(0,C.jsx)(`rect`,{x:96,y:42,width:1069,height:230})})]}),(0,C.jsx)(`rect`,{className:`canvas`,width:u,height:320}),(0,C.jsx)(`g`,{className:`scatter-grid`,children:Array.from({length:5},(e,t)=>(0,C.jsx)(`line`,{x1:96,x2:1165,y1:42+t*230/4,y2:42+t*230/4},t))}),(0,C.jsx)(`line`,{className:`scatter-axis`,x1:96,x2:1165,y1:272,y2:272}),(0,C.jsx)(`line`,{className:`scatter-axis`,x1:96,x2:96,y1:272,y2:42,markerEnd:`url(#${b}-arrow)`}),(0,C.jsxs)(`text`,{className:`scatter-y-label`,x:`17`,y:157,textAnchor:`middle`,transform:`rotate(-90 17 157)`,children:[te.join(` -> `),` `,`↑`]}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:96,y:302,children:new Date(p).toISOString().slice(0,10)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:1165,y:302,textAnchor:`end`,children:new Date(m).toISOString().slice(0,10)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:88,y:46,textAnchor:`end`,children:g.toFixed(2)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:88,y:272,textAnchor:`end`,children:h.toFixed(2)}),re&&(0,C.jsxs)(`g`,{className:`release-fit`,"data-fit-n":s.n,"data-fit-r2":s.r2??``,children:[(0,C.jsx)(`line`,{clipPath:`url(#${b}-fit-clip)`,x1:re[0][0],y1:re[0][1],x2:re[1][0],y2:re[1][1]}),` `,(0,C.jsxs)(`text`,{x:102,y:55,children:[`OLS, n=`,s.n,`, R² `,s.r2===null?`unavailable`:s.r2.toFixed(2)]})]}),!s&&(0,C.jsx)(`text`,{className:`release-fit-unavailable`,x:102,y:55,children:`Fit unavailable: fewer than two release dates`}),i.map(n=>(0,C.jsxs)(`g`,{className:`release-mark`,"data-family":n.family,"data-release-model":n.name,"data-release-date":n.provenance.release_created,"data-coordinate-value":o(n),display:t.has(n.family)?`none`:`inline`,tabIndex:`0`,role:`button`,"aria-label":`${n.name}, ${n.family}, ${n.provenance.release_created}`,"aria-describedby":ee,onPointerEnter:e=>x(n,e),onPointerLeave:()=>l(null),onFocus:e=>x(n,e),onBlur:()=>l(null),children:[(0,C.jsx)(`circle`,{className:`model-ring`,cx:v(Date.parse(n.provenance.release_created)),cy:y(o(n)),r:`8`,stroke:n.color}),(0,C.jsx)(`image`,{href:`${ce}${e.logos[n.family]}`,x:v(Date.parse(n.provenance.release_created))-5,y:y(o(n))-5,width:`10`,height:`10`,preserveAspectRatio:`xMidYMid meet`,"aria-hidden":`true`,focusable:`false`})]},n.name))]}),(0,C.jsx)(ue,{active:c,geometry:null,id:ee,panel:n===`y`?`secular`:`self-expression`})]})]})}function me({data:e,hidden:t}){return(0,C.jsxs)(`section`,{className:`release-panels`,"aria-label":`Release-date scatter panels`,children:[(0,C.jsx)(pe,{data:e,hidden:t,field:`y`,title:`Release date vs Secular-Rational`}),(0,C.jsx)(pe,{data:e,hidden:t,field:`x`,title:`Release date vs Self-expression`})]})}function he({data:e}){let t=new URLSearchParams(location.search),[n,r]=(0,_.useState)(()=>new Set(t.get(`hide`)?.split(`,`).filter(Boolean))),[i,a]=(0,_.useState)(()=>e.models.find(e=>e.name===(t.get(`tooltip`)||t.get(`focus`)))??null),o=t.get(`focus`),s=(0,_.useRef)(null),c=(0,_.useMemo)(()=>Object.groupBy(e.models,e=>e.family),[e]),{labels:l,geometry:u}=(0,_.useMemo)(()=>oe(e),[e]),d=le(c,n),f=e.models.filter(e=>!n.has(e.family)).length;(0,_.useEffect)(()=>{o&&s.current?.focus()},[o]);let p=e=>{e.currentTarget.matches(`:focus`)||a(null)},m=e=>r(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),h=u.x(e.median.x),g=u.y(e.median.y);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`section`,{className:`controls`,"aria-label":`Model-family visibility`,children:Object.entries(c).map(([t])=>{let r=!n.has(t);return(0,C.jsxs)(`button`,{className:`chip`,type:`button`,"aria-pressed":r,onClick:()=>m(t),children:[(0,C.jsx)(`img`,{src:`${ce}${e.logos[t]}`,alt:``,"aria-hidden":`true`}),t]},t)})}),(0,C.jsxs)(`div`,{className:`release-axis-selector`,children:[(0,C.jsxs)(`label`,{children:[`Release-panel x axis `,(0,C.jsxs)(`select`,{"aria-label":`Release-panel x axis`,value:`release-date`,onChange:()=>{},children:[(0,C.jsx)(`option`,{value:`release-date`,children:`Release date`}),(0,C.jsxs)(`option`,{value:`capability`,disabled:!0,children:[e.capability_x.label,`, unavailable pending redistribution permission`]})]})]}),(0,C.jsx)(`span`,{children:e.capability_x.blocker})]}),(0,C.jsxs)(`div`,{className:`chart-shell`,children:[(0,C.jsxs)(`svg`,{viewBox:`0 0 ${y.width} ${y.height}`,role:`img`,"aria-labelledby":`map-svg-title map-svg-desc`,"data-median-x":e.median.x,"data-median-y":e.median.y,"data-visible-model-count":f,children:[(0,C.jsx)(`title`,{id:`map-svg-title`,children:`Frontier LLMs on the World Values Survey`}),(0,C.jsxs)(`desc`,{id:`map-svg-desc`,children:[`World Values Survey cultural map. Horizontal direction runs from Self-expression on the left to Survival on the right. Vertical direction runs from Traditional below to Secular-Rational above. Coloured dots are selected WVS countries, outlines are cultural regions, and white-ring logo marks are models. `,f,` model marks are visible from `,d.join(`, `)||`no families`,`. Use the family controls to hide marks and labels. Hover or keyboard focus a model for model-specific details.`]}),(0,C.jsx)(`defs`,{children:(0,C.jsx)(`marker`,{id:`arrow`,markerWidth:`8`,markerHeight:`8`,refX:`6`,refY:`3`,orient:`auto`,children:(0,C.jsx)(`path`,{d:`M0,0 L0,6 L6,3 z`,className:`arrow`})})}),(0,C.jsx)(`rect`,{className:`canvas`,width:y.width,height:y.height}),(0,C.jsxs)(`g`,{className:`grid`,children:[Array.from({length:8},(e,t)=>(0,C.jsx)(`line`,{x1:u.bounds.left+t*(u.bounds.right-u.bounds.left)/7,y1:u.bounds.top,x2:u.bounds.left+t*(u.bounds.right-u.bounds.left)/7,y2:u.bounds.bottom},`v${t}`)),Array.from({length:6},(e,t)=>(0,C.jsx)(`line`,{x1:u.bounds.left,y1:u.bounds.top+t*(u.bounds.bottom-u.bounds.top)/5,x2:u.bounds.right,y2:u.bounds.top+t*(u.bounds.bottom-u.bounds.top)/5},`h${t}`))]}),(0,C.jsx)(`line`,{className:`median`,x1:u.bounds.left,y1:g,x2:u.bounds.right,y2:g}),(0,C.jsx)(`line`,{className:`median`,x1:h,y1:u.bounds.top,x2:h,y2:u.bounds.bottom}),e.zone_hulls.map(e=>(0,C.jsx)(`path`,{className:`zone`,d:ae(e.points,u),stroke:e.color},e.name)),e.countries.map(e=>(0,C.jsxs)(`g`,{children:[(0,C.jsx)(`circle`,{className:`country`,"data-country":e.name,"data-x":e.x,"data-y":e.y,cx:u.x(e.x),cy:u.y(e.y),r:`3.5`,fill:e.color}),e.label&&(0,C.jsx)(`text`,{className:`country-label`,x:l[`country:${e.name}`].cx,y:l[`country:${e.name}`].cy+4,textAnchor:`middle`,children:e.name})]},e.name)),e.zone_hulls.map(e=>(0,C.jsx)(`text`,{className:`zone-label`,x:l[`zone:${e.name}`].cx,y:l[`zone:${e.name}`].cy+5,textAnchor:`middle`,fill:e.color,children:e.name},e.name)),Object.entries(c).map(([t,r])=>(0,C.jsx)(`g`,{"data-family":t,display:n.has(t)?`none`:`inline`,children:r.map(t=>(0,C.jsx)(de,{model:t,placement:l,geometry:u,setActive:a,clearActive:p,markerRef:t.name===o?s:null,logo:e.logos[t.family]},t.name))},t)),(0,C.jsxs)(`g`,{className:`poles`,children:[(0,C.jsx)(`line`,{x1:h,y1:`62`,x2:h,y2:u.bounds.top,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:h,y1:u.bounds.bottom,x2:h,y2:`838`,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:`64`,y1:g,x2:u.bounds.left,y2:g,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:u.bounds.right,y1:g,x2:`1184`,y2:g,markerEnd:`url(#arrow)`}),(0,C.jsx)(`text`,{x:h,y:`40`,textAnchor:`middle`,children:e.axis.y[1]}),(0,C.jsx)(`text`,{x:h,y:`870`,textAnchor:`middle`,children:e.axis.y[0]}),(0,C.jsx)(`text`,{x:`25`,y:g+7,children:e.axis.x[0]}),(0,C.jsx)(`text`,{x:`1136`,y:g+7,textAnchor:`end`,children:e.axis.x[1]})]}),(0,C.jsx)(`text`,{className:`map-title`,x:u.bounds.left+8,y:u.bounds.bottom-34,children:e.title.split(` `).map((e,t)=>(0,C.jsx)(`tspan`,{x:u.bounds.left+8,dy:t?17:0,children:e},e))}),(0,C.jsx)(`text`,{className:`map-note`,x:u.bounds.right-8,y:u.bounds.bottom-20,textAnchor:`end`,children:e.note.split(` -`).map((e,t)=>(0,C.jsx)(`tspan`,{x:u.bounds.right-8,dy:t?11:0,children:e},e))})]}),(0,C.jsx)(ue,{active:i,geometry:u,data:e})]}),(0,C.jsx)(me,{data:e,hidden:n})]})}function ge(){let[e,t]=(0,_.useState)(null);return(0,_.useEffect)(()=>{fetch(`wvs/wvs_map_data.json`).then(e=>e.json()).then(t)},[]),(0,C.jsxs)(`main`,{children:[(0,C.jsx)(`h1`,{children:`How do AI models score on human values surveys? Which culture are they most similar to? Is it changing over time?`}),(0,C.jsxs)(`p`,{className:`lede`,children:[`To answer these we start with the `,(0,C.jsx)(`a`,{href:`https://www.worldvaluessurvey.org/`,children:`World Values Survey`}),`, the standard culture map of the world. Since 1981 it has asked people in about ninety countries the same questions. Two axes drawn from it sort societies by how traditional or secular they are and how much they weigh survival over self-expression.`]}),(0,C.jsxs)(`p`,{className:`caption`,children:[`Use the family controls to compare saved model coordinates. The release-date panels fit ordinary least squares lines only to the dated models currently shown; n and R² update with visibility and describe correlation, not cause. Hover or keyboard focus a mark for model-specific provenance. See the `,(0,C.jsx)(`a`,{href:`https://github.com/wassname/moral-maps`,children:`code and records`}),`.`]}),e&&(0,C.jsx)(he,{data:e})]})}(0,v.createRoot)(document.getElementById(`root`)).render((0,C.jsx)(ge,{})); \ No newline at end of file +`).map((e,t)=>(0,C.jsx)(`tspan`,{x:u.bounds.right-8,dy:t?11:0,children:e},e))})]}),(0,C.jsx)(ue,{active:i,geometry:u})]}),(0,C.jsx)(`p`,{className:`map-explanation`,children:`Since 1981, the World Values Survey has asked people in about ninety countries the same questions. Its axes run from Traditional to Secular-Rational and from Self-expression to Survival.`}),(0,C.jsx)(me,{data:e,hidden:n}),(0,C.jsxs)(`p`,{className:`caption`,children:[`Use the family controls to compare saved rated coordinates. The lines are weak descriptive correlations for the dated models currently shown; n and R² update with visibility. Hover or keyboard focus a mark for its coordinates and recorded release date. See the `,(0,C.jsx)(`a`,{href:`https://github.com/wassname/moral-maps`,children:`code and records`}),`.`]})]})}function ge(){let[e,t]=(0,_.useState)(null);return(0,_.useEffect)(()=>{fetch(`wvs/wvs_map_data.json`).then(e=>e.json()).then(t)},[]),(0,C.jsxs)(`main`,{children:[(0,C.jsx)(`h1`,{children:`How do AI models score on human values surveys? Which culture are they most similar to? Is it changing over time?`}),(0,C.jsxs)(`p`,{className:`lede`,children:[`We start with the `,(0,C.jsx)(`a`,{href:`https://www.worldvaluessurvey.org/`,children:`World Values Survey`}),`, a map of human values across about ninety countries.`]}),e&&(0,C.jsx)(he,{data:e})]})}(0,v.createRoot)(document.getElementById(`root`)).render((0,C.jsx)(ge,{})); \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 50ea27b..e0e27d2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -4,8 +4,8 @@ Frontier LLMs on the World Values Survey - - + +
diff --git a/docs/wvs/wvs_map_data.json b/docs/wvs/wvs_map_data.json index ddf4969..17a83e1 100644 --- a/docs/wvs/wvs_map_data.json +++ b/docs/wvs/wvs_map_data.json @@ -9,6 +9,12 @@ "Secular-Rational" ] }, + "capability_x": { + "blocker": "Capability scores are omitted until the source owner confirms redistribution permission.", + "label": "Artificial Analysis Intelligence Index", + "source_url": "https://artificialanalysis.ai/models", + "status": "blocked" + }, "countries": [ { "color": "#888888", @@ -860,8 +866,8 @@ "items": null, "protocol_id": null, "readout": "recovered rounded historical coordinate", - "release_created": null, - "release_source": "historical coordinate", + "release_created": "2026-03-31", + "release_source": "saved OpenRouter catalog 2026-09-17: x-ai/grok-4.20", "run_id": null, "samples": null }, @@ -911,8 +917,8 @@ "items": null, "protocol_id": null, "readout": "recovered rounded historical coordinate", - "release_created": null, - "release_source": "historical coordinate", + "release_created": "2026-04-30", + "release_source": "saved OpenRouter catalog 2026-09-17: x-ai/grok-4.3", "run_id": null, "samples": null }, diff --git a/scripts/wvs_map.py b/scripts/wvs_map.py index 7d71fe9..651a40d 100644 --- a/scripts/wvs_map.py +++ b/scripts/wvs_map.py @@ -26,6 +26,7 @@ import ast import hashlib import json import re +from datetime import datetime, timezone from pathlib import Path import dotenv @@ -63,6 +64,15 @@ LEGACY_LATEST = { "mistral": "mistral-large-2512", } +# These historical Grok coordinates predate the local metadata file. Their dates remain traceable +# to exact IDs in the saved 2026-09-17 OpenRouter catalog, not inferred from version strings. +LEGACY_CATALOG_IDS = { + "grok-4.20": "x-ai/grok-4.20", + "grok-4.3": "x-ai/grok-4.3", +} +SAVED_CATALOG_PATH = Path("slop/research/wvs/20260917_openrouter_models.json") +RATED_PROTOCOL_DIAGNOSTICS = {"gpt-5-nano (rated)"} + API_MODEL_SETS = { "fable-astra": ( "anthropic/claude-fable-5.1", @@ -307,7 +317,8 @@ def main() -> None: models: dict[str, tuple] = published_models(published_ci) if published_ci.exists() else {} if args.include_all_cached: for entry in cache["completed"].values(): - models[entry["display_key"]] = tuple(entry["coords"]) + if entry["display_key"] not in RATED_PROTOCOL_DIAGNOSTICS: + models[entry["display_key"]] = tuple(entry["coords"]) def save_cache() -> None: """Atomic cache replacement after a complete model panel, so interruption cannot fabricate a hit.""" @@ -411,6 +422,11 @@ def main() -> None: raise ValueError(f"model has no explicit family: {k}") fams.setdefault(family, []).append(k) metadata = json.loads(Path("docs/img/wvs/wvs_model_metadata.json").read_text())["models"] + saved_catalog = {entry["id"]: entry for entry in json.loads(SAVED_CATALOG_PATH.read_text())["data"]} + legacy_release_dates = { + name: datetime.fromtimestamp(saved_catalog[model_id]["created"], tz=timezone.utc).date().isoformat() + for name, model_id in LEGACY_CATALOG_IDS.items() + } model_labels: dict[str, str] = {} label_sources: dict[str, str] = {} for family, names in fams.items(): @@ -463,9 +479,12 @@ def main() -> None: panel = completed.get(name) catalog = metadata.get(name) if panel is None: + legacy_date = legacy_release_dates.get(name) return {"readout": "recovered rounded historical coordinate", "items": None, "samples": None, "run_id": None, "protocol_id": None, - "release_created": None, "release_source": "historical coordinate"} + "release_created": legacy_date, + "release_source": (f"saved OpenRouter catalog 2026-09-17: {LEGACY_CATALOG_IDS[name]}" + if legacy_date else "historical coordinate")} return {"readout": "rated categorical response", "items": panel["n_items"], "samples": panel["n_samples"], "run_id": panel["run_id"], "protocol_id": panel["protocol_id"], @@ -475,6 +494,12 @@ def main() -> None: args.web_data.parent.mkdir(parents=True, exist_ok=True) args.web_data.write_text(json.dumps({ "schema": 2, + "capability_x": { + "label": "Artificial Analysis Intelligence Index", + "source_url": "https://artificialanalysis.ai/models", + "status": "blocked", + "blocker": "Capability scores are omitted until the source owner confirms redistribution permission.", + }, "title": "Frontier LLMs on the\nWorld Values Survey", "note": "source: github.com/wassname/moral-maps", "axis": {"x": (["Self-expression", "Survival"] if sx < 0 else ["Survival", "Self-expression"]), diff --git a/scripts/wvs_react/src/main.jsx b/scripts/wvs_react/src/main.jsx index 3b63c87..abeb876 100644 --- a/scripts/wvs_react/src/main.jsx +++ b/scripts/wvs_react/src/main.jsx @@ -9,19 +9,17 @@ function visibleFamilyNames(groups, hidden) { return Object.keys(groups).filter(family => !hidden.has(family)); } -function Tooltip({ active, geometry, data, id = 'model-tooltip' }) { +function Tooltip({ active, geometry, id = 'model-tooltip', panel }) { if (!active) return null; - const { provenance } = active; const left = active.tooltipLeft ?? `${Math.min(86, geometry.x(active.x) / VIEW.width * 100)}%`; const top = active.tooltipTop ?? `${Math.min(82, geometry.y(active.y) / VIEW.height * 100)}%`; - const samples = provenance.items === null ? 'historical coordinate' : `${provenance.items} items x ${provenance.samples} samples`; + const release = active.provenance.release_created && release {active.provenance.release_created}; return ; } @@ -40,9 +38,9 @@ function ModelMarker({ model, placement, geometry, setActive, clearActive, marke ; } -function ordinaryLeastSquares(models, field) { +function ordinaryLeastSquares(models, value) { const x = models.map(model => Date.parse(model.provenance.release_created)); - const y = models.map(model => model[field]); + const y = models.map(value); const uniqueX = new Set(x); if (uniqueX.size < 2) return null; const xMean = x.reduce((sum, value) => sum + value, 0) / x.length; @@ -59,29 +57,30 @@ function ReleaseScatter({ data, hidden, field, title }) { const dated = useMemo(() => data.models.filter(model => Number.isFinite(Date.parse(model.provenance.release_created ?? ''))) .toSorted((a, b) => a.provenance.release_created.localeCompare(b.provenance.release_created) || a.name.localeCompare(b.name)), [data]); const visible = dated.filter(model => !hidden.has(model.family)); - const fit = ordinaryLeastSquares(visible, field); + const coordinate = model => field === 'x' ? -model.x : model.y; + const fit = ordinaryLeastSquares(visible, coordinate); const [active, setActive] = useState(null); const width = 1200, height = 320, left = 96, right = 35, top = 42, bottom = 48; const dates = dated.map(model => Date.parse(model.provenance.release_created)); - const values = dated.map(model => model[field]); + const values = dated.map(coordinate); const minDate = Math.min(...dates), maxDate = Math.max(...dates); const minValue = Math.min(...values), maxValue = Math.max(...values); const dateX = date => left + (date - minDate) / (maxDate - minDate) * (width - left - right); const valueY = value => top + (maxValue - value) / (maxValue - minValue || 1) * (height - top - bottom); const panelId = `release-${field}`; const tooltipId = `${panelId}-tooltip`; - const yDirection = field === 'y' ? data.axis.y : data.axis.x; + const yDirection = field === 'y' ? data.axis.y : [...data.axis.x].reverse(); const visibleDates = visible.map(model => Date.parse(model.provenance.release_created)); const fitEnd = fit && [Math.min(...visibleDates), Math.max(...visibleDates)].map(date => [dateX(date), valueY(fit.intercept + fit.slope * date)]); const activate = (model, event) => { const box = event.currentTarget.closest('.scatter-shell').getBoundingClientRect(); const point = event.currentTarget.getBoundingClientRect(); - setActive({ ...model, tooltipLeft: `${Math.min(82, (point.left - box.left) / box.width * 100)}%`, tooltipTop: `${Math.min(78, (point.top - box.top) / box.height * 100)}%` }); + setActive({ ...model, tooltipValue: coordinate(model), tooltipLeft: `${Math.min(82, (point.left - box.left) / box.width * 100)}%`, tooltipTop: `${Math.min(78, (point.top - box.top) / box.height * 100)}%` }); }; return

{title}

- + {title} Scatter plot with release date on the horizontal axis and {yDirection.join(' to ')} increasing upward on the vertical axis. {visible.length} dated models are visible from {visibleFamilyNames(Object.groupBy(data.models, model => model.family), hidden).join(', ') || 'no families'}. Each white-ring logo mark is a model. {fit ? `The thin line is an ordinary least squares descriptive fit to the ${fit.n} currently visible dated models${fit.r2 === null ? '; R squared is unavailable because the y values are constant' : `; R squared is ${fit.r2.toFixed(2)}`}.` : 'The fit is hidden because fewer than two distinct release dates are visible.'} Hover or keyboard focus a mark for model-specific details. @@ -96,14 +95,14 @@ function ReleaseScatter({ data, hidden, field, title }) { {minValue.toFixed(2)} {fitEnd && OLS, n={fit.n}, R² {fit.r2 === null ? 'unavailable' : fit.r2.toFixed(2)}} {!fit && Fit unavailable: fewer than two release dates} - {dated.map(model => activate(model, event)} onPointerLeave={() => setActive(null)} onFocus={event => activate(model, event)} onBlur={() => setActive(null)}> - - + + )} - +
; } @@ -147,6 +146,13 @@ function Map({ data }) { {family} ; })} +
+ + {data.capability_x.blocker} +
Frontier LLMs on the World Values Survey @@ -164,9 +170,11 @@ function Map({ data }) { {data.title.split('\n').map((line, index) => {line})} {data.note.split('\n').map((line, index) => {line})} - +
+

Since 1981, the World Values Survey has asked people in about ninety countries the same questions. Its axes run from Traditional to Secular-Rational and from Self-expression to Survival.