gitopo 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +110 -0
  3. package/bin/gitopo.js +20 -0
  4. package/dist/renderer/assets/index-B-xnAFkZ.css +1 -0
  5. package/dist/renderer/assets/index-B4NR76vm.css +1 -0
  6. package/dist/renderer/assets/index-B8-bMEZL.js +3 -0
  7. package/dist/renderer/assets/index-BSM6CD5c.js +3 -0
  8. package/dist/renderer/assets/index-Biwf0g5L.js +3 -0
  9. package/dist/renderer/assets/index-BkSteF7v.js +3 -0
  10. package/dist/renderer/assets/index-Bu2Is4Gi.js +3 -0
  11. package/dist/renderer/assets/index-BuunUFeT.js +3 -0
  12. package/dist/renderer/assets/index-BztqQcTT.js +3 -0
  13. package/dist/renderer/assets/index-C5GvfFhL.js +3 -0
  14. package/dist/renderer/assets/index-C5pqhkpE.css +1 -0
  15. package/dist/renderer/assets/index-CAjBcm7_.js +3 -0
  16. package/dist/renderer/assets/index-CPhqr81-.css +1 -0
  17. package/dist/renderer/assets/index-CRBk_3U9.js +4 -0
  18. package/dist/renderer/assets/index-CV77y4NX.js +3 -0
  19. package/dist/renderer/assets/index-CX4EqujF.js +3 -0
  20. package/dist/renderer/assets/index-Caevx9so.js +3 -0
  21. package/dist/renderer/assets/index-CbVNESqC.js +3 -0
  22. package/dist/renderer/assets/index-CgV3hEXF.js +3 -0
  23. package/dist/renderer/assets/index-Cgxb7yXH.js +3 -0
  24. package/dist/renderer/assets/index-Cu7Bdfdp.js +3 -0
  25. package/dist/renderer/assets/index-D-4eDZ-q.css +1 -0
  26. package/dist/renderer/assets/index-D3WoIbyB.js +3 -0
  27. package/dist/renderer/assets/index-DATWWeXq.js +3 -0
  28. package/dist/renderer/assets/index-DGVlk6ue.css +1 -0
  29. package/dist/renderer/assets/index-DKxk7KCa.js +3 -0
  30. package/dist/renderer/assets/index-DPD27o55.js +3 -0
  31. package/dist/renderer/assets/index-DaP2KGsB.js +3 -0
  32. package/dist/renderer/assets/index-DeuGEmKM.js +3 -0
  33. package/dist/renderer/assets/index-Dg_WVb0M.js +3 -0
  34. package/dist/renderer/assets/index-Dhbf0Fci.js +3 -0
  35. package/dist/renderer/assets/index-DnUHDinm.css +1 -0
  36. package/dist/renderer/assets/index-DuNCgxuJ.js +3 -0
  37. package/dist/renderer/assets/index-HYzjpgUI.js +3 -0
  38. package/dist/renderer/assets/index-Mn_-m7Tt.js +3 -0
  39. package/dist/renderer/assets/index-N_FqOAes.js +3 -0
  40. package/dist/renderer/assets/index-TVFDuiMT.js +3 -0
  41. package/dist/renderer/assets/index-UF9gobFY.css +1 -0
  42. package/dist/renderer/assets/index-V7JII7CO.js +3 -0
  43. package/dist/renderer/assets/index-jDaMuPPI.css +1 -0
  44. package/dist/renderer/assets/index-kUku5Va6.js +3 -0
  45. package/dist/renderer/index.html +38 -0
  46. package/docs/screenshot.png +0 -0
  47. package/package.json +57 -0
  48. package/src/main/index.js +85 -0
  49. package/src/main/preload.js +16 -0
@@ -0,0 +1,3 @@
1
+ (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();var cn={value:()=>{}};function Re(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new vt(n)}function vt(t){this._=t}function ln(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}vt.prototype=Re.prototype={constructor:vt,on:function(t,e){var n=this._,r=ln(t+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o<s;)if((i=(t=r[o]).type)&&(i=un(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++o<s;)if(i=(t=r[o]).type)n[i]=ge(n[i],t.name,e);else if(e==null)for(i in n)n[i]=ge(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new vt(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,o;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(e,n)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};function un(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function ge(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=cn,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}var qt="http://www.w3.org/1999/xhtml";const me={svg:"http://www.w3.org/2000/svg",xhtml:qt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Bt(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),me.hasOwnProperty(e)?{space:me[e],local:t}:t}function fn(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===qt&&e.documentElement.namespaceURI===qt?e.createElement(t):e.createElementNS(n,t)}}function hn(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Me(t){var e=Bt(t);return(e.local?hn:fn)(e)}function pn(){}function jt(t){return t==null?pn:function(){return this.querySelector(t)}}function dn(t){typeof t!="function"&&(t=jt(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=new Array(s),c,l,u=0;u<s;++u)(c=o[u])&&(l=t.call(c,c.__data__,u,o))&&("__data__"in c&&(l.__data__=c.__data__),a[u]=l);return new B(r,this._parents)}function gn(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function mn(){return[]}function Te(t){return t==null?mn:function(){return this.querySelectorAll(t)}}function wn(t){return function(){return gn(t.apply(this,arguments))}}function yn(t){typeof t=="function"?t=wn(t):t=Te(t);for(var e=this._groups,n=e.length,r=[],i=[],o=0;o<n;++o)for(var s=e[o],a=s.length,c,l=0;l<a;++l)(c=s[l])&&(r.push(t.call(c,c.__data__,l,s)),i.push(c));return new B(r,i)}function Ie(t){return function(){return this.matches(t)}}function Oe(t){return function(e){return e.matches(t)}}var _n=Array.prototype.find;function xn(t){return function(){return _n.call(this.children,t)}}function vn(){return this.firstElementChild}function bn(t){return this.select(t==null?vn:xn(typeof t=="function"?t:Oe(t)))}var $n=Array.prototype.filter;function En(){return Array.from(this.children)}function Sn(t){return function(){return $n.call(this.children,t)}}function Nn(t){return this.selectAll(t==null?En:Sn(typeof t=="function"?t:Oe(t)))}function Cn(t){typeof t!="function"&&(t=Ie(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=[],c,l=0;l<s;++l)(c=o[l])&&t.call(c,c.__data__,l,o)&&a.push(c);return new B(r,this._parents)}function Pe(t){return new Array(t.length)}function An(){return new B(this._enter||this._groups.map(Pe),this._parents)}function Et(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Et.prototype={constructor:Et,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function kn(t){return function(){return t}}function Bn(t,e,n,r,i,o){for(var s=0,a,c=e.length,l=o.length;s<l;++s)(a=e[s])?(a.__data__=o[s],r[s]=a):n[s]=new Et(t,o[s]);for(;s<c;++s)(a=e[s])&&(i[s]=a)}function Rn(t,e,n,r,i,o,s){var a,c,l=new Map,u=e.length,p=o.length,d=new Array(u),g;for(a=0;a<u;++a)(c=e[a])&&(d[a]=g=s.call(c,c.__data__,a,e)+"",l.has(g)?i[a]=c:l.set(g,c));for(a=0;a<p;++a)g=s.call(t,o[a],a,o)+"",(c=l.get(g))?(r[a]=c,c.__data__=o[a],l.delete(g)):n[a]=new Et(t,o[a]);for(a=0;a<u;++a)(c=e[a])&&l.get(d[a])===c&&(i[a]=c)}function Mn(t){return t.__data__}function Tn(t,e){if(!arguments.length)return Array.from(this,Mn);var n=e?Rn:Bn,r=this._parents,i=this._groups;typeof t!="function"&&(t=kn(t));for(var o=i.length,s=new Array(o),a=new Array(o),c=new Array(o),l=0;l<o;++l){var u=r[l],p=i[l],d=p.length,g=In(t.call(u,u&&u.__data__,l,r)),m=g.length,E=a[l]=new Array(m),A=s[l]=new Array(m),Tt=c[l]=new Array(d);n(u,p,E,A,Tt,g,e);for(var I=0,q=0,N,ht;I<m;++I)if(N=E[I]){for(I>=q&&(q=I+1);!(ht=A[q])&&++q<m;);N._next=ht||null}}return s=new B(s,r),s._enter=a,s._exit=c,s}function In(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function On(){return new B(this._exit||this._groups.map(Pe),this._parents)}function Pn(t,e,n){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?o.remove():n(o),r&&i?r.merge(i).order():i}function Fn(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,s=Math.min(i,o),a=new Array(i),c=0;c<s;++c)for(var l=n[c],u=r[c],p=l.length,d=a[c]=new Array(p),g,m=0;m<p;++m)(g=l[m]||u[m])&&(d[m]=g);for(;c<i;++c)a[c]=n[c];return new B(a,this._parents)}function Xn(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,o=r[i],s;--i>=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function Ln(t){t||(t=Yn);function e(p,d){return p&&d?t(p.__data__,d.__data__):!p-!d}for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var s=n[o],a=s.length,c=i[o]=new Array(a),l,u=0;u<a;++u)(l=s[u])&&(c[u]=l);c.sort(e)}return new B(i,this._parents).order()}function Yn(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Hn(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Dn(){return Array.from(this)}function qn(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var s=r[i];if(s)return s}return null}function Vn(){let t=0;for(const e of this)++t;return t}function zn(){return!this.node()}function Un(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],o=0,s=i.length,a;o<s;++o)(a=i[o])&&t.call(a,a.__data__,o,i);return this}function Zn(t){return function(){this.removeAttribute(t)}}function Kn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Gn(t,e){return function(){this.setAttribute(t,e)}}function Wn(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Jn(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function Qn(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function jn(t,e){var n=Bt(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?Kn:Zn:typeof e=="function"?n.local?Qn:Jn:n.local?Wn:Gn)(n,e))}function Fe(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function tr(t){return function(){this.style.removeProperty(t)}}function er(t,e,n){return function(){this.style.setProperty(t,e,n)}}function nr(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function rr(t,e,n){return arguments.length>1?this.each((e==null?tr:typeof e=="function"?nr:er)(t,e,n??"")):W(this.node(),t)}function W(t,e){return t.style.getPropertyValue(e)||Fe(t).getComputedStyle(t,null).getPropertyValue(e)}function ir(t){return function(){delete this[t]}}function or(t,e){return function(){this[t]=e}}function sr(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function ar(t,e){return arguments.length>1?this.each((e==null?ir:typeof e=="function"?sr:or)(t,e)):this.node()[t]}function Xe(t){return t.trim().split(/^|\s+/)}function te(t){return t.classList||new Le(t)}function Le(t){this._node=t,this._names=Xe(t.getAttribute("class")||"")}Le.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Ye(t,e){for(var n=te(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function He(t,e){for(var n=te(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function cr(t){return function(){Ye(this,t)}}function lr(t){return function(){He(this,t)}}function ur(t,e){return function(){(e.apply(this,arguments)?Ye:He)(this,t)}}function fr(t,e){var n=Xe(t+"");if(arguments.length<2){for(var r=te(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?ur:e?cr:lr)(n,e))}function hr(){this.textContent=""}function pr(t){return function(){this.textContent=t}}function dr(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function gr(t){return arguments.length?this.each(t==null?hr:(typeof t=="function"?dr:pr)(t)):this.node().textContent}function mr(){this.innerHTML=""}function wr(t){return function(){this.innerHTML=t}}function yr(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function _r(t){return arguments.length?this.each(t==null?mr:(typeof t=="function"?yr:wr)(t)):this.node().innerHTML}function xr(){this.nextSibling&&this.parentNode.appendChild(this)}function vr(){return this.each(xr)}function br(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function $r(){return this.each(br)}function Er(t){var e=typeof t=="function"?t:Me(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function Sr(){return null}function Nr(t,e){var n=typeof t=="function"?t:Me(t),r=e==null?Sr:typeof e=="function"?e:jt(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Cr(){var t=this.parentNode;t&&t.removeChild(this)}function Ar(){return this.each(Cr)}function kr(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Br(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Rr(t){return this.select(t?Br:kr)}function Mr(t){return arguments.length?this.property("__data__",t):this.node().__data__}function Tr(t){return function(e){t.call(this,e,this.__data__)}}function Ir(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function Or(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n<i;++n)o=e[n],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):e[++r]=o;++r?e.length=r:delete this.__on}}}function Pr(t,e,n){return function(){var r=this.__on,i,o=Tr(e);if(r){for(var s=0,a=r.length;s<a;++s)if((i=r[s]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=n),i.value=e;return}}this.addEventListener(t.type,o,n),i={type:t.type,name:t.name,value:e,listener:o,options:n},r?r.push(i):this.__on=[i]}}function Fr(t,e,n){var r=Ir(t+""),i,o=r.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var c=0,l=a.length,u;c<l;++c)for(i=0,u=a[c];i<o;++i)if((s=r[i]).type===u.type&&s.name===u.name)return u.value}return}for(a=e?Pr:Or,i=0;i<o;++i)this.each(a(r[i],e,n));return this}function De(t,e,n){var r=Fe(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function Xr(t,e){return function(){return De(this,t,e)}}function Lr(t,e){return function(){return De(this,t,e.apply(this,arguments))}}function Yr(t,e){return this.each((typeof e=="function"?Lr:Xr)(t,e))}function*Hr(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length,s;i<o;++i)(s=r[i])&&(yield s)}var qe=[null];function B(t,e){this._groups=t,this._parents=e}function ut(){return new B([[document.documentElement]],qe)}function Dr(){return this}B.prototype=ut.prototype={constructor:B,select:dn,selectAll:yn,selectChild:bn,selectChildren:Nn,filter:Cn,data:Tn,enter:An,exit:On,join:Pn,merge:Fn,selection:Dr,order:Xn,sort:Ln,call:Hn,nodes:Dn,node:qn,size:Vn,empty:zn,each:Un,attr:jn,style:rr,property:ar,classed:fr,text:gr,html:_r,raise:vr,lower:$r,append:Er,insert:Nr,remove:Ar,clone:Rr,datum:Mr,on:Fr,dispatch:Yr,[Symbol.iterator]:Hr};function Lt(t){return typeof t=="string"?new B([[document.querySelector(t)]],[document.documentElement]):new B([[t]],qe)}function ee(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Ve(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function ft(){}var st=.7,St=1/st,G="\\s*([+-]?\\d+)\\s*",at="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",O="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",qr=/^#([0-9a-f]{3,8})$/,Vr=new RegExp(`^rgb\\(${G},${G},${G}\\)$`),zr=new RegExp(`^rgb\\(${O},${O},${O}\\)$`),Ur=new RegExp(`^rgba\\(${G},${G},${G},${at}\\)$`),Zr=new RegExp(`^rgba\\(${O},${O},${O},${at}\\)$`),Kr=new RegExp(`^hsl\\(${at},${O},${O}\\)$`),Gr=new RegExp(`^hsla\\(${at},${O},${O},${at}\\)$`),we={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};ee(ft,ct,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:ye,formatHex:ye,formatHex8:Wr,formatHsl:Jr,formatRgb:_e,toString:_e});function ye(){return this.rgb().formatHex()}function Wr(){return this.rgb().formatHex8()}function Jr(){return ze(this).formatHsl()}function _e(){return this.rgb().formatRgb()}function ct(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=qr.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?xe(e):n===3?new k(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?yt(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?yt(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Vr.exec(t))?new k(e[1],e[2],e[3],1):(e=zr.exec(t))?new k(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Ur.exec(t))?yt(e[1],e[2],e[3],e[4]):(e=Zr.exec(t))?yt(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Kr.exec(t))?$e(e[1],e[2]/100,e[3]/100,1):(e=Gr.exec(t))?$e(e[1],e[2]/100,e[3]/100,e[4]):we.hasOwnProperty(t)?xe(we[t]):t==="transparent"?new k(NaN,NaN,NaN,0):null}function xe(t){return new k(t>>16&255,t>>8&255,t&255,1)}function yt(t,e,n,r){return r<=0&&(t=e=n=NaN),new k(t,e,n,r)}function Qr(t){return t instanceof ft||(t=ct(t)),t?(t=t.rgb(),new k(t.r,t.g,t.b,t.opacity)):new k}function Vt(t,e,n,r){return arguments.length===1?Qr(t):new k(t,e,n,r??1)}function k(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}ee(k,Vt,Ve(ft,{brighter(t){return t=t==null?St:Math.pow(St,t),new k(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?st:Math.pow(st,t),new k(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new k(Z(this.r),Z(this.g),Z(this.b),Nt(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ve,formatHex:ve,formatHex8:jr,formatRgb:be,toString:be}));function ve(){return`#${U(this.r)}${U(this.g)}${U(this.b)}`}function jr(){return`#${U(this.r)}${U(this.g)}${U(this.b)}${U((isNaN(this.opacity)?1:this.opacity)*255)}`}function be(){const t=Nt(this.opacity);return`${t===1?"rgb(":"rgba("}${Z(this.r)}, ${Z(this.g)}, ${Z(this.b)}${t===1?")":`, ${t})`}`}function Nt(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Z(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function U(t){return t=Z(t),(t<16?"0":"")+t.toString(16)}function $e(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new M(t,e,n,r)}function ze(t){if(t instanceof M)return new M(t.h,t.s,t.l,t.opacity);if(t instanceof ft||(t=ct(t)),!t)return new M;if(t instanceof M)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,c=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new M(s,a,c,t.opacity)}function ti(t,e,n,r){return arguments.length===1?ze(t):new M(t,e,n,r??1)}function M(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}ee(M,ti,Ve(ft,{brighter(t){return t=t==null?St:Math.pow(St,t),new M(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?st:Math.pow(st,t),new M(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new k(Yt(t>=240?t-240:t+120,i,r),Yt(t,i,r),Yt(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new M(Ee(this.h),_t(this.s),_t(this.l),Nt(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Nt(this.opacity);return`${t===1?"hsl(":"hsla("}${Ee(this.h)}, ${_t(this.s)*100}%, ${_t(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Ee(t){return t=(t||0)%360,t<0?t+360:t}function _t(t){return Math.max(0,Math.min(1,t||0))}function Yt(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Ue=t=>()=>t;function ei(t,e){return function(n){return t+n*e}}function ni(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function ri(t){return(t=+t)==1?Ze:function(e,n){return n-e?ni(e,n,t):Ue(isNaN(e)?n:e)}}function Ze(t,e){var n=e-t;return n?ei(t,n):Ue(isNaN(t)?e:t)}const Se=(function t(e){var n=ri(e);function r(i,o){var s=n((i=Vt(i)).r,(o=Vt(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),l=Ze(i.opacity,o.opacity);return function(u){return i.r=s(u),i.g=a(u),i.b=c(u),i.opacity=l(u),i+""}}return r.gamma=t,r})(1);function H(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var zt=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Ht=new RegExp(zt.source,"g");function ii(t){return function(){return t}}function oi(t){return function(e){return t(e)+""}}function si(t,e){var n=zt.lastIndex=Ht.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=zt.exec(t))&&(i=Ht.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,c.push({i:s,x:H(r,i)})),n=Ht.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?oi(c[0].x):ii(e):(e=c.length,function(l){for(var u=0,p;u<e;++u)a[(p=c[u]).i]=p.x(l);return a.join("")})}var Ne=180/Math.PI,Ut={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Ke(t,e,n,r,i,o){var s,a,c;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,c/=a),t*r<e*n&&(t=-t,e=-e,c=-c,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Ne,skewX:Math.atan(c)*Ne,scaleX:s,scaleY:a}}var xt;function ai(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Ut:Ke(e.a,e.b,e.c,e.d,e.e,e.f)}function ci(t){return t==null||(xt||(xt=document.createElementNS("http://www.w3.org/2000/svg","g")),xt.setAttribute("transform",t),!(t=xt.transform.baseVal.consolidate()))?Ut:(t=t.matrix,Ke(t.a,t.b,t.c,t.d,t.e,t.f))}function Ge(t,e,n,r){function i(l){return l.length?l.pop()+" ":""}function o(l,u,p,d,g,m){if(l!==p||u!==d){var E=g.push("translate(",null,e,null,n);m.push({i:E-4,x:H(l,p)},{i:E-2,x:H(u,d)})}else(p||d)&&g.push("translate("+p+e+d+n)}function s(l,u,p,d){l!==u?(l-u>180?u+=360:u-l>180&&(l+=360),d.push({i:p.push(i(p)+"rotate(",null,r)-2,x:H(l,u)})):u&&p.push(i(p)+"rotate("+u+r)}function a(l,u,p,d){l!==u?d.push({i:p.push(i(p)+"skewX(",null,r)-2,x:H(l,u)}):u&&p.push(i(p)+"skewX("+u+r)}function c(l,u,p,d,g,m){if(l!==p||u!==d){var E=g.push(i(g)+"scale(",null,",",null,")");m.push({i:E-4,x:H(l,p)},{i:E-2,x:H(u,d)})}else(p!==1||d!==1)&&g.push(i(g)+"scale("+p+","+d+")")}return function(l,u){var p=[],d=[];return l=t(l),u=t(u),o(l.translateX,l.translateY,u.translateX,u.translateY,p,d),s(l.rotate,u.rotate,p,d),a(l.skewX,u.skewX,p,d),c(l.scaleX,l.scaleY,u.scaleX,u.scaleY,p,d),l=u=null,function(g){for(var m=-1,E=d.length,A;++m<E;)p[(A=d[m]).i]=A.x(g);return p.join("")}}}var li=Ge(ai,"px, ","px)","deg)"),ui=Ge(ci,", ",")",")"),J=0,nt=0,et=0,We=1e3,Ct,rt,At=0,K=0,Rt=0,lt=typeof performance=="object"&&performance.now?performance:Date,Je=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function ne(){return K||(Je(fi),K=lt.now()+Rt)}function fi(){K=0}function kt(){this._call=this._time=this._next=null}kt.prototype=Qe.prototype={constructor:kt,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?ne():+n)+(e==null?0:+e),!this._next&&rt!==this&&(rt?rt._next=this:Ct=this,rt=this),this._call=t,this._time=n,Zt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Zt())}};function Qe(t,e,n){var r=new kt;return r.restart(t,e,n),r}function hi(){ne(),++J;for(var t=Ct,e;t;)(e=K-t._time)>=0&&t._call.call(void 0,e),t=t._next;--J}function Ce(){K=(At=lt.now())+Rt,J=nt=0;try{hi()}finally{J=0,di(),K=0}}function pi(){var t=lt.now(),e=t-At;e>We&&(Rt-=e,At=t)}function di(){for(var t,e=Ct,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Ct=n);rt=t,Zt(r)}function Zt(t){if(!J){nt&&(nt=clearTimeout(nt));var e=t-K;e>24?(t<1/0&&(nt=setTimeout(Ce,t-lt.now()-Rt)),et&&(et=clearInterval(et))):(et||(At=lt.now(),et=setInterval(pi,We)),J=1,Je(Ce))}}function Ae(t,e,n){var r=new kt;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var gi=Re("start","end","cancel","interrupt"),mi=[],je=0,ke=1,Kt=2,bt=3,Be=4,Gt=5,$t=6;function Mt(t,e,n,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(n in s)return;wi(t,n,{name:e,index:r,group:i,on:gi,tween:mi,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:je})}function re(t,e){var n=T(t,e);if(n.state>je)throw new Error("too late; already scheduled");return n}function P(t,e){var n=T(t,e);if(n.state>bt)throw new Error("too late; already running");return n}function T(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function wi(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=Qe(o,0,n.time);function o(l){n.state=ke,n.timer.restart(s,n.delay,n.time),n.delay<=l&&s(l-n.delay)}function s(l){var u,p,d,g;if(n.state!==ke)return c();for(u in r)if(g=r[u],g.name===n.name){if(g.state===bt)return Ae(s);g.state===Be?(g.state=$t,g.timer.stop(),g.on.call("interrupt",t,t.__data__,g.index,g.group),delete r[u]):+u<e&&(g.state=$t,g.timer.stop(),g.on.call("cancel",t,t.__data__,g.index,g.group),delete r[u])}if(Ae(function(){n.state===bt&&(n.state=Be,n.timer.restart(a,n.delay,n.time),a(l))}),n.state=Kt,n.on.call("start",t,t.__data__,n.index,n.group),n.state===Kt){for(n.state=bt,i=new Array(d=n.tween.length),u=0,p=-1;u<d;++u)(g=n.tween[u].value.call(t,t.__data__,n.index,n.group))&&(i[++p]=g);i.length=p+1}}function a(l){for(var u=l<n.duration?n.ease.call(null,l/n.duration):(n.timer.restart(c),n.state=Gt,1),p=-1,d=i.length;++p<d;)i[p].call(t,u);n.state===Gt&&(n.on.call("end",t,t.__data__,n.index,n.group),c())}function c(){n.state=$t,n.timer.stop(),delete r[e];for(var l in r)return;delete t.__transition}}function yi(t,e){var n=t.__transition,r,i,o=!0,s;if(n){e=e==null?null:e+"";for(s in n){if((r=n[s]).name!==e){o=!1;continue}i=r.state>Kt&&r.state<Gt,r.state=$t,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[s]}o&&delete t.__transition}}function _i(t){return this.each(function(){yi(this,t)})}function xi(t,e){var n,r;return function(){var i=P(this,t),o=i.tween;if(o!==n){r=n=o;for(var s=0,a=r.length;s<a;++s)if(r[s].name===e){r=r.slice(),r.splice(s,1);break}}i.tween=r}}function vi(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var o=P(this,t),s=o.tween;if(s!==r){i=(r=s).slice();for(var a={name:e,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===e){i[c]=a;break}c===l&&i.push(a)}o.tween=i}}function bi(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=T(this.node(),n).tween,i=0,o=r.length,s;i<o;++i)if((s=r[i]).name===t)return s.value;return null}return this.each((e==null?xi:vi)(n,t,e))}function ie(t,e,n){var r=t._id;return t.each(function(){var i=P(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return T(i,r).value[e]}}function tn(t,e){var n;return(typeof e=="number"?H:e instanceof ct?Se:(n=ct(e))?(e=n,Se):si)(t,e)}function $i(t){return function(){this.removeAttribute(t)}}function Ei(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Si(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttribute(t);return s===i?null:s===r?o:o=e(r=s,n)}}function Ni(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===r?o:o=e(r=s,n)}}function Ci(t,e,n){var r,i,o;return function(){var s,a=n(this),c;return a==null?void this.removeAttribute(t):(s=this.getAttribute(t),c=a+"",s===c?null:s===r&&c===i?o:(i=c,o=e(r=s,a)))}}function Ai(t,e,n){var r,i,o;return function(){var s,a=n(this),c;return a==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),c=a+"",s===c?null:s===r&&c===i?o:(i=c,o=e(r=s,a)))}}function ki(t,e){var n=Bt(t),r=n==="transform"?ui:tn;return this.attrTween(t,typeof e=="function"?(n.local?Ai:Ci)(n,r,ie(this,"attr."+t,e)):e==null?(n.local?Ei:$i)(n):(n.local?Ni:Si)(n,r,e))}function Bi(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function Ri(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Mi(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&Ri(t,o)),n}return i._value=e,i}function Ti(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&Bi(t,o)),n}return i._value=e,i}function Ii(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=Bt(t);return this.tween(n,(r.local?Mi:Ti)(r,e))}function Oi(t,e){return function(){re(this,t).delay=+e.apply(this,arguments)}}function Pi(t,e){return e=+e,function(){re(this,t).delay=e}}function Fi(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Oi:Pi)(e,t)):T(this.node(),e).delay}function Xi(t,e){return function(){P(this,t).duration=+e.apply(this,arguments)}}function Li(t,e){return e=+e,function(){P(this,t).duration=e}}function Yi(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Xi:Li)(e,t)):T(this.node(),e).duration}function Hi(t,e){if(typeof e!="function")throw new Error;return function(){P(this,t).ease=e}}function Di(t){var e=this._id;return arguments.length?this.each(Hi(e,t)):T(this.node(),e).ease}function qi(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;P(this,t).ease=n}}function Vi(t){if(typeof t!="function")throw new Error;return this.each(qi(this._id,t))}function zi(t){typeof t!="function"&&(t=Ie(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=[],c,l=0;l<s;++l)(c=o[l])&&t.call(c,c.__data__,l,o)&&a.push(c);return new L(r,this._parents,this._name,this._id)}function Ui(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),s=new Array(r),a=0;a<o;++a)for(var c=e[a],l=n[a],u=c.length,p=s[a]=new Array(u),d,g=0;g<u;++g)(d=c[g]||l[g])&&(p[g]=d);for(;a<r;++a)s[a]=e[a];return new L(s,this._parents,this._name,this._id)}function Zi(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function Ki(t,e,n){var r,i,o=Zi(e)?re:P;return function(){var s=o(this,t),a=s.on;a!==r&&(i=(r=a).copy()).on(e,n),s.on=i}}function Gi(t,e){var n=this._id;return arguments.length<2?T(this.node(),n).on.on(t):this.each(Ki(n,t,e))}function Wi(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function Ji(){return this.on("end.remove",Wi(this._id))}function Qi(t){var e=this._name,n=this._id;typeof t!="function"&&(t=jt(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s<i;++s)for(var a=r[s],c=a.length,l=o[s]=new Array(c),u,p,d=0;d<c;++d)(u=a[d])&&(p=t.call(u,u.__data__,d,a))&&("__data__"in u&&(p.__data__=u.__data__),l[d]=p,Mt(l[d],e,n,d,l,T(u,n)));return new L(o,this._parents,e,n)}function ji(t){var e=this._name,n=this._id;typeof t!="function"&&(t=Te(t));for(var r=this._groups,i=r.length,o=[],s=[],a=0;a<i;++a)for(var c=r[a],l=c.length,u,p=0;p<l;++p)if(u=c[p]){for(var d=t.call(u,u.__data__,p,c),g,m=T(u,n),E=0,A=d.length;E<A;++E)(g=d[E])&&Mt(g,e,n,E,d,m);o.push(d),s.push(u)}return new L(o,s,e,n)}var to=ut.prototype.constructor;function eo(){return new to(this._groups,this._parents)}function no(t,e){var n,r,i;return function(){var o=W(this,t),s=(this.style.removeProperty(t),W(this,t));return o===s?null:o===n&&s===r?i:i=e(n=o,r=s)}}function en(t){return function(){this.style.removeProperty(t)}}function ro(t,e,n){var r,i=n+"",o;return function(){var s=W(this,t);return s===i?null:s===r?o:o=e(r=s,n)}}function io(t,e,n){var r,i,o;return function(){var s=W(this,t),a=n(this),c=a+"";return a==null&&(c=a=(this.style.removeProperty(t),W(this,t))),s===c?null:s===r&&c===i?o:(i=c,o=e(r=s,a))}}function oo(t,e){var n,r,i,o="style."+e,s="end."+o,a;return function(){var c=P(this,t),l=c.on,u=c.value[o]==null?a||(a=en(e)):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(s,i=u),c.on=r}}function so(t,e,n){var r=(t+="")=="transform"?li:tn;return e==null?this.styleTween(t,no(t,r)).on("end.style."+t,en(t)):typeof e=="function"?this.styleTween(t,io(t,r,ie(this,"style."+t,e))).each(oo(this._id,t)):this.styleTween(t,ro(t,r,e),n).on("end.style."+t,null)}function ao(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function co(t,e,n){var r,i;function o(){var s=e.apply(this,arguments);return s!==i&&(r=(i=s)&&ao(t,s,n)),r}return o._value=e,o}function lo(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,co(t,e,n??""))}function uo(t){return function(){this.textContent=t}}function fo(t){return function(){var e=t(this);this.textContent=e??""}}function ho(t){return this.tween("text",typeof t=="function"?fo(ie(this,"text",t)):uo(t==null?"":t+""))}function po(t){return function(e){this.textContent=t.call(this,e)}}function go(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&po(i)),e}return r._value=t,r}function mo(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,go(t))}function wo(){for(var t=this._name,e=this._id,n=nn(),r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,c,l=0;l<a;++l)if(c=s[l]){var u=T(c,e);Mt(c,t,n,l,s,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new L(r,this._parents,t,n)}function yo(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(o,s){var a={value:s},c={value:function(){--i===0&&o()}};n.each(function(){var l=P(this,r),u=l.on;u!==t&&(e=(t=u).copy(),e._.cancel.push(a),e._.interrupt.push(a),e._.end.push(c)),l.on=e}),i===0&&o()})}var _o=0;function L(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function nn(){return++_o}var X=ut.prototype;L.prototype={constructor:L,select:Qi,selectAll:ji,selectChild:X.selectChild,selectChildren:X.selectChildren,filter:zi,merge:Ui,selection:eo,transition:wo,call:X.call,nodes:X.nodes,node:X.node,size:X.size,empty:X.empty,each:X.each,on:Gi,attr:ki,attrTween:Ii,style:so,styleTween:lo,text:ho,textTween:mo,remove:Ji,tween:bi,delay:Fi,duration:Yi,ease:Di,easeVarying:Vi,end:yo,[Symbol.iterator]:X[Symbol.iterator]};function xo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var vo={time:null,delay:0,duration:250,ease:xo};function bo(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function $o(t){var e,n;t instanceof L?(e=t._id,t=t._name):(e=nn(),(n=vo).time=ne(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,c,l=0;l<a;++l)(c=s[l])&&Mt(c,t,e,l,s,n||bo(c,e));return new L(r,this._parents,t,e)}ut.prototype.interrupt=_i;ut.prototype.transition=$o;function it(t,e,n){this.k=t,this.x=e,this.y=n}it.prototype={constructor:it,scale:function(t){return t===1?this:new it(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new it(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};it.prototype;let R=[],ot=[],Wt=[],D=new Map,Dt="",z=1,Jt={};async function Eo(){const t=await window.gitopo.git.exec("rev-parse --show-toplevel");if(t.success){const e=t.output.trim();return e.split("/").pop()||e}return"Unknown Repository"}async function So(){const t=await window.gitopo.config.get();return t.success?t.config:(console.error("Failed to fetch config:",t.error),{})}async function No(){const t=await window.gitopo.gh.exec("pr list --state open --json number,title,headRefName,headRefOid");if(!t.success)return console.error("Failed to fetch pull requests:",t.error),[];try{return JSON.parse(t.output).map(n=>({number:n.number,title:n.title,branch:n.headRefName,headCommit:n.headRefOid}))}catch(e){return console.error("Failed to parse PR data:",e),[]}}async function Co(){const t=await window.gitopo.git.exec('log --all --format="%H|%P|%ct|%s" --date-order -1000');if(!t.success)return console.error("Failed to fetch commits:",t.error),[];const e=[],n=t.output.trim().split(`
2
+ `);for(const r of n){const i=r.split("|");if(i.length>=4){const o=i[0],s=i[1],a=parseInt(i[2],10),c=i.slice(3).join("|"),l=s.trim()?s.trim().split(" "):[];e.push({hash:o,parents:l,timestamp:a,message:c})}}return e.sort((r,i)=>i.timestamp-r.timestamp),e}async function Ao(){const t=await window.gitopo.git.exec('branch -a --format="%(refname:short) %(objectname)"');if(!t.success)return console.error("Failed to fetch branches:",t.error),[];const e=[],n=t.output.trim().split(`
3
+ `);for(const r of n){const i=r.trim().split(" ");if(i.length>=2){const o=i[0],s=i[1];e.push({name:o,hash:s})}}return e}function ko(t){const e=["branch1","branch2","branch3"],n=Jt.keyBranches||[],r=t.find(i=>i.name==="main"||i.name==="master");e.forEach((i,o)=>{const s=document.getElementById(i);s.innerHTML="";const a=document.createElement("option");if(a.value="",a.textContent="----",s.appendChild(a),t.forEach(c=>{const l=document.createElement("option");l.value=c.name,l.textContent=c.name,s.appendChild(l)}),n[o]){const c=t.find(l=>l.name===n[o]);c&&(s.value=c.name)}else o===0&&r&&(s.value=r.name);s.addEventListener("change",()=>Qt())})}function Bo(t){const e=ot.find(i=>i.name===t);if(!e)return new Set;const n=new Set;let r=e.hash;for(;r;){n.add(r);const i=D.get(r);if(i&&i.parents.length>0)r=i.parents[0];else break}return n}function Ro(t,e=new Set){const n=[],r=new Set,i=new Map;for(const c of R)for(const l of c.parents)i.has(l)||i.set(l,[]),i.get(l).push(c.hash);function o(c){const l=new Set,u=[c];for(;u.length>0;){const p=u.pop();if(l.has(p)||t.has(p)||e.has(p)||r.has(p))continue;const d=D.get(p);if(!d)continue;l.add(p);for(const m of d.parents)!t.has(m)&&!e.has(m)&&!l.has(m)&&u.push(m);const g=i.get(p)||[];for(const m of g)!t.has(m)&&!e.has(m)&&!l.has(m)&&u.push(m)}return l}function s(c){for(const l of c){const u=D.get(l);if(u){for(const p of u.parents)if(!t.has(p)&&!c.has(p))return!1}}return!0}function a(c){for(const l of t){const u=D.get(l);if(!(!u||u.parents.length<2)){for(let p=1;p<u.parents.length;p++)if(c.has(u.parents[p]))return l}}return null}for(const c of R){if(t.has(c.hash)||e.has(c.hash)||r.has(c.hash))continue;const l=o(c.hash);l.size>0&&s(l)&&(l.forEach(u=>r.add(u)),n.push({mergeCommit:a(l),commits:l}))}return n}function Mo(){const t=[];return["branch1","branch2","branch3"].forEach(e=>{const n=document.getElementById(e);n&&n.value&&t.push(n.value)}),t}function Qt(){const t=Lt("#graph");t.selectAll("*").remove();const e=Lt("#app");e.selectAll(".tooltip").remove();const n=document.getElementById("controls").offsetHeight,r=window.innerWidth,i=window.innerHeight-n;t.attr("width",r).attr("height",i);const o=6,s=30,a=150,c=30,l=50,u=50,d=Mo().map(f=>({name:f,lineage:Bo(f)})),g=new Set;d.forEach(({lineage:f})=>{f.forEach(h=>g.add(h))});const m=d.map(({name:f,lineage:h})=>{const w=new Set;d.forEach(y=>{y.name!==f&&y.lineage.forEach(_=>w.add(_))});const v=Ro(h,w);return{name:f,lineage:h,subBranches:v}}),E=new Map;ot.forEach(f=>{E.has(f.hash)||E.set(f.hash,[]),E.get(f.hash).push(f.name)});const A=new Map;R.forEach(f=>{A.set(f.hash,{mainCol:m.length,subOffset:0,isSubBranch:!1})}),m.forEach((f,h)=>{for(const w of f.lineage)A.set(w,{mainCol:h,subOffset:0,isSubBranch:!1})});let Tt=0;m.forEach((f,h)=>{const w=new Map;[...f.subBranches].sort((y,_)=>{const $=x=>{let b=1/0;return x.commits.forEach(S=>{const C=D.get(S);C&&C.timestamp<b&&(b=C.timestamp)}),b};return $(y)-$(_)}).forEach(y=>{const _=`sb-${Tt++}`,$=[];y.commits.forEach(S=>{const C=R.findIndex(j=>j.hash===S);C>=0&&$.push(C)});let x=1,b=!0;for(;b;){b=!1;for(const S of $)if((w.get(S)||new Set).has(x)){b=!0,x++;break}}for(const S of $)w.has(S)||w.set(S,new Set),w.get(S).add(x);y.commits.forEach(S=>{A.set(S,{mainCol:h,subOffset:x,isSubBranch:!0,subBranchId:_})})})});const I=new Map;let q=u;for(let f=0;f<=m.length;f++)if(I.set(f,q),f<m.length){let h=0;R.forEach(w=>{const v=A.get(w.hash);v.mainCol===f&&v.subOffset>h&&(h=v.subOffset)}),q+=a+h*c}const N=new Map;R.forEach((f,h)=>{const w=A.get(f.hash),y=I.get(w.mainCol)+w.subOffset*c;N.set(f.hash,{col:w.mainCol,subOffset:w.subOffset,row:h,x:y,y:l+h*s,isSubBranch:w.isSubBranch,subBranchId:w.subBranchId||null})});const ht=Array.from(A.values()).some(f=>f.mainCol===m.length),F=t.append("g").attr("class","main-group"),It=t.append("g").attr("class","header-group"),Ot=e.append("div").attr("class","tooltip").style("opacity",0),pt=["#4CAF50","#2196F3","#FF9800"],oe=20;m.forEach((f,h)=>{It.append("text").attr("x",I.get(h)).attr("y",oe).attr("text-anchor","middle").attr("fill",pt[h]||"#888").attr("font-size","14px").attr("font-weight","bold").text(f.name)}),ht&&It.append("text").attr("x",I.get(m.length)).attr("y",oe).attr("text-anchor","middle").attr("fill","#888").attr("font-size","14px").text("Other");const dt=new Map;R.forEach(f=>{f.parents.forEach(h=>{dt.has(h)||dt.set(h,[]),dt.get(h).push(f.hash)})});const rn=new Set;m.forEach(f=>{f.lineage.forEach(h=>rn.add(h))});function se(f){const h=[],w=new Set;function v(_){if(w.has(_))return;w.add(_);const $=D.get(_);$&&$.parents.forEach(x=>{h.push({source:_,target:x});const b=N.get(x);b&&b.col===m.length&&!b.isSubBranch&&v(x)})}function y(_){if(w.has(_))return;w.add(_),(dt.get(_)||[]).forEach(x=>{h.push({source:x,target:_});const b=N.get(x);b&&b.col===m.length&&!b.isSubBranch&&y(x)})}return v(f),w.delete(f),y(f),h}R.forEach(f=>{const h=N.get(f.hash);h&&f.parents.forEach(w=>{const v=N.get(w);if(v){const y=h.col===m.length||v.col===m.length,_=h.x,$=h.y*z,x=v.x,b=v.y*z;let S;if(_===x)S=`M ${_} ${$} L ${x} ${b}`;else{const wt=($+b)/2;S=`M ${_} ${$} C ${_} ${wt}, ${x} ${wt}, ${x} ${b}`}const C=h.subBranchId||v.subBranchId||null,j=h.isSubBranch||v.isSubBranch,sn=!j&&!y&&h.col<m.length;let Xt="#666";y?Xt="#444":h.col<m.length&&(Xt=pt[h.col]||"#666");let tt=1.5;y?tt=1:sn?tt=3:j&&(tt=1.5);const an=F.append("path").attr("d",S).attr("fill","none").attr("stroke",Xt).attr("stroke-width",tt).attr("stroke-opacity",y?.4:j?.5:.8).attr("stroke-dasharray",y?"4,4":"none").attr("class",C?`edge edge-${C}`:"edge").attr("data-source",f.hash).attr("data-target",w);if(C){const wt=tt;an.style("cursor","pointer").on("mouseenter",()=>{F.selectAll(`.edge-${C}`).attr("stroke-width",3).attr("stroke-opacity",.9)}).on("mouseleave",()=>{F.selectAll(`.edge-${C}`).attr("stroke-width",wt).attr("stroke-opacity",.5)})}}})});const Q=new Map;Wt.forEach(f=>{Q.set(f.headCommit,f)});const Pt=F.selectAll("g.node").data(R).enter().append("g").attr("class","node").attr("transform",f=>{const h=N.get(f.hash);return h?`translate(${h.x}, ${h.y*z})`:"translate(-100, -100)"});Pt.filter(f=>Q.has(f.hash)).append("circle").attr("r",o+6).attr("fill","none").attr("stroke","#888").attr("stroke-width",2).attr("stroke-dasharray","3,2"),Pt.append("circle").attr("r",f=>{const h=N.get(f.hash);return h.isSubBranch?o*.6:h.col<m.length?o:o*.7}).attr("fill",f=>{const h=N.get(f.hash);return h.col<m.length?pt[h.col]||"#fff":h.isSubBranch?"#a0a0a0":"#888"}).attr("stroke",f=>{const h=N.get(f.hash);return h.col<m.length&&pt[h.col]||"#333"}).attr("stroke-width",f=>{const h=N.get(f.hash);return h.isSubBranch?1:h.col<m.length?2:1}).style("cursor","pointer").on("mouseenter",(f,h)=>{const w=E.get(h.hash),v=w?`[${w.join(", ")}]<br/>`:"",y=Q.get(h.hash),_=y?`<span class="pr-info">PR #${y.number}: ${y.title}</span><br/>`:"",$=new Date(h.timestamp*1e3).toLocaleString();Ot.html(`<strong>${h.hash.substring(0,7)}</strong><br/>${_}${v}${h.message}<br/><span class="date">${$}</span>`).style("left",f.pageX+15+"px").style("top",f.pageY-10+"px").style("opacity",1);const x=N.get(h.hash);x&&x.col===m.length&&!x.isSubBranch&&se(h.hash).forEach(({source:S,target:C})=>{F.selectAll(`path.edge[data-source="${S}"][data-target="${C}"]`).attr("stroke-width",3).attr("stroke-opacity",.9)})}).on("mousemove",f=>{Ot.style("left",f.pageX+15+"px").style("top",f.pageY-10+"px")}).on("mouseleave",(f,h)=>{Ot.style("opacity",0);const w=N.get(h.hash);w&&w.col===m.length&&!w.isSubBranch&&se(h.hash).forEach(({source:y,target:_})=>{F.selectAll(`path.edge[data-source="${y}"][data-target="${_}"]`).attr("stroke-width",1).attr("stroke-opacity",.4)})}),Pt.filter(f=>Q.has(f.hash)).append("text").attr("x",o+10).attr("y",4).attr("fill","#ccc").attr("font-size","11px").text(f=>{const h=Q.get(f.hash);return`PR #${h.number}: ${h.title.substring(0,30)}${h.title.length>30?"...":""}`});let V=0,Y=0,gt=!1,ae=0,ce=0,le=0,ue=0;function Ft(f){return f*z}function mt(){F.attr("transform",`translate(${V}, ${Y})`),It.attr("transform",`translate(${V}, 0)`)}function on(){F.selectAll("g.node").attr("transform",f=>{const h=N.get(f.hash);return h?`translate(${h.x}, ${Ft(h.y)})`:"translate(-100, -100)"}),F.selectAll("path.edge").attr("d",function(){const f=Lt(this),h=f.attr("data-source"),w=f.attr("data-target"),v=N.get(h),y=N.get(w);if(!v||!y)return"";const _=v.x,$=Ft(v.y),x=y.x,b=Ft(y.y);if(_===x)return`M ${_} ${$} L ${x} ${b}`;{const S=($+b)/2;return`M ${_} ${$} C ${_} ${S}, ${x} ${S}, ${x} ${b}`}})}t.on("wheel",f=>{if(f.preventDefault(),f.ctrlKey||f.metaKey){const h=f.deltaY>0?.9:1.1,y=Math.max(.1,Math.min(5,z*h)),_=t.node().getBoundingClientRect(),$=f.clientY-_.top,x=$-Y;Y=$-x*(y/z),z=y,on(),mt()}else V-=f.deltaX,Y-=f.deltaY,mt()}),t.on("mousedown",f=>{f.button===0&&(gt=!0,ae=f.clientX,ce=f.clientY,le=V,ue=Y,f.preventDefault())}),t.on("mousemove",f=>{gt&&(V=le+(f.clientX-ae),Y=ue+(f.clientY-ce),mt())}),t.on("mouseup",f=>{f.button===0&&(gt=!1)}),t.on("mouseleave",()=>{gt=!1});let fe=0,he=0,pe=0,de=0;t.on("touchstart",f=>{if(f.touches.length===1){const h=f.touches[0];fe=h.clientX,he=h.clientY,pe=V,de=Y}}),t.on("touchmove",f=>{if(f.touches.length===1){f.preventDefault();const h=f.touches[0];V=pe+(h.clientX-fe),Y=de+(h.clientY-he),mt()}}),t.on("contextmenu",f=>{f.preventDefault()})}async function To(){[R,ot,Dt,Wt,Jt]=await Promise.all([Co(),Ao(),Eo(),No(),So()]),document.getElementById("repo-name").textContent=Dt,D.clear(),R.forEach(t=>D.set(t.hash,t)),console.log("Repository:",Dt),console.log("Commits:",R.length),console.log("Branches:",ot.length),console.log("Open PRs:",Wt.length),console.log("Config:",Jt),ko(ot),Qt(),window.addEventListener("resize",()=>{Qt()})}To();
@@ -0,0 +1 @@
1
+ *{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#1a1a2e;color:#eee;overflow:hidden}#app{width:100vw;height:100vh}#graph{width:100%;height:100%}
@@ -0,0 +1,3 @@
1
+ (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();var hn={value:()=>{}};function Ie(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new bt(n)}function bt(t){this._=t}function dn(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}bt.prototype=Ie.prototype={constructor:bt,on:function(t,e){var n=this._,r=dn(t+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o<s;)if((i=(t=r[o]).type)&&(i=pn(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++o<s;)if(i=(t=r[o]).type)n[i]=me(n[i],t.name,e);else if(e==null)for(i in n)n[i]=me(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new bt(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,o;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(e,n)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};function pn(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function me(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=hn,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}var zt="http://www.w3.org/1999/xhtml";const ye={svg:"http://www.w3.org/2000/svg",xhtml:zt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function It(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),ye.hasOwnProperty(e)?{space:ye[e],local:t}:t}function gn(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===zt&&e.documentElement.namespaceURI===zt?e.createElement(t):e.createElementNS(n,t)}}function mn(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Me(t){var e=It(t);return(e.local?mn:gn)(e)}function yn(){}function te(t){return t==null?yn:function(){return this.querySelector(t)}}function wn(t){typeof t!="function"&&(t=te(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=new Array(s),c,l,u=0;u<s;++u)(c=o[u])&&(l=t.call(c,c.__data__,u,o))&&("__data__"in c&&(l.__data__=c.__data__),a[u]=l);return new R(r,this._parents)}function _n(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function xn(){return[]}function Te(t){return t==null?xn:function(){return this.querySelectorAll(t)}}function vn(t){return function(){return _n(t.apply(this,arguments))}}function bn(t){typeof t=="function"?t=vn(t):t=Te(t);for(var e=this._groups,n=e.length,r=[],i=[],o=0;o<n;++o)for(var s=e[o],a=s.length,c,l=0;l<a;++l)(c=s[l])&&(r.push(t.call(c,c.__data__,l,s)),i.push(c));return new R(r,i)}function Le(t){return function(){return this.matches(t)}}function Oe(t){return function(e){return e.matches(t)}}var $n=Array.prototype.find;function En(t){return function(){return $n.call(this.children,t)}}function Sn(){return this.firstElementChild}function Nn(t){return this.select(t==null?Sn:En(typeof t=="function"?t:Oe(t)))}var Cn=Array.prototype.filter;function An(){return Array.from(this.children)}function kn(t){return function(){return Cn.call(this.children,t)}}function Bn(t){return this.selectAll(t==null?An:kn(typeof t=="function"?t:Oe(t)))}function Rn(t){typeof t!="function"&&(t=Le(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=[],c,l=0;l<s;++l)(c=o[l])&&t.call(c,c.__data__,l,o)&&a.push(c);return new R(r,this._parents)}function Pe(t){return new Array(t.length)}function In(){return new R(this._enter||this._groups.map(Pe),this._parents)}function St(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}St.prototype={constructor:St,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function Mn(t){return function(){return t}}function Tn(t,e,n,r,i,o){for(var s=0,a,c=e.length,l=o.length;s<l;++s)(a=e[s])?(a.__data__=o[s],r[s]=a):n[s]=new St(t,o[s]);for(;s<c;++s)(a=e[s])&&(i[s]=a)}function Ln(t,e,n,r,i,o,s){var a,c,l=new Map,u=e.length,d=o.length,p=new Array(u),g;for(a=0;a<u;++a)(c=e[a])&&(p[a]=g=s.call(c,c.__data__,a,e)+"",l.has(g)?i[a]=c:l.set(g,c));for(a=0;a<d;++a)g=s.call(t,o[a],a,o)+"",(c=l.get(g))?(r[a]=c,c.__data__=o[a],l.delete(g)):n[a]=new St(t,o[a]);for(a=0;a<u;++a)(c=e[a])&&l.get(p[a])===c&&(i[a]=c)}function On(t){return t.__data__}function Pn(t,e){if(!arguments.length)return Array.from(this,On);var n=e?Ln:Tn,r=this._parents,i=this._groups;typeof t!="function"&&(t=Mn(t));for(var o=i.length,s=new Array(o),a=new Array(o),c=new Array(o),l=0;l<o;++l){var u=r[l],d=i[l],p=d.length,g=Fn(t.call(u,u&&u.__data__,l,r)),m=g.length,E=a[l]=new Array(m),k=s[l]=new Array(m),Lt=c[l]=new Array(p);n(u,d,E,k,Lt,g,e);for(var T=0,V=0,N,dt;T<m;++T)if(N=E[T]){for(T>=V&&(V=T+1);!(dt=k[V])&&++V<m;);N._next=dt||null}}return s=new R(s,r),s._enter=a,s._exit=c,s}function Fn(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Xn(){return new R(this._exit||this._groups.map(Pe),this._parents)}function Yn(t,e,n){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?o.remove():n(o),r&&i?r.merge(i).order():i}function Hn(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,s=Math.min(i,o),a=new Array(i),c=0;c<s;++c)for(var l=n[c],u=r[c],d=l.length,p=a[c]=new Array(d),g,m=0;m<d;++m)(g=l[m]||u[m])&&(p[m]=g);for(;c<i;++c)a[c]=n[c];return new R(a,this._parents)}function qn(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,o=r[i],s;--i>=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function Dn(t){t||(t=Vn);function e(d,p){return d&&p?t(d.__data__,p.__data__):!d-!p}for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var s=n[o],a=s.length,c=i[o]=new Array(a),l,u=0;u<a;++u)(l=s[u])&&(c[u]=l);c.sort(e)}return new R(i,this._parents).order()}function Vn(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function zn(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Un(){return Array.from(this)}function Zn(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var s=r[i];if(s)return s}return null}function Kn(){let t=0;for(const e of this)++t;return t}function Gn(){return!this.node()}function Wn(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],o=0,s=i.length,a;o<s;++o)(a=i[o])&&t.call(a,a.__data__,o,i);return this}function Jn(t){return function(){this.removeAttribute(t)}}function Qn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function jn(t,e){return function(){this.setAttribute(t,e)}}function tr(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function er(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function nr(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function rr(t,e){var n=It(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?Qn:Jn:typeof e=="function"?n.local?nr:er:n.local?tr:jn)(n,e))}function Fe(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ir(t){return function(){this.style.removeProperty(t)}}function or(t,e,n){return function(){this.style.setProperty(t,e,n)}}function sr(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function ar(t,e,n){return arguments.length>1?this.each((e==null?ir:typeof e=="function"?sr:or)(t,e,n??"")):J(this.node(),t)}function J(t,e){return t.style.getPropertyValue(e)||Fe(t).getComputedStyle(t,null).getPropertyValue(e)}function cr(t){return function(){delete this[t]}}function lr(t,e){return function(){this[t]=e}}function ur(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function fr(t,e){return arguments.length>1?this.each((e==null?cr:typeof e=="function"?ur:lr)(t,e)):this.node()[t]}function Xe(t){return t.trim().split(/^|\s+/)}function ee(t){return t.classList||new Ye(t)}function Ye(t){this._node=t,this._names=Xe(t.getAttribute("class")||"")}Ye.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function He(t,e){for(var n=ee(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function qe(t,e){for(var n=ee(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function hr(t){return function(){He(this,t)}}function dr(t){return function(){qe(this,t)}}function pr(t,e){return function(){(e.apply(this,arguments)?He:qe)(this,t)}}function gr(t,e){var n=Xe(t+"");if(arguments.length<2){for(var r=ee(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?pr:e?hr:dr)(n,e))}function mr(){this.textContent=""}function yr(t){return function(){this.textContent=t}}function wr(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function _r(t){return arguments.length?this.each(t==null?mr:(typeof t=="function"?wr:yr)(t)):this.node().textContent}function xr(){this.innerHTML=""}function vr(t){return function(){this.innerHTML=t}}function br(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function $r(t){return arguments.length?this.each(t==null?xr:(typeof t=="function"?br:vr)(t)):this.node().innerHTML}function Er(){this.nextSibling&&this.parentNode.appendChild(this)}function Sr(){return this.each(Er)}function Nr(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Cr(){return this.each(Nr)}function Ar(t){var e=typeof t=="function"?t:Me(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function kr(){return null}function Br(t,e){var n=typeof t=="function"?t:Me(t),r=e==null?kr:typeof e=="function"?e:te(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Rr(){var t=this.parentNode;t&&t.removeChild(this)}function Ir(){return this.each(Rr)}function Mr(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Tr(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Lr(t){return this.select(t?Tr:Mr)}function Or(t){return arguments.length?this.property("__data__",t):this.node().__data__}function Pr(t){return function(e){t.call(this,e,this.__data__)}}function Fr(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function Xr(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n<i;++n)o=e[n],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):e[++r]=o;++r?e.length=r:delete this.__on}}}function Yr(t,e,n){return function(){var r=this.__on,i,o=Pr(e);if(r){for(var s=0,a=r.length;s<a;++s)if((i=r[s]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=n),i.value=e;return}}this.addEventListener(t.type,o,n),i={type:t.type,name:t.name,value:e,listener:o,options:n},r?r.push(i):this.__on=[i]}}function Hr(t,e,n){var r=Fr(t+""),i,o=r.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var c=0,l=a.length,u;c<l;++c)for(i=0,u=a[c];i<o;++i)if((s=r[i]).type===u.type&&s.name===u.name)return u.value}return}for(a=e?Yr:Xr,i=0;i<o;++i)this.each(a(r[i],e,n));return this}function De(t,e,n){var r=Fe(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function qr(t,e){return function(){return De(this,t,e)}}function Dr(t,e){return function(){return De(this,t,e.apply(this,arguments))}}function Vr(t,e){return this.each((typeof e=="function"?Dr:qr)(t,e))}function*zr(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length,s;i<o;++i)(s=r[i])&&(yield s)}var Ve=[null];function R(t,e){this._groups=t,this._parents=e}function ft(){return new R([[document.documentElement]],Ve)}function Ur(){return this}R.prototype=ft.prototype={constructor:R,select:wn,selectAll:bn,selectChild:Nn,selectChildren:Bn,filter:Rn,data:Pn,enter:In,exit:Xn,join:Yn,merge:Hn,selection:Ur,order:qn,sort:Dn,call:zn,nodes:Un,node:Zn,size:Kn,empty:Gn,each:Wn,attr:rr,style:ar,property:fr,classed:gr,text:_r,html:$r,raise:Sr,lower:Cr,append:Ar,insert:Br,remove:Ir,clone:Lr,datum:Or,on:Hr,dispatch:Vr,[Symbol.iterator]:zr};function Ht(t){return typeof t=="string"?new R([[document.querySelector(t)]],[document.documentElement]):new R([[t]],Ve)}function ne(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function ze(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function ht(){}var at=.7,Nt=1/at,W="\\s*([+-]?\\d+)\\s*",ct="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",L="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Zr=/^#([0-9a-f]{3,8})$/,Kr=new RegExp(`^rgb\\(${W},${W},${W}\\)$`),Gr=new RegExp(`^rgb\\(${L},${L},${L}\\)$`),Wr=new RegExp(`^rgba\\(${W},${W},${W},${ct}\\)$`),Jr=new RegExp(`^rgba\\(${L},${L},${L},${ct}\\)$`),Qr=new RegExp(`^hsl\\(${ct},${L},${L}\\)$`),jr=new RegExp(`^hsla\\(${ct},${L},${L},${ct}\\)$`),we={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};ne(ht,lt,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:_e,formatHex:_e,formatHex8:ti,formatHsl:ei,formatRgb:xe,toString:xe});function _e(){return this.rgb().formatHex()}function ti(){return this.rgb().formatHex8()}function ei(){return Ue(this).formatHsl()}function xe(){return this.rgb().formatRgb()}function lt(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Zr.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?ve(e):n===3?new B(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?_t(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?_t(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Kr.exec(t))?new B(e[1],e[2],e[3],1):(e=Gr.exec(t))?new B(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Wr.exec(t))?_t(e[1],e[2],e[3],e[4]):(e=Jr.exec(t))?_t(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Qr.exec(t))?Ee(e[1],e[2]/100,e[3]/100,1):(e=jr.exec(t))?Ee(e[1],e[2]/100,e[3]/100,e[4]):we.hasOwnProperty(t)?ve(we[t]):t==="transparent"?new B(NaN,NaN,NaN,0):null}function ve(t){return new B(t>>16&255,t>>8&255,t&255,1)}function _t(t,e,n,r){return r<=0&&(t=e=n=NaN),new B(t,e,n,r)}function ni(t){return t instanceof ht||(t=lt(t)),t?(t=t.rgb(),new B(t.r,t.g,t.b,t.opacity)):new B}function Ut(t,e,n,r){return arguments.length===1?ni(t):new B(t,e,n,r??1)}function B(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}ne(B,Ut,ze(ht,{brighter(t){return t=t==null?Nt:Math.pow(Nt,t),new B(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?at:Math.pow(at,t),new B(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new B(K(this.r),K(this.g),K(this.b),Ct(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:be,formatHex:be,formatHex8:ri,formatRgb:$e,toString:$e}));function be(){return`#${Z(this.r)}${Z(this.g)}${Z(this.b)}`}function ri(){return`#${Z(this.r)}${Z(this.g)}${Z(this.b)}${Z((isNaN(this.opacity)?1:this.opacity)*255)}`}function $e(){const t=Ct(this.opacity);return`${t===1?"rgb(":"rgba("}${K(this.r)}, ${K(this.g)}, ${K(this.b)}${t===1?")":`, ${t})`}`}function Ct(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function K(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Z(t){return t=K(t),(t<16?"0":"")+t.toString(16)}function Ee(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new I(t,e,n,r)}function Ue(t){if(t instanceof I)return new I(t.h,t.s,t.l,t.opacity);if(t instanceof ht||(t=lt(t)),!t)return new I;if(t instanceof I)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,c=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new I(s,a,c,t.opacity)}function ii(t,e,n,r){return arguments.length===1?Ue(t):new I(t,e,n,r??1)}function I(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}ne(I,ii,ze(ht,{brighter(t){return t=t==null?Nt:Math.pow(Nt,t),new I(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?at:Math.pow(at,t),new I(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new B(qt(t>=240?t-240:t+120,i,r),qt(t,i,r),qt(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new I(Se(this.h),xt(this.s),xt(this.l),Ct(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Ct(this.opacity);return`${t===1?"hsl(":"hsla("}${Se(this.h)}, ${xt(this.s)*100}%, ${xt(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Se(t){return t=(t||0)%360,t<0?t+360:t}function xt(t){return Math.max(0,Math.min(1,t||0))}function qt(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Ze=t=>()=>t;function oi(t,e){return function(n){return t+n*e}}function si(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function ai(t){return(t=+t)==1?Ke:function(e,n){return n-e?si(e,n,t):Ze(isNaN(e)?n:e)}}function Ke(t,e){var n=e-t;return n?oi(t,n):Ze(isNaN(t)?e:t)}const Ne=(function t(e){var n=ai(e);function r(i,o){var s=n((i=Ut(i)).r,(o=Ut(o)).r),a=n(i.g,o.g),c=n(i.b,o.b),l=Ke(i.opacity,o.opacity);return function(u){return i.r=s(u),i.g=a(u),i.b=c(u),i.opacity=l(u),i+""}}return r.gamma=t,r})(1);function q(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Zt=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Dt=new RegExp(Zt.source,"g");function ci(t){return function(){return t}}function li(t){return function(e){return t(e)+""}}function ui(t,e){var n=Zt.lastIndex=Dt.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",e=e+"";(r=Zt.exec(t))&&(i=Dt.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,c.push({i:s,x:q(r,i)})),n=Dt.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?li(c[0].x):ci(e):(e=c.length,function(l){for(var u=0,d;u<e;++u)a[(d=c[u]).i]=d.x(l);return a.join("")})}var Ce=180/Math.PI,Kt={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Ge(t,e,n,r,i,o){var s,a,c;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,c/=a),t*r<e*n&&(t=-t,e=-e,c=-c,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Ce,skewX:Math.atan(c)*Ce,scaleX:s,scaleY:a}}var vt;function fi(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Kt:Ge(e.a,e.b,e.c,e.d,e.e,e.f)}function hi(t){return t==null||(vt||(vt=document.createElementNS("http://www.w3.org/2000/svg","g")),vt.setAttribute("transform",t),!(t=vt.transform.baseVal.consolidate()))?Kt:(t=t.matrix,Ge(t.a,t.b,t.c,t.d,t.e,t.f))}function We(t,e,n,r){function i(l){return l.length?l.pop()+" ":""}function o(l,u,d,p,g,m){if(l!==d||u!==p){var E=g.push("translate(",null,e,null,n);m.push({i:E-4,x:q(l,d)},{i:E-2,x:q(u,p)})}else(d||p)&&g.push("translate("+d+e+p+n)}function s(l,u,d,p){l!==u?(l-u>180?u+=360:u-l>180&&(l+=360),p.push({i:d.push(i(d)+"rotate(",null,r)-2,x:q(l,u)})):u&&d.push(i(d)+"rotate("+u+r)}function a(l,u,d,p){l!==u?p.push({i:d.push(i(d)+"skewX(",null,r)-2,x:q(l,u)}):u&&d.push(i(d)+"skewX("+u+r)}function c(l,u,d,p,g,m){if(l!==d||u!==p){var E=g.push(i(g)+"scale(",null,",",null,")");m.push({i:E-4,x:q(l,d)},{i:E-2,x:q(u,p)})}else(d!==1||p!==1)&&g.push(i(g)+"scale("+d+","+p+")")}return function(l,u){var d=[],p=[];return l=t(l),u=t(u),o(l.translateX,l.translateY,u.translateX,u.translateY,d,p),s(l.rotate,u.rotate,d,p),a(l.skewX,u.skewX,d,p),c(l.scaleX,l.scaleY,u.scaleX,u.scaleY,d,p),l=u=null,function(g){for(var m=-1,E=p.length,k;++m<E;)d[(k=p[m]).i]=k.x(g);return d.join("")}}}var di=We(fi,"px, ","px)","deg)"),pi=We(hi,", ",")",")"),Q=0,rt=0,nt=0,Je=1e3,At,it,kt=0,G=0,Mt=0,ut=typeof performance=="object"&&performance.now?performance:Date,Qe=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function re(){return G||(Qe(gi),G=ut.now()+Mt)}function gi(){G=0}function Bt(){this._call=this._time=this._next=null}Bt.prototype=je.prototype={constructor:Bt,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?re():+n)+(e==null?0:+e),!this._next&&it!==this&&(it?it._next=this:At=this,it=this),this._call=t,this._time=n,Gt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Gt())}};function je(t,e,n){var r=new Bt;return r.restart(t,e,n),r}function mi(){re(),++Q;for(var t=At,e;t;)(e=G-t._time)>=0&&t._call.call(void 0,e),t=t._next;--Q}function Ae(){G=(kt=ut.now())+Mt,Q=rt=0;try{mi()}finally{Q=0,wi(),G=0}}function yi(){var t=ut.now(),e=t-kt;e>Je&&(Mt-=e,kt=t)}function wi(){for(var t,e=At,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:At=n);it=t,Gt(r)}function Gt(t){if(!Q){rt&&(rt=clearTimeout(rt));var e=t-G;e>24?(t<1/0&&(rt=setTimeout(Ae,t-ut.now()-Mt)),nt&&(nt=clearInterval(nt))):(nt||(kt=ut.now(),nt=setInterval(yi,Je)),Q=1,Qe(Ae))}}function ke(t,e,n){var r=new Bt;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var _i=Ie("start","end","cancel","interrupt"),xi=[],tn=0,Be=1,Wt=2,$t=3,Re=4,Jt=5,Et=6;function Tt(t,e,n,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(n in s)return;vi(t,n,{name:e,index:r,group:i,on:_i,tween:xi,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:tn})}function ie(t,e){var n=M(t,e);if(n.state>tn)throw new Error("too late; already scheduled");return n}function P(t,e){var n=M(t,e);if(n.state>$t)throw new Error("too late; already running");return n}function M(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function vi(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=je(o,0,n.time);function o(l){n.state=Be,n.timer.restart(s,n.delay,n.time),n.delay<=l&&s(l-n.delay)}function s(l){var u,d,p,g;if(n.state!==Be)return c();for(u in r)if(g=r[u],g.name===n.name){if(g.state===$t)return ke(s);g.state===Re?(g.state=Et,g.timer.stop(),g.on.call("interrupt",t,t.__data__,g.index,g.group),delete r[u]):+u<e&&(g.state=Et,g.timer.stop(),g.on.call("cancel",t,t.__data__,g.index,g.group),delete r[u])}if(ke(function(){n.state===$t&&(n.state=Re,n.timer.restart(a,n.delay,n.time),a(l))}),n.state=Wt,n.on.call("start",t,t.__data__,n.index,n.group),n.state===Wt){for(n.state=$t,i=new Array(p=n.tween.length),u=0,d=-1;u<p;++u)(g=n.tween[u].value.call(t,t.__data__,n.index,n.group))&&(i[++d]=g);i.length=d+1}}function a(l){for(var u=l<n.duration?n.ease.call(null,l/n.duration):(n.timer.restart(c),n.state=Jt,1),d=-1,p=i.length;++d<p;)i[d].call(t,u);n.state===Jt&&(n.on.call("end",t,t.__data__,n.index,n.group),c())}function c(){n.state=Et,n.timer.stop(),delete r[e];for(var l in r)return;delete t.__transition}}function bi(t,e){var n=t.__transition,r,i,o=!0,s;if(n){e=e==null?null:e+"";for(s in n){if((r=n[s]).name!==e){o=!1;continue}i=r.state>Wt&&r.state<Jt,r.state=Et,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[s]}o&&delete t.__transition}}function $i(t){return this.each(function(){bi(this,t)})}function Ei(t,e){var n,r;return function(){var i=P(this,t),o=i.tween;if(o!==n){r=n=o;for(var s=0,a=r.length;s<a;++s)if(r[s].name===e){r=r.slice(),r.splice(s,1);break}}i.tween=r}}function Si(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var o=P(this,t),s=o.tween;if(s!==r){i=(r=s).slice();for(var a={name:e,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===e){i[c]=a;break}c===l&&i.push(a)}o.tween=i}}function Ni(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=M(this.node(),n).tween,i=0,o=r.length,s;i<o;++i)if((s=r[i]).name===t)return s.value;return null}return this.each((e==null?Ei:Si)(n,t,e))}function oe(t,e,n){var r=t._id;return t.each(function(){var i=P(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return M(i,r).value[e]}}function en(t,e){var n;return(typeof e=="number"?q:e instanceof lt?Ne:(n=lt(e))?(e=n,Ne):ui)(t,e)}function Ci(t){return function(){this.removeAttribute(t)}}function Ai(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ki(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttribute(t);return s===i?null:s===r?o:o=e(r=s,n)}}function Bi(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===r?o:o=e(r=s,n)}}function Ri(t,e,n){var r,i,o;return function(){var s,a=n(this),c;return a==null?void this.removeAttribute(t):(s=this.getAttribute(t),c=a+"",s===c?null:s===r&&c===i?o:(i=c,o=e(r=s,a)))}}function Ii(t,e,n){var r,i,o;return function(){var s,a=n(this),c;return a==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),c=a+"",s===c?null:s===r&&c===i?o:(i=c,o=e(r=s,a)))}}function Mi(t,e){var n=It(t),r=n==="transform"?pi:en;return this.attrTween(t,typeof e=="function"?(n.local?Ii:Ri)(n,r,oe(this,"attr."+t,e)):e==null?(n.local?Ai:Ci)(n):(n.local?Bi:ki)(n,r,e))}function Ti(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function Li(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Oi(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&Li(t,o)),n}return i._value=e,i}function Pi(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&Ti(t,o)),n}return i._value=e,i}function Fi(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=It(t);return this.tween(n,(r.local?Oi:Pi)(r,e))}function Xi(t,e){return function(){ie(this,t).delay=+e.apply(this,arguments)}}function Yi(t,e){return e=+e,function(){ie(this,t).delay=e}}function Hi(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Xi:Yi)(e,t)):M(this.node(),e).delay}function qi(t,e){return function(){P(this,t).duration=+e.apply(this,arguments)}}function Di(t,e){return e=+e,function(){P(this,t).duration=e}}function Vi(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?qi:Di)(e,t)):M(this.node(),e).duration}function zi(t,e){if(typeof e!="function")throw new Error;return function(){P(this,t).ease=e}}function Ui(t){var e=this._id;return arguments.length?this.each(zi(e,t)):M(this.node(),e).ease}function Zi(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;P(this,t).ease=n}}function Ki(t){if(typeof t!="function")throw new Error;return this.each(Zi(this._id,t))}function Gi(t){typeof t!="function"&&(t=Le(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=[],c,l=0;l<s;++l)(c=o[l])&&t.call(c,c.__data__,l,o)&&a.push(c);return new Y(r,this._parents,this._name,this._id)}function Wi(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),s=new Array(r),a=0;a<o;++a)for(var c=e[a],l=n[a],u=c.length,d=s[a]=new Array(u),p,g=0;g<u;++g)(p=c[g]||l[g])&&(d[g]=p);for(;a<r;++a)s[a]=e[a];return new Y(s,this._parents,this._name,this._id)}function Ji(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function Qi(t,e,n){var r,i,o=Ji(e)?ie:P;return function(){var s=o(this,t),a=s.on;a!==r&&(i=(r=a).copy()).on(e,n),s.on=i}}function ji(t,e){var n=this._id;return arguments.length<2?M(this.node(),n).on.on(t):this.each(Qi(n,t,e))}function to(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function eo(){return this.on("end.remove",to(this._id))}function no(t){var e=this._name,n=this._id;typeof t!="function"&&(t=te(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s<i;++s)for(var a=r[s],c=a.length,l=o[s]=new Array(c),u,d,p=0;p<c;++p)(u=a[p])&&(d=t.call(u,u.__data__,p,a))&&("__data__"in u&&(d.__data__=u.__data__),l[p]=d,Tt(l[p],e,n,p,l,M(u,n)));return new Y(o,this._parents,e,n)}function ro(t){var e=this._name,n=this._id;typeof t!="function"&&(t=Te(t));for(var r=this._groups,i=r.length,o=[],s=[],a=0;a<i;++a)for(var c=r[a],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var p=t.call(u,u.__data__,d,c),g,m=M(u,n),E=0,k=p.length;E<k;++E)(g=p[E])&&Tt(g,e,n,E,p,m);o.push(p),s.push(u)}return new Y(o,s,e,n)}var io=ft.prototype.constructor;function oo(){return new io(this._groups,this._parents)}function so(t,e){var n,r,i;return function(){var o=J(this,t),s=(this.style.removeProperty(t),J(this,t));return o===s?null:o===n&&s===r?i:i=e(n=o,r=s)}}function nn(t){return function(){this.style.removeProperty(t)}}function ao(t,e,n){var r,i=n+"",o;return function(){var s=J(this,t);return s===i?null:s===r?o:o=e(r=s,n)}}function co(t,e,n){var r,i,o;return function(){var s=J(this,t),a=n(this),c=a+"";return a==null&&(c=a=(this.style.removeProperty(t),J(this,t))),s===c?null:s===r&&c===i?o:(i=c,o=e(r=s,a))}}function lo(t,e){var n,r,i,o="style."+e,s="end."+o,a;return function(){var c=P(this,t),l=c.on,u=c.value[o]==null?a||(a=nn(e)):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(s,i=u),c.on=r}}function uo(t,e,n){var r=(t+="")=="transform"?di:en;return e==null?this.styleTween(t,so(t,r)).on("end.style."+t,nn(t)):typeof e=="function"?this.styleTween(t,co(t,r,oe(this,"style."+t,e))).each(lo(this._id,t)):this.styleTween(t,ao(t,r,e),n).on("end.style."+t,null)}function fo(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function ho(t,e,n){var r,i;function o(){var s=e.apply(this,arguments);return s!==i&&(r=(i=s)&&fo(t,s,n)),r}return o._value=e,o}function po(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,ho(t,e,n??""))}function go(t){return function(){this.textContent=t}}function mo(t){return function(){var e=t(this);this.textContent=e??""}}function yo(t){return this.tween("text",typeof t=="function"?mo(oe(this,"text",t)):go(t==null?"":t+""))}function wo(t){return function(e){this.textContent=t.call(this,e)}}function _o(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&wo(i)),e}return r._value=t,r}function xo(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,_o(t))}function vo(){for(var t=this._name,e=this._id,n=rn(),r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,c,l=0;l<a;++l)if(c=s[l]){var u=M(c,e);Tt(c,t,n,l,s,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Y(r,this._parents,t,n)}function bo(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(o,s){var a={value:s},c={value:function(){--i===0&&o()}};n.each(function(){var l=P(this,r),u=l.on;u!==t&&(e=(t=u).copy(),e._.cancel.push(a),e._.interrupt.push(a),e._.end.push(c)),l.on=e}),i===0&&o()})}var $o=0;function Y(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function rn(){return++$o}var X=ft.prototype;Y.prototype={constructor:Y,select:no,selectAll:ro,selectChild:X.selectChild,selectChildren:X.selectChildren,filter:Gi,merge:Wi,selection:oo,transition:vo,call:X.call,nodes:X.nodes,node:X.node,size:X.size,empty:X.empty,each:X.each,on:ji,attr:Mi,attrTween:Fi,style:uo,styleTween:po,text:yo,textTween:xo,remove:eo,tween:Ni,delay:Hi,duration:Vi,ease:Ui,easeVarying:Ki,end:bo,[Symbol.iterator]:X[Symbol.iterator]};function Eo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var So={time:null,delay:0,duration:250,ease:Eo};function No(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function Co(t){var e,n;t instanceof Y?(e=t._id,t=t._name):(e=rn(),(n=So).time=re(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,c,l=0;l<a;++l)(c=s[l])&&Tt(c,t,e,l,s,n||No(c,e));return new Y(r,this._parents,t,e)}ft.prototype.interrupt=$i;ft.prototype.transition=Co;function ot(t,e,n){this.k=t,this.x=e,this.y=n}ot.prototype={constructor:ot,scale:function(t){return t===1?this:new ot(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new ot(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};ot.prototype;let A=[],st=[],Qt=[],O=new Map,Vt="",U=1,jt={};function D(t){const e=document.getElementById("loading"),n=document.getElementById("loading-status");e.classList.remove("hidden"),n.textContent=t}function on(){document.getElementById("loading").classList.add("hidden")}async function Ao(){const t=await window.gitopo.git.exec("rev-parse --show-toplevel");if(t.success){const e=t.output.trim();return e.split("/").pop()||e}return"Unknown Repository"}async function ko(){const t=await window.gitopo.config.get();return t.success?t.config:(console.error("Failed to fetch config:",t.error),{})}async function Bo(){const t=await window.gitopo.gh.exec("pr list --state open --json number,title,headRefName,headRefOid");if(!t.success)return console.error("Failed to fetch pull requests:",t.error),[];try{return JSON.parse(t.output).map(n=>({number:n.number,title:n.title,branch:n.headRefName,headCommit:n.headRefOid}))}catch(e){return console.error("Failed to parse PR data:",e),[]}}function sn(){const t=document.getElementById("commit-limit"),e=parseInt(t.value,10);return isNaN(e)||e<1||e>1e8?1e3:e}async function an(t=1e3){const e=await window.gitopo.git.exec(`log --all --format="%H|%P|%ct|%s" --date-order -${t}`);if(!e.success)return console.error("Failed to fetch commits:",e.error),[];const n=[],r=e.output.trim().split(`
2
+ `);for(const i of r){const o=i.split("|");if(o.length>=4){const s=o[0],a=o[1],c=parseInt(o[2],10),l=o.slice(3).join("|"),u=a.trim()?a.trim().split(" "):[];n.push({hash:s,parents:u,timestamp:c,message:l})}}return n.sort((i,o)=>o.timestamp-i.timestamp),n}async function Ro(){const t=await window.gitopo.git.exec('branch -a --format="%(refname:short) %(objectname)"');if(!t.success)return console.error("Failed to fetch branches:",t.error),[];const e=[],n=t.output.trim().split(`
3
+ `);for(const r of n){const i=r.trim().split(" ");if(i.length>=2){const o=i[0],s=i[1];e.push({name:o,hash:s})}}return e}function Io(t){const e=["branch1","branch2","branch3"],n=jt.keyBranches||[],r=t.find(i=>i.name==="main"||i.name==="master");e.forEach((i,o)=>{const s=document.getElementById(i);s.innerHTML="";const a=document.createElement("option");if(a.value="",a.textContent="----",s.appendChild(a),t.forEach(c=>{const l=document.createElement("option");l.value=c.name,l.textContent=c.name,s.appendChild(l)}),n[o]){const c=t.find(l=>l.name===n[o]);c&&(s.value=c.name)}else o===0&&r&&(s.value=r.name);s.addEventListener("change",()=>Rt())})}function Mo(t){const e=st.find(i=>i.name===t);if(!e)return new Set;const n=new Set;let r=e.hash;for(;r;){n.add(r);const i=O.get(r);if(i&&i.parents.length>0)r=i.parents[0];else break}return n}function To(t,e=new Set){const n=[],r=new Set,i=new Map;for(const c of A)for(const l of c.parents)i.has(l)||i.set(l,[]),i.get(l).push(c.hash);function o(c){const l=new Set,u=[c];for(;u.length>0;){const d=u.pop();if(l.has(d)||t.has(d)||e.has(d)||r.has(d))continue;const p=O.get(d);if(!p)continue;l.add(d);for(const m of p.parents)!t.has(m)&&!e.has(m)&&!l.has(m)&&u.push(m);const g=i.get(d)||[];for(const m of g)!t.has(m)&&!e.has(m)&&!l.has(m)&&u.push(m)}return l}function s(c){for(const l of c){const u=O.get(l);if(u){for(const d of u.parents)if(!t.has(d)&&!c.has(d))return!1}}return!0}function a(c){for(const l of t){const u=O.get(l);if(!(!u||u.parents.length<2)){for(let d=1;d<u.parents.length;d++)if(c.has(u.parents[d]))return l}}return null}for(const c of A){if(t.has(c.hash)||e.has(c.hash)||r.has(c.hash))continue;const l=o(c.hash);l.size>0&&s(l)&&(l.forEach(u=>r.add(u)),n.push({mergeCommit:a(l),commits:l}))}return n}function Lo(){const t=[];return["branch1","branch2","branch3"].forEach(e=>{const n=document.getElementById(e);n&&n.value&&t.push(n.value)}),t}function Rt(){const t=Ht("#graph");t.selectAll("*").remove();const e=Ht("#app");e.selectAll(".tooltip").remove();const n=document.getElementById("controls").offsetHeight,r=window.innerWidth,i=window.innerHeight-n;t.attr("width",r).attr("height",i);const o=6,s=30,a=150,c=30,l=50,u=50,p=Lo().map(f=>({name:f,lineage:Mo(f)})),g=new Set;p.forEach(({lineage:f})=>{f.forEach(h=>g.add(h))});const m=p.map(({name:f,lineage:h})=>{const y=new Set;p.forEach(w=>{w.name!==f&&w.lineage.forEach(_=>y.add(_))});const v=To(h,y);return{name:f,lineage:h,subBranches:v}}),E=new Map;st.forEach(f=>{E.has(f.hash)||E.set(f.hash,[]),E.get(f.hash).push(f.name)});const k=new Map;A.forEach(f=>{k.set(f.hash,{mainCol:m.length,subOffset:0,isSubBranch:!1})}),m.forEach((f,h)=>{for(const y of f.lineage)k.set(y,{mainCol:h,subOffset:0,isSubBranch:!1})});let Lt=0;m.forEach((f,h)=>{const y=new Map;[...f.subBranches].sort((w,_)=>{const $=x=>{let b=1/0;return x.commits.forEach(S=>{const C=O.get(S);C&&C.timestamp<b&&(b=C.timestamp)}),b};return $(w)-$(_)}).forEach(w=>{const _=`sb-${Lt++}`,$=[];w.commits.forEach(S=>{const C=A.findIndex(tt=>tt.hash===S);C>=0&&$.push(C)});let x=1,b=!0;for(;b;){b=!1;for(const S of $)if((y.get(S)||new Set).has(x)){b=!0,x++;break}}for(const S of $)y.has(S)||y.set(S,new Set),y.get(S).add(x);w.commits.forEach(S=>{k.set(S,{mainCol:h,subOffset:x,isSubBranch:!0,subBranchId:_})})})});const T=new Map;let V=u;for(let f=0;f<=m.length;f++)if(T.set(f,V),f<m.length){let h=0;A.forEach(y=>{const v=k.get(y.hash);v.mainCol===f&&v.subOffset>h&&(h=v.subOffset)}),V+=a+h*c}const N=new Map;A.forEach((f,h)=>{const y=k.get(f.hash),w=T.get(y.mainCol)+y.subOffset*c;N.set(f.hash,{col:y.mainCol,subOffset:y.subOffset,row:h,x:w,y:l+h*s,isSubBranch:y.isSubBranch,subBranchId:y.subBranchId||null})});const dt=Array.from(k.values()).some(f=>f.mainCol===m.length),F=t.append("g").attr("class","main-group"),Ot=t.append("g").attr("class","header-group"),Pt=e.append("div").attr("class","tooltip").style("opacity",0),pt=["#4CAF50","#2196F3","#FF9800"],se=20;m.forEach((f,h)=>{Ot.append("text").attr("x",T.get(h)).attr("y",se).attr("text-anchor","middle").attr("fill",pt[h]||"#888").attr("font-size","14px").attr("font-weight","bold").text(f.name)}),dt&&Ot.append("text").attr("x",T.get(m.length)).attr("y",se).attr("text-anchor","middle").attr("fill","#888").attr("font-size","14px").text("Other");const gt=new Map;A.forEach(f=>{f.parents.forEach(h=>{gt.has(h)||gt.set(h,[]),gt.get(h).push(f.hash)})});const cn=new Set;m.forEach(f=>{f.lineage.forEach(h=>cn.add(h))});function ae(f){const h=[],y=new Set;function v(_){if(y.has(_))return;y.add(_);const $=O.get(_);$&&$.parents.forEach(x=>{h.push({source:_,target:x});const b=N.get(x);b&&b.col===m.length&&!b.isSubBranch&&v(x)})}function w(_){if(y.has(_))return;y.add(_),(gt.get(_)||[]).forEach(x=>{h.push({source:x,target:_});const b=N.get(x);b&&b.col===m.length&&!b.isSubBranch&&w(x)})}return v(f),y.delete(f),w(f),h}A.forEach(f=>{const h=N.get(f.hash);h&&f.parents.forEach(y=>{const v=N.get(y);if(v){const w=h.col===m.length||v.col===m.length,_=h.x,$=h.y*U,x=v.x,b=v.y*U;let S;if(_===x)S=`M ${_} ${$} L ${x} ${b}`;else{const wt=($+b)/2;S=`M ${_} ${$} C ${_} ${wt}, ${x} ${wt}, ${x} ${b}`}const C=h.subBranchId||v.subBranchId||null,tt=h.isSubBranch||v.isSubBranch,un=!tt&&!w&&h.col<m.length;let Yt="#666";w?Yt="#444":h.col<m.length&&(Yt=pt[h.col]||"#666");let et=1.5;w?et=1:un?et=3:tt&&(et=1.5);const fn=F.append("path").attr("d",S).attr("fill","none").attr("stroke",Yt).attr("stroke-width",et).attr("stroke-opacity",w?.4:tt?.5:.8).attr("stroke-dasharray",w?"4,4":"none").attr("class",C?`edge edge-${C}`:"edge").attr("data-source",f.hash).attr("data-target",y);if(C){const wt=et;fn.style("cursor","pointer").on("mouseenter",()=>{F.selectAll(`.edge-${C}`).attr("stroke-width",3).attr("stroke-opacity",.9)}).on("mouseleave",()=>{F.selectAll(`.edge-${C}`).attr("stroke-width",wt).attr("stroke-opacity",.5)})}}})});const j=new Map;Qt.forEach(f=>{j.set(f.headCommit,f)});const Ft=F.selectAll("g.node").data(A).enter().append("g").attr("class","node").attr("transform",f=>{const h=N.get(f.hash);return h?`translate(${h.x}, ${h.y*U})`:"translate(-100, -100)"});Ft.filter(f=>j.has(f.hash)).append("circle").attr("r",o+6).attr("fill","none").attr("stroke","#888").attr("stroke-width",2).attr("stroke-dasharray","3,2"),Ft.append("circle").attr("r",f=>{const h=N.get(f.hash);return h.isSubBranch?o*.6:h.col<m.length?o:o*.7}).attr("fill",f=>{const h=N.get(f.hash);return h.col<m.length?pt[h.col]||"#fff":h.isSubBranch?"#a0a0a0":"#888"}).attr("stroke",f=>{const h=N.get(f.hash);return h.col<m.length&&pt[h.col]||"#333"}).attr("stroke-width",f=>{const h=N.get(f.hash);return h.isSubBranch?1:h.col<m.length?2:1}).style("cursor","pointer").on("mouseenter",(f,h)=>{const y=E.get(h.hash),v=y?`[${y.join(", ")}]<br/>`:"",w=j.get(h.hash),_=w?`<span class="pr-info">PR #${w.number}: ${w.title}</span><br/>`:"",$=new Date(h.timestamp*1e3).toLocaleString();Pt.html(`<strong>${h.hash.substring(0,7)}</strong><br/>${_}${v}${h.message}<br/><span class="date">${$}</span>`).style("left",f.pageX+15+"px").style("top",f.pageY-10+"px").style("opacity",1);const x=N.get(h.hash);x&&x.col===m.length&&!x.isSubBranch&&ae(h.hash).forEach(({source:S,target:C})=>{F.selectAll(`path.edge[data-source="${S}"][data-target="${C}"]`).attr("stroke-width",3).attr("stroke-opacity",.9)})}).on("mousemove",f=>{Pt.style("left",f.pageX+15+"px").style("top",f.pageY-10+"px")}).on("mouseleave",(f,h)=>{Pt.style("opacity",0);const y=N.get(h.hash);y&&y.col===m.length&&!y.isSubBranch&&ae(h.hash).forEach(({source:w,target:_})=>{F.selectAll(`path.edge[data-source="${w}"][data-target="${_}"]`).attr("stroke-width",1).attr("stroke-opacity",.4)})}),Ft.filter(f=>j.has(f.hash)).append("text").attr("x",o+10).attr("y",4).attr("fill","#ccc").attr("font-size","11px").text(f=>{const h=j.get(f.hash);return`PR #${h.number}: ${h.title.substring(0,30)}${h.title.length>30?"...":""}`});let z=0,H=0,mt=!1,ce=0,le=0,ue=0,fe=0;function Xt(f){return f*U}function yt(){F.attr("transform",`translate(${z}, ${H})`),Ot.attr("transform",`translate(${z}, 0)`)}function ln(){F.selectAll("g.node").attr("transform",f=>{const h=N.get(f.hash);return h?`translate(${h.x}, ${Xt(h.y)})`:"translate(-100, -100)"}),F.selectAll("path.edge").attr("d",function(){const f=Ht(this),h=f.attr("data-source"),y=f.attr("data-target"),v=N.get(h),w=N.get(y);if(!v||!w)return"";const _=v.x,$=Xt(v.y),x=w.x,b=Xt(w.y);if(_===x)return`M ${_} ${$} L ${x} ${b}`;{const S=($+b)/2;return`M ${_} ${$} C ${_} ${S}, ${x} ${S}, ${x} ${b}`}})}t.on("wheel",f=>{if(f.preventDefault(),f.ctrlKey||f.metaKey){const h=f.deltaY>0?.9:1.1,w=Math.max(.1,Math.min(5,U*h)),_=t.node().getBoundingClientRect(),$=f.clientY-_.top,x=$-H;H=$-x*(w/U),U=w,ln(),yt()}else z-=f.deltaX,H-=f.deltaY,yt()}),t.on("mousedown",f=>{f.button===0&&(mt=!0,ce=f.clientX,le=f.clientY,ue=z,fe=H,f.preventDefault())}),t.on("mousemove",f=>{mt&&(z=ue+(f.clientX-ce),H=fe+(f.clientY-le),yt())}),t.on("mouseup",f=>{f.button===0&&(mt=!1)}),t.on("mouseleave",()=>{mt=!1});let he=0,de=0,pe=0,ge=0;t.on("touchstart",f=>{if(f.touches.length===1){const h=f.touches[0];he=h.clientX,de=h.clientY,pe=z,ge=H}}),t.on("touchmove",f=>{if(f.touches.length===1){f.preventDefault();const h=f.touches[0];z=pe+(h.clientX-he),H=ge+(h.clientY-de),yt()}}),t.on("contextmenu",f=>{f.preventDefault()})}async function Oo(){D("Loading commits...");const t=sn();A=await an(t),O.clear(),A.forEach(e=>O.set(e.hash,e)),console.log("Commits reloaded:",A.length),D("Rendering graph..."),Rt(),on()}async function Po(){const t=sn();D("Loading repository info..."),Vt=await Ao(),D("Loading configuration..."),jt=await ko(),D("Loading commits..."),A=await an(t),D("Loading branches..."),st=await Ro(),D("Loading pull requests..."),Qt=await Bo(),document.getElementById("repo-name").textContent=Vt,O.clear(),A.forEach(n=>O.set(n.hash,n)),console.log("Repository:",Vt),console.log("Commits:",A.length),console.log("Branches:",st.length),console.log("Open PRs:",Qt.length),console.log("Config:",jt),Io(st),D("Rendering graph..."),Rt(),on(),window.addEventListener("resize",()=>{Rt()});const e=document.getElementById("commit-limit");e.addEventListener("change",()=>{const n=parseInt(e.value,10);(isNaN(n)||n<1||n>1e8)&&(e.value=1e3),Oo()})}Po();
@@ -0,0 +1 @@
1
+ *{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#1a1a2e;color:#eee;overflow:hidden}#app{width:100vw;height:100vh;position:relative;display:flex;flex-direction:column}#controls{display:flex;align-items:center;flex-wrap:wrap;gap:12px 20px;padding:12px 20px;background:#16213e;border-bottom:1px solid #333;flex-shrink:0}#repo-name{font-size:16px;font-weight:700;color:#fff;margin-right:20px;padding-right:20px;border-right:1px solid #444}.branch-selector{display:flex;align-items:center;gap:8px}.branch-selector label{font-size:13px;color:#888}.branch-selector select{padding:6px 12px;font-size:13px;background:#1a1a2e;color:#eee;border:1px solid #444;border-radius:4px;min-width:150px;cursor:pointer}.branch-selector select:hover{border-color:#4fc3f7}.branch-selector select:focus{outline:none;border-color:#4fc3f7}#graph{flex:1;width:100%}.tooltip{position:absolute;background:#1e1e32f2;border:1px solid #4fc3f7;border-radius:6px;padding:10px 14px;font-size:13px;line-height:1.5;max-width:400px;pointer-events:none;z-index:1000;box-shadow:0 4px 12px #0006;transition:opacity .15s ease}.tooltip strong{color:#4fc3f7;font-family:SF Mono,Monaco,Courier New,monospace}.tooltip .date{color:#888;font-size:11px}.tooltip .pr-info{color:#81c784;font-weight:700}
@@ -0,0 +1,4 @@
1
+ (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();var Ge={value:()=>{}};function Gt(){for(var t=0,e=arguments.length,n={},r;t<e;++t){if(!(r=arguments[t]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new vt(n)}function vt(t){this._=t}function Ue(t,e){return t.trim().split(/^|\s+/).map(function(n){var r="",i=n.indexOf(".");if(i>=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}vt.prototype=Gt.prototype={constructor:vt,on:function(t,e){var n=this._,r=Ue(t+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o<s;)if((i=(t=r[o]).type)&&(i=Ke(n[i],t.name)))return i;return}if(e!=null&&typeof e!="function")throw new Error("invalid callback: "+e);for(;++o<s;)if(i=(t=r[o]).type)n[i]=jt(n[i],t.name,e);else if(e==null)for(i in n)n[i]=jt(n[i],t.name,null);return this},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new vt(t)},call:function(t,e){if((i=arguments.length-2)>0)for(var n=new Array(i),r=0,i,o;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(e,n)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};function Ke(t,e){for(var n=0,r=t.length,i;n<r;++n)if((i=t[n]).name===e)return i.value}function jt(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Ge,t=t.slice(0,r).concat(t.slice(r+1));break}return n!=null&&t.push({name:e,value:n}),t}var Xt="http://www.w3.org/1999/xhtml";const te={svg:"http://www.w3.org/2000/svg",xhtml:Xt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Tt(t){var e=t+="",n=e.indexOf(":");return n>=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),te.hasOwnProperty(e)?{space:te[e],local:t}:t}function We(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===Xt&&e.documentElement.namespaceURI===Xt?e.createElement(t):e.createElementNS(n,t)}}function Qe(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function ye(t){var e=Tt(t);return(e.local?Qe:We)(e)}function Ze(){}function Ut(t){return t==null?Ze:function(){return this.querySelector(t)}}function Je(t){typeof t!="function"&&(t=Ut(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=new Array(s),u,c,f=0;f<s;++f)(u=o[f])&&(c=t.call(u,u.__data__,f,o))&&("__data__"in u&&(c.__data__=u.__data__),a[f]=c);return new P(r,this._parents)}function je(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function tn(){return[]}function _e(t){return t==null?tn:function(){return this.querySelectorAll(t)}}function en(t){return function(){return je(t.apply(this,arguments))}}function nn(t){typeof t=="function"?t=en(t):t=_e(t);for(var e=this._groups,n=e.length,r=[],i=[],o=0;o<n;++o)for(var s=e[o],a=s.length,u,c=0;c<a;++c)(u=s[c])&&(r.push(t.call(u,u.__data__,c,s)),i.push(u));return new P(r,i)}function we(t){return function(){return this.matches(t)}}function ve(t){return function(e){return e.matches(t)}}var rn=Array.prototype.find;function on(t){return function(){return rn.call(this.children,t)}}function sn(){return this.firstElementChild}function an(t){return this.select(t==null?sn:on(typeof t=="function"?t:ve(t)))}var un=Array.prototype.filter;function cn(){return Array.from(this.children)}function ln(t){return function(){return un.call(this.children,t)}}function fn(t){return this.selectAll(t==null?cn:ln(typeof t=="function"?t:ve(t)))}function hn(t){typeof t!="function"&&(t=we(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=[],u,c=0;c<s;++c)(u=o[c])&&t.call(u,u.__data__,c,o)&&a.push(u);return new P(r,this._parents)}function xe(t){return new Array(t.length)}function pn(){return new P(this._enter||this._groups.map(xe),this._parents)}function At(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}At.prototype={constructor:At,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function dn(t){return function(){return t}}function gn(t,e,n,r,i,o){for(var s=0,a,u=e.length,c=o.length;s<c;++s)(a=e[s])?(a.__data__=o[s],r[s]=a):n[s]=new At(t,o[s]);for(;s<u;++s)(a=e[s])&&(i[s]=a)}function mn(t,e,n,r,i,o,s){var a,u,c=new Map,f=e.length,d=o.length,p=new Array(f),g;for(a=0;a<f;++a)(u=e[a])&&(p[a]=g=s.call(u,u.__data__,a,e)+"",c.has(g)?i[a]=u:c.set(g,u));for(a=0;a<d;++a)g=s.call(t,o[a],a,o)+"",(u=c.get(g))?(r[a]=u,u.__data__=o[a],c.delete(g)):n[a]=new At(t,o[a]);for(a=0;a<f;++a)(u=e[a])&&c.get(p[a])===u&&(i[a]=u)}function yn(t){return t.__data__}function _n(t,e){if(!arguments.length)return Array.from(this,yn);var n=e?mn:gn,r=this._parents,i=this._groups;typeof t!="function"&&(t=dn(t));for(var o=i.length,s=new Array(o),a=new Array(o),u=new Array(o),c=0;c<o;++c){var f=r[c],d=i[c],p=d.length,g=wn(t.call(f,f&&f.__data__,c,r)),N=g.length,A=a[c]=new Array(N),S=s[c]=new Array(N),w=u[c]=new Array(p);n(f,d,A,S,w,g,e);for(var R=0,T=0,m,E;R<N;++R)if(m=A[R]){for(R>=T&&(T=R+1);!(E=S[T])&&++T<N;);m._next=E||null}}return s=new P(s,r),s._enter=a,s._exit=u,s}function wn(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function vn(){return new P(this._exit||this._groups.map(xe),this._parents)}function xn(t,e,n){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),n==null?o.remove():n(o),r&&i?r.merge(i).order():i}function bn(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,s=Math.min(i,o),a=new Array(i),u=0;u<s;++u)for(var c=n[u],f=r[u],d=c.length,p=a[u]=new Array(d),g,N=0;N<d;++N)(g=c[N]||f[N])&&(p[N]=g);for(;u<i;++u)a[u]=n[u];return new P(a,this._parents)}function Nn(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r=t[e],i=r.length-1,o=r[i],s;--i>=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function An(t){t||(t=En);function e(d,p){return d&&p?t(d.__data__,p.__data__):!d-!p}for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var s=n[o],a=s.length,u=i[o]=new Array(a),c,f=0;f<a;++f)(c=s[f])&&(u[f]=c);u.sort(e)}return new P(i,this._parents).order()}function En(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function $n(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Mn(){return Array.from(this)}function kn(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var s=r[i];if(s)return s}return null}function Sn(){let t=0;for(const e of this)++t;return t}function Tn(){return!this.node()}function zn(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i=e[n],o=0,s=i.length,a;o<s;++o)(a=i[o])&&t.call(a,a.__data__,o,i);return this}function Cn(t){return function(){this.removeAttribute(t)}}function Rn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function In(t,e){return function(){this.setAttribute(t,e)}}function Pn(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Dn(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function Xn(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Fn(t,e){var n=Tt(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?Rn:Cn:typeof e=="function"?n.local?Xn:Dn:n.local?Pn:In)(n,e))}function be(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function qn(t){return function(){this.style.removeProperty(t)}}function Hn(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Ln(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function On(t,e,n){return arguments.length>1?this.each((e==null?qn:typeof e=="function"?Ln:Hn)(t,e,n??"")):nt(this.node(),t)}function nt(t,e){return t.style.getPropertyValue(e)||be(t).getComputedStyle(t,null).getPropertyValue(e)}function Yn(t){return function(){delete this[t]}}function Vn(t,e){return function(){this[t]=e}}function Bn(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Gn(t,e){return arguments.length>1?this.each((e==null?Yn:typeof e=="function"?Bn:Vn)(t,e)):this.node()[t]}function Ne(t){return t.trim().split(/^|\s+/)}function Kt(t){return t.classList||new Ae(t)}function Ae(t){this._node=t,this._names=Ne(t.getAttribute("class")||"")}Ae.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Ee(t,e){for(var n=Kt(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function $e(t,e){for(var n=Kt(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Un(t){return function(){Ee(this,t)}}function Kn(t){return function(){$e(this,t)}}function Wn(t,e){return function(){(e.apply(this,arguments)?Ee:$e)(this,t)}}function Qn(t,e){var n=Ne(t+"");if(arguments.length<2){for(var r=Kt(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof e=="function"?Wn:e?Un:Kn)(n,e))}function Zn(){this.textContent=""}function Jn(t){return function(){this.textContent=t}}function jn(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function tr(t){return arguments.length?this.each(t==null?Zn:(typeof t=="function"?jn:Jn)(t)):this.node().textContent}function er(){this.innerHTML=""}function nr(t){return function(){this.innerHTML=t}}function rr(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function ir(t){return arguments.length?this.each(t==null?er:(typeof t=="function"?rr:nr)(t)):this.node().innerHTML}function or(){this.nextSibling&&this.parentNode.appendChild(this)}function sr(){return this.each(or)}function ar(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function ur(){return this.each(ar)}function cr(t){var e=typeof t=="function"?t:ye(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function lr(){return null}function fr(t,e){var n=typeof t=="function"?t:ye(t),r=e==null?lr:typeof e=="function"?e:Ut(e);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function hr(){var t=this.parentNode;t&&t.removeChild(this)}function pr(){return this.each(hr)}function dr(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function gr(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function mr(t){return this.select(t?gr:dr)}function yr(t){return arguments.length?this.property("__data__",t):this.node().__data__}function _r(t){return function(e){t.call(this,e,this.__data__)}}function wr(t){return t.trim().split(/^|\s+/).map(function(e){var n="",r=e.indexOf(".");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function vr(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n<i;++n)o=e[n],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):e[++r]=o;++r?e.length=r:delete this.__on}}}function xr(t,e,n){return function(){var r=this.__on,i,o=_r(e);if(r){for(var s=0,a=r.length;s<a;++s)if((i=r[s]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=n),i.value=e;return}}this.addEventListener(t.type,o,n),i={type:t.type,name:t.name,value:e,listener:o,options:n},r?r.push(i):this.__on=[i]}}function br(t,e,n){var r=wr(t+""),i,o=r.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var u=0,c=a.length,f;u<c;++u)for(i=0,f=a[u];i<o;++i)if((s=r[i]).type===f.type&&s.name===f.name)return f.value}return}for(a=e?xr:vr,i=0;i<o;++i)this.each(a(r[i],e,n));return this}function Me(t,e,n){var r=be(t),i=r.CustomEvent;typeof i=="function"?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function Nr(t,e){return function(){return Me(this,t,e)}}function Ar(t,e){return function(){return Me(this,t,e.apply(this,arguments))}}function Er(t,e){return this.each((typeof e=="function"?Ar:Nr)(t,e))}function*$r(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length,s;i<o;++i)(s=r[i])&&(yield s)}var ke=[null];function P(t,e){this._groups=t,this._parents=e}function ht(){return new P([[document.documentElement]],ke)}function Mr(){return this}P.prototype=ht.prototype={constructor:P,select:Je,selectAll:nn,selectChild:an,selectChildren:fn,filter:hn,data:_n,enter:pn,exit:vn,join:xn,merge:bn,selection:Mr,order:Nn,sort:An,call:$n,nodes:Mn,node:kn,size:Sn,empty:Tn,each:zn,attr:Fn,style:On,property:Gn,classed:Qn,text:tr,html:ir,raise:sr,lower:ur,append:cr,insert:fr,remove:pr,clone:mr,datum:yr,on:br,dispatch:Er,[Symbol.iterator]:$r};function U(t){return typeof t=="string"?new P([[document.querySelector(t)]],[document.documentElement]):new P([[t]],ke)}function kr(t){let e;for(;e=t.sourceEvent;)t=e;return t}function Z(t,e){if(t=kr(t),e===void 0&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(e.getScreenCTM().inverse()),[r.x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}const Ft={capture:!0,passive:!1};function qt(t){t.preventDefault(),t.stopImmediatePropagation()}function Sr(t){var e=t.document.documentElement,n=U(t).on("dragstart.drag",qt,Ft);"onselectstart"in e?n.on("selectstart.drag",qt,Ft):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function Tr(t,e){var n=t.document.documentElement,r=U(t).on("dragstart.drag",null);e&&(r.on("click.drag",qt,Ft),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}function Wt(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Se(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function pt(){}var ut=.7,Et=1/ut,et="\\s*([+-]?\\d+)\\s*",ct="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",L="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",zr=/^#([0-9a-f]{3,8})$/,Cr=new RegExp(`^rgb\\(${et},${et},${et}\\)$`),Rr=new RegExp(`^rgb\\(${L},${L},${L}\\)$`),Ir=new RegExp(`^rgba\\(${et},${et},${et},${ct}\\)$`),Pr=new RegExp(`^rgba\\(${L},${L},${L},${ct}\\)$`),Dr=new RegExp(`^hsl\\(${ct},${L},${L}\\)$`),Xr=new RegExp(`^hsla\\(${ct},${L},${L},${ct}\\)$`),ee={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Wt(pt,lt,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:ne,formatHex:ne,formatHex8:Fr,formatHsl:qr,formatRgb:re,toString:re});function ne(){return this.rgb().formatHex()}function Fr(){return this.rgb().formatHex8()}function qr(){return Te(this).formatHsl()}function re(){return this.rgb().formatRgb()}function lt(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=zr.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?ie(e):n===3?new I(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?mt(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?mt(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Cr.exec(t))?new I(e[1],e[2],e[3],1):(e=Rr.exec(t))?new I(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Ir.exec(t))?mt(e[1],e[2],e[3],e[4]):(e=Pr.exec(t))?mt(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Dr.exec(t))?ae(e[1],e[2]/100,e[3]/100,1):(e=Xr.exec(t))?ae(e[1],e[2]/100,e[3]/100,e[4]):ee.hasOwnProperty(t)?ie(ee[t]):t==="transparent"?new I(NaN,NaN,NaN,0):null}function ie(t){return new I(t>>16&255,t>>8&255,t&255,1)}function mt(t,e,n,r){return r<=0&&(t=e=n=NaN),new I(t,e,n,r)}function Hr(t){return t instanceof pt||(t=lt(t)),t?(t=t.rgb(),new I(t.r,t.g,t.b,t.opacity)):new I}function Ht(t,e,n,r){return arguments.length===1?Hr(t):new I(t,e,n,r??1)}function I(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Wt(I,Ht,Se(pt,{brighter(t){return t=t==null?Et:Math.pow(Et,t),new I(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?ut:Math.pow(ut,t),new I(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new I(j(this.r),j(this.g),j(this.b),$t(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:oe,formatHex:oe,formatHex8:Lr,formatRgb:se,toString:se}));function oe(){return`#${J(this.r)}${J(this.g)}${J(this.b)}`}function Lr(){return`#${J(this.r)}${J(this.g)}${J(this.b)}${J((isNaN(this.opacity)?1:this.opacity)*255)}`}function se(){const t=$t(this.opacity);return`${t===1?"rgb(":"rgba("}${j(this.r)}, ${j(this.g)}, ${j(this.b)}${t===1?")":`, ${t})`}`}function $t(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function j(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function J(t){return t=j(t),(t<16?"0":"")+t.toString(16)}function ae(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new F(t,e,n,r)}function Te(t){if(t instanceof F)return new F(t.h,t.s,t.l,t.opacity);if(t instanceof pt||(t=lt(t)),!t)return new F;if(t instanceof F)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,u=(o+i)/2;return a?(e===o?s=(n-r)/a+(n<r)*6:n===o?s=(r-e)/a+2:s=(e-n)/a+4,a/=u<.5?o+i:2-o-i,s*=60):a=u>0&&u<1?0:s,new F(s,a,u,t.opacity)}function Or(t,e,n,r){return arguments.length===1?Te(t):new F(t,e,n,r??1)}function F(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Wt(F,Or,Se(pt,{brighter(t){return t=t==null?Et:Math.pow(Et,t),new F(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?ut:Math.pow(ut,t),new F(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new I(It(t>=240?t-240:t+120,i,r),It(t,i,r),It(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new F(ue(this.h),yt(this.s),yt(this.l),$t(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=$t(this.opacity);return`${t===1?"hsl(":"hsla("}${ue(this.h)}, ${yt(this.s)*100}%, ${yt(this.l)*100}%${t===1?")":`, ${t})`}`}}));function ue(t){return t=(t||0)%360,t<0?t+360:t}function yt(t){return Math.max(0,Math.min(1,t||0))}function It(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const ze=t=>()=>t;function Yr(t,e){return function(n){return t+n*e}}function Vr(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Br(t){return(t=+t)==1?Ce:function(e,n){return n-e?Vr(e,n,t):ze(isNaN(e)?n:e)}}function Ce(t,e){var n=e-t;return n?Yr(t,n):ze(isNaN(t)?e:t)}const ce=(function t(e){var n=Br(e);function r(i,o){var s=n((i=Ht(i)).r,(o=Ht(o)).r),a=n(i.g,o.g),u=n(i.b,o.b),c=Ce(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=u(f),i.opacity=c(f),i+""}}return r.gamma=t,r})(1);function Q(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Lt=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Pt=new RegExp(Lt.source,"g");function Gr(t){return function(){return t}}function Ur(t){return function(e){return t(e)+""}}function Kr(t,e){var n=Lt.lastIndex=Pt.lastIndex=0,r,i,o,s=-1,a=[],u=[];for(t=t+"",e=e+"";(r=Lt.exec(t))&&(i=Pt.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,u.push({i:s,x:Q(r,i)})),n=Pt.lastIndex;return n<e.length&&(o=e.slice(n),a[s]?a[s]+=o:a[++s]=o),a.length<2?u[0]?Ur(u[0].x):Gr(e):(e=u.length,function(c){for(var f=0,d;f<e;++f)a[(d=u[f]).i]=d.x(c);return a.join("")})}var le=180/Math.PI,Ot={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Re(t,e,n,r,i,o){var s,a,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(a=Math.sqrt(n*n+r*r))&&(n/=a,r/=a,u/=a),t*r<e*n&&(t=-t,e=-e,u=-u,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*le,skewX:Math.atan(u)*le,scaleX:s,scaleY:a}}var _t;function Wr(t){const e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Ot:Re(e.a,e.b,e.c,e.d,e.e,e.f)}function Qr(t){return t==null||(_t||(_t=document.createElementNS("http://www.w3.org/2000/svg","g")),_t.setAttribute("transform",t),!(t=_t.transform.baseVal.consolidate()))?Ot:(t=t.matrix,Re(t.a,t.b,t.c,t.d,t.e,t.f))}function Ie(t,e,n,r){function i(c){return c.length?c.pop()+" ":""}function o(c,f,d,p,g,N){if(c!==d||f!==p){var A=g.push("translate(",null,e,null,n);N.push({i:A-4,x:Q(c,d)},{i:A-2,x:Q(f,p)})}else(d||p)&&g.push("translate("+d+e+p+n)}function s(c,f,d,p){c!==f?(c-f>180?f+=360:f-c>180&&(c+=360),p.push({i:d.push(i(d)+"rotate(",null,r)-2,x:Q(c,f)})):f&&d.push(i(d)+"rotate("+f+r)}function a(c,f,d,p){c!==f?p.push({i:d.push(i(d)+"skewX(",null,r)-2,x:Q(c,f)}):f&&d.push(i(d)+"skewX("+f+r)}function u(c,f,d,p,g,N){if(c!==d||f!==p){var A=g.push(i(g)+"scale(",null,",",null,")");N.push({i:A-4,x:Q(c,d)},{i:A-2,x:Q(f,p)})}else(d!==1||p!==1)&&g.push(i(g)+"scale("+d+","+p+")")}return function(c,f){var d=[],p=[];return c=t(c),f=t(f),o(c.translateX,c.translateY,f.translateX,f.translateY,d,p),s(c.rotate,f.rotate,d,p),a(c.skewX,f.skewX,d,p),u(c.scaleX,c.scaleY,f.scaleX,f.scaleY,d,p),c=f=null,function(g){for(var N=-1,A=p.length,S;++N<A;)d[(S=p[N]).i]=S.x(g);return d.join("")}}}var Zr=Ie(Wr,"px, ","px)","deg)"),Jr=Ie(Qr,", ",")",")"),jr=1e-12;function fe(t){return((t=Math.exp(t))+1/t)/2}function ti(t){return((t=Math.exp(t))-1/t)/2}function ei(t){return((t=Math.exp(2*t))-1)/(t+1)}const ni=(function t(e,n,r){function i(o,s){var a=o[0],u=o[1],c=o[2],f=s[0],d=s[1],p=s[2],g=f-a,N=d-u,A=g*g+N*N,S,w;if(A<jr)w=Math.log(p/c)/e,S=function(z){return[a+z*g,u+z*N,c*Math.exp(e*z*w)]};else{var R=Math.sqrt(A),T=(p*p-c*c+r*A)/(2*c*n*R),m=(p*p-c*c-r*A)/(2*p*n*R),E=Math.log(Math.sqrt(T*T+1)-T),M=Math.log(Math.sqrt(m*m+1)-m);w=(M-E)/e,S=function(z){var Y=z*w,dt=fe(E),gt=c/(n*R)*(dt*ei(e*Y+E)-ti(E));return[a+gt*g,u+gt*N,c*dt/fe(e*Y+E)]}}return S.duration=w*1e3*e/Math.SQRT2,S}return i.rho=function(o){var s=Math.max(.001,+o),a=s*s,u=a*a;return t(s,a,u)},i})(Math.SQRT2,2,4);var rt=0,st=0,it=0,Pe=1e3,Mt,at,kt=0,tt=0,zt=0,ft=typeof performance=="object"&&performance.now?performance:Date,De=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Qt(){return tt||(De(ri),tt=ft.now()+zt)}function ri(){tt=0}function St(){this._call=this._time=this._next=null}St.prototype=Xe.prototype={constructor:St,restart:function(t,e,n){if(typeof t!="function")throw new TypeError("callback is not a function");n=(n==null?Qt():+n)+(e==null?0:+e),!this._next&&at!==this&&(at?at._next=this:Mt=this,at=this),this._call=t,this._time=n,Yt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Yt())}};function Xe(t,e,n){var r=new St;return r.restart(t,e,n),r}function ii(){Qt(),++rt;for(var t=Mt,e;t;)(e=tt-t._time)>=0&&t._call.call(void 0,e),t=t._next;--rt}function he(){tt=(kt=ft.now())+zt,rt=st=0;try{ii()}finally{rt=0,si(),tt=0}}function oi(){var t=ft.now(),e=t-kt;e>Pe&&(zt-=e,kt=t)}function si(){for(var t,e=Mt,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Mt=n);at=t,Yt(r)}function Yt(t){if(!rt){st&&(st=clearTimeout(st));var e=t-tt;e>24?(t<1/0&&(st=setTimeout(he,t-ft.now()-zt)),it&&(it=clearInterval(it))):(it||(kt=ft.now(),it=setInterval(oi,Pe)),rt=1,De(he))}}function pe(t,e,n){var r=new St;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var ai=Gt("start","end","cancel","interrupt"),ui=[],Fe=0,de=1,Vt=2,xt=3,ge=4,Bt=5,bt=6;function Ct(t,e,n,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(n in s)return;ci(t,n,{name:e,index:r,group:i,on:ai,tween:ui,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Fe})}function Zt(t,e){var n=q(t,e);if(n.state>Fe)throw new Error("too late; already scheduled");return n}function O(t,e){var n=q(t,e);if(n.state>xt)throw new Error("too late; already running");return n}function q(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function ci(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=Xe(o,0,n.time);function o(c){n.state=de,n.timer.restart(s,n.delay,n.time),n.delay<=c&&s(c-n.delay)}function s(c){var f,d,p,g;if(n.state!==de)return u();for(f in r)if(g=r[f],g.name===n.name){if(g.state===xt)return pe(s);g.state===ge?(g.state=bt,g.timer.stop(),g.on.call("interrupt",t,t.__data__,g.index,g.group),delete r[f]):+f<e&&(g.state=bt,g.timer.stop(),g.on.call("cancel",t,t.__data__,g.index,g.group),delete r[f])}if(pe(function(){n.state===xt&&(n.state=ge,n.timer.restart(a,n.delay,n.time),a(c))}),n.state=Vt,n.on.call("start",t,t.__data__,n.index,n.group),n.state===Vt){for(n.state=xt,i=new Array(p=n.tween.length),f=0,d=-1;f<p;++f)(g=n.tween[f].value.call(t,t.__data__,n.index,n.group))&&(i[++d]=g);i.length=d+1}}function a(c){for(var f=c<n.duration?n.ease.call(null,c/n.duration):(n.timer.restart(u),n.state=Bt,1),d=-1,p=i.length;++d<p;)i[d].call(t,f);n.state===Bt&&(n.on.call("end",t,t.__data__,n.index,n.group),u())}function u(){n.state=bt,n.timer.stop(),delete r[e];for(var c in r)return;delete t.__transition}}function Nt(t,e){var n=t.__transition,r,i,o=!0,s;if(n){e=e==null?null:e+"";for(s in n){if((r=n[s]).name!==e){o=!1;continue}i=r.state>Vt&&r.state<Bt,r.state=bt,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[s]}o&&delete t.__transition}}function li(t){return this.each(function(){Nt(this,t)})}function fi(t,e){var n,r;return function(){var i=O(this,t),o=i.tween;if(o!==n){r=n=o;for(var s=0,a=r.length;s<a;++s)if(r[s].name===e){r=r.slice(),r.splice(s,1);break}}i.tween=r}}function hi(t,e,n){var r,i;if(typeof n!="function")throw new Error;return function(){var o=O(this,t),s=o.tween;if(s!==r){i=(r=s).slice();for(var a={name:e,value:n},u=0,c=i.length;u<c;++u)if(i[u].name===e){i[u]=a;break}u===c&&i.push(a)}o.tween=i}}function pi(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r=q(this.node(),n).tween,i=0,o=r.length,s;i<o;++i)if((s=r[i]).name===t)return s.value;return null}return this.each((e==null?fi:hi)(n,t,e))}function Jt(t,e,n){var r=t._id;return t.each(function(){var i=O(this,r);(i.value||(i.value={}))[e]=n.apply(this,arguments)}),function(i){return q(i,r).value[e]}}function qe(t,e){var n;return(typeof e=="number"?Q:e instanceof lt?ce:(n=lt(e))?(e=n,ce):Kr)(t,e)}function di(t){return function(){this.removeAttribute(t)}}function gi(t){return function(){this.removeAttributeNS(t.space,t.local)}}function mi(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttribute(t);return s===i?null:s===r?o:o=e(r=s,n)}}function yi(t,e,n){var r,i=n+"",o;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===r?o:o=e(r=s,n)}}function _i(t,e,n){var r,i,o;return function(){var s,a=n(this),u;return a==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=a+"",s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,a)))}}function wi(t,e,n){var r,i,o;return function(){var s,a=n(this),u;return a==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=a+"",s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,a)))}}function vi(t,e){var n=Tt(t),r=n==="transform"?Jr:qe;return this.attrTween(t,typeof e=="function"?(n.local?wi:_i)(n,r,Jt(this,"attr."+t,e)):e==null?(n.local?gi:di)(n):(n.local?yi:mi)(n,r,e))}function xi(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function bi(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Ni(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&bi(t,o)),n}return i._value=e,i}function Ai(t,e){var n,r;function i(){var o=e.apply(this,arguments);return o!==r&&(n=(r=o)&&xi(t,o)),n}return i._value=e,i}function Ei(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;var r=Tt(t);return this.tween(n,(r.local?Ni:Ai)(r,e))}function $i(t,e){return function(){Zt(this,t).delay=+e.apply(this,arguments)}}function Mi(t,e){return e=+e,function(){Zt(this,t).delay=e}}function ki(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?$i:Mi)(e,t)):q(this.node(),e).delay}function Si(t,e){return function(){O(this,t).duration=+e.apply(this,arguments)}}function Ti(t,e){return e=+e,function(){O(this,t).duration=e}}function zi(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?Si:Ti)(e,t)):q(this.node(),e).duration}function Ci(t,e){if(typeof e!="function")throw new Error;return function(){O(this,t).ease=e}}function Ri(t){var e=this._id;return arguments.length?this.each(Ci(e,t)):q(this.node(),e).ease}function Ii(t,e){return function(){var n=e.apply(this,arguments);if(typeof n!="function")throw new Error;O(this,t).ease=n}}function Pi(t){if(typeof t!="function")throw new Error;return this.each(Ii(this._id,t))}function Di(t){typeof t!="function"&&(t=we(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o=e[i],s=o.length,a=r[i]=[],u,c=0;c<s;++c)(u=o[c])&&t.call(u,u.__data__,c,o)&&a.push(u);return new W(r,this._parents,this._name,this._id)}function Xi(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),s=new Array(r),a=0;a<o;++a)for(var u=e[a],c=n[a],f=u.length,d=s[a]=new Array(f),p,g=0;g<f;++g)(p=u[g]||c[g])&&(d[g]=p);for(;a<r;++a)s[a]=e[a];return new W(s,this._parents,this._name,this._id)}function Fi(t){return(t+"").trim().split(/^|\s+/).every(function(e){var n=e.indexOf(".");return n>=0&&(e=e.slice(0,n)),!e||e==="start"})}function qi(t,e,n){var r,i,o=Fi(e)?Zt:O;return function(){var s=o(this,t),a=s.on;a!==r&&(i=(r=a).copy()).on(e,n),s.on=i}}function Hi(t,e){var n=this._id;return arguments.length<2?q(this.node(),n).on.on(t):this.each(qi(n,t,e))}function Li(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function Oi(){return this.on("end.remove",Li(this._id))}function Yi(t){var e=this._name,n=this._id;typeof t!="function"&&(t=Ut(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s<i;++s)for(var a=r[s],u=a.length,c=o[s]=new Array(u),f,d,p=0;p<u;++p)(f=a[p])&&(d=t.call(f,f.__data__,p,a))&&("__data__"in f&&(d.__data__=f.__data__),c[p]=d,Ct(c[p],e,n,p,c,q(f,n)));return new W(o,this._parents,e,n)}function Vi(t){var e=this._name,n=this._id;typeof t!="function"&&(t=_e(t));for(var r=this._groups,i=r.length,o=[],s=[],a=0;a<i;++a)for(var u=r[a],c=u.length,f,d=0;d<c;++d)if(f=u[d]){for(var p=t.call(f,f.__data__,d,u),g,N=q(f,n),A=0,S=p.length;A<S;++A)(g=p[A])&&Ct(g,e,n,A,p,N);o.push(p),s.push(f)}return new W(o,s,e,n)}var Bi=ht.prototype.constructor;function Gi(){return new Bi(this._groups,this._parents)}function Ui(t,e){var n,r,i;return function(){var o=nt(this,t),s=(this.style.removeProperty(t),nt(this,t));return o===s?null:o===n&&s===r?i:i=e(n=o,r=s)}}function He(t){return function(){this.style.removeProperty(t)}}function Ki(t,e,n){var r,i=n+"",o;return function(){var s=nt(this,t);return s===i?null:s===r?o:o=e(r=s,n)}}function Wi(t,e,n){var r,i,o;return function(){var s=nt(this,t),a=n(this),u=a+"";return a==null&&(u=a=(this.style.removeProperty(t),nt(this,t))),s===u?null:s===r&&u===i?o:(i=u,o=e(r=s,a))}}function Qi(t,e){var n,r,i,o="style."+e,s="end."+o,a;return function(){var u=O(this,t),c=u.on,f=u.value[o]==null?a||(a=He(e)):void 0;(c!==n||i!==f)&&(r=(n=c).copy()).on(s,i=f),u.on=r}}function Zi(t,e,n){var r=(t+="")=="transform"?Zr:qe;return e==null?this.styleTween(t,Ui(t,r)).on("end.style."+t,He(t)):typeof e=="function"?this.styleTween(t,Wi(t,r,Jt(this,"style."+t,e))).each(Qi(this._id,t)):this.styleTween(t,Ki(t,r,e),n).on("end.style."+t,null)}function Ji(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function ji(t,e,n){var r,i;function o(){var s=e.apply(this,arguments);return s!==i&&(r=(i=s)&&Ji(t,s,n)),r}return o._value=e,o}function to(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;return this.tween(r,ji(t,e,n??""))}function eo(t){return function(){this.textContent=t}}function no(t){return function(){var e=t(this);this.textContent=e??""}}function ro(t){return this.tween("text",typeof t=="function"?no(Jt(this,"text",t)):eo(t==null?"":t+""))}function io(t){return function(e){this.textContent=t.call(this,e)}}function oo(t){var e,n;function r(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&io(i)),e}return r._value=t,r}function so(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,oo(t))}function ao(){for(var t=this._name,e=this._id,n=Le(),r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,u,c=0;c<a;++c)if(u=s[c]){var f=q(u,e);Ct(u,t,n,c,s,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new W(r,this._parents,t,n)}function uo(){var t,e,n=this,r=n._id,i=n.size();return new Promise(function(o,s){var a={value:s},u={value:function(){--i===0&&o()}};n.each(function(){var c=O(this,r),f=c.on;f!==t&&(e=(t=f).copy(),e._.cancel.push(a),e._.interrupt.push(a),e._.end.push(u)),c.on=e}),i===0&&o()})}var co=0;function W(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function Le(){return++co}var G=ht.prototype;W.prototype={constructor:W,select:Yi,selectAll:Vi,selectChild:G.selectChild,selectChildren:G.selectChildren,filter:Di,merge:Xi,selection:Gi,transition:ao,call:G.call,nodes:G.nodes,node:G.node,size:G.size,empty:G.empty,each:G.each,on:Hi,attr:vi,attrTween:Ei,style:Zi,styleTween:to,text:ro,textTween:so,remove:Oi,tween:pi,delay:ki,duration:zi,ease:Ri,easeVarying:Pi,end:uo,[Symbol.iterator]:G[Symbol.iterator]};function lo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var fo={time:null,delay:0,duration:250,ease:lo};function ho(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function po(t){var e,n;t instanceof W?(e=t._id,t=t._name):(e=Le(),(n=fo).time=Qt(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,u,c=0;c<a;++c)(u=s[c])&&Ct(u,t,e,c,s,n||ho(u,e));return new W(r,this._parents,t,e)}ht.prototype.interrupt=li;ht.prototype.transition=po;const wt=t=>()=>t;function go(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function K(t,e,n){this.k=t,this.x=e,this.y=n}K.prototype={constructor:K,scale:function(t){return t===1?this:new K(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new K(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Oe=new K(1,0,0);K.prototype;function Dt(t){t.stopImmediatePropagation()}function ot(t){t.preventDefault(),t.stopImmediatePropagation()}function mo(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function yo(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function me(){return this.__zoom||Oe}function _o(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function wo(){return navigator.maxTouchPoints||"ontouchstart"in this}function vo(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],o=t.invertY(e[0][1])-n[0][1],s=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function xo(){var t=mo,e=yo,n=vo,r=_o,i=wo,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,u=ni,c=Gt("start","zoom","end"),f,d,p,g=500,N=150,A=0,S=10;function w(l){l.property("__zoom",me).on("wheel.zoom",Y,{passive:!1}).on("mousedown.zoom",dt).on("dblclick.zoom",gt).filter(i).on("touchstart.zoom",Ye).on("touchmove.zoom",Ve).on("touchend.zoom touchcancel.zoom",Be).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}w.transform=function(l,y,h,_){var v=l.selection?l.selection():l;v.property("__zoom",me),l!==v?E(l,y,h,_):v.interrupt().each(function(){M(this,arguments).event(_).start().zoom(null,typeof y=="function"?y.apply(this,arguments):y).end()})},w.scaleBy=function(l,y,h,_){w.scaleTo(l,function(){var v=this.__zoom.k,x=typeof y=="function"?y.apply(this,arguments):y;return v*x},h,_)},w.scaleTo=function(l,y,h,_){w.transform(l,function(){var v=e.apply(this,arguments),x=this.__zoom,b=h==null?m(v):typeof h=="function"?h.apply(this,arguments):h,$=x.invert(b),k=typeof y=="function"?y.apply(this,arguments):y;return n(T(R(x,k),b,$),v,s)},h,_)},w.translateBy=function(l,y,h,_){w.transform(l,function(){return n(this.__zoom.translate(typeof y=="function"?y.apply(this,arguments):y,typeof h=="function"?h.apply(this,arguments):h),e.apply(this,arguments),s)},null,_)},w.translateTo=function(l,y,h,_,v){w.transform(l,function(){var x=e.apply(this,arguments),b=this.__zoom,$=_==null?m(x):typeof _=="function"?_.apply(this,arguments):_;return n(Oe.translate($[0],$[1]).scale(b.k).translate(typeof y=="function"?-y.apply(this,arguments):-y,typeof h=="function"?-h.apply(this,arguments):-h),x,s)},_,v)};function R(l,y){return y=Math.max(o[0],Math.min(o[1],y)),y===l.k?l:new K(y,l.x,l.y)}function T(l,y,h){var _=y[0]-h[0]*l.k,v=y[1]-h[1]*l.k;return _===l.x&&v===l.y?l:new K(l.k,_,v)}function m(l){return[(+l[0][0]+ +l[1][0])/2,(+l[0][1]+ +l[1][1])/2]}function E(l,y,h,_){l.on("start.zoom",function(){M(this,arguments).event(_).start()}).on("interrupt.zoom end.zoom",function(){M(this,arguments).event(_).end()}).tween("zoom",function(){var v=this,x=arguments,b=M(v,x).event(_),$=e.apply(v,x),k=h==null?m($):typeof h=="function"?h.apply(v,x):h,H=Math.max($[1][0]-$[0][0],$[1][1]-$[0][1]),C=v.__zoom,D=typeof y=="function"?y.apply(v,x):y,V=u(C.invert(k).concat(H/C.k),D.invert(k).concat(H/D.k));return function(X){if(X===1)X=D;else{var B=V(X),Rt=H/B[2];X=new K(Rt,k[0]-B[0]*Rt,k[1]-B[1]*Rt)}b.zoom(null,X)}})}function M(l,y,h){return!h&&l.__zooming||new z(l,y)}function z(l,y){this.that=l,this.args=y,this.active=0,this.sourceEvent=null,this.extent=e.apply(l,y),this.taps=0}z.prototype={event:function(l){return l&&(this.sourceEvent=l),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(l,y){return this.mouse&&l!=="mouse"&&(this.mouse[1]=y.invert(this.mouse[0])),this.touch0&&l!=="touch"&&(this.touch0[1]=y.invert(this.touch0[0])),this.touch1&&l!=="touch"&&(this.touch1[1]=y.invert(this.touch1[0])),this.that.__zoom=y,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(l){var y=U(this.that).datum();c.call(l,this.that,new go(l,{sourceEvent:this.sourceEvent,target:w,transform:this.that.__zoom,dispatch:c}),y)}};function Y(l,...y){if(!t.apply(this,arguments))return;var h=M(this,y).event(l),_=this.__zoom,v=Math.max(o[0],Math.min(o[1],_.k*Math.pow(2,r.apply(this,arguments)))),x=Z(l);if(h.wheel)(h.mouse[0][0]!==x[0]||h.mouse[0][1]!==x[1])&&(h.mouse[1]=_.invert(h.mouse[0]=x)),clearTimeout(h.wheel);else{if(_.k===v)return;h.mouse=[x,_.invert(x)],Nt(this),h.start()}ot(l),h.wheel=setTimeout(b,N),h.zoom("mouse",n(T(R(_,v),h.mouse[0],h.mouse[1]),h.extent,s));function b(){h.wheel=null,h.end()}}function dt(l,...y){if(p||!t.apply(this,arguments))return;var h=l.currentTarget,_=M(this,y,!0).event(l),v=U(l.view).on("mousemove.zoom",k,!0).on("mouseup.zoom",H,!0),x=Z(l,h),b=l.clientX,$=l.clientY;Sr(l.view),Dt(l),_.mouse=[x,this.__zoom.invert(x)],Nt(this),_.start();function k(C){if(ot(C),!_.moved){var D=C.clientX-b,V=C.clientY-$;_.moved=D*D+V*V>A}_.event(C).zoom("mouse",n(T(_.that.__zoom,_.mouse[0]=Z(C,h),_.mouse[1]),_.extent,s))}function H(C){v.on("mousemove.zoom mouseup.zoom",null),Tr(C.view,_.moved),ot(C),_.event(C).end()}}function gt(l,...y){if(t.apply(this,arguments)){var h=this.__zoom,_=Z(l.changedTouches?l.changedTouches[0]:l,this),v=h.invert(_),x=h.k*(l.shiftKey?.5:2),b=n(T(R(h,x),_,v),e.apply(this,y),s);ot(l),a>0?U(this).transition().duration(a).call(E,b,_,l):U(this).call(w.transform,b,_,l)}}function Ye(l,...y){if(t.apply(this,arguments)){var h=l.touches,_=h.length,v=M(this,y,l.changedTouches.length===_).event(l),x,b,$,k;for(Dt(l),b=0;b<_;++b)$=h[b],k=Z($,this),k=[k,this.__zoom.invert(k),$.identifier],v.touch0?!v.touch1&&v.touch0[2]!==k[2]&&(v.touch1=k,v.taps=0):(v.touch0=k,x=!0,v.taps=1+!!f);f&&(f=clearTimeout(f)),x&&(v.taps<2&&(d=k[0],f=setTimeout(function(){f=null},g)),Nt(this),v.start())}}function Ve(l,...y){if(this.__zooming){var h=M(this,y).event(l),_=l.changedTouches,v=_.length,x,b,$,k;for(ot(l),x=0;x<v;++x)b=_[x],$=Z(b,this),h.touch0&&h.touch0[2]===b.identifier?h.touch0[0]=$:h.touch1&&h.touch1[2]===b.identifier&&(h.touch1[0]=$);if(b=h.that.__zoom,h.touch1){var H=h.touch0[0],C=h.touch0[1],D=h.touch1[0],V=h.touch1[1],X=(X=D[0]-H[0])*X+(X=D[1]-H[1])*X,B=(B=V[0]-C[0])*B+(B=V[1]-C[1])*B;b=R(b,Math.sqrt(X/B)),$=[(H[0]+D[0])/2,(H[1]+D[1])/2],k=[(C[0]+V[0])/2,(C[1]+V[1])/2]}else if(h.touch0)$=h.touch0[0],k=h.touch0[1];else return;h.zoom("touch",n(T(b,$,k),h.extent,s))}}function Be(l,...y){if(this.__zooming){var h=M(this,y).event(l),_=l.changedTouches,v=_.length,x,b;for(Dt(l),p&&clearTimeout(p),p=setTimeout(function(){p=null},g),x=0;x<v;++x)b=_[x],h.touch0&&h.touch0[2]===b.identifier?delete h.touch0:h.touch1&&h.touch1[2]===b.identifier&&delete h.touch1;if(h.touch1&&!h.touch0&&(h.touch0=h.touch1,delete h.touch1),h.touch0)h.touch0[1]=this.__zoom.invert(h.touch0[0]);else if(h.end(),h.taps===2&&(b=Z(b,this),Math.hypot(d[0]-b[0],d[1]-b[1])<S)){var $=U(this).on("dblclick.zoom");$&&$.apply(this,arguments)}}}return w.wheelDelta=function(l){return arguments.length?(r=typeof l=="function"?l:wt(+l),w):r},w.filter=function(l){return arguments.length?(t=typeof l=="function"?l:wt(!!l),w):t},w.touchable=function(l){return arguments.length?(i=typeof l=="function"?l:wt(!!l),w):i},w.extent=function(l){return arguments.length?(e=typeof l=="function"?l:wt([[+l[0][0],+l[0][1]],[+l[1][0],+l[1][1]]]),w):e},w.scaleExtent=function(l){return arguments.length?(o[0]=+l[0],o[1]=+l[1],w):[o[0],o[1]]},w.translateExtent=function(l){return arguments.length?(s[0][0]=+l[0][0],s[1][0]=+l[1][0],s[0][1]=+l[0][1],s[1][1]=+l[1][1],w):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},w.constrain=function(l){return arguments.length?(n=l,w):n},w.duration=function(l){return arguments.length?(a=+l,w):a},w.interpolate=function(l){return arguments.length?(u=l,w):u},w.on=function(){var l=c.on.apply(c,arguments);return l===c?w:l},w.clickDistance=function(l){return arguments.length?(A=(l=+l)*l,w):Math.sqrt(A)},w.tapDistance=function(l){return arguments.length?(S=+l,w):S},w}async function bo(){const t=await window.gitopo.git.exec('log --all --format="%H|%P|%ct|%s" --date-order -1000');if(!t.success)return console.error("Failed to fetch commits:",t.error),[];const e=[],n=t.output.trim().split(`
2
+ `);for(const r of n){const i=r.split("|");if(i.length>=4){const o=i[0],s=i[1],a=parseInt(i[2],10),u=i.slice(3).join("|"),c=s.trim()?s.trim().split(" "):[];e.push({hash:o,parents:c,timestamp:a,message:u})}}return e.sort((r,i)=>i.timestamp-r.timestamp),e}async function No(){const t=await window.gitopo.git.exec('branch -a --format="%(refname:short) %(objectname)"');if(!t.success)return console.error("Failed to fetch branches:",t.error),[];const e=[],n=t.output.trim().split(`
3
+ `);for(const r of n){const[i,o]=r.trim().split(" ");i&&o&&e.push({name:i,hash:o})}return e}function Ao(t,e){const n=U("#app"),r=U("#graph"),i=window.innerWidth,o=window.innerHeight;r.attr("width",i).attr("height",o);const s=6,a=30,u=80,c=50,f=50,d=new Map;t.forEach((m,E)=>d.set(m.hash,E));const p=new Map;e.forEach(m=>{p.has(m.hash)||p.set(m.hash,[]),p.get(m.hash).push(m.name)});const g=new Map,N=new Map;t.forEach((m,E)=>{let M=0;if(m.parents.length>0){const Y=g.get(m.parents[0]);Y&&(M=Y.col)}const z=N.get(E)||new Set;for(;z.has(M);)M++;z.add(M),N.set(E,z),g.set(m.hash,{row:E,col:M})}),Math.max(...Array.from(g.values()).map(m=>m.col)),t.length*a+c*2;const A=r.append("g").attr("class","main-group"),S=n.append("div").attr("class","tooltip").style("opacity",0),w=[];t.forEach(m=>{const E=g.get(m.hash);m.parents.forEach(M=>{const z=g.get(M);E&&z&&w.push({child:E,parent:z})})}),A.selectAll("line").data(w).enter().append("line").attr("x1",m=>f+m.child.col*u).attr("y1",m=>c+m.child.row*a).attr("x2",m=>f+m.parent.col*u).attr("y2",m=>c+m.parent.row*a).attr("stroke","#666").attr("stroke-width",2),A.selectAll("g.node").data(t).enter().append("g").attr("class","node").attr("transform",m=>{const E=g.get(m.hash);return`translate(${f+E.col*u}, ${c+E.row*a})`}).append("circle").attr("r",s).attr("fill",m=>p.has(m.hash)?"#4fc3f7":"#fff").attr("stroke","#333").attr("stroke-width",2).style("cursor","pointer").on("mouseenter",(m,E)=>{const M=p.get(E.hash),z=M?`[${M.join(", ")}]
4
+ `:"",Y=new Date(E.timestamp*1e3).toLocaleString();S.html(`<strong>${E.hash.substring(0,7)}</strong><br/>${z}${E.message}<br/><span class="date">${Y}</span>`).style("left",m.pageX+15+"px").style("top",m.pageY-10+"px").style("opacity",1)}).on("mousemove",m=>{S.style("left",m.pageX+15+"px").style("top",m.pageY-10+"px")}).on("mouseleave",()=>{S.style("opacity",0)});const T=xo().scaleExtent([.1,3]).on("zoom",m=>{m.transform,A.attr("transform",m.transform)});T.filter(m=>m.type==="wheel"||m.touches||m.type==="mousedown"&&m.button===2||m.type==="mousemove"&&m.buttons===2?!0:!(m.type==="mousedown"&&m.button===0)),r.call(T),r.on("contextmenu",m=>{m.preventDefault()}),window.addEventListener("resize",()=>{r.attr("width",window.innerWidth).attr("height",window.innerHeight)})}async function Eo(){const[t,e]=await Promise.all([bo(),No()]);console.log("Commits:",t.length),console.log("Branches:",e.length),Ao(t,e)}Eo();
@@ -0,0 +1,3 @@
1
+ (function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function e(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=e(i);fetch(i.href,o)}})();var Fn={value:()=>{}};function pn(){for(var t=0,n=arguments.length,e={},r;t<n;++t){if(!(r=arguments[t]+"")||r in e||/[\s.]/.test(r))throw new Error("illegal type: "+r);e[r]=[]}return new lt(e)}function lt(t){this._=t}function Ln(t,n){return t.trim().split(/^|\s+/).map(function(e){var r="",i=e.indexOf(".");if(i>=0&&(r=e.slice(i+1),e=e.slice(0,i)),e&&!n.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:r}})}lt.prototype=pn.prototype={constructor:lt,on:function(t,n){var e=this._,r=Ln(t+"",e),i,o=-1,s=r.length;if(arguments.length<2){for(;++o<s;)if((i=(t=r[o]).type)&&(i=Dn(e[i],t.name)))return i;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++o<s;)if(i=(t=r[o]).type)e[i]=Wt(e[i],t.name,n);else if(n==null)for(i in e)e[i]=Wt(e[i],t.name,null);return this},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new lt(t)},call:function(t,n){if((i=arguments.length-2)>0)for(var e=new Array(i),r=0,i,o;r<i;++r)e[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(n,e)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};function Dn(t,n){for(var e=0,r=t.length,i;e<r;++e)if((i=t[e]).name===n)return i.value}function Wt(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=Fn,t=t.slice(0,r).concat(t.slice(r+1));break}return e!=null&&t.push({name:n,value:e}),t}var At="http://www.w3.org/1999/xhtml";const Jt={svg:"http://www.w3.org/2000/svg",xhtml:At,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function xt(t){var n=t+="",e=n.indexOf(":");return e>=0&&(n=t.slice(0,e))!=="xmlns"&&(t=t.slice(e+1)),Jt.hasOwnProperty(n)?{space:Jt[n],local:t}:t}function Yn(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===At&&n.documentElement.namespaceURI===At?n.createElement(t):n.createElementNS(e,t)}}function qn(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function dn(t){var n=xt(t);return(n.local?qn:Yn)(n)}function Vn(){}function Xt(t){return t==null?Vn:function(){return this.querySelector(t)}}function zn(t){typeof t!="function"&&(t=Xt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o=n[i],s=o.length,a=r[i]=new Array(s),c,u,f=0;f<s;++f)(c=o[f])&&(u=t.call(c,c.__data__,f,o))&&("__data__"in c&&(u.__data__=c.__data__),a[f]=u);return new b(r,this._parents)}function Un(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}function Gn(){return[]}function gn(t){return t==null?Gn:function(){return this.querySelectorAll(t)}}function Kn(t){return function(){return Un(t.apply(this,arguments))}}function Wn(t){typeof t=="function"?t=Kn(t):t=gn(t);for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var s=n[o],a=s.length,c,u=0;u<a;++u)(c=s[u])&&(r.push(t.call(c,c.__data__,u,s)),i.push(c));return new b(r,i)}function mn(t){return function(){return this.matches(t)}}function _n(t){return function(n){return n.matches(t)}}var Jn=Array.prototype.find;function Qn(t){return function(){return Jn.call(this.children,t)}}function Zn(){return this.firstElementChild}function jn(t){return this.select(t==null?Zn:Qn(typeof t=="function"?t:_n(t)))}var te=Array.prototype.filter;function ne(){return Array.from(this.children)}function ee(t){return function(){return te.call(this.children,t)}}function re(t){return this.selectAll(t==null?ne:ee(typeof t=="function"?t:_n(t)))}function ie(t){typeof t!="function"&&(t=mn(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o=n[i],s=o.length,a=r[i]=[],c,u=0;u<s;++u)(c=o[u])&&t.call(c,c.__data__,u,o)&&a.push(c);return new b(r,this._parents)}function wn(t){return new Array(t.length)}function oe(){return new b(this._enter||this._groups.map(wn),this._parents)}function dt(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}dt.prototype={constructor:dt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function se(t){return function(){return t}}function ae(t,n,e,r,i,o){for(var s=0,a,c=n.length,u=o.length;s<u;++s)(a=n[s])?(a.__data__=o[s],r[s]=a):e[s]=new dt(t,o[s]);for(;s<c;++s)(a=n[s])&&(i[s]=a)}function ce(t,n,e,r,i,o,s){var a,c,u=new Map,f=n.length,h=o.length,l=new Array(f),d;for(a=0;a<f;++a)(c=n[a])&&(l[a]=d=s.call(c,c.__data__,a,n)+"",u.has(d)?i[a]=c:u.set(d,c));for(a=0;a<h;++a)d=s.call(t,o[a],a,o)+"",(c=u.get(d))?(r[a]=c,c.__data__=o[a],u.delete(d)):e[a]=new dt(t,o[a]);for(a=0;a<f;++a)(c=n[a])&&u.get(l[a])===c&&(i[a]=c)}function ue(t){return t.__data__}function fe(t,n){if(!arguments.length)return Array.from(this,ue);var e=n?ce:ae,r=this._parents,i=this._groups;typeof t!="function"&&(t=se(t));for(var o=i.length,s=new Array(o),a=new Array(o),c=new Array(o),u=0;u<o;++u){var f=r[u],h=i[u],l=h.length,d=le(t.call(f,f&&f.__data__,u,r)),m=d.length,w=a[u]=new Array(m),E=s[u]=new Array(m),M=c[u]=new Array(l);e(f,h,w,E,M,d,n);for(var H=0,A=0,Y,$t;H<m;++H)if(Y=w[H]){for(H>=A&&(A=H+1);!($t=E[A])&&++A<m;);Y._next=$t||null}}return s=new b(s,r),s._enter=a,s._exit=c,s}function le(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function he(){return new b(this._exit||this._groups.map(wn),this._parents)}function pe(t,n,e){var r=this.enter(),i=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),n!=null&&(i=n(i),i&&(i=i.selection())),e==null?o.remove():e(o),r&&i?r.merge(i).order():i}function de(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,s=Math.min(i,o),a=new Array(i),c=0;c<s;++c)for(var u=e[c],f=r[c],h=u.length,l=a[c]=new Array(h),d,m=0;m<h;++m)(d=u[m]||f[m])&&(l[m]=d);for(;c<i;++c)a[c]=e[c];return new b(a,this._parents)}function ge(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r=t[n],i=r.length-1,o=r[i],s;--i>=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function me(t){t||(t=_e);function n(h,l){return h&&l?t(h.__data__,l.__data__):!h-!l}for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var s=e[o],a=s.length,c=i[o]=new Array(a),u,f=0;f<a;++f)(u=s[f])&&(c[f]=u);c.sort(n)}return new b(i,this._parents).order()}function _e(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function we(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function ye(){return Array.from(this)}function xe(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var s=r[i];if(s)return s}return null}function ve(){let t=0;for(const n of this)++t;return t}function be(){return!this.node()}function $e(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i=n[e],o=0,s=i.length,a;o<s;++o)(a=i[o])&&t.call(a,a.__data__,o,i);return this}function Se(t){return function(){this.removeAttribute(t)}}function Ne(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ee(t,n){return function(){this.setAttribute(t,n)}}function Ae(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function Ce(t,n){return function(){var e=n.apply(this,arguments);e==null?this.removeAttribute(t):this.setAttribute(t,e)}}function ke(t,n){return function(){var e=n.apply(this,arguments);e==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function Me(t,n){var e=xt(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((n==null?e.local?Ne:Se:typeof n=="function"?e.local?ke:Ce:e.local?Ae:Ee)(e,n))}function yn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Te(t){return function(){this.style.removeProperty(t)}}function Be(t,n,e){return function(){this.style.setProperty(t,n,e)}}function Re(t,n,e){return function(){var r=n.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function Oe(t,n,e){return arguments.length>1?this.each((n==null?Te:typeof n=="function"?Re:Be)(t,n,e??"")):G(this.node(),t)}function G(t,n){return t.style.getPropertyValue(n)||yn(t).getComputedStyle(t,null).getPropertyValue(n)}function Xe(t){return function(){delete this[t]}}function Ie(t,n){return function(){this[t]=n}}function He(t,n){return function(){var e=n.apply(this,arguments);e==null?delete this[t]:this[t]=e}}function Pe(t,n){return arguments.length>1?this.each((n==null?Xe:typeof n=="function"?He:Ie)(t,n)):this.node()[t]}function xn(t){return t.trim().split(/^|\s+/)}function It(t){return t.classList||new vn(t)}function vn(t){this._node=t,this._names=xn(t.getAttribute("class")||"")}vn.prototype={add:function(t){var n=this._names.indexOf(t);n<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function bn(t,n){for(var e=It(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function $n(t,n){for(var e=It(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function Fe(t){return function(){bn(this,t)}}function Le(t){return function(){$n(this,t)}}function De(t,n){return function(){(n.apply(this,arguments)?bn:$n)(this,t)}}function Ye(t,n){var e=xn(t+"");if(arguments.length<2){for(var r=It(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each((typeof n=="function"?De:n?Fe:Le)(e,n))}function qe(){this.textContent=""}function Ve(t){return function(){this.textContent=t}}function ze(t){return function(){var n=t.apply(this,arguments);this.textContent=n??""}}function Ue(t){return arguments.length?this.each(t==null?qe:(typeof t=="function"?ze:Ve)(t)):this.node().textContent}function Ge(){this.innerHTML=""}function Ke(t){return function(){this.innerHTML=t}}function We(t){return function(){var n=t.apply(this,arguments);this.innerHTML=n??""}}function Je(t){return arguments.length?this.each(t==null?Ge:(typeof t=="function"?We:Ke)(t)):this.node().innerHTML}function Qe(){this.nextSibling&&this.parentNode.appendChild(this)}function Ze(){return this.each(Qe)}function je(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function tr(){return this.each(je)}function nr(t){var n=typeof t=="function"?t:dn(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})}function er(){return null}function rr(t,n){var e=typeof t=="function"?t:dn(t),r=n==null?er:typeof n=="function"?n:Xt(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})}function ir(){var t=this.parentNode;t&&t.removeChild(this)}function or(){return this.each(ir)}function sr(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function ar(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function cr(t){return this.select(t?ar:sr)}function ur(t){return arguments.length?this.property("__data__",t):this.node().__data__}function fr(t){return function(n){t.call(this,n,this.__data__)}}function lr(t){return t.trim().split(/^|\s+/).map(function(n){var e="",r=n.indexOf(".");return r>=0&&(e=n.slice(r+1),n=n.slice(0,r)),{type:n,name:e}})}function hr(t){return function(){var n=this.__on;if(n){for(var e=0,r=-1,i=n.length,o;e<i;++e)o=n[e],(!t.type||o.type===t.type)&&o.name===t.name?this.removeEventListener(o.type,o.listener,o.options):n[++r]=o;++r?n.length=r:delete this.__on}}}function pr(t,n,e){return function(){var r=this.__on,i,o=fr(n);if(r){for(var s=0,a=r.length;s<a;++s)if((i=r[s]).type===t.type&&i.name===t.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=o,i.options=e),i.value=n;return}}this.addEventListener(t.type,o,e),i={type:t.type,name:t.name,value:n,listener:o,options:e},r?r.push(i):this.__on=[i]}}function dr(t,n,e){var r=lr(t+""),i,o=r.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var c=0,u=a.length,f;c<u;++c)for(i=0,f=a[c];i<o;++i)if((s=r[i]).type===f.type&&s.name===f.name)return f.value}return}for(a=n?pr:hr,i=0;i<o;++i)this.each(a(r[i],n,e));return this}function Sn(t,n,e){var r=yn(t),i=r.CustomEvent;typeof i=="function"?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function gr(t,n){return function(){return Sn(this,t,n)}}function mr(t,n){return function(){return Sn(this,t,n.apply(this,arguments))}}function _r(t,n){return this.each((typeof n=="function"?mr:gr)(t,n))}function*wr(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length,s;i<o;++i)(s=r[i])&&(yield s)}var Nn=[null];function b(t,n){this._groups=t,this._parents=n}function it(){return new b([[document.documentElement]],Nn)}function yr(){return this}b.prototype=it.prototype={constructor:b,select:zn,selectAll:Wn,selectChild:jn,selectChildren:re,filter:ie,data:fe,enter:oe,exit:he,join:pe,merge:de,selection:yr,order:ge,sort:me,call:we,nodes:ye,node:xe,size:ve,empty:be,each:$e,attr:Me,style:Oe,property:Pe,classed:Ye,text:Ue,html:Je,raise:Ze,lower:tr,append:nr,insert:rr,remove:or,clone:cr,datum:ur,on:dr,dispatch:_r,[Symbol.iterator]:wr};function Qt(t){return typeof t=="string"?new b([[document.querySelector(t)]],[document.documentElement]):new b([[t]],Nn)}function Ht(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function En(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function ot(){}var tt=.7,gt=1/tt,z="\\s*([+-]?\\d+)\\s*",nt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",C="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",xr=/^#([0-9a-f]{3,8})$/,vr=new RegExp(`^rgb\\(${z},${z},${z}\\)$`),br=new RegExp(`^rgb\\(${C},${C},${C}\\)$`),$r=new RegExp(`^rgba\\(${z},${z},${z},${nt}\\)$`),Sr=new RegExp(`^rgba\\(${C},${C},${C},${nt}\\)$`),Nr=new RegExp(`^hsl\\(${nt},${C},${C}\\)$`),Er=new RegExp(`^hsla\\(${nt},${C},${C},${nt}\\)$`),Zt={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Ht(ot,et,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:jt,formatHex:jt,formatHex8:Ar,formatHsl:Cr,formatRgb:tn,toString:tn});function jt(){return this.rgb().formatHex()}function Ar(){return this.rgb().formatHex8()}function Cr(){return An(this).formatHsl()}function tn(){return this.rgb().formatRgb()}function et(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=xr.exec(t))?(e=n[1].length,n=parseInt(n[1],16),e===6?nn(n):e===3?new x(n>>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):e===8?ct(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):e===4?ct(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=vr.exec(t))?new x(n[1],n[2],n[3],1):(n=br.exec(t))?new x(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=$r.exec(t))?ct(n[1],n[2],n[3],n[4]):(n=Sr.exec(t))?ct(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=Nr.exec(t))?on(n[1],n[2]/100,n[3]/100,1):(n=Er.exec(t))?on(n[1],n[2]/100,n[3]/100,n[4]):Zt.hasOwnProperty(t)?nn(Zt[t]):t==="transparent"?new x(NaN,NaN,NaN,0):null}function nn(t){return new x(t>>16&255,t>>8&255,t&255,1)}function ct(t,n,e,r){return r<=0&&(t=n=e=NaN),new x(t,n,e,r)}function kr(t){return t instanceof ot||(t=et(t)),t?(t=t.rgb(),new x(t.r,t.g,t.b,t.opacity)):new x}function Ct(t,n,e,r){return arguments.length===1?kr(t):new x(t,n,e,r??1)}function x(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}Ht(x,Ct,En(ot,{brighter(t){return t=t==null?gt:Math.pow(gt,t),new x(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?tt:Math.pow(tt,t),new x(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new x(L(this.r),L(this.g),L(this.b),mt(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:en,formatHex:en,formatHex8:Mr,formatRgb:rn,toString:rn}));function en(){return`#${F(this.r)}${F(this.g)}${F(this.b)}`}function Mr(){return`#${F(this.r)}${F(this.g)}${F(this.b)}${F((isNaN(this.opacity)?1:this.opacity)*255)}`}function rn(){const t=mt(this.opacity);return`${t===1?"rgb(":"rgba("}${L(this.r)}, ${L(this.g)}, ${L(this.b)}${t===1?")":`, ${t})`}`}function mt(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function L(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function F(t){return t=L(t),(t<16?"0":"")+t.toString(16)}function on(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new S(t,n,e,r)}function An(t){if(t instanceof S)return new S(t.h,t.s,t.l,t.opacity);if(t instanceof ot||(t=et(t)),!t)return new S;if(t instanceof S)return t;t=t.rgb();var n=t.r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),s=NaN,a=o-i,c=(o+i)/2;return a?(n===o?s=(e-r)/a+(e<r)*6:e===o?s=(r-n)/a+2:s=(n-e)/a+4,a/=c<.5?o+i:2-o-i,s*=60):a=c>0&&c<1?0:s,new S(s,a,c,t.opacity)}function Tr(t,n,e,r){return arguments.length===1?An(t):new S(t,n,e,r??1)}function S(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}Ht(S,Tr,En(ot,{brighter(t){return t=t==null?gt:Math.pow(gt,t),new S(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?tt:Math.pow(tt,t),new S(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new x(Nt(t>=240?t-240:t+120,i,r),Nt(t,i,r),Nt(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new S(sn(this.h),ut(this.s),ut(this.l),mt(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=mt(this.opacity);return`${t===1?"hsl(":"hsla("}${sn(this.h)}, ${ut(this.s)*100}%, ${ut(this.l)*100}%${t===1?")":`, ${t})`}`}}));function sn(t){return t=(t||0)%360,t<0?t+360:t}function ut(t){return Math.max(0,Math.min(1,t||0))}function Nt(t,n,e){return(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)*255}const Cn=t=>()=>t;function Br(t,n){return function(e){return t+e*n}}function Rr(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}function Or(t){return(t=+t)==1?kn:function(n,e){return e-n?Rr(n,e,t):Cn(isNaN(n)?e:n)}}function kn(t,n){var e=n-t;return e?Br(t,e):Cn(isNaN(t)?n:t)}const an=(function t(n){var e=Or(n);function r(i,o){var s=e((i=Ct(i)).r,(o=Ct(o)).r),a=e(i.g,o.g),c=e(i.b,o.b),u=kn(i.opacity,o.opacity);return function(f){return i.r=s(f),i.g=a(f),i.b=c(f),i.opacity=u(f),i+""}}return r.gamma=t,r})(1);function I(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}var kt=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Et=new RegExp(kt.source,"g");function Xr(t){return function(){return t}}function Ir(t){return function(n){return t(n)+""}}function Hr(t,n){var e=kt.lastIndex=Et.lastIndex=0,r,i,o,s=-1,a=[],c=[];for(t=t+"",n=n+"";(r=kt.exec(t))&&(i=Et.exec(n));)(o=i.index)>e&&(o=n.slice(e,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,c.push({i:s,x:I(r,i)})),e=Et.lastIndex;return e<n.length&&(o=n.slice(e),a[s]?a[s]+=o:a[++s]=o),a.length<2?c[0]?Ir(c[0].x):Xr(n):(n=c.length,function(u){for(var f=0,h;f<n;++f)a[(h=c[f]).i]=h.x(u);return a.join("")})}var cn=180/Math.PI,Mt={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Mn(t,n,e,r,i,o){var s,a,c;return(s=Math.sqrt(t*t+n*n))&&(t/=s,n/=s),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,c/=a),t*r<n*e&&(t=-t,n=-n,c=-c,s=-s),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*cn,skewX:Math.atan(c)*cn,scaleX:s,scaleY:a}}var ft;function Pr(t){const n=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Mt:Mn(n.a,n.b,n.c,n.d,n.e,n.f)}function Fr(t){return t==null||(ft||(ft=document.createElementNS("http://www.w3.org/2000/svg","g")),ft.setAttribute("transform",t),!(t=ft.transform.baseVal.consolidate()))?Mt:(t=t.matrix,Mn(t.a,t.b,t.c,t.d,t.e,t.f))}function Tn(t,n,e,r){function i(u){return u.length?u.pop()+" ":""}function o(u,f,h,l,d,m){if(u!==h||f!==l){var w=d.push("translate(",null,n,null,e);m.push({i:w-4,x:I(u,h)},{i:w-2,x:I(f,l)})}else(h||l)&&d.push("translate("+h+n+l+e)}function s(u,f,h,l){u!==f?(u-f>180?f+=360:f-u>180&&(u+=360),l.push({i:h.push(i(h)+"rotate(",null,r)-2,x:I(u,f)})):f&&h.push(i(h)+"rotate("+f+r)}function a(u,f,h,l){u!==f?l.push({i:h.push(i(h)+"skewX(",null,r)-2,x:I(u,f)}):f&&h.push(i(h)+"skewX("+f+r)}function c(u,f,h,l,d,m){if(u!==h||f!==l){var w=d.push(i(d)+"scale(",null,",",null,")");m.push({i:w-4,x:I(u,h)},{i:w-2,x:I(f,l)})}else(h!==1||l!==1)&&d.push(i(d)+"scale("+h+","+l+")")}return function(u,f){var h=[],l=[];return u=t(u),f=t(f),o(u.translateX,u.translateY,f.translateX,f.translateY,h,l),s(u.rotate,f.rotate,h,l),a(u.skewX,f.skewX,h,l),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,h,l),u=f=null,function(d){for(var m=-1,w=l.length,E;++m<w;)h[(E=l[m]).i]=E.x(d);return h.join("")}}}var Lr=Tn(Pr,"px, ","px)","deg)"),Dr=Tn(Fr,", ",")",")"),K=0,J=0,W=0,Bn=1e3,_t,Q,wt=0,D=0,vt=0,rt=typeof performance=="object"&&performance.now?performance:Date,Rn=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Pt(){return D||(Rn(Yr),D=rt.now()+vt)}function Yr(){D=0}function yt(){this._call=this._time=this._next=null}yt.prototype=On.prototype={constructor:yt,restart:function(t,n,e){if(typeof t!="function")throw new TypeError("callback is not a function");e=(e==null?Pt():+e)+(n==null?0:+n),!this._next&&Q!==this&&(Q?Q._next=this:_t=this,Q=this),this._call=t,this._time=e,Tt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Tt())}};function On(t,n,e){var r=new yt;return r.restart(t,n,e),r}function qr(){Pt(),++K;for(var t=_t,n;t;)(n=D-t._time)>=0&&t._call.call(void 0,n),t=t._next;--K}function un(){D=(wt=rt.now())+vt,K=J=0;try{qr()}finally{K=0,zr(),D=0}}function Vr(){var t=rt.now(),n=t-wt;n>Bn&&(vt-=n,wt=t)}function zr(){for(var t,n=_t,e,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:_t=e);Q=t,Tt(r)}function Tt(t){if(!K){J&&(J=clearTimeout(J));var n=t-D;n>24?(t<1/0&&(J=setTimeout(un,t-rt.now()-vt)),W&&(W=clearInterval(W))):(W||(wt=rt.now(),W=setInterval(Vr,Bn)),K=1,Rn(un))}}function fn(t,n,e){var r=new yt;return n=n==null?0:+n,r.restart(i=>{r.stop(),t(i+n)},n,e),r}var Ur=pn("start","end","cancel","interrupt"),Gr=[],Xn=0,ln=1,Bt=2,ht=3,hn=4,Rt=5,pt=6;function bt(t,n,e,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(e in s)return;Kr(t,e,{name:n,index:r,group:i,on:Ur,tween:Gr,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Xn})}function Ft(t,n){var e=N(t,n);if(e.state>Xn)throw new Error("too late; already scheduled");return e}function k(t,n){var e=N(t,n);if(e.state>ht)throw new Error("too late; already running");return e}function N(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Kr(t,n,e){var r=t.__transition,i;r[n]=e,e.timer=On(o,0,e.time);function o(u){e.state=ln,e.timer.restart(s,e.delay,e.time),e.delay<=u&&s(u-e.delay)}function s(u){var f,h,l,d;if(e.state!==ln)return c();for(f in r)if(d=r[f],d.name===e.name){if(d.state===ht)return fn(s);d.state===hn?(d.state=pt,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[f]):+f<n&&(d.state=pt,d.timer.stop(),d.on.call("cancel",t,t.__data__,d.index,d.group),delete r[f])}if(fn(function(){e.state===ht&&(e.state=hn,e.timer.restart(a,e.delay,e.time),a(u))}),e.state=Bt,e.on.call("start",t,t.__data__,e.index,e.group),e.state===Bt){for(e.state=ht,i=new Array(l=e.tween.length),f=0,h=-1;f<l;++f)(d=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(i[++h]=d);i.length=h+1}}function a(u){for(var f=u<e.duration?e.ease.call(null,u/e.duration):(e.timer.restart(c),e.state=Rt,1),h=-1,l=i.length;++h<l;)i[h].call(t,f);e.state===Rt&&(e.on.call("end",t,t.__data__,e.index,e.group),c())}function c(){e.state=pt,e.timer.stop(),delete r[n];for(var u in r)return;delete t.__transition}}function Wr(t,n){var e=t.__transition,r,i,o=!0,s;if(e){n=n==null?null:n+"";for(s in e){if((r=e[s]).name!==n){o=!1;continue}i=r.state>Bt&&r.state<Rt,r.state=pt,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete e[s]}o&&delete t.__transition}}function Jr(t){return this.each(function(){Wr(this,t)})}function Qr(t,n){var e,r;return function(){var i=k(this,t),o=i.tween;if(o!==e){r=e=o;for(var s=0,a=r.length;s<a;++s)if(r[s].name===n){r=r.slice(),r.splice(s,1);break}}i.tween=r}}function Zr(t,n,e){var r,i;if(typeof e!="function")throw new Error;return function(){var o=k(this,t),s=o.tween;if(s!==r){i=(r=s).slice();for(var a={name:n,value:e},c=0,u=i.length;c<u;++c)if(i[c].name===n){i[c]=a;break}c===u&&i.push(a)}o.tween=i}}function jr(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r=N(this.node(),e).tween,i=0,o=r.length,s;i<o;++i)if((s=r[i]).name===t)return s.value;return null}return this.each((n==null?Qr:Zr)(e,t,n))}function Lt(t,n,e){var r=t._id;return t.each(function(){var i=k(this,r);(i.value||(i.value={}))[n]=e.apply(this,arguments)}),function(i){return N(i,r).value[n]}}function In(t,n){var e;return(typeof n=="number"?I:n instanceof et?an:(e=et(n))?(n=e,an):Hr)(t,n)}function ti(t){return function(){this.removeAttribute(t)}}function ni(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ei(t,n,e){var r,i=e+"",o;return function(){var s=this.getAttribute(t);return s===i?null:s===r?o:o=n(r=s,e)}}function ri(t,n,e){var r,i=e+"",o;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===r?o:o=n(r=s,e)}}function ii(t,n,e){var r,i,o;return function(){var s,a=e(this),c;return a==null?void this.removeAttribute(t):(s=this.getAttribute(t),c=a+"",s===c?null:s===r&&c===i?o:(i=c,o=n(r=s,a)))}}function oi(t,n,e){var r,i,o;return function(){var s,a=e(this),c;return a==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),c=a+"",s===c?null:s===r&&c===i?o:(i=c,o=n(r=s,a)))}}function si(t,n){var e=xt(t),r=e==="transform"?Dr:In;return this.attrTween(t,typeof n=="function"?(e.local?oi:ii)(e,r,Lt(this,"attr."+t,n)):n==null?(e.local?ni:ti)(e):(e.local?ri:ei)(e,r,n))}function ai(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function ci(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function ui(t,n){var e,r;function i(){var o=n.apply(this,arguments);return o!==r&&(e=(r=o)&&ci(t,o)),e}return i._value=n,i}function fi(t,n){var e,r;function i(){var o=n.apply(this,arguments);return o!==r&&(e=(r=o)&&ai(t,o)),e}return i._value=n,i}function li(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(n==null)return this.tween(e,null);if(typeof n!="function")throw new Error;var r=xt(t);return this.tween(e,(r.local?ui:fi)(r,n))}function hi(t,n){return function(){Ft(this,t).delay=+n.apply(this,arguments)}}function pi(t,n){return n=+n,function(){Ft(this,t).delay=n}}function di(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?hi:pi)(n,t)):N(this.node(),n).delay}function gi(t,n){return function(){k(this,t).duration=+n.apply(this,arguments)}}function mi(t,n){return n=+n,function(){k(this,t).duration=n}}function _i(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?gi:mi)(n,t)):N(this.node(),n).duration}function wi(t,n){if(typeof n!="function")throw new Error;return function(){k(this,t).ease=n}}function yi(t){var n=this._id;return arguments.length?this.each(wi(n,t)):N(this.node(),n).ease}function xi(t,n){return function(){var e=n.apply(this,arguments);if(typeof e!="function")throw new Error;k(this,t).ease=e}}function vi(t){if(typeof t!="function")throw new Error;return this.each(xi(this._id,t))}function bi(t){typeof t!="function"&&(t=mn(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o=n[i],s=o.length,a=r[i]=[],c,u=0;u<s;++u)(c=o[u])&&t.call(c,c.__data__,u,o)&&a.push(c);return new R(r,this._parents,this._name,this._id)}function $i(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),s=new Array(r),a=0;a<o;++a)for(var c=n[a],u=e[a],f=c.length,h=s[a]=new Array(f),l,d=0;d<f;++d)(l=c[d]||u[d])&&(h[d]=l);for(;a<r;++a)s[a]=n[a];return new R(s,this._parents,this._name,this._id)}function Si(t){return(t+"").trim().split(/^|\s+/).every(function(n){var e=n.indexOf(".");return e>=0&&(n=n.slice(0,e)),!n||n==="start"})}function Ni(t,n,e){var r,i,o=Si(n)?Ft:k;return function(){var s=o(this,t),a=s.on;a!==r&&(i=(r=a).copy()).on(n,e),s.on=i}}function Ei(t,n){var e=this._id;return arguments.length<2?N(this.node(),e).on.on(t):this.each(Ni(e,t,n))}function Ai(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}function Ci(){return this.on("end.remove",Ai(this._id))}function ki(t){var n=this._name,e=this._id;typeof t!="function"&&(t=Xt(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s<i;++s)for(var a=r[s],c=a.length,u=o[s]=new Array(c),f,h,l=0;l<c;++l)(f=a[l])&&(h=t.call(f,f.__data__,l,a))&&("__data__"in f&&(h.__data__=f.__data__),u[l]=h,bt(u[l],n,e,l,u,N(f,e)));return new R(o,this._parents,n,e)}function Mi(t){var n=this._name,e=this._id;typeof t!="function"&&(t=gn(t));for(var r=this._groups,i=r.length,o=[],s=[],a=0;a<i;++a)for(var c=r[a],u=c.length,f,h=0;h<u;++h)if(f=c[h]){for(var l=t.call(f,f.__data__,h,c),d,m=N(f,e),w=0,E=l.length;w<E;++w)(d=l[w])&&bt(d,n,e,w,l,m);o.push(l),s.push(f)}return new R(o,s,n,e)}var Ti=it.prototype.constructor;function Bi(){return new Ti(this._groups,this._parents)}function Ri(t,n){var e,r,i;return function(){var o=G(this,t),s=(this.style.removeProperty(t),G(this,t));return o===s?null:o===e&&s===r?i:i=n(e=o,r=s)}}function Hn(t){return function(){this.style.removeProperty(t)}}function Oi(t,n,e){var r,i=e+"",o;return function(){var s=G(this,t);return s===i?null:s===r?o:o=n(r=s,e)}}function Xi(t,n,e){var r,i,o;return function(){var s=G(this,t),a=e(this),c=a+"";return a==null&&(c=a=(this.style.removeProperty(t),G(this,t))),s===c?null:s===r&&c===i?o:(i=c,o=n(r=s,a))}}function Ii(t,n){var e,r,i,o="style."+n,s="end."+o,a;return function(){var c=k(this,t),u=c.on,f=c.value[o]==null?a||(a=Hn(n)):void 0;(u!==e||i!==f)&&(r=(e=u).copy()).on(s,i=f),c.on=r}}function Hi(t,n,e){var r=(t+="")=="transform"?Lr:In;return n==null?this.styleTween(t,Ri(t,r)).on("end.style."+t,Hn(t)):typeof n=="function"?this.styleTween(t,Xi(t,r,Lt(this,"style."+t,n))).each(Ii(this._id,t)):this.styleTween(t,Oi(t,r,n),e).on("end.style."+t,null)}function Pi(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function Fi(t,n,e){var r,i;function o(){var s=n.apply(this,arguments);return s!==i&&(r=(i=s)&&Pi(t,s,e)),r}return o._value=n,o}function Li(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(n==null)return this.tween(r,null);if(typeof n!="function")throw new Error;return this.tween(r,Fi(t,n,e??""))}function Di(t){return function(){this.textContent=t}}function Yi(t){return function(){var n=t(this);this.textContent=n??""}}function qi(t){return this.tween("text",typeof t=="function"?Yi(Lt(this,"text",t)):Di(t==null?"":t+""))}function Vi(t){return function(n){this.textContent=t.call(this,n)}}function zi(t){var n,e;function r(){var i=t.apply(this,arguments);return i!==e&&(n=(e=i)&&Vi(i)),n}return r._value=t,r}function Ui(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,zi(t))}function Gi(){for(var t=this._name,n=this._id,e=Pn(),r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,c,u=0;u<a;++u)if(c=s[u]){var f=N(c,n);bt(c,t,e,u,s,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new R(r,this._parents,t,e)}function Ki(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(o,s){var a={value:s},c={value:function(){--i===0&&o()}};e.each(function(){var u=k(this,r),f=u.on;f!==t&&(n=(t=f).copy(),n._.cancel.push(a),n._.interrupt.push(a),n._.end.push(c)),u.on=n}),i===0&&o()})}var Wi=0;function R(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Pn(){return++Wi}var T=it.prototype;R.prototype={constructor:R,select:ki,selectAll:Mi,selectChild:T.selectChild,selectChildren:T.selectChildren,filter:bi,merge:$i,selection:Bi,transition:Gi,call:T.call,nodes:T.nodes,node:T.node,size:T.size,empty:T.empty,each:T.each,on:Ei,attr:si,attrTween:li,style:Hi,styleTween:Li,text:qi,textTween:Ui,remove:Ci,tween:jr,delay:di,duration:_i,ease:yi,easeVarying:vi,end:Ki,[Symbol.iterator]:T[Symbol.iterator]};function Ji(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var Qi={time:null,delay:0,duration:250,ease:Ji};function Zi(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}function ji(t){var n,e;t instanceof R?(n=t._id,t=t._name):(n=Pn(),(e=Qi).time=Pt(),t=t==null?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var s=r[o],a=s.length,c,u=0;u<a;++u)(c=s[u])&&bt(c,t,n,u,s,e||Zi(c,n));return new R(r,this._parents,t,n)}it.prototype.interrupt=Jr;it.prototype.transition=ji;function Z(t,n,e){this.k=t,this.x=n,this.y=e}Z.prototype={constructor:Z,scale:function(t){return t===1?this:new Z(this.k*t,this.x,this.y)},translate:function(t,n){return t===0&n===0?this:new Z(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};Z.prototype;let B=[],j=[],U=new Map;async function to(){const t=await window.gitopo.git.exec('log --all --format="%H|%P|%ct|%s" --date-order -1000');if(!t.success)return console.error("Failed to fetch commits:",t.error),[];const n=[],e=t.output.trim().split(`
2
+ `);for(const r of e){const i=r.split("|");if(i.length>=4){const o=i[0],s=i[1],a=parseInt(i[2],10),c=i.slice(3).join("|"),u=s.trim()?s.trim().split(" "):[];n.push({hash:o,parents:u,timestamp:a,message:c})}}return n.sort((r,i)=>i.timestamp-r.timestamp),n}async function no(){const t=await window.gitopo.git.exec('branch -a --format="%(refname:short) %(objectname)"');if(!t.success)return console.error("Failed to fetch branches:",t.error),[];const n=[],e=t.output.trim().split(`
3
+ `);for(const r of e){const i=r.trim().split(" ");if(i.length>=2){const o=i[0],s=i[1];n.push({name:o,hash:s})}}return n}function eo(t){const n=["branch1","branch2","branch3"],e=t.find(r=>r.name==="main"||r.name==="master");n.forEach((r,i)=>{const o=document.getElementById(r);o.innerHTML="";const s=document.createElement("option");s.value="",s.textContent="----",o.appendChild(s),t.forEach(a=>{const c=document.createElement("option");c.value=a.name,c.textContent=a.name,o.appendChild(c)}),i===0&&e&&(o.value=e.name),o.addEventListener("change",()=>Ot())})}function ro(t){const n=j.find(i=>i.name===t);if(!n)return new Set;const e=new Set;let r=n.hash;for(;r;){e.add(r);const i=U.get(r);if(i&&i.parents.length>0)r=i.parents[0];else break}return e}function io(t){const n=[],e=new Set;for(const r of t){const i=U.get(r);if(!(!i||i.parents.length<2))for(let o=1;o<i.parents.length;o++){const s=i.parents[o];if(e.has(s))continue;const a=new Set,c=[s];for(;c.length>0;){const u=c.pop();if(a.has(u)||t.has(u)||e.has(u))continue;const f=U.get(u);if(f){a.add(u),e.add(u);for(const h of f.parents)!t.has(h)&&!a.has(h)&&c.push(h)}}if(a.size>0){let u=!0;for(const f of a){const h=U.get(f);if(h){for(const l of h.parents)if(!t.has(l)&&!a.has(l)){u=!1;break}if(!u)break}}u&&n.push({mergeCommit:r,commits:a})}}}return n}function oo(){const t=[];return["branch1","branch2","branch3"].forEach(n=>{const e=document.getElementById(n);e&&e.value&&t.push(e.value)}),t}function Ot(){const t=Qt("#graph");t.selectAll("*").remove();const n=Qt("#app");n.selectAll(".tooltip").remove();const e=document.getElementById("controls").offsetHeight,r=window.innerWidth,i=window.innerHeight-e;t.attr("width",r).attr("height",i);const o=6,s=30,a=150,c=30,u=50,f=50,l=oo().map(p=>{const g=ro(p),_=io(g);return{name:p,lineage:g,subBranches:_}}),d=new Map;j.forEach(p=>{d.has(p.hash)||d.set(p.hash,[]),d.get(p.hash).push(p.name)});const m=new Map;B.forEach(p=>{m.set(p.hash,{mainCol:l.length,subOffset:0,isSubBranch:!1})}),l.forEach((p,g)=>{for(const _ of p.lineage)m.set(_,{mainCol:g,subOffset:0,isSubBranch:!1})}),l.forEach((p,g)=>{const _=new Map;p.subBranches.forEach(y=>{const $=[];y.commits.forEach(v=>{const P=B.findIndex(at=>at.hash===v);P>=0&&$.push(P)});let O=1,X=!0;for(;X;){X=!1;for(const v of $)if((_.get(v)||new Set).has(O)){X=!0,O++;break}}for(const v of $)_.has(v)||_.set(v,new Set),_.get(v).add(O);y.commits.forEach(v=>{m.set(v,{mainCol:g,subOffset:O,isSubBranch:!0})})})});const w=new Map;let E=f;for(let p=0;p<=l.length;p++)if(w.set(p,E),p<l.length){let g=0;B.forEach(_=>{const y=m.get(_.hash);y.mainCol===p&&y.subOffset>g&&(g=y.subOffset)}),E+=a+g*c}const M=new Map;B.forEach((p,g)=>{const _=m.get(p.hash),$=w.get(_.mainCol)+_.subOffset*c;M.set(p.hash,{col:_.mainCol,subOffset:_.subOffset,row:g,x:$,y:u+g*s,isSubBranch:_.isSubBranch})});const H=Array.from(m.values()).some(p=>p.mainCol===l.length),A=t.append("g").attr("class","main-group"),Y=n.append("div").attr("class","tooltip").style("opacity",0);l.forEach((p,g)=>{A.append("text").attr("x",w.get(g)).attr("y",25).attr("fill","#4fc3f7").attr("font-size","14px").attr("font-weight","bold").text(p.name)}),H&&A.append("text").attr("x",w.get(l.length)).attr("y",25).attr("fill","#888").attr("font-size","14px").text("Other"),B.forEach(p=>{const g=M.get(p.hash);g&&p.parents.forEach(_=>{const y=M.get(_);if(y){if(g.col===l.length||y.col===l.length)return;const $=g.x,O=g.y,X=y.x,v=y.y;let P;if($===X)P=`M ${$} ${O} L ${X} ${v}`;else{const at=(O+v)/2;P=`M ${$} ${O} C ${$} ${at}, ${X} ${at}, ${X} ${v}`}A.append("path").attr("d",P).attr("fill","none").attr("stroke",g.isSubBranch||y.isSubBranch?"#555":"#666").attr("stroke-width",g.isSubBranch&&y.isSubBranch?1:1.5).attr("stroke-opacity",.6)}})}),A.selectAll("g.node").data(B).enter().append("g").attr("class","node").attr("transform",p=>{const g=M.get(p.hash);return g?`translate(${g.x}, ${g.y})`:"translate(-100, -100)"}).append("circle").attr("r",p=>{const g=M.get(p.hash);return g.isSubBranch?o*.6:g.col<l.length?o:o*.7}).attr("fill",p=>{const g=M.get(p.hash);return g.isSubBranch?"#a0a0a0":g.col<l.length?d.has(p.hash)?"#4fc3f7":"#fff":"#888"}).attr("stroke","#333").attr("stroke-width",p=>{const g=M.get(p.hash);return g.isSubBranch?1:g.col<l.length?2:1}).style("cursor","pointer").on("mouseenter",(p,g)=>{const _=d.get(g.hash),y=_?`[${_.join(", ")}]<br/>`:"",$=new Date(g.timestamp*1e3).toLocaleString();Y.html(`<strong>${g.hash.substring(0,7)}</strong><br/>${y}${g.message}<br/><span class="date">${$}</span>`).style("left",p.pageX+15+"px").style("top",p.pageY-10+"px").style("opacity",1)}).on("mousemove",p=>{Y.style("left",p.pageX+15+"px").style("top",p.pageY-10+"px")}).on("mouseleave",()=>{Y.style("opacity",0)});let q=0,V=0,st=!1,Dt=0,Yt=0,qt=0,Vt=0;function St(){A.attr("transform",`translate(${q}, ${V})`)}t.on("wheel",p=>{p.preventDefault(),q-=p.deltaX,V-=p.deltaY,St()}),t.on("mousedown",p=>{p.button===0&&(st=!0,Dt=p.clientX,Yt=p.clientY,qt=q,Vt=V,p.preventDefault())}),t.on("mousemove",p=>{st&&(q=qt+(p.clientX-Dt),V=Vt+(p.clientY-Yt),St())}),t.on("mouseup",p=>{p.button===0&&(st=!1)}),t.on("mouseleave",()=>{st=!1});let zt=0,Ut=0,Gt=0,Kt=0;t.on("touchstart",p=>{if(p.touches.length===1){const g=p.touches[0];zt=g.clientX,Ut=g.clientY,Gt=q,Kt=V}}),t.on("touchmove",p=>{if(p.touches.length===1){p.preventDefault();const g=p.touches[0];q=Gt+(g.clientX-zt),V=Kt+(g.clientY-Ut),St()}}),t.on("contextmenu",p=>{p.preventDefault()})}async function so(){[B,j]=await Promise.all([to(),no()]),U.clear(),B.forEach(t=>U.set(t.hash,t)),console.log("Commits:",B.length),console.log("Branches:",j.length),eo(j),Ot(),window.addEventListener("resize",()=>{Ot()})}so();