streamlit-nightly 1.42.3.dev20250227__py2.py3-none-any.whl → 1.42.3.dev20250228__py2.py3-none-any.whl

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 (81) hide show
  1. streamlit/elements/arrow.py +6 -5
  2. streamlit/elements/lib/column_types.py +101 -70
  3. streamlit/elements/widgets/button.py +13 -2
  4. streamlit/elements/widgets/data_editor.py +6 -5
  5. streamlit/elements/widgets/number_input.py +3 -2
  6. streamlit/elements/widgets/slider.py +11 -3
  7. streamlit/runtime/context.py +47 -2
  8. streamlit/static/index.html +1 -1
  9. streamlit/static/static/js/{FileDownload.esm.rdZtCw5-.js → FileDownload.esm.BjRCwIvW.js} +1 -1
  10. streamlit/static/static/js/{FileHelper.BztOEKJy.js → FileHelper.CGrcmoNK.js} +1 -1
  11. streamlit/static/static/js/{FormClearHelper.Drd1fMJc.js → FormClearHelper.CyjIZnZM.js} +1 -1
  12. streamlit/static/static/js/{Hooks.DWd0hyk4.js → Hooks.-DbiQ7Am.js} +1 -1
  13. streamlit/static/static/js/{InputInstructions.B7xrWTG0.js → InputInstructions.CV_L9pmm.js} +1 -1
  14. streamlit/static/static/js/{ProgressBar.CBgJiTH-.js → ProgressBar.BMUfDSdU.js} +1 -1
  15. streamlit/static/static/js/{RenderInPortalIfExists.US28tQOn.js → RenderInPortalIfExists.DBak2tzf.js} +1 -1
  16. streamlit/static/static/js/{Toolbar.CAOt-xaL.js → Toolbar.BpCHhFl7.js} +1 -1
  17. streamlit/static/static/js/{base-input.CauNaJqr.js → base-input.B4K7gn3m.js} +1 -1
  18. streamlit/static/static/js/{checkbox.ChzWCtre.js → checkbox.CAX7YHDZ.js} +1 -1
  19. streamlit/static/static/js/{createSuper.D_39RJB6.js → createSuper.D9gT0sOi.js} +1 -1
  20. streamlit/static/static/js/{data-grid-overlay-editor.rIelkOVS.js → data-grid-overlay-editor.gLdGVwGm.js} +1 -1
  21. streamlit/static/static/js/{downloader.Dz5I28nG.js → downloader.DcsU6eyn.js} +1 -1
  22. streamlit/static/static/js/{es6.DwnEjMMn.js → es6.dTL0Du7U.js} +2 -2
  23. streamlit/static/static/js/{iframeResizer.contentWindow.BRiRifwd.js → iframeResizer.contentWindow.flH1YmDM.js} +1 -1
  24. streamlit/static/static/js/{index.D9rv1PQ0.js → index.-WtL21xT.js} +1 -1
  25. streamlit/static/static/js/{index.BWeYb5ES.js → index.B0VH6CCN.js} +1 -1
  26. streamlit/static/static/js/{index.pvQjxG7y.js → index.B6RoN18x.js} +1 -1
  27. streamlit/static/static/js/{index.DkgVNhWs.js → index.B7TcBuqC.js} +1 -1
  28. streamlit/static/static/js/{index.CM12P2T1.js → index.BCg2ff_8.js} +2 -2
  29. streamlit/static/static/js/{index.CUz1_nAm.js → index.BFxZ-0WR.js} +1 -1
  30. streamlit/static/static/js/{index.CO3dZWKG.js → index.BJIOzTyr.js} +1 -1
  31. streamlit/static/static/js/{index.Dzp8iBkF.js → index.BMUI3dle.js} +1 -1
  32. streamlit/static/static/js/{index.DfNAkKAr.js → index.BUNYdCvS.js} +8 -8
  33. streamlit/static/static/js/{index.DWFLx6Tc.js → index.BV2qQuMO.js} +5 -5
  34. streamlit/static/static/js/{index.D1K6NCBQ.js → index.BX8IgiDA.js} +1 -1
  35. streamlit/static/static/js/{index.DYUhWSq6.js → index.BYdIAAme.js} +1 -1
  36. streamlit/static/static/js/{index.CoUzNoRf.js → index.BzXJd4o6.js} +1 -1
  37. streamlit/static/static/js/{index.aL_kqyvR.js → index.BzxT1LSG.js} +1 -1
  38. streamlit/static/static/js/{index.CmYiLKNX.js → index.CHfW08Eb.js} +1 -1
  39. streamlit/static/static/js/{index.BUdhIGhT.js → index.CWFsehBI.js} +1 -1
  40. streamlit/static/static/js/{index.LL2DLZZA.js → index.C_m4U-ik.js} +2 -2
  41. streamlit/static/static/js/{index.ORHz8Y8P.js → index.CgbCWpVz.js} +8 -8
  42. streamlit/static/static/js/{index.V3Vj2d9m.js → index.ChXmN16b.js} +1 -1
  43. streamlit/static/static/js/{index.YNWoT4uW.js → index.D-_iawK3.js} +1 -1
  44. streamlit/static/static/js/{index.C_C365T5.js → index.D7qPBPzh.js} +1 -1
  45. streamlit/static/static/js/{index.fP6rBxlc.js → index.D9Gtya_A.js} +1 -1
  46. streamlit/static/static/js/{index.DJvwxFLn.js → index.D9jWe5tN.js} +1 -1
  47. streamlit/static/static/js/{index.Db3jGJxa.js → index.DB-0Yu8-.js} +1 -1
  48. streamlit/static/static/js/{index.D2xM-XzG.js → index.DGu65w1V.js} +3 -3
  49. streamlit/static/static/js/index.DIHkG0HG.js +12 -0
  50. streamlit/static/static/js/{index.CBre8Aui.js → index.DIgKi8Bp.js} +1 -1
  51. streamlit/static/static/js/{index.BrAW6bFJ.js → index.DbiiV9to.js} +1 -1
  52. streamlit/static/static/js/{index.DgNQKEeQ.js → index.DgSb0EiE.js} +1 -1
  53. streamlit/static/static/js/{index.Ct7MPsA3.js → index.DkoFwjhv.js} +1 -1
  54. streamlit/static/static/js/{index.wxpL02VY.js → index.DwAnNzqz.js} +1 -1
  55. streamlit/static/static/js/{index.DIeegLbv.js → index.PrjikacM.js} +1 -1
  56. streamlit/static/static/js/{index.Dj91melR.js → index.QEh4WZkI.js} +1 -1
  57. streamlit/static/static/js/{index.CAHGh74D.js → index.iqovFu7V.js} +1 -1
  58. streamlit/static/static/js/{index.DkKZlAsv.js → index.mRpR0u1n.js} +1 -1
  59. streamlit/static/static/js/{index.BE6MTF-B.js → index.u-XgtJxJ.js} +3 -3
  60. streamlit/static/static/js/{index.DKuQg2D4.js → index.y-qJHV46.js} +1 -1
  61. streamlit/static/static/js/{input.D_dn5-2t.js → input.DqgaXn2o.js} +1 -1
  62. streamlit/static/static/js/{memory.pnMTtWQR.js → memory.DszNDPLb.js} +1 -1
  63. streamlit/static/static/js/{mergeWith.CRrYodeI.js → mergeWith.DFTSkXIf.js} +1 -1
  64. streamlit/static/static/js/{number-overlay-editor.C65GBS2P.js → number-overlay-editor.C8_ha9YJ.js} +1 -1
  65. streamlit/static/static/js/{possibleConstructorReturn.BnQk7lq_.js → possibleConstructorReturn.cS4Ei6et.js} +1 -1
  66. streamlit/static/static/js/{sandbox.CrxXt1li.js → sandbox.Bj-BfqPP.js} +1 -1
  67. streamlit/static/static/js/{textarea.DiFyO5JY.js → textarea.BrvMyGxB.js} +1 -1
  68. streamlit/static/static/js/{timepicker.B1Y7LIk4.js → timepicker.Ds8_GzH8.js} +2 -2
  69. streamlit/static/static/js/{toConsumableArray.BWpBUK-j.js → toConsumableArray.RfoD5uEy.js} +1 -1
  70. streamlit/static/static/js/{uniqueId.7ecIUkUs.js → uniqueId.R_vr2E5T.js} +1 -1
  71. streamlit/static/static/js/{useBasicWidgetState.deG0KPm0.js → useBasicWidgetState.Cglgg1W1.js} +1 -1
  72. streamlit/static/static/js/{useOnInputChange.CQ7sD7CO.js → useOnInputChange.CFTHBDsA.js} +1 -1
  73. streamlit/static/static/js/{withFullScreenWrapper.D0wnBu3k.js → withFullScreenWrapper.BcyXoen-.js} +1 -1
  74. streamlit/user_info.py +3 -0
  75. {streamlit_nightly-1.42.3.dev20250227.dist-info → streamlit_nightly-1.42.3.dev20250228.dist-info}/METADATA +1 -1
  76. {streamlit_nightly-1.42.3.dev20250227.dist-info → streamlit_nightly-1.42.3.dev20250228.dist-info}/RECORD +80 -80
  77. streamlit/static/static/js/index.Bb4OB39A.js +0 -12
  78. {streamlit_nightly-1.42.3.dev20250227.data → streamlit_nightly-1.42.3.dev20250228.data}/scripts/streamlit.cmd +0 -0
  79. {streamlit_nightly-1.42.3.dev20250227.dist-info → streamlit_nightly-1.42.3.dev20250228.dist-info}/WHEEL +0 -0
  80. {streamlit_nightly-1.42.3.dev20250227.dist-info → streamlit_nightly-1.42.3.dev20250228.dist-info}/entry_points.txt +0 -0
  81. {streamlit_nightly-1.42.3.dev20250227.dist-info → streamlit_nightly-1.42.3.dev20250228.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- import{r as reactExports,j as jsx}from"./index.DfNAkKAr.js";/*!
1
+ import{r as reactExports,j as jsx}from"./index.BUNYdCvS.js";/*!
2
2
  * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors
3
3
  * All rights reserved.
4
4
  *
@@ -54,7 +54,7 @@ ${p}`},e.to_fixed=function(p,T){return p.toFixed(T).replace(/(\.[0-9]*?)0+$/,"$1
54
54
  * http://jquery.org/license
55
55
  */function v(w){const g=getComputedStyle(w).fontSize;return g!=null?parseInt(g,10):null}C(),e.getDeltaY=function(w){let g=-w.deltaY;if(w.target instanceof HTMLElement)switch(w.deltaMode){case w.DOM_DELTA_LINE:g*=(p=w.target,(o=(c=v((T=p.offsetParent)!==null&&T!==void 0?T:document.body))!==null&&c!==void 0?c:v(p))!==null&&o!==void 0?o:16);break;case w.DOM_DELTA_PAGE:g*=function(r){return r.clientHeight}(w.target)}var p,T,c,o;return g}},function(Q,O,e,C,R){C(),R("Expression",Q(254).Expression),R("CustomJSExpr",Q(255).CustomJSExpr),R("Stack",Q(256).Stack),R("CumSum",Q(257).CumSum),R("ScalarExpression",Q(254).ScalarExpression),R("Minimum",Q(258).Minimum),R("Maximum",Q(259).Maximum);var v=Q(260);R("XComponent",v.XComponent),R("YComponent",v.YComponent),R("PolarTransform",Q(261).PolarTransform)},function(Q,O,e,C,R){C();const v=Q(53);class w extends v.Model{constructor(T){super(T)}initialize(){super.initialize(),this._result=new Map}v_compute(T){let c=this._result.get(T);return(c===void 0||T.changed_for(this))&&(c=this._v_compute(T),this._result.set(T,c)),c}}e.Expression=w,w.__name__="Expression";class g extends v.Model{constructor(T){super(T)}initialize(){super.initialize(),this._result=new Map}compute(T){let c=this._result.get(T);return(c===void 0||T.changed_for(this))&&(c=this._compute(T),this._result.set(T,c)),c}}e.ScalarExpression=g,g.__name__="ScalarExpression"},function(Q,O,e,C,R){var v;C();const w=Q(14),g=Q(254),p=Q(24),T=Q(9),c=Q(13),o=Q(34),r=Q(8);class i extends g.Expression{constructor(s){super(s)}connect_signals(){super.connect_signals();for(const s of(0,c.values)(this.args))s instanceof w.HasProps&&s.change.connect(()=>{this._result.clear(),this.change.emit()})}get names(){return(0,c.keys)(this.args)}get values(){return(0,c.values)(this.args)}get func(){const s=(0,o.use_strict)(this.code);return new p.GeneratorFunction(...this.names,s)}_v_compute(s){const a=this.func.apply(s,this.values);let u=a.next();if(u.done&&u.value!==void 0){const{value:l}=u;return(0,r.isArray)(l)||(0,r.isTypedArray)(l)?l:(0,r.isIterable)(l)?[...l]:(0,T.repeat)(l,s.length)}{const l=[];do l.push(u.value),u=a.next();while(!u.done);return l}}}e.CustomJSExpr=i,v=i,i.__name__="CustomJSExpr",v.define(({Unknown:t,String:s,Dict:a})=>({args:[a(t),{}],code:[s,""]}))},function(Q,O,e,C,R){var v;C();const w=Q(254);class g extends w.Expression{constructor(T){super(T)}_v_compute(T){var c;const o=(c=T.get_length())!==null&&c!==void 0?c:0,r=new Float64Array(o);for(const i of this.fields){const t=T.data[i];if(t!=null){const s=Math.min(o,t.length);for(let a=0;a<s;a++)r[a]+=t[a]}}return r}}e.Stack=g,v=g,g.__name__="Stack",v.define(({String:p,Array:T})=>({fields:[T(p),[]]}))},function(Q,O,e,C,R){var v;C();const w=Q(254);class g extends w.Expression{constructor(T){super(T)}_v_compute(T){var c;const o=new Float64Array((c=T.get_length())!==null&&c!==void 0?c:0),r=T.data[this.field],i=this.include_zero?1:0;o[0]=this.include_zero?0:r[0];for(let t=1;t<o.length;t++)o[t]=o[t-1]+r[t-i];return o}}e.CumSum=g,v=g,g.__name__="CumSum",v.define(({Boolean:p,String:T})=>({field:[T],include_zero:[p,!1]}))},function(Q,O,e,C,R){var v;C();const w=Q(254),g=Q(9);class p extends w.ScalarExpression{constructor(c){super(c)}_compute(c){var o,r;const i=(o=c.data[this.field])!==null&&o!==void 0?o:[];return Math.min((r=this.initial)!==null&&r!==void 0?r:1/0,(0,g.min)(i))}}e.Minimum=p,v=p,p.__name__="Minimum",v.define(({Number:T,String:c,Nullable:o})=>({field:[c],initial:[o(T),null]}))},function(Q,O,e,C,R){var v;C();const w=Q(254),g=Q(9);class p extends w.ScalarExpression{constructor(c){super(c)}_compute(c){var o,r;const i=(o=c.data[this.field])!==null&&o!==void 0?o:[];return Math.max((r=this.initial)!==null&&r!==void 0?r:-1/0,(0,g.max)(i))}}e.Maximum=p,v=p,p.__name__="Maximum",v.define(({Number:T,String:c,Nullable:o})=>({field:[c],initial:[o(T),null]}))},function(Q,O,e,C,R){var v;C();const w=Q(254);class g extends w.Expression{constructor(r){super(r)}get x(){return new T({transform:this})}get y(){return new c({transform:this})}}e.CoordinateTransform=g,g.__name__="CoordinateTransform";class p extends w.Expression{constructor(r){super(r)}}e.XYComponent=p,v=p,p.__name__="XYComponent",v.define(({Ref:o})=>({transform:[o(g)]}));class T extends p{constructor(r){super(r)}_v_compute(r){return this.transform.v_compute(r).x}}e.XComponent=T,T.__name__="XComponent";class c extends p{constructor(r){super(r)}_v_compute(r){return this.transform.v_compute(r).y}}e.YComponent=c,c.__name__="YComponent"},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(260),p=Q(20),T=(0,v.__importStar)(Q(18));class c extends g.CoordinateTransform{constructor(r){super(r)}_v_compute(r){const i=this.properties.radius.uniform(r),t=this.properties.angle.uniform(r),s=this.direction=="anticlock"?-1:1,a=Math.min(i.length,t.length),u=new Float64Array(a),l=new Float64Array(a);for(let d=0;d<a;d++){const m=i.get(d),f=t.get(d)*s;u[d]=m*Math.cos(f),l[d]=m*Math.sin(f)}return{x:u,y:l}}}e.PolarTransform=c,w=c,c.__name__="PolarTransform",w.define(({})=>({radius:[T.DistanceSpec,{field:"radius"}],angle:[T.AngleSpec,{field:"angle"}],direction:[p.Direction,"anticlock"]}))},function(Q,O,e,C,R){C(),R("BooleanFilter",Q(263).BooleanFilter),R("CustomJSFilter",Q(264).CustomJSFilter),R("Filter",Q(191).Filter),R("GroupFilter",Q(265).GroupFilter),R("IndexFilter",Q(266).IndexFilter)},function(Q,O,e,C,R){var v;C();const w=Q(191),g=Q(24);class p extends w.Filter{constructor(c){super(c)}compute_indices(c){const o=c.length,{booleans:r}=this;return r==null?g.Indices.all_set(o):g.Indices.from_booleans(o,r)}}e.BooleanFilter=p,v=p,p.__name__="BooleanFilter",v.define(({Boolean:T,Array:c,Nullable:o})=>({booleans:[o(c(T)),null]}))},function(Q,O,e,C,R){var v;C();const w=Q(191),g=Q(24),p=Q(13),T=Q(8),c=Q(34);class o extends w.Filter{constructor(i){super(i)}get names(){return(0,p.keys)(this.args)}get values(){return(0,p.values)(this.args)}get func(){const i=(0,c.use_strict)(this.code);return new Function(...this.names,"source",i)}compute_indices(i){const t=i.length,s=this.func(...this.values,i);if(s==null)return g.Indices.all_set(t);if((0,T.isArrayOf)(s,T.isInteger))return g.Indices.from_indices(t,s);if((0,T.isArrayOf)(s,T.isBoolean))return g.Indices.from_booleans(t,s);throw new Error(`expect an array of integers or booleans, or null, got ${s}`)}}e.CustomJSFilter=o,v=o,o.__name__="CustomJSFilter",v.define(({Unknown:r,String:i,Dict:t})=>({args:[t(r),{}],code:[i,""]}))},function(Q,O,e,C,R){var v;C();const w=Q(191),g=Q(24),p=Q(19);class T extends w.Filter{constructor(o){super(o)}compute_indices(o){const r=o.get_column(this.column_name);if(r==null)return p.logger.warn(`${this}: groupby column '${this.column_name}' not found in the data source`),new g.Indices(o.length,1);{const i=new g.Indices(o.length);for(let t=0;t<i.size;t++)r[t]===this.group&&i.set(t);return i}}}e.GroupFilter=T,v=T,T.__name__="GroupFilter",v.define(({String:c})=>({column_name:[c],group:[c]}))},function(Q,O,e,C,R){var v;C();const w=Q(191),g=Q(24);class p extends w.Filter{constructor(c){super(c)}compute_indices(c){const o=c.length,{indices:r}=this;return r==null?g.Indices.all_set(o):g.Indices.from_indices(o,r)}}e.IndexFilter=p,v=p,p.__name__="IndexFilter",v.define(({Int:T,Array:c,Nullable:o})=>({indices:[o(c(T)),null]}))},function(Q,O,e,C,R){C(),R("AnnularWedge",Q(268).AnnularWedge),R("Annulus",Q(269).Annulus),R("Arc",Q(270).Arc),R("Bezier",Q(271).Bezier),R("Circle",Q(272).Circle),R("Ellipse",Q(273).Ellipse),R("EllipseOval",Q(274).EllipseOval),R("Glyph",Q(179).Glyph),R("HArea",Q(187).HArea),R("HBar",Q(276).HBar),R("HexTile",Q(278).HexTile),R("Image",Q(279).Image),R("ImageRGBA",Q(281).ImageRGBA),R("ImageURL",Q(282).ImageURL),R("Line",Q(177).Line),R("MultiLine",Q(283).MultiLine),R("MultiPolygons",Q(284).MultiPolygons),R("Oval",Q(285).Oval),R("Patch",Q(186).Patch),R("Patches",Q(286).Patches),R("Quad",Q(287).Quad),R("Quadratic",Q(288).Quadratic),R("Ray",Q(289).Ray),R("Rect",Q(290).Rect),R("Scatter",Q(291).Scatter),R("Segment",Q(294).Segment),R("Spline",Q(295).Spline),R("Step",Q(297).Step),R("Text",Q(298).Text),R("VArea",Q(189).VArea),R("VBar",Q(299).VBar),R("Wedge",Q(300).Wedge)},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(184),T=Q(48),c=Q(24),o=Q(20),r=(0,v.__importStar)(Q(18)),i=Q(10),t=Q(72),s=Q(12);class a extends g.XYGlyphView{_map_data(){this.model.properties.inner_radius.units=="data"?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this.inner_radius):this.sinner_radius=(0,c.to_screen)(this.inner_radius),this.model.properties.outer_radius.units=="data"?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this.outer_radius):this.souter_radius=(0,c.to_screen)(this.outer_radius),this.max_souter_radius=(0,s.max)(this.souter_radius)}_render(d,m,f){const{sx:b,sy:y,start_angle:A,end_angle:L,sinner_radius:x,souter_radius:H}=f??this,S=this.model.direction=="anticlock";for(const k of m){const E=b[k],P=y[k],N=x[k],B=H[k],D=A.get(k),j=L.get(k);if(!isFinite(E+P+N+B+D+j))continue;const M=j-D;d.translate(E,P),d.rotate(D),d.beginPath(),d.moveTo(B,0),d.arc(0,0,B,0,M,S),d.rotate(M),d.lineTo(N,0),d.arc(0,0,N,0,-M,!S),d.closePath(),d.rotate(-M-D),d.translate(-E,-P),this.visuals.fill.apply(d,k),this.visuals.hatch.apply(d,k),this.visuals.line.apply(d,k)}}_hit_point(d){const{sx:m,sy:f}=d,b=this.renderer.xscale.invert(m),y=this.renderer.yscale.invert(f),A=m-this.max_souter_radius,L=m+this.max_souter_radius,[x,H]=this.renderer.xscale.r_invert(A,L),S=f-this.max_souter_radius,k=f+this.max_souter_radius,[E,P]=this.renderer.yscale.r_invert(S,k),N=[];for(const j of this.index.indices({x0:x,x1:H,y0:E,y1:P})){const M=this.souter_radius[j]**2,F=this.sinner_radius[j]**2,[W,U]=this.renderer.xscale.r_compute(b,this._x[j]),[q,X]=this.renderer.yscale.r_compute(y,this._y[j]),ae=(W-U)**2+(q-X)**2;ae<=M&&ae>=F&&N.push(j)}const B=this.model.direction=="anticlock",D=[];for(const j of N){const M=Math.atan2(f-this.sy[j],m-this.sx[j]);(0,i.angle_between)(-M,-this.start_angle.get(j),-this.end_angle.get(j),B)&&D.push(j)}return new t.Selection({indices:D})}draw_legend_for_index(d,m,f){(0,p.generic_area_vector_legend)(this.visuals,d,m,f)}scenterxy(d){const m=(this.sinner_radius[d]+this.souter_radius[d])/2,f=(this.start_angle.get(d)+this.end_angle.get(d))/2;return[this.sx[d]+m*Math.cos(f),this.sy[d]+m*Math.sin(f)]}}e.AnnularWedgeView=a,a.__name__="AnnularWedgeView";class u extends g.XYGlyph{constructor(d){super(d)}}e.AnnularWedge=u,w=u,u.__name__="AnnularWedge",w.prototype.default_view=a,w.mixins([T.LineVector,T.FillVector,T.HatchVector]),w.define(({})=>({direction:[o.Direction,"anticlock"],inner_radius:[r.DistanceSpec,{field:"inner_radius"}],outer_radius:[r.DistanceSpec,{field:"outer_radius"}],start_angle:[r.AngleSpec,{field:"start_angle"}],end_angle:[r.AngleSpec,{field:"end_angle"}]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(24),T=Q(48),c=(0,v.__importStar)(Q(18)),o=Q(27),r=Q(72);class i extends g.XYGlyphView{_map_data(){this.model.properties.inner_radius.units=="data"?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this.inner_radius):this.sinner_radius=(0,p.to_screen)(this.inner_radius),this.model.properties.outer_radius.units=="data"?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this.outer_radius):this.souter_radius=(0,p.to_screen)(this.outer_radius)}_render(a,u,l){const{sx:d,sy:m,sinner_radius:f,souter_radius:b}=l??this;for(const y of u){const A=d[y],L=m[y],x=f[y],H=b[y];if(isFinite(A+L+x+H)){if(a.beginPath(),o.is_ie)for(const S of[!1,!0])a.moveTo(A,L),a.arc(A,L,x,0,Math.PI,S),a.moveTo(A+H,L),a.arc(A,L,H,Math.PI,0,!S);else a.arc(A,L,x,0,2*Math.PI,!0),a.moveTo(A+H,L),a.arc(A,L,H,2*Math.PI,0,!1);this.visuals.fill.apply(a,y),this.visuals.hatch.apply(a,y),this.visuals.line.apply(a,y)}}}_hit_point(a){const{sx:u,sy:l}=a,d=this.renderer.xscale.invert(u),m=this.renderer.yscale.invert(l);let f,b,y,A;if(this.model.properties.outer_radius.units=="data")f=d-this.max_outer_radius,y=d+this.max_outer_radius,b=m-this.max_outer_radius,A=m+this.max_outer_radius;else{const x=u-this.max_outer_radius,H=u+this.max_outer_radius;[f,y]=this.renderer.xscale.r_invert(x,H);const S=l-this.max_outer_radius,k=l+this.max_outer_radius;[b,A]=this.renderer.yscale.r_invert(S,k)}const L=[];for(const x of this.index.indices({x0:f,x1:y,y0:b,y1:A})){const H=this.souter_radius[x]**2,S=this.sinner_radius[x]**2,[k,E]=this.renderer.xscale.r_compute(d,this._x[x]),[P,N]=this.renderer.yscale.r_compute(m,this._y[x]),B=(k-E)**2+(P-N)**2;B<=H&&B>=S&&L.push(x)}return new r.Selection({indices:L})}draw_legend_for_index(a,{x0:u,y0:l,x1:d,y1:m},f){const b=f+1,y=new Array(b);y[f]=(u+d)/2;const A=new Array(b);A[f]=(l+m)/2;const L=.5*Math.min(Math.abs(d-u),Math.abs(m-l)),x=new Array(b);x[f]=.4*L;const H=new Array(b);H[f]=.8*L,this._render(a,[f],{sx:y,sy:A,sinner_radius:x,souter_radius:H})}}e.AnnulusView=i,i.__name__="AnnulusView";class t extends g.XYGlyph{constructor(a){super(a)}}e.Annulus=t,w=t,t.__name__="Annulus",w.prototype.default_view=i,w.mixins([T.LineVector,T.FillVector,T.HatchVector]),w.define(({})=>({inner_radius:[c.DistanceSpec,{field:"inner_radius"}],outer_radius:[c.DistanceSpec,{field:"outer_radius"}]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(184),T=Q(48),c=Q(24),o=Q(20),r=(0,v.__importStar)(Q(18));class i extends g.XYGlyphView{_map_data(){this.model.properties.radius.units=="data"?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=(0,c.to_screen)(this.radius)}_render(a,u,l){if(this.visuals.line.doit){const{sx:d,sy:m,sradius:f,start_angle:b,end_angle:y}=l??this,A=this.model.direction=="anticlock";for(const L of u){const x=d[L],H=m[L],S=f[L],k=b.get(L),E=y.get(L);isFinite(x+H+S+k+E)&&(a.beginPath(),a.arc(x,H,S,k,E,A),this.visuals.line.set_vectorize(a,L),a.stroke())}}}draw_legend_for_index(a,u,l){(0,p.generic_line_vector_legend)(this.visuals,a,u,l)}}e.ArcView=i,i.__name__="ArcView";class t extends g.XYGlyph{constructor(a){super(a)}}e.Arc=t,w=t,t.__name__="Arc",w.prototype.default_view=i,w.mixins(T.LineVector),w.define(({})=>({direction:[o.Direction,"anticlock"],radius:[r.DistanceSpec,{field:"radius"}],start_angle:[r.AngleSpec,{field:"start_angle"}],end_angle:[r.AngleSpec,{field:"end_angle"}]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(48),p=Q(179),T=Q(184),c=Q(78),o=(0,v.__importStar)(Q(18));function r(s,a,u,l,d,m,f,b){const y=[],A=[[],[]];for(let H=0;H<=2;H++){let S,k,E;if(H===0?(k=6*s-12*u+6*d,S=-3*s+9*u-9*d+3*f,E=3*u-3*s):(k=6*a-12*l+6*m,S=-3*a+9*l-9*m+3*b,E=3*l-3*a),Math.abs(S)<1e-12){if(Math.abs(k)<1e-12)continue;const j=-E/k;0<j&&j<1&&y.push(j);continue}const P=k*k-4*E*S,N=Math.sqrt(P);if(P<0)continue;const B=(-k+N)/(2*S);0<B&&B<1&&y.push(B);const D=(-k-N)/(2*S);0<D&&D<1&&y.push(D)}let L=y.length;const x=L;for(;L--;){const H=y[L],S=1-H,k=S*S*S*s+3*S*S*H*u+3*S*H*H*d+H*H*H*f;A[0][L]=k;const E=S*S*S*a+3*S*S*H*l+3*S*H*H*m+H*H*H*b;A[1][L]=E}return A[0][x]=s,A[1][x]=a,A[0][x+1]=f,A[1][x+1]=b,[Math.min(...A[0]),Math.max(...A[1]),Math.max(...A[0]),Math.min(...A[1])]}class i extends p.GlyphView{_project_data(){c.inplace.project_xy(this._x0,this._y0),c.inplace.project_xy(this._x1,this._y1)}_index_data(a){const{data_size:u,_x0:l,_y0:d,_x1:m,_y1:f,_cx0:b,_cy0:y,_cx1:A,_cy1:L}=this;for(let x=0;x<u;x++){const H=l[x],S=d[x],k=m[x],E=f[x],P=b[x],N=y[x],B=A[x],D=L[x];if(isFinite(H+k+S+E+P+N+B+D)){const[j,M,F,W]=r(H,S,k,E,P,N,B,D);a.add_rect(j,M,F,W)}else a.add_empty()}}_render(a,u,l){if(this.visuals.line.doit){const{sx0:d,sy0:m,sx1:f,sy1:b,scx0:y,scy0:A,scx1:L,scy1:x}=l??this;for(const H of u){const S=d[H],k=m[H],E=f[H],P=b[H],N=y[H],B=A[H],D=L[H],j=x[H];isFinite(S+k+E+P+N+B+D+j)&&(a.beginPath(),a.moveTo(S,k),a.bezierCurveTo(N,B,D,j,E,P),this.visuals.line.set_vectorize(a,H),a.stroke())}}}draw_legend_for_index(a,u,l){(0,T.generic_line_vector_legend)(this.visuals,a,u,l)}scenterxy(){throw new Error(`${this}.scenterxy() is not implemented`)}}e.BezierView=i,i.__name__="BezierView";class t extends p.Glyph{constructor(a){super(a)}}e.Bezier=t,w=t,t.__name__="Bezier",w.prototype.default_view=i,w.define(({})=>({x0:[o.XCoordinateSpec,{field:"x0"}],y0:[o.YCoordinateSpec,{field:"y0"}],x1:[o.XCoordinateSpec,{field:"x1"}],y1:[o.YCoordinateSpec,{field:"y1"}],cx0:[o.XCoordinateSpec,{field:"cx0"}],cy0:[o.YCoordinateSpec,{field:"cy0"}],cx1:[o.XCoordinateSpec,{field:"cx1"}],cy1:[o.YCoordinateSpec,{field:"cy1"}]})),w.mixins(g.LineVector)},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(48),T=Q(24),c=Q(20),o=(0,v.__importStar)(Q(185)),r=(0,v.__importStar)(Q(18)),i=Q(9),t=Q(12),s=Q(72);class a extends g.XYGlyphView{async lazy_initialize(){await super.lazy_initialize();const{webgl:d}=this.renderer.plot_view.canvas_view;if(d!=null&&d.regl_wrapper.has_webgl){const{CircleGL:m}=await Promise.resolve().then(()=>(0,v.__importStar)(Q(423)));this.glglyph=new m(d.regl_wrapper,this)}}get use_radius(){return!(this.radius.is_Scalar()&&isNaN(this.radius.value))}_set_data(d){super._set_data(d);const m=(()=>{if(this.use_radius)return 2*this.max_radius;{const{size:f}=this;return f.is_Scalar()?f.value:(0,t.max)(f.array)}})();this._configure("max_size",{value:m})}_map_data(){if(this.use_radius)if(this.model.properties.radius.units=="data")switch(this.model.radius_dimension){case"x":this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius);break;case"y":this.sradius=this.sdist(this.renderer.yscale,this._y,this.radius);break;case"max":{const d=this.sdist(this.renderer.xscale,this._x,this.radius),m=this.sdist(this.renderer.yscale,this._y,this.radius);this.sradius=(0,t.map)(d,(f,b)=>Math.max(f,m[b]));break}case"min":{const d=this.sdist(this.renderer.xscale,this._x,this.radius),m=this.sdist(this.renderer.yscale,this._y,this.radius);this.sradius=(0,t.map)(d,(f,b)=>Math.min(f,m[b]));break}}else this.sradius=(0,T.to_screen)(this.radius);else{const d=T.ScreenArray.from(this.size);this.sradius=(0,t.map)(d,m=>m/2)}}_mask_data(){const{frame:d}=this.renderer.plot_view,m=d.x_target,f=d.y_target;let b,y;return this.use_radius&&this.model.properties.radius.units=="data"?(b=m.map(A=>this.renderer.xscale.invert(A)).widen(this.max_radius),y=f.map(A=>this.renderer.yscale.invert(A)).widen(this.max_radius)):(b=m.widen(this.max_size).map(A=>this.renderer.xscale.invert(A)),y=f.widen(this.max_size).map(A=>this.renderer.yscale.invert(A))),this.index.indices({x0:b.start,x1:b.end,y0:y.start,y1:y.end})}_render(d,m,f){const{sx:b,sy:y,sradius:A}=f??this;for(const L of m){const x=b[L],H=y[L],S=A[L];isFinite(x+H+S)&&(d.beginPath(),d.arc(x,H,S,0,2*Math.PI,!1),this.visuals.fill.apply(d,L),this.visuals.hatch.apply(d,L),this.visuals.line.apply(d,L))}}_hit_point(d){const{sx:m,sy:f}=d,b=this.renderer.xscale.invert(m),y=this.renderer.yscale.invert(f),{hit_dilation:A}=this.model;let L,x,H,S;if(this.use_radius&&this.model.properties.radius.units=="data")L=b-this.max_radius*A,x=b+this.max_radius*A,H=y-this.max_radius*A,S=y+this.max_radius*A;else{const P=m-this.max_size*A,N=m+this.max_size*A;[L,x]=this.renderer.xscale.r_invert(P,N);const B=f-this.max_size*A,D=f+this.max_size*A;[H,S]=this.renderer.yscale.r_invert(B,D)}const k=this.index.indices({x0:L,x1:x,y0:H,y1:S}),E=[];if(this.use_radius&&this.model.properties.radius.units=="data")for(const P of k){const N=(this.sradius[P]*A)**2,[B,D]=this.renderer.xscale.r_compute(b,this._x[P]),[j,M]=this.renderer.yscale.r_compute(y,this._y[P]);(B-D)**2+(j-M)**2<=N&&E.push(P)}else for(const P of k){const N=(this.sradius[P]*A)**2;(this.sx[P]-m)**2+(this.sy[P]-f)**2<=N&&E.push(P)}return new s.Selection({indices:E})}_hit_span(d){const{sx:m,sy:f}=d,b=this.bounds();let y,A,L,x;if(d.direction=="h"){let S,k;if(L=b.y0,x=b.y1,this.use_radius&&this.model.properties.radius.units=="data")S=m-this.max_radius,k=m+this.max_radius,[y,A]=this.renderer.xscale.r_invert(S,k);else{const E=this.max_size/2;S=m-E,k=m+E,[y,A]=this.renderer.xscale.r_invert(S,k)}}else{let S,k;if(y=b.x0,A=b.x1,this.use_radius&&this.model.properties.radius.units=="data")S=f-this.max_radius,k=f+this.max_radius,[L,x]=this.renderer.yscale.r_invert(S,k);else{const E=this.max_size/2;S=f-E,k=f+E,[L,x]=this.renderer.yscale.r_invert(S,k)}}const H=[...this.index.indices({x0:y,x1:A,y0:L,y1:x})];return new s.Selection({indices:H})}_hit_rect(d){const{sx0:m,sx1:f,sy0:b,sy1:y}=d,[A,L]=this.renderer.xscale.r_invert(m,f),[x,H]=this.renderer.yscale.r_invert(b,y),S=[...this.index.indices({x0:A,x1:L,y0:x,y1:H})];return new s.Selection({indices:S})}_hit_poly(d){const{sx:m,sy:f}=d,b=(0,i.range)(0,this.sx.length),y=[];for(let A=0,L=b.length;A<L;A++){const x=b[A];o.point_in_poly(this.sx[A],this.sy[A],m,f)&&y.push(x)}return new s.Selection({indices:y})}draw_legend_for_index(d,{x0:m,y0:f,x1:b,y1:y},A){const L=A+1,x=new Array(L);x[A]=(m+b)/2;const H=new Array(L);H[A]=(f+y)/2;const S=new Array(L);S[A]=.2*Math.min(Math.abs(b-m),Math.abs(y-f)),this._render(d,[A],{sx:x,sy:H,sradius:S})}}e.CircleView=a,a.__name__="CircleView";class u extends g.XYGlyph{constructor(d){super(d)}}e.Circle=u,w=u,u.__name__="Circle",w.prototype.default_view=a,w.mixins([p.LineVector,p.FillVector,p.HatchVector]),w.define(({Number:l})=>({angle:[r.AngleSpec,0],size:[r.ScreenSizeSpec,{value:4}],radius:[r.NullDistanceSpec,null],radius_dimension:[c.RadiusDimension,"x"],hit_dilation:[l,1]}))},function(V,Q,O,e,C){var R;e();const v=V(274);class w extends v.EllipseOvalView{}O.EllipseView=w,w.__name__="EllipseView";class g extends v.EllipseOval{constructor(T){super(T)}}O.Ellipse=g,R=g,g.__name__="Ellipse",R.prototype.default_view=w},function(Q,O,e,C,R){C();const v=Q(1),w=Q(275),g=(0,v.__importStar)(Q(185)),p=Q(24),T=Q(72),c=(0,v.__importStar)(Q(18));class o extends w.CenterRotatableView{_map_data(){this.model.properties.width.units=="data"?this.sw=this.sdist(this.renderer.xscale,this._x,this.width,"center"):this.sw=(0,p.to_screen)(this.width),this.model.properties.height.units=="data"?this.sh=this.sdist(this.renderer.yscale,this._y,this.height,"center"):this.sh=(0,p.to_screen)(this.height)}_render(t,s,a){const{sx:u,sy:l,sw:d,sh:m,angle:f}=a??this;for(const b of s){const y=u[b],A=l[b],L=d[b],x=m[b],H=f.get(b);isFinite(y+A+L+x+H)&&(t.beginPath(),t.ellipse(y,A,L/2,x/2,H,0,2*Math.PI),this.visuals.fill.apply(t,b),this.visuals.hatch.apply(t,b),this.visuals.line.apply(t,b))}}_hit_point(t){let s,a,u,l,d,m,f,b,y;const{sx:A,sy:L}=t,x=this.renderer.xscale.invert(A),H=this.renderer.yscale.invert(L);this.model.properties.width.units=="data"?(s=x-this.max_width,a=x+this.max_width):(m=A-this.max_width,f=A+this.max_width,[s,a]=this.renderer.xscale.r_invert(m,f)),this.model.properties.height.units=="data"?(u=H-this.max_height,l=H+this.max_height):(b=L-this.max_height,y=L+this.max_height,[u,l]=this.renderer.yscale.r_invert(b,y));const S=this.index.indices({x0:s,x1:a,y0:u,y1:l}),k=[];for(const E of S)d=g.point_in_ellipse(A,L,this.angle.get(E),this.sh[E]/2,this.sw[E]/2,this.sx[E],this.sy[E]),d&&k.push(E);return new T.Selection({indices:k})}draw_legend_for_index(t,{x0:s,y0:a,x1:u,y1:l},d){const m=d+1,f=new Array(m);f[d]=(s+u)/2;const b=new Array(m);b[d]=(a+l)/2;const y=this.sw[d]/this.sh[d],A=.8*Math.min(Math.abs(u-s),Math.abs(l-a)),L=new Array(m),x=new Array(m);y>1?(L[d]=A,x[d]=A/y):(L[d]=A*y,x[d]=A);const H=new c.UniformScalar(0,m);this._render(t,[d],{sx:f,sy:b,sw:L,sh:x,angle:H})}}e.EllipseOvalView=o,o.__name__="EllipseOvalView";class r extends w.CenterRotatable{constructor(t){super(t)}}e.EllipseOval=r,r.__name__="EllipseOval"},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(48),T=(0,v.__importStar)(Q(18));class c extends g.XYGlyphView{get max_w2(){return this.model.properties.width.units=="data"?this.max_width/2:0}get max_h2(){return this.model.properties.height.units=="data"?this.max_height/2:0}_bounds({x0:i,x1:t,y0:s,y1:a}){const{max_w2:u,max_h2:l}=this;return{x0:i-u,x1:t+u,y0:s-l,y1:a+l}}}e.CenterRotatableView=c,c.__name__="CenterRotatableView";class o extends g.XYGlyph{constructor(i){super(i)}}e.CenterRotatable=o,w=o,o.__name__="CenterRotatable",w.mixins([p.LineVector,p.FillVector,p.HatchVector]),w.define(({})=>({angle:[T.AngleSpec,0],width:[T.DistanceSpec,{field:"width"}],height:[T.DistanceSpec,{field:"height"}]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(277),p=Q(24),T=(0,v.__importStar)(Q(18));class c extends g.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:i}=this.renderer.plot_view.canvas_view;if(i!=null&&i.regl_wrapper.has_webgl){const{LRTBGL:t}=await Promise.resolve().then(()=>(0,v.__importStar)(Q(427)));this.glglyph=new t(i.regl_wrapper,this)}}scenterxy(i){return[(this.sleft[i]+this.sright[i])/2,this.sy[i]]}_lrtb(i){const t=this._left[i],s=this._right[i],a=this._y[i],u=this.height.get(i)/2;return[Math.min(t,s),Math.max(t,s),a+u,a-u]}_map_data(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this.height,"center"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);const i=this.sy.length;this.stop=new p.ScreenArray(i),this.sbottom=new p.ScreenArray(i);for(let t=0;t<i;t++)this.stop[t]=this.sy[t]-this.sh[t]/2,this.sbottom[t]=this.sy[t]+this.sh[t]/2;this._clamp_viewport()}}e.HBarView=c,c.__name__="HBarView";class o extends g.Box{constructor(i){super(i)}}e.HBar=o,w=o,o.__name__="HBar",w.prototype.default_view=c,w.define(({})=>({left:[T.XCoordinateSpec,{value:0}],y:[T.YCoordinateSpec,{field:"y"}],height:[T.NumberSpec,{value:1}],right:[T.XCoordinateSpec,{field:"right"}]}))},function(Q,O,e,C,R){var v;C();const w=Q(48),g=Q(179),p=Q(184),T=Q(72);class c extends g.GlyphView{get_anchor_point(i,t,s){const a=Math.min(this.sleft[t],this.sright[t]),u=Math.max(this.sright[t],this.sleft[t]),l=Math.min(this.stop[t],this.sbottom[t]),d=Math.max(this.sbottom[t],this.stop[t]);switch(i){case"top_left":return{x:a,y:l};case"top":case"top_center":return{x:(a+u)/2,y:l};case"top_right":return{x:u,y:l};case"bottom_left":return{x:a,y:d};case"bottom":case"bottom_center":return{x:(a+u)/2,y:d};case"bottom_right":return{x:u,y:d};case"left":case"center_left":return{x:a,y:(l+d)/2};case"center":case"center_center":return{x:(a+u)/2,y:(l+d)/2};case"right":case"center_right":return{x:u,y:(l+d)/2}}}_index_data(i){const{min:t,max:s}=Math,{data_size:a}=this;for(let u=0;u<a;u++){const[l,d,m,f]=this._lrtb(u);i.add_rect(t(l,d),t(m,f),s(d,l),s(m,f))}}_render(i,t,s){const{sleft:a,sright:u,stop:l,sbottom:d}=s??this;for(const m of t){const f=a[m],b=l[m],y=u[m],A=d[m];isFinite(f+b+y+A)&&(i.beginPath(),i.rect(f,b,y-f,A-b),this.visuals.fill.apply(i,m),this.visuals.hatch.apply(i,m),this.visuals.line.apply(i,m))}}_clamp_viewport(){const i=this.renderer.plot_view.frame.bbox.h_range,t=this.renderer.plot_view.frame.bbox.v_range,s=this.stop.length;for(let a=0;a<s;a++)this.stop[a]=Math.max(this.stop[a],t.start),this.sbottom[a]=Math.min(this.sbottom[a],t.end),this.sleft[a]=Math.max(this.sleft[a],i.start),this.sright[a]=Math.min(this.sright[a],i.end)}_hit_rect(i){return this._hit_rect_against_index(i)}_hit_point(i){const{sx:t,sy:s}=i,a=this.renderer.xscale.invert(t),u=this.renderer.yscale.invert(s),l=[...this.index.indices({x0:a,y0:u,x1:a,y1:u})];return new T.Selection({indices:l})}_hit_span(i){const{sx:t,sy:s}=i;let a;if(i.direction=="v"){const u=this.renderer.yscale.invert(s),l=this.renderer.plot_view.frame.bbox.h_range,[d,m]=this.renderer.xscale.r_invert(l.start,l.end);a=[...this.index.indices({x0:d,y0:u,x1:m,y1:u})]}else{const u=this.renderer.xscale.invert(t),l=this.renderer.plot_view.frame.bbox.v_range,[d,m]=this.renderer.yscale.r_invert(l.start,l.end);a=[...this.index.indices({x0:u,y0:d,x1:u,y1:m})]}return new T.Selection({indices:a})}draw_legend_for_index(i,t,s){(0,p.generic_area_vector_legend)(this.visuals,i,t,s)}}e.BoxView=c,c.__name__="BoxView";class o extends g.Glyph{constructor(i){super(i)}}e.Box=o,v=o,o.__name__="Box",v.mixins([w.LineVector,w.FillVector,w.HatchVector])},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(179),p=(0,v.__importStar)(Q(185)),T=(0,v.__importStar)(Q(18)),c=Q(48),o=Q(20),r=Q(78),i=Q(184),t=Q(72);class s extends g.GlyphView{async lazy_initialize(){await super.lazy_initialize();const{webgl:l}=this.renderer.plot_view.canvas_view;if(l!=null&&l.regl_wrapper.has_webgl){const{HexTileGL:d}=await Promise.resolve().then(()=>(0,v.__importStar)(Q(425)));this.glglyph=new d(l.regl_wrapper,this)}}scenterxy(l){return[this.sx[l],this.sy[l]]}_set_data(){const{orientation:l,size:d,aspect_scale:m}=this.model,{q:f,r:b}=this,y=this.q.length;this._x=new Float64Array(y),this._y=new Float64Array(y);const{_x:A,_y:L}=this,x=Math.sqrt(3);if(l=="pointytop")for(let H=0;H<y;H++){const S=f.get(H),k=b.get(H)/2;A[H]=d*x*(S+k)/m,L[H]=-3*d*k}else for(let H=0;H<y;H++){const S=f.get(H)/2,k=b.get(H);A[H]=3*d*S,L[H]=-d*x*(k+S)*m}}_project_data(){r.inplace.project_xy(this._x,this._y)}_index_data(l){let d=this.model.size,m=Math.sqrt(3)*d/2;this.model.orientation=="flattop"?([m,d]=[d,m],d*=this.model.aspect_scale):m/=this.model.aspect_scale;const{data_size:f}=this;for(let b=0;b<f;b++){const y=this._x[b],A=this._y[b];l.add_rect(y-m,A-d,y+m,A+d)}}map_data(){var l;[this.sx,this.sy]=this.renderer.coordinates.map_to_screen(this._x,this._y),[this.svx,this.svy]=this._get_unscaled_vertices(),(l=this.glglyph)===null||l===void 0||l.set_data_changed()}_get_unscaled_vertices(){const l=this.model.size,d=this.model.aspect_scale;if(this.model.orientation=="pointytop"){const m=this.renderer.yscale,f=this.renderer.xscale,b=Math.abs(m.compute(0)-m.compute(l)),y=Math.sqrt(3)/2*Math.abs(f.compute(0)-f.compute(l))/d,A=b/2;return[[0,-y,-y,0,y,y],[b,A,-A,-b,-A,A]]}{const m=this.renderer.xscale,f=this.renderer.yscale,b=Math.abs(m.compute(0)-m.compute(l)),y=Math.sqrt(3)/2*Math.abs(f.compute(0)-f.compute(l))*d,A=b/2;return[[b,A,-A,-b,-A,A],[0,-y,-y,0,y,y]]}}_render(l,d,m){const{sx:f,sy:b,svx:y,svy:A,scale:L}=m??this;for(const x of d){const H=f[x],S=b[x],k=L.get(x);if(isFinite(H+S+k)){l.translate(H,S),l.beginPath();for(let E=0;E<6;E++)l.lineTo(y[E]*k,A[E]*k);l.closePath(),l.translate(-H,-S),this.visuals.fill.apply(l,x),this.visuals.hatch.apply(l,x),this.visuals.line.apply(l,x)}}}_hit_point(l){const{sx:d,sy:m}=l,f=this.renderer.xscale.invert(d),b=this.renderer.yscale.invert(m),y=this.index.indices({x0:f,y0:b,x1:f,y1:b}),A=[];for(const L of y)p.point_in_poly(d-this.sx[L],m-this.sy[L],this.svx,this.svy)&&A.push(L);return new t.Selection({indices:A})}_hit_span(l){const{sx:d,sy:m}=l;let f;if(l.direction=="v"){const b=this.renderer.yscale.invert(m),y=this.renderer.plot_view.frame.bbox.h_range,[A,L]=this.renderer.xscale.r_invert(y.start,y.end);f=[...this.index.indices({x0:A,y0:b,x1:L,y1:b})]}else{const b=this.renderer.xscale.invert(d),y=this.renderer.plot_view.frame.bbox.v_range,[A,L]=this.renderer.yscale.r_invert(y.start,y.end);f=[...this.index.indices({x0:b,y0:A,x1:b,y1:L})]}return new t.Selection({indices:f})}_hit_rect(l){const{sx0:d,sx1:m,sy0:f,sy1:b}=l,[y,A]=this.renderer.xscale.r_invert(d,m),[L,x]=this.renderer.yscale.r_invert(f,b),H=[...this.index.indices({x0:y,x1:A,y0:L,y1:x})];return new t.Selection({indices:H})}draw_legend_for_index(l,d,m){(0,i.generic_area_vector_legend)(this.visuals,l,d,m)}}e.HexTileView=s,s.__name__="HexTileView";class a extends g.Glyph{constructor(l){super(l)}}e.HexTile=a,w=a,a.__name__="HexTile",w.prototype.default_view=s,w.mixins([c.LineVector,c.FillVector,c.HatchVector]),w.define(({Number:u})=>({r:[T.NumberSpec,{field:"r"}],q:[T.NumberSpec,{field:"q"}],scale:[T.NumberSpec,1],size:[u,1],aspect_scale:[u,1],orientation:[o.HexTileOrientation,"pointytop"]})),w.override({line_color:null})},function(V,Q,O,e,C){var R;e();const v=V(280),w=V(173),g=V(201);class p extends v.ImageBaseView{connect_signals(){super.connect_signals(),this.connect(this.model.color_mapper.change,()=>this._update_image())}_update_image(){this.image_data!=null&&(this._set_data(null),this.renderer.request_render())}_flat_img_to_buf8(o){return this.model.color_mapper.rgba_mapper.v_compute(o)}}O.ImageView=p,p.__name__="ImageView";class T extends v.ImageBase{constructor(o){super(o)}}O.Image=T,R=T,T.__name__="Image",R.prototype.default_view=p,R.define(({Ref:c})=>({color_mapper:[c(w.ColorMapper),()=>new g.LinearColorMapper({palette:["#000000","#252525","#525252","#737373","#969696","#bdbdbd","#d9d9d9","#f0f0f0","#ffffff"]})]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(24),T=(0,v.__importStar)(Q(18)),c=Q(72),o=Q(9),r=Q(29),i=Q(11);class t extends g.XYGlyphView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,()=>this.renderer.request_render())}_render(u,l,d){const{image_data:m,sx:f,sy:b,sw:y,sh:A,global_alpha:L}=d??this,x=u.getImageSmoothingEnabled();u.setImageSmoothingEnabled(!1);const H=L.is_Scalar();H&&(u.globalAlpha=L.value);for(const S of l){const k=m[S],E=f[S],P=b[S],N=y[S],B=A[S],D=this.global_alpha.get(S);if(k==null||!isFinite(E+P+N+B+D))continue;H||(u.globalAlpha=D);const j=P;u.translate(0,j),u.scale(1,-1),u.translate(0,-j),u.drawImage(k,0|E,0|P,N,B),u.translate(0,j),u.scale(1,-1),u.translate(0,-j)}u.setImageSmoothingEnabled(x)}_set_data(u){this._set_width_heigh_data();for(let l=0,d=this.image.length;l<d;l++){if(u!=null&&u.indexOf(l)<0)continue;const m=this.image.get(l);let f;(0,r.is_NDArray)(m)?((0,i.assert)(m.dimension==2,"expected a 2D array"),f=m,this._height[l]=m.shape[0],this._width[l]=m.shape[1]):(f=(0,o.concat)(m),this._height[l]=m.length,this._width[l]=m[0].length);const b=this._flat_img_to_buf8(f);this._set_image_data_from_buffer(l,b)}}_index_data(u){const{data_size:l}=this;for(let d=0;d<l;d++){const[m,f,b,y]=this._lrtb(d);u.add_rect(m,y,f,b)}}_lrtb(u){const l=this.dw.get(u),d=this.dh.get(u),m=this.renderer.xscale.source_range,f=this._x[u],b=m.is_reversed?f-l:f+l,y=this.renderer.yscale.source_range,A=this._y[u],L=y.is_reversed?A-d:A+d,[x,H]=f<b?[f,b]:[b,f],[S,k]=A<L?[A,L]:[L,A];return[x,H,k,S]}_set_width_heigh_data(){this.image_data!=null&&this.image_data.length==this.image.length||(this.image_data=new Array(this.image.length)),this._width!=null&&this._width.length==this.image.length||(this._width=new Uint32Array(this.image.length)),this._height!=null&&this._height.length==this.image.length||(this._height=new Uint32Array(this.image.length))}_get_or_create_canvas(u){const l=this.image_data[u];if(l!=null&&l.width==this._width[u]&&l.height==this._height[u])return l;{const d=document.createElement("canvas");return d.width=this._width[u],d.height=this._height[u],d}}_set_image_data_from_buffer(u,l){const d=this._get_or_create_canvas(u),m=d.getContext("2d"),f=m.getImageData(0,0,this._width[u],this._height[u]);f.data.set(l),m.putImageData(f,0,0),this.image_data[u]=d}_map_data(){this.model.properties.dw.units=="data"?this.sw=this.sdist(this.renderer.xscale,this._x,this.dw,"edge",this.model.dilate):this.sw=(0,p.to_screen)(this.dw),this.model.properties.dh.units=="data"?this.sh=this.sdist(this.renderer.yscale,this._y,this.dh,"edge",this.model.dilate):this.sh=(0,p.to_screen)(this.dh)}_image_index(u,l,d){const[m,f,b,y]=this._lrtb(u),A=this._width[u],L=this._height[u],x=(f-m)/A,H=(b-y)/L;let S=Math.floor((l-m)/x),k=Math.floor((d-y)/H);return this.renderer.xscale.source_range.is_reversed&&(S=A-S-1),this.renderer.yscale.source_range.is_reversed&&(k=L-k-1),{index:u,dim1:S,dim2:k,flat_index:k*A+S}}_hit_point(u){const{sx:l,sy:d}=u,m=this.renderer.xscale.invert(l),f=this.renderer.yscale.invert(d),b=this.index.indices({x0:m,x1:m,y0:f,y1:f}),y=new c.Selection;for(const A of b)l!=1/0&&d!=1/0&&y.image_indices.push(this._image_index(A,m,f));return y}}e.ImageBaseView=t,t.__name__="ImageBaseView";class s extends g.XYGlyph{constructor(u){super(u)}}e.ImageBase=s,w=s,s.__name__="ImageBase",w.define(({Boolean:a})=>({image:[T.NDArraySpec,{field:"image"}],dw:[T.DistanceSpec,{field:"dw"}],dh:[T.DistanceSpec,{field:"dh"}],global_alpha:[T.NumberSpec,{value:1}],dilate:[a,!1]}))},function(V,Q,O,e,C){var R;e();const v=V(280),w=V(8);class g extends v.ImageBaseView{_flat_img_to_buf8(c){let o;return o=(0,w.isArray)(c)?new Uint32Array(c):c,new Uint8ClampedArray(o.buffer)}}O.ImageRGBAView=g,g.__name__="ImageRGBAView";class p extends v.ImageBase{constructor(c){super(c)}}O.ImageRGBA=p,R=p,p.__name__="ImageRGBA",R.prototype.default_view=g},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(24),T=Q(20),c=(0,v.__importStar)(Q(18)),o=Q(12),r=Q(136);class i extends g.XYGlyphView{constructor(){super(...arguments),this._images_rendered=!1,this._set_data_iteration=0}connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,()=>this.renderer.request_render())}_index_data(a){const{data_size:u}=this;for(let l=0;l<u;l++)a.add_empty()}_set_data(){this._set_data_iteration++;const a=this.url.length;this.image=new Array(a);const{retry_attempts:u,retry_timeout:l}=this.model,{_set_data_iteration:d}=this;for(let N=0;N<a;N++){const B=this.url.get(N);B&&new r.ImageLoader(B,{loaded:D=>{this._set_data_iteration==d&&(this.image[N]=D,this.renderer.request_render())},attempts:u+1,timeout:l})}const m=this.model.properties.w.units=="data",f=this.model.properties.h.units=="data",b=this._x.length,y=new p.ScreenArray(m?2*b:b),A=new p.ScreenArray(f?2*b:b),{anchor:L}=this.model;function x(N,B){switch(L){case"top_left":case"bottom_left":case"left":case"center_left":return[N,N+B];case"top":case"top_center":case"bottom":case"bottom_center":case"center":case"center_center":return[N-B/2,N+B/2];case"top_right":case"bottom_right":case"right":case"center_right":return[N-B,N]}}function H(N,B){switch(L){case"top_left":case"top":case"top_center":case"top_right":return[N,N-B];case"bottom_left":case"bottom":case"bottom_center":case"bottom_right":return[N+B,N];case"left":case"center_left":case"center":case"center_center":case"right":case"center_right":return[N+B/2,N-B/2]}}if(m)for(let N=0;N<b;N++)[y[N],y[b+N]]=x(this._x[N],this.w.get(N));else y.set(this._x,0);if(f)for(let N=0;N<b;N++)[A[N],A[b+N]]=H(this._y[N],this.h.get(N));else A.set(this._y,0);const[S,k]=(0,o.minmax)(y),[E,P]=(0,o.minmax)(A);this._bounds_rect={x0:S,x1:k,y0:E,y1:P}}has_finished(){return super.has_finished()&&this._images_rendered==1}_map_data(){this.model.properties.w.units=="data"?this.sw=this.sdist(this.renderer.xscale,this._x,this.w,"edge",this.model.dilate):this.sw=(0,p.to_screen)(this.w),this.model.properties.h.units=="data"?this.sh=this.sdist(this.renderer.yscale,this._y,this.h,"edge",this.model.dilate):this.sh=(0,p.to_screen)(this.h)}_render(a,u,l){const{image:d,sx:m,sy:f,sw:b,sh:y,angle:A,global_alpha:L}=l??this,{frame:x}=this.renderer.plot_view;a.beginPath(),a.rect(x.bbox.left+1,x.bbox.top+1,x.bbox.width-2,x.bbox.height-2),a.clip();let H=!0;for(const S of u){if(!isFinite(m[S]+f[S]+A.get(S)+L.get(S)))continue;const k=d[S];k!=null?this._render_image(a,S,k,m,f,b,y,A,L):H=!1}H&&!this._images_rendered&&(this._images_rendered=!0,this.notify_finished())}_final_sx_sy(a,u,l,d,m){switch(a){case"top_left":return[u,l];case"top":case"top_center":return[u-d/2,l];case"top_right":return[u-d,l];case"right":case"center_right":return[u-d,l-m/2];case"bottom_right":return[u-d,l-m];case"bottom":case"bottom_center":return[u-d/2,l-m];case"bottom_left":return[u,l-m];case"left":case"center_left":return[u,l-m/2];case"center":case"center_center":return[u-d/2,l-m/2]}}_render_image(a,u,l,d,m,f,b,y,A){isFinite(f[u])||(f[u]=l.width),isFinite(b[u])||(b[u]=l.height);const L=f[u],x=b[u],{anchor:H}=this.model,[S,k]=this._final_sx_sy(H,d[u],m[u],L,x),E=y.get(u),P=A.get(u);a.save(),a.globalAlpha=P;const N=L/2,B=x/2;E?(a.translate(S,k),a.translate(N,B),a.rotate(E),a.translate(-N,-B),a.drawImage(l,0,0,L,x),a.translate(N,B),a.rotate(-E),a.translate(-N,-B),a.translate(-S,-k)):a.drawImage(l,S,k,L,x),a.restore()}bounds(){return this._bounds_rect}}e.ImageURLView=i,i.__name__="ImageURLView";class t extends g.XYGlyph{constructor(a){super(a)}}e.ImageURL=t,w=t,t.__name__="ImageURL",w.prototype.default_view=i,w.define(({Boolean:s,Int:a})=>({url:[c.StringSpec,{field:"url"}],anchor:[T.Anchor,"top_left"],global_alpha:[c.NumberSpec,{value:1}],angle:[c.AngleSpec,0],w:[c.NullDistanceSpec,null],h:[c.NullDistanceSpec,null],dilate:[s,!1],retry_attempts:[a,0],retry_timeout:[a,0]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(78),p=Q(48),T=(0,v.__importStar)(Q(185)),c=(0,v.__importStar)(Q(18)),o=Q(12),r=Q(13),i=Q(179),t=Q(184),s=Q(72);class a extends i.GlyphView{_project_data(){g.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(d){const{data_size:m}=this;for(let f=0;f<m;f++){const b=this._xs.get(f),y=this._ys.get(f),[A,L,x,H]=(0,o.minmax2)(b,y);d.add_rect(A,x,L,H)}}_render(d,m,f){const{sxs:b,sys:y}=f??this;for(const A of m){const L=b.get(A),x=y.get(A),H=Math.min(L.length,x.length);let S=!0;d.beginPath();for(let k=0;k<H;k++){const E=L[k],P=x[k];isFinite(E+P)?S?(d.moveTo(E,P),S=!1):d.lineTo(E,P):S=!0}this.visuals.line.set_vectorize(d,A),d.stroke()}}_hit_point(d){const m={x:d.sx,y:d.sy};let f=9999;const b=new Map;for(let y=0,A=this.sxs.length;y<A;y++){const L=Math.max(2,this.line_width.get(y)/2),x=this.sxs.get(y),H=this.sys.get(y);let S=null;for(let k=0,E=x.length-1;k<E;k++){const P={x:x[k],y:H[k]},N={x:x[k+1],y:H[k+1]},B=T.dist_to_segment(m,P,N);B<L&&B<f&&(f=B,S=[k])}S!=null&&b.set(y,S)}return new s.Selection({indices:[...b.keys()],multiline_indices:(0,r.to_object)(b)})}_hit_span(d){const{sx:m,sy:f}=d;let b,y;d.direction=="v"?(b=this.renderer.yscale.invert(f),y=this._ys):(b=this.renderer.xscale.invert(m),y=this._xs);const A=new Map;for(let L=0,x=y.length;L<x;L++){const H=y.get(L),S=[];for(let k=0,E=H.length-1;k<E;k++)H[k]<=b&&b<=H[k+1]&&S.push(k);S.length>0&&A.set(L,S)}return new s.Selection({indices:[...A.keys()],multiline_indices:(0,r.to_object)(A)})}get_interpolation_hit(d,m,f){const b=this._xs.get(d),y=this._ys.get(d),A=b[m],L=y[m],x=b[m+1],H=y[m+1];return(0,t.line_interpolation)(this.renderer,f,A,L,x,H)}draw_legend_for_index(d,m,f){(0,t.generic_line_vector_legend)(this.visuals,d,m,f)}scenterxy(){throw new Error(`${this}.scenterxy() is not implemented`)}}e.MultiLineView=a,a.__name__="MultiLineView";class u extends i.Glyph{constructor(d){super(d)}}e.MultiLine=u,w=u,u.__name__="MultiLine",w.prototype.default_view=a,w.define(({})=>({xs:[c.XCoordinateSeqSpec,{field:"xs"}],ys:[c.YCoordinateSeqSpec,{field:"ys"}]})),w.mixins(p.LineVector)},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(181),p=Q(179),T=Q(184),c=Q(12),o=Q(12),r=Q(48),i=(0,v.__importStar)(Q(185)),t=(0,v.__importStar)(Q(18)),s=Q(72),a=Q(11);class u extends p.GlyphView{_project_data(){}_index_data(m){const{min:f,max:b}=Math,{data_size:y}=this;for(let A=0;A<y;A++){const L=this._xs[A],x=this._ys[A];if(L.length==0||x.length==0){m.add_empty();continue}let H=1/0,S=-1/0,k=1/0,E=-1/0;for(let P=0,N=L.length;P<N;P++){const B=L[P][0],D=x[P][0];if(B.length!=0&&D.length!=0){const[j,M]=(0,c.minmax)(B),[F,W]=(0,c.minmax)(D);H=f(H,j),S=b(S,M),k=f(k,F),E=b(E,W)}}m.add_rect(H,k,S,E)}this._hole_index=this._index_hole_data()}_index_hole_data(){const{min:m,max:f}=Math,{data_size:b}=this,y=new g.SpatialIndex(b);for(let A=0;A<b;A++){const L=this._xs[A],x=this._ys[A];if(L.length==0||x.length==0){y.add_empty();continue}let H=1/0,S=-1/0,k=1/0,E=-1/0;for(let P=0,N=L.length;P<N;P++){const B=L[P],D=x[P];if(B.length>1&&D.length>1)for(let j=1,M=B.length;j<M;j++){const[F,W]=(0,c.minmax)(B[j]),[U,q]=(0,c.minmax)(D[j]);H=m(H,F),S=f(S,W),k=m(k,U),E=f(E,q)}}y.add_rect(H,k,S,E)}return y.finish(),y}_mask_data(){const{x_range:m,y_range:f}=this.renderer.plot_view.frame;return this.index.indices({x0:m.min,x1:m.max,y0:f.min,y1:f.max})}_render(m,f,b){if(this.visuals.fill.doit||this.visuals.line.doit){const{sxs:y,sys:A}=b??this;for(const L of f){m.beginPath();const x=y[L],H=A[L],S=Math.min(x.length,H.length);for(let k=0;k<S;k++){const E=x[k],P=H[k],N=Math.min(E.length,P.length);for(let B=0;B<N;B++){const D=E[B],j=P[B],M=Math.min(D.length,j.length);for(let F=0;F<M;F++){const W=D[F],U=j[F];F==0?m.moveTo(W,U):m.lineTo(W,U)}m.closePath()}}this.visuals.fill.apply(m,L,"evenodd"),this.visuals.hatch.apply(m,L,"evenodd"),this.visuals.line.apply(m,L)}}}_hit_rect(m){const{sx0:f,sx1:b,sy0:y,sy1:A}=m,L=[f,b,b,f],x=[y,y,A,A],[H,S]=this.renderer.xscale.r_invert(f,b),[k,E]=this.renderer.yscale.r_invert(y,A),P=this.index.indices({x0:H,x1:S,y0:k,y1:E}),N=[];for(const B of P){const D=this.sxs[B],j=this.sys[B];let M=!0;for(let F=0,W=D.length;F<W;F++){for(let U=0,q=D[F][0].length;U<q;U++){const X=D[F][0][U],ae=j[F][0][U];if(!i.point_in_poly(X,ae,L,x)){M=!1;break}}if(!M)break}M&&N.push(B)}return new s.Selection({indices:N})}_hit_point(m){const{sx:f,sy:b}=m,y=this.renderer.xscale.invert(f),A=this.renderer.yscale.invert(b),L=this.index.indices({x0:y,y0:A,x1:y,y1:A}),x=this._hole_index.indices({x0:y,y0:A,x1:y,y1:A}),H=[];for(const S of L){const k=this.sxs[S],E=this.sys[S];for(let P=0,N=k.length;P<N;P++){const B=k[P].length;if(i.point_in_poly(f,b,k[P][0],E[P][0]))if(B==1)H.push(S);else if(x.get(S)){if(B>1){let D=!1;for(let j=1;j<B;j++){const M=k[P][j],F=E[P][j];if(i.point_in_poly(f,b,M,F)){D=!0;break}}D||H.push(S)}}else H.push(S)}}return new s.Selection({indices:H})}_get_snap_coord(m){return(0,o.sum)(m)/m.length}scenterxy(m,f,b){if(this.sxs[m].length==1)return[this._get_snap_coord(this.sxs[m][0][0]),this._get_snap_coord(this.sys[m][0][0])];{const y=this.sxs[m],A=this.sys[m];for(let L=0,x=y.length;L<x;L++)if(i.point_in_poly(f,b,y[L][0],A[L][0]))return[this._get_snap_coord(y[L][0]),this._get_snap_coord(A[L][0])]}(0,a.unreachable)()}map_data(){const m=this._xs.length;this.sxs=new Array(m),this.sys=new Array(m);for(let f=0;f<m;f++){const b=this._xs[f].length;this.sxs[f]=new Array(b),this.sys[f]=new Array(b);for(let y=0;y<b;y++){const A=this._xs[f][y].length;this.sxs[f][y]=new Array(A),this.sys[f][y]=new Array(A);for(let L=0;L<A;L++){const[x,H]=this.renderer.coordinates.map_to_screen(this._xs[f][y][L],this._ys[f][y][L]);this.sxs[f][y][L]=x,this.sys[f][y][L]=H}}}}draw_legend_for_index(m,f,b){(0,T.generic_area_vector_legend)(this.visuals,m,f,b)}}e.MultiPolygonsView=u,u.__name__="MultiPolygonsView";class l extends p.Glyph{constructor(m){super(m)}}e.MultiPolygons=l,w=l,l.__name__="MultiPolygons",w.prototype.default_view=u,w.define(({})=>({xs:[t.XCoordinateSeqSeqSeqSpec,{field:"xs"}],ys:[t.YCoordinateSeqSeqSeqSpec,{field:"ys"}]})),w.mixins([r.LineVector,r.FillVector,r.HatchVector])},function(V,Q,O,e,C){var R;e();const v=V(274),w=V(12);class g extends v.EllipseOvalView{_map_data(){super._map_data(),(0,w.mul)(this.sw,.75)}}O.OvalView=g,g.__name__="OvalView";class p extends v.EllipseOval{constructor(c){super(c)}}O.Oval=p,R=p,p.__name__="Oval",R.prototype.default_view=g},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(179),p=Q(184),T=Q(12),c=Q(48),o=(0,v.__importStar)(Q(185)),r=(0,v.__importStar)(Q(18)),i=Q(72),t=Q(11),s=Q(78);class a extends g.GlyphView{_project_data(){s.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(d){const{data_size:m}=this;for(let f=0;f<m;f++){const b=this._xs.get(f),y=this._ys.get(f),[A,L,x,H]=(0,T.minmax2)(b,y);d.add_rect(A,x,L,H)}}_mask_data(){const{x_range:d,y_range:m}=this.renderer.plot_view.frame;return this.index.indices({x0:d.min,x1:d.max,y0:m.min,y1:m.max})}_render(d,m,f){const{sxs:b,sys:y}=f??this;for(const A of m){const L=b.get(A),x=y.get(A);let H=!0;d.beginPath();const S=Math.min(L.length,x.length);for(let k=0;k<S;k++){const E=L[k],P=x[k];isFinite(E+P)?H?(d.moveTo(E,P),H=!1):d.lineTo(E,P):(d.closePath(),H=!0)}d.closePath(),this.visuals.fill.apply(d,A),this.visuals.hatch.apply(d,A),this.visuals.line.apply(d,A)}}_hit_rect(d){const{sx0:m,sx1:f,sy0:b,sy1:y}=d,A=[m,f,f,m],L=[b,b,y,y],[x,H]=this.renderer.xscale.r_invert(m,f),[S,k]=this.renderer.yscale.r_invert(b,y),E=this.index.indices({x0:x,x1:H,y0:S,y1:k}),P=[];for(const N of E){const B=this.sxs.get(N),D=this.sys.get(N);let j=!0;for(let M=0,F=B.length;M<F;M++){const W=B[M],U=D[M];if(!o.point_in_poly(W,U,A,L)){j=!1;break}}j&&P.push(N)}return new i.Selection({indices:P})}_hit_point(d){const{sx:m,sy:f}=d,b=this.renderer.xscale.invert(m),y=this.renderer.yscale.invert(f),A=this.index.indices({x0:b,y0:y,x1:b,y1:y}),L=[];for(const x of A){const H=this.sxs.get(x),S=this.sys.get(x),k=H.length;for(let E=0,P=0;;P++){if(isNaN(H[P])||P==k){const N=H.subarray(E,P),B=S.subarray(E,P);if(o.point_in_poly(m,f,N,B)){L.push(x);break}E=P+1}if(P==k)break}}return new i.Selection({indices:L})}_get_snap_coord(d){return(0,T.sum)(d)/d.length}scenterxy(d,m,f){const b=this.sxs.get(d),y=this.sys.get(d),A=b.length;let L=!1;for(let x=0,H=0;;H++){const S=isNaN(b[H]);if(L=L||S,H==A&&!L)return[this._get_snap_coord(b),this._get_snap_coord(y)];if(S||H==A){const k=b.subarray(x,H),E=y.subarray(x,H);if(o.point_in_poly(m,f,k,E))return[this._get_snap_coord(k),this._get_snap_coord(E)];x=H+1}if(H==A)break}(0,t.unreachable)()}draw_legend_for_index(d,m,f){(0,p.generic_area_vector_legend)(this.visuals,d,m,f)}}e.PatchesView=a,a.__name__="PatchesView";class u extends g.Glyph{constructor(d){super(d)}}e.Patches=u,w=u,u.__name__="Patches",w.prototype.default_view=a,w.define(({})=>({xs:[r.XCoordinateSeqSpec,{field:"xs"}],ys:[r.YCoordinateSeqSpec,{field:"ys"}]})),w.mixins([c.LineVector,c.FillVector,c.HatchVector])},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(277),p=(0,v.__importStar)(Q(18));class T extends g.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:r}=this.renderer.plot_view.canvas_view;if(r!=null&&r.regl_wrapper.has_webgl){const{LRTBGL:i}=await Promise.resolve().then(()=>(0,v.__importStar)(Q(427)));this.glglyph=new i(r.regl_wrapper,this)}}scenterxy(r){return[this.sleft[r]/2+this.sright[r]/2,this.stop[r]/2+this.sbottom[r]/2]}_lrtb(r){return[this._left[r],this._right[r],this._top[r],this._bottom[r]]}}e.QuadView=T,T.__name__="QuadView";class c extends g.Box{constructor(r){super(r)}}e.Quad=c,w=c,c.__name__="Quad",w.prototype.default_view=T,w.define(({})=>({right:[p.XCoordinateSpec,{field:"right"}],bottom:[p.YCoordinateSpec,{field:"bottom"}],left:[p.XCoordinateSpec,{field:"left"}],top:[p.YCoordinateSpec,{field:"top"}]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(48),p=Q(78),T=Q(179),c=Q(184),o=(0,v.__importStar)(Q(18));function r(s,a,u){if(a==(s+u)/2)return[s,u];{const l=(s-a)/(s-2*a+u),d=s*(1-l)**2+2*a*(1-l)*l+u*l**2;return[Math.min(s,u,d),Math.max(s,u,d)]}}class i extends T.GlyphView{_project_data(){p.inplace.project_xy(this._x0,this._y0),p.inplace.project_xy(this._x1,this._y1)}_index_data(a){const{_x0:u,_x1:l,_y0:d,_y1:m,_cx:f,_cy:b,data_size:y}=this;for(let A=0;A<y;A++){const L=u[A],x=l[A],H=d[A],S=m[A],k=f[A],E=b[A];if(isFinite(L+x+H+S+k+E)){const[P,N]=r(L,k,x),[B,D]=r(H,E,S);a.add_rect(P,B,N,D)}else a.add_empty()}}_render(a,u,l){if(this.visuals.line.doit){const{sx0:d,sy0:m,sx1:f,sy1:b,scx:y,scy:A}=l??this;for(const L of u){const x=d[L],H=m[L],S=f[L],k=b[L],E=y[L],P=A[L];isFinite(x+H+S+k+E+P)&&(a.beginPath(),a.moveTo(x,H),a.quadraticCurveTo(E,P,S,k),this.visuals.line.set_vectorize(a,L),a.stroke())}}}draw_legend_for_index(a,u,l){(0,c.generic_line_vector_legend)(this.visuals,a,u,l)}scenterxy(){throw new Error(`${this}.scenterxy() is not implemented`)}}e.QuadraticView=i,i.__name__="QuadraticView";class t extends T.Glyph{constructor(a){super(a)}}e.Quadratic=t,w=t,t.__name__="Quadratic",w.prototype.default_view=i,w.define(({})=>({x0:[o.XCoordinateSpec,{field:"x0"}],y0:[o.YCoordinateSpec,{field:"y0"}],x1:[o.XCoordinateSpec,{field:"x1"}],y1:[o.YCoordinateSpec,{field:"y1"}],cx:[o.XCoordinateSpec,{field:"cx"}],cy:[o.YCoordinateSpec,{field:"cy"}]})),w.mixins(g.LineVector)},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(184),T=Q(48),c=Q(24),o=(0,v.__importStar)(Q(18));class r extends g.XYGlyphView{_map_data(){this.model.properties.length.units=="data"?this.slength=this.sdist(this.renderer.xscale,this._x,this.length):this.slength=(0,c.to_screen)(this.length);const{width:s,height:a}=this.renderer.plot_view.frame.bbox,u=2*(s+a),{slength:l}=this;for(let d=0,m=l.length;d<m;d++)l[d]==0&&(l[d]=u)}_render(s,a,u){const{sx:l,sy:d,slength:m,angle:f}=u??this;if(this.visuals.line.doit)for(const b of a){const y=l[b],A=d[b],L=f.get(b),x=m[b];isFinite(y+A+L+x)&&(s.translate(y,A),s.rotate(L),s.beginPath(),s.moveTo(0,0),s.lineTo(x,0),this.visuals.line.set_vectorize(s,b),s.stroke(),s.rotate(-L),s.translate(-y,-A))}}draw_legend_for_index(s,a,u){(0,p.generic_line_vector_legend)(this.visuals,s,a,u)}}e.RayView=r,r.__name__="RayView";class i extends g.XYGlyph{constructor(s){super(s)}}e.Ray=i,w=i,i.__name__="Ray",w.prototype.default_view=r,w.mixins(T.LineVector),w.define(({})=>({length:[o.DistanceSpec,0],angle:[o.AngleSpec,0]}))},function(Q,O,e,C,R){var v,w=this&&this.__createBinding||(Object.create?function(a,u,l,d){d===void 0&&(d=l),Object.defineProperty(a,d,{enumerable:!0,get:function(){return u[l]}})}:function(a,u,l,d){d===void 0&&(d=l),a[d]=u[l]}),g=this&&this.__setModuleDefault||(Object.create?function(a,u){Object.defineProperty(a,"default",{enumerable:!0,value:u})}:function(a,u){a.default=u}),p=this&&this.__importStar||function(a){if(a&&a.__esModule)return a;var u={};if(a!=null)for(var l in a)l!=="default"&&Object.prototype.hasOwnProperty.call(a,l)&&w(u,a,l);return g(u,a),u};C();const T=Q(275),c=Q(184),o=Q(24),r=Q(12),i=Q(72);class t extends T.CenterRotatableView{async lazy_initialize(){await super.lazy_initialize();const{webgl:u}=this.renderer.plot_view.canvas_view;if(u!=null&&u.regl_wrapper.has_webgl){const{RectGL:l}=await Promise.resolve().then(()=>p(Q(429)));this.glglyph=new l(u.regl_wrapper,this)}}_map_data(){if(this.model.properties.width.units=="data")[this.sw,this.sx0]=this._map_dist_corner_for_data_side_length(this._x,this.width,this.renderer.xscale);else{this.sw=(0,o.to_screen)(this.width);const l=this.sx.length;this.sx0=new o.ScreenArray(l);for(let d=0;d<l;d++)this.sx0[d]=this.sx[d]-this.sw[d]/2}if(this.model.properties.height.units=="data")[this.sh,this.sy1]=this._map_dist_corner_for_data_side_length(this._y,this.height,this.renderer.yscale);else{this.sh=(0,o.to_screen)(this.height);const l=this.sy.length;this.sy1=new o.ScreenArray(l);for(let d=0;d<l;d++)this.sy1[d]=this.sy[d]-this.sh[d]/2}const u=this.sw.length;this.ssemi_diag=new o.ScreenArray(u);for(let l=0;l<u;l++)this.ssemi_diag[l]=Math.sqrt(this.sw[l]/2*this.sw[l]/2+this.sh[l]/2*this.sh[l]/2)}_render(u,l,d){const{sx:m,sy:f,sx0:b,sy1:y,sw:A,sh:L,angle:x}=d??this;for(const H of l){const S=m[H],k=f[H],E=b[H],P=y[H],N=A[H],B=L[H],D=x.get(H);isFinite(S+k+E+P+N+B+D)&&N!=0&&B!=0&&(u.beginPath(),D?(u.translate(S,k),u.rotate(D),u.rect(-N/2,-B/2,N,B),u.rotate(-D),u.translate(-S,-k)):u.rect(E,P,N,B),this.visuals.fill.apply(u,H),this.visuals.hatch.apply(u,H),this.visuals.line.apply(u,H))}}_hit_rect(u){return this._hit_rect_against_index(u)}_hit_point(u){let{sx:l,sy:d}=u;const m=this.renderer.xscale.invert(l),f=this.renderer.yscale.invert(d),b=this.sx0.length,y=new o.ScreenArray(b);for(let D=0;D<b;D++)y[D]=this.sx0[D]+this.sw[D]/2;const A=new o.ScreenArray(b);for(let D=0;D<b;D++)A[D]=this.sy1[D]+this.sh[D]/2;const L=(0,r.max)(this._ddist(0,y,this.ssemi_diag)),x=(0,r.max)(this._ddist(1,A,this.ssemi_diag)),H=m-L,S=m+L,k=f-x,E=f+x;let P,N;const B=[];for(const D of this.index.indices({x0:H,x1:S,y0:k,y1:E})){const j=this.angle.get(D);if(j){const M=Math.sin(-j),F=Math.cos(-j),W=F*(l-this.sx[D])-M*(d-this.sy[D])+this.sx[D],U=M*(l-this.sx[D])+F*(d-this.sy[D])+this.sy[D];l=W,d=U,P=Math.abs(this.sx[D]-l)<=this.sw[D]/2,N=Math.abs(this.sy[D]-d)<=this.sh[D]/2}else{const M=l-this.sx0[D],F=d-this.sy1[D];P=0<=M&&M<=this.sw[D],N=0<=F&&F<=this.sh[D]}P&&N&&B.push(D)}return new i.Selection({indices:B})}_map_dist_corner_for_data_side_length(u,l,d){const m=u.length,f=new Float64Array(m),b=new Float64Array(m);for(let H=0;H<m;H++){const S=u[H],k=l.get(H)/2;f[H]=S-k,b[H]=S+k}const y=d.v_compute(f),A=d.v_compute(b),L=this.sdist(d,f,l,"edge",this.model.dilate);let x=y;for(let H=0;H<m;H++){const S=y[H],k=A[H];if(!isNaN(S+k)&&S!=k){x=S<k?y:A;break}}return[L,x]}_ddist(u,l,d){const m=(0,o.infer_type)(l,d),f=u==0?this.renderer.xscale:this.renderer.yscale,b=l,y=b.length,A=new m(y);for(let k=0;k<y;k++)A[k]=b[k]+d[k];const L=f.v_invert(b),x=f.v_invert(A),H=L.length,S=new m(H);for(let k=0;k<H;k++)S[k]=Math.abs(x[k]-L[k]);return S}draw_legend_for_index(u,l,d){(0,c.generic_area_vector_legend)(this.visuals,u,l,d)}}e.RectView=t,t.__name__="RectView";class s extends T.CenterRotatable{constructor(u){super(u)}}e.Rect=s,v=s,s.__name__="Rect",v.prototype.default_view=t,v.define(({Boolean:a})=>({dilate:[a,!1]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(292),p=Q(293),T=(0,v.__importStar)(Q(18));class c extends g.MarkerView{async lazy_initialize(){await super.lazy_initialize();const{webgl:i}=this.renderer.plot_view.canvas_view;if(i!=null&&i.regl_wrapper.has_webgl){const{MultiMarkerGL:t}=await Promise.resolve().then(()=>(0,v.__importStar)(Q(428)));this.glglyph=new t(i.regl_wrapper,this)}}_render(i,t,s){const{sx:a,sy:u,size:l,angle:d,marker:m}=s??this;for(const f of t){const b=a[f],y=u[f],A=l.get(f),L=d.get(f),x=m.get(f);if(!isFinite(b+y+A+L)||x==null)continue;const H=A/2;i.beginPath(),i.translate(b,y),L&&i.rotate(L),p.marker_funcs[x](i,f,H,this.visuals),L&&i.rotate(-L),i.translate(-b,-y)}}draw_legend_for_index(i,{x0:t,x1:s,y0:a,y1:u},l){const d=l+1,m=this.marker.get(l),f=Object.assign(Object.assign({},this._get_legend_args({x0:t,x1:s,y0:a,y1:u},l)),{marker:new T.UniformScalar(m,d)});this._render(i,[l],f)}}e.ScatterView=c,c.__name__="ScatterView";class o extends g.Marker{constructor(i){super(i)}}e.Scatter=o,w=o,o.__name__="Scatter",w.prototype.default_view=c,w.define(()=>({marker:[T.MarkerSpec,{value:"circle"}]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(48),T=(0,v.__importStar)(Q(185)),c=(0,v.__importStar)(Q(18)),o=Q(9),r=Q(72);class i extends g.XYGlyphView{_render(a,u,l){const{sx:d,sy:m,size:f,angle:b}=l??this;for(const y of u){const A=d[y],L=m[y],x=f.get(y),H=b.get(y);if(!isFinite(A+L+x+H))continue;const S=x/2;a.beginPath(),a.translate(A,L),H&&a.rotate(H),this._render_one(a,y,S,this.visuals),H&&a.rotate(-H),a.translate(-A,-L)}}_mask_data(){const{x_target:a,y_target:u}=this.renderer.plot_view.frame,l=a.widen(this.max_size).map(m=>this.renderer.xscale.invert(m)),d=u.widen(this.max_size).map(m=>this.renderer.yscale.invert(m));return this.index.indices({x0:l.start,x1:l.end,y0:d.start,y1:d.end})}_hit_point(a){const{sx:u,sy:l}=a,{max_size:d}=this,{hit_dilation:m}=this.model,f=u-d*m,b=u+d*m,[y,A]=this.renderer.xscale.r_invert(f,b),L=l-d*m,x=l+d*m,[H,S]=this.renderer.yscale.r_invert(L,x),k=this.index.indices({x0:y,x1:A,y0:H,y1:S}),E=[];for(const P of k){const N=this.size.get(P)/2*m;Math.abs(this.sx[P]-u)<=N&&Math.abs(this.sy[P]-l)<=N&&E.push(P)}return new r.Selection({indices:E})}_hit_span(a){const{sx:u,sy:l}=a,d=this.bounds(),m=this.max_size/2;let f,b,y,A;if(a.direction=="h"){y=d.y0,A=d.y1;const x=u-m,H=u+m;[f,b]=this.renderer.xscale.r_invert(x,H)}else{f=d.x0,b=d.x1;const x=l-m,H=l+m;[y,A]=this.renderer.yscale.r_invert(x,H)}const L=[...this.index.indices({x0:f,x1:b,y0:y,y1:A})];return new r.Selection({indices:L})}_hit_rect(a){const{sx0:u,sx1:l,sy0:d,sy1:m}=a,[f,b]=this.renderer.xscale.r_invert(u,l),[y,A]=this.renderer.yscale.r_invert(d,m),L=[...this.index.indices({x0:f,x1:b,y0:y,y1:A})];return new r.Selection({indices:L})}_hit_poly(a){const{sx:u,sy:l}=a,d=(0,o.range)(0,this.sx.length),m=[];for(let f=0,b=d.length;f<b;f++){const y=d[f];T.point_in_poly(this.sx[f],this.sy[f],u,l)&&m.push(y)}return new r.Selection({indices:m})}_get_legend_args({x0:a,x1:u,y0:l,y1:d},m){const f=m+1,b=new Array(f),y=new Array(f);b[m]=(a+u)/2,y[m]=(l+d)/2;const A=.4*Math.min(Math.abs(u-a),Math.abs(d-l));return{sx:b,sy:y,size:new c.UniformScalar(A,f),angle:new c.UniformScalar(0,f)}}draw_legend_for_index(a,{x0:u,x1:l,y0:d,y1:m},f){const b=this._get_legend_args({x0:u,x1:l,y0:d,y1:m},f);this._render(a,[f],b)}}e.MarkerView=i,i.__name__="MarkerView";class t extends g.XYGlyph{constructor(a){super(a)}}e.Marker=t,w=t,t.__name__="Marker",w.mixins([p.LineVector,p.FillVector,p.HatchVector]),w.define(({Number:s})=>({size:[c.ScreenSizeSpec,{value:4}],angle:[c.AngleSpec,0],hit_dilation:[s,1]}))},function(Q,O,e,C,R){C();const v=Math.sqrt(3),w=Math.sqrt(5),g=(w+1)/4,p=Math.sqrt((5-w)/8),T=(w-1)/4,c=Math.sqrt((5+w)/8);function o(y,A){y.rotate(Math.PI/4),i(y,A),y.rotate(-Math.PI/4)}function r(y,A){const L=A*v,x=L/3;y.moveTo(-L/2,-x),y.lineTo(0,0),y.lineTo(L/2,-x),y.lineTo(0,0),y.lineTo(0,A)}function i(y,A){y.moveTo(0,A),y.lineTo(0,-A),y.moveTo(-A,0),y.lineTo(A,0)}function t(y,A){y.moveTo(0,A),y.lineTo(A/1.5,0),y.lineTo(0,-A),y.lineTo(-A/1.5,0),y.closePath()}function s(y,A){const L=A*v,x=L/3;y.moveTo(-A,x),y.lineTo(A,x),y.lineTo(0,x-L),y.closePath()}function a(y,A,L,x){y.arc(0,0,L,0,2*Math.PI,!1),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.apply(y,A)}function u(y,A,L,x){t(y,L),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.apply(y,A)}function l(y,A,L,x){(function(H,S){H.beginPath(),H.arc(0,0,S/4,0,2*Math.PI,!1),H.closePath()})(y,L),x.line.set_vectorize(y,A),y.fillStyle=y.strokeStyle,y.fill()}function d(y,A,L,x){(function(H,S){const k=S/2,E=v*k;H.moveTo(S,0),H.lineTo(k,-E),H.lineTo(-k,-E),H.lineTo(-S,0),H.lineTo(-k,E),H.lineTo(k,E),H.closePath()})(y,L),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.apply(y,A)}function m(y,A,L,x){const H=2*L;y.rect(-L,-L,H,H),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.apply(y,A)}function f(y,A,L,x){(function(H,S){const k=Math.sqrt(5-2*w)*S;H.moveTo(0,-S),H.lineTo(k*T,k*c-S),H.lineTo(k*(1+T),k*c-S),H.lineTo(k*(1+T-g),k*(c+p)-S),H.lineTo(k*(1+2*T-g),k*(2*c+p)-S),H.lineTo(0,2*k*c-S),H.lineTo(-k*(1+2*T-g),k*(2*c+p)-S),H.lineTo(-k*(1+T-g),k*(c+p)-S),H.lineTo(-k*(1+T),k*c-S),H.lineTo(-k*T,k*c-S),H.closePath()})(y,L),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.apply(y,A)}function b(y,A,L,x){s(y,L),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.apply(y,A)}e.marker_funcs={asterisk:function(y,A,L,x){i(y,L),o(y,L),x.line.apply(y,A)},circle:a,circle_cross:function(y,A,L,x){y.arc(0,0,L,0,2*Math.PI,!1),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.doit&&(x.line.set_vectorize(y,A),i(y,L),y.stroke())},circle_dot:function(y,A,L,x){a(y,A,L,x),l(y,A,L,x)},circle_y:function(y,A,L,x){y.arc(0,0,L,0,2*Math.PI,!1),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.doit&&(x.line.set_vectorize(y,A),r(y,L),y.stroke())},circle_x:function(y,A,L,x){y.arc(0,0,L,0,2*Math.PI,!1),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.doit&&(x.line.set_vectorize(y,A),o(y,L),y.stroke())},cross:function(y,A,L,x){i(y,L),x.line.apply(y,A)},diamond:u,diamond_dot:function(y,A,L,x){u(y,A,L,x),l(y,A,L,x)},diamond_cross:function(y,A,L,x){t(y,L),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.doit&&(x.line.set_vectorize(y,A),y.moveTo(0,L),y.lineTo(0,-L),y.moveTo(-L/1.5,0),y.lineTo(L/1.5,0),y.stroke())},dot:l,hex:d,hex_dot:function(y,A,L,x){d(y,A,L,x),l(y,A,L,x)},inverted_triangle:function(y,A,L,x){y.rotate(Math.PI),s(y,L),y.rotate(-Math.PI),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.apply(y,A)},plus:function(y,A,L,x){const H=3*L/8,S=[H,H,L,L,H,H,-H,-H,-L,-L,-H,-H],k=[L,H,H,-H,-H,-L,-L,-H,-H,H,H,L];y.beginPath();for(let E=0;E<12;E++)y.lineTo(S[E],k[E]);y.closePath(),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.apply(y,A)},square:m,square_cross:function(y,A,L,x){const H=2*L;y.rect(-L,-L,H,H),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.doit&&(x.line.set_vectorize(y,A),i(y,L),y.stroke())},square_dot:function(y,A,L,x){m(y,A,L,x),l(y,A,L,x)},square_pin:function(y,A,L,x){const H=3*L/8;y.moveTo(-L,-L),y.quadraticCurveTo(0,-H,L,-L),y.quadraticCurveTo(H,0,L,L),y.quadraticCurveTo(0,H,-L,L),y.quadraticCurveTo(-H,0,-L,-L),y.closePath(),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.apply(y,A)},square_x:function(y,A,L,x){const H=2*L;y.rect(-L,-L,H,H),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.doit&&(x.line.set_vectorize(y,A),y.moveTo(-L,L),y.lineTo(L,-L),y.moveTo(-L,-L),y.lineTo(L,L),y.stroke())},star:f,star_dot:function(y,A,L,x){f(y,A,L,x),l(y,A,L,x)},triangle:b,triangle_dot:function(y,A,L,x){b(y,A,L,x),l(y,A,L,x)},triangle_pin:function(y,A,L,x){const H=L*v,S=H/3,k=3*S/8;y.moveTo(-L,S),y.quadraticCurveTo(0,k,L,S),y.quadraticCurveTo(v*k/2,k/2,0,S-H),y.quadraticCurveTo(-v*k/2,k/2,-L,S),y.closePath(),x.fill.apply(y,A),x.hatch.apply(y,A),x.line.apply(y,A)},dash:function(y,A,L,x){(function(H,S){H.moveTo(-S,0),H.lineTo(S,0)})(y,L),x.line.apply(y,A)},x:function(y,A,L,x){o(y,L),x.line.apply(y,A)},y:function(y,A,L,x){r(y,L),x.line.apply(y,A)}}},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=(0,v.__importStar)(Q(185)),p=(0,v.__importStar)(Q(18)),T=Q(48),c=Q(78),o=Q(179),r=Q(184),i=Q(72);class t extends o.GlyphView{_project_data(){c.inplace.project_xy(this._x0,this._y0),c.inplace.project_xy(this._x1,this._y1)}_index_data(u){const{min:l,max:d}=Math,{_x0:m,_x1:f,_y0:b,_y1:y,data_size:A}=this;for(let L=0;L<A;L++){const x=m[L],H=f[L],S=b[L],k=y[L];u.add_rect(l(x,H),l(S,k),d(x,H),d(S,k))}}_render(u,l,d){if(this.visuals.line.doit){const{sx0:m,sy0:f,sx1:b,sy1:y}=d??this;for(const A of l){const L=m[A],x=f[A],H=b[A],S=y[A];isFinite(L+x+H+S)&&(u.beginPath(),u.moveTo(L,x),u.lineTo(H,S),this.visuals.line.set_vectorize(u,A),u.stroke())}}}_hit_point(u){const{sx:l,sy:d}=u,m={x:l,y:d},[f,b]=this.renderer.xscale.r_invert(l-2,l+2),[y,A]=this.renderer.yscale.r_invert(d-2,d+2),L=this.index.indices({x0:f,y0:y,x1:b,y1:A}),x=[];for(const H of L){const S=Math.max(2,this.line_width.get(H)/2)**2,k={x:this.sx0[H],y:this.sy0[H]},E={x:this.sx1[H],y:this.sy1[H]};g.dist_to_segment_squared(m,k,E)<S&&x.push(H)}return new i.Selection({indices:x})}_hit_span(u){const[l,d]=this.renderer.plot_view.frame.bbox.ranges,{sx:m,sy:f}=u;let b,y,A;u.direction=="v"?(A=this.renderer.yscale.invert(f),[b,y]=[this._y0,this._y1]):(A=this.renderer.xscale.invert(m),[b,y]=[this._x0,this._x1]);const L=[],[x,H]=this.renderer.xscale.r_invert(l.start,l.end),[S,k]=this.renderer.yscale.r_invert(d.start,d.end),E=this.index.indices({x0:x,y0:S,x1:H,y1:k});for(const P of E){(b[P]<=A&&A<=y[P]||y[P]<=A&&A<=b[P])&&L.push(P);const N=1.5+this.line_width.get(P)/2;b[P]==y[P]&&(u.direction=="h"?Math.abs(this.sx0[P]-m)<=N&&L.push(P):Math.abs(this.sy0[P]-f)<=N&&L.push(P))}return new i.Selection({indices:L})}scenterxy(u){return[this.sx0[u]/2+this.sx1[u]/2,this.sy0[u]/2+this.sy1[u]/2]}draw_legend_for_index(u,l,d){(0,r.generic_line_vector_legend)(this.visuals,u,l,d)}}e.SegmentView=t,t.__name__="SegmentView";class s extends o.Glyph{constructor(u){super(u)}}e.Segment=s,w=s,s.__name__="Segment",w.prototype.default_view=t,w.define(({})=>({x0:[p.XCoordinateSpec,{field:"x0"}],y0:[p.YCoordinateSpec,{field:"y0"}],x1:[p.XCoordinateSpec,{field:"x1"}],y1:[p.YCoordinateSpec,{field:"y1"}]})),w.mixins(T.LineVector)},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=(0,v.__importStar)(Q(48)),T=Q(296);class c extends g.XYGlyphView{_set_data(){const{tension:i,closed:t}=this.model;[this._xt,this._yt]=(0,T.catmullrom_spline)(this._x,this._y,20,i,t)}_map_data(){const{x_scale:i,y_scale:t}=this.renderer.coordinates;this.sxt=i.v_compute(this._xt),this.syt=t.v_compute(this._yt)}_render(i,t,s){const{sxt:a,syt:u}=s??this;let l=!0;i.beginPath();const d=a.length;for(let m=0;m<d;m++){const f=a[m],b=u[m];isFinite(f+b)?l?(i.moveTo(f,b),l=!1):i.lineTo(f,b):l=!0}this.visuals.line.set_value(i),i.stroke()}}e.SplineView=c,c.__name__="SplineView";class o extends g.XYGlyph{constructor(i){super(i)}}e.Spline=o,w=o,o.__name__="Spline",w.prototype.default_view=c,w.mixins(p.LineScalar),w.define(({Boolean:r,Number:i})=>({tension:[i,.5],closed:[r,!1]}))},function(Q,O,e,C,R){C();const v=Q(24),w=Q(11);e.catmullrom_spline=function(g,p,T=10,c=.5,o=!1){(0,w.assert)(g.length==p.length);const r=g.length,i=o?r+1:r,t=(0,v.infer_type)(g,p),s=new t(i+2),a=new t(i+2);s.set(g,1),a.set(p,1),o?(s[0]=g[r-1],a[0]=p[r-1],s[i]=g[0],a[i]=p[0],s[i+1]=g[1],a[i+1]=p[1]):(s[0]=g[0],a[0]=p[0],s[i+1]=g[r-1],a[i+1]=p[r-1]);const u=new t(4*(T+1));for(let m=0,f=0;m<=T;m++){const b=m/T,y=b**2,A=b*y;u[f++]=2*A-3*y+1,u[f++]=-2*A+3*y,u[f++]=A-2*y+b,u[f++]=A-y}const l=new t((i-1)*(T+1)),d=new t((i-1)*(T+1));for(let m=1,f=0;m<i;m++){const b=(s[m+1]-s[m-1])*c,y=(a[m+1]-a[m-1])*c,A=(s[m+2]-s[m])*c,L=(a[m+2]-a[m])*c;for(let x=0;x<=4*T;f++){const H=u[x++],S=u[x++],k=u[x++],E=u[x++];l[f]=H*s[m]+S*s[m+1]+k*b+E*A,d[f]=H*a[m]+S*a[m+1]+k*y+E*L}}return[l,d]}},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(184),T=(0,v.__importStar)(Q(48)),c=Q(20),o=Q(11);class r extends g.XYGlyphView{_render(s,a,u){const{sx:l,sy:d}=u??this;let m=!1,f=null;this.visuals.line.set_value(s);const b=a.length;if(!(b<2)){s.beginPath(),s.moveTo(l[0],d[0]);for(const y of a){let A,L,x,H;switch(this.model.mode){case"before":[A,x]=[l[y-1],d[y]],[L,H]=[l[y],d[y]];break;case"after":[A,x]=[l[y],d[y-1]],[L,H]=[l[y],d[y]];break;case"center":{const S=(l[y-1]+l[y])/2;[A,x]=[S,d[y-1]],[L,H]=[S,d[y]];break}default:(0,o.unreachable)()}if(m){if(!isFinite(l[y]+d[y])){s.stroke(),s.beginPath(),m=!1,f=y;continue}f!=null&&y-f>1&&(s.stroke(),m=!1)}m?(s.lineTo(A,x),s.lineTo(L,H)):(s.beginPath(),s.moveTo(l[y],d[y]),m=!0),f=y}s.lineTo(l[b-1],d[b-1]),s.stroke()}}draw_legend_for_index(s,a,u){(0,p.generic_line_scalar_legend)(this.visuals,s,a)}}e.StepView=r,r.__name__="StepView";class i extends g.XYGlyph{constructor(s){super(s)}}e.Step=i,w=i,i.__name__="Step",w.prototype.default_view=r,w.mixins(T.LineScalar),w.define(()=>({mode:[c.StepMode,"before"]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(48),T=(0,v.__importStar)(Q(185)),c=(0,v.__importStar)(Q(18)),o=Q(121),r=Q(11),i=Q(72);class t extends g.XYGlyphView{_rotate_point(u,l,d,m,f){return[(u-d)*Math.cos(f)-(l-m)*Math.sin(f)+d,(u-d)*Math.sin(f)+(l-m)*Math.cos(f)+m]}_text_bounds(u,l,d,m){return[[u,u+d,u+d,u,u],[l,l,l-m,l-m,l]]}_render(u,l,d){const{sx:m,sy:f,x_offset:b,y_offset:y,angle:A,text:L}=d??this;this._sys=[],this._sxs=[];for(const x of l){const H=this._sxs[x]=[],S=this._sys[x]=[],k=m[x],E=f[x],P=b.get(x),N=y.get(x),B=A.get(x),D=L.get(x);if(isFinite(k+E+P+N+B)&&D!=null&&this.visuals.text.doit){const j=`${D}`;u.save(),u.translate(k+P,E+N),u.rotate(B),this.visuals.text.set_vectorize(u,x);const M=this.visuals.text.font_value(x),{height:F}=(0,o.font_metrics)(M),W=this.text_line_height.get(x)*F;if(j.indexOf(`
56
56
  `)==-1){u.fillText(j,0,0);const U=k+P,q=E+N,X=u.measureText(j).width,[ae,me]=this._text_bounds(U,q,X,W);H.push(ae),S.push(me)}else{const U=j.split(`
57
- `),q=W*U.length,X=this.text_baseline.get(x);let ae;switch(X){case"top":ae=0;break;case"middle":ae=-q/2+W/2;break;case"bottom":ae=-q+W;break;default:ae=0,console.warn(`'${X}' baseline not supported with multi line text`)}for(const me of U){u.fillText(me,0,ae);const Ve=k+P,Je=ae+E+N,rt=u.measureText(me).width,[yt,xt]=this._text_bounds(Ve,Je,rt,W);H.push(yt),S.push(xt),ae+=W}}u.restore()}}}_hit_point(u){const{sx:l,sy:d}=u,m=[];for(let f=0;f<this._sxs.length;f++){const b=this._sxs[f],y=this._sys[f],A=b.length;for(let L=0,x=A;L<x;L++){const[H,S]=this._rotate_point(l,d,b[A-1][0],y[A-1][0],-this.angle.get(f));T.point_in_poly(H,S,b[L],y[L])&&m.push(f)}}return new i.Selection({indices:m})}scenterxy(u){const l=this._sxs[u],d=this._sys[u];(0,r.assert)(l.length!=0&&d.length!=0);const m=l[0][0],f=d[0][0],b=(l[0][2]+m)/2,y=(d[0][2]+f)/2,[A,L]=this._rotate_point(b,y,m,f,this.angle.get(u));return[A,L]}}e.TextView=t,t.__name__="TextView";class s extends g.XYGlyph{constructor(u){super(u)}}e.Text=s,w=s,s.__name__="Text",w.prototype.default_view=t,w.mixins(p.TextVector),w.define(({})=>({text:[c.NullStringSpec,{field:"text"}],angle:[c.AngleSpec,0],x_offset:[c.NumberSpec,0],y_offset:[c.NumberSpec,0]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(277),p=Q(24),T=(0,v.__importStar)(Q(18));class c extends g.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:i}=this.renderer.plot_view.canvas_view;if(i!=null&&i.regl_wrapper.has_webgl){const{LRTBGL:t}=await Promise.resolve().then(()=>(0,v.__importStar)(Q(427)));this.glglyph=new t(i.regl_wrapper,this)}}scenterxy(i){return[this.sx[i],(this.stop[i]+this.sbottom[i])/2]}_lrtb(i){const t=this.width.get(i)/2,s=this._x[i],a=this._top[i],u=this._bottom[i];return[s-t,s+t,Math.max(a,u),Math.min(a,u)]}_map_data(){this.sx=this.renderer.xscale.v_compute(this._x),this.sw=this.sdist(this.renderer.xscale,this._x,this.width,"center"),this.stop=this.renderer.yscale.v_compute(this._top),this.sbottom=this.renderer.yscale.v_compute(this._bottom);const i=this.sx.length;this.sleft=new p.ScreenArray(i),this.sright=new p.ScreenArray(i);for(let t=0;t<i;t++)this.sleft[t]=this.sx[t]-this.sw[t]/2,this.sright[t]=this.sx[t]+this.sw[t]/2;this._clamp_viewport()}}e.VBarView=c,c.__name__="VBarView";class o extends g.Box{constructor(i){super(i)}}e.VBar=o,w=o,o.__name__="VBar",w.prototype.default_view=c,w.define(({})=>({x:[T.XCoordinateSpec,{field:"x"}],bottom:[T.YCoordinateSpec,{value:0}],width:[T.NumberSpec,{value:1}],top:[T.YCoordinateSpec,{field:"top"}]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(184),T=Q(48),c=Q(24),o=Q(20),r=(0,v.__importStar)(Q(18)),i=Q(10),t=Q(72),s=Q(12);class a extends g.XYGlyphView{_map_data(){this.model.properties.radius.units=="data"?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=(0,c.to_screen)(this.radius),this.max_sradius=(0,s.max)(this.sradius)}_render(d,m,f){const{sx:b,sy:y,sradius:A,start_angle:L,end_angle:x}=f??this,H=this.model.direction=="anticlock";for(const S of m){const k=b[S],E=y[S],P=A[S],N=L.get(S),B=x.get(S);isFinite(k+E+P+N+B)&&(d.beginPath(),d.arc(k,E,P,N,B,H),d.lineTo(k,E),d.closePath(),this.visuals.fill.apply(d,S),this.visuals.hatch.apply(d,S),this.visuals.line.apply(d,S))}}_hit_point(d){let m,f,b,y,A;const{sx:L,sy:x}=d,H=this.renderer.xscale.invert(L),S=this.renderer.yscale.invert(x);f=L-this.max_sradius,b=L+this.max_sradius;const[k,E]=this.renderer.xscale.r_invert(f,b);y=x-this.max_sradius,A=x+this.max_sradius;const[P,N]=this.renderer.yscale.r_invert(y,A),B=[];for(const M of this.index.indices({x0:k,x1:E,y0:P,y1:N})){const F=this.sradius[M]**2;[f,b]=this.renderer.xscale.r_compute(H,this._x[M]),[y,A]=this.renderer.yscale.r_compute(S,this._y[M]),m=(f-b)**2+(y-A)**2,m<=F&&B.push(M)}const D=this.model.direction=="anticlock",j=[];for(const M of B){const F=Math.atan2(x-this.sy[M],L-this.sx[M]);(0,i.angle_between)(-F,-this.start_angle.get(M),-this.end_angle.get(M),D)&&j.push(M)}return new t.Selection({indices:j})}draw_legend_for_index(d,m,f){(0,p.generic_area_vector_legend)(this.visuals,d,m,f)}scenterxy(d){const m=this.sradius[d]/2,f=(this.start_angle.get(d)+this.end_angle.get(d))/2;return[this.sx[d]+m*Math.cos(f),this.sy[d]+m*Math.sin(f)]}}e.WedgeView=a,a.__name__="WedgeView";class u extends g.XYGlyph{constructor(d){super(d)}}e.Wedge=u,w=u,u.__name__="Wedge",w.prototype.default_view=a,w.mixins([T.LineVector,T.FillVector,T.HatchVector]),w.define(({})=>({direction:[o.Direction,"anticlock"],radius:[r.DistanceSpec,{field:"radius"}],start_angle:[r.AngleSpec,{field:"start_angle"}],end_angle:[r.AngleSpec,{field:"end_angle"}]}))},function(V,Q,O,e,C){e();const R=V(1);(0,R.__exportStar)(V(302),O),(0,R.__exportStar)(V(303),O),(0,R.__exportStar)(V(304),O)},function(Q,O,e,C,R){C();const v=Q(53),w=Q(12),g=Q(9),p=Q(72);class T extends v.Model{constructor(s){super(s)}_hit_test(s,a,u){if(!a.model.visible)return null;const l=u.glyph.hit_test(s);return l==null?null:u.model.view.convert_selection_from_subset(l)}}e.GraphHitTestPolicy=T,T.__name__="GraphHitTestPolicy";class c extends T{constructor(s){super(s)}hit_test(s,a){return this._hit_test(s,a,a.edge_view)}do_selection(s,a,u,l){if(s==null)return!1;const d=a.edge_renderer.data_source.selected;return d.update(s,u,l),a.edge_renderer.data_source._select.emit(),!d.is_empty()}do_inspection(s,a,u,l,d){if(s==null)return!1;const{edge_renderer:m}=u.model,f=m.get_selection_manager().get_or_create_inspector(u.edge_view.model);return f.update(s,l,d),u.edge_view.model.data_source.setv({inspected:f},{silent:!0}),u.edge_view.model.data_source.inspect.emit([u.edge_view.model,{geometry:a}]),!f.is_empty()}}e.EdgesOnly=c,c.__name__="EdgesOnly";class o extends T{constructor(s){super(s)}hit_test(s,a){return this._hit_test(s,a,a.node_view)}do_selection(s,a,u,l){if(s==null)return!1;const d=a.node_renderer.data_source.selected;return d.update(s,u,l),a.node_renderer.data_source._select.emit(),!d.is_empty()}do_inspection(s,a,u,l,d){if(s==null)return!1;const{node_renderer:m}=u.model,f=m.get_selection_manager().get_or_create_inspector(u.node_view.model);return f.update(s,l,d),u.node_view.model.data_source.setv({inspected:f},{silent:!0}),u.node_view.model.data_source.inspect.emit([u.node_view.model,{geometry:a}]),!f.is_empty()}}e.NodesOnly=o,o.__name__="NodesOnly";class r extends T{constructor(s){super(s)}hit_test(s,a){return this._hit_test(s,a,a.node_view)}get_linked_edges(s,a,u){let l=[];u=="selection"?l=s.selected.indices.map(f=>s.data.index[f]):u=="inspection"&&(l=s.inspected.indices.map(f=>s.data.index[f]));const d=[];for(let f=0;f<a.data.start.length;f++)((0,g.contains)(l,a.data.start[f])||(0,g.contains)(l,a.data.end[f]))&&d.push(f);const m=new p.Selection;for(const f of d)m.multiline_indices[f]=[0];return m.indices=d,m}do_selection(s,a,u,l){if(s==null)return!1;const d=a.node_renderer.data_source.selected;d.update(s,u,l);const m=a.edge_renderer.data_source.selected,f=this.get_linked_edges(a.node_renderer.data_source,a.edge_renderer.data_source,"selection");return m.update(f,u,l),a.node_renderer.data_source._select.emit(),!d.is_empty()}do_inspection(s,a,u,l,d){if(s==null)return!1;const m=u.node_view.model.data_source.selection_manager.get_or_create_inspector(u.node_view.model);m.update(s,l,d),u.node_view.model.data_source.setv({inspected:m},{silent:!0});const f=u.edge_view.model.data_source.selection_manager.get_or_create_inspector(u.edge_view.model),b=this.get_linked_edges(u.node_view.model.data_source,u.edge_view.model.data_source,"inspection");return f.update(b,l,d),u.edge_view.model.data_source.setv({inspected:f},{silent:!0}),u.node_view.model.data_source.inspect.emit([u.node_view.model,{geometry:a}]),!m.is_empty()}}e.NodesAndLinkedEdges=r,r.__name__="NodesAndLinkedEdges";class i extends T{constructor(s){super(s)}hit_test(s,a){return this._hit_test(s,a,a.edge_view)}get_linked_nodes(s,a,u){let l=[];u=="selection"?l=a.selected.indices:u=="inspection"&&(l=a.inspected.indices);const d=[];for(const f of l)d.push(a.data.start[f]),d.push(a.data.end[f]);const m=(0,g.uniq)(d).map(f=>(0,w.indexOf)(s.data.index,f));return new p.Selection({indices:m})}do_selection(s,a,u,l){if(s==null)return!1;const d=a.edge_renderer.data_source.selected;d.update(s,u,l);const m=a.node_renderer.data_source.selected,f=this.get_linked_nodes(a.node_renderer.data_source,a.edge_renderer.data_source,"selection");return m.update(f,u,l),a.edge_renderer.data_source._select.emit(),!d.is_empty()}do_inspection(s,a,u,l,d){if(s==null)return!1;const m=u.edge_view.model.data_source.selection_manager.get_or_create_inspector(u.edge_view.model);m.update(s,l,d),u.edge_view.model.data_source.setv({inspected:m},{silent:!0});const f=u.node_view.model.data_source.selection_manager.get_or_create_inspector(u.node_view.model),b=this.get_linked_nodes(u.node_view.model.data_source,u.edge_view.model.data_source,"inspection");return f.update(b,l,d),u.node_view.model.data_source.setv({inspected:f},{silent:!0}),u.edge_view.model.data_source.inspect.emit([u.edge_view.model,{geometry:a}]),!m.is_empty()}}e.EdgesAndLinkedNodes=i,i.__name__="EdgesAndLinkedNodes"},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(260);class p extends w.Model{constructor(i){super(i)}get node_coordinates(){return new c({layout:this})}get edge_coordinates(){return new o({layout:this})}}e.LayoutProvider=p,p.__name__="LayoutProvider";class T extends g.CoordinateTransform{constructor(i){super(i)}}e.GraphCoordinates=T,v=T,T.__name__="GraphCoordinates",v.define(({Ref:r})=>({layout:[r(p)]}));class c extends T{constructor(i){super(i)}_v_compute(i){const[t,s]=this.layout.get_node_coordinates(i);return{x:t,y:s}}}e.NodeCoordinates=c,c.__name__="NodeCoordinates";class o extends T{constructor(i){super(i)}_v_compute(i){const[t,s]=this.layout.get_edge_coordinates(i);return{x:t,y:s}}}e.EdgeCoordinates=o,o.__name__="EdgeCoordinates"},function(Q,O,e,C,R){var v;C();const w=Q(303);class g extends w.LayoutProvider{constructor(T){super(T)}get_node_coordinates(T){var c;const o=(c=T.data.index)!==null&&c!==void 0?c:[],r=o.length,i=new Float64Array(r),t=new Float64Array(r);for(let s=0;s<r;s++){const a=this.graph_layout[o[s]],[u,l]=a??[NaN,NaN];i[s]=u,t[s]=l}return[i,t]}get_edge_coordinates(T){var c,o;const r=(c=T.data.start)!==null&&c!==void 0?c:[],i=(o=T.data.end)!==null&&o!==void 0?o:[],t=Math.min(r.length,i.length),s=[],a=[],u=T.data.xs!=null&&T.data.ys!=null;for(let l=0;l<t;l++){const d=this.graph_layout[r[l]]!=null&&this.graph_layout[i[l]]!=null;if(u&&d)s.push(T.data.xs[l]),a.push(T.data.ys[l]);else{let m,f;d?(m=this.graph_layout[r[l]],f=this.graph_layout[i[l]]):(m=[NaN,NaN],f=[NaN,NaN]),s.push([m[0],f[0]]),a.push([m[1],f[1]])}}return[s,a]}}e.StaticLayoutProvider=g,v=g,g.__name__="StaticLayoutProvider",v.define(({Number:p,Tuple:T,Dict:c})=>({graph_layout:[c(T(p,p)),{}]}))},function(Q,O,e,C,R){C(),R("Grid",Q(306).Grid)},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(127),p=Q(129),T=Q(130),c=(0,v.__importStar)(Q(48)),o=Q(8);class r extends p.GuideRendererView{_render(){const s=this.layer.ctx;s.save(),this._draw_regions(s),this._draw_minor_grids(s),this._draw_grids(s),s.restore()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.request_render())}_draw_regions(s){if(!this.visuals.band_fill.doit&&!this.visuals.band_hatch.doit)return;const[a,u]=this.grid_coords("major",!1);for(let l=0;l<a.length-1;l++){if(l%2!=1)continue;const[d,m]=this.coordinates.map_to_screen(a[l],u[l]),[f,b]=this.coordinates.map_to_screen(a[l+1],u[l+1]);s.beginPath(),s.rect(d[0],m[0],f[1]-d[0],b[1]-m[0]),this.visuals.band_fill.apply(s),this.visuals.band_hatch.apply(s)}}_draw_grids(s){if(!this.visuals.grid_line.doit)return;const[a,u]=this.grid_coords("major");this._draw_grid_helper(s,this.visuals.grid_line,a,u)}_draw_minor_grids(s){if(!this.visuals.minor_grid_line.doit)return;const[a,u]=this.grid_coords("minor");this._draw_grid_helper(s,this.visuals.minor_grid_line,a,u)}_draw_grid_helper(s,a,u,l){a.set_value(s),s.beginPath();for(let d=0;d<u.length;d++){const[m,f]=this.coordinates.map_to_screen(u[d],l[d]);s.moveTo(Math.round(m[0]),Math.round(f[0]));for(let b=1;b<m.length;b++)s.lineTo(Math.round(m[b]),Math.round(f[b]))}s.stroke()}ranges(){const s=this.model.dimension,a=(s+1)%2,{ranges:u}=this.coordinates;return[u[s],u[a]]}computed_bounds(){const[s]=this.ranges(),a=this.model.bounds,u=[s.min,s.max];let l,d;if((0,o.isArray)(a))l=Math.min(a[0],a[1]),d=Math.max(a[0],a[1]),l<u[0]&&(l=u[0]),d>u[1]&&(d=u[1]);else{[l,d]=u;for(const m of this.plot_view.axis_views)m.dimension==this.model.dimension&&m.model.x_range_name==this.model.x_range_name&&m.model.y_range_name==this.model.y_range_name&&([l,d]=m.computed_bounds)}return[l,d]}grid_coords(s,a=!0){const u=this.model.dimension,l=(u+1)%2,[d,m]=this.ranges();let[f,b]=this.computed_bounds();[f,b]=[Math.min(f,b),Math.max(f,b)];const y=[[],[]],A=this.model.get_ticker();if(A==null)return y;const L=A.get_ticks(f,b,d,m.min)[s],x=d.min,H=d.max,S=m.min,k=m.max;a||(L[0]!=x&&L.splice(0,0,x),L[L.length-1]!=H&&L.push(H));for(let E=0;E<L.length;E++){if((L[E]==x||L[E]==H)&&a)continue;const P=[],N=[],B=2;for(let D=0;D<B;D++){const j=S+(k-S)/(B-1)*D;P.push(L[E]),N.push(j)}y[u].push(P),y[l].push(N)}return y}}e.GridView=r,r.__name__="GridView";class i extends p.GuideRenderer{constructor(s){super(s)}get_ticker(){return this.ticker!=null?this.ticker:this.axis!=null?this.axis.ticker:null}}e.Grid=i,w=i,i.__name__="Grid",w.prototype.default_view=r,w.mixins([["grid_",c.Line],["minor_grid_",c.Line],["band_",c.Fill],["band_",c.Hatch]]),w.define(({Number:t,Auto:s,Enum:a,Ref:u,Tuple:l,Or:d,Nullable:m})=>({bounds:[d(l(t,t),s),"auto"],dimension:[a(0,1),0],axis:[m(u(g.Axis)),null],ticker:[m(u(T.Ticker)),null]})),w.override({level:"underlay",band_fill_color:null,band_fill_alpha:0,grid_line_color:"#e5e5e5",minor_grid_line_color:null})},function(Q,O,e,C,R){C(),R("Box",Q(308).Box),R("Column",Q(310).Column),R("GridBox",Q(311).GridBox),R("HTMLBox",Q(312).HTMLBox),R("LayoutDOM",Q(309).LayoutDOM),R("Panel",Q(313).Panel),R("Row",Q(314).Row),R("Spacer",Q(315).Spacer),R("Tabs",Q(316).Tabs),R("WidgetBox",Q(319).WidgetBox)},function(Q,O,e,C,R){var v;C();const w=Q(309);class g extends w.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.children.change,()=>this.rebuild())}get child_models(){return this.model.children}}e.BoxView=g,g.__name__="BoxView";class p extends w.LayoutDOM{constructor(c){super(c)}}e.Box=p,v=p,p.__name__="Box",v.define(({Number:T,Array:c,Ref:o})=>({children:[c(o(w.LayoutDOM)),[]],spacing:[T,0]}))},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(20),p=Q(43),T=Q(19),c=Q(8),o=Q(22),r=Q(121),i=Q(113),t=Q(226),s=Q(207),a=Q(44),u=Q(235);class l extends t.DOMView{constructor(){super(...arguments),this._offset_parent=null,this._viewport={}}get is_layout_root(){return this.is_root||!(this.parent instanceof l)}get base_font_size(){const f=getComputedStyle(this.el).fontSize,b=(0,r.parse_css_font_size)(f);if(b!=null){const{value:y,unit:A}=b;if(A=="px")return y}return null}initialize(){super.initialize(),this.el.style.position=this.is_layout_root?"relative":"absolute",this._child_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await this.build_child_views()}remove(){for(const f of this.child_views)f.remove();this._child_views.clear(),super.remove()}connect_signals(){super.connect_signals(),this.is_layout_root&&(this._on_resize=()=>this.resize_layout(),window.addEventListener("resize",this._on_resize),this._parent_observer=setInterval(()=>{const b=this.el.offsetParent;this._offset_parent!=b&&(this._offset_parent=b,b!=null&&(this.compute_viewport(),this.invalidate_layout()))},250));const f=this.model.properties;this.on_change([f.width,f.height,f.min_width,f.min_height,f.max_width,f.max_height,f.margin,f.width_policy,f.height_policy,f.sizing_mode,f.aspect_ratio,f.visible],()=>this.invalidate_layout()),this.on_change([f.background,f.css_classes],()=>this.invalidate_render())}disconnect_signals(){this._parent_observer!=null&&clearTimeout(this._parent_observer),this._on_resize!=null&&window.removeEventListener("resize",this._on_resize),super.disconnect_signals()}css_classes(){return super.css_classes().concat(this.model.css_classes)}get child_views(){return this.child_models.map(f=>this._child_views.get(f))}async build_child_views(){await(0,i.build_views)(this._child_views,this.child_models,{parent:this})}render(){super.render(),(0,p.empty)(this.el);const{background:f}=this.model;this.el.style.backgroundColor=f!=null?(0,o.color2css)(f):"",(0,p.classes)(this.el).clear().add(...this.css_classes());for(const b of this.child_views)this.el.appendChild(b.el),b.render()}update_layout(){for(const f of this.child_views)f.update_layout();this._update_layout()}update_position(){this.el.style.display=this.model.visible?"block":"none";const f=this.is_layout_root?this.layout.sizing.margin:void 0;(0,p.position)(this.el,this.layout.bbox,f);for(const b of this.child_views)b.update_position()}after_layout(){for(const f of this.child_views)f.after_layout();this._has_finished=!0}compute_viewport(){this._viewport=this._viewport_size()}renderTo(f){f.appendChild(this.el),this._offset_parent=this.el.offsetParent,this.compute_viewport(),this.build(),this.notify_finished()}build(){if(!this.is_layout_root)throw new Error(`${this.toString()} is not a root layout`);return this.render(),this.update_layout(),this.compute_layout(),this}async rebuild(){await this.build_child_views(),this.invalidate_render()}compute_layout(){const f=Date.now();this.layout.compute(this._viewport),this.update_position(),this.after_layout(),T.logger.debug(`layout computed in ${Date.now()-f} ms`)}resize_layout(){this.root.compute_viewport(),this.root.compute_layout()}invalidate_layout(){this.root.update_layout(),this.root.compute_layout()}invalidate_render(){this.render(),this.invalidate_layout()}has_finished(){if(!super.has_finished())return!1;for(const f of this.child_views)if(!f.has_finished())return!1;return!0}_width_policy(){return this.model.width!=null?"fixed":"fit"}_height_policy(){return this.model.height!=null?"fixed":"fit"}box_sizing(){let{width_policy:f,height_policy:b,aspect_ratio:y}=this.model;f=="auto"&&(f=this._width_policy()),b=="auto"&&(b=this._height_policy());const{sizing_mode:A}=this.model;if(A!=null)if(A=="fixed")f=b="fixed";else if(A=="stretch_both")f=b="max";else if(A=="stretch_width")f="max";else if(A=="stretch_height")b="max";else switch(y==null&&(y="auto"),A){case"scale_width":f="max",b="min";break;case"scale_height":f="min",b="max";break;case"scale_both":f="max",b="max"}const L={width_policy:f,height_policy:b},{min_width:x,min_height:H}=this.model;x!=null&&(L.min_width=x),H!=null&&(L.min_height=H);const{width:S,height:k}=this.model;S!=null&&(L.width=S),k!=null&&(L.height=k);const{max_width:E,max_height:P}=this.model;E!=null&&(L.max_width=E),P!=null&&(L.max_height=P),y=="auto"&&S!=null&&k!=null?L.aspect=S/k:(0,c.isNumber)(y)&&(L.aspect=y);const{margin:N}=this.model;if(N!=null)if((0,c.isNumber)(N))L.margin={top:N,right:N,bottom:N,left:N};else if(N.length==2){const[D,j]=N;L.margin={top:D,right:j,bottom:D,left:j}}else{const[D,j,M,F]=N;L.margin={top:D,right:j,bottom:M,left:F}}L.visible=this.model.visible;const{align:B}=this.model;return(0,c.isArray)(B)?[L.halign,L.valign]=B:L.halign=L.valign=B,L}_viewport_size(){return(0,p.undisplayed)(this.el,()=>{let f=this.el;for(;f=f.parentElement;){if(f.classList.contains(a.root))continue;if(f==document.body){const{margin:{left:E,right:P,top:N,bottom:B}}=(0,p.extents)(document.body);return{width:Math.ceil(document.documentElement.clientWidth-E-P),height:Math.ceil(document.documentElement.clientHeight-N-B)}}const{padding:{left:b,right:y,top:A,bottom:L}}=(0,p.extents)(f),{width:x,height:H}=f.getBoundingClientRect(),S=Math.ceil(x-b-y),k=Math.ceil(H-A-L);if(S>0||k>0)return{width:S>0?S:void 0,height:k>0?k:void 0}}return{}})}export(f,b=!0){const y=f=="png"?"canvas":"svg",A=new u.CanvasLayer(y,b),{width:L,height:x}=this.layout.bbox;A.resize(L,x);for(const H of this.child_views){const S=H.export(f,b),{x:k,y:E}=H.layout.bbox;A.ctx.drawImage(S.canvas,k,E)}return A}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box,children:this.child_views.map(f=>f.serializable_state())})}}e.LayoutDOMView=l,l.__name__="LayoutDOMView";class d extends w.Model{constructor(f){super(f)}}e.LayoutDOM=d,v=d,d.__name__="LayoutDOM",v.define(m=>{const{Boolean:f,Number:b,String:y,Auto:A,Color:L,Array:x,Tuple:H,Or:S,Null:k,Nullable:E}=m,P=H(b,b),N=H(b,b,b,b);return{width:[E(b),null],height:[E(b),null],min_width:[E(b),null],min_height:[E(b),null],max_width:[E(b),null],max_height:[E(b),null],margin:[E(S(b,P,N)),[0,0,0,0]],width_policy:[S(s.SizingPolicy,A),"auto"],height_policy:[S(s.SizingPolicy,A),"auto"],aspect_ratio:[S(b,A,k),null],sizing_mode:[E(g.SizingMode),null],visible:[f,!0],disabled:[f,!1],align:[S(g.Align,H(g.Align,g.Align)),"start"],background:[E(L),null],css_classes:[x(y),[]]}})},function(Q,O,e,C,R){var v;C();const w=Q(308),g=Q(209);class p extends w.BoxView{_update_layout(){const o=this.child_views.map(r=>r.layout);this.layout=new g.Column(o),this.layout.rows=this.model.rows,this.layout.spacing=[this.model.spacing,0],this.layout.set_sizing(this.box_sizing())}}e.ColumnView=p,p.__name__="ColumnView";class T extends w.Box{constructor(o){super(o)}}e.Column=T,v=T,T.__name__="Column",v.prototype.default_view=p,v.define(({Any:c})=>({rows:[c,"auto"]}))},function(Q,O,e,C,R){var v;C();const w=Q(309),g=Q(209);class p extends w.LayoutDOMView{connect_signals(){super.connect_signals();const{children:o,rows:r,cols:i,spacing:t}=this.model.properties;this.on_change([o,r,i,t],()=>this.rebuild())}get child_models(){return this.model.children.map(([o])=>o)}_update_layout(){this.layout=new g.Grid,this.layout.rows=this.model.rows,this.layout.cols=this.model.cols,this.layout.spacing=this.model.spacing;for(const[o,r,i,t,s]of this.model.children){const a=this._child_views.get(o);this.layout.items.push({layout:a.layout,row:r,col:i,row_span:t,col_span:s})}this.layout.set_sizing(this.box_sizing())}}e.GridBoxView=p,p.__name__="GridBoxView";class T extends w.LayoutDOM{constructor(o){super(o)}}e.GridBox=T,v=T,T.__name__="GridBox",v.prototype.default_view=p,v.define(({Any:c,Int:o,Number:r,Tuple:i,Array:t,Ref:s,Or:a,Opt:u})=>({children:[t(i(s(w.LayoutDOM),o,o,u(o),u(o))),[]],rows:[c,"auto"],cols:[c,"auto"],spacing:[a(r,i(r,r)),0]}))},function(Q,O,e,C,R){C();const v=Q(309),w=Q(207);class g extends v.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new w.ContentBox(this.el),this.layout.set_sizing(this.box_sizing())}}e.HTMLBoxView=g,g.__name__="HTMLBoxView";class p extends v.LayoutDOM{constructor(c){super(c)}}e.HTMLBox=p,p.__name__="HTMLBox"},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(309);class p extends w.Model{constructor(c){super(c)}}e.Panel=p,v=p,p.__name__="Panel",v.define(({Boolean:T,String:c,Ref:o})=>({title:[c,""],child:[o(g.LayoutDOM)],closable:[T,!1],disabled:[T,!1]}))},function(Q,O,e,C,R){var v;C();const w=Q(308),g=Q(209);class p extends w.BoxView{_update_layout(){const o=this.child_views.map(r=>r.layout);this.layout=new g.Row(o),this.layout.cols=this.model.cols,this.layout.spacing=[0,this.model.spacing],this.layout.set_sizing(this.box_sizing())}}e.RowView=p,p.__name__="RowView";class T extends w.Box{constructor(o){super(o)}}e.Row=T,v=T,T.__name__="Row",v.prototype.default_view=p,v.define(({Any:c})=>({cols:[c,"auto"]}))},function(V,Q,O,e,C){var R;e();const v=V(309),w=V(207);class g extends v.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new w.LayoutItem,this.layout.set_sizing(this.box_sizing())}}O.SpacerView=g,g.__name__="SpacerView";class p extends v.LayoutDOM{constructor(c){super(c)}}O.Spacer=p,R=p,p.__name__="Spacer",R.prototype.default_view=g},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(207),p=Q(43),T=Q(9),c=Q(10),o=Q(20),r=Q(309),i=Q(313),t=(0,v.__importStar)(Q(317)),s=t,a=(0,v.__importStar)(Q(318)),u=a,l=(0,v.__importStar)(Q(229)),d=l;class m extends r.LayoutDOMView{constructor(){super(...arguments),this._scroll_index=0}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tabs.change,()=>this.rebuild()),this.connect(this.model.properties.active.change,()=>this.on_active_change())}styles(){return[...super.styles(),a.default,l.default,t.default]}get child_models(){return this.model.tabs.map(y=>y.child)}_update_layout(){const y=this.model.tabs_location,A=y=="above"||y=="below",{scroll_el:L,headers_el:x}=this;this.header=new class extends g.ContentBox{_measure(P){const N=(0,p.size)(L),B=(0,p.children)(x).slice(0,3).map(M=>(0,p.size)(M)),{width:D,height:j}=super._measure(P);if(A){const M=N.width+(0,T.sum)(B.map(F=>F.width));return{width:P.width!=1/0?P.width:M,height:j}}{const M=N.height+(0,T.sum)(B.map(F=>F.height));return{width:D,height:P.height!=1/0?P.height:M}}}}(this.header_el),A?this.header.set_sizing({width_policy:"fit",height_policy:"fixed"}):this.header.set_sizing({width_policy:"fixed",height_policy:"fit"});let H=1,S=1;switch(y){case"above":H-=1;break;case"below":H+=1;break;case"left":S-=1;break;case"right":S+=1}const k={layout:this.header,row:H,col:S},E=this.child_views.map(P=>({layout:P.layout,row:1,col:1}));this.layout=new g.Grid([k,...E]),this.layout.set_sizing(this.box_sizing())}update_position(){super.update_position(),this.header_el.style.position="absolute",(0,p.position)(this.header_el,this.header.bbox);const y=this.model.tabs_location,A=y=="above"||y=="below",L=(0,p.size)(this.scroll_el),x=(0,p.scroll_size)(this.headers_el);if(A){const{width:k}=this.header.bbox;x.width>k?(this.wrapper_el.style.maxWidth=k-L.width+"px",(0,p.display)(this.scroll_el),this.do_scroll(this.model.active)):(this.wrapper_el.style.maxWidth="",(0,p.undisplay)(this.scroll_el))}else{const{height:k}=this.header.bbox;x.height>k?(this.wrapper_el.style.maxHeight=k-L.height+"px",(0,p.display)(this.scroll_el),this.do_scroll(this.model.active)):(this.wrapper_el.style.maxHeight="",(0,p.undisplay)(this.scroll_el))}const{child_views:H}=this;for(const k of H)(0,p.hide)(k.el);const S=H[this.model.active];S!=null&&(0,p.show)(S.el)}render(){super.render();const{active:y}=this.model,A=this.model.tabs.map((x,H)=>{const S=(0,p.div)({class:[s.tab,H==y?s.active:null]},x.title);if(S.addEventListener("click",k=>{this.model.disabled||k.target==k.currentTarget&&this.change_active(H)}),x.closable){const k=(0,p.div)({class:s.close});k.addEventListener("click",E=>{if(E.target==E.currentTarget){this.model.tabs=(0,T.remove_at)(this.model.tabs,H);const P=this.model.tabs.length;this.model.active>P-1&&(this.model.active=P-1)}}),S.appendChild(k)}return(this.model.disabled||x.disabled)&&S.classList.add(s.disabled),S});this.headers_el=(0,p.div)({class:[s.headers]},A),this.wrapper_el=(0,p.div)({class:s.headers_wrapper},this.headers_el),this.left_el=(0,p.div)({class:[u.btn,u.btn_default],disabled:""},(0,p.div)({class:[d.caret,s.left]})),this.right_el=(0,p.div)({class:[u.btn,u.btn_default]},(0,p.div)({class:[d.caret,s.right]})),this.left_el.addEventListener("click",()=>this.do_scroll("left")),this.right_el.addEventListener("click",()=>this.do_scroll("right")),this.scroll_el=(0,p.div)({class:u.btn_group},this.left_el,this.right_el);const L=this.model.tabs_location;this.header_el=(0,p.div)({class:[s.tabs_header,s[L]]},this.scroll_el,this.wrapper_el),this.el.appendChild(this.header_el)}do_scroll(y){const A=this.model.tabs.length;y=="left"?this._scroll_index-=1:y=="right"?this._scroll_index+=1:this._scroll_index=y,this._scroll_index=(0,c.clamp)(this._scroll_index,0,A-1),this._scroll_index==0?this.left_el.setAttribute("disabled",""):this.left_el.removeAttribute("disabled"),this._scroll_index==A-1?this.right_el.setAttribute("disabled",""):this.right_el.removeAttribute("disabled");const L=(0,p.children)(this.headers_el).slice(0,this._scroll_index).map(H=>H.getBoundingClientRect()),x=this.model.tabs_location;if(x=="above"||x=="below"){const H=-(0,T.sum)(L.map(S=>S.width));this.headers_el.style.left=`${H}px`}else{const H=-(0,T.sum)(L.map(S=>S.height));this.headers_el.style.top=`${H}px`}}change_active(y){y!=this.model.active&&(this.model.active=y)}on_active_change(){const y=this.model.active,A=(0,p.children)(this.headers_el);for(const x of A)x.classList.remove(s.active);A[y].classList.add(s.active);const{child_views:L}=this;for(const x of L)(0,p.hide)(x.el);(0,p.show)(L[y].el)}}e.TabsView=m,m.__name__="TabsView";class f extends r.LayoutDOM{constructor(y){super(y)}}e.Tabs=f,w=f,f.__name__="Tabs",w.prototype.default_view=m,w.define(({Int:b,Array:y,Ref:A})=>({tabs:[y(A(i.Panel)),[]],tabs_location:[o.Location,"above"],active:[b,0]}))},function(Q,O,e,C,R){C(),e.root="bk-root",e.tabs_header="bk-tabs-header",e.btn_group="bk-btn-group",e.btn="bk-btn",e.headers_wrapper="bk-headers-wrapper",e.above="bk-above",e.right="bk-right",e.below="bk-below",e.left="bk-left",e.headers="bk-headers",e.tab="bk-tab",e.active="bk-active",e.close="bk-close",e.disabled="bk-disabled",e.default=`.bk-root .bk-tabs-header{display:flex;flex-wrap:nowrap;align-items:center;overflow:hidden;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-tabs-header .bk-btn-group{height:auto;margin-right:5px;}.bk-root .bk-tabs-header .bk-btn-group > .bk-btn{flex-grow:0;height:auto;padding:4px 4px;}.bk-root .bk-tabs-header .bk-headers-wrapper{flex-grow:1;overflow:hidden;color:#666666;}.bk-root .bk-tabs-header.bk-above .bk-headers-wrapper{border-bottom:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-right .bk-headers-wrapper{border-left:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-below .bk-headers-wrapper{border-top:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-left .bk-headers-wrapper{border-right:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-above,.bk-root .bk-tabs-header.bk-below{flex-direction:row;}.bk-root .bk-tabs-header.bk-above .bk-headers,.bk-root .bk-tabs-header.bk-below .bk-headers{flex-direction:row;}.bk-root .bk-tabs-header.bk-left,.bk-root .bk-tabs-header.bk-right{flex-direction:column;}.bk-root .bk-tabs-header.bk-left .bk-headers,.bk-root .bk-tabs-header.bk-right .bk-headers{flex-direction:column;}.bk-root .bk-tabs-header .bk-headers{position:relative;display:flex;flex-wrap:nowrap;align-items:center;}.bk-root .bk-tabs-header .bk-tab{padding:4px 8px;border:solid transparent;white-space:nowrap;cursor:pointer;}.bk-root .bk-tabs-header .bk-tab:hover{background-color:#f2f2f2;}.bk-root .bk-tabs-header .bk-tab.bk-active{color:#4d4d4d;background-color:white;border-color:#e6e6e6;}.bk-root .bk-tabs-header .bk-tab .bk-close{margin-left:10px;}.bk-root .bk-tabs-header .bk-tab.bk-disabled{cursor:not-allowed;pointer-events:none;opacity:0.65;}.bk-root .bk-tabs-header.bk-above .bk-tab{border-width:3px 1px 0px 1px;border-radius:4px 4px 0 0;}.bk-root .bk-tabs-header.bk-right .bk-tab{border-width:1px 3px 1px 0px;border-radius:0 4px 4px 0;}.bk-root .bk-tabs-header.bk-below .bk-tab{border-width:0px 1px 3px 1px;border-radius:0 0 4px 4px;}.bk-root .bk-tabs-header.bk-left .bk-tab{border-width:1px 0px 1px 3px;border-radius:4px 0 0 4px;}.bk-root .bk-close{display:inline-block;width:10px;height:10px;vertical-align:middle;background-image:url('data:image/svg+xml;utf8, <svg viewPort="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg"> <line x1="1" y1="9" x2="9" y2="1" stroke="gray" stroke-width="2"/> <line x1="1" y1="1" x2="9" y2="9" stroke="gray" stroke-width="2"/> </svg>');}.bk-root .bk-close:hover{background-image:url('data:image/svg+xml;utf8, <svg viewPort="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg"> <line x1="1" y1="9" x2="9" y2="1" stroke="red" stroke-width="2"/> <line x1="1" y1="1" x2="9" y2="9" stroke="red" stroke-width="2"/> </svg>');}`},function(Q,O,e,C,R){C(),e.root="bk-root",e.btn="bk-btn",e.active="bk-active",e.btn_default="bk-btn-default",e.btn_primary="bk-btn-primary",e.btn_success="bk-btn-success",e.btn_warning="bk-btn-warning",e.btn_danger="bk-btn-danger",e.btn_light="bk-btn-light",e.btn_group="bk-btn-group",e.vertical="bk-vertical",e.horizontal="bk-horizontal",e.dropdown_toggle="bk-dropdown-toggle",e.default=".bk-root .bk-btn{height:100%;display:inline-block;text-align:center;vertical-align:middle;white-space:nowrap;cursor:pointer;padding:6px 12px;font-size:12px;border:1px solid transparent;border-radius:4px;outline:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-btn:hover,.bk-root .bk-btn:focus{text-decoration:none;}.bk-root .bk-btn:active,.bk-root .bk-btn.bk-active{background-image:none;box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);}.bk-root .bk-btn[disabled]{cursor:not-allowed;pointer-events:none;opacity:0.65;box-shadow:none;}.bk-root .bk-btn-default{color:#333;background-color:#fff;border-color:#ccc;}.bk-root .bk-btn-default:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-default.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-default[disabled],.bk-root .bk-btn-default[disabled]:hover,.bk-root .bk-btn-default[disabled]:focus,.bk-root .bk-btn-default[disabled]:active,.bk-root .bk-btn-default[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd;}.bk-root .bk-btn-primary:hover{background-color:#3681c1;border-color:#2c699e;}.bk-root .bk-btn-primary.bk-active{background-color:#3276b1;border-color:#285e8e;}.bk-root .bk-btn-primary[disabled],.bk-root .bk-btn-primary[disabled]:hover,.bk-root .bk-btn-primary[disabled]:focus,.bk-root .bk-btn-primary[disabled]:active,.bk-root .bk-btn-primary[disabled].bk-active{background-color:#506f89;border-color:#357ebd;}.bk-root .bk-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c;}.bk-root .bk-btn-success:hover{background-color:#4eb24e;border-color:#409240;}.bk-root .bk-btn-success.bk-active{background-color:#47a447;border-color:#398439;}.bk-root .bk-btn-success[disabled],.bk-root .bk-btn-success[disabled]:hover,.bk-root .bk-btn-success[disabled]:focus,.bk-root .bk-btn-success[disabled]:active,.bk-root .bk-btn-success[disabled].bk-active{background-color:#667b66;border-color:#4cae4c;}.bk-root .bk-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236;}.bk-root .bk-btn-warning:hover{background-color:#eea43b;border-color:#e89014;}.bk-root .bk-btn-warning.bk-active{background-color:#ed9c28;border-color:#d58512;}.bk-root .bk-btn-warning[disabled],.bk-root .bk-btn-warning[disabled]:hover,.bk-root .bk-btn-warning[disabled]:focus,.bk-root .bk-btn-warning[disabled]:active,.bk-root .bk-btn-warning[disabled].bk-active{background-color:#c89143;border-color:#eea236;}.bk-root .bk-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a;}.bk-root .bk-btn-danger:hover{background-color:#d5433e;border-color:#bd2d29;}.bk-root .bk-btn-danger.bk-active{background-color:#d2322d;border-color:#ac2925;}.bk-root .bk-btn-danger[disabled],.bk-root .bk-btn-danger[disabled]:hover,.bk-root .bk-btn-danger[disabled]:focus,.bk-root .bk-btn-danger[disabled]:active,.bk-root .bk-btn-danger[disabled].bk-active{background-color:#a55350;border-color:#d43f3a;}.bk-root .bk-btn-light{color:#333;background-color:#fff;border-color:#ccc;border-color:transparent;}.bk-root .bk-btn-light:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-light.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-light[disabled],.bk-root .bk-btn-light[disabled]:hover,.bk-root .bk-btn-light[disabled]:focus,.bk-root .bk-btn-light[disabled]:active,.bk-root .bk-btn-light[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-group{height:100%;display:flex;flex-wrap:nowrap;align-items:center;}.bk-root .bk-btn-group:not(.bk-vertical),.bk-root .bk-btn-group.bk-horizontal{flex-direction:row;}.bk-root .bk-btn-group.bk-vertical{flex-direction:column;}.bk-root .bk-btn-group > .bk-btn{flex-grow:1;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn + .bk-btn{margin-left:-1px;}.bk-root .bk-btn-group.bk-vertical > .bk-btn + .bk-btn{margin-top:-1px;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn:first-child:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn:not(:first-child):last-child{border-bottom-left-radius:0;border-top-left-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn:not(:first-child):last-child{border-top-left-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group > .bk-btn:not(:first-child):not(:last-child){border-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn{width:100%;}.bk-root .bk-btn-group .bk-dropdown-toggle{flex:0 0 0;padding:6px 6px;}"},function(V,Q,O,e,C){var R;e();const v=V(310);class w extends v.ColumnView{}O.WidgetBoxView=w,w.__name__="WidgetBoxView";class g extends v.Column{constructor(T){super(T)}}O.WidgetBox=g,R=g,g.__name__="WidgetBox",R.prototype.default_view=w},function(Q,O,e,C,R){C();var v=Q(135);R("MathText",v.MathText),R("Ascii",v.Ascii),R("MathML",v.MathML),R("TeX",v.TeX),R("PlainText",Q(139).PlainText)},function(Q,O,e,C,R){C(),R("CustomJSTransform",Q(322).CustomJSTransform),R("Dodge",Q(323).Dodge),R("Interpolator",Q(325).Interpolator),R("Jitter",Q(326).Jitter),R("LinearInterpolator",Q(327).LinearInterpolator),R("StepInterpolator",Q(328).StepInterpolator),R("Transform",Q(56).Transform)},function(Q,O,e,C,R){var v;C();const w=Q(56),g=Q(13),p=Q(34);class T extends w.Transform{constructor(o){super(o)}get names(){return(0,g.keys)(this.args)}get values(){return(0,g.values)(this.args)}_make_transform(o,r){return new Function(...this.names,o,(0,p.use_strict)(r))}get scalar_transform(){return this._make_transform("x",this.func)}get vector_transform(){return this._make_transform("xs",this.v_func)}compute(o){return this.scalar_transform(...this.values,o)}v_compute(o){return this.vector_transform(...this.values,o)}}e.CustomJSTransform=T,v=T,T.__name__="CustomJSTransform",v.define(({Unknown:c,String:o,Dict:r})=>({args:[r(c),{}],func:[o,""],v_func:[o,""]}))},function(Q,O,e,C,R){var v;C();const w=Q(324);class g extends w.RangeTransform{constructor(T){super(T)}_compute(T){return T+this.value}}e.Dodge=g,v=g,g.__name__="Dodge",v.define(({Number:p})=>({value:[p,0]}))},function(Q,O,e,C,R){var v;C();const w=Q(56),g=Q(57),p=Q(67),T=Q(24),c=Q(8),o=Q(11);class r extends w.Transform{constructor(t){super(t)}v_compute(t){let s;this.range instanceof p.FactorRange?s=this.range.v_synthetic(t):(0,c.isArrayableOf)(t,c.isNumber)?s=t:(0,o.unreachable)();const a=new((0,T.infer_type)(s))(s.length);for(let u=0;u<s.length;u++){const l=s[u];a[u]=this._compute(l)}return a}compute(t){return this.range instanceof p.FactorRange?this._compute(this.range.synthetic(t)):(0,c.isNumber)(t)?this._compute(t):void(0,o.unreachable)()}}e.RangeTransform=r,v=r,r.__name__="RangeTransform",v.define(({Ref:i,Nullable:t})=>({range:[t(i(g.Range)),null]}))},function(Q,O,e,C,R){var v;C();const w=Q(56),g=Q(70),p=Q(24),T=Q(9),c=Q(8);class o extends w.Transform{constructor(i){super(i),this._sorted_dirty=!0}connect_signals(){super.connect_signals(),this.connect(this.change,()=>this._sorted_dirty=!0)}v_compute(i){const t=new((0,p.infer_type)(i))(i.length);for(let s=0;s<i.length;s++){const a=i[s];t[s]=this.compute(a)}return t}sort(i=!1){if(!this._sorted_dirty)return;let t,s;if((0,c.isString)(this.x)&&(0,c.isString)(this.y)&&this.data!=null){const d=this.data.columns();if(!(0,T.includes)(d,this.x))throw new Error("The x parameter does not correspond to a valid column name defined in the data parameter");if(!(0,T.includes)(d,this.y))throw new Error("The y parameter does not correspond to a valid column name defined in the data parameter");t=this.data.get_column(this.x),s=this.data.get_column(this.y)}else{if(!(0,c.isArray)(this.x)||!(0,c.isArray)(this.y))throw new Error("parameters 'x' and 'y' must be both either string fields or arrays");t=this.x,s=this.y}if(t.length!==s.length)throw new Error("The length for x and y do not match");if(t.length<2)throw new Error("x and y must have at least two elements to support interpolation");const a=t.length,u=new Uint32Array(a);for(let d=0;d<a;d++)u[d]=d;const l=i?-1:1;u.sort((d,m)=>l*(t[d]-t[m])),this._x_sorted=new((0,p.infer_type)(t))(a),this._y_sorted=new((0,p.infer_type)(s))(a);for(let d=0;d<a;d++)this._x_sorted[d]=t[u[d]],this._y_sorted[d]=s[u[d]];this._sorted_dirty=!1}}e.Interpolator=o,v=o,o.__name__="Interpolator",v.define(({Boolean:r,Number:i,String:t,Ref:s,Array:a,Or:u,Nullable:l})=>({x:[u(t,a(i))],y:[u(t,a(i))],data:[l(s(g.ColumnarDataSource)),null],clip:[r,!0]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(324),p=Q(67),T=Q(20),c=Q(8),o=Q(12),r=(0,v.__importStar)(Q(10)),i=Q(11);class t extends g.RangeTransform{constructor(a){super(a)}v_compute(a){var u;let l;this.range instanceof p.FactorRange?l=this.range.v_synthetic(a):(0,c.isArrayableOf)(a,c.isNumber)?l=a:(0,i.unreachable)();const d=l.length;((u=this.previous_offsets)===null||u===void 0?void 0:u.length)!=d&&(this.previous_offsets=new Array(d),this.previous_offsets=(0,o.map)(this.previous_offsets,()=>this._compute()));const m=this.previous_offsets;return(0,o.map)(l,(f,b)=>m[b]+f)}_compute(){switch(this.distribution){case"uniform":return this.mean+(r.random()-.5)*this.width;case"normal":return r.rnorm(this.mean,this.width)}}}e.Jitter=t,w=t,t.__name__="Jitter",w.define(({Number:s})=>({mean:[s,0],width:[s,1],distribution:[T.Distribution,"uniform"]}))},function(V,Q,O,e,C){e();const R=V(9),v=V(325);class w extends v.Interpolator{constructor(p){super(p)}compute(p){if(this.sort(!1),this.clip){if(p<this._x_sorted[0]||p>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(p<this._x_sorted[0])return this._y_sorted[0];if(p>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(p==this._x_sorted[0])return this._y_sorted[0];const T=(0,R.find_last_index)(this._x_sorted,t=>t<p),c=this._x_sorted[T],o=this._x_sorted[T+1],r=this._y_sorted[T],i=this._y_sorted[T+1];return r+(p-c)/(o-c)*(i-r)}}O.LinearInterpolator=w,w.__name__="LinearInterpolator"},function(Q,O,e,C,R){var v;C();const w=Q(325),g=Q(20),p=Q(9);class T extends w.Interpolator{constructor(o){super(o)}compute(o){if(this.sort(!1),this.clip){if(o<this._x_sorted[0]||o>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(o<this._x_sorted[0])return this._y_sorted[0];if(o>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}let r;switch(this.mode){case"after":r=(0,p.find_last_index)(this._x_sorted,i=>o>=i);break;case"before":r=(0,p.find_index)(this._x_sorted,i=>o<=i);break;case"center":{const i=(0,p.map)(this._x_sorted,s=>Math.abs(s-o)),t=(0,p.min)(i);r=(0,p.find_index)(i,s=>t===s);break}default:throw new Error(`unknown mode: ${this.mode}`)}return r!=-1?this._y_sorted[r]:NaN}}e.StepInterpolator=T,v=T,T.__name__="StepInterpolator",v.define(()=>({mode:[g.StepMode,"after"]}))},function(Q,O,e,C,R){C(),R("MapOptions",Q(330).MapOptions),R("GMapOptions",Q(330).GMapOptions),R("GMapPlot",Q(330).GMapPlot),R("Plot",Q(331).Plot)},function(Q,O,e,C,R){var v,w,g;C();const p=Q(331),T=Q(53),c=Q(58),o=Q(336);R("GMapPlotView",o.GMapPlotView);class r extends T.Model{constructor(a){super(a)}}e.MapOptions=r,v=r,r.__name__="MapOptions",v.define(({Int:s,Number:a})=>({lat:[a],lng:[a],zoom:[s,12]}));class i extends r{constructor(a){super(a)}}e.GMapOptions=i,w=i,i.__name__="GMapOptions",w.define(({Boolean:s,Int:a,String:u})=>({map_type:[u,"roadmap"],scale_control:[s,!1],styles:[u],tilt:[a,45]}));class t extends p.Plot{constructor(a){super(a),this.use_map=!0}}e.GMapPlot=t,g=t,t.__name__="GMapPlot",g.prototype.default_view=o.GMapPlotView,g.define(({String:s,Ref:a})=>({map_options:[a(i)],api_key:[s],api_version:[s,"weekly"]})),g.override({x_range:()=>new c.Range1d,y_range:()=>new c.Range1d})},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=(0,v.__importStar)(Q(48)),p=(0,v.__importStar)(Q(18)),T=Q(15),c=Q(20),o=Q(9),r=Q(13),i=Q(8),t=Q(309),s=Q(128),a=Q(306),u=Q(40),l=Q(118),d=Q(59),m=Q(221),f=Q(57),b=Q(55),y=Q(75),A=Q(41),L=Q(176),x=Q(175),H=Q(63),S=Q(332);R("PlotView",S.PlotView);class k extends t.LayoutDOM{constructor(P){super(P),this.use_map=!1}_doc_attached(){super._doc_attached(),this._push_changes([[this.properties.inner_height,null,this.inner_height],[this.properties.inner_width,null,this.inner_width]])}initialize(){super.initialize(),this.reset=new T.Signal0(this,"reset");for(const P of(0,r.values)(this.extra_x_ranges).concat(this.x_range)){let N=P.plots;(0,i.isArray)(N)&&(N=N.concat(this),P.setv({plots:N},{silent:!0}))}for(const P of(0,r.values)(this.extra_y_ranges).concat(this.y_range)){let N=P.plots;(0,i.isArray)(N)&&(N=N.concat(this),P.setv({plots:N},{silent:!0}))}}add_layout(P,N="center"){const B=this.properties[N].get_value();this.setv({[N]:[...B,P]})}remove_layout(P){const N=B=>{(0,o.remove_by)(B,D=>D==P)};N(this.left),N(this.right),N(this.above),N(this.below),N(this.center)}get data_renderers(){return this.renderers.filter(P=>P instanceof L.DataRenderer)}add_renderers(...P){this.renderers=this.renderers.concat(P)}add_glyph(P,N=new y.ColumnDataSource,B={}){const D=new x.GlyphRenderer(Object.assign(Object.assign({},B),{data_source:N,glyph:P}));return this.add_renderers(D),D}add_tools(...P){this.toolbar.tools=this.toolbar.tools.concat(P)}get panels(){return[...this.side_panels,...this.center]}get side_panels(){const{above:P,below:N,left:B,right:D}=this;return(0,o.concat)([P,N,B,D])}}e.Plot=k,w=k,k.__name__="Plot",w.prototype.default_view=S.PlotView,w.mixins([["outline_",g.Line],["background_",g.Fill],["border_",g.Fill]]),w.define(({Boolean:E,Number:P,String:N,Array:B,Dict:D,Or:j,Ref:M,Null:F,Nullable:W})=>({toolbar:[M(m.Toolbar),()=>new m.Toolbar],toolbar_location:[W(c.Location),"right"],toolbar_sticky:[E,!0],plot_width:[p.Alias("width")],plot_height:[p.Alias("height")],frame_width:[W(P),null],frame_height:[W(P),null],title:[j(M(l.Title),N,F),"",{convert:U=>(0,i.isString)(U)?new l.Title({text:U}):U}],title_location:[W(c.Location),"above"],above:[B(j(M(u.Annotation),M(s.Axis))),[]],below:[B(j(M(u.Annotation),M(s.Axis))),[]],left:[B(j(M(u.Annotation),M(s.Axis))),[]],right:[B(j(M(u.Annotation),M(s.Axis))),[]],center:[B(j(M(u.Annotation),M(a.Grid))),[]],renderers:[B(M(A.Renderer)),[]],x_range:[M(f.Range),()=>new H.DataRange1d],y_range:[M(f.Range),()=>new H.DataRange1d],x_scale:[M(b.Scale),()=>new d.LinearScale],y_scale:[M(b.Scale),()=>new d.LinearScale],extra_x_ranges:[D(M(f.Range)),{}],extra_y_ranges:[D(M(f.Range)),{}],extra_x_scales:[D(M(b.Scale)),{}],extra_y_scales:[D(M(b.Scale)),{}],lod_factor:[P,10],lod_interval:[P,300],lod_threshold:[W(P),2e3],lod_timeout:[P,500],hidpi:[E,!0],output_backend:[c.OutputBackend,"canvas"],min_border:[W(P),5],min_border_top:[W(P),null],min_border_left:[W(P),null],min_border_bottom:[W(P),null],min_border_right:[W(P),null],inner_width:[P,0],inner_height:[P,0],outer_width:[P,0],outer_height:[P,0],match_aspect:[E,!1],aspect_scale:[P,1],reset_policy:[c.ResetPolicy,"standard"]})),w.override({width:600,height:600,outline_line_color:"#e5e5e5",border_fill_color:"#ffffff",background_fill_color:"#ffffff"})},function(Q,O,e,C,R){C();const v=Q(1),w=Q(126),g=Q(249),p=Q(309),T=Q(40),c=Q(118),o=Q(128),r=Q(220),i=Q(251),t=Q(113),s=Q(45),a=Q(19),u=Q(251),l=Q(333),d=Q(8),m=Q(9),f=Q(235),b=Q(208),y=Q(211),A=Q(209),L=Q(123),x=Q(65),H=Q(334),S=Q(335),k=Q(28);class E extends p.LayoutDOMView{constructor(){super(...arguments),this._outer_bbox=new x.BBox,this._inner_bbox=new x.BBox,this._needs_paint=!0,this._needs_layout=!1,this._invalidated_painters=new Set,this._invalidate_all=!0,this._needs_notify=!1}get canvas(){return this.canvas_view}get state(){return this._state_manager}set invalidate_dataranges(N){this._range_manager.invalidate_dataranges=N}renderer_view(N){const B=this.renderer_views.get(N);if(B==null)for(const[,D]of this.renderer_views){const j=D.renderer_view(N);if(j!=null)return j}return B}get is_paused(){return this._is_paused!=null&&this._is_paused!==0}get child_models(){return[]}pause(){this._is_paused==null?this._is_paused=1:this._is_paused+=1}unpause(N=!1){if(this._is_paused==null)throw new Error("wasn't paused");this._is_paused-=1,this._is_paused!=0||N||this.request_paint("everything")}notify_finished_after_paint(){this._needs_notify=!0}request_render(){this.request_paint("everything")}request_paint(N){this.invalidate_painters(N),this.schedule_paint()}invalidate_painters(N){if(N=="everything")this._invalidate_all=!0;else if((0,d.isArray)(N))for(const B of N)this._invalidated_painters.add(B);else this._invalidated_painters.add(N)}schedule_paint(){if(!this.is_paused){const N=this.throttled_paint();this._ready=this._ready.then(()=>N)}}request_layout(){this._needs_layout=!0,this.request_paint("everything")}reset(){this.model.reset_policy=="standard"&&(this.state.clear(),this.reset_range(),this.reset_selection()),this.model.trigger_event(new i.Reset)}remove(){(0,t.remove_views)(this.renderer_views),(0,t.remove_views)(this.tool_views),this.canvas_view.remove(),super.remove()}render(){super.render(),this.el.appendChild(this.canvas_view.el),this.canvas_view.render()}initialize(){this.pause(),super.initialize(),this.lod_started=!1,this.visuals=new s.Visuals(this),this._initial_state={selection:new Map,dimensions:{width:0,height:0}},this.visibility_callbacks=[],this.renderer_views=new Map,this.tool_views=new Map,this.frame=new w.CartesianFrame(this.model.x_scale,this.model.y_scale,this.model.x_range,this.model.y_range,this.model.extra_x_ranges,this.model.extra_y_ranges,this.model.extra_x_scales,this.model.extra_y_scales),this._range_manager=new H.RangeManager(this),this._state_manager=new S.StateManager(this,this._initial_state),this.throttled_paint=(0,l.throttle)(()=>this.repaint(),1e3/60);const{title_location:N,title:B}=this.model;N!=null&&B!=null&&(this._title=B instanceof c.Title?B:new c.Title({text:B}));const{toolbar_location:D,toolbar:j}=this.model;D!=null&&j!=null&&(this._toolbar=new r.ToolbarPanel({toolbar:j}),j.toolbar_location=D)}async lazy_initialize(){await super.lazy_initialize();const{hidpi:N,output_backend:B}=this.model,D=new g.Canvas({hidpi:N,output_backend:B});this.canvas_view=await(0,t.build_view)(D,{parent:this}),this.canvas_view.plot_views=[this],await this.build_renderer_views(),await this.build_tool_views(),this._range_manager.update_dataranges(),this.unpause(!0),a.logger.debug("PlotView initialized")}_width_policy(){return this.model.frame_width==null?super._width_policy():"min"}_height_policy(){return this.model.frame_height==null?super._height_policy():"min"}_update_layout(){var N,B,D,j,M;this.layout=new y.BorderLayout,this.layout.set_sizing(this.box_sizing());const F=(0,m.copy)(this.model.above),W=(0,m.copy)(this.model.below),U=(0,m.copy)(this.model.left),q=(0,m.copy)(this.model.right),X=dt=>{switch(dt){case"above":return F;case"below":return W;case"left":return U;case"right":return q}},{title_location:ae,title:me}=this.model;ae!=null&&me!=null&&X(ae).push(this._title);const{toolbar_location:Ve,toolbar:Je}=this.model;if(Ve!=null&&Je!=null){const dt=X(Ve);let Wt=!0;if(this.model.toolbar_sticky)for(let jt=0;jt<dt.length;jt++){const a1=dt[jt];if(a1 instanceof c.Title){dt[jt]=Ve=="above"||Ve=="below"?[a1,this._toolbar]:[this._toolbar,a1],Wt=!1;break}}Wt&&dt.push(this._toolbar)}const rt=(dt,Wt)=>{var jt;const a1=this.renderer_view(Wt);return a1.panel=new L.Panel(dt),(jt=a1.update_layout)===null||jt===void 0||jt.call(a1),a1.layout},yt=(dt,Wt)=>{const jt=dt=="above"||dt=="below",a1=[];for(const ye of Wt)if((0,d.isArray)(ye)){const ie=ye.map(St=>{const mt=rt(dt,St);if(St instanceof r.ToolbarPanel){const Pt=jt?"width_policy":"height_policy";mt.set_sizing(Object.assign(Object.assign({},mt.sizing),{[Pt]:"min"}))}return mt});let nt;jt?(nt=new A.Row(ie),nt.set_sizing({width_policy:"max",height_policy:"min"})):(nt=new A.Column(ie),nt.set_sizing({width_policy:"min",height_policy:"max"})),nt.absolute=!0,a1.push(nt)}else a1.push(rt(dt,ye));return a1},xt=(N=this.model.min_border)!==null&&N!==void 0?N:0;this.layout.min_border={left:(B=this.model.min_border_left)!==null&&B!==void 0?B:xt,top:(D=this.model.min_border_top)!==null&&D!==void 0?D:xt,right:(j=this.model.min_border_right)!==null&&j!==void 0?j:xt,bottom:(M=this.model.min_border_bottom)!==null&&M!==void 0?M:xt};const r1=new b.NodeLayout,t1=new b.VStack,Bt=new b.VStack,Kt=new b.HStack,wt=new b.HStack;r1.absolute=!0,t1.absolute=!0,Bt.absolute=!0,Kt.absolute=!0,wt.absolute=!0,r1.children=this.model.center.filter(dt=>dt instanceof T.Annotation).map(dt=>{var Wt;const jt=this.renderer_view(dt);return(Wt=jt.update_layout)===null||Wt===void 0||Wt.call(jt),jt.layout}).filter(dt=>dt!=null);const{frame_width:Rt,frame_height:Ht}=this.model;r1.set_sizing(Object.assign(Object.assign({},Rt!=null?{width_policy:"fixed",width:Rt}:{width_policy:"fit"}),Ht!=null?{height_policy:"fixed",height:Ht}:{height_policy:"fit"})),r1.on_resize(dt=>this.frame.set_geometry(dt)),t1.children=(0,m.reversed)(yt("above",F)),Bt.children=yt("below",W),Kt.children=(0,m.reversed)(yt("left",U)),wt.children=yt("right",q),t1.set_sizing({width_policy:"fit",height_policy:"min"}),Bt.set_sizing({width_policy:"fit",height_policy:"min"}),Kt.set_sizing({width_policy:"min",height_policy:"fit"}),wt.set_sizing({width_policy:"min",height_policy:"fit"}),this.layout.center_panel=r1,this.layout.top_panel=t1,this.layout.bottom_panel=Bt,this.layout.left_panel=Kt,this.layout.right_panel=wt}get axis_views(){const N=[];for(const[,B]of this.renderer_views)B instanceof o.AxisView&&N.push(B);return N}set_toolbar_visibility(N){for(const B of this.visibility_callbacks)B(N)}update_range(N,B){this.pause(),this._range_manager.update(N,B),this.unpause()}reset_range(){this.update_range(null),this.trigger_ranges_update_event()}trigger_ranges_update_event(){const{x_range:N,y_range:B}=this.model;this.model.trigger_event(new u.RangesUpdate(N.start,N.end,B.start,B.end))}get_selection(){const N=new Map;for(const B of this.model.data_renderers){const{selected:D}=B.selection_manager.source;N.set(B,D)}return N}update_selection(N){for(const B of this.model.data_renderers){const D=B.selection_manager.source;if(N!=null){const j=N.get(B);j!=null&&D.selected.update(j,!0)}else D.selection_manager.clear()}}reset_selection(){this.update_selection(null)}_invalidate_layout(){(()=>{var N;for(const B of this.model.side_panels){const D=this.renderer_views.get(B);if(!((N=D.layout)===null||N===void 0)&&N.has_size_changed())return this.invalidate_painters(D),!0}return!1})()&&this.root.compute_layout()}get_renderer_views(){return this.computed_renderers.map(N=>this.renderer_views.get(N))}*_compute_renderers(){const{above:N,below:B,left:D,right:j,center:M,renderers:F}=this.model;yield*F,yield*N,yield*B,yield*D,yield*j,yield*M,this._title!=null&&(yield this._title),this._toolbar!=null&&(yield this._toolbar);for(const W of this.model.toolbar.tools)W.overlay!=null&&(yield W.overlay),yield*W.synthetic_renderers}async build_renderer_views(){this.computed_renderers=[...this._compute_renderers()],await(0,t.build_views)(this.renderer_views,this.computed_renderers,{parent:this})}async build_tool_views(){const N=this.model.toolbar.tools;(await(0,t.build_views)(this.tool_views,N,{parent:this})).map(B=>this.canvas_view.ui_event_bus.register_tool(B))}connect_signals(){super.connect_signals();const{x_ranges:N,y_ranges:B}=this.frame;for(const[,q]of N)this.connect(q.change,()=>{this._needs_layout=!0,this.request_paint("everything")});for(const[,q]of B)this.connect(q.change,()=>{this._needs_layout=!0,this.request_paint("everything")});const{above:D,below:j,left:M,right:F,center:W,renderers:U}=this.model.properties;this.on_change([D,j,M,F,W,U],async()=>await this.build_renderer_views()),this.connect(this.model.toolbar.properties.tools.change,async()=>{await this.build_renderer_views(),await this.build_tool_views()}),this.connect(this.model.change,()=>this.request_paint("everything")),this.connect(this.model.reset,()=>this.reset())}has_finished(){if(!super.has_finished())return!1;if(this.model.visible){for(const[,N]of this.renderer_views)if(!N.has_finished())return!1}return!0}after_layout(){var N;super.after_layout();for(const[,D]of this.renderer_views)D instanceof T.AnnotationView&&((N=D.after_layout)===null||N===void 0||N.call(D));if(this._needs_layout=!1,this.model.setv({inner_width:Math.round(this.frame.bbox.width),inner_height:Math.round(this.frame.bbox.height),outer_width:Math.round(this.layout.bbox.width),outer_height:Math.round(this.layout.bbox.height)},{no_change:!0}),this.model.match_aspect!==!1&&(this.pause(),this._range_manager.update_dataranges(),this.unpause(!0)),!this._outer_bbox.equals(this.layout.bbox)){const{width:D,height:j}=this.layout.bbox;this.canvas_view.resize(D,j),this._outer_bbox=this.layout.bbox,this._invalidate_all=!0,this._needs_paint=!0}const{inner_bbox:B}=this.layout;this._inner_bbox.equals(B)||(this._inner_bbox=B,this._needs_paint=!0),this._needs_paint&&this.paint()}repaint(){this._needs_layout&&this._invalidate_layout(),this.paint()}paint(){this.is_paused||(this.model.visible&&(a.logger.trace(`${this.toString()}.paint()`),this._actual_paint()),this._needs_notify&&(this._needs_notify=!1,this.notify_finished()))}_actual_paint(){var N;const{document:B}=this.model;if(B!=null){const U=B.interactive_duration();U>=0&&U<this.model.lod_interval?setTimeout(()=>{B.interactive_duration()>this.model.lod_timeout&&B.interactive_stop(),this.request_paint("everything")},this.model.lod_timeout):B.interactive_stop()}this._range_manager.invalidate_dataranges&&(this._range_manager.update_dataranges(),this._invalidate_layout());let D=!1,j=!1;if(this._invalidate_all)D=!0,j=!0;else for(const U of this._invalidated_painters){const{level:q}=U.model;if(q!="overlay"?D=!0:j=!0,D&&j)break}this._invalidated_painters.clear(),this._invalidate_all=!1;const M=[this.frame.bbox.left,this.frame.bbox.top,this.frame.bbox.width,this.frame.bbox.height],{primary:F,overlays:W}=this.canvas_view;D&&(F.prepare(),this.canvas_view.prepare_webgl(M),this._map_hook(F.ctx,M),this._paint_empty(F.ctx,M),this._paint_outline(F.ctx,M),this._paint_levels(F.ctx,"image",M,!0),this._paint_levels(F.ctx,"underlay",M,!0),this._paint_levels(F.ctx,"glyph",M,!0),this._paint_levels(F.ctx,"guide",M,!1),this._paint_levels(F.ctx,"annotation",M,!1),F.finish()),(j||k.settings.wireframe)&&(W.prepare(),this._paint_levels(W.ctx,"overlay",M,!1),k.settings.wireframe&&this._paint_layout(W.ctx,this.layout),W.finish()),this._initial_state.range==null&&(this._initial_state.range=(N=this._range_manager.compute_initial())!==null&&N!==void 0?N:void 0),this._needs_paint=!1}_paint_levels(N,B,D,j){for(const M of this.computed_renderers){if(M.level!=B)continue;const F=this.renderer_views.get(M);N.save(),(j||F.needs_clip)&&(N.beginPath(),N.rect(...D),N.clip()),F.render(),N.restore(),F.has_webgl&&F.needs_webgl_blit&&this.canvas_view.blit_webgl(N)}}_paint_layout(N,B){const{x:D,y:j,width:M,height:F}=B.bbox;N.strokeStyle="blue",N.strokeRect(D,j,M,F);for(const W of B)N.save(),B.absolute||N.translate(D,j),this._paint_layout(N,W),N.restore()}_map_hook(N,B){}_paint_empty(N,B){const[D,j,M,F]=[0,0,this.layout.bbox.width,this.layout.bbox.height],[W,U,q,X]=B;this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(N),N.fillRect(D,j,M,F),N.clearRect(W,U,q,X)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(N),N.fillRect(W,U,q,X))}_paint_outline(N,B){if(this.visuals.outline_line.doit){N.save(),this.visuals.outline_line.set_value(N);let[D,j,M,F]=B;D+M==this.layout.bbox.width&&(M-=1),j+F==this.layout.bbox.height&&(F-=1),N.strokeRect(D,j,M,F),N.restore()}}to_blob(){return this.canvas_view.to_blob()}export(N,B=!0){const D=N=="png"?"canvas":"svg",j=new f.CanvasLayer(D,B),{width:M,height:F}=this.layout.bbox;j.resize(M,F);const{canvas:W}=this.canvas_view.compose();return j.ctx.drawImage(W,0,0),j}serializable_state(){const N=super.serializable_state(),{children:B}=N,D=(0,v.__rest)(N,["children"]),j=this.get_renderer_views().map(M=>M.serializable_state()).filter(M=>M.bbox!=null);return Object.assign(Object.assign({},D),{children:[...B??[],...j]})}}e.PlotView=E,E.__name__="PlotView"},function(Q,O,e,C,R){C(),e.throttle=function(v,w){let g=null,p=0,T=!1;return function(){return new Promise((c,o)=>{const r=function(){p=Date.now(),g=null,T=!1;try{v(),c()}catch(s){o(s)}},i=Date.now(),t=w-(i-p);t<=0&&!T?(g!=null&&clearTimeout(g),T=!0,requestAnimationFrame(r)):g||T?c():g=setTimeout(()=>requestAnimationFrame(r),t)})}}},function(Q,O,e,C,R){C();const v=Q(63),w=Q(19);class g{constructor(T){this.parent=T,this.invalidate_dataranges=!0}get frame(){return this.parent.frame}update(T,c){const{x_ranges:o,y_ranges:r}=this.frame;if(T==null){for(const[,i]of o)i.reset();for(const[,i]of r)i.reset();this.update_dataranges()}else{const i=[];for(const[t,s]of o)i.push([s,T.xrs.get(t)]);for(const[t,s]of r)i.push([s,T.yrs.get(t)]);c!=null&&c.scrolling&&this._update_ranges_together(i),this._update_ranges_individually(i,c)}}reset(){this.update(null)}_update_dataranges(T){const c=new Map,o=new Map;let r=!1;for(const[,l]of T.x_ranges)l instanceof v.DataRange1d&&l.scale_hint=="log"&&(r=!0);for(const[,l]of T.y_ranges)l instanceof v.DataRange1d&&l.scale_hint=="log"&&(r=!0);for(const l of this.parent.model.data_renderers){const d=this.parent.renderer_view(l);if(d==null)continue;const m=d.glyph_view.bounds();if(m!=null&&c.set(l,m),r){const f=d.glyph_view.log_bounds();f!=null&&o.set(l,f)}}let i=!1,t=!1;const s=T.x_target.span,a=T.y_target.span;let u;this.parent.model.match_aspect!==!1&&s!=0&&a!=0&&(u=1/this.parent.model.aspect_scale*(s/a));for(const[,l]of T.x_ranges){if(l instanceof v.DataRange1d){const d=l.scale_hint=="log"?o:c;l.update(d,0,this.parent.model,u),l.follow&&(i=!0)}l.bounds!=null&&(t=!0)}for(const[,l]of T.y_ranges){if(l instanceof v.DataRange1d){const d=l.scale_hint=="log"?o:c;l.update(d,1,this.parent.model,u),l.follow&&(i=!0)}l.bounds!=null&&(t=!0)}if(i&&t){w.logger.warn("Follow enabled so bounds are unset.");for(const[,l]of T.x_ranges)l.bounds=null;for(const[,l]of T.y_ranges)l.bounds=null}}update_dataranges(){this._update_dataranges(this.frame);for(const T of this.parent.model.renderers){const{coordinates:c}=T;c!=null&&this._update_dataranges(c)}this.compute_initial()!=null&&(this.invalidate_dataranges=!1)}compute_initial(){let T=!0;const{x_ranges:c,y_ranges:o}=this.frame,r=new Map,i=new Map;for(const[t,s]of c){const{start:a,end:u}=s;if(a==null||u==null||isNaN(a+u)){T=!1;break}r.set(t,{start:a,end:u})}if(T)for(const[t,s]of o){const{start:a,end:u}=s;if(a==null||u==null||isNaN(a+u)){T=!1;break}i.set(t,{start:a,end:u})}return T?{xrs:r,yrs:i}:(w.logger.warn("could not set initial ranges"),null)}_update_ranges_together(T){let c=1;for(const[o,r]of T)c=Math.min(c,this._get_weight_to_constrain_interval(o,r));if(c<1)for(const[o,r]of T)r.start=c*r.start+(1-c)*o.start,r.end=c*r.end+(1-c)*o.end}_update_ranges_individually(T,c){const o=!!(c!=null&&c.panning),r=!!(c!=null&&c.scrolling);let i=!1;for(const[t,s]of T){if(!r){const a=this._get_weight_to_constrain_interval(t,s);a<1&&(s.start=a*s.start+(1-a)*t.start,s.end=a*s.end+(1-a)*t.end)}if(t.bounds!=null&&t.bounds!="auto"){const[a,u]=t.bounds,l=Math.abs(s.end-s.start);t.is_reversed?(a!=null&&a>s.end&&(i=!0,s.end=a,(o||r)&&(s.start=a+l)),u!=null&&u<s.start&&(i=!0,s.start=u,(o||r)&&(s.end=u-l))):(a!=null&&a>s.start&&(i=!0,s.start=a,(o||r)&&(s.end=a+l)),u!=null&&u<s.end&&(i=!0,s.end=u,(o||r)&&(s.start=u-l)))}}if(!(r&&i&&(c!=null&&c.maintain_focus)))for(const[t,s]of T)t.have_updated_interactively=!0,t.start==s.start&&t.end==s.end||t.setv(s)}_get_weight_to_constrain_interval(T,c){const{min_interval:o}=T;let{max_interval:r}=T;if(T.bounds!=null&&T.bounds!="auto"){const[t,s]=T.bounds;if(t!=null&&s!=null){const a=Math.abs(s-t);r=r!=null?Math.min(r,a):a}}let i=1;if(o!=null||r!=null){const t=Math.abs(T.end-T.start),s=Math.abs(c.end-c.start);o!=null&&o>0&&s<o&&(i=(t-o)/(t-s)),r!=null&&r>0&&s>r&&(i=(r-t)/(s-t)),i=Math.max(0,Math.min(1,i))}return i}}e.RangeManager=g,g.__name__="RangeManager"},function(Q,O,e,C,R){C();const v=Q(15);class w{constructor(p,T){this.parent=p,this.initial_state=T,this.changed=new v.Signal0(this.parent,"state_changed"),this.history=[],this.index=-1}_do_state_change(p){const T=this.history[p]!=null?this.history[p].state:this.initial_state;return T.range!=null&&this.parent.update_range(T.range),T.selection!=null&&this.parent.update_selection(T.selection),T}push(p,T){const{history:c,index:o}=this,r=c[o]!=null?c[o].state:{},i=Object.assign(Object.assign(Object.assign({},this.initial_state),r),T);this.history=this.history.slice(0,this.index+1),this.history.push({type:p,state:i}),this.index=this.history.length-1,this.changed.emit()}clear(){this.history=[],this.index=-1,this.changed.emit()}undo(){if(this.can_undo){this.index-=1;const p=this._do_state_change(this.index);return this.changed.emit(),p}return null}redo(){if(this.can_redo){this.index+=1;const p=this._do_state_change(this.index);return this.changed.emit(),p}return null}get can_undo(){return this.index>=0}get can_redo(){return this.index<this.history.length-1}}e.StateManager=w,w.__name__="StateManager"},function(Q,O,e,C,R){C();const v=Q(19),w=Q(15),g=Q(43),p=Q(78),T=Q(22),c=Q(332),o=new w.Signal0({},"gmaps_ready");class r extends c.PlotView{initialize(){this.pause(),super.initialize(),this._tiles_loaded=!1,this.zoom_count=0;const{zoom:t,lat:s,lng:a}=this.model.map_options;if(this.initial_zoom=t,this.initial_lat=s,this.initial_lng=a,!this.model.api_key&&v.logger.error("api_key is required. See https://developers.google.com/maps/documentation/javascript/get-api-key for more information on how to obtain your own."),typeof google>"u"||google.maps==null){if(window._bokeh_gmaps_callback===void 0){const{api_key:u,api_version:l}=this.model;(function(d,m){window._bokeh_gmaps_callback=()=>o.emit();const f=encodeURIComponent,b=document.createElement("script");b.type="text/javascript",b.src=`https://maps.googleapis.com/maps/api/js?v=${f(m)}&key=${f(d)}&callback=_bokeh_gmaps_callback`,document.body.appendChild(b)})(u,l)}o.connect(()=>this.request_paint("everything"))}this.unpause()}remove(){(0,g.remove)(this.map_el),super.remove()}update_range(t,s){var a,u;if(t==null)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),super.update_range(null,s);else if(t.sdx!=null||t.sdy!=null)this.map.panBy((a=t.sdx)!==null&&a!==void 0?a:0,(u=t.sdy)!==null&&u!==void 0?u:0),super.update_range(t,s);else if(t.factor!=null){if(this.zoom_count!==10)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),super.update_range(t,s);const l=t.factor<0?-1:1,d=this.map.getZoom();if(d!=null){const m=d+l;if(m>=2){this.map.setZoom(m);const[f,b]=this._get_projected_bounds();b-f<0&&this.map.setZoom(d)}}this.unpause()}this._set_bokeh_ranges()}_build_map(){const{maps:t}=google;this.map_types={satellite:t.MapTypeId.SATELLITE,terrain:t.MapTypeId.TERRAIN,roadmap:t.MapTypeId.ROADMAP,hybrid:t.MapTypeId.HYBRID};const s=this.model.map_options,a={center:new t.LatLng(s.lat,s.lng),zoom:s.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[s.map_type],scaleControl:s.scale_control,tilt:s.tilt};s.styles!=null&&(a.styles=JSON.parse(s.styles)),this.map_el=(0,g.div)({style:{position:"absolute"}}),this.canvas_view.add_underlay(this.map_el),this.map=new t.Map(this.map_el,a),t.event.addListener(this.map,"idle",()=>this._set_bokeh_ranges()),t.event.addListener(this.map,"bounds_changed",()=>this._set_bokeh_ranges()),t.event.addListenerOnce(this.map,"tilesloaded",()=>this._render_finished()),this.connect(this.model.properties.map_options.change,()=>this._update_options()),this.connect(this.model.map_options.properties.styles.change,()=>this._update_styles()),this.connect(this.model.map_options.properties.lat.change,()=>this._update_center("lat")),this.connect(this.model.map_options.properties.lng.change,()=>this._update_center("lng")),this.connect(this.model.map_options.properties.zoom.change,()=>this._update_zoom()),this.connect(this.model.map_options.properties.map_type.change,()=>this._update_map_type()),this.connect(this.model.map_options.properties.scale_control.change,()=>this._update_scale_control()),this.connect(this.model.map_options.properties.tilt.change,()=>this._update_tilt())}_render_finished(){this._tiles_loaded=!0,this.notify_finished()}has_finished(){return super.has_finished()&&this._tiles_loaded===!0}_get_latlon_bounds(){const t=this.map.getBounds(),s=t.getNorthEast(),a=t.getSouthWest();return[a.lng(),s.lng(),a.lat(),s.lat()]}_get_projected_bounds(){const[t,s,a,u]=this._get_latlon_bounds(),[l,d]=p.wgs84_mercator.compute(t,a),[m,f]=p.wgs84_mercator.compute(s,u);return[l,m,d,f]}_set_bokeh_ranges(){const[t,s,a,u]=this._get_projected_bounds();this.frame.x_range.setv({start:t,end:s}),this.frame.y_range.setv({start:a,end:u})}_update_center(t){var s;const a=(s=this.map.getCenter())===null||s===void 0?void 0:s.toJSON();a!=null&&(a[t]=this.model.map_options[t],this.map.setCenter(a),this._set_bokeh_ranges())}_update_map_type(){this.map.setOptions({mapTypeId:this.map_types[this.model.map_options.map_type]})}_update_scale_control(){this.map.setOptions({scaleControl:this.model.map_options.scale_control})}_update_tilt(){this.map.setOptions({tilt:this.model.map_options.tilt})}_update_options(){this._update_styles(),this._update_center("lat"),this._update_center("lng"),this._update_zoom(),this._update_map_type()}_update_styles(){this.map.setOptions({styles:JSON.parse(this.model.map_options.styles)})}_update_zoom(){this.map.setOptions({zoom:this.model.map_options.zoom}),this._set_bokeh_ranges()}_map_hook(t,s){if(this.map==null&&typeof google<"u"&&google.maps!=null&&this._build_map(),this.map_el!=null){const[a,u,l,d]=s;this.map_el.style.top=`${u}px`,this.map_el.style.left=`${a}px`,this.map_el.style.width=`${l}px`,this.map_el.style.height=`${d}px`}}_paint_empty(t,s){const a=this.layout.bbox.width,u=this.layout.bbox.height,[l,d,m,f]=s;t.clearRect(0,0,a,u),t.beginPath(),t.moveTo(0,0),t.lineTo(0,u),t.lineTo(a,u),t.lineTo(a,0),t.lineTo(0,0),t.moveTo(l,d),t.lineTo(l+m,d),t.lineTo(l+m,d+f),t.lineTo(l,d+f),t.lineTo(l,d),t.closePath(),this.model.border_fill_color!=null&&(t.fillStyle=(0,T.color2css)(this.model.border_fill_color),t.fill())}}e.GMapPlotView=r,r.__name__="GMapPlotView"},function(V,Q,O,e,C){e(),(0,V(1).__exportStar)(V(132),O)},function(Q,O,e,C,R){C(),R("GlyphRenderer",Q(175).GlyphRenderer),R("GraphRenderer",Q(339).GraphRenderer),R("GuideRenderer",Q(129).GuideRenderer);var v=Q(41);R("Renderer",v.Renderer),R("RendererGroup",v.RendererGroup)},function(Q,O,e,C,R){var v;C();const w=Q(176),g=Q(175),p=Q(303),T=Q(302),c=Q(113),o=Q(178),r=Q(283),i=Q(286);class t extends w.DataRendererView{get glyph_view(){return this.node_view.glyph}async lazy_initialize(){await super.lazy_initialize(),this.apply_coordinates();const{parent:u}=this,{edge_renderer:l,node_renderer:d}=this.model;this.edge_view=await(0,c.build_view)(l,{parent:u}),this.node_view=await(0,c.build_view)(d,{parent:u})}connect_signals(){super.connect_signals(),this.connect(this.model.layout_provider.change,()=>{this.apply_coordinates(),this.edge_view.set_data(),this.node_view.set_data(),this.request_render()})}apply_coordinates(){const{edge_renderer:u,node_renderer:l}=this.model;if(!(u.glyph instanceof r.MultiLine||u.glyph instanceof i.Patches))throw new Error(`${this}.edge_renderer.glyph must be a MultiLine glyph`);if(!(l.glyph instanceof o.XYGlyph))throw new Error(`${this}.node_renderer.glyph must be a XYGlyph glyph`);const d=this.model.layout_provider.edge_coordinates,m=this.model.layout_provider.node_coordinates;u.glyph.properties.xs.internal=!0,u.glyph.properties.ys.internal=!0,l.glyph.properties.x.internal=!0,l.glyph.properties.y.internal=!0,u.glyph.xs={expr:d.x},u.glyph.ys={expr:d.y},l.glyph.x={expr:m.x},l.glyph.y={expr:m.y}}remove(){this.edge_view.remove(),this.node_view.remove(),super.remove()}_render(){this.edge_view.render(),this.node_view.render()}renderer_view(u){if(u instanceof g.GlyphRenderer){if(u==this.edge_view.model)return this.edge_view;if(u==this.node_view.model)return this.node_view}return super.renderer_view(u)}}e.GraphRendererView=t,t.__name__="GraphRendererView";class s extends w.DataRenderer{constructor(u){super(u)}get_selection_manager(){return this.node_renderer.data_source.selection_manager}}e.GraphRenderer=s,v=s,s.__name__="GraphRenderer",v.prototype.default_view=t,v.define(({Ref:a})=>({layout_provider:[a(p.LayoutProvider)],node_renderer:[a(g.GlyphRenderer)],edge_renderer:[a(g.GlyphRenderer)],selection_policy:[a(T.GraphHitTestPolicy),()=>new T.NodesOnly],inspection_policy:[a(T.GraphHitTestPolicy),()=>new T.NodesOnly]}))},function(Q,O,e,C,R){C(),(0,Q(1).__exportStar)(Q(74),e),R("Selection",Q(72).Selection)},function(Q,O,e,C,R){C(),R("ServerSentDataSource",Q(342).ServerSentDataSource),R("AjaxDataSource",Q(344).AjaxDataSource),R("ColumnDataSource",Q(75).ColumnDataSource),R("ColumnarDataSource",Q(70).ColumnarDataSource),R("CDSView",Q(190).CDSView),R("DataSource",Q(71).DataSource),R("GeoJSONDataSource",Q(345).GeoJSONDataSource),R("WebDataSource",Q(343).WebDataSource)},function(Q,O,e,C,R){C();const v=Q(343);class w extends v.WebDataSource{constructor(p){super(p),this.initialized=!1}setup(){this.initialized||(this.initialized=!0,new EventSource(this.data_url).onmessage=p=>{var T;this.load_data(JSON.parse(p.data),this.mode,(T=this.max_size)!==null&&T!==void 0?T:void 0)})}}e.ServerSentDataSource=w,w.__name__="ServerSentDataSource"},function(Q,O,e,C,R){var v;C();const w=Q(75),g=Q(20);class p extends w.ColumnDataSource{constructor(c){super(c)}get_column(c){const o=this.data[c];return o??[]}get_length(){var c;return(c=super.get_length())!==null&&c!==void 0?c:0}initialize(){super.initialize(),this.setup()}load_data(c,o,r){const{adapter:i}=this;let t;switch(t=i!=null?i.execute(this,{response:c}):c,o){case"replace":this.data=t;break;case"append":{const s=this.data;for(const a of this.columns()){const u=Array.from(s[a]),l=Array.from(t[a]),d=u.concat(l);t[a]=r!=null?d.slice(-r):d}this.data=t;break}}}}e.WebDataSource=p,v=p,p.__name__="WebDataSource",v.define(({Any:T,Int:c,String:o,Nullable:r})=>({max_size:[r(c),null],mode:[g.UpdateMode,"replace"],adapter:[r(T),null],data_url:[o]}))},function(Q,O,e,C,R){var v;C();const w=Q(343),g=Q(20),p=Q(19),T=Q(13);class c extends w.WebDataSource{constructor(r){super(r),this.interval=null,this.initialized=!1}destroy(){this.interval!=null&&clearInterval(this.interval),super.destroy()}setup(){if(!this.initialized&&(this.initialized=!0,this.get_data(this.mode),this.polling_interval!=null)){const r=()=>this.get_data(this.mode,this.max_size,this.if_modified);this.interval=setInterval(r,this.polling_interval)}}get_data(r,i=null,t=!1){const s=this.prepare_request();s.addEventListener("load",()=>this.do_load(s,r,i??void 0)),s.addEventListener("error",()=>this.do_error(s)),s.send()}prepare_request(){const r=new XMLHttpRequest;r.open(this.method,this.data_url,!0),r.withCredentials=!1,r.setRequestHeader("Content-Type",this.content_type);const i=this.http_headers;for(const[t,s]of(0,T.entries)(i))r.setRequestHeader(t,s);return r}do_load(r,i,t){if(r.status===200){const s=JSON.parse(r.responseText);this.load_data(s,i,t)}}do_error(r){p.logger.error(`Failed to fetch JSON from ${this.data_url} with code ${r.status}`)}}e.AjaxDataSource=c,v=c,c.__name__="AjaxDataSource",v.define(({Boolean:o,Int:r,String:i,Dict:t,Nullable:s})=>({polling_interval:[s(r),null],content_type:[i,"application/json"],http_headers:[t(i),{}],method:[g.HTTPMethod,"POST"],if_modified:[o,!1]}))},function(Q,O,e,C,R){var v;C();const w=Q(70),g=Q(19),p=Q(9),T=Q(13);function c(i){return i??NaN}const{hasOwnProperty:o}=Object.prototype;class r extends w.ColumnarDataSource{constructor(t){super(t)}initialize(){super.initialize(),this._update_data()}connect_signals(){super.connect_signals(),this.connect(this.properties.geojson.change,()=>this._update_data())}_update_data(){this.data=this.geojson_to_column_data()}_get_new_list_array(t){return(0,p.range)(0,t).map(s=>[])}_get_new_nan_array(t){return(0,p.range)(0,t).map(s=>NaN)}_add_properties(t,s,a,u){var l;const d=(l=t.properties)!==null&&l!==void 0?l:{};for(const[m,f]of(0,T.entries)(d))o.call(s,m)||(s[m]=this._get_new_nan_array(u)),s[m][a]=c(f)}_add_geometry(t,s,a){function u(l,d){return l.concat([[NaN,NaN,NaN]]).concat(d)}switch(t.type){case"Point":{const[l,d,m]=t.coordinates;s.x[a]=l,s.y[a]=d,s.z[a]=c(m);break}case"LineString":{const{coordinates:l}=t;for(let d=0;d<l.length;d++){const[m,f,b]=l[d];s.xs[a][d]=m,s.ys[a][d]=f,s.zs[a][d]=c(b)}break}case"Polygon":{t.coordinates.length>1&&g.logger.warn("Bokeh does not support Polygons with holes in, only exterior ring used.");const l=t.coordinates[0];for(let d=0;d<l.length;d++){const[m,f,b]=l[d];s.xs[a][d]=m,s.ys[a][d]=f,s.zs[a][d]=c(b)}break}case"MultiPoint":g.logger.warn("MultiPoint not supported in Bokeh");break;case"MultiLineString":{const l=t.coordinates.reduce(u);for(let d=0;d<l.length;d++){const[m,f,b]=l[d];s.xs[a][d]=m,s.ys[a][d]=f,s.zs[a][d]=c(b)}break}case"MultiPolygon":{const l=[];for(const m of t.coordinates)m.length>1&&g.logger.warn("Bokeh does not support Polygons with holes in, only exterior ring used."),l.push(m[0]);const d=l.reduce(u);for(let m=0;m<d.length;m++){const[f,b,y]=d[m];s.xs[a][m]=f,s.ys[a][m]=b,s.zs[a][m]=c(y)}break}default:throw new Error(`Invalid GeoJSON geometry type: ${t.type}`)}}geojson_to_column_data(){const t=JSON.parse(this.geojson);let s;switch(t.type){case"GeometryCollection":if(t.geometries==null)throw new Error("No geometries found in GeometryCollection");if(t.geometries.length===0)throw new Error("geojson.geometries must have one or more items");s=t.geometries;break;case"FeatureCollection":if(t.features==null)throw new Error("No features found in FeaturesCollection");if(t.features.length==0)throw new Error("geojson.features must have one or more items");s=t.features;break;default:throw new Error("Bokeh only supports type GeometryCollection and FeatureCollection at top level")}let a=0;for(const d of s){const m=d.type==="Feature"?d.geometry:d;m.type=="GeometryCollection"?a+=m.geometries.length:a+=1}const u={x:this._get_new_nan_array(a),y:this._get_new_nan_array(a),z:this._get_new_nan_array(a),xs:this._get_new_list_array(a),ys:this._get_new_list_array(a),zs:this._get_new_list_array(a)};let l=0;for(const d of s){const m=d.type=="Feature"?d.geometry:d;if(m.type=="GeometryCollection")for(const f of m.geometries)this._add_geometry(f,u,l),d.type==="Feature"&&this._add_properties(d,u,l,a),l+=1;else this._add_geometry(m,u,l),d.type==="Feature"&&this._add_properties(d,u,l,a),l+=1}return u}}e.GeoJSONDataSource=r,v=r,r.__name__="GeoJSONDataSource",v.define(({String:i})=>({geojson:[i]})),v.internal(({Dict:i,Arrayable:t})=>({data:[i(t),{}]}))},function(Q,O,e,C,R){C(),R("BBoxTileSource",Q(347).BBoxTileSource),R("MercatorTileSource",Q(348).MercatorTileSource),R("QUADKEYTileSource",Q(351).QUADKEYTileSource),R("TileRenderer",Q(352).TileRenderer),R("TileSource",Q(349).TileSource),R("TMSTileSource",Q(355).TMSTileSource),R("WMTSTileSource",Q(353).WMTSTileSource)},function(Q,O,e,C,R){var v;C();const w=Q(348);class g extends w.MercatorTileSource{constructor(T){super(T)}get_image_url(T,c,o){const r=this.string_lookup_replace(this.url,this.extra_url_vars);let i,t,s,a;return this.use_latlon?[t,a,i,s]=this.get_tile_geographic_bounds(T,c,o):[t,a,i,s]=this.get_tile_meter_bounds(T,c,o),r.replace("{XMIN}",t.toString()).replace("{YMIN}",a.toString()).replace("{XMAX}",i.toString()).replace("{YMAX}",s.toString())}}e.BBoxTileSource=g,v=g,g.__name__="BBoxTileSource",v.define(({Boolean:p})=>({use_latlon:[p,!1]}))},function(V,Q,O,e,C){var R;e();const v=V(349),w=V(9),g=V(350);class p extends v.TileSource{constructor(c){super(c)}initialize(){super.initialize(),this._resolutions=(0,w.range)(this.min_zoom,this.max_zoom+1).map(c=>this.get_resolution(c))}_computed_initial_resolution(){return this.initial_resolution!=null?this.initial_resolution:2*Math.PI*6378137/this.tile_size}is_valid_tile(c,o,r){return!(!this.wrap_around&&(c<0||c>=2**r))&&!(o<0||o>=2**r)}parent_by_tile_xyz(c,o,r){const i=this.tile_xyz_to_quadkey(c,o,r),t=i.substring(0,i.length-1);return this.quadkey_to_tile_xyz(t)}get_resolution(c){return this._computed_initial_resolution()/2**c}get_resolution_by_extent(c,o,r){return[(c[2]-c[0])/r,(c[3]-c[1])/o]}get_level_by_extent(c,o,r){const i=(c[2]-c[0])/r,t=(c[3]-c[1])/o,s=Math.max(i,t);let a=0;for(const u of this._resolutions){if(s>u){if(a==0)return 0;if(a>0)return a-1}a+=1}return a-1}get_closest_level_by_extent(c,o,r){const i=(c[2]-c[0])/r,t=(c[3]-c[1])/o,s=Math.max(i,t),a=this._resolutions.reduce(function(u,l){return Math.abs(l-s)<Math.abs(u-s)?l:u});return this._resolutions.indexOf(a)}snap_to_zoom_level(c,o,r,i){const[t,s,a,u]=c,l=this._resolutions[i];let d=r*l,m=o*l;if(!this.snap_to_zoom){const y=(a-t)/d,A=(u-s)/m;y>A?(d=a-t,m*=y):(d*=A,m=u-s)}const f=(d-(a-t))/2,b=(m-(u-s))/2;return[t-f,s-b,a+f,u+b]}tms_to_wmts(c,o,r){return[c,2**r-1-o,r]}wmts_to_tms(c,o,r){return[c,2**r-1-o,r]}pixels_to_meters(c,o,r){const i=this.get_resolution(r);return[c*i-this.x_origin_offset,o*i-this.y_origin_offset]}meters_to_pixels(c,o,r){const i=this.get_resolution(r);return[(c+this.x_origin_offset)/i,(o+this.y_origin_offset)/i]}pixels_to_tile(c,o){let r=Math.ceil(c/this.tile_size);return r=r===0?r:r-1,[r,Math.max(Math.ceil(o/this.tile_size)-1,0)]}pixels_to_raster(c,o,r){return[c,(this.tile_size<<r)-o]}meters_to_tile(c,o,r){const[i,t]=this.meters_to_pixels(c,o,r);return this.pixels_to_tile(i,t)}get_tile_meter_bounds(c,o,r){const[i,t]=this.pixels_to_meters(c*this.tile_size,o*this.tile_size,r),[s,a]=this.pixels_to_meters((c+1)*this.tile_size,(o+1)*this.tile_size,r);return[i,t,s,a]}get_tile_geographic_bounds(c,o,r){const i=this.get_tile_meter_bounds(c,o,r),[t,s,a,u]=(0,g.meters_extent_to_geographic)(i);return[t,s,a,u]}get_tiles_by_extent(c,o,r=1){const[i,t,s,a]=c;let[u,l]=this.meters_to_tile(i,t,o),[d,m]=this.meters_to_tile(s,a,o);u-=r,l-=r,d+=r,m+=r;const f=[];for(let b=m;b>=l;b--)for(let y=u;y<=d;y++)this.is_valid_tile(y,b,o)&&f.push([y,b,o,this.get_tile_meter_bounds(y,b,o)]);return this.sort_tiles_from_center(f,[u,l,d,m]),f}quadkey_to_tile_xyz(c){let o=0,r=0;const i=c.length;for(let t=i;t>0;t--){const s=1<<t-1;switch(c.charAt(i-t)){case"0":continue;case"1":o|=s;break;case"2":r|=s;break;case"3":o|=s,r|=s;break;default:throw new TypeError(`Invalid Quadkey: ${c}`)}}return[o,r,i]}tile_xyz_to_quadkey(c,o,r){let i="";for(let t=r;t>0;t--){const s=1<<t-1;let a=0;c&s&&(a+=1),o&s&&(a+=2),i+=a.toString()}return i}children_by_tile_xyz(c,o,r){const i=this.tile_xyz_to_quadkey(c,o,r),t=[];for(let s=0;s<=3;s++){const[a,u,l]=this.quadkey_to_tile_xyz(i+s.toString()),d=this.get_tile_meter_bounds(a,u,l);t.push([a,u,l,d])}return t}get_closest_parent_by_tile_xyz(c,o,r){const i=this.calculate_world_x_by_tile_xyz(c,o,r);[c,o,r]=this.normalize_xyz(c,o,r);let t=this.tile_xyz_to_quadkey(c,o,r);for(;t.length>0;)if(t=t.substring(0,t.length-1),[c,o,r]=this.quadkey_to_tile_xyz(t),[c,o,r]=this.denormalize_xyz(c,o,r,i),this.tiles.has(this.tile_xyz_to_key(c,o,r)))return[c,o,r];return[0,0,0]}normalize_xyz(c,o,r){if(this.wrap_around){const i=2**r;return[(c%i+i)%i,o,r]}return[c,o,r]}denormalize_xyz(c,o,r,i){return[c+i*2**r,o,r]}denormalize_meters(c,o,r,i){return[c+2*i*Math.PI*6378137,o]}calculate_world_x_by_tile_xyz(c,o,r){return Math.floor(c/2**r)}}O.MercatorTileSource=p,R=p,p.__name__="MercatorTileSource",R.define(({Boolean:T})=>({snap_to_zoom:[T,!1],wrap_around:[T,!0]})),R.override({x_origin_offset:2003750834e-2,y_origin_offset:2003750834e-2,initial_resolution:156543.03392804097})},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(13);class p extends w.Model{constructor(c){super(c)}initialize(){super.initialize(),this.tiles=new Map,this._normalize_case()}connect_signals(){super.connect_signals(),this.connect(this.change,()=>this._clear_cache())}string_lookup_replace(c,o){let r=c;for(const[i,t]of(0,g.entries)(o))r=r.replace(`{${i}}`,t);return r}_normalize_case(){const c=this.url.replace("{x}","{X}").replace("{y}","{Y}").replace("{z}","{Z}").replace("{q}","{Q}").replace("{xmin}","{XMIN}").replace("{ymin}","{YMIN}").replace("{xmax}","{XMAX}").replace("{ymax}","{YMAX}");this.url=c}_clear_cache(){this.tiles=new Map}tile_xyz_to_key(c,o,r){return`${c}:${o}:${r}`}key_to_tile_xyz(c){const[o,r,i]=c.split(":").map(t=>parseInt(t));return[o,r,i]}sort_tiles_from_center(c,o){const[r,i,t,s]=o,a=(t-r)/2+r,u=(s-i)/2+i;c.sort(function(l,d){return Math.sqrt((a-l[0])**2+(u-l[1])**2)-Math.sqrt((a-d[0])**2+(u-d[1])**2)})}get_image_url(c,o,r){return this.string_lookup_replace(this.url,this.extra_url_vars).replace("{X}",c.toString()).replace("{Y}",o.toString()).replace("{Z}",r.toString())}}e.TileSource=p,v=p,p.__name__="TileSource",v.define(({Number:T,String:c,Dict:o,Nullable:r})=>({url:[c,""],tile_size:[T,256],max_zoom:[T,30],min_zoom:[T,0],extra_url_vars:[o(c),{}],attribution:[c,""],x_origin_offset:[T],y_origin_offset:[T],initial_resolution:[r(T),null]}))},function(Q,O,e,C,R){C();const v=Q(78);function w(p,T){return v.wgs84_mercator.compute(p,T)}function g(p,T){return v.wgs84_mercator.invert(p,T)}e.geographic_to_meters=w,e.meters_to_geographic=g,e.geographic_extent_to_meters=function(p){const[T,c,o,r]=p,[i,t]=w(T,c),[s,a]=w(o,r);return[i,t,s,a]},e.meters_extent_to_geographic=function(p){const[T,c,o,r]=p,[i,t]=g(T,c),[s,a]=g(o,r);return[i,t,s,a]}},function(V,Q,O,e,C){e();const R=V(348);class v extends R.MercatorTileSource{constructor(g){super(g)}get_image_url(g,p,T){const c=this.string_lookup_replace(this.url,this.extra_url_vars),[o,r,i]=this.tms_to_wmts(g,p,T),t=this.tile_xyz_to_quadkey(o,r,i);return c.replace("{Q}",t)}}O.QUADKEYTileSource=v,v.__name__="QUADKEYTileSource"},function(V,Q,O,e,C){e();const R=V(1);var v;const w=V(349),g=V(353),p=V(41),T=V(58),c=V(43),o=V(136),r=V(9),i=V(8),t=(0,R.__importStar)(V(354));class s extends p.RendererView{initialize(){this._tiles=[],super.initialize()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.request_render()),this.connect(this.model.tile_source.change,()=>this.request_render())}remove(){this.attribution_el!=null&&(0,c.removeElement)(this.attribution_el),super.remove()}styles(){return[...super.styles(),t.default]}get_extent(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]}get map_plot(){return this.plot_model}get map_canvas(){return this.layer.ctx}get map_frame(){return this.plot_view.frame}get x_range(){return this.map_plot.x_range}get y_range(){return this.map_plot.y_range}_set_data(){this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0}_update_attribution(){this.attribution_el!=null&&(0,c.removeElement)(this.attribution_el);const{attribution:l}=this.model.tile_source;if((0,i.isString)(l)&&l.length>0){const{layout:d,frame:m}=this.plot_view,f=d.bbox.width-m.bbox.right,b=d.bbox.height-m.bbox.bottom,y=m.bbox.width;this.attribution_el=(0,c.div)({class:t.tile_attribution,style:{position:"absolute",right:`${f}px`,bottom:`${b}px`,"max-width":y-4+"px",padding:"2px","background-color":"rgba(255,255,255,0.5)","font-size":"9px","line-height":"1.05","white-space":"nowrap",overflow:"hidden","text-overflow":"ellipsis"}}),this.plot_view.canvas_view.add_event(this.attribution_el),this.attribution_el.innerHTML=l,this.attribution_el.title=this.attribution_el.textContent.replace(/\s*\n\s*/g," ")}}_map_data(){this.initial_extent=this.get_extent();const l=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width),d=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width,l);this.x_range.start=d[0],this.y_range.start=d[1],this.x_range.end=d[2],this.y_range.end=d[3],this.x_range instanceof T.Range1d&&(this.x_range.reset_start=d[0],this.x_range.reset_end=d[2]),this.y_range instanceof T.Range1d&&(this.y_range.reset_start=d[1],this.y_range.reset_end=d[3]),this._update_attribution()}_create_tile(l,d,m,f,b=!1){const y=this.model.tile_source.tile_xyz_to_quadkey(l,d,m),A=this.model.tile_source.tile_xyz_to_key(l,d,m);if(this.model.tile_source.tiles.has(A))return;const[L,x,H]=this.model.tile_source.normalize_xyz(l,d,m),S=this.model.tile_source.get_image_url(L,x,H),k={img:void 0,tile_coords:[l,d,m],normalized_coords:[L,x,H],quadkey:y,cache_key:A,bounds:f,loaded:!1,finished:!1,x_coord:f[0],y_coord:f[3]};this.model.tile_source.tiles.set(A,k),this._tiles.push(k),new o.ImageLoader(S,{loaded:E=>{Object.assign(k,{img:E,loaded:!0}),b?(k.finished=!0,this.notify_finished()):this.request_render()},failed(){k.finished=!0}})}_enforce_aspect_ratio(){if(this._last_height!==this.map_frame.bbox.height||this._last_width!==this.map_frame.bbox.width){const l=this.get_extent(),d=this.model.tile_source.get_level_by_extent(l,this.map_frame.bbox.height,this.map_frame.bbox.width),m=this.model.tile_source.snap_to_zoom_level(l,this.map_frame.bbox.height,this.map_frame.bbox.width,d);this.x_range.setv({start:m[0],end:m[2]}),this.y_range.setv({start:m[1],end:m[3]}),this.extent=m,this._last_height=this.map_frame.bbox.height,this._last_width=this.map_frame.bbox.width}}has_finished(){if(!super.has_finished()||this._tiles.length==0)return!1;for(const l of this._tiles)if(!l.finished)return!1;return!0}_render(){this.map_initialized==null&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),this.prefetch_timer!=null&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()}_draw_tile(l){const d=this.model.tile_source.tiles.get(l);if(d!=null&&d.loaded){const[[m],[f]]=this.coordinates.map_to_screen([d.bounds[0]],[d.bounds[3]]),[[b],[y]]=this.coordinates.map_to_screen([d.bounds[2]],[d.bounds[1]]),A=b-m,L=y-f,x=m,H=f,S=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(d.img,x,H,A,L),this.map_canvas.setImageSmoothingEnabled(S),d.finished=!0}}_set_rect(){const l=this.plot_model.outline_line_width,d=this.map_frame.bbox.left+l/2,m=this.map_frame.bbox.top+l/2,f=this.map_frame.bbox.width-l,b=this.map_frame.bbox.height-l;this.map_canvas.rect(d,m,f,b),this.map_canvas.clip()}_render_tiles(l){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(const d of l)this._draw_tile(d);this.map_canvas.restore()}_prefetch_tiles(){const{tile_source:l}=this.model,d=this.get_extent(),m=this.map_frame.bbox.height,f=this.map_frame.bbox.width,b=this.model.tile_source.get_level_by_extent(d,m,f),y=this.model.tile_source.get_tiles_by_extent(d,b);for(let A=0,L=Math.min(10,y.length);A<L;A++){const[x,H,S]=y[A],k=this.model.tile_source.children_by_tile_xyz(x,H,S);for(const E of k){const[P,N,B,D]=E;l.tiles.has(l.tile_xyz_to_key(P,N,B))||this._create_tile(P,N,B,D,!0)}}}_fetch_tiles(l){for(const d of l){const[m,f,b,y]=d;this._create_tile(m,f,b,y)}}_update(){const{tile_source:l}=this.model,{min_zoom:d}=l,{max_zoom:m}=l;let f=this.get_extent();const b=this.extent[2]-this.extent[0]<f[2]-f[0],y=this.map_frame.bbox.height,A=this.map_frame.bbox.width;let L=l.get_level_by_extent(f,y,A),x=!1;L<d?(f=this.extent,L=d,x=!0):L>m&&(f=this.extent,L=m,x=!0),x&&(this.x_range.setv({start:f[0],end:f[2]}),this.y_range.setv({start:f[1],end:f[3]})),this.extent=f;const H=l.get_tiles_by_extent(f,L),S=[],k=[],E=[],P=[];for(const N of H){const[B,D,j]=N,M=l.tile_xyz_to_key(B,D,j),F=l.tiles.get(M);if(F!=null&&F.loaded)k.push(M);else if(this.model.render_parents){const[W,U,q]=l.get_closest_parent_by_tile_xyz(B,D,j),X=l.tile_xyz_to_key(W,U,q),ae=l.tiles.get(X);if(ae!=null&&ae.loaded&&!(0,r.includes)(E,X)&&E.push(X),b){const me=l.children_by_tile_xyz(B,D,j);for(const[Ve,Je,rt]of me){const yt=l.tile_xyz_to_key(Ve,Je,rt);l.tiles.has(yt)&&P.push(yt)}}}F==null&&S.push(N)}this._render_tiles(E),this._render_tiles(P),this._render_tiles(k),this.render_timer!=null&&clearTimeout(this.render_timer),this.render_timer=setTimeout(()=>this._fetch_tiles(S),65)}}O.TileRendererView=s,s.__name__="TileRendererView";class a extends p.Renderer{constructor(l){super(l)}}O.TileRenderer=a,v=a,a.__name__="TileRenderer",v.prototype.default_view=s,v.define(({Boolean:u,Number:l,Ref:d})=>({alpha:[l,1],smoothing:[u,!0],tile_source:[d(w.TileSource),()=>new g.WMTSTileSource],render_parents:[u,!0]})),v.override({level:"image"})},function(Q,O,e,C,R){C();const v=Q(348);class w extends v.MercatorTileSource{constructor(p){super(p)}get_image_url(p,T,c){const o=this.string_lookup_replace(this.url,this.extra_url_vars),[r,i,t]=this.tms_to_wmts(p,T,c);return o.replace("{X}",r.toString()).replace("{Y}",i.toString()).replace("{Z}",t.toString())}}e.WMTSTileSource=w,w.__name__="WMTSTileSource"},function(Q,O,e,C,R){C(),e.root="bk-root",e.tile_attribution="bk-tile-attribution",e.default=".bk-root .bk-tile-attribution a{color:black;}"},function(Q,O,e,C,R){C();const v=Q(348);class w extends v.MercatorTileSource{constructor(p){super(p)}get_image_url(p,T,c){return this.string_lookup_replace(this.url,this.extra_url_vars).replace("{X}",p.toString()).replace("{Y}",T.toString()).replace("{Z}",c.toString())}}e.TMSTileSource=w,w.__name__="TMSTileSource"},function(Q,O,e,C,R){C(),R("CanvasTexture",Q(357).CanvasTexture),R("ImageURLTexture",Q(359).ImageURLTexture),R("Texture",Q(358).Texture)},function(Q,O,e,C,R){var v;C();const w=Q(358),g=Q(34);class p extends w.Texture{constructor(c){super(c)}get func(){const c=(0,g.use_strict)(this.code);return new Function("ctx","color","scale","weight",c)}get_pattern(c,o,r){const i=document.createElement("canvas");i.width=o,i.height=o;const t=i.getContext("2d");return this.func.call(this,t,c,o,r),i}}e.CanvasTexture=p,v=p,p.__name__="CanvasTexture",v.define(({String:T})=>({code:[T]}))},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(20);class p extends w.Model{constructor(c){super(c)}}e.Texture=p,v=p,p.__name__="Texture",v.define(()=>({repetition:[g.TextureRepetition,"repeat"]}))},function(Q,O,e,C,R){var v;C();const w=Q(358),g=Q(136);class p extends w.Texture{constructor(c){super(c)}initialize(){super.initialize(),this._loader=new g.ImageLoader(this.url)}get_pattern(c,o,r){const{_loader:i}=this;return this._loader.finished?i.image:i.promise}}e.ImageURLTexture=p,v=p,p.__name__="ImageURLTexture",v.define(({String:T})=>({url:[T]}))},function(Q,O,e,C,R){C(),R("ActionTool",Q(238).ActionTool),R("CustomAction",Q(361).CustomAction),R("HelpTool",Q(239).HelpTool),R("RedoTool",Q(362).RedoTool),R("ResetTool",Q(363).ResetTool),R("SaveTool",Q(364).SaveTool),R("UndoTool",Q(365).UndoTool),R("ZoomInTool",Q(366).ZoomInTool),R("ZoomOutTool",Q(369).ZoomOutTool),R("ButtonTool",Q(224).ButtonTool),R("EditTool",Q(370).EditTool),R("BoxEditTool",Q(371).BoxEditTool),R("FreehandDrawTool",Q(372).FreehandDrawTool),R("PointDrawTool",Q(373).PointDrawTool),R("PolyDrawTool",Q(374).PolyDrawTool),R("PolyTool",Q(375).PolyTool),R("PolyEditTool",Q(376).PolyEditTool),R("BoxSelectTool",Q(377).BoxSelectTool),R("BoxZoomTool",Q(379).BoxZoomTool),R("GestureTool",Q(223).GestureTool),R("LassoSelectTool",Q(380).LassoSelectTool),R("LineEditTool",Q(382).LineEditTool),R("PanTool",Q(384).PanTool),R("PolySelectTool",Q(381).PolySelectTool),R("RangeTool",Q(385).RangeTool),R("SelectTool",Q(378).SelectTool),R("TapTool",Q(386).TapTool),R("WheelPanTool",Q(387).WheelPanTool),R("WheelZoomTool",Q(388).WheelZoomTool),R("CrosshairTool",Q(389).CrosshairTool),R("CustomJSHover",Q(390).CustomJSHover),R("HoverTool",Q(391).HoverTool),R("InspectTool",Q(232).InspectTool),R("Tool",Q(222).Tool),R("ToolProxy",Q(394).ToolProxy),R("Toolbar",Q(221).Toolbar),R("ToolbarBase",Q(233).ToolbarBase),R("ProxyToolbar",Q(395).ProxyToolbar),R("ToolbarBox",Q(395).ToolbarBox)},function(Q,O,e,C,R){var v;C();const w=Q(238);class g extends w.ActionToolButtonView{css_classes(){return super.css_classes().concat("bk-toolbar-button-custom-action")}}e.CustomActionButtonView=g,g.__name__="CustomActionButtonView";class p extends w.ActionToolView{doit(){var o;(o=this.model.callback)===null||o===void 0||o.execute(this.model)}}e.CustomActionView=p,p.__name__="CustomActionView";class T extends w.ActionTool{constructor(o){super(o),this.tool_name="Custom Action",this.button_view=g}}e.CustomAction=T,v=T,T.__name__="CustomAction",v.prototype.default_view=p,v.define(({Any:c,String:o,Nullable:r})=>({callback:[r(c)],icon:[o]})),v.override({description:"Perform a Custom Action"})},function(Q,O,e,C,R){var v;C();const w=Q(238),g=Q(228);class p extends w.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,()=>this.model.disabled=!this.plot_view.state.can_redo)}doit(){const o=this.plot_view.state.redo();(o==null?void 0:o.range)!=null&&this.plot_view.trigger_ranges_update_event()}}e.RedoToolView=p,p.__name__="RedoToolView";class T extends w.ActionTool{constructor(o){super(o),this.tool_name="Redo",this.icon=g.tool_icon_redo}}e.RedoTool=T,v=T,T.__name__="RedoTool",v.prototype.default_view=p,v.override({disabled:!0}),v.register_alias("redo",()=>new T)},function(Q,O,e,C,R){var v;C();const w=Q(238),g=Q(228);class p extends w.ActionToolView{doit(){this.plot_view.reset()}}e.ResetToolView=p,p.__name__="ResetToolView";class T extends w.ActionTool{constructor(o){super(o),this.tool_name="Reset",this.icon=g.tool_icon_reset}}e.ResetTool=T,v=T,T.__name__="ResetTool",v.prototype.default_view=p,v.register_alias("reset",()=>new T)},function(Q,O,e,C,R){var v;C();const w=Q(238),g=Q(228);class p extends w.ActionToolView{async copy(){const o=await this.plot_view.to_blob(),r=new ClipboardItem({[o.type]:Promise.resolve(o)});await navigator.clipboard.write([r])}async save(o){const r=await this.plot_view.to_blob(),i=document.createElement("a");i.href=URL.createObjectURL(r),i.download=o,i.target="_blank",i.dispatchEvent(new MouseEvent("click"))}doit(o="save"){switch(o){case"save":this.save("bokeh_plot");break;case"copy":this.copy()}}}e.SaveToolView=p,p.__name__="SaveToolView";class T extends w.ActionTool{constructor(o){super(o),this.tool_name="Save",this.icon=g.tool_icon_save}get menu(){return[{icon:"bk-tool-icon-copy-to-clipboard",tooltip:"Copy image to clipboard",if:()=>typeof ClipboardItem<"u",handler:()=>{this.do.emit("copy")}}]}}e.SaveTool=T,v=T,T.__name__="SaveTool",v.prototype.default_view=p,v.register_alias("save",()=>new T)},function(Q,O,e,C,R){var v;C();const w=Q(238),g=Q(228);class p extends w.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,()=>this.model.disabled=!this.plot_view.state.can_undo)}doit(){const o=this.plot_view.state.undo();(o==null?void 0:o.range)!=null&&this.plot_view.trigger_ranges_update_event()}}e.UndoToolView=p,p.__name__="UndoToolView";class T extends w.ActionTool{constructor(o){super(o),this.tool_name="Undo",this.icon=g.tool_icon_undo}}e.UndoTool=T,v=T,T.__name__="UndoTool",v.prototype.default_view=p,v.override({disabled:!0}),v.register_alias("undo",()=>new T)},function(Q,O,e,C,R){var v;C();const w=Q(367),g=Q(228);class p extends w.ZoomBaseToolView{}e.ZoomInToolView=p,p.__name__="ZoomInToolView";class T extends w.ZoomBaseTool{constructor(o){super(o),this.sign=1,this.tool_name="Zoom In",this.icon=g.tool_icon_zoom_in}}e.ZoomInTool=T,v=T,T.__name__="ZoomInTool",v.prototype.default_view=p,v.register_alias("zoom_in",()=>new T({dimensions:"both"})),v.register_alias("xzoom_in",()=>new T({dimensions:"width"})),v.register_alias("yzoom_in",()=>new T({dimensions:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(238),g=Q(20),p=Q(368);class T extends w.ActionToolView{doit(){var r;const i=this.plot_view.frame,t=this.model.dimensions,s=t=="width"||t=="both",a=t=="height"||t=="both",u=(0,p.scale_range)(i,this.model.sign*this.model.factor,s,a);this.plot_view.state.push("zoom_out",{range:u}),this.plot_view.update_range(u,{scrolling:!0,maintain_focus:this.model.maintain_focus}),(r=this.model.document)===null||r===void 0||r.interactive_start(this.plot_model),this.plot_view.trigger_ranges_update_event()}}e.ZoomBaseToolView=T,T.__name__="ZoomBaseToolView";class c extends w.ActionTool{constructor(r){super(r),this.maintain_focus=!0}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.ZoomBaseTool=c,v=c,c.__name__="ZoomBaseTool",v.define(({Percent:o})=>({factor:[o,.1],dimensions:[g.Dimensions,"both"]}))},function(Q,O,e,C,R){C();const v=Q(10);function w(p,T,c){const[o,r]=[p.start,p.end],i=c??(r+o)/2;return[o-(o-i)*T,r-(r-i)*T]}function g(p,[T,c]){const o=new Map;for(const[r,i]of p){const[t,s]=i.r_invert(T,c);o.set(r,{start:t,end:s})}return o}e.scale_highlow=w,e.get_info=g,e.scale_range=function(p,T,c=!0,o=!0,r){T=(0,v.clamp)(T,-.9,.9);const i=c?T:0,[t,s]=w(p.bbox.h_range,i,r!=null?r.x:void 0),a=g(p.x_scales,[t,s]),u=o?T:0,[l,d]=w(p.bbox.v_range,u,r!=null?r.y:void 0);return{xrs:a,yrs:g(p.y_scales,[l,d]),factor:T}}},function(Q,O,e,C,R){var v;C();const w=Q(367),g=Q(228);class p extends w.ZoomBaseToolView{}e.ZoomOutToolView=p,p.__name__="ZoomOutToolView";class T extends w.ZoomBaseTool{constructor(o){super(o),this.sign=-1,this.tool_name="Zoom Out",this.icon=g.tool_icon_zoom_out}}e.ZoomOutTool=T,v=T,T.__name__="ZoomOutTool",v.prototype.default_view=p,v.define(({Boolean:c})=>({maintain_focus:[c,!0]})),v.register_alias("zoom_out",()=>new T({dimensions:"both"})),v.register_alias("xzoom_out",()=>new T({dimensions:"width"})),v.register_alias("yzoom_out",()=>new T({dimensions:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(9),g=Q(8),p=Q(11),T=Q(175),c=Q(223);class o extends c.GestureToolView{constructor(){super(...arguments),this._mouse_in_frame=!0}_select_mode(t){const{shiftKey:s,ctrlKey:a}=t;return s||a?s&&!a?"append":!s&&a?"intersect":s&&a?"subtract":void(0,p.unreachable)():"replace"}_move_enter(t){this._mouse_in_frame=!0}_move_exit(t){this._mouse_in_frame=!1}_map_drag(t,s,a){if(!this.plot_view.frame.bbox.contains(t,s))return null;const u=this.plot_view.renderer_view(a);return u==null?null:[u.coordinates.x_scale.invert(t),u.coordinates.y_scale.invert(s)]}_delete_selected(t){const s=t.data_source,a=s.selected.indices;a.sort();for(const u of s.columns()){const l=s.get_array(u);for(let d=0;d<a.length;d++){const m=a[d];l.splice(m-d,1)}}this._emit_cds_changes(s)}_pop_glyphs(t,s){const a=t.columns();if(s&&a.length)for(const u of a){let l=t.get_array(u);const d=l.length-s+1;d<1||((0,g.isArray)(l)||(l=Array.from(l),t.data[u]=l),l.splice(0,d))}}_emit_cds_changes(t,s=!0,a=!0,u=!0){a&&t.selection_manager.clear(),s&&t.change.emit(),u&&(t.data=t.data,t.properties.data.change.emit())}_drag_points(t,s,a="both"){if(this._basepoint==null)return;const[u,l]=this._basepoint;for(const d of s){const m=this._map_drag(u,l,d),f=this._map_drag(t.sx,t.sy,d);if(f==null||m==null)continue;const[b,y]=f,[A,L]=m,[x,H]=[b-A,y-L],S=d.glyph,k=d.data_source,[E,P]=[S.x.field,S.y.field];for(const N of k.selected.indices)!E||a!="width"&&a!="both"||(k.data[E][N]+=x),!P||a!="height"&&a!="both"||(k.data[P][N]+=H);k.change.emit()}this._basepoint=[t.sx,t.sy]}_pad_empty_columns(t,s){for(const a of t.columns())(0,w.includes)(s,a)||t.get_array(a).push(this.model.empty_value)}_select_event(t,s,a){const u=this.plot_view.frame,{sx:l,sy:d}=t;if(!u.bbox.contains(l,d))return[];const m={type:"point",sx:l,sy:d},f=[];for(const b of a){const y=b.get_selection_manager(),A=b.data_source,L=this.plot_view.renderer_view(b);L!=null&&(y.select([L],m,!0,s)&&f.push(b),A.properties.selected.change.emit())}return f}}e.EditToolView=o,o.__name__="EditToolView";class r extends c.GestureTool{constructor(t){super(t)}get computed_icon(){var t;return(t=this.custom_icon)!==null&&t!==void 0?t:this.icon}}e.EditTool=r,v=r,r.__name__="EditTool",v.define(({Unknown:i,String:t,Array:s,Ref:a,Nullable:u})=>({custom_icon:[u(t),null],empty_value:[i],renderers:[s(a(T.GlyphRenderer)),[]]}))},function(V,Q,O,e,C){var R;e();const v=V(43),w=V(20),g=V(370),p=V(228);class T extends g.EditToolView{_tap(r){this._draw_basepoint==null&&this._basepoint==null&&this._select_event(r,this._select_mode(r),this.model.renderers)}_keyup(r){if(this.model.active&&this._mouse_in_frame)for(const i of this.model.renderers)r.keyCode===v.Keys.Backspace?this._delete_selected(i):r.keyCode==v.Keys.Esc&&i.data_source.selection_manager.clear()}_set_extent([r,i],[t,s],a,u=!1){const l=this.model.renderers[0],d=this.plot_view.renderer_view(l);if(d==null)return;const m=l.glyph,f=l.data_source,[b,y]=d.coordinates.x_scale.r_invert(r,i),[A,L]=d.coordinates.y_scale.r_invert(t,s),[x,H]=[(b+y)/2,(A+L)/2],[S,k]=[y-b,L-A],[E,P]=[m.x.field,m.y.field],[N,B]=[m.width.field,m.height.field];if(a)this._pop_glyphs(f,this.model.num_objects),E&&f.get_array(E).push(x),P&&f.get_array(P).push(H),N&&f.get_array(N).push(S),B&&f.get_array(B).push(k),this._pad_empty_columns(f,[E,P,N,B]);else{const D=f.data[E].length-1;E&&(f.data[E][D]=x),P&&(f.data[P][D]=H),N&&(f.data[N][D]=S),B&&(f.data[B][D]=k)}this._emit_cds_changes(f,!0,!1,u)}_update_box(r,i=!1,t=!1){if(this._draw_basepoint==null)return;const s=[r.sx,r.sy],a=this.plot_view.frame,u=this.model.dimensions,l=this.model._get_dim_limits(this._draw_basepoint,s,a,u);if(l!=null){const[d,m]=l;this._set_extent(d,m,i,t)}}_doubletap(r){this.model.active&&(this._draw_basepoint!=null?(this._update_box(r,!1,!0),this._draw_basepoint=null):(this._draw_basepoint=[r.sx,r.sy],this._select_event(r,"append",this.model.renderers),this._update_box(r,!0,!1)))}_move(r){this._update_box(r,!1,!1)}_pan_start(r){if(r.shiftKey){if(this._draw_basepoint!=null)return;this._draw_basepoint=[r.sx,r.sy],this._update_box(r,!0,!1)}else{if(this._basepoint!=null)return;this._select_event(r,"append",this.model.renderers),this._basepoint=[r.sx,r.sy]}}_pan(r,i=!1,t=!1){if(r.shiftKey){if(this._draw_basepoint==null)return;this._update_box(r,i,t)}else{if(this._basepoint==null)return;this._drag_points(r,this.model.renderers)}}_pan_end(r){if(this._pan(r,!1,!0),r.shiftKey)this._draw_basepoint=null;else{this._basepoint=null;for(const i of this.model.renderers)this._emit_cds_changes(i.data_source,!1,!0,!0)}}}O.BoxEditToolView=T,T.__name__="BoxEditToolView";class c extends g.EditTool{constructor(r){super(r),this.tool_name="Box Edit Tool",this.icon=p.tool_icon_box_edit,this.event_type=["tap","pan","move"],this.default_order=1}}O.BoxEditTool=c,R=c,c.__name__="BoxEditTool",R.prototype.default_view=T,R.define(({Int:o})=>({dimensions:[w.Dimensions,"both"],num_objects:[o,0]}))},function(Q,O,e,C,R){var v;C();const w=Q(43),g=Q(8),p=Q(370),T=Q(228);class c extends p.EditToolView{_draw(i,t,s=!1){if(!this.model.active)return;const a=this.model.renderers[0],u=this._map_drag(i.sx,i.sy,a);if(u==null)return;const[l,d]=u,m=a.data_source,f=a.glyph,[b,y]=[f.xs.field,f.ys.field];if(t=="new")this._pop_glyphs(m,this.model.num_objects),b&&m.get_array(b).push([l]),y&&m.get_array(y).push([d]),this._pad_empty_columns(m,[b,y]);else if(t=="add"){if(b){const A=m.data[b].length-1;let L=m.get_array(b)[A];(0,g.isArray)(L)||(L=Array.from(L),m.data[b][A]=L),L.push(l)}if(y){const A=m.data[y].length-1;let L=m.get_array(y)[A];(0,g.isArray)(L)||(L=Array.from(L),m.data[y][A]=L),L.push(d)}}this._emit_cds_changes(m,!0,!0,s)}_pan_start(i){this._draw(i,"new")}_pan(i){this._draw(i,"add")}_pan_end(i){this._draw(i,"add",!0)}_tap(i){this._select_event(i,this._select_mode(i),this.model.renderers)}_keyup(i){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)i.keyCode===w.Keys.Esc?t.data_source.selection_manager.clear():i.keyCode===w.Keys.Backspace&&this._delete_selected(t)}}e.FreehandDrawToolView=c,c.__name__="FreehandDrawToolView";class o extends p.EditTool{constructor(i){super(i),this.tool_name="Freehand Draw Tool",this.icon=T.tool_icon_freehand_draw,this.event_type=["pan","tap"],this.default_order=3}}e.FreehandDrawTool=o,v=o,o.__name__="FreehandDrawTool",v.prototype.default_view=c,v.define(({Int:r})=>({num_objects:[r,0]})),v.register_alias("freehand_draw",()=>new o)},function(Q,O,e,C,R){var v;C();const w=Q(43),g=Q(370),p=Q(228);class T extends g.EditToolView{_tap(r){if(this._select_event(r,this._select_mode(r),this.model.renderers).length||!this.model.add)return;const i=this.model.renderers[0],t=this._map_drag(r.sx,r.sy,i);if(t==null)return;const s=i.glyph,a=i.data_source,[u,l]=[s.x.field,s.y.field],[d,m]=t;this._pop_glyphs(a,this.model.num_objects),u&&a.get_array(u).push(d),l&&a.get_array(l).push(m),this._pad_empty_columns(a,[u,l]),a.change.emit(),a.data=a.data,a.properties.data.change.emit()}_keyup(r){if(this.model.active&&this._mouse_in_frame)for(const i of this.model.renderers)r.keyCode===w.Keys.Backspace?this._delete_selected(i):r.keyCode==w.Keys.Esc&&i.data_source.selection_manager.clear()}_pan_start(r){this.model.drag&&(this._select_event(r,"append",this.model.renderers),this._basepoint=[r.sx,r.sy])}_pan(r){this.model.drag&&this._basepoint!=null&&this._drag_points(r,this.model.renderers)}_pan_end(r){if(this.model.drag){this._pan(r);for(const i of this.model.renderers)this._emit_cds_changes(i.data_source,!1,!0,!0);this._basepoint=null}}}e.PointDrawToolView=T,T.__name__="PointDrawToolView";class c extends g.EditTool{constructor(r){super(r),this.tool_name="Point Draw Tool",this.icon=p.tool_icon_point_draw,this.event_type=["tap","pan","move"],this.default_order=2}}e.PointDrawTool=c,v=c,c.__name__="PointDrawTool",v.prototype.default_view=T,v.define(({Boolean:o,Int:r})=>({add:[o,!0],drag:[o,!0],num_objects:[r,0]}))},function(Q,O,e,C,R){var v;C();const w=Q(43),g=Q(8),p=Q(375),T=Q(228);class c extends p.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._initialized=!1}_tap(i){this._drawing?this._draw(i,"add",!0):this._select_event(i,this._select_mode(i),this.model.renderers)}_draw(i,t,s=!1){const a=this.model.renderers[0],u=this._map_drag(i.sx,i.sy,a);if(this._initialized||this.activate(),u==null)return;const[l,d]=this._snap_to_vertex(i,...u),m=a.data_source,f=a.glyph,[b,y]=[f.xs.field,f.ys.field];if(t=="new")this._pop_glyphs(m,this.model.num_objects),b&&m.get_array(b).push([l,l]),y&&m.get_array(y).push([d,d]),this._pad_empty_columns(m,[b,y]);else if(t=="edit"){if(b){const A=m.data[b][m.data[b].length-1];A[A.length-1]=l}if(y){const A=m.data[y][m.data[y].length-1];A[A.length-1]=d}}else if(t=="add"){if(b){const A=m.data[b].length-1;let L=m.get_array(b)[A];const x=L[L.length-1];L[L.length-1]=l,(0,g.isArray)(L)||(L=Array.from(L),m.data[b][A]=L),L.push(x)}if(y){const A=m.data[y].length-1;let L=m.get_array(y)[A];const x=L[L.length-1];L[L.length-1]=d,(0,g.isArray)(L)||(L=Array.from(L),m.data[y][A]=L),L.push(x)}}this._emit_cds_changes(m,!0,!1,s)}_show_vertices(){if(!this.model.active)return;const i=[],t=[];for(let s=0;s<this.model.renderers.length;s++){const a=this.model.renderers[s],u=a.data_source,l=a.glyph,[d,m]=[l.xs.field,l.ys.field];if(d)for(const f of u.get_array(d))i.push(...f);if(m)for(const f of u.get_array(m))t.push(...f);this._drawing&&s==this.model.renderers.length-1&&(i.splice(i.length-1,1),t.splice(t.length-1,1))}this._set_vertices(i,t)}_doubletap(i){this.model.active&&(this._drawing?(this._drawing=!1,this._draw(i,"edit",!0)):(this._drawing=!0,this._draw(i,"new",!0)))}_move(i){this._drawing&&this._draw(i,"edit")}_remove(){const i=this.model.renderers[0],t=i.data_source,s=i.glyph,[a,u]=[s.xs.field,s.ys.field];if(a){const l=t.data[a].length-1,d=t.get_array(a)[l];d.splice(d.length-1,1)}if(u){const l=t.data[u].length-1,d=t.get_array(u)[l];d.splice(d.length-1,1)}this._emit_cds_changes(t)}_keyup(i){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)i.keyCode===w.Keys.Backspace?this._delete_selected(t):i.keyCode==w.Keys.Esc&&(this._drawing&&(this._remove(),this._drawing=!1),t.data_source.selection_manager.clear())}_pan_start(i){this.model.drag&&(this._select_event(i,"append",this.model.renderers),this._basepoint=[i.sx,i.sy])}_pan(i){if(this._basepoint==null||!this.model.drag)return;const[t,s]=this._basepoint;for(const a of this.model.renderers){const u=this._map_drag(t,s,a),l=this._map_drag(i.sx,i.sy,a);if(l==null||u==null)continue;const d=a.data_source,m=a.glyph,[f,b]=[m.xs.field,m.ys.field];if(!f&&!b)continue;const[y,A]=l,[L,x]=u,[H,S]=[y-L,A-x];for(const k of d.selected.indices){let E,P,N;f&&(P=d.data[f][k]),b?(N=d.data[b][k],E=N.length):E=P.length;for(let B=0;B<E;B++)P&&(P[B]+=H),N&&(N[B]+=S)}d.change.emit()}this._basepoint=[i.sx,i.sy]}_pan_end(i){if(this.model.drag){this._pan(i);for(const t of this.model.renderers)this._emit_cds_changes(t.data_source);this._basepoint=null}}activate(){if(this.model.vertex_renderer&&this.model.active){if(this._show_vertices(),!this._initialized)for(const i of this.model.renderers){const t=i.data_source;t.connect(t.properties.data.change,()=>this._show_vertices())}this._initialized=!0}}deactivate(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()}}e.PolyDrawToolView=c,c.__name__="PolyDrawToolView";class o extends p.PolyTool{constructor(i){super(i),this.tool_name="Polygon Draw Tool",this.icon=T.tool_icon_poly_draw,this.event_type=["pan","tap","move"],this.default_order=3}}e.PolyDrawTool=o,v=o,o.__name__="PolyDrawTool",v.prototype.default_view=c,v.define(({Boolean:r,Int:i})=>({drag:[r,!0],num_objects:[i,0]}))},function(Q,O,e,C,R){var v;C();const w=Q(8),g=Q(370);class p extends g.EditToolView{_set_vertices(o,r){const i=this.model.vertex_renderer.glyph,t=this.model.vertex_renderer.data_source,[s,a]=[i.x.field,i.y.field];s&&((0,w.isArray)(o)?t.data[s]=o:i.x={value:o}),a&&((0,w.isArray)(r)?t.data[a]=r:i.y={value:r}),this._emit_cds_changes(t,!0,!0,!1)}_hide_vertices(){this._set_vertices([],[])}_snap_to_vertex(o,r,i){if(this.model.vertex_renderer){const t=this._select_event(o,"replace",[this.model.vertex_renderer]),s=this.model.vertex_renderer.data_source,a=this.model.vertex_renderer.glyph,[u,l]=[a.x.field,a.y.field];if(t.length){const d=s.selected.indices[0];u&&(r=s.data[u][d]),l&&(i=s.data[l][d]),s.selection_manager.clear()}}return[r,i]}}e.PolyToolView=p,p.__name__="PolyToolView";class T extends g.EditTool{constructor(o){super(o)}}e.PolyTool=T,v=T,T.__name__="PolyTool",v.define(({AnyRef:c})=>({vertex_renderer:[c()]}))},function(Q,O,e,C,R){var v;C();const w=Q(43),g=Q(8),p=Q(375),T=Q(228);class c extends p.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._cur_index=null}_doubletap(i){if(!this.model.active)return;const t=this._map_drag(i.sx,i.sy,this.model.vertex_renderer);if(t==null)return;const[s,a]=t,u=this._select_event(i,"replace",[this.model.vertex_renderer]),l=this.model.vertex_renderer.data_source,d=this.model.vertex_renderer.glyph,[m,f]=[d.x.field,d.y.field];if(u.length&&this._selected_renderer!=null){const b=l.selected.indices[0];this._drawing?(this._drawing=!1,l.selection_manager.clear()):(l.selected.indices=[b+1],m&&l.get_array(m).splice(b+1,0,s),f&&l.get_array(f).splice(b+1,0,a),this._drawing=!0),l.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(i)}_show_vertices(i){if(!this.model.active)return;const t=this.model.renderers[0],s=()=>this._update_vertices(t),a=t==null?void 0:t.data_source,u=this._select_event(i,"replace",this.model.renderers);if(!u.length)return this._set_vertices([],[]),this._selected_renderer=null,this._drawing=!1,this._cur_index=null,void(a!=null&&a.disconnect(a.properties.data.change,s));a!=null&&a.connect(a.properties.data.change,s),this._cur_index=u[0].data_source.selected.indices[0],this._update_vertices(u[0])}_update_vertices(i){const t=i.glyph,s=i.data_source,a=this._cur_index,[u,l]=[t.xs.field,t.ys.field];if(this._drawing||a==null&&(u||l))return;let d,m;u&&a!=null?(d=s.data[u][a],(0,g.isArray)(d)||(s.data[u][a]=d=Array.from(d))):d=t.xs.value,l&&a!=null?(m=s.data[l][a],(0,g.isArray)(m)||(s.data[l][a]=m=Array.from(m))):m=t.ys.value,this._selected_renderer=i,this._set_vertices(d,m)}_move(i){if(this._drawing&&this._selected_renderer!=null){const t=this.model.vertex_renderer,s=t.data_source,a=t.glyph,u=this._map_drag(i.sx,i.sy,t);if(u==null)return;let[l,d]=u;const m=s.selected.indices;[l,d]=this._snap_to_vertex(i,l,d),s.selected.indices=m;const[f,b]=[a.x.field,a.y.field],y=m[0];f&&(s.data[f][y]=l),b&&(s.data[b][y]=d),s.change.emit(),this._selected_renderer.data_source.change.emit()}}_tap(i){const t=this.model.vertex_renderer,s=this._map_drag(i.sx,i.sy,t);if(s==null)return;if(this._drawing&&this._selected_renderer){let[u,l]=s;const d=t.data_source,m=t.glyph,[f,b]=[m.x.field,m.y.field],y=d.selected.indices;[u,l]=this._snap_to_vertex(i,u,l);const A=y[0];if(d.selected.indices=[A+1],f){const L=d.get_array(f),x=L[A];L[A]=u,L.splice(A+1,0,x)}if(b){const L=d.get_array(b),x=L[A];L[A]=l,L.splice(A+1,0,x)}return d.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}const a=this._select_mode(i);this._select_event(i,a,[t]),this._select_event(i,a,this.model.renderers)}_remove_vertex(){if(!this._drawing||!this._selected_renderer)return;const i=this.model.vertex_renderer,t=i.data_source,s=i.glyph,a=t.selected.indices[0],[u,l]=[s.x.field,s.y.field];u&&t.get_array(u).splice(a,1),l&&t.get_array(l).splice(a,1),t.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}_pan_start(i){this._select_event(i,"append",[this.model.vertex_renderer]),this._basepoint=[i.sx,i.sy]}_pan(i){this._basepoint!=null&&(this._drag_points(i,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(i){this._basepoint!=null&&(this._drag_points(i,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}_keyup(i){if(!this.model.active||!this._mouse_in_frame)return;let t;t=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(const s of t)i.keyCode===w.Keys.Backspace?(this._delete_selected(s),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):i.keyCode==w.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),s.data_source.selection_manager.clear())}deactivate(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())}}e.PolyEditToolView=c,c.__name__="PolyEditToolView";class o extends p.PolyTool{constructor(i){super(i),this.tool_name="Poly Edit Tool",this.icon=T.tool_icon_poly_edit,this.event_type=["tap","pan","move"],this.default_order=4}}e.PolyEditTool=o,v=o,o.__name__="PolyEditTool",v.prototype.default_view=c},function(Q,O,e,C,R){var v;C();const w=Q(378),g=Q(116),p=Q(20),T=Q(228);class c extends w.SelectToolView{_compute_limits(t){const s=this.plot_view.frame,a=this.model.dimensions;let u=this._base_point;if(this.model.origin=="center"){const[l,d]=u,[m,f]=t;u=[l-(m-l),d-(f-d)]}return this.model._get_dim_limits(u,t,s,a)}_pan_start(t){const{sx:s,sy:a}=t;this._base_point=[s,a]}_pan(t){const{sx:s,sy:a}=t,u=[s,a],[l,d]=this._compute_limits(u);this.model.overlay.update({left:l[0],right:l[1],top:d[0],bottom:d[1]}),this.model.select_every_mousemove&&this._do_select(l,d,!1,this._select_mode(t))}_pan_end(t){const{sx:s,sy:a}=t,u=[s,a],[l,d]=this._compute_limits(u);this._do_select(l,d,!0,this._select_mode(t)),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.state.push("box_select",{selection:this.plot_view.get_selection()})}_do_select([t,s],[a,u],l,d="replace"){const m={type:"rect",sx0:t,sx1:s,sy0:a,sy1:u};this._select(m,l,d)}}e.BoxSelectToolView=c,c.__name__="BoxSelectToolView";const o=()=>new g.BoxAnnotation({level:"overlay",top_units:"screen",left_units:"screen",bottom_units:"screen",right_units:"screen",fill_color:"lightgrey",fill_alpha:.5,line_color:"black",line_alpha:1,line_width:2,line_dash:[4,4]});class r extends w.SelectTool{constructor(t){super(t),this.tool_name="Box Select",this.icon=T.tool_icon_box_select,this.event_type="pan",this.default_order=30}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.BoxSelectTool=r,v=r,r.__name__="BoxSelectTool",v.prototype.default_view=c,v.define(({Boolean:i,Ref:t})=>({dimensions:[p.Dimensions,"both"],select_every_mousemove:[i,!1],overlay:[t(g.BoxAnnotation),o],origin:[p.BoxOrigin,"corner"]})),v.register_alias("box_select",()=>new r),v.register_alias("xbox_select",()=>new r({dimensions:"width"})),v.register_alias("ybox_select",()=>new r({dimensions:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(223),g=Q(175),p=Q(339),T=Q(176),c=Q(66),o=Q(20),r=Q(43),i=Q(251),t=Q(15),s=Q(11);class a extends w.GestureToolView{connect_signals(){super.connect_signals(),this.model.clear.connect(()=>this._clear())}get computed_renderers(){const{renderers:d,names:m}=this.model,f=this.plot_model.data_renderers;return(0,c.compute_renderers)(d,f,m)}_computed_renderers_by_data_source(){var d;const m=new Map;for(const f of this.computed_renderers){let b;if(f instanceof g.GlyphRenderer)b=f.data_source;else{if(!(f instanceof p.GraphRenderer))continue;b=f.node_renderer.data_source}const y=(d=m.get(b))!==null&&d!==void 0?d:[];m.set(b,[...y,f])}return m}_select_mode(d){const{shiftKey:m,ctrlKey:f}=d;return m||f?m&&!f?"append":!m&&f?"intersect":m&&f?"subtract":void(0,s.unreachable)():this.model.mode}_keyup(d){d.keyCode==r.Keys.Esc&&this._clear()}_clear(){for(const m of this.computed_renderers)m.get_selection_manager().clear();const d=this.computed_renderers.map(m=>this.plot_view.renderer_view(m));this.plot_view.request_paint(d)}_select(d,m,f){const b=this._computed_renderers_by_data_source();for(const[,y]of b){const A=y[0].get_selection_manager(),L=[];for(const x of y){const H=this.plot_view.renderer_view(x);H!=null&&L.push(H)}A.select(L,d,m,f)}this.model.callback!=null&&this._emit_callback(d),this._emit_selection_event(d,m)}_emit_selection_event(d,m=!0){const{x_scale:f,y_scale:b}=this.plot_view.frame;let y;switch(d.type){case"point":{const{sx:A,sy:L}=d,x=f.invert(A),H=b.invert(L);y=Object.assign(Object.assign({},d),{x,y:H});break}case"span":{const{sx:A,sy:L}=d,x=f.invert(A),H=b.invert(L);y=Object.assign(Object.assign({},d),{x,y:H});break}case"rect":{const{sx0:A,sx1:L,sy0:x,sy1:H}=d,[S,k]=f.r_invert(A,L),[E,P]=b.r_invert(x,H);y=Object.assign(Object.assign({},d),{x0:S,y0:E,x1:k,y1:P});break}case"poly":{const{sx:A,sy:L}=d,x=f.v_invert(A),H=b.v_invert(L);y=Object.assign(Object.assign({},d),{x,y:H});break}}this.plot_model.trigger_event(new i.SelectionGeometry(y,m))}}e.SelectToolView=a,a.__name__="SelectToolView";class u extends w.GestureTool{constructor(d){super(d)}initialize(){super.initialize(),this.clear=new t.Signal0(this,"clear")}get menu(){return[{icon:"bk-tool-icon-replace-mode",tooltip:"Replace the current selection",active:()=>this.mode=="replace",handler:()=>{this.mode="replace",this.active=!0}},{icon:"bk-tool-icon-append-mode",tooltip:"Append to the current selection (Shift)",active:()=>this.mode=="append",handler:()=>{this.mode="append",this.active=!0}},{icon:"bk-tool-icon-intersect-mode",tooltip:"Intersect with the current selection (Ctrl)",active:()=>this.mode=="intersect",handler:()=>{this.mode="intersect",this.active=!0}},{icon:"bk-tool-icon-subtract-mode",tooltip:"Subtract from the current selection (Shift+Ctrl)",active:()=>this.mode=="subtract",handler:()=>{this.mode="subtract",this.active=!0}},null,{icon:"bk-tool-icon-clear-selection",tooltip:"Clear the current selection (Esc)",handler:()=>{this.clear.emit()}}]}}e.SelectTool=u,v=u,u.__name__="SelectTool",v.define(({String:l,Array:d,Ref:m,Or:f,Auto:b})=>({renderers:[f(d(m(T.DataRenderer)),b),"auto"],names:[d(l),[]],mode:[o.SelectionMode,"replace"]}))},function(Q,O,e,C,R){var v;C();const w=Q(223),g=Q(116),p=Q(20),T=Q(228);class c extends w.GestureToolView{_match_aspect(t,s,a){const u=a.bbox.aspect,l=a.bbox.h_range.end,d=a.bbox.h_range.start,m=a.bbox.v_range.end,f=a.bbox.v_range.start;let b=Math.abs(t[0]-s[0]),y=Math.abs(t[1]-s[1]);const A=y==0?0:b/y,[L]=A>=u?[1,A/u]:[u/A,1];let x,H,S,k;return t[0]<=s[0]?(x=t[0],H=t[0]+b*L,H>l&&(H=l)):(H=t[0],x=t[0]-b*L,x<d&&(x=d)),b=Math.abs(H-x),t[1]<=s[1]?(k=t[1],S=t[1]+b/u,S>m&&(S=m)):(S=t[1],k=t[1]-b/u,k<f&&(k=f)),y=Math.abs(S-k),t[0]<=s[0]?H=t[0]+u*y:x=t[0]-u*y,[[x,H],[k,S]]}_compute_limits(t){const s=this.plot_view.frame,a=this.model.dimensions;let u,l,d=this._base_point;if(this.model.origin=="center"){const[m,f]=d,[b,y]=t;d=[m-(b-m),f-(y-f)]}return this.model.match_aspect&&a=="both"?[u,l]=this._match_aspect(d,t,s):[u,l]=this.model._get_dim_limits(d,t,s,a),[u,l]}_pan_start(t){this._base_point=[t.sx,t.sy]}_pan(t){const s=[t.sx,t.sy],[a,u]=this._compute_limits(s);this.model.overlay.update({left:a[0],right:a[1],top:u[0],bottom:u[1]})}_pan_end(t){const s=[t.sx,t.sy],[a,u]=this._compute_limits(s);this._update(a,u),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.trigger_ranges_update_event()}_update([t,s],[a,u]){if(Math.abs(s-t)<=5||Math.abs(u-a)<=5)return;const{x_scales:l,y_scales:d}=this.plot_view.frame,m=new Map;for(const[y,A]of l){const[L,x]=A.r_invert(t,s);m.set(y,{start:L,end:x})}const f=new Map;for(const[y,A]of d){const[L,x]=A.r_invert(a,u);f.set(y,{start:L,end:x})}const b={xrs:m,yrs:f};this.plot_view.state.push("box_zoom",{range:b}),this.plot_view.update_range(b)}}e.BoxZoomToolView=c,c.__name__="BoxZoomToolView";const o=()=>new g.BoxAnnotation({level:"overlay",top_units:"screen",left_units:"screen",bottom_units:"screen",right_units:"screen",fill_color:"lightgrey",fill_alpha:.5,line_color:"black",line_alpha:1,line_width:2,line_dash:[4,4]});class r extends w.GestureTool{constructor(t){super(t),this.tool_name="Box Zoom",this.icon=T.tool_icon_box_zoom,this.event_type="pan",this.default_order=20}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.BoxZoomTool=r,v=r,r.__name__="BoxZoomTool",v.prototype.default_view=c,v.define(({Boolean:i,Ref:t})=>({dimensions:[p.Dimensions,"both"],overlay:[t(g.BoxAnnotation),o],match_aspect:[i,!1],origin:[p.BoxOrigin,"corner"]})),v.register_alias("box_zoom",()=>new r({dimensions:"both"})),v.register_alias("xbox_zoom",()=>new r({dimensions:"width"})),v.register_alias("ybox_zoom",()=>new r({dimensions:"height"}))},function(V,Q,O,e,C){var R;e();const v=V(378),w=V(217),g=V(381),p=V(43),T=V(228);class c extends v.SelectToolView{constructor(){super(...arguments),this.sxs=[],this.sys=[]}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._active_change())}_active_change(){this.model.active||this._clear_overlay()}_keyup(i){i.keyCode==p.Keys.Enter&&this._clear_overlay()}_pan_start(i){this.sxs=[],this.sys=[];const{sx:t,sy:s}=i;this._append_overlay(t,s)}_pan(i){const[t,s]=this.plot_view.frame.bbox.clip(i.sx,i.sy);this._append_overlay(t,s),this.model.select_every_mousemove&&this._do_select(this.sxs,this.sys,!1,this._select_mode(i))}_pan_end(i){const{sxs:t,sys:s}=this;this._clear_overlay(),this._do_select(t,s,!0,this._select_mode(i)),this.plot_view.state.push("lasso_select",{selection:this.plot_view.get_selection()})}_append_overlay(i,t){const{sxs:s,sys:a}=this;s.push(i),a.push(t),this.model.overlay.update({xs:s,ys:a})}_clear_overlay(){this.sxs=[],this.sys=[],this.model.overlay.update({xs:this.sxs,ys:this.sys})}_do_select(i,t,s,a){const u={type:"poly",sx:i,sy:t};this._select(u,s,a)}}O.LassoSelectToolView=c,c.__name__="LassoSelectToolView";class o extends v.SelectTool{constructor(i){super(i),this.tool_name="Lasso Select",this.icon=T.tool_icon_lasso_select,this.event_type="pan",this.default_order=12}}O.LassoSelectTool=o,R=o,o.__name__="LassoSelectTool",R.prototype.default_view=c,R.define(({Boolean:r,Ref:i})=>({select_every_mousemove:[r,!0],overlay:[i(w.PolyAnnotation),g.DEFAULT_POLY_OVERLAY]})),R.register_alias("lasso_select",()=>new o)},function(Q,O,e,C,R){var v;C();const w=Q(378),g=Q(217),p=Q(43),T=Q(9),c=Q(228);class o extends w.SelectToolView{initialize(){super.initialize(),this.data={sx:[],sy:[]}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._active_change())}_active_change(){this.model.active||this._clear_data()}_keyup(t){t.keyCode==p.Keys.Enter&&this._clear_data()}_doubletap(t){this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(t)),this.plot_view.state.push("poly_select",{selection:this.plot_view.get_selection()}),this._clear_data()}_clear_data(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})}_tap(t){const{sx:s,sy:a}=t;this.plot_view.frame.bbox.contains(s,a)&&(this.data.sx.push(s),this.data.sy.push(a),this.model.overlay.update({xs:(0,T.copy)(this.data.sx),ys:(0,T.copy)(this.data.sy)}))}_do_select(t,s,a,u){const l={type:"poly",sx:t,sy:s};this._select(l,a,u)}}e.PolySelectToolView=o,o.__name__="PolySelectToolView",e.DEFAULT_POLY_OVERLAY=()=>new g.PolyAnnotation({level:"overlay",xs_units:"screen",ys_units:"screen",fill_color:"lightgrey",fill_alpha:.5,line_color:"black",line_alpha:1,line_width:2,line_dash:[4,4]});class r extends w.SelectTool{constructor(t){super(t),this.tool_name="Poly Select",this.icon=c.tool_icon_polygon_select,this.event_type="tap",this.default_order=11}}e.PolySelectTool=r,v=r,r.__name__="PolySelectTool",v.prototype.default_view=o,v.define(({Ref:i})=>({overlay:[i(g.PolyAnnotation),e.DEFAULT_POLY_OVERLAY]})),v.register_alias("poly_select",()=>new r)},function(Q,O,e,C,R){var v;C();const w=Q(20),g=Q(383),p=Q(228);class T extends g.LineToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(r){if(!this.model.active)return;const i=this.model.renderers;for(const t of i)this._select_event(r,"replace",[t]).length==1&&(this._selected_renderer=t);this._show_intersections(),this._update_line_cds()}_show_intersections(){if(!this.model.active||this._selected_renderer==null)return;if(!this.model.renderers.length)return this._set_intersection([],[]),this._selected_renderer=null,void(this._drawing=!1);const r=this._selected_renderer.data_source,i=this._selected_renderer.glyph,[t,s]=[i.x.field,i.y.field],a=r.get_array(t),u=r.get_array(s);this._set_intersection(a,u)}_tap(r){const i=this.model.intersection_renderer;if(this._map_drag(r.sx,r.sy,i)==null)return;if(this._drawing&&this._selected_renderer){const s=this._select_mode(r);if(this._select_event(r,s,[i]).length==0)return}const t=this._select_mode(r);this._select_event(r,t,[i]),this._select_event(r,t,this.model.renderers)}_update_line_cds(){if(this._selected_renderer==null)return;const r=this.model.intersection_renderer.glyph,i=this.model.intersection_renderer.data_source,[t,s]=[r.x.field,r.y.field];if(t&&s){const a=i.data[t],u=i.data[s];this._selected_renderer.data_source.data[t]=a,this._selected_renderer.data_source.data[s]=u}this._emit_cds_changes(this._selected_renderer.data_source,!0,!0,!1)}_pan_start(r){this._select_event(r,"append",[this.model.intersection_renderer]),this._basepoint=[r.sx,r.sy]}_pan(r){this._basepoint!=null&&(this._drag_points(r,[this.model.intersection_renderer],this.model.dimensions),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(r){this._basepoint!=null&&(this._drag_points(r,[this.model.intersection_renderer]),this._emit_cds_changes(this.model.intersection_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}activate(){this._drawing=!0}deactivate(){this._selected_renderer&&(this._drawing&&(this._drawing=!1),this._hide_intersections())}}e.LineEditToolView=T,T.__name__="LineEditToolView";class c extends g.LineTool{constructor(r){super(r),this.tool_name="Line Edit Tool",this.icon=p.tool_icon_line_edit,this.event_type=["tap","pan","move"],this.default_order=4}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.LineEditTool=c,v=c,c.__name__="LineEditTool",v.prototype.default_view=T,v.define(()=>({dimensions:[w.Dimensions,"both"]}))},function(Q,O,e,C,R){var v;C();const w=Q(8),g=Q(370);class p extends g.EditToolView{_set_intersection(o,r){const i=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[s,a]=[i.x.field,i.y.field];s&&((0,w.isArray)(o)?t.data[s]=o:i.x={value:o}),a&&((0,w.isArray)(r)?t.data[a]=r:i.y={value:r}),this._emit_cds_changes(t,!0,!0,!1)}_hide_intersections(){this._set_intersection([],[])}}e.LineToolView=p,p.__name__="LineToolView";class T extends g.EditTool{constructor(o){super(o)}}e.LineTool=T,v=T,T.__name__="LineTool",v.define(({AnyRef:c})=>({intersection_renderer:[c()]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(223),p=Q(20),T=(0,v.__importStar)(Q(228));function c(i,t,s){const a=new Map;for(const[u,l]of i){const[d,m]=l.r_invert(t,s);a.set(u,{start:d,end:m})}return a}e.update_ranges=c;class o extends g.GestureToolView{_pan_start(t){var s;this.last_dx=0,this.last_dy=0;const{sx:a,sy:u}=t,l=this.plot_view.frame.bbox;if(!l.contains(a,u)){const d=l.h_range,m=l.v_range;(a<d.start||a>d.end)&&(this.v_axis_only=!0),(u<m.start||u>m.end)&&(this.h_axis_only=!0)}(s=this.model.document)===null||s===void 0||s.interactive_start(this.plot_model)}_pan(t){var s;this._update(t.deltaX,t.deltaY),(s=this.model.document)===null||s===void 0||s.interactive_start(this.plot_model)}_pan_end(t){this.h_axis_only=!1,this.v_axis_only=!1,this.pan_info!=null&&this.plot_view.state.push("pan",{range:this.pan_info}),this.plot_view.trigger_ranges_update_event()}_update(t,s){const a=this.plot_view.frame,u=t-this.last_dx,l=s-this.last_dy,d=a.bbox.h_range,m=d.start-u,f=d.end-u,b=a.bbox.v_range,y=b.start-l,A=b.end-l,L=this.model.dimensions;let x,H,S,k,E,P;L!="width"&&L!="both"||this.v_axis_only?(x=d.start,H=d.end,S=0):(x=m,H=f,S=-u),L!="height"&&L!="both"||this.h_axis_only?(k=b.start,E=b.end,P=0):(k=y,E=A,P=-l),this.last_dx=t,this.last_dy=s;const{x_scales:N,y_scales:B}=a,D=c(N,x,H),j=c(B,k,E);this.pan_info={xrs:D,yrs:j,sdx:S,sdy:P},this.plot_view.update_range(this.pan_info,{panning:!0})}}e.PanToolView=o,o.__name__="PanToolView";class r extends g.GestureTool{constructor(t){super(t),this.tool_name="Pan",this.event_type="pan",this.default_order=10}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.PanTool=r,w=r,r.__name__="PanTool",w.prototype.default_view=o,w.define(()=>({dimensions:[p.Dimensions,"both",{on_update(i,t){switch(i){case"both":t.icon=T.tool_icon_pan;break;case"width":t.icon=T.tool_icon_xpan;break;case"height":t.icon=T.tool_icon_ypan}}}]})),w.register_alias("pan",()=>new r({dimensions:"both"})),w.register_alias("xpan",()=>new r({dimensions:"width"})),w.register_alias("ypan",()=>new r({dimensions:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(116),g=Q(58),p=Q(19),T=Q(223),c=Q(228);function o(b){switch(b){case 1:return 2;case 2:return 1;case 4:return 5;case 5:return 4;default:return b}}function r(b,y,A,L){if(y==null)return!1;const x=A.compute(y);return Math.abs(b-x)<L}function i(b,y,A,L,x){let H=!0;if(x.left!=null&&x.right!=null){const S=A.invert(b);(S<x.left||S>x.right)&&(H=!1)}if(x.bottom!=null&&x.top!=null){const S=L.invert(y);(S<x.bottom||S>x.top)&&(H=!1)}return H}function t(b,y,A){let L=0;return b>=A.start&&b<=A.end&&(L+=1),y>=A.start&&y<=A.end&&(L+=1),L}function s(b,y,A,L){const x=y.compute(b),H=y.invert(x+A);return H>=L.start&&H<=L.end?H:b}function a(b,y,A){return b>y.start?(y.end=b,A):(y.end=y.start,y.start=b,o(A))}function u(b,y,A){return b<y.end?(y.start=b,A):(y.start=y.end,y.end=b,o(A))}function l(b,y,A,L){const[x,H]=y.r_compute(b.start,b.end),[S,k]=y.r_invert(x+A,H+A),E=t(b.start,b.end,L);t(S,k,L)>=E&&(b.start=S,b.end=k)}e.flip_side=o,e.is_near=r,e.is_inside=i,e.sides_inside=t,e.compute_value=s,e.update_range_end_side=a,e.update_range_start_side=u,e.update_range=l;class d extends T.GestureToolView{initialize(){super.initialize(),this.side=0,this.model.update_overlay_from_ranges()}connect_signals(){super.connect_signals(),this.model.x_range!=null&&this.connect(this.model.x_range.change,()=>this.model.update_overlay_from_ranges()),this.model.y_range!=null&&this.connect(this.model.y_range.change,()=>this.model.update_overlay_from_ranges())}_pan_start(y){this.last_dx=0,this.last_dy=0;const A=this.model.x_range,L=this.model.y_range,{frame:x}=this.plot_view,H=x.x_scale,S=x.y_scale,k=this.model.overlay,{left:E,right:P,top:N,bottom:B}=k,D=this.model.overlay.line_width+w.EDGE_TOLERANCE;A!=null&&this.model.x_interaction&&(r(y.sx,E,H,D)?this.side=1:r(y.sx,P,H,D)?this.side=2:i(y.sx,y.sy,H,S,k)&&(this.side=3)),L!=null&&this.model.y_interaction&&(this.side==0&&r(y.sy,B,S,D)&&(this.side=4),this.side==0&&r(y.sy,N,S,D)?this.side=5:i(y.sx,y.sy,H,S,this.model.overlay)&&(this.side==3?this.side=7:this.side=6))}_pan(y){const A=this.plot_view.frame,L=y.deltaX-this.last_dx,x=y.deltaY-this.last_dy,H=this.model.x_range,S=this.model.y_range,k=A.x_scale,E=A.y_scale;if(H!=null){if(this.side==3||this.side==7)l(H,k,L,A.x_range);else if(this.side==1){const P=s(H.start,k,L,A.x_range);this.side=u(P,H,this.side)}else if(this.side==2){const P=s(H.end,k,L,A.x_range);this.side=a(P,H,this.side)}}if(S!=null){if(this.side==6||this.side==7)l(S,E,x,A.y_range);else if(this.side==4){const P=s(S.start,E,x,A.y_range);this.side=u(P,S,this.side)}else if(this.side==5){const P=s(S.end,E,x,A.y_range);this.side=a(P,S,this.side)}}this.last_dx=y.deltaX,this.last_dy=y.deltaY}_pan_end(y){this.side=0,this.plot_view.trigger_ranges_update_event()}}e.RangeToolView=d,d.__name__="RangeToolView";const m=()=>new w.BoxAnnotation({level:"overlay",fill_color:"lightgrey",fill_alpha:.5,line_color:"black",line_alpha:1,line_width:.5,line_dash:[2,2]});class f extends T.GestureTool{constructor(y){super(y),this.tool_name="Range Tool",this.icon=c.tool_icon_range,this.event_type="pan",this.default_order=1}initialize(){super.initialize(),this.overlay.in_cursor="grab",this.overlay.ew_cursor=this.x_range!=null&&this.x_interaction?"ew-resize":null,this.overlay.ns_cursor=this.y_range!=null&&this.y_interaction?"ns-resize":null}update_overlay_from_ranges(){this.x_range==null&&this.y_range==null&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,p.logger.warn("RangeTool not configured with any Ranges.")),this.x_range==null?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),this.y_range==null?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)}}e.RangeTool=f,v=f,f.__name__="RangeTool",v.prototype.default_view=d,v.define(({Boolean:b,Ref:y,Nullable:A})=>({x_range:[A(y(g.Range1d)),null],x_interaction:[b,!0],y_range:[A(y(g.Range1d)),null],y_interaction:[b,!0],overlay:[y(w.BoxAnnotation),m]}))},function(Q,O,e,C,R){var v;C();const w=Q(378),g=Q(20),p=Q(228);class T extends w.SelectToolView{_tap(r){this.model.gesture=="tap"&&this._handle_tap(r)}_doubletap(r){this.model.gesture=="doubletap"&&this._handle_tap(r)}_handle_tap(r){const{sx:i,sy:t}=r,s={type:"point",sx:i,sy:t};this._select(s,!0,this._select_mode(r))}_select(r,i,t){const{callback:s}=this.model;if(this.model.behavior=="select"){const a=this._computed_renderers_by_data_source();for(const[,u]of a){const l=u[0].get_selection_manager(),d=u.map(m=>this.plot_view.renderer_view(m)).filter(m=>m!=null);if(l.select(d,r,i,t)&&s!=null){const m=d[0].coordinates.x_scale.invert(r.sx),f=d[0].coordinates.y_scale.invert(r.sy),b={geometries:Object.assign(Object.assign({},r),{x:m,y:f}),source:l.source};s.execute(this.model,b)}}this._emit_selection_event(r),this.plot_view.state.push("tap",{selection:this.plot_view.get_selection()})}else for(const a of this.computed_renderers){const u=this.plot_view.renderer_view(a);if(u==null)continue;const l=a.get_selection_manager();if(l.inspect(u,r)&&s!=null){const d=u.coordinates.x_scale.invert(r.sx),m=u.coordinates.y_scale.invert(r.sy),f={geometries:Object.assign(Object.assign({},r),{x:d,y:m}),source:l.source};s.execute(this.model,f)}}}}e.TapToolView=T,T.__name__="TapToolView";class c extends w.SelectTool{constructor(r){super(r),this.tool_name="Tap",this.icon=p.tool_icon_tap_select,this.event_type="tap",this.default_order=10}}e.TapTool=c,v=c,c.__name__="TapTool",v.prototype.default_view=T,v.define(({Any:o,Enum:r,Nullable:i})=>({behavior:[g.TapBehavior,"select"],gesture:[r("tap","doubletap"),"tap"],callback:[i(o)]})),v.register_alias("click",()=>new c({behavior:"inspect"})),v.register_alias("tap",()=>new c),v.register_alias("doubletap",()=>new c({gesture:"doubletap"}))},function(Q,O,e,C,R){var v;C();const w=Q(223),g=Q(20),p=Q(228),T=Q(384);class c extends w.GestureToolView{_scroll(i){let t=this.model.speed*i.delta;t>.9?t=.9:t<-.9&&(t=-.9),this._update_ranges(t)}_update_ranges(i){var t;const{frame:s}=this.plot_view,a=s.bbox.h_range,u=s.bbox.v_range,[l,d]=[a.start,a.end],[m,f]=[u.start,u.end];let b,y,A,L;switch(this.model.dimension){case"height":{const k=Math.abs(f-m);b=l,y=d,A=m-k*i,L=f-k*i;break}case"width":{const k=Math.abs(d-l);b=l-k*i,y=d-k*i,A=m,L=f;break}}const{x_scales:x,y_scales:H}=s,S={xrs:(0,T.update_ranges)(x,b,y),yrs:(0,T.update_ranges)(H,A,L),factor:i};this.plot_view.state.push("wheel_pan",{range:S}),this.plot_view.update_range(S,{scrolling:!0}),(t=this.model.document)===null||t===void 0||t.interactive_start(this.plot_model,()=>this.plot_view.trigger_ranges_update_event())}}e.WheelPanToolView=c,c.__name__="WheelPanToolView";class o extends w.GestureTool{constructor(i){super(i),this.tool_name="Wheel Pan",this.icon=p.tool_icon_wheel_pan,this.event_type="scroll",this.default_order=12}get tooltip(){return this._get_dim_tooltip(this.dimension)}}e.WheelPanTool=o,v=o,o.__name__="WheelPanTool",v.prototype.default_view=c,v.define(()=>({dimension:[g.Dimension,"width"]})),v.internal(({Number:r})=>({speed:[r,.001]})),v.register_alias("xwheel_pan",()=>new o({dimension:"width"})),v.register_alias("ywheel_pan",()=>new o({dimension:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(223),g=Q(368),p=Q(20),T=Q(27),c=Q(228);class o extends w.GestureToolView{_pinch(t){const{sx:s,sy:a,scale:u,ctrlKey:l,shiftKey:d}=t;let m;m=u>=1?20*(u-1):-20/u,this._scroll({type:"wheel",sx:s,sy:a,delta:m,ctrlKey:l,shiftKey:d})}_scroll(t){var s;const{frame:a}=this.plot_view,u=a.bbox.h_range,l=a.bbox.v_range,{sx:d,sy:m}=t,f=this.model.dimensions,b=(f=="width"||f=="both")&&u.start<d&&d<u.end,y=(f=="height"||f=="both")&&l.start<m&&m<l.end;if(!(b&&y||this.model.zoom_on_axis))return;const A=this.model.speed*t.delta,L=(0,g.scale_range)(a,A,b,y,{x:d,y:m});this.plot_view.state.push("wheel_zoom",{range:L});const{maintain_focus:x}=this.model;this.plot_view.update_range(L,{scrolling:!0,maintain_focus:x}),(s=this.model.document)===null||s===void 0||s.interactive_start(this.plot_model,()=>this.plot_view.trigger_ranges_update_event())}}e.WheelZoomToolView=o,o.__name__="WheelZoomToolView";class r extends w.GestureTool{constructor(t){super(t),this.tool_name="Wheel Zoom",this.icon=c.tool_icon_wheel_zoom,this.event_type=T.is_mobile?"pinch":"scroll",this.default_order=10}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.WheelZoomTool=r,v=r,r.__name__="WheelZoomTool",v.prototype.default_view=o,v.define(({Boolean:i,Number:t})=>({dimensions:[p.Dimensions,"both"],maintain_focus:[i,!0],zoom_on_axis:[i,!0],speed:[t,1/600]})),v.register_alias("wheel_zoom",()=>new r({dimensions:"both"})),v.register_alias("xwheel_zoom",()=>new r({dimensions:"width"})),v.register_alias("ywheel_zoom",()=>new r({dimensions:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(232),g=Q(219),p=Q(20),T=Q(13),c=Q(228);class o extends w.InspectToolView{_move(t){if(!this.model.active)return;const{sx:s,sy:a}=t;this.plot_view.frame.bbox.contains(s,a)?this._update_spans(s,a):this._update_spans(null,null)}_move_exit(t){this._update_spans(null,null)}_update_spans(t,s){const a=this.model.dimensions;a!="width"&&a!="both"||(this.model.spans.width.location=s),a!="height"&&a!="both"||(this.model.spans.height.location=t)}}e.CrosshairToolView=o,o.__name__="CrosshairToolView";class r extends w.InspectTool{constructor(t){super(t),this.tool_name="Crosshair",this.icon=c.tool_icon_crosshair}get tooltip(){return this._get_dim_tooltip(this.dimensions)}get synthetic_renderers(){return(0,T.values)(this.spans)}}e.CrosshairTool=r,v=r,r.__name__="CrosshairTool",(()=>{function i(t,s){return new g.Span({for_hover:!0,dimension:s,location_units:"screen",level:"overlay",line_color:t.line_color,line_width:t.line_width,line_alpha:t.line_alpha})}v.prototype.default_view=o,v.define(({Alpha:t,Number:s,Color:a})=>({dimensions:[p.Dimensions,"both"],line_color:[a,"black"],line_width:[s,1],line_alpha:[t,1]})),v.internal(({Struct:t,Ref:s})=>({spans:[t({width:s(g.Span),height:s(g.Span)}),a=>({width:i(a,"width"),height:i(a,"height")})]})),v.register_alias("crosshair",()=>new r)})()},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(13),p=Q(34);class T extends w.Model{constructor(o){super(o)}get values(){return(0,g.values)(this.args)}_make_code(o,r,i,t){return new Function(...(0,g.keys)(this.args),o,r,i,(0,p.use_strict)(t))}format(o,r,i){return this._make_code("value","format","special_vars",this.code)(...this.values,o,r,i)}}e.CustomJSHover=T,v=T,T.__name__="CustomJSHover",v.define(({Unknown:c,String:o,Dict:r})=>({args:[r(c),{}],code:[o,""]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(232),p=Q(390),T=Q(241),c=Q(175),o=Q(339),r=Q(176),i=Q(177),t=Q(283),s=Q(186),a=Q(187),u=Q(189),l=(0,v.__importStar)(Q(185)),d=Q(152),m=Q(43),f=Q(22),b=Q(13),y=Q(234),A=Q(8),L=Q(113),x=Q(20),H=Q(228),S=Q(15),k=Q(66),E=(0,v.__importStar)(Q(242)),P=Q(392);function N(M,F,W,U,q,X){const ae={x:q[M],y:X[M]},me={x:q[M+1],y:X[M+1]};let Ve,Je;if(F.type=="span")F.direction=="h"?(Ve=Math.abs(ae.x-W),Je=Math.abs(me.x-W)):(Ve=Math.abs(ae.y-U),Je=Math.abs(me.y-U));else{const rt={x:W,y:U};Ve=l.dist_2_pts(ae,rt),Je=l.dist_2_pts(me,rt)}return Ve<Je?[[ae.x,ae.y],M]:[[me.x,me.y],M+1]}function B(M,F,W){return[[M[W],F[W]],W]}e._nearest_line_hit=N,e._line_hit=B;class D extends g.InspectToolView{initialize(){super.initialize(),this._ttmodels=new Map,this._ttviews=new Map}async lazy_initialize(){await super.lazy_initialize(),await this._update_ttmodels();const{tooltips:F}=this.model;F instanceof P.Template&&(this._template_view=await(0,L.build_view)(F,{parent:this}),this._template_view.render())}remove(){var F;(F=this._template_view)===null||F===void 0||F.remove(),(0,L.remove_views)(this._ttviews),super.remove()}connect_signals(){super.connect_signals();const F=this.plot_model.properties.renderers,{renderers:W,tooltips:U}=this.model.properties;this.on_change(U,()=>delete this._template_el),this.on_change([F,W,U],async()=>await this._update_ttmodels())}async _update_ttmodels(){const{_ttmodels:F,computed_renderers:W}=this;F.clear();const{tooltips:U}=this.model;if(U!=null)for(const me of this.computed_renderers){const Ve=new T.Tooltip({custom:(0,A.isString)(U)||(0,A.isFunction)(U),attachment:this.model.attachment,show_arrow:this.model.show_arrow});me instanceof c.GlyphRenderer?F.set(me,Ve):me instanceof o.GraphRenderer&&(F.set(me.node_renderer,Ve),F.set(me.edge_renderer,Ve))}const q=await(0,L.build_views)(this._ttviews,[...F.values()],{parent:this.plot_view});for(const me of q)me.render();const X=[...function*(){for(const me of W)me instanceof c.GlyphRenderer?yield me:me instanceof o.GraphRenderer&&(yield me.node_renderer,yield me.edge_renderer)}()],ae=this._slots.get(this._update);if(ae!=null){const me=new Set(X.map(Ve=>Ve.data_source));S.Signal.disconnect_receiver(this,ae,me)}for(const me of X)this.connect(me.data_source.inspect,this._update)}get computed_renderers(){const{renderers:F,names:W}=this.model,U=this.plot_model.data_renderers;return(0,k.compute_renderers)(F,U,W)}get ttmodels(){return this._ttmodels}_clear(){this._inspect(1/0,1/0);for(const[,F]of this.ttmodels)F.clear()}_move(F){if(!this.model.active)return;const{sx:W,sy:U}=F;this.plot_view.frame.bbox.contains(W,U)?this._inspect(W,U):this._clear()}_move_exit(){this._clear()}_inspect(F,W){let U;this.model.mode=="mouse"?U={type:"point",sx:F,sy:W}:U={type:"span",direction:this.model.mode=="vline"?"h":"v",sx:F,sy:W};for(const q of this.computed_renderers){const X=q.get_selection_manager(),ae=this.plot_view.renderer_view(q);ae!=null&&X.inspect(ae,U)}this._emit_callback(U)}_update([F,{geometry:W}]){var U,q;if(!this.model.active||W.type!="point"&&W.type!="span"||!(F instanceof c.GlyphRenderer)||this.model.muted_policy=="ignore"&&F.muted)return;const X=this.ttmodels.get(F);if(X==null)return;const ae=F.get_selection_manager(),me=ae.inspectors.get(F),Ve=F.view.convert_selection_to_subset(me);if(me.is_empty()&&me.view==null)return void X.clear();const Je=ae.source,rt=this.plot_view.renderer_view(F);if(rt==null)return;const{sx:yt,sy:xt}=W,r1=rt.coordinates.x_scale,t1=rt.coordinates.y_scale,Bt=r1.invert(yt),Kt=t1.invert(xt),{glyph:wt}=rt,Rt=[];if(wt instanceof s.PatchView){const[Ht,dt]=[yt,xt],Wt={x:Bt,y:Kt,sx:yt,sy:xt,rx:Ht,ry:dt,name:F.name};Rt.push([Ht,dt,this._render_tooltips(Je,-1,Wt)])}if(wt instanceof a.HAreaView)for(const Ht of Ve.line_indices){const dt=wt._x1,Wt=wt._x2,jt=wt._y,[a1,ye]=[yt,xt],ie={index:Ht,x:Bt,y:Kt,sx:yt,sy:xt,data_x1:dt,data_x2:Wt,data_y:jt,rx:a1,ry:ye,indices:Ve.line_indices,name:F.name};Rt.push([a1,ye,this._render_tooltips(Je,Ht,ie)])}if(wt instanceof u.VAreaView)for(const Ht of Ve.line_indices){const dt=wt._x,Wt=wt._y1,jt=wt._y2,[a1,ye]=[yt,xt],ie={index:Ht,x:Bt,y:Kt,sx:yt,sy:xt,data_x:dt,data_y1:Wt,data_y2:jt,rx:a1,ry:ye,indices:Ve.line_indices,name:F.name};Rt.push([a1,ye,this._render_tooltips(Je,Ht,ie)])}if(wt instanceof i.LineView)for(const Ht of Ve.line_indices){let dt,Wt,jt=wt._x[Ht+1],a1=wt._y[Ht+1],ye=Ht;switch(this.model.line_policy){case"interp":[jt,a1]=wt.get_interpolation_hit(Ht,W),dt=r1.compute(jt),Wt=t1.compute(a1);break;case"prev":[[dt,Wt],ye]=B(wt.sx,wt.sy,Ht);break;case"next":[[dt,Wt],ye]=B(wt.sx,wt.sy,Ht+1);break;case"nearest":[[dt,Wt],ye]=N(Ht,W,yt,xt,wt.sx,wt.sy),jt=wt._x[ye],a1=wt._y[ye];break;default:[dt,Wt]=[yt,xt]}const ie={index:ye,x:Bt,y:Kt,sx:yt,sy:xt,data_x:jt,data_y:a1,rx:dt,ry:Wt,indices:Ve.line_indices,name:F.name};Rt.push([dt,Wt,this._render_tooltips(Je,ye,ie)])}for(const Ht of me.image_indices){const dt={index:Ht.index,x:Bt,y:Kt,sx:yt,sy:xt,name:F.name},Wt=this._render_tooltips(Je,Ht,dt);Rt.push([yt,xt,Wt])}for(const Ht of Ve.indices)if(wt instanceof t.MultiLineView&&!(0,b.isEmpty)(Ve.multiline_indices))for(const dt of Ve.multiline_indices[Ht.toString()]){let Wt,jt,a1,ye=wt._xs.get(Ht)[dt],ie=wt._ys.get(Ht)[dt],nt=dt;switch(this.model.line_policy){case"interp":[ye,ie]=wt.get_interpolation_hit(Ht,dt,W),Wt=r1.compute(ye),jt=t1.compute(ie);break;case"prev":[[Wt,jt],nt]=B(wt.sxs.get(Ht),wt.sys.get(Ht),dt);break;case"next":[[Wt,jt],nt]=B(wt.sxs.get(Ht),wt.sys.get(Ht),dt+1);break;case"nearest":[[Wt,jt],nt]=N(dt,W,yt,xt,wt.sxs.get(Ht),wt.sys.get(Ht)),ye=wt._xs.get(Ht)[nt],ie=wt._ys.get(Ht)[nt];break;default:throw new Error("shouldn't have happened")}a1=F instanceof c.GlyphRenderer?F.view.convert_indices_from_subset([Ht])[0]:Ht;const St={index:a1,x:Bt,y:Kt,sx:yt,sy:xt,data_x:ye,data_y:ie,segment_index:nt,indices:Ve.multiline_indices,name:F.name};Rt.push([Wt,jt,this._render_tooltips(Je,a1,St)])}else{const dt=(U=wt._x)===null||U===void 0?void 0:U[Ht],Wt=(q=wt._y)===null||q===void 0?void 0:q[Ht];let jt,a1,ye;if(this.model.point_policy=="snap_to_data"){let nt=wt.get_anchor_point(this.model.anchor,Ht,[yt,xt]);if(nt==null&&(nt=wt.get_anchor_point("center",Ht,[yt,xt]),nt==null))continue;jt=nt.x,a1=nt.y}else[jt,a1]=[yt,xt];ye=F instanceof c.GlyphRenderer?F.view.convert_indices_from_subset([Ht])[0]:Ht;const ie={index:ye,x:Bt,y:Kt,sx:yt,sy:xt,data_x:dt,data_y:Wt,indices:Ve.indices,name:F.name};Rt.push([jt,a1,this._render_tooltips(Je,ye,ie)])}if(Rt.length==0)X.clear();else{const{content:Ht}=X;(0,m.empty)(X.content);for(const[,,jt]of Rt)jt!=null&&Ht.appendChild(jt);const[dt,Wt]=Rt[Rt.length-1];X.setv({position:[dt,Wt]},{check_eq:!1})}}_emit_callback(F){const{callback:W}=this.model;if(W!=null)for(const U of this.computed_renderers){if(!(U instanceof c.GlyphRenderer))continue;const q=this.plot_view.renderer_view(U);if(q==null)continue;const{x_scale:X,y_scale:ae}=q.coordinates,me=X.invert(F.sx),Ve=ae.invert(F.sy),Je=U.data_source.inspected;W.execute(this.model,{geometry:Object.assign({x:me,y:Ve},F),renderer:U,index:Je})}}_create_template(F){const W=(0,m.div)({style:{display:"table",borderSpacing:"2px"}});for(const[U]of F){const q=(0,m.div)({style:{display:"table-row"}});W.appendChild(q);const X=(0,m.div)({style:{display:"table-cell"},class:E.tooltip_row_label},U.length!=0?`${U}: `:"");q.appendChild(X);const ae=(0,m.span)();ae.dataset.value="";const me=(0,m.span)({class:E.tooltip_color_block}," ");me.dataset.swatch="",(0,m.undisplay)(me);const Ve=(0,m.div)({style:{display:"table-cell"},class:E.tooltip_row_value},ae,me);q.appendChild(Ve)}return W}_render_template(F,W,U,q,X){const ae=F.cloneNode(!0),me=ae.querySelectorAll("[data-value]"),Ve=ae.querySelectorAll("[data-swatch]"),Je=/\$color(\[.*\])?:(\w*)/,rt=/\$swatch:(\w*)/;for(const[[,yt],xt]of(0,y.enumerate)(W)){const r1=yt.match(rt),t1=yt.match(Je);if(r1!=null||t1!=null){if(r1!=null){const[,Bt]=r1,Kt=U.get_column(Bt);if(Kt==null)me[xt].textContent=`${Bt} unknown`;else{const wt=(0,A.isNumber)(q)?Kt[q]:null;wt!=null&&(Ve[xt].style.backgroundColor=(0,f.color2css)(wt),(0,m.display)(Ve[xt]))}}if(t1!=null){const[,Bt="",Kt]=t1,wt=U.get_column(Kt);if(wt==null){me[xt].textContent=`${Kt} unknown`;continue}const Rt=Bt.indexOf("hex")>=0,Ht=Bt.indexOf("swatch")>=0,dt=(0,A.isNumber)(q)?wt[q]:null;if(dt==null){me[xt].textContent="(null)";continue}me[xt].textContent=Rt?(0,f.color2hex)(dt):(0,f.color2css)(dt),Ht&&(Ve[xt].style.backgroundColor=(0,f.color2css)(dt),(0,m.display)(Ve[xt]))}}else{const Bt=(0,d.replace_placeholders)(yt.replace("$~","$data_"),U,q,this.model.formatters,X);if((0,A.isString)(Bt))me[xt].textContent=Bt;else for(const Kt of Bt)me[xt].appendChild(Kt)}}return ae}_render_tooltips(F,W,U){var q;const{tooltips:X}=this.model;if((0,A.isString)(X)){const ae=(0,d.replace_placeholders)({html:X},F,W,this.model.formatters,U);return(0,m.div)(ae)}if((0,A.isFunction)(X))return X(F,U);if(X instanceof P.Template)return this._template_view.update(F,W,U),this._template_view.el;if(X!=null){const ae=(q=this._template_el)!==null&&q!==void 0?q:this._template_el=this._create_template(X);return this._render_template(ae,X,F,W,U)}return null}}e.HoverToolView=D,D.__name__="HoverToolView";class j extends g.InspectTool{constructor(F){super(F),this.tool_name="Hover",this.icon=H.tool_icon_hover}}e.HoverTool=j,w=j,j.__name__="HoverTool",w.prototype.default_view=D,w.define(({Any:M,Boolean:F,String:W,Array:U,Tuple:q,Dict:X,Or:ae,Ref:me,Function:Ve,Auto:Je,Nullable:rt})=>({tooltips:[rt(ae(me(P.Template),W,U(q(W,W)),Ve())),[["index","$index"],["data (x, y)","($x, $y)"],["screen (x, y)","($sx, $sy)"]]],formatters:[X(ae(me(p.CustomJSHover),d.FormatterType)),{}],renderers:[ae(U(me(r.DataRenderer)),Je),"auto"],names:[U(W),[]],mode:[x.HoverMode,"mouse"],muted_policy:[x.MutedPolicy,"show"],point_policy:[x.PointPolicy,"snap_to_data"],line_policy:[x.LinePolicy,"nearest"],show_arrow:[F,!0],anchor:[x.Anchor,"center"],attachment:[x.TooltipAttachment,"horizontal"],callback:[rt(M)]})),w.register_alias("hover",()=>new j)},function(Q,O,e,C,R){C();const v=Q(1);var w,g,p,T,c,o,r,i,t,s,a,u,l;const d=Q(53),m=Q(309),f=Q(393);R("Styles",f.Styles);const b=Q(43),y=Q(42),A=Q(226),L=Q(113),x=Q(8),H=Q(13),S=(0,v.__importStar)(Q(242)),k=Q(152);class E extends A.DOMView{}e.DOMNodeView=E,E.__name__="DOMNodeView";class P extends d.Model{constructor(ie){super(ie)}}e.DOMNode=P,P.__name__="DOMNode",P.__module__="bokeh.models.dom";class N extends E{render(){super.render(),this.el.textContent=this.model.content}_createElement(){return document.createTextNode("")}}e.TextView=N,N.__name__="TextView";class B extends P{constructor(ie){super(ie)}}e.Text=B,w=B,B.__name__="Text",w.prototype.default_view=N,w.define(({String:ye})=>({content:[ye,""]}));class D extends E{}e.PlaceholderView=D,D.__name__="PlaceholderView",D.tag_name="span";class j extends P{constructor(ie){super(ie)}}e.Placeholder=j,g=j,j.__name__="Placeholder",g.define(({})=>({}));class M extends D{update(ie,nt,St){this.el.textContent=nt.toString()}}e.IndexView=M,M.__name__="IndexView";class F extends j{constructor(ie){super(ie)}}e.Index=F,p=F,F.__name__="Index",p.prototype.default_view=M,p.define(({})=>({}));class W extends D{update(ie,nt,St){const mt=(0,k._get_column_value)(this.model.field,ie,nt),Pt=mt==null?"???":`${mt}`;this.el.textContent=Pt}}e.ValueRefView=W,W.__name__="ValueRefView";class U extends j{constructor(ie){super(ie)}}e.ValueRef=U,T=U,U.__name__="ValueRef",T.prototype.default_view=W,T.define(({String:ye})=>({field:[ye]}));class q extends W{render(){super.render(),this.value_el=(0,b.span)(),this.swatch_el=(0,b.span)({class:S.tooltip_color_block}," "),this.el.appendChild(this.value_el),this.el.appendChild(this.swatch_el)}update(ie,nt,St){const mt=(0,k._get_column_value)(this.model.field,ie,nt),Pt=mt==null?"???":`${mt}`;this.el.textContent=Pt}}e.ColorRefView=q,q.__name__="ColorRefView";class X extends U{constructor(ie){super(ie)}}e.ColorRef=X,c=X,X.__name__="ColorRef",c.prototype.default_view=q,c.define(({Boolean:ye})=>({hex:[ye,!0],swatch:[ye,!0]}));class ae extends E{constructor(){super(...arguments),this.child_views=new Map}async lazy_initialize(){await super.lazy_initialize();const ie=this.model.children.filter(nt=>nt instanceof d.Model);await(0,L.build_views)(this.child_views,ie,{parent:this})}render(){super.render();const{style:ie}=this.model;if(ie!=null)if(ie instanceof f.Styles)for(const nt of ie){const St=nt.get_value();if((0,x.isString)(St)){const mt=nt.attr.replace(/_/g,"-");this.el.style.hasOwnProperty(mt)&&this.el.style.setProperty(mt,St)}}else for(const[nt,St]of(0,H.entries)(ie)){const mt=nt.replace(/_/g,"-");this.el.style.hasOwnProperty(mt)&&this.el.style.setProperty(mt,St)}for(const nt of this.model.children)if((0,x.isString)(nt)){const St=document.createTextNode(nt);this.el.appendChild(St)}else this.child_views.get(nt).renderTo(this.el)}}e.DOMElementView=ae,ae.__name__="DOMElementView";class me extends P{constructor(ie){super(ie)}}e.DOMElement=me,o=me,me.__name__="DOMElement",o.define(({String:ye,Array:ie,Dict:nt,Or:St,Nullable:mt,Ref:Pt})=>({style:[mt(St(Pt(f.Styles),nt(ye))),null],children:[ie(St(ye,Pt(P),Pt(m.LayoutDOM))),[]]}));class Ve extends y.View{}e.ActionView=Ve,Ve.__name__="ActionView";class Je extends d.Model{constructor(ie){super(ie)}}e.Action=Je,r=Je,Je.__name__="Action",Je.__module__="bokeh.models.dom",r.define(({})=>({}));class rt extends ae{constructor(){super(...arguments),this.action_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await(0,L.build_views)(this.action_views,this.model.actions,{parent:this})}remove(){(0,L.remove_views)(this.action_views),super.remove()}update(ie,nt,St={}){(function mt(Pt){for(const Xt of Pt.child_views.values())Xt instanceof D?Xt.update(ie,nt,St):Xt instanceof ae&&mt(Xt)})(this);for(const mt of this.action_views.values())mt.update(ie,nt,St)}}e.TemplateView=rt,rt.__name__="TemplateView",rt.tag_name="div";class yt extends me{}e.Template=yt,i=yt,yt.__name__="Template",i.prototype.default_view=rt,i.define(({Array:ye,Ref:ie})=>({actions:[ye(ie(Je)),[]]}));class xt extends ae{}e.SpanView=xt,xt.__name__="SpanView",xt.tag_name="span";class r1 extends me{}e.Span=r1,t=r1,r1.__name__="Span",t.prototype.default_view=xt;class t1 extends ae{}e.DivView=t1,t1.__name__="DivView",t1.tag_name="div";class Bt extends me{}e.Div=Bt,s=Bt,Bt.__name__="Div",s.prototype.default_view=t1;class Kt extends ae{}e.TableView=Kt,Kt.__name__="TableView",Kt.tag_name="table";class wt extends me{}e.Table=wt,a=wt,wt.__name__="Table",a.prototype.default_view=Kt;class Rt extends ae{}e.TableRowView=Rt,Rt.__name__="TableRowView",Rt.tag_name="tr";class Ht extends me{}e.TableRow=Ht,u=Ht,Ht.__name__="TableRow",u.prototype.default_view=Rt;const dt=Q(41),Wt=Q(234);class jt extends Ve{update(ie,nt,St){for(const[mt,Pt]of(0,Wt.enumerate)(this.model.groups))mt.visible=nt==Pt}}e.ToggleGroupView=jt,jt.__name__="ToggleGroupView";class a1 extends Je{constructor(ie){super(ie)}}e.ToggleGroup=a1,l=a1,a1.__name__="ToggleGroup",l.prototype.default_view=jt,l.define(({Array:ye,Ref:ie})=>({groups:[ye(ie(dt.RendererGroup)),[]]}))},function(V,Q,O,e,C){var R;e();const v=V(53);class w extends v.Model{constructor(p){super(p)}}O.Styles=w,R=w,w.__name__="Styles",w.__module__="bokeh.models.css",R.define(({String:g,Nullable:p})=>({align_content:[p(g),null],align_items:[p(g),null],align_self:[p(g),null],alignment_baseline:[p(g),null],all:[p(g),null],animation:[p(g),null],animation_delay:[p(g),null],animation_direction:[p(g),null],animation_duration:[p(g),null],animation_fill_mode:[p(g),null],animation_iteration_count:[p(g),null],animation_name:[p(g),null],animation_play_state:[p(g),null],animation_timing_function:[p(g),null],backface_visibility:[p(g),null],background:[p(g),null],background_attachment:[p(g),null],background_clip:[p(g),null],background_color:[p(g),null],background_image:[p(g),null],background_origin:[p(g),null],background_position:[p(g),null],background_position_x:[p(g),null],background_position_y:[p(g),null],background_repeat:[p(g),null],background_size:[p(g),null],baseline_shift:[p(g),null],block_size:[p(g),null],border:[p(g),null],border_block_end:[p(g),null],border_block_end_color:[p(g),null],border_block_end_style:[p(g),null],border_block_end_width:[p(g),null],border_block_start:[p(g),null],border_block_start_color:[p(g),null],border_block_start_style:[p(g),null],border_block_start_width:[p(g),null],border_bottom:[p(g),null],border_bottom_color:[p(g),null],border_bottom_left_radius:[p(g),null],border_bottom_right_radius:[p(g),null],border_bottom_style:[p(g),null],border_bottom_width:[p(g),null],border_collapse:[p(g),null],border_color:[p(g),null],border_image:[p(g),null],border_image_outset:[p(g),null],border_image_repeat:[p(g),null],border_image_slice:[p(g),null],border_image_source:[p(g),null],border_image_width:[p(g),null],border_inline_end:[p(g),null],border_inline_end_color:[p(g),null],border_inline_end_style:[p(g),null],border_inline_end_width:[p(g),null],border_inline_start:[p(g),null],border_inline_start_color:[p(g),null],border_inline_start_style:[p(g),null],border_inline_start_width:[p(g),null],border_left:[p(g),null],border_left_color:[p(g),null],border_left_style:[p(g),null],border_left_width:[p(g),null],border_radius:[p(g),null],border_right:[p(g),null],border_right_color:[p(g),null],border_right_style:[p(g),null],border_right_width:[p(g),null],border_spacing:[p(g),null],border_style:[p(g),null],border_top:[p(g),null],border_top_color:[p(g),null],border_top_left_radius:[p(g),null],border_top_right_radius:[p(g),null],border_top_style:[p(g),null],border_top_width:[p(g),null],border_width:[p(g),null],bottom:[p(g),null],box_shadow:[p(g),null],box_sizing:[p(g),null],break_after:[p(g),null],break_before:[p(g),null],break_inside:[p(g),null],caption_side:[p(g),null],caret_color:[p(g),null],clear:[p(g),null],clip:[p(g),null],clip_path:[p(g),null],clip_rule:[p(g),null],color:[p(g),null],color_interpolation:[p(g),null],color_interpolation_filters:[p(g),null],column_count:[p(g),null],column_fill:[p(g),null],column_gap:[p(g),null],column_rule:[p(g),null],column_rule_color:[p(g),null],column_rule_style:[p(g),null],column_rule_width:[p(g),null],column_span:[p(g),null],column_width:[p(g),null],columns:[p(g),null],content:[p(g),null],counter_increment:[p(g),null],counter_reset:[p(g),null],css_float:[p(g),null],css_text:[p(g),null],cursor:[p(g),null],direction:[p(g),null],display:[p(g),null],dominant_baseline:[p(g),null],empty_cells:[p(g),null],fill:[p(g),null],fill_opacity:[p(g),null],fill_rule:[p(g),null],filter:[p(g),null],flex:[p(g),null],flex_basis:[p(g),null],flex_direction:[p(g),null],flex_flow:[p(g),null],flex_grow:[p(g),null],flex_shrink:[p(g),null],flex_wrap:[p(g),null],float:[p(g),null],flood_color:[p(g),null],flood_opacity:[p(g),null],font:[p(g),null],font_family:[p(g),null],font_feature_settings:[p(g),null],font_kerning:[p(g),null],font_size:[p(g),null],font_size_adjust:[p(g),null],font_stretch:[p(g),null],font_style:[p(g),null],font_synthesis:[p(g),null],font_variant:[p(g),null],font_variant_caps:[p(g),null],font_variant_east_asian:[p(g),null],font_variant_ligatures:[p(g),null],font_variant_numeric:[p(g),null],font_variant_position:[p(g),null],font_weight:[p(g),null],gap:[p(g),null],glyph_orientation_vertical:[p(g),null],grid:[p(g),null],grid_area:[p(g),null],grid_auto_columns:[p(g),null],grid_auto_flow:[p(g),null],grid_auto_rows:[p(g),null],grid_column:[p(g),null],grid_column_end:[p(g),null],grid_column_gap:[p(g),null],grid_column_start:[p(g),null],grid_gap:[p(g),null],grid_row:[p(g),null],grid_row_end:[p(g),null],grid_row_gap:[p(g),null],grid_row_start:[p(g),null],grid_template:[p(g),null],grid_template_areas:[p(g),null],grid_template_columns:[p(g),null],grid_template_rows:[p(g),null],height:[p(g),null],hyphens:[p(g),null],image_orientation:[p(g),null],image_rendering:[p(g),null],inline_size:[p(g),null],justify_content:[p(g),null],justify_items:[p(g),null],justify_self:[p(g),null],left:[p(g),null],letter_spacing:[p(g),null],lighting_color:[p(g),null],line_break:[p(g),null],line_height:[p(g),null],list_style:[p(g),null],list_style_image:[p(g),null],list_style_position:[p(g),null],list_style_type:[p(g),null],margin:[p(g),null],margin_block_end:[p(g),null],margin_block_start:[p(g),null],margin_bottom:[p(g),null],margin_inline_end:[p(g),null],margin_inline_start:[p(g),null],margin_left:[p(g),null],margin_right:[p(g),null],margin_top:[p(g),null],marker:[p(g),null],marker_end:[p(g),null],marker_mid:[p(g),null],marker_start:[p(g),null],mask:[p(g),null],mask_composite:[p(g),null],mask_image:[p(g),null],mask_position:[p(g),null],mask_repeat:[p(g),null],mask_size:[p(g),null],mask_type:[p(g),null],max_block_size:[p(g),null],max_height:[p(g),null],max_inline_size:[p(g),null],max_width:[p(g),null],min_block_size:[p(g),null],min_height:[p(g),null],min_inline_size:[p(g),null],min_width:[p(g),null],object_fit:[p(g),null],object_position:[p(g),null],opacity:[p(g),null],order:[p(g),null],orphans:[p(g),null],outline:[p(g),null],outline_color:[p(g),null],outline_offset:[p(g),null],outline_style:[p(g),null],outline_width:[p(g),null],overflow:[p(g),null],overflow_anchor:[p(g),null],overflow_wrap:[p(g),null],overflow_x:[p(g),null],overflow_y:[p(g),null],overscroll_behavior:[p(g),null],overscroll_behavior_block:[p(g),null],overscroll_behavior_inline:[p(g),null],overscroll_behavior_x:[p(g),null],overscroll_behavior_y:[p(g),null],padding:[p(g),null],padding_block_end:[p(g),null],padding_block_start:[p(g),null],padding_bottom:[p(g),null],padding_inline_end:[p(g),null],padding_inline_start:[p(g),null],padding_left:[p(g),null],padding_right:[p(g),null],padding_top:[p(g),null],page_break_after:[p(g),null],page_break_before:[p(g),null],page_break_inside:[p(g),null],paint_order:[p(g),null],perspective:[p(g),null],perspective_origin:[p(g),null],place_content:[p(g),null],place_items:[p(g),null],place_self:[p(g),null],pointer_events:[p(g),null],position:[p(g),null],quotes:[p(g),null],resize:[p(g),null],right:[p(g),null],rotate:[p(g),null],row_gap:[p(g),null],ruby_align:[p(g),null],ruby_position:[p(g),null],scale:[p(g),null],scroll_behavior:[p(g),null],shape_rendering:[p(g),null],stop_color:[p(g),null],stop_opacity:[p(g),null],stroke:[p(g),null],stroke_dasharray:[p(g),null],stroke_dashoffset:[p(g),null],stroke_linecap:[p(g),null],stroke_linejoin:[p(g),null],stroke_miterlimit:[p(g),null],stroke_opacity:[p(g),null],stroke_width:[p(g),null],tab_size:[p(g),null],table_layout:[p(g),null],text_align:[p(g),null],text_align_last:[p(g),null],text_anchor:[p(g),null],text_combine_upright:[p(g),null],text_decoration:[p(g),null],text_decoration_color:[p(g),null],text_decoration_line:[p(g),null],text_decoration_style:[p(g),null],text_emphasis:[p(g),null],text_emphasis_color:[p(g),null],text_emphasis_position:[p(g),null],text_emphasis_style:[p(g),null],text_indent:[p(g),null],text_justify:[p(g),null],text_orientation:[p(g),null],text_overflow:[p(g),null],text_rendering:[p(g),null],text_shadow:[p(g),null],text_transform:[p(g),null],text_underline_position:[p(g),null],top:[p(g),null],touch_action:[p(g),null],transform:[p(g),null],transform_box:[p(g),null],transform_origin:[p(g),null],transform_style:[p(g),null],transition:[p(g),null],transition_delay:[p(g),null],transition_duration:[p(g),null],transition_property:[p(g),null],transition_timing_function:[p(g),null],translate:[p(g),null],unicode_bidi:[p(g),null],user_select:[p(g),null],vertical_align:[p(g),null],visibility:[p(g),null],white_space:[p(g),null],widows:[p(g),null],width:[p(g),null],will_change:[p(g),null],word_break:[p(g),null],word_spacing:[p(g),null],word_wrap:[p(g),null],writing_mode:[p(g),null],z_index:[p(g),null]}))},function(Q,O,e,C,R){var v;C();const w=Q(15),g=Q(53),p=Q(224),T=Q(232),c=Q(234);class o extends g.Model{constructor(i){super(i)}get button_view(){return this.tools[0].button_view}get event_type(){return this.tools[0].event_type}get tooltip(){return this.tools[0].tooltip}get tool_name(){return this.tools[0].tool_name}get icon(){return this.tools[0].computed_icon}get computed_icon(){return this.icon}get toggleable(){const i=this.tools[0];return i instanceof T.InspectTool&&i.toggleable}initialize(){super.initialize(),this.do=new w.Signal0(this,"do")}connect_signals(){super.connect_signals(),this.connect(this.do,()=>this.doit()),this.connect(this.properties.active.change,()=>this.set_active());for(const i of this.tools)this.connect(i.properties.active.change,()=>{this.active=i.active})}doit(){for(const i of this.tools)i.do.emit()}set_active(){for(const i of this.tools)i.active=this.active}get menu(){const{menu:i}=this.tools[0];if(i==null)return null;const t=[];for(const[s,a]of(0,c.enumerate)(i))if(s==null)t.push(null);else{const u=()=>{var l,d,m;for(const f of this.tools)(m=(d=(l=f.menu)===null||l===void 0?void 0:l[a])===null||d===void 0?void 0:d.handler)===null||m===void 0||m.call(d)};t.push(Object.assign(Object.assign({},s),{handler:u}))}return t}}e.ToolProxy=o,v=o,o.__name__="ToolProxy",v.define(({Boolean:r,Array:i,Ref:t})=>({tools:[i(t(p.ButtonTool)),[]],active:[r,!1],disabled:[r,!1]}))},function(Q,O,e,C,R){var v,w;C();const g=Q(20),p=Q(9),T=Q(13),c=Q(233),o=Q(221),r=Q(394),i=Q(309),t=Q(207);class s extends c.ToolbarBase{constructor(d){super(d)}initialize(){super.initialize(),this._merge_tools()}_merge_tools(){this._proxied_tools=[];const d={},m={},f={},b=[],y=[];for(const L of this.help)(0,p.includes)(y,L.redirect)||(b.push(L),y.push(L.redirect));this._proxied_tools.push(...b),this.help=b;for(const[L,x]of(0,T.entries)(this.gestures)){L in f||(f[L]={});for(const H of x.tools)H.type in f[L]||(f[L][H.type]=[]),f[L][H.type].push(H)}for(const L of this.inspectors)L.type in d||(d[L.type]=[]),d[L.type].push(L);for(const L of this.actions)L.type in m||(m[L.type]=[]),m[L.type].push(L);const A=(L,x=!1)=>{const H=new r.ToolProxy({tools:L,active:x});return this._proxied_tools.push(H),H};for(const L of(0,T.keys)(f)){const x=this.gestures[L];x.tools=[];for(const H of(0,T.keys)(f[L])){const S=f[L][H];if(S.length>0)if(L=="multi")for(const k of S){const E=A([k]);x.tools.push(E),this.connect(E.properties.active.change,()=>this._active_change(E))}else{const k=A(S);x.tools.push(k),this.connect(k.properties.active.change,()=>this._active_change(k))}}}this.actions=[];for(const[L,x]of(0,T.entries)(m))if(L=="CustomAction")for(const H of x)this.actions.push(A([H]));else x.length>0&&this.actions.push(A(x));this.inspectors=[];for(const L of(0,T.values)(d))L.length>0&&this.inspectors.push(A(L,!0));for(const[L,x]of(0,T.entries)(this.gestures))x.tools.length!=0&&(x.tools=(0,p.sort_by)(x.tools,H=>H.default_order),L!="pinch"&&L!="scroll"&&L!="multi"&&(x.tools[0].active=!0))}}e.ProxyToolbar=s,v=s,s.__name__="ProxyToolbar",v.define(({Array:l,Ref:d})=>({toolbars:[l(d(o.Toolbar)),[]]}));class a extends i.LayoutDOMView{initialize(){this.model.toolbar.toolbar_location=this.model.toolbar_location,super.initialize()}get child_models(){return[this.model.toolbar]}_update_layout(){this.layout=new t.ContentBox(this.child_views[0].el);const{toolbar:d}=this.model;d.horizontal?this.layout.set_sizing({width_policy:"fit",min_width:100,height_policy:"fixed"}):this.layout.set_sizing({width_policy:"fixed",height_policy:"fit",min_height:100})}after_layout(){super.after_layout();const d=this.child_views[0];d.layout.bbox=this.layout.bbox,d.render()}}e.ToolbarBoxView=a,a.__name__="ToolbarBoxView";class u extends i.LayoutDOM{constructor(d){super(d)}}e.ToolbarBox=u,w=u,u.__name__="ToolbarBox",w.prototype.default_view=a,w.define(({Ref:l})=>({toolbar:[l(c.ToolbarBase)],toolbar_location:[g.Location,"right"]}))},function(Q,O,e,C,R){C();const v=Q(1),w=Q(53),g=(0,v.__importStar)(Q(21)),p=Q(8),T=Q(13);e.resolve_defs=function(c,o){var r,i,t,s;function a(l){return l.module!=null?`${l.module}.${l.name}`:l.name}function u(l){if((0,p.isString)(l))switch(l){case"Any":return g.Any;case"Unknown":return g.Unknown;case"Boolean":return g.Boolean;case"Number":return g.Number;case"Int":return g.Int;case"String":return g.String;case"Null":return g.Null}else switch(l[0]){case"Nullable":{const[,d]=l;return g.Nullable(u(d))}case"Or":{const[,...d]=l;return g.Or(...d.map(u))}case"Tuple":{const[,d,...m]=l;return g.Tuple(u(d),...m.map(u))}case"Array":{const[,d]=l;return g.Array(u(d))}case"Struct":{const[,...d]=l,m=d.map(([f,b])=>[f,u(b)]);return g.Struct((0,T.to_object)(m))}case"Dict":{const[,d]=l;return g.Dict(u(d))}case"Map":{const[,d,m]=l;return g.Map(u(d),u(m))}case"Enum":{const[,...d]=l;return g.Enum(...d)}case"Ref":{const[,d]=l,m=o.get(a(d));if(m!=null)return g.Ref(m);throw new Error(`${a(d)} wasn't defined before referencing it`)}case"AnyRef":return g.AnyRef()}}for(const l of c){const d=(()=>{if(l.extends==null)return w.Model;{const f=o.get(a(l.extends));if(f!=null)return f;throw new Error(`base model ${a(l.extends)} of ${a(l)} is not defined`)}})(),m=((s=class extends d{}).__name__=l.name,s.__module__=l.module,s);for(const f of(r=l.properties)!==null&&r!==void 0?r:[]){const b=u((i=f.kind)!==null&&i!==void 0?i:"Unknown");m.define({[f.name]:[b,f.default]})}for(const f of(t=l.overrides)!==null&&t!==void 0?t:[])m.override({[f.name]:f.default});o.register(m)}}},function(Q,O,e,C,R){C();const v=Q(5),w=Q(226),g=Q(113),p=Q(43),T=Q(398);e.index={},e.add_document_standalone=async function(c,o,r=[],i=!1){const t=new Map;async function s(a){let u;const l=c.roots().indexOf(a),d=r[l];d!=null?u=d:o.classList.contains(T.BOKEH_ROOT)?u=o:(u=(0,p.div)({class:T.BOKEH_ROOT}),o.appendChild(u));const m=await(0,g.build_view)(a,{parent:null});return m instanceof w.DOMView&&m.renderTo(u),t.set(a,m),e.index[a.id]=m,m}for(const a of c.roots())await s(a);return i&&(window.document.title=c.title()),c.on_change(a=>{a instanceof v.RootAddedEvent?s(a.model):a instanceof v.RootRemovedEvent?function(u){const l=t.get(u);l!=null&&(l.remove(),t.delete(u),delete e.index[u.id])}(a.model):i&&a instanceof v.TitleChangedEvent&&(window.document.title=a.title)}),[...t.values()]}},function(Q,O,e,C,R){C();const v=Q(43),w=Q(44);function g(p){let T=document.getElementById(p);if(T==null)throw new Error(`Error rendering Bokeh model: could not find #${p} HTML tag`);if(!document.body.contains(T))throw new Error(`Error rendering Bokeh model: element #${p} must be under <body>`);if(T.tagName=="SCRIPT"){const c=(0,v.div)({class:e.BOKEH_ROOT});(0,v.replaceWith)(T,c),T=c}return T}e.BOKEH_ROOT=w.root,e._resolve_element=function(p){const{elementid:T}=p;return T!=null?g(T):document.body},e._resolve_root_elements=function(p){const T=[];if(p.root_ids!=null&&p.roots!=null)for(const c of p.root_ids)T.push(g(p.roots[c]));return T}},function(Q,O,e,C,R){C();const v=Q(400),w=Q(19),g=Q(397);e._get_ws_url=function(T,c){let o,r="ws:";return window.location.protocol=="https:"&&(r="wss:"),c!=null?(o=document.createElement("a"),o.href=c):o=window.location,T!=null?T=="/"&&(T=""):T=o.pathname.replace(/\/+$/,""),`${r}//${o.host}${T}/ws`};const p={};e.add_document_from_session=async function(T,c,o,r=[],i=!1){const t=window.location.search.substr(1);let s;try{s=await function(a,u,l){const d=(0,v.parse_token)(u).session_id;a in p||(p[a]={});const m=p[a];return d in m||(m[d]=(0,v.pull_session)(a,u,l)),m[d]}(T,c,t)}catch(a){const u=(0,v.parse_token)(c).session_id;throw w.logger.error(`Failed to load Bokeh session ${u}: ${a}`),a}return(0,g.add_document_standalone)(s.document,o,r,i)}},function(Q,O,e,C,R){C();const v=Q(19),w=Q(5),g=Q(401),p=Q(402),T=Q(403);e.DEFAULT_SERVER_WEBSOCKET_URL="ws://localhost:5006/ws",e.DEFAULT_TOKEN="eyJzZXNzaW9uX2lkIjogImRlZmF1bHQifQ";let c=0;function o(i){let t=i.split(".")[0];const s=t.length%4;return s!=0&&(t+="=".repeat(4-s)),JSON.parse(atob(t.replace(/_/g,"/").replace(/-/g,"+")))}e.parse_token=o;class r{constructor(t=e.DEFAULT_SERVER_WEBSOCKET_URL,s=e.DEFAULT_TOKEN,a=null){this.url=t,this.token=s,this.args_string=a,this._number=c++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_replies=new Map,this._pending_messages=[],this._receiver=new p.Receiver,this.id=o(s).session_id.split(".")[0],v.logger.debug(`Creating websocket ${this._number} to '${this.url}' session '${this.id}'`)}async connect(){if(this.closed_permanently)throw new Error("Cannot connect() a closed ClientConnection");if(this.socket!=null)throw new Error("Already connected");this._current_handler=null,this._pending_replies.clear(),this._pending_messages=[];try{let t=`${this.url}`;return this.args_string!=null&&this.args_string.length>0&&(t+=`?${this.args_string}`),this.socket=new WebSocket(t,["bokeh",this.token]),new Promise((s,a)=>{this.socket.binaryType="arraybuffer",this.socket.onopen=()=>this._on_open(s,a),this.socket.onmessage=u=>this._on_message(u),this.socket.onclose=u=>this._on_close(u,a),this.socket.onerror=()=>this._on_error(a)})}catch(t){throw v.logger.error(`websocket creation failed to url: ${this.url}`),v.logger.error(` - ${t}`),t}}close(){this.closed_permanently||(v.logger.debug(`Permanently closing websocket connection ${this._number}`),this.closed_permanently=!0,this.socket!=null&&this.socket.close(1e3,`close method called on ClientConnection ${this._number}`),this.session._connection_closed())}_schedule_reconnect(t){setTimeout(()=>{this.closed_permanently||v.logger.info(`Websocket connection ${this._number} disconnected, will not attempt to reconnect`)},t)}send(t){if(this.socket==null)throw new Error(`not connected so cannot send ${t}`);t.send(this.socket)}async send_with_reply(t){const s=await new Promise((a,u)=>{this._pending_replies.set(t.msgid(),{resolve:a,reject:u}),this.send(t)});if(s.msgtype()==="ERROR")throw new Error(`Error reply ${s.content.text}`);return s}async _pull_doc_json(){const t=g.Message.create("PULL-DOC-REQ",{}),s=await this.send_with_reply(t);if(!("doc"in s.content))throw new Error("No 'doc' field in PULL-DOC-REPLY");return s.content.doc}async _repull_session_doc(t,s){var a;v.logger.debug(this.session?"Repulling session":"Pulling session for first time");try{const u=await this._pull_doc_json();if(this.session==null)if(this.closed_permanently)v.logger.debug("Got new document after connection was already closed"),s(new Error("The connection has been closed"));else{const l=w.Document.from_json(u),d=w.Document._compute_patch_since_json(u,l);if(d.events.length>0){v.logger.debug(`Sending ${d.events.length} changes from model construction back to server`);const m=g.Message.create("PATCH-DOC",{},d);this.send(m)}this.session=new T.ClientSession(this,l,this.id);for(const m of this._pending_messages)this.session.handle(m);this._pending_messages=[],v.logger.debug("Created a new session from new pulled doc"),t(this.session)}else this.session.document.replace_with_json(u),v.logger.debug("Updated existing session with new pulled doc")}catch(u){(a=console.trace)===null||a===void 0||a.call(console,u),v.logger.error(`Failed to repull session ${u}`),s(u instanceof Error?u:`${u}`)}}_on_open(t,s){v.logger.info(`Websocket connection ${this._number} is now open`),this._current_handler=a=>{this._awaiting_ack_handler(a,t,s)}}_on_message(t){this._current_handler==null&&v.logger.error("Got a message with no current handler set");try{this._receiver.consume(t.data)}catch(a){this._close_bad_protocol(`${a}`)}const s=this._receiver.message;if(s!=null){const a=s.problem();a!=null&&this._close_bad_protocol(a),this._current_handler(s)}}_on_close(t,s){v.logger.info(`Lost websocket ${this._number} connection, ${t.code} (${t.reason})`),this.socket=null,this._pending_replies.forEach(a=>a.reject("Disconnected")),this._pending_replies.clear(),this.closed_permanently||this._schedule_reconnect(2e3),s(new Error(`Lost websocket connection, ${t.code} (${t.reason})`))}_on_error(t){v.logger.debug(`Websocket error on socket ${this._number}`);const s="Could not open websocket";v.logger.error(`Failed to connect to Bokeh server: ${s}`),t(new Error(s))}_close_bad_protocol(t){v.logger.error(`Closing connection: ${t}`),this.socket!=null&&this.socket.close(1002,t)}_awaiting_ack_handler(t,s,a){t.msgtype()==="ACK"?(this._current_handler=u=>this._steady_state_handler(u),this._repull_session_doc(s,a)):this._close_bad_protocol("First message was not an ACK")}_steady_state_handler(t){const s=t.reqid(),a=this._pending_replies.get(s);a?(this._pending_replies.delete(s),a.resolve(t)):this.session?this.session.handle(t):t.msgtype()!="PATCH-DOC"&&this._pending_messages.push(t)}}e.ClientConnection=r,r.__name__="ClientConnection",e.pull_session=function(i,t,s){return new r(i,t,s).connect()}},function(Q,O,e,C,R){C();const v=Q(34);class w{constructor(p,T,c){this.header=p,this.metadata=T,this.content=c,this.buffers=new Map}static assemble(p,T,c){const o=JSON.parse(p),r=JSON.parse(T),i=JSON.parse(c);return new w(o,r,i)}assemble_buffer(p,T){const c=this.header.num_buffers!=null?this.header.num_buffers:0;if(c<=this.buffers.size)throw new Error(`too many buffers received, expecting ${c}`);const{id:o}=JSON.parse(p);this.buffers.set(o,T)}static create(p,T,c={}){const o=w.create_header(p);return new w(o,T,c)}static create_header(p){return{msgid:(0,v.uniqueId)(),msgtype:p}}complete(){return this.header!=null&&this.metadata!=null&&this.content!=null&&(this.header.num_buffers==null||this.buffers.size==this.header.num_buffers)}send(p){if((this.header.num_buffers!=null?this.header.num_buffers:0)>0)throw new Error("BokehJS only supports receiving buffers, not sending");const T=JSON.stringify(this.header),c=JSON.stringify(this.metadata),o=JSON.stringify(this.content);p.send(T),p.send(c),p.send(o)}msgid(){return this.header.msgid}msgtype(){return this.header.msgtype}reqid(){return this.header.reqid}problem(){return"msgid"in this.header?"msgtype"in this.header?null:"No msgtype in header":"No msgid in header"}}e.Message=w,w.__name__="Message"},function(V,Q,O,e,C){e();const R=V(401),v=V(8);class w{constructor(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}consume(p){this._current_consumer(p)}_HEADER(p){this._assume_text(p),this.message=null,this._partial=null,this._fragments=[p],this._buf_header=null,this._current_consumer=this._METADATA}_METADATA(p){this._assume_text(p),this._fragments.push(p),this._current_consumer=this._CONTENT}_CONTENT(p){this._assume_text(p),this._fragments.push(p);const[T,c,o]=this._fragments.slice(0,3);this._partial=R.Message.assemble(T,c,o),this._check_complete()}_BUFFER_HEADER(p){this._assume_text(p),this._buf_header=p,this._current_consumer=this._BUFFER_PAYLOAD}_BUFFER_PAYLOAD(p){this._assume_binary(p),this._partial.assemble_buffer(this._buf_header,p),this._check_complete()}_assume_text(p){if(!(0,v.isString)(p))throw new Error("Expected text fragment but received binary fragment")}_assume_binary(p){if(!(p instanceof ArrayBuffer))throw new Error("Expected binary fragment but received text fragment")}_check_complete(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER}}O.Receiver=w,w.__name__="Receiver"},function(Q,O,e,C,R){C();const v=Q(5),w=Q(401),g=Q(19);class p{constructor(c,o,r){this._connection=c,this.document=o,this.id=r,this._document_listener=i=>{this._document_changed(i)},this.document.on_change(this._document_listener,!0)}handle(c){const o=c.msgtype();o==="PATCH-DOC"?this._handle_patch(c):o==="OK"?this._handle_ok(c):o==="ERROR"?this._handle_error(c):g.logger.debug(`Doing nothing with message ${c.msgtype()}`)}close(){this._connection.close()}_connection_closed(){this.document.remove_on_change(this._document_listener)}async request_server_info(){const c=w.Message.create("SERVER-INFO-REQ",{});return(await this._connection.send_with_reply(c)).content}async force_roundtrip(){await this.request_server_info()}_document_changed(c){if(c.setter_id===this.id)return;const o=c instanceof v.DocumentEventBatch?c.events:[c],r=this.document.create_json_patch(o),i=w.Message.create("PATCH-DOC",{},r);this._connection.send(i)}_handle_patch(c){this.document.apply_json_patch(c.content,c.buffers,this.id)}_handle_ok(c){g.logger.trace(`Unhandled OK reply to ${c.reqid()}`)}_handle_error(c){g.logger.error(`Unhandled ERROR reply to ${c.reqid()}: ${c.content.text}`)}}e.ClientSession=p,p.__name__="ClientSession"},function(Q,O,e,C,R){C();const v=Q(1),w=Q(5),g=Q(402),p=Q(19),T=Q(43),c=Q(13),o=Q(397),r=Q(398),i=(0,v.__importDefault)(Q(44)),t=(0,v.__importDefault)(Q(240)),s=(0,v.__importDefault)(Q(405));function a(l,d){d.buffers.length>0?l.consume(d.buffers[0].buffer):l.consume(d.content.data);const m=l.message;m!=null&&this.apply_json_patch(m.content,m.buffers)}function u(l,d){if(typeof Jupyter<"u"&&Jupyter.notebook.kernel!=null){p.logger.info(`Registering Jupyter comms for target ${l}`);const m=Jupyter.notebook.kernel.comm_manager;try{m.register_target(l,f=>{p.logger.info(`Registering Jupyter comms for target ${l}`);const b=new g.Receiver;f.on_msg(a.bind(d,b))})}catch(f){p.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${f})`)}}else if(d.roots()[0].id in e.kernels){p.logger.info(`Registering JupyterLab comms for target ${l}`);const m=e.kernels[d.roots()[0].id];try{m.registerCommTarget(l,f=>{p.logger.info(`Registering JupyterLab comms for target ${l}`);const b=new g.Receiver;f.onMsg=a.bind(d,b)})}catch(f){p.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${f})`)}}else if(typeof google<"u"&&google.colab.kernel!=null){p.logger.info(`Registering Google Colab comms for target ${l}`);const m=google.colab.kernel.comms;try{m.registerTarget(l,async f=>{var b,y,A;p.logger.info(`Registering Google Colab comms for target ${l}`);const L=new g.Receiver;try{for(var x,H=(0,v.__asyncValues)(f.messages);!(x=await H.next()).done;){const S=x.value,k={data:S.data},E=[];for(const N of(A=S.buffers)!==null&&A!==void 0?A:[])E.push(new DataView(N));const P={content:k,buffers:E};a.bind(d)(L,P)}}catch(S){b={error:S}}finally{try{x&&!x.done&&(y=H.return)&&await y.call(H)}finally{if(b)throw b.error}}})}catch(f){p.logger.warn(`Google Colab comms failed to register. push_notebook() will not function. (exception reported: ${f})`)}}else console.warn("Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest @bokeh/jupyter_bokeh extension is installed. In an exported notebook this warning is expected.")}T.stylesheet.append(i.default),T.stylesheet.append(t.default),T.stylesheet.append(s.default),e.kernels={},e.embed_items_notebook=function(l,d){if((0,c.size)(l)!=1)throw new Error("embed_items_notebook expects exactly one document in docs_json");const m=w.Document.from_json((0,c.values)(l)[0]);for(const f of d){f.notebook_comms_target!=null&&u(f.notebook_comms_target,m);const b=(0,r._resolve_element)(f),y=(0,r._resolve_root_elements)(f);(0,o.add_document_standalone)(m,b,y)}}},function(Q,O,e,C,R){C(),e.root="bk-root",e.tooltip="bk-tooltip",e.default=".rendered_html .bk-root .bk-tooltip table,.rendered_html .bk-root .bk-tooltip tr,.rendered_html .bk-root .bk-tooltip th,.rendered_html .bk-root .bk-tooltip td{border:none;padding:1px;}"},function(V,Q,O,e,C){e();const R=V(1);(0,R.__exportStar)(V(401),O),(0,R.__exportStar)(V(402),O)},function(Q,O,e,C,R){function v(){const w=document.getElementsByTagName("body")[0],g=document.getElementsByClassName("bokeh-test-div");g.length==1&&(w.removeChild(g[0]),delete g[0]);const p=document.createElement("div");p.classList.add("bokeh-test-div"),p.style.display="none",w.insertBefore(p,w.firstChild)}C(),e.results={},e.init=function(){v()},e.record0=function(w,g){e.results[w]=g},e.record=function(w,g){e.results[w]=g,v()},e.count=function(w){e.results[w]==null&&(e.results[w]=0),e.results[w]+=1,v()}},function(Q,O,e,C,R){C(),e.safely=function(v,w=!1){try{return v()}catch(g){if(function(p){const T=document.createElement("div");T.style.backgroundColor="#f2dede",T.style.border="1px solid #a94442",T.style.borderRadius="4px",T.style.display="inline-block",T.style.fontFamily="sans-serif",T.style.marginTop="5px",T.style.minWidth="200px",T.style.padding="5px 5px 5px 10px",T.classList.add("bokeh-error-box-into-flames");const c=document.createElement("span");c.style.backgroundColor="#a94442",c.style.borderRadius="0px 4px 0px 0px",c.style.color="white",c.style.cursor="pointer",c.style.cssFloat="right",c.style.fontSize="0.8em",c.style.margin="-6px -6px 0px 0px",c.style.padding="2px 5px 4px 5px",c.title="close",c.setAttribute("aria-label","close"),c.appendChild(document.createTextNode("x")),c.addEventListener("click",()=>i.removeChild(T));const o=document.createElement("h3");o.style.color="#a94442",o.style.margin="8px 0px 0px 0px",o.style.padding="0px",o.appendChild(document.createTextNode("Bokeh Error"));const r=document.createElement("pre");r.style.whiteSpace="unset",r.style.overflowX="auto",r.appendChild(document.createTextNode(p)),T.appendChild(c),T.appendChild(o),T.appendChild(r);const i=document.getElementsByTagName("body")[0];i.insertBefore(T,i.firstChild)}(g instanceof Error&&g.stack?g.stack:`${g}`),w)return;throw g}}}],0,{main:0,tslib:1,index:2,version:3,"embed/index":4,"document/index":5,"document/document":6,base:7,"core/util/types":8,"core/util/array":9,"core/util/math":10,"core/util/assert":11,"core/util/arrayable":12,"core/util/object":13,"core/has_props":14,"core/signaling":15,"core/util/defer":16,"core/util/refs":17,"core/properties":18,"core/logging":19,"core/enums":20,"core/kinds":21,"core/util/color":22,"core/util/svg_colors":23,"core/types":24,"core/util/bitset":25,"core/util/eq":26,"core/util/platform":27,"core/settings":28,"core/util/ndarray":29,"core/serializer":30,"core/util/serialization":31,"core/util/buffer":32,"core/uniforms":33,"core/util/string":34,"document/events":35,"core/util/pretty":36,"core/util/cloneable":37,"models/index":38,"models/annotations/index":39,"models/annotations/annotation":40,"models/renderers/renderer":41,"core/view":42,"core/dom":43,"styles/root.css":44,"core/visuals/index":45,"core/visuals/line":46,"core/visuals/visual":47,"core/property_mixins":48,"core/visuals/fill":49,"core/visuals/text":50,"core/visuals/hatch":51,"core/visuals/patterns":52,model:53,"models/canvas/coordinates":54,"models/scales/scale":55,"models/transforms/transform":56,"models/ranges/range":57,"models/ranges/range1d":58,"models/scales/linear_scale":59,"models/scales/continuous_scale":60,"models/scales/log_scale":61,"models/scales/categorical_scale":62,"models/ranges/data_range1d":63,"models/ranges/data_range":64,"core/util/bbox":65,"models/util":66,"models/ranges/factor_range":67,"models/annotations/arrow":68,"models/annotations/data_annotation":69,"models/sources/columnar_data_source":70,"models/sources/data_source":71,"models/selections/selection":72,"core/selection_manager":73,"models/selections/interaction_policy":74,"models/sources/column_data_source":75,"core/util/typed_array":76,"core/util/set":77,"core/util/projections":78,"models/annotations/arrow_head":112,"core/build_views":113,"models/annotations/band":114,"models/annotations/upper_lower":115,"models/annotations/box_annotation":116,"models/annotations/color_bar":117,"models/annotations/title":118,"models/annotations/text_annotation":119,"core/graphics":120,"core/util/text":121,"core/util/affine":122,"core/layout/side_panel":123,"core/layout/types":124,"core/layout/layoutable":125,"models/canvas/cartesian_frame":126,"models/axes/index":127,"models/axes/axis":128,"models/renderers/guide_renderer":129,"models/tickers/ticker":130,"models/formatters/tick_formatter":131,"models/policies/labeling":132,"models/text/base_text":133,"models/text/utils":134,"models/text/math_text":135,"core/util/image":136,"models/text/providers":137,"core/util/modules":138,"models/text/plain_text":139,"models/axes/categorical_axis":140,"models/tickers/categorical_ticker":141,"models/formatters/categorical_tick_formatter":142,"models/axes/continuous_axis":143,"models/axes/datetime_axis":144,"models/axes/linear_axis":145,"models/formatters/basic_tick_formatter":146,"models/tickers/basic_ticker":147,"models/tickers/adaptive_ticker":148,"models/tickers/continuous_ticker":149,"models/formatters/datetime_tick_formatter":150,"core/util/templating":152,"models/tickers/datetime_ticker":155,"models/tickers/composite_ticker":156,"models/tickers/days_ticker":157,"models/tickers/single_interval_ticker":158,"models/tickers/util":159,"models/tickers/months_ticker":160,"models/tickers/years_ticker":161,"models/axes/log_axis":162,"models/formatters/log_tick_formatter":163,"models/tickers/log_ticker":164,"models/axes/mercator_axis":165,"models/formatters/mercator_tick_formatter":166,"models/tickers/mercator_ticker":167,"models/tickers/index":168,"models/tickers/fixed_ticker":169,"models/tickers/binned_ticker":170,"models/mappers/scanning_color_mapper":171,"models/mappers/continuous_color_mapper":172,"models/mappers/color_mapper":173,"models/mappers/mapper":174,"models/renderers/glyph_renderer":175,"models/renderers/data_renderer":176,"models/glyphs/line":177,"models/glyphs/xy_glyph":178,"models/glyphs/glyph":179,"core/util/ragged_array":180,"core/util/spatial":181,"models/glyphs/utils":184,"core/hittest":185,"models/glyphs/patch":186,"models/glyphs/harea":187,"models/glyphs/area":188,"models/glyphs/varea":189,"models/sources/cds_view":190,"models/filters/filter":191,"models/formatters/index":192,"models/formatters/func_tick_formatter":193,"models/formatters/numeral_tick_formatter":194,"models/formatters/printf_tick_formatter":195,"models/mappers/index":196,"models/mappers/categorical_color_mapper":197,"models/mappers/categorical_mapper":198,"models/mappers/categorical_marker_mapper":199,"models/mappers/categorical_pattern_mapper":200,"models/mappers/linear_color_mapper":201,"models/mappers/log_color_mapper":202,"models/mappers/eqhist_color_mapper":203,"models/scales/index":204,"models/scales/linear_interpolation_scale":205,"models/ranges/index":206,"core/layout/index":207,"core/layout/alignments":208,"core/layout/grid":209,"core/layout/html":210,"core/layout/border":211,"models/annotations/label":212,"models/annotations/label_set":213,"models/annotations/legend":214,"models/annotations/legend_item":215,"core/vectorization":216,"models/annotations/poly_annotation":217,"models/annotations/slope":218,"models/annotations/span":219,"models/annotations/toolbar_panel":220,"models/tools/toolbar":221,"models/tools/tool":222,"models/tools/gestures/gesture_tool":223,"models/tools/button_tool":224,"core/dom_view":226,"styles/toolbar.css":227,"styles/icons.css":228,"styles/menus.css":229,"core/util/menus":230,"models/tools/on_off_button":231,"models/tools/inspectors/inspect_tool":232,"models/tools/toolbar_base":233,"core/util/iterator":234,"core/util/canvas":235,"core/util/svg":236,"core/util/random":237,"models/tools/actions/action_tool":238,"models/tools/actions/help_tool":239,"styles/logo.css":240,"models/annotations/tooltip":241,"styles/tooltips.css":242,"models/annotations/whisker":243,"models/callbacks/index":244,"models/callbacks/customjs":245,"models/callbacks/callback":246,"models/callbacks/open_url":247,"models/canvas/index":248,"models/canvas/canvas":249,"core/ui_events":250,"core/bokeh_events":251,"core/util/wheel":252,"models/expressions/index":253,"models/expressions/expression":254,"models/expressions/customjs_expr":255,"models/expressions/stack":256,"models/expressions/cumsum":257,"models/expressions/minimum":258,"models/expressions/maximum":259,"models/expressions/coordinate_transform":260,"models/expressions/polar":261,"models/filters/index":262,"models/filters/boolean_filter":263,"models/filters/customjs_filter":264,"models/filters/group_filter":265,"models/filters/index_filter":266,"models/glyphs/index":267,"models/glyphs/annular_wedge":268,"models/glyphs/annulus":269,"models/glyphs/arc":270,"models/glyphs/bezier":271,"models/glyphs/circle":272,"models/glyphs/ellipse":273,"models/glyphs/ellipse_oval":274,"models/glyphs/center_rotatable":275,"models/glyphs/hbar":276,"models/glyphs/box":277,"models/glyphs/hex_tile":278,"models/glyphs/image":279,"models/glyphs/image_base":280,"models/glyphs/image_rgba":281,"models/glyphs/image_url":282,"models/glyphs/multi_line":283,"models/glyphs/multi_polygons":284,"models/glyphs/oval":285,"models/glyphs/patches":286,"models/glyphs/quad":287,"models/glyphs/quadratic":288,"models/glyphs/ray":289,"models/glyphs/rect":290,"models/glyphs/scatter":291,"models/glyphs/marker":292,"models/glyphs/defs":293,"models/glyphs/segment":294,"models/glyphs/spline":295,"core/util/interpolation":296,"models/glyphs/step":297,"models/glyphs/text":298,"models/glyphs/vbar":299,"models/glyphs/wedge":300,"models/graphs/index":301,"models/graphs/graph_hit_test_policy":302,"models/graphs/layout_provider":303,"models/graphs/static_layout_provider":304,"models/grids/index":305,"models/grids/grid":306,"models/layouts/index":307,"models/layouts/box":308,"models/layouts/layout_dom":309,"models/layouts/column":310,"models/layouts/grid_box":311,"models/layouts/html_box":312,"models/layouts/panel":313,"models/layouts/row":314,"models/layouts/spacer":315,"models/layouts/tabs":316,"styles/tabs.css":317,"styles/buttons.css":318,"models/layouts/widget_box":319,"models/text/index":320,"models/transforms/index":321,"models/transforms/customjs_transform":322,"models/transforms/dodge":323,"models/transforms/range_transform":324,"models/transforms/interpolator":325,"models/transforms/jitter":326,"models/transforms/linear_interpolator":327,"models/transforms/step_interpolator":328,"models/plots/index":329,"models/plots/gmap_plot":330,"models/plots/plot":331,"models/plots/plot_canvas":332,"core/util/throttle":333,"models/plots/range_manager":334,"models/plots/state_manager":335,"models/plots/gmap_plot_canvas":336,"models/policies/index":337,"models/renderers/index":338,"models/renderers/graph_renderer":339,"models/selections/index":340,"models/sources/index":341,"models/sources/server_sent_data_source":342,"models/sources/web_data_source":343,"models/sources/ajax_data_source":344,"models/sources/geojson_data_source":345,"models/tiles/index":346,"models/tiles/bbox_tile_source":347,"models/tiles/mercator_tile_source":348,"models/tiles/tile_source":349,"models/tiles/tile_utils":350,"models/tiles/quadkey_tile_source":351,"models/tiles/tile_renderer":352,"models/tiles/wmts_tile_source":353,"styles/tiles.css":354,"models/tiles/tms_tile_source":355,"models/textures/index":356,"models/textures/canvas_texture":357,"models/textures/texture":358,"models/textures/image_url_texture":359,"models/tools/index":360,"models/tools/actions/custom_action":361,"models/tools/actions/redo_tool":362,"models/tools/actions/reset_tool":363,"models/tools/actions/save_tool":364,"models/tools/actions/undo_tool":365,"models/tools/actions/zoom_in_tool":366,"models/tools/actions/zoom_base_tool":367,"core/util/zoom":368,"models/tools/actions/zoom_out_tool":369,"models/tools/edit/edit_tool":370,"models/tools/edit/box_edit_tool":371,"models/tools/edit/freehand_draw_tool":372,"models/tools/edit/point_draw_tool":373,"models/tools/edit/poly_draw_tool":374,"models/tools/edit/poly_tool":375,"models/tools/edit/poly_edit_tool":376,"models/tools/gestures/box_select_tool":377,"models/tools/gestures/select_tool":378,"models/tools/gestures/box_zoom_tool":379,"models/tools/gestures/lasso_select_tool":380,"models/tools/gestures/poly_select_tool":381,"models/tools/edit/line_edit_tool":382,"models/tools/edit/line_tool":383,"models/tools/gestures/pan_tool":384,"models/tools/gestures/range_tool":385,"models/tools/gestures/tap_tool":386,"models/tools/gestures/wheel_pan_tool":387,"models/tools/gestures/wheel_zoom_tool":388,"models/tools/inspectors/crosshair_tool":389,"models/tools/inspectors/customjs_hover":390,"models/tools/inspectors/hover_tool":391,"models/dom/index":392,"models/dom/styles":393,"models/tools/tool_proxy":394,"models/tools/toolbar_box":395,"document/defs":396,"embed/standalone":397,"embed/dom":398,"embed/server":399,"client/connection":400,"protocol/message":401,"protocol/receiver":402,"client/session":403,"embed/notebook":404,"styles/notebook.css":405,"protocol/index":406,testing:407,safely:408},{});/*!
57
+ `),q=W*U.length,X=this.text_baseline.get(x);let ae;switch(X){case"top":ae=0;break;case"middle":ae=-q/2+W/2;break;case"bottom":ae=-q+W;break;default:ae=0,console.warn(`'${X}' baseline not supported with multi line text`)}for(const me of U){u.fillText(me,0,ae);const Ve=k+P,Je=ae+E+N,rt=u.measureText(me).width,[yt,xt]=this._text_bounds(Ve,Je,rt,W);H.push(yt),S.push(xt),ae+=W}}u.restore()}}}_hit_point(u){const{sx:l,sy:d}=u,m=[];for(let f=0;f<this._sxs.length;f++){const b=this._sxs[f],y=this._sys[f],A=b.length;for(let L=0,x=A;L<x;L++){const[H,S]=this._rotate_point(l,d,b[A-1][0],y[A-1][0],-this.angle.get(f));T.point_in_poly(H,S,b[L],y[L])&&m.push(f)}}return new i.Selection({indices:m})}scenterxy(u){const l=this._sxs[u],d=this._sys[u];(0,r.assert)(l.length!=0&&d.length!=0);const m=l[0][0],f=d[0][0],b=(l[0][2]+m)/2,y=(d[0][2]+f)/2,[A,L]=this._rotate_point(b,y,m,f,this.angle.get(u));return[A,L]}}e.TextView=t,t.__name__="TextView";class s extends g.XYGlyph{constructor(u){super(u)}}e.Text=s,w=s,s.__name__="Text",w.prototype.default_view=t,w.mixins(p.TextVector),w.define(({})=>({text:[c.NullStringSpec,{field:"text"}],angle:[c.AngleSpec,0],x_offset:[c.NumberSpec,0],y_offset:[c.NumberSpec,0]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(277),p=Q(24),T=(0,v.__importStar)(Q(18));class c extends g.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:i}=this.renderer.plot_view.canvas_view;if(i!=null&&i.regl_wrapper.has_webgl){const{LRTBGL:t}=await Promise.resolve().then(()=>(0,v.__importStar)(Q(427)));this.glglyph=new t(i.regl_wrapper,this)}}scenterxy(i){return[this.sx[i],(this.stop[i]+this.sbottom[i])/2]}_lrtb(i){const t=this.width.get(i)/2,s=this._x[i],a=this._top[i],u=this._bottom[i];return[s-t,s+t,Math.max(a,u),Math.min(a,u)]}_map_data(){this.sx=this.renderer.xscale.v_compute(this._x),this.sw=this.sdist(this.renderer.xscale,this._x,this.width,"center"),this.stop=this.renderer.yscale.v_compute(this._top),this.sbottom=this.renderer.yscale.v_compute(this._bottom);const i=this.sx.length;this.sleft=new p.ScreenArray(i),this.sright=new p.ScreenArray(i);for(let t=0;t<i;t++)this.sleft[t]=this.sx[t]-this.sw[t]/2,this.sright[t]=this.sx[t]+this.sw[t]/2;this._clamp_viewport()}}e.VBarView=c,c.__name__="VBarView";class o extends g.Box{constructor(i){super(i)}}e.VBar=o,w=o,o.__name__="VBar",w.prototype.default_view=c,w.define(({})=>({x:[T.XCoordinateSpec,{field:"x"}],bottom:[T.YCoordinateSpec,{value:0}],width:[T.NumberSpec,{value:1}],top:[T.YCoordinateSpec,{field:"top"}]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(178),p=Q(184),T=Q(48),c=Q(24),o=Q(20),r=(0,v.__importStar)(Q(18)),i=Q(10),t=Q(72),s=Q(12);class a extends g.XYGlyphView{_map_data(){this.model.properties.radius.units=="data"?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=(0,c.to_screen)(this.radius),this.max_sradius=(0,s.max)(this.sradius)}_render(d,m,f){const{sx:b,sy:y,sradius:A,start_angle:L,end_angle:x}=f??this,H=this.model.direction=="anticlock";for(const S of m){const k=b[S],E=y[S],P=A[S],N=L.get(S),B=x.get(S);isFinite(k+E+P+N+B)&&(d.beginPath(),d.arc(k,E,P,N,B,H),d.lineTo(k,E),d.closePath(),this.visuals.fill.apply(d,S),this.visuals.hatch.apply(d,S),this.visuals.line.apply(d,S))}}_hit_point(d){let m,f,b,y,A;const{sx:L,sy:x}=d,H=this.renderer.xscale.invert(L),S=this.renderer.yscale.invert(x);f=L-this.max_sradius,b=L+this.max_sradius;const[k,E]=this.renderer.xscale.r_invert(f,b);y=x-this.max_sradius,A=x+this.max_sradius;const[P,N]=this.renderer.yscale.r_invert(y,A),B=[];for(const M of this.index.indices({x0:k,x1:E,y0:P,y1:N})){const F=this.sradius[M]**2;[f,b]=this.renderer.xscale.r_compute(H,this._x[M]),[y,A]=this.renderer.yscale.r_compute(S,this._y[M]),m=(f-b)**2+(y-A)**2,m<=F&&B.push(M)}const D=this.model.direction=="anticlock",j=[];for(const M of B){const F=Math.atan2(x-this.sy[M],L-this.sx[M]);(0,i.angle_between)(-F,-this.start_angle.get(M),-this.end_angle.get(M),D)&&j.push(M)}return new t.Selection({indices:j})}draw_legend_for_index(d,m,f){(0,p.generic_area_vector_legend)(this.visuals,d,m,f)}scenterxy(d){const m=this.sradius[d]/2,f=(this.start_angle.get(d)+this.end_angle.get(d))/2;return[this.sx[d]+m*Math.cos(f),this.sy[d]+m*Math.sin(f)]}}e.WedgeView=a,a.__name__="WedgeView";class u extends g.XYGlyph{constructor(d){super(d)}}e.Wedge=u,w=u,u.__name__="Wedge",w.prototype.default_view=a,w.mixins([T.LineVector,T.FillVector,T.HatchVector]),w.define(({})=>({direction:[o.Direction,"anticlock"],radius:[r.DistanceSpec,{field:"radius"}],start_angle:[r.AngleSpec,{field:"start_angle"}],end_angle:[r.AngleSpec,{field:"end_angle"}]}))},function(V,Q,O,e,C){e();const R=V(1);(0,R.__exportStar)(V(302),O),(0,R.__exportStar)(V(303),O),(0,R.__exportStar)(V(304),O)},function(Q,O,e,C,R){C();const v=Q(53),w=Q(12),g=Q(9),p=Q(72);class T extends v.Model{constructor(s){super(s)}_hit_test(s,a,u){if(!a.model.visible)return null;const l=u.glyph.hit_test(s);return l==null?null:u.model.view.convert_selection_from_subset(l)}}e.GraphHitTestPolicy=T,T.__name__="GraphHitTestPolicy";class c extends T{constructor(s){super(s)}hit_test(s,a){return this._hit_test(s,a,a.edge_view)}do_selection(s,a,u,l){if(s==null)return!1;const d=a.edge_renderer.data_source.selected;return d.update(s,u,l),a.edge_renderer.data_source._select.emit(),!d.is_empty()}do_inspection(s,a,u,l,d){if(s==null)return!1;const{edge_renderer:m}=u.model,f=m.get_selection_manager().get_or_create_inspector(u.edge_view.model);return f.update(s,l,d),u.edge_view.model.data_source.setv({inspected:f},{silent:!0}),u.edge_view.model.data_source.inspect.emit([u.edge_view.model,{geometry:a}]),!f.is_empty()}}e.EdgesOnly=c,c.__name__="EdgesOnly";class o extends T{constructor(s){super(s)}hit_test(s,a){return this._hit_test(s,a,a.node_view)}do_selection(s,a,u,l){if(s==null)return!1;const d=a.node_renderer.data_source.selected;return d.update(s,u,l),a.node_renderer.data_source._select.emit(),!d.is_empty()}do_inspection(s,a,u,l,d){if(s==null)return!1;const{node_renderer:m}=u.model,f=m.get_selection_manager().get_or_create_inspector(u.node_view.model);return f.update(s,l,d),u.node_view.model.data_source.setv({inspected:f},{silent:!0}),u.node_view.model.data_source.inspect.emit([u.node_view.model,{geometry:a}]),!f.is_empty()}}e.NodesOnly=o,o.__name__="NodesOnly";class r extends T{constructor(s){super(s)}hit_test(s,a){return this._hit_test(s,a,a.node_view)}get_linked_edges(s,a,u){let l=[];u=="selection"?l=s.selected.indices.map(f=>s.data.index[f]):u=="inspection"&&(l=s.inspected.indices.map(f=>s.data.index[f]));const d=[];for(let f=0;f<a.data.start.length;f++)((0,g.contains)(l,a.data.start[f])||(0,g.contains)(l,a.data.end[f]))&&d.push(f);const m=new p.Selection;for(const f of d)m.multiline_indices[f]=[0];return m.indices=d,m}do_selection(s,a,u,l){if(s==null)return!1;const d=a.node_renderer.data_source.selected;d.update(s,u,l);const m=a.edge_renderer.data_source.selected,f=this.get_linked_edges(a.node_renderer.data_source,a.edge_renderer.data_source,"selection");return m.update(f,u,l),a.node_renderer.data_source._select.emit(),!d.is_empty()}do_inspection(s,a,u,l,d){if(s==null)return!1;const m=u.node_view.model.data_source.selection_manager.get_or_create_inspector(u.node_view.model);m.update(s,l,d),u.node_view.model.data_source.setv({inspected:m},{silent:!0});const f=u.edge_view.model.data_source.selection_manager.get_or_create_inspector(u.edge_view.model),b=this.get_linked_edges(u.node_view.model.data_source,u.edge_view.model.data_source,"inspection");return f.update(b,l,d),u.edge_view.model.data_source.setv({inspected:f},{silent:!0}),u.node_view.model.data_source.inspect.emit([u.node_view.model,{geometry:a}]),!m.is_empty()}}e.NodesAndLinkedEdges=r,r.__name__="NodesAndLinkedEdges";class i extends T{constructor(s){super(s)}hit_test(s,a){return this._hit_test(s,a,a.edge_view)}get_linked_nodes(s,a,u){let l=[];u=="selection"?l=a.selected.indices:u=="inspection"&&(l=a.inspected.indices);const d=[];for(const f of l)d.push(a.data.start[f]),d.push(a.data.end[f]);const m=(0,g.uniq)(d).map(f=>(0,w.indexOf)(s.data.index,f));return new p.Selection({indices:m})}do_selection(s,a,u,l){if(s==null)return!1;const d=a.edge_renderer.data_source.selected;d.update(s,u,l);const m=a.node_renderer.data_source.selected,f=this.get_linked_nodes(a.node_renderer.data_source,a.edge_renderer.data_source,"selection");return m.update(f,u,l),a.edge_renderer.data_source._select.emit(),!d.is_empty()}do_inspection(s,a,u,l,d){if(s==null)return!1;const m=u.edge_view.model.data_source.selection_manager.get_or_create_inspector(u.edge_view.model);m.update(s,l,d),u.edge_view.model.data_source.setv({inspected:m},{silent:!0});const f=u.node_view.model.data_source.selection_manager.get_or_create_inspector(u.node_view.model),b=this.get_linked_nodes(u.node_view.model.data_source,u.edge_view.model.data_source,"inspection");return f.update(b,l,d),u.node_view.model.data_source.setv({inspected:f},{silent:!0}),u.edge_view.model.data_source.inspect.emit([u.edge_view.model,{geometry:a}]),!m.is_empty()}}e.EdgesAndLinkedNodes=i,i.__name__="EdgesAndLinkedNodes"},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(260);class p extends w.Model{constructor(i){super(i)}get node_coordinates(){return new c({layout:this})}get edge_coordinates(){return new o({layout:this})}}e.LayoutProvider=p,p.__name__="LayoutProvider";class T extends g.CoordinateTransform{constructor(i){super(i)}}e.GraphCoordinates=T,v=T,T.__name__="GraphCoordinates",v.define(({Ref:r})=>({layout:[r(p)]}));class c extends T{constructor(i){super(i)}_v_compute(i){const[t,s]=this.layout.get_node_coordinates(i);return{x:t,y:s}}}e.NodeCoordinates=c,c.__name__="NodeCoordinates";class o extends T{constructor(i){super(i)}_v_compute(i){const[t,s]=this.layout.get_edge_coordinates(i);return{x:t,y:s}}}e.EdgeCoordinates=o,o.__name__="EdgeCoordinates"},function(Q,O,e,C,R){var v;C();const w=Q(303);class g extends w.LayoutProvider{constructor(T){super(T)}get_node_coordinates(T){var c;const o=(c=T.data.index)!==null&&c!==void 0?c:[],r=o.length,i=new Float64Array(r),t=new Float64Array(r);for(let s=0;s<r;s++){const a=this.graph_layout[o[s]],[u,l]=a??[NaN,NaN];i[s]=u,t[s]=l}return[i,t]}get_edge_coordinates(T){var c,o;const r=(c=T.data.start)!==null&&c!==void 0?c:[],i=(o=T.data.end)!==null&&o!==void 0?o:[],t=Math.min(r.length,i.length),s=[],a=[],u=T.data.xs!=null&&T.data.ys!=null;for(let l=0;l<t;l++){const d=this.graph_layout[r[l]]!=null&&this.graph_layout[i[l]]!=null;if(u&&d)s.push(T.data.xs[l]),a.push(T.data.ys[l]);else{let m,f;d?(m=this.graph_layout[r[l]],f=this.graph_layout[i[l]]):(m=[NaN,NaN],f=[NaN,NaN]),s.push([m[0],f[0]]),a.push([m[1],f[1]])}}return[s,a]}}e.StaticLayoutProvider=g,v=g,g.__name__="StaticLayoutProvider",v.define(({Number:p,Tuple:T,Dict:c})=>({graph_layout:[c(T(p,p)),{}]}))},function(Q,O,e,C,R){C(),R("Grid",Q(306).Grid)},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(127),p=Q(129),T=Q(130),c=(0,v.__importStar)(Q(48)),o=Q(8);class r extends p.GuideRendererView{_render(){const s=this.layer.ctx;s.save(),this._draw_regions(s),this._draw_minor_grids(s),this._draw_grids(s),s.restore()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.request_render())}_draw_regions(s){if(!this.visuals.band_fill.doit&&!this.visuals.band_hatch.doit)return;const[a,u]=this.grid_coords("major",!1);for(let l=0;l<a.length-1;l++){if(l%2!=1)continue;const[d,m]=this.coordinates.map_to_screen(a[l],u[l]),[f,b]=this.coordinates.map_to_screen(a[l+1],u[l+1]);s.beginPath(),s.rect(d[0],m[0],f[1]-d[0],b[1]-m[0]),this.visuals.band_fill.apply(s),this.visuals.band_hatch.apply(s)}}_draw_grids(s){if(!this.visuals.grid_line.doit)return;const[a,u]=this.grid_coords("major");this._draw_grid_helper(s,this.visuals.grid_line,a,u)}_draw_minor_grids(s){if(!this.visuals.minor_grid_line.doit)return;const[a,u]=this.grid_coords("minor");this._draw_grid_helper(s,this.visuals.minor_grid_line,a,u)}_draw_grid_helper(s,a,u,l){a.set_value(s),s.beginPath();for(let d=0;d<u.length;d++){const[m,f]=this.coordinates.map_to_screen(u[d],l[d]);s.moveTo(Math.round(m[0]),Math.round(f[0]));for(let b=1;b<m.length;b++)s.lineTo(Math.round(m[b]),Math.round(f[b]))}s.stroke()}ranges(){const s=this.model.dimension,a=(s+1)%2,{ranges:u}=this.coordinates;return[u[s],u[a]]}computed_bounds(){const[s]=this.ranges(),a=this.model.bounds,u=[s.min,s.max];let l,d;if((0,o.isArray)(a))l=Math.min(a[0],a[1]),d=Math.max(a[0],a[1]),l<u[0]&&(l=u[0]),d>u[1]&&(d=u[1]);else{[l,d]=u;for(const m of this.plot_view.axis_views)m.dimension==this.model.dimension&&m.model.x_range_name==this.model.x_range_name&&m.model.y_range_name==this.model.y_range_name&&([l,d]=m.computed_bounds)}return[l,d]}grid_coords(s,a=!0){const u=this.model.dimension,l=(u+1)%2,[d,m]=this.ranges();let[f,b]=this.computed_bounds();[f,b]=[Math.min(f,b),Math.max(f,b)];const y=[[],[]],A=this.model.get_ticker();if(A==null)return y;const L=A.get_ticks(f,b,d,m.min)[s],x=d.min,H=d.max,S=m.min,k=m.max;a||(L[0]!=x&&L.splice(0,0,x),L[L.length-1]!=H&&L.push(H));for(let E=0;E<L.length;E++){if((L[E]==x||L[E]==H)&&a)continue;const P=[],N=[],B=2;for(let D=0;D<B;D++){const j=S+(k-S)/(B-1)*D;P.push(L[E]),N.push(j)}y[u].push(P),y[l].push(N)}return y}}e.GridView=r,r.__name__="GridView";class i extends p.GuideRenderer{constructor(s){super(s)}get_ticker(){return this.ticker!=null?this.ticker:this.axis!=null?this.axis.ticker:null}}e.Grid=i,w=i,i.__name__="Grid",w.prototype.default_view=r,w.mixins([["grid_",c.Line],["minor_grid_",c.Line],["band_",c.Fill],["band_",c.Hatch]]),w.define(({Number:t,Auto:s,Enum:a,Ref:u,Tuple:l,Or:d,Nullable:m})=>({bounds:[d(l(t,t),s),"auto"],dimension:[a(0,1),0],axis:[m(u(g.Axis)),null],ticker:[m(u(T.Ticker)),null]})),w.override({level:"underlay",band_fill_color:null,band_fill_alpha:0,grid_line_color:"#e5e5e5",minor_grid_line_color:null})},function(Q,O,e,C,R){C(),R("Box",Q(308).Box),R("Column",Q(310).Column),R("GridBox",Q(311).GridBox),R("HTMLBox",Q(312).HTMLBox),R("LayoutDOM",Q(309).LayoutDOM),R("Panel",Q(313).Panel),R("Row",Q(314).Row),R("Spacer",Q(315).Spacer),R("Tabs",Q(316).Tabs),R("WidgetBox",Q(319).WidgetBox)},function(Q,O,e,C,R){var v;C();const w=Q(309);class g extends w.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.children.change,()=>this.rebuild())}get child_models(){return this.model.children}}e.BoxView=g,g.__name__="BoxView";class p extends w.LayoutDOM{constructor(c){super(c)}}e.Box=p,v=p,p.__name__="Box",v.define(({Number:T,Array:c,Ref:o})=>({children:[c(o(w.LayoutDOM)),[]],spacing:[T,0]}))},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(20),p=Q(43),T=Q(19),c=Q(8),o=Q(22),r=Q(121),i=Q(113),t=Q(226),s=Q(207),a=Q(44),u=Q(235);class l extends t.DOMView{constructor(){super(...arguments),this._offset_parent=null,this._viewport={}}get is_layout_root(){return this.is_root||!(this.parent instanceof l)}get base_font_size(){const f=getComputedStyle(this.el).fontSize,b=(0,r.parse_css_font_size)(f);if(b!=null){const{value:y,unit:A}=b;if(A=="px")return y}return null}initialize(){super.initialize(),this.el.style.position=this.is_layout_root?"relative":"absolute",this._child_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await this.build_child_views()}remove(){for(const f of this.child_views)f.remove();this._child_views.clear(),super.remove()}connect_signals(){super.connect_signals(),this.is_layout_root&&(this._on_resize=()=>this.resize_layout(),window.addEventListener("resize",this._on_resize),this._parent_observer=setInterval(()=>{const b=this.el.offsetParent;this._offset_parent!=b&&(this._offset_parent=b,b!=null&&(this.compute_viewport(),this.invalidate_layout()))},250));const f=this.model.properties;this.on_change([f.width,f.height,f.min_width,f.min_height,f.max_width,f.max_height,f.margin,f.width_policy,f.height_policy,f.sizing_mode,f.aspect_ratio,f.visible],()=>this.invalidate_layout()),this.on_change([f.background,f.css_classes],()=>this.invalidate_render())}disconnect_signals(){this._parent_observer!=null&&clearTimeout(this._parent_observer),this._on_resize!=null&&window.removeEventListener("resize",this._on_resize),super.disconnect_signals()}css_classes(){return super.css_classes().concat(this.model.css_classes)}get child_views(){return this.child_models.map(f=>this._child_views.get(f))}async build_child_views(){await(0,i.build_views)(this._child_views,this.child_models,{parent:this})}render(){super.render(),(0,p.empty)(this.el);const{background:f}=this.model;this.el.style.backgroundColor=f!=null?(0,o.color2css)(f):"",(0,p.classes)(this.el).clear().add(...this.css_classes());for(const b of this.child_views)this.el.appendChild(b.el),b.render()}update_layout(){for(const f of this.child_views)f.update_layout();this._update_layout()}update_position(){this.el.style.display=this.model.visible?"block":"none";const f=this.is_layout_root?this.layout.sizing.margin:void 0;(0,p.position)(this.el,this.layout.bbox,f);for(const b of this.child_views)b.update_position()}after_layout(){for(const f of this.child_views)f.after_layout();this._has_finished=!0}compute_viewport(){this._viewport=this._viewport_size()}renderTo(f){f.appendChild(this.el),this._offset_parent=this.el.offsetParent,this.compute_viewport(),this.build(),this.notify_finished()}build(){if(!this.is_layout_root)throw new Error(`${this.toString()} is not a root layout`);return this.render(),this.update_layout(),this.compute_layout(),this}async rebuild(){await this.build_child_views(),this.invalidate_render()}compute_layout(){const f=Date.now();this.layout.compute(this._viewport),this.update_position(),this.after_layout(),T.logger.debug(`layout computed in ${Date.now()-f} ms`)}resize_layout(){this.root.compute_viewport(),this.root.compute_layout()}invalidate_layout(){this.root.update_layout(),this.root.compute_layout()}invalidate_render(){this.render(),this.invalidate_layout()}has_finished(){if(!super.has_finished())return!1;for(const f of this.child_views)if(!f.has_finished())return!1;return!0}_width_policy(){return this.model.width!=null?"fixed":"fit"}_height_policy(){return this.model.height!=null?"fixed":"fit"}box_sizing(){let{width_policy:f,height_policy:b,aspect_ratio:y}=this.model;f=="auto"&&(f=this._width_policy()),b=="auto"&&(b=this._height_policy());const{sizing_mode:A}=this.model;if(A!=null)if(A=="fixed")f=b="fixed";else if(A=="stretch_both")f=b="max";else if(A=="stretch_width")f="max";else if(A=="stretch_height")b="max";else switch(y==null&&(y="auto"),A){case"scale_width":f="max",b="min";break;case"scale_height":f="min",b="max";break;case"scale_both":f="max",b="max"}const L={width_policy:f,height_policy:b},{min_width:x,min_height:H}=this.model;x!=null&&(L.min_width=x),H!=null&&(L.min_height=H);const{width:S,height:k}=this.model;S!=null&&(L.width=S),k!=null&&(L.height=k);const{max_width:E,max_height:P}=this.model;E!=null&&(L.max_width=E),P!=null&&(L.max_height=P),y=="auto"&&S!=null&&k!=null?L.aspect=S/k:(0,c.isNumber)(y)&&(L.aspect=y);const{margin:N}=this.model;if(N!=null)if((0,c.isNumber)(N))L.margin={top:N,right:N,bottom:N,left:N};else if(N.length==2){const[D,j]=N;L.margin={top:D,right:j,bottom:D,left:j}}else{const[D,j,M,F]=N;L.margin={top:D,right:j,bottom:M,left:F}}L.visible=this.model.visible;const{align:B}=this.model;return(0,c.isArray)(B)?[L.halign,L.valign]=B:L.halign=L.valign=B,L}_viewport_size(){return(0,p.undisplayed)(this.el,()=>{let f=this.el;for(;f=f.parentElement;){if(f.classList.contains(a.root))continue;if(f==document.body){const{margin:{left:E,right:P,top:N,bottom:B}}=(0,p.extents)(document.body);return{width:Math.ceil(document.documentElement.clientWidth-E-P),height:Math.ceil(document.documentElement.clientHeight-N-B)}}const{padding:{left:b,right:y,top:A,bottom:L}}=(0,p.extents)(f),{width:x,height:H}=f.getBoundingClientRect(),S=Math.ceil(x-b-y),k=Math.ceil(H-A-L);if(S>0||k>0)return{width:S>0?S:void 0,height:k>0?k:void 0}}return{}})}export(f,b=!0){const y=f=="png"?"canvas":"svg",A=new u.CanvasLayer(y,b),{width:L,height:x}=this.layout.bbox;A.resize(L,x);for(const H of this.child_views){const S=H.export(f,b),{x:k,y:E}=H.layout.bbox;A.ctx.drawImage(S.canvas,k,E)}return A}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box,children:this.child_views.map(f=>f.serializable_state())})}}e.LayoutDOMView=l,l.__name__="LayoutDOMView";class d extends w.Model{constructor(f){super(f)}}e.LayoutDOM=d,v=d,d.__name__="LayoutDOM",v.define(m=>{const{Boolean:f,Number:b,String:y,Auto:A,Color:L,Array:x,Tuple:H,Or:S,Null:k,Nullable:E}=m,P=H(b,b),N=H(b,b,b,b);return{width:[E(b),null],height:[E(b),null],min_width:[E(b),null],min_height:[E(b),null],max_width:[E(b),null],max_height:[E(b),null],margin:[E(S(b,P,N)),[0,0,0,0]],width_policy:[S(s.SizingPolicy,A),"auto"],height_policy:[S(s.SizingPolicy,A),"auto"],aspect_ratio:[S(b,A,k),null],sizing_mode:[E(g.SizingMode),null],visible:[f,!0],disabled:[f,!1],align:[S(g.Align,H(g.Align,g.Align)),"start"],background:[E(L),null],css_classes:[x(y),[]]}})},function(Q,O,e,C,R){var v;C();const w=Q(308),g=Q(209);class p extends w.BoxView{_update_layout(){const o=this.child_views.map(r=>r.layout);this.layout=new g.Column(o),this.layout.rows=this.model.rows,this.layout.spacing=[this.model.spacing,0],this.layout.set_sizing(this.box_sizing())}}e.ColumnView=p,p.__name__="ColumnView";class T extends w.Box{constructor(o){super(o)}}e.Column=T,v=T,T.__name__="Column",v.prototype.default_view=p,v.define(({Any:c})=>({rows:[c,"auto"]}))},function(Q,O,e,C,R){var v;C();const w=Q(309),g=Q(209);class p extends w.LayoutDOMView{connect_signals(){super.connect_signals();const{children:o,rows:r,cols:i,spacing:t}=this.model.properties;this.on_change([o,r,i,t],()=>this.rebuild())}get child_models(){return this.model.children.map(([o])=>o)}_update_layout(){this.layout=new g.Grid,this.layout.rows=this.model.rows,this.layout.cols=this.model.cols,this.layout.spacing=this.model.spacing;for(const[o,r,i,t,s]of this.model.children){const a=this._child_views.get(o);this.layout.items.push({layout:a.layout,row:r,col:i,row_span:t,col_span:s})}this.layout.set_sizing(this.box_sizing())}}e.GridBoxView=p,p.__name__="GridBoxView";class T extends w.LayoutDOM{constructor(o){super(o)}}e.GridBox=T,v=T,T.__name__="GridBox",v.prototype.default_view=p,v.define(({Any:c,Int:o,Number:r,Tuple:i,Array:t,Ref:s,Or:a,Opt:u})=>({children:[t(i(s(w.LayoutDOM),o,o,u(o),u(o))),[]],rows:[c,"auto"],cols:[c,"auto"],spacing:[a(r,i(r,r)),0]}))},function(Q,O,e,C,R){C();const v=Q(309),w=Q(207);class g extends v.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new w.ContentBox(this.el),this.layout.set_sizing(this.box_sizing())}}e.HTMLBoxView=g,g.__name__="HTMLBoxView";class p extends v.LayoutDOM{constructor(c){super(c)}}e.HTMLBox=p,p.__name__="HTMLBox"},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(309);class p extends w.Model{constructor(c){super(c)}}e.Panel=p,v=p,p.__name__="Panel",v.define(({Boolean:T,String:c,Ref:o})=>({title:[c,""],child:[o(g.LayoutDOM)],closable:[T,!1],disabled:[T,!1]}))},function(Q,O,e,C,R){var v;C();const w=Q(308),g=Q(209);class p extends w.BoxView{_update_layout(){const o=this.child_views.map(r=>r.layout);this.layout=new g.Row(o),this.layout.cols=this.model.cols,this.layout.spacing=[0,this.model.spacing],this.layout.set_sizing(this.box_sizing())}}e.RowView=p,p.__name__="RowView";class T extends w.Box{constructor(o){super(o)}}e.Row=T,v=T,T.__name__="Row",v.prototype.default_view=p,v.define(({Any:c})=>({cols:[c,"auto"]}))},function(V,Q,O,e,C){var R;e();const v=V(309),w=V(207);class g extends v.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new w.LayoutItem,this.layout.set_sizing(this.box_sizing())}}O.SpacerView=g,g.__name__="SpacerView";class p extends v.LayoutDOM{constructor(c){super(c)}}O.Spacer=p,R=p,p.__name__="Spacer",R.prototype.default_view=g},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(207),p=Q(43),T=Q(9),c=Q(10),o=Q(20),r=Q(309),i=Q(313),t=(0,v.__importStar)(Q(317)),s=t,a=(0,v.__importStar)(Q(318)),u=a,l=(0,v.__importStar)(Q(229)),d=l;class m extends r.LayoutDOMView{constructor(){super(...arguments),this._scroll_index=0}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tabs.change,()=>this.rebuild()),this.connect(this.model.properties.active.change,()=>this.on_active_change())}styles(){return[...super.styles(),a.default,l.default,t.default]}get child_models(){return this.model.tabs.map(y=>y.child)}_update_layout(){const y=this.model.tabs_location,A=y=="above"||y=="below",{scroll_el:L,headers_el:x}=this;this.header=new class extends g.ContentBox{_measure(P){const N=(0,p.size)(L),B=(0,p.children)(x).slice(0,3).map(M=>(0,p.size)(M)),{width:D,height:j}=super._measure(P);if(A){const M=N.width+(0,T.sum)(B.map(F=>F.width));return{width:P.width!=1/0?P.width:M,height:j}}{const M=N.height+(0,T.sum)(B.map(F=>F.height));return{width:D,height:P.height!=1/0?P.height:M}}}}(this.header_el),A?this.header.set_sizing({width_policy:"fit",height_policy:"fixed"}):this.header.set_sizing({width_policy:"fixed",height_policy:"fit"});let H=1,S=1;switch(y){case"above":H-=1;break;case"below":H+=1;break;case"left":S-=1;break;case"right":S+=1}const k={layout:this.header,row:H,col:S},E=this.child_views.map(P=>({layout:P.layout,row:1,col:1}));this.layout=new g.Grid([k,...E]),this.layout.set_sizing(this.box_sizing())}update_position(){super.update_position(),this.header_el.style.position="absolute",(0,p.position)(this.header_el,this.header.bbox);const y=this.model.tabs_location,A=y=="above"||y=="below",L=(0,p.size)(this.scroll_el),x=(0,p.scroll_size)(this.headers_el);if(A){const{width:k}=this.header.bbox;x.width>k?(this.wrapper_el.style.maxWidth=k-L.width+"px",(0,p.display)(this.scroll_el),this.do_scroll(this.model.active)):(this.wrapper_el.style.maxWidth="",(0,p.undisplay)(this.scroll_el))}else{const{height:k}=this.header.bbox;x.height>k?(this.wrapper_el.style.maxHeight=k-L.height+"px",(0,p.display)(this.scroll_el),this.do_scroll(this.model.active)):(this.wrapper_el.style.maxHeight="",(0,p.undisplay)(this.scroll_el))}const{child_views:H}=this;for(const k of H)(0,p.hide)(k.el);const S=H[this.model.active];S!=null&&(0,p.show)(S.el)}render(){super.render();const{active:y}=this.model,A=this.model.tabs.map((x,H)=>{const S=(0,p.div)({class:[s.tab,H==y?s.active:null]},x.title);if(S.addEventListener("click",k=>{this.model.disabled||k.target==k.currentTarget&&this.change_active(H)}),x.closable){const k=(0,p.div)({class:s.close});k.addEventListener("click",E=>{if(E.target==E.currentTarget){this.model.tabs=(0,T.remove_at)(this.model.tabs,H);const P=this.model.tabs.length;this.model.active>P-1&&(this.model.active=P-1)}}),S.appendChild(k)}return(this.model.disabled||x.disabled)&&S.classList.add(s.disabled),S});this.headers_el=(0,p.div)({class:[s.headers]},A),this.wrapper_el=(0,p.div)({class:s.headers_wrapper},this.headers_el),this.left_el=(0,p.div)({class:[u.btn,u.btn_default],disabled:""},(0,p.div)({class:[d.caret,s.left]})),this.right_el=(0,p.div)({class:[u.btn,u.btn_default]},(0,p.div)({class:[d.caret,s.right]})),this.left_el.addEventListener("click",()=>this.do_scroll("left")),this.right_el.addEventListener("click",()=>this.do_scroll("right")),this.scroll_el=(0,p.div)({class:u.btn_group},this.left_el,this.right_el);const L=this.model.tabs_location;this.header_el=(0,p.div)({class:[s.tabs_header,s[L]]},this.scroll_el,this.wrapper_el),this.el.appendChild(this.header_el)}do_scroll(y){const A=this.model.tabs.length;y=="left"?this._scroll_index-=1:y=="right"?this._scroll_index+=1:this._scroll_index=y,this._scroll_index=(0,c.clamp)(this._scroll_index,0,A-1),this._scroll_index==0?this.left_el.setAttribute("disabled",""):this.left_el.removeAttribute("disabled"),this._scroll_index==A-1?this.right_el.setAttribute("disabled",""):this.right_el.removeAttribute("disabled");const L=(0,p.children)(this.headers_el).slice(0,this._scroll_index).map(H=>H.getBoundingClientRect()),x=this.model.tabs_location;if(x=="above"||x=="below"){const H=-(0,T.sum)(L.map(S=>S.width));this.headers_el.style.left=`${H}px`}else{const H=-(0,T.sum)(L.map(S=>S.height));this.headers_el.style.top=`${H}px`}}change_active(y){y!=this.model.active&&(this.model.active=y)}on_active_change(){const y=this.model.active,A=(0,p.children)(this.headers_el);for(const x of A)x.classList.remove(s.active);A[y].classList.add(s.active);const{child_views:L}=this;for(const x of L)(0,p.hide)(x.el);(0,p.show)(L[y].el)}}e.TabsView=m,m.__name__="TabsView";class f extends r.LayoutDOM{constructor(y){super(y)}}e.Tabs=f,w=f,f.__name__="Tabs",w.prototype.default_view=m,w.define(({Int:b,Array:y,Ref:A})=>({tabs:[y(A(i.Panel)),[]],tabs_location:[o.Location,"above"],active:[b,0]}))},function(Q,O,e,C,R){C(),e.root="bk-root",e.tabs_header="bk-tabs-header",e.btn_group="bk-btn-group",e.btn="bk-btn",e.headers_wrapper="bk-headers-wrapper",e.above="bk-above",e.right="bk-right",e.below="bk-below",e.left="bk-left",e.headers="bk-headers",e.tab="bk-tab",e.active="bk-active",e.close="bk-close",e.disabled="bk-disabled",e.default=`.bk-root .bk-tabs-header{display:flex;flex-wrap:nowrap;align-items:center;overflow:hidden;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-tabs-header .bk-btn-group{height:auto;margin-right:5px;}.bk-root .bk-tabs-header .bk-btn-group > .bk-btn{flex-grow:0;height:auto;padding:4px 4px;}.bk-root .bk-tabs-header .bk-headers-wrapper{flex-grow:1;overflow:hidden;color:#666666;}.bk-root .bk-tabs-header.bk-above .bk-headers-wrapper{border-bottom:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-right .bk-headers-wrapper{border-left:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-below .bk-headers-wrapper{border-top:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-left .bk-headers-wrapper{border-right:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-above,.bk-root .bk-tabs-header.bk-below{flex-direction:row;}.bk-root .bk-tabs-header.bk-above .bk-headers,.bk-root .bk-tabs-header.bk-below .bk-headers{flex-direction:row;}.bk-root .bk-tabs-header.bk-left,.bk-root .bk-tabs-header.bk-right{flex-direction:column;}.bk-root .bk-tabs-header.bk-left .bk-headers,.bk-root .bk-tabs-header.bk-right .bk-headers{flex-direction:column;}.bk-root .bk-tabs-header .bk-headers{position:relative;display:flex;flex-wrap:nowrap;align-items:center;}.bk-root .bk-tabs-header .bk-tab{padding:4px 8px;border:solid transparent;white-space:nowrap;cursor:pointer;}.bk-root .bk-tabs-header .bk-tab:hover{background-color:#f2f2f2;}.bk-root .bk-tabs-header .bk-tab.bk-active{color:#4d4d4d;background-color:white;border-color:#e6e6e6;}.bk-root .bk-tabs-header .bk-tab .bk-close{margin-left:10px;}.bk-root .bk-tabs-header .bk-tab.bk-disabled{cursor:not-allowed;pointer-events:none;opacity:0.65;}.bk-root .bk-tabs-header.bk-above .bk-tab{border-width:3px 1px 0px 1px;border-radius:4px 4px 0 0;}.bk-root .bk-tabs-header.bk-right .bk-tab{border-width:1px 3px 1px 0px;border-radius:0 4px 4px 0;}.bk-root .bk-tabs-header.bk-below .bk-tab{border-width:0px 1px 3px 1px;border-radius:0 0 4px 4px;}.bk-root .bk-tabs-header.bk-left .bk-tab{border-width:1px 0px 1px 3px;border-radius:4px 0 0 4px;}.bk-root .bk-close{display:inline-block;width:10px;height:10px;vertical-align:middle;background-image:url('data:image/svg+xml;utf8, <svg viewPort="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg"> <line x1="1" y1="9" x2="9" y2="1" stroke="gray" stroke-width="2"/> <line x1="1" y1="1" x2="9" y2="9" stroke="gray" stroke-width="2"/> </svg>');}.bk-root .bk-close:hover{background-image:url('data:image/svg+xml;utf8, <svg viewPort="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg"> <line x1="1" y1="9" x2="9" y2="1" stroke="red" stroke-width="2"/> <line x1="1" y1="1" x2="9" y2="9" stroke="red" stroke-width="2"/> </svg>');}`},function(Q,O,e,C,R){C(),e.root="bk-root",e.btn="bk-btn",e.active="bk-active",e.btn_default="bk-btn-default",e.btn_primary="bk-btn-primary",e.btn_success="bk-btn-success",e.btn_warning="bk-btn-warning",e.btn_danger="bk-btn-danger",e.btn_light="bk-btn-light",e.btn_group="bk-btn-group",e.vertical="bk-vertical",e.horizontal="bk-horizontal",e.dropdown_toggle="bk-dropdown-toggle",e.default=".bk-root .bk-btn{height:100%;display:inline-block;text-align:center;vertical-align:middle;white-space:nowrap;cursor:pointer;padding:6px 12px;font-size:12px;border:1px solid transparent;border-radius:4px;outline:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-btn:hover,.bk-root .bk-btn:focus{text-decoration:none;}.bk-root .bk-btn:active,.bk-root .bk-btn.bk-active{background-image:none;box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);}.bk-root .bk-btn[disabled]{cursor:not-allowed;pointer-events:none;opacity:0.65;box-shadow:none;}.bk-root .bk-btn-default{color:#333;background-color:#fff;border-color:#ccc;}.bk-root .bk-btn-default:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-default.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-default[disabled],.bk-root .bk-btn-default[disabled]:hover,.bk-root .bk-btn-default[disabled]:focus,.bk-root .bk-btn-default[disabled]:active,.bk-root .bk-btn-default[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd;}.bk-root .bk-btn-primary:hover{background-color:#3681c1;border-color:#2c699e;}.bk-root .bk-btn-primary.bk-active{background-color:#3276b1;border-color:#285e8e;}.bk-root .bk-btn-primary[disabled],.bk-root .bk-btn-primary[disabled]:hover,.bk-root .bk-btn-primary[disabled]:focus,.bk-root .bk-btn-primary[disabled]:active,.bk-root .bk-btn-primary[disabled].bk-active{background-color:#506f89;border-color:#357ebd;}.bk-root .bk-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c;}.bk-root .bk-btn-success:hover{background-color:#4eb24e;border-color:#409240;}.bk-root .bk-btn-success.bk-active{background-color:#47a447;border-color:#398439;}.bk-root .bk-btn-success[disabled],.bk-root .bk-btn-success[disabled]:hover,.bk-root .bk-btn-success[disabled]:focus,.bk-root .bk-btn-success[disabled]:active,.bk-root .bk-btn-success[disabled].bk-active{background-color:#667b66;border-color:#4cae4c;}.bk-root .bk-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236;}.bk-root .bk-btn-warning:hover{background-color:#eea43b;border-color:#e89014;}.bk-root .bk-btn-warning.bk-active{background-color:#ed9c28;border-color:#d58512;}.bk-root .bk-btn-warning[disabled],.bk-root .bk-btn-warning[disabled]:hover,.bk-root .bk-btn-warning[disabled]:focus,.bk-root .bk-btn-warning[disabled]:active,.bk-root .bk-btn-warning[disabled].bk-active{background-color:#c89143;border-color:#eea236;}.bk-root .bk-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a;}.bk-root .bk-btn-danger:hover{background-color:#d5433e;border-color:#bd2d29;}.bk-root .bk-btn-danger.bk-active{background-color:#d2322d;border-color:#ac2925;}.bk-root .bk-btn-danger[disabled],.bk-root .bk-btn-danger[disabled]:hover,.bk-root .bk-btn-danger[disabled]:focus,.bk-root .bk-btn-danger[disabled]:active,.bk-root .bk-btn-danger[disabled].bk-active{background-color:#a55350;border-color:#d43f3a;}.bk-root .bk-btn-light{color:#333;background-color:#fff;border-color:#ccc;border-color:transparent;}.bk-root .bk-btn-light:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-light.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-light[disabled],.bk-root .bk-btn-light[disabled]:hover,.bk-root .bk-btn-light[disabled]:focus,.bk-root .bk-btn-light[disabled]:active,.bk-root .bk-btn-light[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-group{height:100%;display:flex;flex-wrap:nowrap;align-items:center;}.bk-root .bk-btn-group:not(.bk-vertical),.bk-root .bk-btn-group.bk-horizontal{flex-direction:row;}.bk-root .bk-btn-group.bk-vertical{flex-direction:column;}.bk-root .bk-btn-group > .bk-btn{flex-grow:1;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn + .bk-btn{margin-left:-1px;}.bk-root .bk-btn-group.bk-vertical > .bk-btn + .bk-btn{margin-top:-1px;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn:first-child:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn:not(:first-child):last-child{border-bottom-left-radius:0;border-top-left-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn:not(:first-child):last-child{border-top-left-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group > .bk-btn:not(:first-child):not(:last-child){border-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn{width:100%;}.bk-root .bk-btn-group .bk-dropdown-toggle{flex:0 0 0;padding:6px 6px;}"},function(V,Q,O,e,C){var R;e();const v=V(310);class w extends v.ColumnView{}O.WidgetBoxView=w,w.__name__="WidgetBoxView";class g extends v.Column{constructor(T){super(T)}}O.WidgetBox=g,R=g,g.__name__="WidgetBox",R.prototype.default_view=w},function(Q,O,e,C,R){C();var v=Q(135);R("MathText",v.MathText),R("Ascii",v.Ascii),R("MathML",v.MathML),R("TeX",v.TeX),R("PlainText",Q(139).PlainText)},function(Q,O,e,C,R){C(),R("CustomJSTransform",Q(322).CustomJSTransform),R("Dodge",Q(323).Dodge),R("Interpolator",Q(325).Interpolator),R("Jitter",Q(326).Jitter),R("LinearInterpolator",Q(327).LinearInterpolator),R("StepInterpolator",Q(328).StepInterpolator),R("Transform",Q(56).Transform)},function(Q,O,e,C,R){var v;C();const w=Q(56),g=Q(13),p=Q(34);class T extends w.Transform{constructor(o){super(o)}get names(){return(0,g.keys)(this.args)}get values(){return(0,g.values)(this.args)}_make_transform(o,r){return new Function(...this.names,o,(0,p.use_strict)(r))}get scalar_transform(){return this._make_transform("x",this.func)}get vector_transform(){return this._make_transform("xs",this.v_func)}compute(o){return this.scalar_transform(...this.values,o)}v_compute(o){return this.vector_transform(...this.values,o)}}e.CustomJSTransform=T,v=T,T.__name__="CustomJSTransform",v.define(({Unknown:c,String:o,Dict:r})=>({args:[r(c),{}],func:[o,""],v_func:[o,""]}))},function(Q,O,e,C,R){var v;C();const w=Q(324);class g extends w.RangeTransform{constructor(T){super(T)}_compute(T){return T+this.value}}e.Dodge=g,v=g,g.__name__="Dodge",v.define(({Number:p})=>({value:[p,0]}))},function(Q,O,e,C,R){var v;C();const w=Q(56),g=Q(57),p=Q(67),T=Q(24),c=Q(8),o=Q(11);class r extends w.Transform{constructor(t){super(t)}v_compute(t){let s;this.range instanceof p.FactorRange?s=this.range.v_synthetic(t):(0,c.isArrayableOf)(t,c.isNumber)?s=t:(0,o.unreachable)();const a=new((0,T.infer_type)(s))(s.length);for(let u=0;u<s.length;u++){const l=s[u];a[u]=this._compute(l)}return a}compute(t){return this.range instanceof p.FactorRange?this._compute(this.range.synthetic(t)):(0,c.isNumber)(t)?this._compute(t):void(0,o.unreachable)()}}e.RangeTransform=r,v=r,r.__name__="RangeTransform",v.define(({Ref:i,Nullable:t})=>({range:[t(i(g.Range)),null]}))},function(Q,O,e,C,R){var v;C();const w=Q(56),g=Q(70),p=Q(24),T=Q(9),c=Q(8);class o extends w.Transform{constructor(i){super(i),this._sorted_dirty=!0}connect_signals(){super.connect_signals(),this.connect(this.change,()=>this._sorted_dirty=!0)}v_compute(i){const t=new((0,p.infer_type)(i))(i.length);for(let s=0;s<i.length;s++){const a=i[s];t[s]=this.compute(a)}return t}sort(i=!1){if(!this._sorted_dirty)return;let t,s;if((0,c.isString)(this.x)&&(0,c.isString)(this.y)&&this.data!=null){const d=this.data.columns();if(!(0,T.includes)(d,this.x))throw new Error("The x parameter does not correspond to a valid column name defined in the data parameter");if(!(0,T.includes)(d,this.y))throw new Error("The y parameter does not correspond to a valid column name defined in the data parameter");t=this.data.get_column(this.x),s=this.data.get_column(this.y)}else{if(!(0,c.isArray)(this.x)||!(0,c.isArray)(this.y))throw new Error("parameters 'x' and 'y' must be both either string fields or arrays");t=this.x,s=this.y}if(t.length!==s.length)throw new Error("The length for x and y do not match");if(t.length<2)throw new Error("x and y must have at least two elements to support interpolation");const a=t.length,u=new Uint32Array(a);for(let d=0;d<a;d++)u[d]=d;const l=i?-1:1;u.sort((d,m)=>l*(t[d]-t[m])),this._x_sorted=new((0,p.infer_type)(t))(a),this._y_sorted=new((0,p.infer_type)(s))(a);for(let d=0;d<a;d++)this._x_sorted[d]=t[u[d]],this._y_sorted[d]=s[u[d]];this._sorted_dirty=!1}}e.Interpolator=o,v=o,o.__name__="Interpolator",v.define(({Boolean:r,Number:i,String:t,Ref:s,Array:a,Or:u,Nullable:l})=>({x:[u(t,a(i))],y:[u(t,a(i))],data:[l(s(g.ColumnarDataSource)),null],clip:[r,!0]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(324),p=Q(67),T=Q(20),c=Q(8),o=Q(12),r=(0,v.__importStar)(Q(10)),i=Q(11);class t extends g.RangeTransform{constructor(a){super(a)}v_compute(a){var u;let l;this.range instanceof p.FactorRange?l=this.range.v_synthetic(a):(0,c.isArrayableOf)(a,c.isNumber)?l=a:(0,i.unreachable)();const d=l.length;((u=this.previous_offsets)===null||u===void 0?void 0:u.length)!=d&&(this.previous_offsets=new Array(d),this.previous_offsets=(0,o.map)(this.previous_offsets,()=>this._compute()));const m=this.previous_offsets;return(0,o.map)(l,(f,b)=>m[b]+f)}_compute(){switch(this.distribution){case"uniform":return this.mean+(r.random()-.5)*this.width;case"normal":return r.rnorm(this.mean,this.width)}}}e.Jitter=t,w=t,t.__name__="Jitter",w.define(({Number:s})=>({mean:[s,0],width:[s,1],distribution:[T.Distribution,"uniform"]}))},function(V,Q,O,e,C){e();const R=V(9),v=V(325);class w extends v.Interpolator{constructor(p){super(p)}compute(p){if(this.sort(!1),this.clip){if(p<this._x_sorted[0]||p>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(p<this._x_sorted[0])return this._y_sorted[0];if(p>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(p==this._x_sorted[0])return this._y_sorted[0];const T=(0,R.find_last_index)(this._x_sorted,t=>t<p),c=this._x_sorted[T],o=this._x_sorted[T+1],r=this._y_sorted[T],i=this._y_sorted[T+1];return r+(p-c)/(o-c)*(i-r)}}O.LinearInterpolator=w,w.__name__="LinearInterpolator"},function(Q,O,e,C,R){var v;C();const w=Q(325),g=Q(20),p=Q(9);class T extends w.Interpolator{constructor(o){super(o)}compute(o){if(this.sort(!1),this.clip){if(o<this._x_sorted[0]||o>this._x_sorted[this._x_sorted.length-1])return NaN}else{if(o<this._x_sorted[0])return this._y_sorted[0];if(o>this._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}let r;switch(this.mode){case"after":r=(0,p.find_last_index)(this._x_sorted,i=>o>=i);break;case"before":r=(0,p.find_index)(this._x_sorted,i=>o<=i);break;case"center":{const i=(0,p.map)(this._x_sorted,s=>Math.abs(s-o)),t=(0,p.min)(i);r=(0,p.find_index)(i,s=>t===s);break}default:throw new Error(`unknown mode: ${this.mode}`)}return r!=-1?this._y_sorted[r]:NaN}}e.StepInterpolator=T,v=T,T.__name__="StepInterpolator",v.define(()=>({mode:[g.StepMode,"after"]}))},function(Q,O,e,C,R){C(),R("MapOptions",Q(330).MapOptions),R("GMapOptions",Q(330).GMapOptions),R("GMapPlot",Q(330).GMapPlot),R("Plot",Q(331).Plot)},function(Q,O,e,C,R){var v,w,g;C();const p=Q(331),T=Q(53),c=Q(58),o=Q(336);R("GMapPlotView",o.GMapPlotView);class r extends T.Model{constructor(a){super(a)}}e.MapOptions=r,v=r,r.__name__="MapOptions",v.define(({Int:s,Number:a})=>({lat:[a],lng:[a],zoom:[s,12]}));class i extends r{constructor(a){super(a)}}e.GMapOptions=i,w=i,i.__name__="GMapOptions",w.define(({Boolean:s,Int:a,String:u})=>({map_type:[u,"roadmap"],scale_control:[s,!1],styles:[u],tilt:[a,45]}));class t extends p.Plot{constructor(a){super(a),this.use_map=!0}}e.GMapPlot=t,g=t,t.__name__="GMapPlot",g.prototype.default_view=o.GMapPlotView,g.define(({String:s,Ref:a})=>({map_options:[a(i)],api_key:[s],api_version:[s,"weekly"]})),g.override({x_range:()=>new c.Range1d,y_range:()=>new c.Range1d})},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=(0,v.__importStar)(Q(48)),p=(0,v.__importStar)(Q(18)),T=Q(15),c=Q(20),o=Q(9),r=Q(13),i=Q(8),t=Q(309),s=Q(128),a=Q(306),u=Q(40),l=Q(118),d=Q(59),m=Q(221),f=Q(57),b=Q(55),y=Q(75),A=Q(41),L=Q(176),x=Q(175),H=Q(63),S=Q(332);R("PlotView",S.PlotView);class k extends t.LayoutDOM{constructor(P){super(P),this.use_map=!1}_doc_attached(){super._doc_attached(),this._push_changes([[this.properties.inner_height,null,this.inner_height],[this.properties.inner_width,null,this.inner_width]])}initialize(){super.initialize(),this.reset=new T.Signal0(this,"reset");for(const P of(0,r.values)(this.extra_x_ranges).concat(this.x_range)){let N=P.plots;(0,i.isArray)(N)&&(N=N.concat(this),P.setv({plots:N},{silent:!0}))}for(const P of(0,r.values)(this.extra_y_ranges).concat(this.y_range)){let N=P.plots;(0,i.isArray)(N)&&(N=N.concat(this),P.setv({plots:N},{silent:!0}))}}add_layout(P,N="center"){const B=this.properties[N].get_value();this.setv({[N]:[...B,P]})}remove_layout(P){const N=B=>{(0,o.remove_by)(B,D=>D==P)};N(this.left),N(this.right),N(this.above),N(this.below),N(this.center)}get data_renderers(){return this.renderers.filter(P=>P instanceof L.DataRenderer)}add_renderers(...P){this.renderers=this.renderers.concat(P)}add_glyph(P,N=new y.ColumnDataSource,B={}){const D=new x.GlyphRenderer(Object.assign(Object.assign({},B),{data_source:N,glyph:P}));return this.add_renderers(D),D}add_tools(...P){this.toolbar.tools=this.toolbar.tools.concat(P)}get panels(){return[...this.side_panels,...this.center]}get side_panels(){const{above:P,below:N,left:B,right:D}=this;return(0,o.concat)([P,N,B,D])}}e.Plot=k,w=k,k.__name__="Plot",w.prototype.default_view=S.PlotView,w.mixins([["outline_",g.Line],["background_",g.Fill],["border_",g.Fill]]),w.define(({Boolean:E,Number:P,String:N,Array:B,Dict:D,Or:j,Ref:M,Null:F,Nullable:W})=>({toolbar:[M(m.Toolbar),()=>new m.Toolbar],toolbar_location:[W(c.Location),"right"],toolbar_sticky:[E,!0],plot_width:[p.Alias("width")],plot_height:[p.Alias("height")],frame_width:[W(P),null],frame_height:[W(P),null],title:[j(M(l.Title),N,F),"",{convert:U=>(0,i.isString)(U)?new l.Title({text:U}):U}],title_location:[W(c.Location),"above"],above:[B(j(M(u.Annotation),M(s.Axis))),[]],below:[B(j(M(u.Annotation),M(s.Axis))),[]],left:[B(j(M(u.Annotation),M(s.Axis))),[]],right:[B(j(M(u.Annotation),M(s.Axis))),[]],center:[B(j(M(u.Annotation),M(a.Grid))),[]],renderers:[B(M(A.Renderer)),[]],x_range:[M(f.Range),()=>new H.DataRange1d],y_range:[M(f.Range),()=>new H.DataRange1d],x_scale:[M(b.Scale),()=>new d.LinearScale],y_scale:[M(b.Scale),()=>new d.LinearScale],extra_x_ranges:[D(M(f.Range)),{}],extra_y_ranges:[D(M(f.Range)),{}],extra_x_scales:[D(M(b.Scale)),{}],extra_y_scales:[D(M(b.Scale)),{}],lod_factor:[P,10],lod_interval:[P,300],lod_threshold:[W(P),2e3],lod_timeout:[P,500],hidpi:[E,!0],output_backend:[c.OutputBackend,"canvas"],min_border:[W(P),5],min_border_top:[W(P),null],min_border_left:[W(P),null],min_border_bottom:[W(P),null],min_border_right:[W(P),null],inner_width:[P,0],inner_height:[P,0],outer_width:[P,0],outer_height:[P,0],match_aspect:[E,!1],aspect_scale:[P,1],reset_policy:[c.ResetPolicy,"standard"]})),w.override({width:600,height:600,outline_line_color:"#e5e5e5",border_fill_color:"#ffffff",background_fill_color:"#ffffff"})},function(Q,O,e,C,R){C();const v=Q(1),w=Q(126),g=Q(249),p=Q(309),T=Q(40),c=Q(118),o=Q(128),r=Q(220),i=Q(251),t=Q(113),s=Q(45),a=Q(19),u=Q(251),l=Q(333),d=Q(8),m=Q(9),f=Q(235),b=Q(208),y=Q(211),A=Q(209),L=Q(123),x=Q(65),H=Q(334),S=Q(335),k=Q(28);class E extends p.LayoutDOMView{constructor(){super(...arguments),this._outer_bbox=new x.BBox,this._inner_bbox=new x.BBox,this._needs_paint=!0,this._needs_layout=!1,this._invalidated_painters=new Set,this._invalidate_all=!0,this._needs_notify=!1}get canvas(){return this.canvas_view}get state(){return this._state_manager}set invalidate_dataranges(N){this._range_manager.invalidate_dataranges=N}renderer_view(N){const B=this.renderer_views.get(N);if(B==null)for(const[,D]of this.renderer_views){const j=D.renderer_view(N);if(j!=null)return j}return B}get is_paused(){return this._is_paused!=null&&this._is_paused!==0}get child_models(){return[]}pause(){this._is_paused==null?this._is_paused=1:this._is_paused+=1}unpause(N=!1){if(this._is_paused==null)throw new Error("wasn't paused");this._is_paused-=1,this._is_paused!=0||N||this.request_paint("everything")}notify_finished_after_paint(){this._needs_notify=!0}request_render(){this.request_paint("everything")}request_paint(N){this.invalidate_painters(N),this.schedule_paint()}invalidate_painters(N){if(N=="everything")this._invalidate_all=!0;else if((0,d.isArray)(N))for(const B of N)this._invalidated_painters.add(B);else this._invalidated_painters.add(N)}schedule_paint(){if(!this.is_paused){const N=this.throttled_paint();this._ready=this._ready.then(()=>N)}}request_layout(){this._needs_layout=!0,this.request_paint("everything")}reset(){this.model.reset_policy=="standard"&&(this.state.clear(),this.reset_range(),this.reset_selection()),this.model.trigger_event(new i.Reset)}remove(){(0,t.remove_views)(this.renderer_views),(0,t.remove_views)(this.tool_views),this.canvas_view.remove(),super.remove()}render(){super.render(),this.el.appendChild(this.canvas_view.el),this.canvas_view.render()}initialize(){this.pause(),super.initialize(),this.lod_started=!1,this.visuals=new s.Visuals(this),this._initial_state={selection:new Map,dimensions:{width:0,height:0}},this.visibility_callbacks=[],this.renderer_views=new Map,this.tool_views=new Map,this.frame=new w.CartesianFrame(this.model.x_scale,this.model.y_scale,this.model.x_range,this.model.y_range,this.model.extra_x_ranges,this.model.extra_y_ranges,this.model.extra_x_scales,this.model.extra_y_scales),this._range_manager=new H.RangeManager(this),this._state_manager=new S.StateManager(this,this._initial_state),this.throttled_paint=(0,l.throttle)(()=>this.repaint(),1e3/60);const{title_location:N,title:B}=this.model;N!=null&&B!=null&&(this._title=B instanceof c.Title?B:new c.Title({text:B}));const{toolbar_location:D,toolbar:j}=this.model;D!=null&&j!=null&&(this._toolbar=new r.ToolbarPanel({toolbar:j}),j.toolbar_location=D)}async lazy_initialize(){await super.lazy_initialize();const{hidpi:N,output_backend:B}=this.model,D=new g.Canvas({hidpi:N,output_backend:B});this.canvas_view=await(0,t.build_view)(D,{parent:this}),this.canvas_view.plot_views=[this],await this.build_renderer_views(),await this.build_tool_views(),this._range_manager.update_dataranges(),this.unpause(!0),a.logger.debug("PlotView initialized")}_width_policy(){return this.model.frame_width==null?super._width_policy():"min"}_height_policy(){return this.model.frame_height==null?super._height_policy():"min"}_update_layout(){var N,B,D,j,M;this.layout=new y.BorderLayout,this.layout.set_sizing(this.box_sizing());const F=(0,m.copy)(this.model.above),W=(0,m.copy)(this.model.below),U=(0,m.copy)(this.model.left),q=(0,m.copy)(this.model.right),X=dt=>{switch(dt){case"above":return F;case"below":return W;case"left":return U;case"right":return q}},{title_location:ae,title:me}=this.model;ae!=null&&me!=null&&X(ae).push(this._title);const{toolbar_location:Ve,toolbar:Je}=this.model;if(Ve!=null&&Je!=null){const dt=X(Ve);let Wt=!0;if(this.model.toolbar_sticky)for(let jt=0;jt<dt.length;jt++){const a1=dt[jt];if(a1 instanceof c.Title){dt[jt]=Ve=="above"||Ve=="below"?[a1,this._toolbar]:[this._toolbar,a1],Wt=!1;break}}Wt&&dt.push(this._toolbar)}const rt=(dt,Wt)=>{var jt;const a1=this.renderer_view(Wt);return a1.panel=new L.Panel(dt),(jt=a1.update_layout)===null||jt===void 0||jt.call(a1),a1.layout},yt=(dt,Wt)=>{const jt=dt=="above"||dt=="below",a1=[];for(const ye of Wt)if((0,d.isArray)(ye)){const ie=ye.map(St=>{const mt=rt(dt,St);if(St instanceof r.ToolbarPanel){const Pt=jt?"width_policy":"height_policy";mt.set_sizing(Object.assign(Object.assign({},mt.sizing),{[Pt]:"min"}))}return mt});let nt;jt?(nt=new A.Row(ie),nt.set_sizing({width_policy:"max",height_policy:"min"})):(nt=new A.Column(ie),nt.set_sizing({width_policy:"min",height_policy:"max"})),nt.absolute=!0,a1.push(nt)}else a1.push(rt(dt,ye));return a1},xt=(N=this.model.min_border)!==null&&N!==void 0?N:0;this.layout.min_border={left:(B=this.model.min_border_left)!==null&&B!==void 0?B:xt,top:(D=this.model.min_border_top)!==null&&D!==void 0?D:xt,right:(j=this.model.min_border_right)!==null&&j!==void 0?j:xt,bottom:(M=this.model.min_border_bottom)!==null&&M!==void 0?M:xt};const r1=new b.NodeLayout,t1=new b.VStack,Bt=new b.VStack,Kt=new b.HStack,wt=new b.HStack;r1.absolute=!0,t1.absolute=!0,Bt.absolute=!0,Kt.absolute=!0,wt.absolute=!0,r1.children=this.model.center.filter(dt=>dt instanceof T.Annotation).map(dt=>{var Wt;const jt=this.renderer_view(dt);return(Wt=jt.update_layout)===null||Wt===void 0||Wt.call(jt),jt.layout}).filter(dt=>dt!=null);const{frame_width:Rt,frame_height:Ht}=this.model;r1.set_sizing(Object.assign(Object.assign({},Rt!=null?{width_policy:"fixed",width:Rt}:{width_policy:"fit"}),Ht!=null?{height_policy:"fixed",height:Ht}:{height_policy:"fit"})),r1.on_resize(dt=>this.frame.set_geometry(dt)),t1.children=(0,m.reversed)(yt("above",F)),Bt.children=yt("below",W),Kt.children=(0,m.reversed)(yt("left",U)),wt.children=yt("right",q),t1.set_sizing({width_policy:"fit",height_policy:"min"}),Bt.set_sizing({width_policy:"fit",height_policy:"min"}),Kt.set_sizing({width_policy:"min",height_policy:"fit"}),wt.set_sizing({width_policy:"min",height_policy:"fit"}),this.layout.center_panel=r1,this.layout.top_panel=t1,this.layout.bottom_panel=Bt,this.layout.left_panel=Kt,this.layout.right_panel=wt}get axis_views(){const N=[];for(const[,B]of this.renderer_views)B instanceof o.AxisView&&N.push(B);return N}set_toolbar_visibility(N){for(const B of this.visibility_callbacks)B(N)}update_range(N,B){this.pause(),this._range_manager.update(N,B),this.unpause()}reset_range(){this.update_range(null),this.trigger_ranges_update_event()}trigger_ranges_update_event(){const{x_range:N,y_range:B}=this.model;this.model.trigger_event(new u.RangesUpdate(N.start,N.end,B.start,B.end))}get_selection(){const N=new Map;for(const B of this.model.data_renderers){const{selected:D}=B.selection_manager.source;N.set(B,D)}return N}update_selection(N){for(const B of this.model.data_renderers){const D=B.selection_manager.source;if(N!=null){const j=N.get(B);j!=null&&D.selected.update(j,!0)}else D.selection_manager.clear()}}reset_selection(){this.update_selection(null)}_invalidate_layout(){(()=>{var N;for(const B of this.model.side_panels){const D=this.renderer_views.get(B);if(!((N=D.layout)===null||N===void 0)&&N.has_size_changed())return this.invalidate_painters(D),!0}return!1})()&&this.root.compute_layout()}get_renderer_views(){return this.computed_renderers.map(N=>this.renderer_views.get(N))}*_compute_renderers(){const{above:N,below:B,left:D,right:j,center:M,renderers:F}=this.model;yield*F,yield*N,yield*B,yield*D,yield*j,yield*M,this._title!=null&&(yield this._title),this._toolbar!=null&&(yield this._toolbar);for(const W of this.model.toolbar.tools)W.overlay!=null&&(yield W.overlay),yield*W.synthetic_renderers}async build_renderer_views(){this.computed_renderers=[...this._compute_renderers()],await(0,t.build_views)(this.renderer_views,this.computed_renderers,{parent:this})}async build_tool_views(){const N=this.model.toolbar.tools;(await(0,t.build_views)(this.tool_views,N,{parent:this})).map(B=>this.canvas_view.ui_event_bus.register_tool(B))}connect_signals(){super.connect_signals();const{x_ranges:N,y_ranges:B}=this.frame;for(const[,q]of N)this.connect(q.change,()=>{this._needs_layout=!0,this.request_paint("everything")});for(const[,q]of B)this.connect(q.change,()=>{this._needs_layout=!0,this.request_paint("everything")});const{above:D,below:j,left:M,right:F,center:W,renderers:U}=this.model.properties;this.on_change([D,j,M,F,W,U],async()=>await this.build_renderer_views()),this.connect(this.model.toolbar.properties.tools.change,async()=>{await this.build_renderer_views(),await this.build_tool_views()}),this.connect(this.model.change,()=>this.request_paint("everything")),this.connect(this.model.reset,()=>this.reset())}has_finished(){if(!super.has_finished())return!1;if(this.model.visible){for(const[,N]of this.renderer_views)if(!N.has_finished())return!1}return!0}after_layout(){var N;super.after_layout();for(const[,D]of this.renderer_views)D instanceof T.AnnotationView&&((N=D.after_layout)===null||N===void 0||N.call(D));if(this._needs_layout=!1,this.model.setv({inner_width:Math.round(this.frame.bbox.width),inner_height:Math.round(this.frame.bbox.height),outer_width:Math.round(this.layout.bbox.width),outer_height:Math.round(this.layout.bbox.height)},{no_change:!0}),this.model.match_aspect!==!1&&(this.pause(),this._range_manager.update_dataranges(),this.unpause(!0)),!this._outer_bbox.equals(this.layout.bbox)){const{width:D,height:j}=this.layout.bbox;this.canvas_view.resize(D,j),this._outer_bbox=this.layout.bbox,this._invalidate_all=!0,this._needs_paint=!0}const{inner_bbox:B}=this.layout;this._inner_bbox.equals(B)||(this._inner_bbox=B,this._needs_paint=!0),this._needs_paint&&this.paint()}repaint(){this._needs_layout&&this._invalidate_layout(),this.paint()}paint(){this.is_paused||(this.model.visible&&(a.logger.trace(`${this.toString()}.paint()`),this._actual_paint()),this._needs_notify&&(this._needs_notify=!1,this.notify_finished()))}_actual_paint(){var N;const{document:B}=this.model;if(B!=null){const U=B.interactive_duration();U>=0&&U<this.model.lod_interval?setTimeout(()=>{B.interactive_duration()>this.model.lod_timeout&&B.interactive_stop(),this.request_paint("everything")},this.model.lod_timeout):B.interactive_stop()}this._range_manager.invalidate_dataranges&&(this._range_manager.update_dataranges(),this._invalidate_layout());let D=!1,j=!1;if(this._invalidate_all)D=!0,j=!0;else for(const U of this._invalidated_painters){const{level:q}=U.model;if(q!="overlay"?D=!0:j=!0,D&&j)break}this._invalidated_painters.clear(),this._invalidate_all=!1;const M=[this.frame.bbox.left,this.frame.bbox.top,this.frame.bbox.width,this.frame.bbox.height],{primary:F,overlays:W}=this.canvas_view;D&&(F.prepare(),this.canvas_view.prepare_webgl(M),this._map_hook(F.ctx,M),this._paint_empty(F.ctx,M),this._paint_outline(F.ctx,M),this._paint_levels(F.ctx,"image",M,!0),this._paint_levels(F.ctx,"underlay",M,!0),this._paint_levels(F.ctx,"glyph",M,!0),this._paint_levels(F.ctx,"guide",M,!1),this._paint_levels(F.ctx,"annotation",M,!1),F.finish()),(j||k.settings.wireframe)&&(W.prepare(),this._paint_levels(W.ctx,"overlay",M,!1),k.settings.wireframe&&this._paint_layout(W.ctx,this.layout),W.finish()),this._initial_state.range==null&&(this._initial_state.range=(N=this._range_manager.compute_initial())!==null&&N!==void 0?N:void 0),this._needs_paint=!1}_paint_levels(N,B,D,j){for(const M of this.computed_renderers){if(M.level!=B)continue;const F=this.renderer_views.get(M);N.save(),(j||F.needs_clip)&&(N.beginPath(),N.rect(...D),N.clip()),F.render(),N.restore(),F.has_webgl&&F.needs_webgl_blit&&this.canvas_view.blit_webgl(N)}}_paint_layout(N,B){const{x:D,y:j,width:M,height:F}=B.bbox;N.strokeStyle="blue",N.strokeRect(D,j,M,F);for(const W of B)N.save(),B.absolute||N.translate(D,j),this._paint_layout(N,W),N.restore()}_map_hook(N,B){}_paint_empty(N,B){const[D,j,M,F]=[0,0,this.layout.bbox.width,this.layout.bbox.height],[W,U,q,X]=B;this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(N),N.fillRect(D,j,M,F),N.clearRect(W,U,q,X)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(N),N.fillRect(W,U,q,X))}_paint_outline(N,B){if(this.visuals.outline_line.doit){N.save(),this.visuals.outline_line.set_value(N);let[D,j,M,F]=B;D+M==this.layout.bbox.width&&(M-=1),j+F==this.layout.bbox.height&&(F-=1),N.strokeRect(D,j,M,F),N.restore()}}to_blob(){return this.canvas_view.to_blob()}export(N,B=!0){const D=N=="png"?"canvas":"svg",j=new f.CanvasLayer(D,B),{width:M,height:F}=this.layout.bbox;j.resize(M,F);const{canvas:W}=this.canvas_view.compose();return j.ctx.drawImage(W,0,0),j}serializable_state(){const N=super.serializable_state(),{children:B}=N,D=(0,v.__rest)(N,["children"]),j=this.get_renderer_views().map(M=>M.serializable_state()).filter(M=>M.bbox!=null);return Object.assign(Object.assign({},D),{children:[...B??[],...j]})}}e.PlotView=E,E.__name__="PlotView"},function(Q,O,e,C,R){C(),e.throttle=function(v,w){let g=null,p=0,T=!1;return function(){return new Promise((c,o)=>{const r=function(){p=Date.now(),g=null,T=!1;try{v(),c()}catch(s){o(s)}},i=Date.now(),t=w-(i-p);t<=0&&!T?(g!=null&&clearTimeout(g),T=!0,requestAnimationFrame(r)):g||T?c():g=setTimeout(()=>requestAnimationFrame(r),t)})}}},function(Q,O,e,C,R){C();const v=Q(63),w=Q(19);class g{constructor(T){this.parent=T,this.invalidate_dataranges=!0}get frame(){return this.parent.frame}update(T,c){const{x_ranges:o,y_ranges:r}=this.frame;if(T==null){for(const[,i]of o)i.reset();for(const[,i]of r)i.reset();this.update_dataranges()}else{const i=[];for(const[t,s]of o)i.push([s,T.xrs.get(t)]);for(const[t,s]of r)i.push([s,T.yrs.get(t)]);c!=null&&c.scrolling&&this._update_ranges_together(i),this._update_ranges_individually(i,c)}}reset(){this.update(null)}_update_dataranges(T){const c=new Map,o=new Map;let r=!1;for(const[,l]of T.x_ranges)l instanceof v.DataRange1d&&l.scale_hint=="log"&&(r=!0);for(const[,l]of T.y_ranges)l instanceof v.DataRange1d&&l.scale_hint=="log"&&(r=!0);for(const l of this.parent.model.data_renderers){const d=this.parent.renderer_view(l);if(d==null)continue;const m=d.glyph_view.bounds();if(m!=null&&c.set(l,m),r){const f=d.glyph_view.log_bounds();f!=null&&o.set(l,f)}}let i=!1,t=!1;const s=T.x_target.span,a=T.y_target.span;let u;this.parent.model.match_aspect!==!1&&s!=0&&a!=0&&(u=1/this.parent.model.aspect_scale*(s/a));for(const[,l]of T.x_ranges){if(l instanceof v.DataRange1d){const d=l.scale_hint=="log"?o:c;l.update(d,0,this.parent.model,u),l.follow&&(i=!0)}l.bounds!=null&&(t=!0)}for(const[,l]of T.y_ranges){if(l instanceof v.DataRange1d){const d=l.scale_hint=="log"?o:c;l.update(d,1,this.parent.model,u),l.follow&&(i=!0)}l.bounds!=null&&(t=!0)}if(i&&t){w.logger.warn("Follow enabled so bounds are unset.");for(const[,l]of T.x_ranges)l.bounds=null;for(const[,l]of T.y_ranges)l.bounds=null}}update_dataranges(){this._update_dataranges(this.frame);for(const T of this.parent.model.renderers){const{coordinates:c}=T;c!=null&&this._update_dataranges(c)}this.compute_initial()!=null&&(this.invalidate_dataranges=!1)}compute_initial(){let T=!0;const{x_ranges:c,y_ranges:o}=this.frame,r=new Map,i=new Map;for(const[t,s]of c){const{start:a,end:u}=s;if(a==null||u==null||isNaN(a+u)){T=!1;break}r.set(t,{start:a,end:u})}if(T)for(const[t,s]of o){const{start:a,end:u}=s;if(a==null||u==null||isNaN(a+u)){T=!1;break}i.set(t,{start:a,end:u})}return T?{xrs:r,yrs:i}:(w.logger.warn("could not set initial ranges"),null)}_update_ranges_together(T){let c=1;for(const[o,r]of T)c=Math.min(c,this._get_weight_to_constrain_interval(o,r));if(c<1)for(const[o,r]of T)r.start=c*r.start+(1-c)*o.start,r.end=c*r.end+(1-c)*o.end}_update_ranges_individually(T,c){const o=!!(c!=null&&c.panning),r=!!(c!=null&&c.scrolling);let i=!1;for(const[t,s]of T){if(!r){const a=this._get_weight_to_constrain_interval(t,s);a<1&&(s.start=a*s.start+(1-a)*t.start,s.end=a*s.end+(1-a)*t.end)}if(t.bounds!=null&&t.bounds!="auto"){const[a,u]=t.bounds,l=Math.abs(s.end-s.start);t.is_reversed?(a!=null&&a>s.end&&(i=!0,s.end=a,(o||r)&&(s.start=a+l)),u!=null&&u<s.start&&(i=!0,s.start=u,(o||r)&&(s.end=u-l))):(a!=null&&a>s.start&&(i=!0,s.start=a,(o||r)&&(s.end=a+l)),u!=null&&u<s.end&&(i=!0,s.end=u,(o||r)&&(s.start=u-l)))}}if(!(r&&i&&(c!=null&&c.maintain_focus)))for(const[t,s]of T)t.have_updated_interactively=!0,t.start==s.start&&t.end==s.end||t.setv(s)}_get_weight_to_constrain_interval(T,c){const{min_interval:o}=T;let{max_interval:r}=T;if(T.bounds!=null&&T.bounds!="auto"){const[t,s]=T.bounds;if(t!=null&&s!=null){const a=Math.abs(s-t);r=r!=null?Math.min(r,a):a}}let i=1;if(o!=null||r!=null){const t=Math.abs(T.end-T.start),s=Math.abs(c.end-c.start);o!=null&&o>0&&s<o&&(i=(t-o)/(t-s)),r!=null&&r>0&&s>r&&(i=(r-t)/(s-t)),i=Math.max(0,Math.min(1,i))}return i}}e.RangeManager=g,g.__name__="RangeManager"},function(Q,O,e,C,R){C();const v=Q(15);class w{constructor(p,T){this.parent=p,this.initial_state=T,this.changed=new v.Signal0(this.parent,"state_changed"),this.history=[],this.index=-1}_do_state_change(p){const T=this.history[p]!=null?this.history[p].state:this.initial_state;return T.range!=null&&this.parent.update_range(T.range),T.selection!=null&&this.parent.update_selection(T.selection),T}push(p,T){const{history:c,index:o}=this,r=c[o]!=null?c[o].state:{},i=Object.assign(Object.assign(Object.assign({},this.initial_state),r),T);this.history=this.history.slice(0,this.index+1),this.history.push({type:p,state:i}),this.index=this.history.length-1,this.changed.emit()}clear(){this.history=[],this.index=-1,this.changed.emit()}undo(){if(this.can_undo){this.index-=1;const p=this._do_state_change(this.index);return this.changed.emit(),p}return null}redo(){if(this.can_redo){this.index+=1;const p=this._do_state_change(this.index);return this.changed.emit(),p}return null}get can_undo(){return this.index>=0}get can_redo(){return this.index<this.history.length-1}}e.StateManager=w,w.__name__="StateManager"},function(Q,O,e,C,R){C();const v=Q(19),w=Q(15),g=Q(43),p=Q(78),T=Q(22),c=Q(332),o=new w.Signal0({},"gmaps_ready");class r extends c.PlotView{initialize(){this.pause(),super.initialize(),this._tiles_loaded=!1,this.zoom_count=0;const{zoom:t,lat:s,lng:a}=this.model.map_options;if(this.initial_zoom=t,this.initial_lat=s,this.initial_lng=a,!this.model.api_key&&v.logger.error("api_key is required. See https://developers.google.com/maps/documentation/javascript/get-api-key for more information on how to obtain your own."),typeof google>"u"||google.maps==null){if(window._bokeh_gmaps_callback===void 0){const{api_key:u,api_version:l}=this.model;(function(d,m){window._bokeh_gmaps_callback=()=>o.emit();const f=encodeURIComponent,b=document.createElement("script");b.type="text/javascript",b.src=`https://maps.googleapis.com/maps/api/js?v=${f(m)}&key=${f(d)}&callback=_bokeh_gmaps_callback`,document.body.appendChild(b)})(u,l)}o.connect(()=>this.request_paint("everything"))}this.unpause()}remove(){(0,g.remove)(this.map_el),super.remove()}update_range(t,s){var a,u;if(t==null)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),super.update_range(null,s);else if(t.sdx!=null||t.sdy!=null)this.map.panBy((a=t.sdx)!==null&&a!==void 0?a:0,(u=t.sdy)!==null&&u!==void 0?u:0),super.update_range(t,s);else if(t.factor!=null){if(this.zoom_count!==10)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),super.update_range(t,s);const l=t.factor<0?-1:1,d=this.map.getZoom();if(d!=null){const m=d+l;if(m>=2){this.map.setZoom(m);const[f,b]=this._get_projected_bounds();b-f<0&&this.map.setZoom(d)}}this.unpause()}this._set_bokeh_ranges()}_build_map(){const{maps:t}=google;this.map_types={satellite:t.MapTypeId.SATELLITE,terrain:t.MapTypeId.TERRAIN,roadmap:t.MapTypeId.ROADMAP,hybrid:t.MapTypeId.HYBRID};const s=this.model.map_options,a={center:new t.LatLng(s.lat,s.lng),zoom:s.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[s.map_type],scaleControl:s.scale_control,tilt:s.tilt};s.styles!=null&&(a.styles=JSON.parse(s.styles)),this.map_el=(0,g.div)({style:{position:"absolute"}}),this.canvas_view.add_underlay(this.map_el),this.map=new t.Map(this.map_el,a),t.event.addListener(this.map,"idle",()=>this._set_bokeh_ranges()),t.event.addListener(this.map,"bounds_changed",()=>this._set_bokeh_ranges()),t.event.addListenerOnce(this.map,"tilesloaded",()=>this._render_finished()),this.connect(this.model.properties.map_options.change,()=>this._update_options()),this.connect(this.model.map_options.properties.styles.change,()=>this._update_styles()),this.connect(this.model.map_options.properties.lat.change,()=>this._update_center("lat")),this.connect(this.model.map_options.properties.lng.change,()=>this._update_center("lng")),this.connect(this.model.map_options.properties.zoom.change,()=>this._update_zoom()),this.connect(this.model.map_options.properties.map_type.change,()=>this._update_map_type()),this.connect(this.model.map_options.properties.scale_control.change,()=>this._update_scale_control()),this.connect(this.model.map_options.properties.tilt.change,()=>this._update_tilt())}_render_finished(){this._tiles_loaded=!0,this.notify_finished()}has_finished(){return super.has_finished()&&this._tiles_loaded===!0}_get_latlon_bounds(){const t=this.map.getBounds(),s=t.getNorthEast(),a=t.getSouthWest();return[a.lng(),s.lng(),a.lat(),s.lat()]}_get_projected_bounds(){const[t,s,a,u]=this._get_latlon_bounds(),[l,d]=p.wgs84_mercator.compute(t,a),[m,f]=p.wgs84_mercator.compute(s,u);return[l,m,d,f]}_set_bokeh_ranges(){const[t,s,a,u]=this._get_projected_bounds();this.frame.x_range.setv({start:t,end:s}),this.frame.y_range.setv({start:a,end:u})}_update_center(t){var s;const a=(s=this.map.getCenter())===null||s===void 0?void 0:s.toJSON();a!=null&&(a[t]=this.model.map_options[t],this.map.setCenter(a),this._set_bokeh_ranges())}_update_map_type(){this.map.setOptions({mapTypeId:this.map_types[this.model.map_options.map_type]})}_update_scale_control(){this.map.setOptions({scaleControl:this.model.map_options.scale_control})}_update_tilt(){this.map.setOptions({tilt:this.model.map_options.tilt})}_update_options(){this._update_styles(),this._update_center("lat"),this._update_center("lng"),this._update_zoom(),this._update_map_type()}_update_styles(){this.map.setOptions({styles:JSON.parse(this.model.map_options.styles)})}_update_zoom(){this.map.setOptions({zoom:this.model.map_options.zoom}),this._set_bokeh_ranges()}_map_hook(t,s){if(this.map==null&&typeof google<"u"&&google.maps!=null&&this._build_map(),this.map_el!=null){const[a,u,l,d]=s;this.map_el.style.top=`${u}px`,this.map_el.style.left=`${a}px`,this.map_el.style.width=`${l}px`,this.map_el.style.height=`${d}px`}}_paint_empty(t,s){const a=this.layout.bbox.width,u=this.layout.bbox.height,[l,d,m,f]=s;t.clearRect(0,0,a,u),t.beginPath(),t.moveTo(0,0),t.lineTo(0,u),t.lineTo(a,u),t.lineTo(a,0),t.lineTo(0,0),t.moveTo(l,d),t.lineTo(l+m,d),t.lineTo(l+m,d+f),t.lineTo(l,d+f),t.lineTo(l,d),t.closePath(),this.model.border_fill_color!=null&&(t.fillStyle=(0,T.color2css)(this.model.border_fill_color),t.fill())}}e.GMapPlotView=r,r.__name__="GMapPlotView"},function(V,Q,O,e,C){e(),(0,V(1).__exportStar)(V(132),O)},function(Q,O,e,C,R){C(),R("GlyphRenderer",Q(175).GlyphRenderer),R("GraphRenderer",Q(339).GraphRenderer),R("GuideRenderer",Q(129).GuideRenderer);var v=Q(41);R("Renderer",v.Renderer),R("RendererGroup",v.RendererGroup)},function(Q,O,e,C,R){var v;C();const w=Q(176),g=Q(175),p=Q(303),T=Q(302),c=Q(113),o=Q(178),r=Q(283),i=Q(286);class t extends w.DataRendererView{get glyph_view(){return this.node_view.glyph}async lazy_initialize(){await super.lazy_initialize(),this.apply_coordinates();const{parent:u}=this,{edge_renderer:l,node_renderer:d}=this.model;this.edge_view=await(0,c.build_view)(l,{parent:u}),this.node_view=await(0,c.build_view)(d,{parent:u})}connect_signals(){super.connect_signals(),this.connect(this.model.layout_provider.change,()=>{this.apply_coordinates(),this.edge_view.set_data(),this.node_view.set_data(),this.request_render()})}apply_coordinates(){const{edge_renderer:u,node_renderer:l}=this.model;if(!(u.glyph instanceof r.MultiLine||u.glyph instanceof i.Patches))throw new Error(`${this}.edge_renderer.glyph must be a MultiLine glyph`);if(!(l.glyph instanceof o.XYGlyph))throw new Error(`${this}.node_renderer.glyph must be a XYGlyph glyph`);const d=this.model.layout_provider.edge_coordinates,m=this.model.layout_provider.node_coordinates;u.glyph.properties.xs.internal=!0,u.glyph.properties.ys.internal=!0,l.glyph.properties.x.internal=!0,l.glyph.properties.y.internal=!0,u.glyph.xs={expr:d.x},u.glyph.ys={expr:d.y},l.glyph.x={expr:m.x},l.glyph.y={expr:m.y}}remove(){this.edge_view.remove(),this.node_view.remove(),super.remove()}_render(){this.edge_view.render(),this.node_view.render()}renderer_view(u){if(u instanceof g.GlyphRenderer){if(u==this.edge_view.model)return this.edge_view;if(u==this.node_view.model)return this.node_view}return super.renderer_view(u)}}e.GraphRendererView=t,t.__name__="GraphRendererView";class s extends w.DataRenderer{constructor(u){super(u)}get_selection_manager(){return this.node_renderer.data_source.selection_manager}}e.GraphRenderer=s,v=s,s.__name__="GraphRenderer",v.prototype.default_view=t,v.define(({Ref:a})=>({layout_provider:[a(p.LayoutProvider)],node_renderer:[a(g.GlyphRenderer)],edge_renderer:[a(g.GlyphRenderer)],selection_policy:[a(T.GraphHitTestPolicy),()=>new T.NodesOnly],inspection_policy:[a(T.GraphHitTestPolicy),()=>new T.NodesOnly]}))},function(Q,O,e,C,R){C(),(0,Q(1).__exportStar)(Q(74),e),R("Selection",Q(72).Selection)},function(Q,O,e,C,R){C(),R("ServerSentDataSource",Q(342).ServerSentDataSource),R("AjaxDataSource",Q(344).AjaxDataSource),R("ColumnDataSource",Q(75).ColumnDataSource),R("ColumnarDataSource",Q(70).ColumnarDataSource),R("CDSView",Q(190).CDSView),R("DataSource",Q(71).DataSource),R("GeoJSONDataSource",Q(345).GeoJSONDataSource),R("WebDataSource",Q(343).WebDataSource)},function(Q,O,e,C,R){C();const v=Q(343);class w extends v.WebDataSource{constructor(p){super(p),this.initialized=!1}setup(){this.initialized||(this.initialized=!0,new EventSource(this.data_url).onmessage=p=>{var T;this.load_data(JSON.parse(p.data),this.mode,(T=this.max_size)!==null&&T!==void 0?T:void 0)})}}e.ServerSentDataSource=w,w.__name__="ServerSentDataSource"},function(Q,O,e,C,R){var v;C();const w=Q(75),g=Q(20);class p extends w.ColumnDataSource{constructor(c){super(c)}get_column(c){const o=this.data[c];return o??[]}get_length(){var c;return(c=super.get_length())!==null&&c!==void 0?c:0}initialize(){super.initialize(),this.setup()}load_data(c,o,r){const{adapter:i}=this;let t;switch(t=i!=null?i.execute(this,{response:c}):c,o){case"replace":this.data=t;break;case"append":{const s=this.data;for(const a of this.columns()){const u=Array.from(s[a]),l=Array.from(t[a]),d=u.concat(l);t[a]=r!=null?d.slice(-r):d}this.data=t;break}}}}e.WebDataSource=p,v=p,p.__name__="WebDataSource",v.define(({Any:T,Int:c,String:o,Nullable:r})=>({max_size:[r(c),null],mode:[g.UpdateMode,"replace"],adapter:[r(T),null],data_url:[o]}))},function(Q,O,e,C,R){var v;C();const w=Q(343),g=Q(20),p=Q(19),T=Q(13);class c extends w.WebDataSource{constructor(r){super(r),this.interval=null,this.initialized=!1}destroy(){this.interval!=null&&clearInterval(this.interval),super.destroy()}setup(){if(!this.initialized&&(this.initialized=!0,this.get_data(this.mode),this.polling_interval!=null)){const r=()=>this.get_data(this.mode,this.max_size,this.if_modified);this.interval=setInterval(r,this.polling_interval)}}get_data(r,i=null,t=!1){const s=this.prepare_request();s.addEventListener("load",()=>this.do_load(s,r,i??void 0)),s.addEventListener("error",()=>this.do_error(s)),s.send()}prepare_request(){const r=new XMLHttpRequest;r.open(this.method,this.data_url,!0),r.withCredentials=!1,r.setRequestHeader("Content-Type",this.content_type);const i=this.http_headers;for(const[t,s]of(0,T.entries)(i))r.setRequestHeader(t,s);return r}do_load(r,i,t){if(r.status===200){const s=JSON.parse(r.responseText);this.load_data(s,i,t)}}do_error(r){p.logger.error(`Failed to fetch JSON from ${this.data_url} with code ${r.status}`)}}e.AjaxDataSource=c,v=c,c.__name__="AjaxDataSource",v.define(({Boolean:o,Int:r,String:i,Dict:t,Nullable:s})=>({polling_interval:[s(r),null],content_type:[i,"application/json"],http_headers:[t(i),{}],method:[g.HTTPMethod,"POST"],if_modified:[o,!1]}))},function(Q,O,e,C,R){var v;C();const w=Q(70),g=Q(19),p=Q(9),T=Q(13);function c(i){return i??NaN}const{hasOwnProperty:o}=Object.prototype;class r extends w.ColumnarDataSource{constructor(t){super(t)}initialize(){super.initialize(),this._update_data()}connect_signals(){super.connect_signals(),this.connect(this.properties.geojson.change,()=>this._update_data())}_update_data(){this.data=this.geojson_to_column_data()}_get_new_list_array(t){return(0,p.range)(0,t).map(s=>[])}_get_new_nan_array(t){return(0,p.range)(0,t).map(s=>NaN)}_add_properties(t,s,a,u){var l;const d=(l=t.properties)!==null&&l!==void 0?l:{};for(const[m,f]of(0,T.entries)(d))o.call(s,m)||(s[m]=this._get_new_nan_array(u)),s[m][a]=c(f)}_add_geometry(t,s,a){function u(l,d){return l.concat([[NaN,NaN,NaN]]).concat(d)}switch(t.type){case"Point":{const[l,d,m]=t.coordinates;s.x[a]=l,s.y[a]=d,s.z[a]=c(m);break}case"LineString":{const{coordinates:l}=t;for(let d=0;d<l.length;d++){const[m,f,b]=l[d];s.xs[a][d]=m,s.ys[a][d]=f,s.zs[a][d]=c(b)}break}case"Polygon":{t.coordinates.length>1&&g.logger.warn("Bokeh does not support Polygons with holes in, only exterior ring used.");const l=t.coordinates[0];for(let d=0;d<l.length;d++){const[m,f,b]=l[d];s.xs[a][d]=m,s.ys[a][d]=f,s.zs[a][d]=c(b)}break}case"MultiPoint":g.logger.warn("MultiPoint not supported in Bokeh");break;case"MultiLineString":{const l=t.coordinates.reduce(u);for(let d=0;d<l.length;d++){const[m,f,b]=l[d];s.xs[a][d]=m,s.ys[a][d]=f,s.zs[a][d]=c(b)}break}case"MultiPolygon":{const l=[];for(const m of t.coordinates)m.length>1&&g.logger.warn("Bokeh does not support Polygons with holes in, only exterior ring used."),l.push(m[0]);const d=l.reduce(u);for(let m=0;m<d.length;m++){const[f,b,y]=d[m];s.xs[a][m]=f,s.ys[a][m]=b,s.zs[a][m]=c(y)}break}default:throw new Error(`Invalid GeoJSON geometry type: ${t.type}`)}}geojson_to_column_data(){const t=JSON.parse(this.geojson);let s;switch(t.type){case"GeometryCollection":if(t.geometries==null)throw new Error("No geometries found in GeometryCollection");if(t.geometries.length===0)throw new Error("geojson.geometries must have one or more items");s=t.geometries;break;case"FeatureCollection":if(t.features==null)throw new Error("No features found in FeaturesCollection");if(t.features.length==0)throw new Error("geojson.features must have one or more items");s=t.features;break;default:throw new Error("Bokeh only supports type GeometryCollection and FeatureCollection at top level")}let a=0;for(const d of s){const m=d.type==="Feature"?d.geometry:d;m.type=="GeometryCollection"?a+=m.geometries.length:a+=1}const u={x:this._get_new_nan_array(a),y:this._get_new_nan_array(a),z:this._get_new_nan_array(a),xs:this._get_new_list_array(a),ys:this._get_new_list_array(a),zs:this._get_new_list_array(a)};let l=0;for(const d of s){const m=d.type=="Feature"?d.geometry:d;if(m.type=="GeometryCollection")for(const f of m.geometries)this._add_geometry(f,u,l),d.type==="Feature"&&this._add_properties(d,u,l,a),l+=1;else this._add_geometry(m,u,l),d.type==="Feature"&&this._add_properties(d,u,l,a),l+=1}return u}}e.GeoJSONDataSource=r,v=r,r.__name__="GeoJSONDataSource",v.define(({String:i})=>({geojson:[i]})),v.internal(({Dict:i,Arrayable:t})=>({data:[i(t),{}]}))},function(Q,O,e,C,R){C(),R("BBoxTileSource",Q(347).BBoxTileSource),R("MercatorTileSource",Q(348).MercatorTileSource),R("QUADKEYTileSource",Q(351).QUADKEYTileSource),R("TileRenderer",Q(352).TileRenderer),R("TileSource",Q(349).TileSource),R("TMSTileSource",Q(355).TMSTileSource),R("WMTSTileSource",Q(353).WMTSTileSource)},function(Q,O,e,C,R){var v;C();const w=Q(348);class g extends w.MercatorTileSource{constructor(T){super(T)}get_image_url(T,c,o){const r=this.string_lookup_replace(this.url,this.extra_url_vars);let i,t,s,a;return this.use_latlon?[t,a,i,s]=this.get_tile_geographic_bounds(T,c,o):[t,a,i,s]=this.get_tile_meter_bounds(T,c,o),r.replace("{XMIN}",t.toString()).replace("{YMIN}",a.toString()).replace("{XMAX}",i.toString()).replace("{YMAX}",s.toString())}}e.BBoxTileSource=g,v=g,g.__name__="BBoxTileSource",v.define(({Boolean:p})=>({use_latlon:[p,!1]}))},function(V,Q,O,e,C){var R;e();const v=V(349),w=V(9),g=V(350);class p extends v.TileSource{constructor(c){super(c)}initialize(){super.initialize(),this._resolutions=(0,w.range)(this.min_zoom,this.max_zoom+1).map(c=>this.get_resolution(c))}_computed_initial_resolution(){return this.initial_resolution!=null?this.initial_resolution:2*Math.PI*6378137/this.tile_size}is_valid_tile(c,o,r){return!(!this.wrap_around&&(c<0||c>=2**r))&&!(o<0||o>=2**r)}parent_by_tile_xyz(c,o,r){const i=this.tile_xyz_to_quadkey(c,o,r),t=i.substring(0,i.length-1);return this.quadkey_to_tile_xyz(t)}get_resolution(c){return this._computed_initial_resolution()/2**c}get_resolution_by_extent(c,o,r){return[(c[2]-c[0])/r,(c[3]-c[1])/o]}get_level_by_extent(c,o,r){const i=(c[2]-c[0])/r,t=(c[3]-c[1])/o,s=Math.max(i,t);let a=0;for(const u of this._resolutions){if(s>u){if(a==0)return 0;if(a>0)return a-1}a+=1}return a-1}get_closest_level_by_extent(c,o,r){const i=(c[2]-c[0])/r,t=(c[3]-c[1])/o,s=Math.max(i,t),a=this._resolutions.reduce(function(u,l){return Math.abs(l-s)<Math.abs(u-s)?l:u});return this._resolutions.indexOf(a)}snap_to_zoom_level(c,o,r,i){const[t,s,a,u]=c,l=this._resolutions[i];let d=r*l,m=o*l;if(!this.snap_to_zoom){const y=(a-t)/d,A=(u-s)/m;y>A?(d=a-t,m*=y):(d*=A,m=u-s)}const f=(d-(a-t))/2,b=(m-(u-s))/2;return[t-f,s-b,a+f,u+b]}tms_to_wmts(c,o,r){return[c,2**r-1-o,r]}wmts_to_tms(c,o,r){return[c,2**r-1-o,r]}pixels_to_meters(c,o,r){const i=this.get_resolution(r);return[c*i-this.x_origin_offset,o*i-this.y_origin_offset]}meters_to_pixels(c,o,r){const i=this.get_resolution(r);return[(c+this.x_origin_offset)/i,(o+this.y_origin_offset)/i]}pixels_to_tile(c,o){let r=Math.ceil(c/this.tile_size);return r=r===0?r:r-1,[r,Math.max(Math.ceil(o/this.tile_size)-1,0)]}pixels_to_raster(c,o,r){return[c,(this.tile_size<<r)-o]}meters_to_tile(c,o,r){const[i,t]=this.meters_to_pixels(c,o,r);return this.pixels_to_tile(i,t)}get_tile_meter_bounds(c,o,r){const[i,t]=this.pixels_to_meters(c*this.tile_size,o*this.tile_size,r),[s,a]=this.pixels_to_meters((c+1)*this.tile_size,(o+1)*this.tile_size,r);return[i,t,s,a]}get_tile_geographic_bounds(c,o,r){const i=this.get_tile_meter_bounds(c,o,r),[t,s,a,u]=(0,g.meters_extent_to_geographic)(i);return[t,s,a,u]}get_tiles_by_extent(c,o,r=1){const[i,t,s,a]=c;let[u,l]=this.meters_to_tile(i,t,o),[d,m]=this.meters_to_tile(s,a,o);u-=r,l-=r,d+=r,m+=r;const f=[];for(let b=m;b>=l;b--)for(let y=u;y<=d;y++)this.is_valid_tile(y,b,o)&&f.push([y,b,o,this.get_tile_meter_bounds(y,b,o)]);return this.sort_tiles_from_center(f,[u,l,d,m]),f}quadkey_to_tile_xyz(c){let o=0,r=0;const i=c.length;for(let t=i;t>0;t--){const s=1<<t-1;switch(c.charAt(i-t)){case"0":continue;case"1":o|=s;break;case"2":r|=s;break;case"3":o|=s,r|=s;break;default:throw new TypeError(`Invalid Quadkey: ${c}`)}}return[o,r,i]}tile_xyz_to_quadkey(c,o,r){let i="";for(let t=r;t>0;t--){const s=1<<t-1;let a=0;(c&s)!=0&&(a+=1),(o&s)!=0&&(a+=2),i+=a.toString()}return i}children_by_tile_xyz(c,o,r){const i=this.tile_xyz_to_quadkey(c,o,r),t=[];for(let s=0;s<=3;s++){const[a,u,l]=this.quadkey_to_tile_xyz(i+s.toString()),d=this.get_tile_meter_bounds(a,u,l);t.push([a,u,l,d])}return t}get_closest_parent_by_tile_xyz(c,o,r){const i=this.calculate_world_x_by_tile_xyz(c,o,r);[c,o,r]=this.normalize_xyz(c,o,r);let t=this.tile_xyz_to_quadkey(c,o,r);for(;t.length>0;)if(t=t.substring(0,t.length-1),[c,o,r]=this.quadkey_to_tile_xyz(t),[c,o,r]=this.denormalize_xyz(c,o,r,i),this.tiles.has(this.tile_xyz_to_key(c,o,r)))return[c,o,r];return[0,0,0]}normalize_xyz(c,o,r){if(this.wrap_around){const i=2**r;return[(c%i+i)%i,o,r]}return[c,o,r]}denormalize_xyz(c,o,r,i){return[c+i*2**r,o,r]}denormalize_meters(c,o,r,i){return[c+2*i*Math.PI*6378137,o]}calculate_world_x_by_tile_xyz(c,o,r){return Math.floor(c/2**r)}}O.MercatorTileSource=p,R=p,p.__name__="MercatorTileSource",R.define(({Boolean:T})=>({snap_to_zoom:[T,!1],wrap_around:[T,!0]})),R.override({x_origin_offset:2003750834e-2,y_origin_offset:2003750834e-2,initial_resolution:156543.03392804097})},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(13);class p extends w.Model{constructor(c){super(c)}initialize(){super.initialize(),this.tiles=new Map,this._normalize_case()}connect_signals(){super.connect_signals(),this.connect(this.change,()=>this._clear_cache())}string_lookup_replace(c,o){let r=c;for(const[i,t]of(0,g.entries)(o))r=r.replace(`{${i}}`,t);return r}_normalize_case(){const c=this.url.replace("{x}","{X}").replace("{y}","{Y}").replace("{z}","{Z}").replace("{q}","{Q}").replace("{xmin}","{XMIN}").replace("{ymin}","{YMIN}").replace("{xmax}","{XMAX}").replace("{ymax}","{YMAX}");this.url=c}_clear_cache(){this.tiles=new Map}tile_xyz_to_key(c,o,r){return`${c}:${o}:${r}`}key_to_tile_xyz(c){const[o,r,i]=c.split(":").map(t=>parseInt(t));return[o,r,i]}sort_tiles_from_center(c,o){const[r,i,t,s]=o,a=(t-r)/2+r,u=(s-i)/2+i;c.sort(function(l,d){return Math.sqrt((a-l[0])**2+(u-l[1])**2)-Math.sqrt((a-d[0])**2+(u-d[1])**2)})}get_image_url(c,o,r){return this.string_lookup_replace(this.url,this.extra_url_vars).replace("{X}",c.toString()).replace("{Y}",o.toString()).replace("{Z}",r.toString())}}e.TileSource=p,v=p,p.__name__="TileSource",v.define(({Number:T,String:c,Dict:o,Nullable:r})=>({url:[c,""],tile_size:[T,256],max_zoom:[T,30],min_zoom:[T,0],extra_url_vars:[o(c),{}],attribution:[c,""],x_origin_offset:[T],y_origin_offset:[T],initial_resolution:[r(T),null]}))},function(Q,O,e,C,R){C();const v=Q(78);function w(p,T){return v.wgs84_mercator.compute(p,T)}function g(p,T){return v.wgs84_mercator.invert(p,T)}e.geographic_to_meters=w,e.meters_to_geographic=g,e.geographic_extent_to_meters=function(p){const[T,c,o,r]=p,[i,t]=w(T,c),[s,a]=w(o,r);return[i,t,s,a]},e.meters_extent_to_geographic=function(p){const[T,c,o,r]=p,[i,t]=g(T,c),[s,a]=g(o,r);return[i,t,s,a]}},function(V,Q,O,e,C){e();const R=V(348);class v extends R.MercatorTileSource{constructor(g){super(g)}get_image_url(g,p,T){const c=this.string_lookup_replace(this.url,this.extra_url_vars),[o,r,i]=this.tms_to_wmts(g,p,T),t=this.tile_xyz_to_quadkey(o,r,i);return c.replace("{Q}",t)}}O.QUADKEYTileSource=v,v.__name__="QUADKEYTileSource"},function(V,Q,O,e,C){e();const R=V(1);var v;const w=V(349),g=V(353),p=V(41),T=V(58),c=V(43),o=V(136),r=V(9),i=V(8),t=(0,R.__importStar)(V(354));class s extends p.RendererView{initialize(){this._tiles=[],super.initialize()}connect_signals(){super.connect_signals(),this.connect(this.model.change,()=>this.request_render()),this.connect(this.model.tile_source.change,()=>this.request_render())}remove(){this.attribution_el!=null&&(0,c.removeElement)(this.attribution_el),super.remove()}styles(){return[...super.styles(),t.default]}get_extent(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]}get map_plot(){return this.plot_model}get map_canvas(){return this.layer.ctx}get map_frame(){return this.plot_view.frame}get x_range(){return this.map_plot.x_range}get y_range(){return this.map_plot.y_range}_set_data(){this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0}_update_attribution(){this.attribution_el!=null&&(0,c.removeElement)(this.attribution_el);const{attribution:l}=this.model.tile_source;if((0,i.isString)(l)&&l.length>0){const{layout:d,frame:m}=this.plot_view,f=d.bbox.width-m.bbox.right,b=d.bbox.height-m.bbox.bottom,y=m.bbox.width;this.attribution_el=(0,c.div)({class:t.tile_attribution,style:{position:"absolute",right:`${f}px`,bottom:`${b}px`,"max-width":y-4+"px",padding:"2px","background-color":"rgba(255,255,255,0.5)","font-size":"9px","line-height":"1.05","white-space":"nowrap",overflow:"hidden","text-overflow":"ellipsis"}}),this.plot_view.canvas_view.add_event(this.attribution_el),this.attribution_el.innerHTML=l,this.attribution_el.title=this.attribution_el.textContent.replace(/\s*\n\s*/g," ")}}_map_data(){this.initial_extent=this.get_extent();const l=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width),d=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width,l);this.x_range.start=d[0],this.y_range.start=d[1],this.x_range.end=d[2],this.y_range.end=d[3],this.x_range instanceof T.Range1d&&(this.x_range.reset_start=d[0],this.x_range.reset_end=d[2]),this.y_range instanceof T.Range1d&&(this.y_range.reset_start=d[1],this.y_range.reset_end=d[3]),this._update_attribution()}_create_tile(l,d,m,f,b=!1){const y=this.model.tile_source.tile_xyz_to_quadkey(l,d,m),A=this.model.tile_source.tile_xyz_to_key(l,d,m);if(this.model.tile_source.tiles.has(A))return;const[L,x,H]=this.model.tile_source.normalize_xyz(l,d,m),S=this.model.tile_source.get_image_url(L,x,H),k={img:void 0,tile_coords:[l,d,m],normalized_coords:[L,x,H],quadkey:y,cache_key:A,bounds:f,loaded:!1,finished:!1,x_coord:f[0],y_coord:f[3]};this.model.tile_source.tiles.set(A,k),this._tiles.push(k),new o.ImageLoader(S,{loaded:E=>{Object.assign(k,{img:E,loaded:!0}),b?(k.finished=!0,this.notify_finished()):this.request_render()},failed(){k.finished=!0}})}_enforce_aspect_ratio(){if(this._last_height!==this.map_frame.bbox.height||this._last_width!==this.map_frame.bbox.width){const l=this.get_extent(),d=this.model.tile_source.get_level_by_extent(l,this.map_frame.bbox.height,this.map_frame.bbox.width),m=this.model.tile_source.snap_to_zoom_level(l,this.map_frame.bbox.height,this.map_frame.bbox.width,d);this.x_range.setv({start:m[0],end:m[2]}),this.y_range.setv({start:m[1],end:m[3]}),this.extent=m,this._last_height=this.map_frame.bbox.height,this._last_width=this.map_frame.bbox.width}}has_finished(){if(!super.has_finished()||this._tiles.length==0)return!1;for(const l of this._tiles)if(!l.finished)return!1;return!0}_render(){this.map_initialized==null&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),this.prefetch_timer!=null&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()}_draw_tile(l){const d=this.model.tile_source.tiles.get(l);if(d!=null&&d.loaded){const[[m],[f]]=this.coordinates.map_to_screen([d.bounds[0]],[d.bounds[3]]),[[b],[y]]=this.coordinates.map_to_screen([d.bounds[2]],[d.bounds[1]]),A=b-m,L=y-f,x=m,H=f,S=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(d.img,x,H,A,L),this.map_canvas.setImageSmoothingEnabled(S),d.finished=!0}}_set_rect(){const l=this.plot_model.outline_line_width,d=this.map_frame.bbox.left+l/2,m=this.map_frame.bbox.top+l/2,f=this.map_frame.bbox.width-l,b=this.map_frame.bbox.height-l;this.map_canvas.rect(d,m,f,b),this.map_canvas.clip()}_render_tiles(l){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(const d of l)this._draw_tile(d);this.map_canvas.restore()}_prefetch_tiles(){const{tile_source:l}=this.model,d=this.get_extent(),m=this.map_frame.bbox.height,f=this.map_frame.bbox.width,b=this.model.tile_source.get_level_by_extent(d,m,f),y=this.model.tile_source.get_tiles_by_extent(d,b);for(let A=0,L=Math.min(10,y.length);A<L;A++){const[x,H,S]=y[A],k=this.model.tile_source.children_by_tile_xyz(x,H,S);for(const E of k){const[P,N,B,D]=E;l.tiles.has(l.tile_xyz_to_key(P,N,B))||this._create_tile(P,N,B,D,!0)}}}_fetch_tiles(l){for(const d of l){const[m,f,b,y]=d;this._create_tile(m,f,b,y)}}_update(){const{tile_source:l}=this.model,{min_zoom:d}=l,{max_zoom:m}=l;let f=this.get_extent();const b=this.extent[2]-this.extent[0]<f[2]-f[0],y=this.map_frame.bbox.height,A=this.map_frame.bbox.width;let L=l.get_level_by_extent(f,y,A),x=!1;L<d?(f=this.extent,L=d,x=!0):L>m&&(f=this.extent,L=m,x=!0),x&&(this.x_range.setv({start:f[0],end:f[2]}),this.y_range.setv({start:f[1],end:f[3]})),this.extent=f;const H=l.get_tiles_by_extent(f,L),S=[],k=[],E=[],P=[];for(const N of H){const[B,D,j]=N,M=l.tile_xyz_to_key(B,D,j),F=l.tiles.get(M);if(F!=null&&F.loaded)k.push(M);else if(this.model.render_parents){const[W,U,q]=l.get_closest_parent_by_tile_xyz(B,D,j),X=l.tile_xyz_to_key(W,U,q),ae=l.tiles.get(X);if(ae!=null&&ae.loaded&&!(0,r.includes)(E,X)&&E.push(X),b){const me=l.children_by_tile_xyz(B,D,j);for(const[Ve,Je,rt]of me){const yt=l.tile_xyz_to_key(Ve,Je,rt);l.tiles.has(yt)&&P.push(yt)}}}F==null&&S.push(N)}this._render_tiles(E),this._render_tiles(P),this._render_tiles(k),this.render_timer!=null&&clearTimeout(this.render_timer),this.render_timer=setTimeout(()=>this._fetch_tiles(S),65)}}O.TileRendererView=s,s.__name__="TileRendererView";class a extends p.Renderer{constructor(l){super(l)}}O.TileRenderer=a,v=a,a.__name__="TileRenderer",v.prototype.default_view=s,v.define(({Boolean:u,Number:l,Ref:d})=>({alpha:[l,1],smoothing:[u,!0],tile_source:[d(w.TileSource),()=>new g.WMTSTileSource],render_parents:[u,!0]})),v.override({level:"image"})},function(Q,O,e,C,R){C();const v=Q(348);class w extends v.MercatorTileSource{constructor(p){super(p)}get_image_url(p,T,c){const o=this.string_lookup_replace(this.url,this.extra_url_vars),[r,i,t]=this.tms_to_wmts(p,T,c);return o.replace("{X}",r.toString()).replace("{Y}",i.toString()).replace("{Z}",t.toString())}}e.WMTSTileSource=w,w.__name__="WMTSTileSource"},function(Q,O,e,C,R){C(),e.root="bk-root",e.tile_attribution="bk-tile-attribution",e.default=".bk-root .bk-tile-attribution a{color:black;}"},function(Q,O,e,C,R){C();const v=Q(348);class w extends v.MercatorTileSource{constructor(p){super(p)}get_image_url(p,T,c){return this.string_lookup_replace(this.url,this.extra_url_vars).replace("{X}",p.toString()).replace("{Y}",T.toString()).replace("{Z}",c.toString())}}e.TMSTileSource=w,w.__name__="TMSTileSource"},function(Q,O,e,C,R){C(),R("CanvasTexture",Q(357).CanvasTexture),R("ImageURLTexture",Q(359).ImageURLTexture),R("Texture",Q(358).Texture)},function(Q,O,e,C,R){var v;C();const w=Q(358),g=Q(34);class p extends w.Texture{constructor(c){super(c)}get func(){const c=(0,g.use_strict)(this.code);return new Function("ctx","color","scale","weight",c)}get_pattern(c,o,r){const i=document.createElement("canvas");i.width=o,i.height=o;const t=i.getContext("2d");return this.func.call(this,t,c,o,r),i}}e.CanvasTexture=p,v=p,p.__name__="CanvasTexture",v.define(({String:T})=>({code:[T]}))},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(20);class p extends w.Model{constructor(c){super(c)}}e.Texture=p,v=p,p.__name__="Texture",v.define(()=>({repetition:[g.TextureRepetition,"repeat"]}))},function(Q,O,e,C,R){var v;C();const w=Q(358),g=Q(136);class p extends w.Texture{constructor(c){super(c)}initialize(){super.initialize(),this._loader=new g.ImageLoader(this.url)}get_pattern(c,o,r){const{_loader:i}=this;return this._loader.finished?i.image:i.promise}}e.ImageURLTexture=p,v=p,p.__name__="ImageURLTexture",v.define(({String:T})=>({url:[T]}))},function(Q,O,e,C,R){C(),R("ActionTool",Q(238).ActionTool),R("CustomAction",Q(361).CustomAction),R("HelpTool",Q(239).HelpTool),R("RedoTool",Q(362).RedoTool),R("ResetTool",Q(363).ResetTool),R("SaveTool",Q(364).SaveTool),R("UndoTool",Q(365).UndoTool),R("ZoomInTool",Q(366).ZoomInTool),R("ZoomOutTool",Q(369).ZoomOutTool),R("ButtonTool",Q(224).ButtonTool),R("EditTool",Q(370).EditTool),R("BoxEditTool",Q(371).BoxEditTool),R("FreehandDrawTool",Q(372).FreehandDrawTool),R("PointDrawTool",Q(373).PointDrawTool),R("PolyDrawTool",Q(374).PolyDrawTool),R("PolyTool",Q(375).PolyTool),R("PolyEditTool",Q(376).PolyEditTool),R("BoxSelectTool",Q(377).BoxSelectTool),R("BoxZoomTool",Q(379).BoxZoomTool),R("GestureTool",Q(223).GestureTool),R("LassoSelectTool",Q(380).LassoSelectTool),R("LineEditTool",Q(382).LineEditTool),R("PanTool",Q(384).PanTool),R("PolySelectTool",Q(381).PolySelectTool),R("RangeTool",Q(385).RangeTool),R("SelectTool",Q(378).SelectTool),R("TapTool",Q(386).TapTool),R("WheelPanTool",Q(387).WheelPanTool),R("WheelZoomTool",Q(388).WheelZoomTool),R("CrosshairTool",Q(389).CrosshairTool),R("CustomJSHover",Q(390).CustomJSHover),R("HoverTool",Q(391).HoverTool),R("InspectTool",Q(232).InspectTool),R("Tool",Q(222).Tool),R("ToolProxy",Q(394).ToolProxy),R("Toolbar",Q(221).Toolbar),R("ToolbarBase",Q(233).ToolbarBase),R("ProxyToolbar",Q(395).ProxyToolbar),R("ToolbarBox",Q(395).ToolbarBox)},function(Q,O,e,C,R){var v;C();const w=Q(238);class g extends w.ActionToolButtonView{css_classes(){return super.css_classes().concat("bk-toolbar-button-custom-action")}}e.CustomActionButtonView=g,g.__name__="CustomActionButtonView";class p extends w.ActionToolView{doit(){var o;(o=this.model.callback)===null||o===void 0||o.execute(this.model)}}e.CustomActionView=p,p.__name__="CustomActionView";class T extends w.ActionTool{constructor(o){super(o),this.tool_name="Custom Action",this.button_view=g}}e.CustomAction=T,v=T,T.__name__="CustomAction",v.prototype.default_view=p,v.define(({Any:c,String:o,Nullable:r})=>({callback:[r(c)],icon:[o]})),v.override({description:"Perform a Custom Action"})},function(Q,O,e,C,R){var v;C();const w=Q(238),g=Q(228);class p extends w.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,()=>this.model.disabled=!this.plot_view.state.can_redo)}doit(){const o=this.plot_view.state.redo();(o==null?void 0:o.range)!=null&&this.plot_view.trigger_ranges_update_event()}}e.RedoToolView=p,p.__name__="RedoToolView";class T extends w.ActionTool{constructor(o){super(o),this.tool_name="Redo",this.icon=g.tool_icon_redo}}e.RedoTool=T,v=T,T.__name__="RedoTool",v.prototype.default_view=p,v.override({disabled:!0}),v.register_alias("redo",()=>new T)},function(Q,O,e,C,R){var v;C();const w=Q(238),g=Q(228);class p extends w.ActionToolView{doit(){this.plot_view.reset()}}e.ResetToolView=p,p.__name__="ResetToolView";class T extends w.ActionTool{constructor(o){super(o),this.tool_name="Reset",this.icon=g.tool_icon_reset}}e.ResetTool=T,v=T,T.__name__="ResetTool",v.prototype.default_view=p,v.register_alias("reset",()=>new T)},function(Q,O,e,C,R){var v;C();const w=Q(238),g=Q(228);class p extends w.ActionToolView{async copy(){const o=await this.plot_view.to_blob(),r=new ClipboardItem({[o.type]:Promise.resolve(o)});await navigator.clipboard.write([r])}async save(o){const r=await this.plot_view.to_blob(),i=document.createElement("a");i.href=URL.createObjectURL(r),i.download=o,i.target="_blank",i.dispatchEvent(new MouseEvent("click"))}doit(o="save"){switch(o){case"save":this.save("bokeh_plot");break;case"copy":this.copy()}}}e.SaveToolView=p,p.__name__="SaveToolView";class T extends w.ActionTool{constructor(o){super(o),this.tool_name="Save",this.icon=g.tool_icon_save}get menu(){return[{icon:"bk-tool-icon-copy-to-clipboard",tooltip:"Copy image to clipboard",if:()=>typeof ClipboardItem<"u",handler:()=>{this.do.emit("copy")}}]}}e.SaveTool=T,v=T,T.__name__="SaveTool",v.prototype.default_view=p,v.register_alias("save",()=>new T)},function(Q,O,e,C,R){var v;C();const w=Q(238),g=Q(228);class p extends w.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,()=>this.model.disabled=!this.plot_view.state.can_undo)}doit(){const o=this.plot_view.state.undo();(o==null?void 0:o.range)!=null&&this.plot_view.trigger_ranges_update_event()}}e.UndoToolView=p,p.__name__="UndoToolView";class T extends w.ActionTool{constructor(o){super(o),this.tool_name="Undo",this.icon=g.tool_icon_undo}}e.UndoTool=T,v=T,T.__name__="UndoTool",v.prototype.default_view=p,v.override({disabled:!0}),v.register_alias("undo",()=>new T)},function(Q,O,e,C,R){var v;C();const w=Q(367),g=Q(228);class p extends w.ZoomBaseToolView{}e.ZoomInToolView=p,p.__name__="ZoomInToolView";class T extends w.ZoomBaseTool{constructor(o){super(o),this.sign=1,this.tool_name="Zoom In",this.icon=g.tool_icon_zoom_in}}e.ZoomInTool=T,v=T,T.__name__="ZoomInTool",v.prototype.default_view=p,v.register_alias("zoom_in",()=>new T({dimensions:"both"})),v.register_alias("xzoom_in",()=>new T({dimensions:"width"})),v.register_alias("yzoom_in",()=>new T({dimensions:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(238),g=Q(20),p=Q(368);class T extends w.ActionToolView{doit(){var r;const i=this.plot_view.frame,t=this.model.dimensions,s=t=="width"||t=="both",a=t=="height"||t=="both",u=(0,p.scale_range)(i,this.model.sign*this.model.factor,s,a);this.plot_view.state.push("zoom_out",{range:u}),this.plot_view.update_range(u,{scrolling:!0,maintain_focus:this.model.maintain_focus}),(r=this.model.document)===null||r===void 0||r.interactive_start(this.plot_model),this.plot_view.trigger_ranges_update_event()}}e.ZoomBaseToolView=T,T.__name__="ZoomBaseToolView";class c extends w.ActionTool{constructor(r){super(r),this.maintain_focus=!0}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.ZoomBaseTool=c,v=c,c.__name__="ZoomBaseTool",v.define(({Percent:o})=>({factor:[o,.1],dimensions:[g.Dimensions,"both"]}))},function(Q,O,e,C,R){C();const v=Q(10);function w(p,T,c){const[o,r]=[p.start,p.end],i=c??(r+o)/2;return[o-(o-i)*T,r-(r-i)*T]}function g(p,[T,c]){const o=new Map;for(const[r,i]of p){const[t,s]=i.r_invert(T,c);o.set(r,{start:t,end:s})}return o}e.scale_highlow=w,e.get_info=g,e.scale_range=function(p,T,c=!0,o=!0,r){T=(0,v.clamp)(T,-.9,.9);const i=c?T:0,[t,s]=w(p.bbox.h_range,i,r!=null?r.x:void 0),a=g(p.x_scales,[t,s]),u=o?T:0,[l,d]=w(p.bbox.v_range,u,r!=null?r.y:void 0);return{xrs:a,yrs:g(p.y_scales,[l,d]),factor:T}}},function(Q,O,e,C,R){var v;C();const w=Q(367),g=Q(228);class p extends w.ZoomBaseToolView{}e.ZoomOutToolView=p,p.__name__="ZoomOutToolView";class T extends w.ZoomBaseTool{constructor(o){super(o),this.sign=-1,this.tool_name="Zoom Out",this.icon=g.tool_icon_zoom_out}}e.ZoomOutTool=T,v=T,T.__name__="ZoomOutTool",v.prototype.default_view=p,v.define(({Boolean:c})=>({maintain_focus:[c,!0]})),v.register_alias("zoom_out",()=>new T({dimensions:"both"})),v.register_alias("xzoom_out",()=>new T({dimensions:"width"})),v.register_alias("yzoom_out",()=>new T({dimensions:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(9),g=Q(8),p=Q(11),T=Q(175),c=Q(223);class o extends c.GestureToolView{constructor(){super(...arguments),this._mouse_in_frame=!0}_select_mode(t){const{shiftKey:s,ctrlKey:a}=t;return s||a?s&&!a?"append":!s&&a?"intersect":s&&a?"subtract":void(0,p.unreachable)():"replace"}_move_enter(t){this._mouse_in_frame=!0}_move_exit(t){this._mouse_in_frame=!1}_map_drag(t,s,a){if(!this.plot_view.frame.bbox.contains(t,s))return null;const u=this.plot_view.renderer_view(a);return u==null?null:[u.coordinates.x_scale.invert(t),u.coordinates.y_scale.invert(s)]}_delete_selected(t){const s=t.data_source,a=s.selected.indices;a.sort();for(const u of s.columns()){const l=s.get_array(u);for(let d=0;d<a.length;d++){const m=a[d];l.splice(m-d,1)}}this._emit_cds_changes(s)}_pop_glyphs(t,s){const a=t.columns();if(s&&a.length)for(const u of a){let l=t.get_array(u);const d=l.length-s+1;d<1||((0,g.isArray)(l)||(l=Array.from(l),t.data[u]=l),l.splice(0,d))}}_emit_cds_changes(t,s=!0,a=!0,u=!0){a&&t.selection_manager.clear(),s&&t.change.emit(),u&&(t.data=t.data,t.properties.data.change.emit())}_drag_points(t,s,a="both"){if(this._basepoint==null)return;const[u,l]=this._basepoint;for(const d of s){const m=this._map_drag(u,l,d),f=this._map_drag(t.sx,t.sy,d);if(f==null||m==null)continue;const[b,y]=f,[A,L]=m,[x,H]=[b-A,y-L],S=d.glyph,k=d.data_source,[E,P]=[S.x.field,S.y.field];for(const N of k.selected.indices)!E||a!="width"&&a!="both"||(k.data[E][N]+=x),!P||a!="height"&&a!="both"||(k.data[P][N]+=H);k.change.emit()}this._basepoint=[t.sx,t.sy]}_pad_empty_columns(t,s){for(const a of t.columns())(0,w.includes)(s,a)||t.get_array(a).push(this.model.empty_value)}_select_event(t,s,a){const u=this.plot_view.frame,{sx:l,sy:d}=t;if(!u.bbox.contains(l,d))return[];const m={type:"point",sx:l,sy:d},f=[];for(const b of a){const y=b.get_selection_manager(),A=b.data_source,L=this.plot_view.renderer_view(b);L!=null&&(y.select([L],m,!0,s)&&f.push(b),A.properties.selected.change.emit())}return f}}e.EditToolView=o,o.__name__="EditToolView";class r extends c.GestureTool{constructor(t){super(t)}get computed_icon(){var t;return(t=this.custom_icon)!==null&&t!==void 0?t:this.icon}}e.EditTool=r,v=r,r.__name__="EditTool",v.define(({Unknown:i,String:t,Array:s,Ref:a,Nullable:u})=>({custom_icon:[u(t),null],empty_value:[i],renderers:[s(a(T.GlyphRenderer)),[]]}))},function(V,Q,O,e,C){var R;e();const v=V(43),w=V(20),g=V(370),p=V(228);class T extends g.EditToolView{_tap(r){this._draw_basepoint==null&&this._basepoint==null&&this._select_event(r,this._select_mode(r),this.model.renderers)}_keyup(r){if(this.model.active&&this._mouse_in_frame)for(const i of this.model.renderers)r.keyCode===v.Keys.Backspace?this._delete_selected(i):r.keyCode==v.Keys.Esc&&i.data_source.selection_manager.clear()}_set_extent([r,i],[t,s],a,u=!1){const l=this.model.renderers[0],d=this.plot_view.renderer_view(l);if(d==null)return;const m=l.glyph,f=l.data_source,[b,y]=d.coordinates.x_scale.r_invert(r,i),[A,L]=d.coordinates.y_scale.r_invert(t,s),[x,H]=[(b+y)/2,(A+L)/2],[S,k]=[y-b,L-A],[E,P]=[m.x.field,m.y.field],[N,B]=[m.width.field,m.height.field];if(a)this._pop_glyphs(f,this.model.num_objects),E&&f.get_array(E).push(x),P&&f.get_array(P).push(H),N&&f.get_array(N).push(S),B&&f.get_array(B).push(k),this._pad_empty_columns(f,[E,P,N,B]);else{const D=f.data[E].length-1;E&&(f.data[E][D]=x),P&&(f.data[P][D]=H),N&&(f.data[N][D]=S),B&&(f.data[B][D]=k)}this._emit_cds_changes(f,!0,!1,u)}_update_box(r,i=!1,t=!1){if(this._draw_basepoint==null)return;const s=[r.sx,r.sy],a=this.plot_view.frame,u=this.model.dimensions,l=this.model._get_dim_limits(this._draw_basepoint,s,a,u);if(l!=null){const[d,m]=l;this._set_extent(d,m,i,t)}}_doubletap(r){this.model.active&&(this._draw_basepoint!=null?(this._update_box(r,!1,!0),this._draw_basepoint=null):(this._draw_basepoint=[r.sx,r.sy],this._select_event(r,"append",this.model.renderers),this._update_box(r,!0,!1)))}_move(r){this._update_box(r,!1,!1)}_pan_start(r){if(r.shiftKey){if(this._draw_basepoint!=null)return;this._draw_basepoint=[r.sx,r.sy],this._update_box(r,!0,!1)}else{if(this._basepoint!=null)return;this._select_event(r,"append",this.model.renderers),this._basepoint=[r.sx,r.sy]}}_pan(r,i=!1,t=!1){if(r.shiftKey){if(this._draw_basepoint==null)return;this._update_box(r,i,t)}else{if(this._basepoint==null)return;this._drag_points(r,this.model.renderers)}}_pan_end(r){if(this._pan(r,!1,!0),r.shiftKey)this._draw_basepoint=null;else{this._basepoint=null;for(const i of this.model.renderers)this._emit_cds_changes(i.data_source,!1,!0,!0)}}}O.BoxEditToolView=T,T.__name__="BoxEditToolView";class c extends g.EditTool{constructor(r){super(r),this.tool_name="Box Edit Tool",this.icon=p.tool_icon_box_edit,this.event_type=["tap","pan","move"],this.default_order=1}}O.BoxEditTool=c,R=c,c.__name__="BoxEditTool",R.prototype.default_view=T,R.define(({Int:o})=>({dimensions:[w.Dimensions,"both"],num_objects:[o,0]}))},function(Q,O,e,C,R){var v;C();const w=Q(43),g=Q(8),p=Q(370),T=Q(228);class c extends p.EditToolView{_draw(i,t,s=!1){if(!this.model.active)return;const a=this.model.renderers[0],u=this._map_drag(i.sx,i.sy,a);if(u==null)return;const[l,d]=u,m=a.data_source,f=a.glyph,[b,y]=[f.xs.field,f.ys.field];if(t=="new")this._pop_glyphs(m,this.model.num_objects),b&&m.get_array(b).push([l]),y&&m.get_array(y).push([d]),this._pad_empty_columns(m,[b,y]);else if(t=="add"){if(b){const A=m.data[b].length-1;let L=m.get_array(b)[A];(0,g.isArray)(L)||(L=Array.from(L),m.data[b][A]=L),L.push(l)}if(y){const A=m.data[y].length-1;let L=m.get_array(y)[A];(0,g.isArray)(L)||(L=Array.from(L),m.data[y][A]=L),L.push(d)}}this._emit_cds_changes(m,!0,!0,s)}_pan_start(i){this._draw(i,"new")}_pan(i){this._draw(i,"add")}_pan_end(i){this._draw(i,"add",!0)}_tap(i){this._select_event(i,this._select_mode(i),this.model.renderers)}_keyup(i){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)i.keyCode===w.Keys.Esc?t.data_source.selection_manager.clear():i.keyCode===w.Keys.Backspace&&this._delete_selected(t)}}e.FreehandDrawToolView=c,c.__name__="FreehandDrawToolView";class o extends p.EditTool{constructor(i){super(i),this.tool_name="Freehand Draw Tool",this.icon=T.tool_icon_freehand_draw,this.event_type=["pan","tap"],this.default_order=3}}e.FreehandDrawTool=o,v=o,o.__name__="FreehandDrawTool",v.prototype.default_view=c,v.define(({Int:r})=>({num_objects:[r,0]})),v.register_alias("freehand_draw",()=>new o)},function(Q,O,e,C,R){var v;C();const w=Q(43),g=Q(370),p=Q(228);class T extends g.EditToolView{_tap(r){if(this._select_event(r,this._select_mode(r),this.model.renderers).length||!this.model.add)return;const i=this.model.renderers[0],t=this._map_drag(r.sx,r.sy,i);if(t==null)return;const s=i.glyph,a=i.data_source,[u,l]=[s.x.field,s.y.field],[d,m]=t;this._pop_glyphs(a,this.model.num_objects),u&&a.get_array(u).push(d),l&&a.get_array(l).push(m),this._pad_empty_columns(a,[u,l]),a.change.emit(),a.data=a.data,a.properties.data.change.emit()}_keyup(r){if(this.model.active&&this._mouse_in_frame)for(const i of this.model.renderers)r.keyCode===w.Keys.Backspace?this._delete_selected(i):r.keyCode==w.Keys.Esc&&i.data_source.selection_manager.clear()}_pan_start(r){this.model.drag&&(this._select_event(r,"append",this.model.renderers),this._basepoint=[r.sx,r.sy])}_pan(r){this.model.drag&&this._basepoint!=null&&this._drag_points(r,this.model.renderers)}_pan_end(r){if(this.model.drag){this._pan(r);for(const i of this.model.renderers)this._emit_cds_changes(i.data_source,!1,!0,!0);this._basepoint=null}}}e.PointDrawToolView=T,T.__name__="PointDrawToolView";class c extends g.EditTool{constructor(r){super(r),this.tool_name="Point Draw Tool",this.icon=p.tool_icon_point_draw,this.event_type=["tap","pan","move"],this.default_order=2}}e.PointDrawTool=c,v=c,c.__name__="PointDrawTool",v.prototype.default_view=T,v.define(({Boolean:o,Int:r})=>({add:[o,!0],drag:[o,!0],num_objects:[r,0]}))},function(Q,O,e,C,R){var v;C();const w=Q(43),g=Q(8),p=Q(375),T=Q(228);class c extends p.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._initialized=!1}_tap(i){this._drawing?this._draw(i,"add",!0):this._select_event(i,this._select_mode(i),this.model.renderers)}_draw(i,t,s=!1){const a=this.model.renderers[0],u=this._map_drag(i.sx,i.sy,a);if(this._initialized||this.activate(),u==null)return;const[l,d]=this._snap_to_vertex(i,...u),m=a.data_source,f=a.glyph,[b,y]=[f.xs.field,f.ys.field];if(t=="new")this._pop_glyphs(m,this.model.num_objects),b&&m.get_array(b).push([l,l]),y&&m.get_array(y).push([d,d]),this._pad_empty_columns(m,[b,y]);else if(t=="edit"){if(b){const A=m.data[b][m.data[b].length-1];A[A.length-1]=l}if(y){const A=m.data[y][m.data[y].length-1];A[A.length-1]=d}}else if(t=="add"){if(b){const A=m.data[b].length-1;let L=m.get_array(b)[A];const x=L[L.length-1];L[L.length-1]=l,(0,g.isArray)(L)||(L=Array.from(L),m.data[b][A]=L),L.push(x)}if(y){const A=m.data[y].length-1;let L=m.get_array(y)[A];const x=L[L.length-1];L[L.length-1]=d,(0,g.isArray)(L)||(L=Array.from(L),m.data[y][A]=L),L.push(x)}}this._emit_cds_changes(m,!0,!1,s)}_show_vertices(){if(!this.model.active)return;const i=[],t=[];for(let s=0;s<this.model.renderers.length;s++){const a=this.model.renderers[s],u=a.data_source,l=a.glyph,[d,m]=[l.xs.field,l.ys.field];if(d)for(const f of u.get_array(d))i.push(...f);if(m)for(const f of u.get_array(m))t.push(...f);this._drawing&&s==this.model.renderers.length-1&&(i.splice(i.length-1,1),t.splice(t.length-1,1))}this._set_vertices(i,t)}_doubletap(i){this.model.active&&(this._drawing?(this._drawing=!1,this._draw(i,"edit",!0)):(this._drawing=!0,this._draw(i,"new",!0)))}_move(i){this._drawing&&this._draw(i,"edit")}_remove(){const i=this.model.renderers[0],t=i.data_source,s=i.glyph,[a,u]=[s.xs.field,s.ys.field];if(a){const l=t.data[a].length-1,d=t.get_array(a)[l];d.splice(d.length-1,1)}if(u){const l=t.data[u].length-1,d=t.get_array(u)[l];d.splice(d.length-1,1)}this._emit_cds_changes(t)}_keyup(i){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)i.keyCode===w.Keys.Backspace?this._delete_selected(t):i.keyCode==w.Keys.Esc&&(this._drawing&&(this._remove(),this._drawing=!1),t.data_source.selection_manager.clear())}_pan_start(i){this.model.drag&&(this._select_event(i,"append",this.model.renderers),this._basepoint=[i.sx,i.sy])}_pan(i){if(this._basepoint==null||!this.model.drag)return;const[t,s]=this._basepoint;for(const a of this.model.renderers){const u=this._map_drag(t,s,a),l=this._map_drag(i.sx,i.sy,a);if(l==null||u==null)continue;const d=a.data_source,m=a.glyph,[f,b]=[m.xs.field,m.ys.field];if(!f&&!b)continue;const[y,A]=l,[L,x]=u,[H,S]=[y-L,A-x];for(const k of d.selected.indices){let E,P,N;f&&(P=d.data[f][k]),b?(N=d.data[b][k],E=N.length):E=P.length;for(let B=0;B<E;B++)P&&(P[B]+=H),N&&(N[B]+=S)}d.change.emit()}this._basepoint=[i.sx,i.sy]}_pan_end(i){if(this.model.drag){this._pan(i);for(const t of this.model.renderers)this._emit_cds_changes(t.data_source);this._basepoint=null}}activate(){if(this.model.vertex_renderer&&this.model.active){if(this._show_vertices(),!this._initialized)for(const i of this.model.renderers){const t=i.data_source;t.connect(t.properties.data.change,()=>this._show_vertices())}this._initialized=!0}}deactivate(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()}}e.PolyDrawToolView=c,c.__name__="PolyDrawToolView";class o extends p.PolyTool{constructor(i){super(i),this.tool_name="Polygon Draw Tool",this.icon=T.tool_icon_poly_draw,this.event_type=["pan","tap","move"],this.default_order=3}}e.PolyDrawTool=o,v=o,o.__name__="PolyDrawTool",v.prototype.default_view=c,v.define(({Boolean:r,Int:i})=>({drag:[r,!0],num_objects:[i,0]}))},function(Q,O,e,C,R){var v;C();const w=Q(8),g=Q(370);class p extends g.EditToolView{_set_vertices(o,r){const i=this.model.vertex_renderer.glyph,t=this.model.vertex_renderer.data_source,[s,a]=[i.x.field,i.y.field];s&&((0,w.isArray)(o)?t.data[s]=o:i.x={value:o}),a&&((0,w.isArray)(r)?t.data[a]=r:i.y={value:r}),this._emit_cds_changes(t,!0,!0,!1)}_hide_vertices(){this._set_vertices([],[])}_snap_to_vertex(o,r,i){if(this.model.vertex_renderer){const t=this._select_event(o,"replace",[this.model.vertex_renderer]),s=this.model.vertex_renderer.data_source,a=this.model.vertex_renderer.glyph,[u,l]=[a.x.field,a.y.field];if(t.length){const d=s.selected.indices[0];u&&(r=s.data[u][d]),l&&(i=s.data[l][d]),s.selection_manager.clear()}}return[r,i]}}e.PolyToolView=p,p.__name__="PolyToolView";class T extends g.EditTool{constructor(o){super(o)}}e.PolyTool=T,v=T,T.__name__="PolyTool",v.define(({AnyRef:c})=>({vertex_renderer:[c()]}))},function(Q,O,e,C,R){var v;C();const w=Q(43),g=Q(8),p=Q(375),T=Q(228);class c extends p.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._cur_index=null}_doubletap(i){if(!this.model.active)return;const t=this._map_drag(i.sx,i.sy,this.model.vertex_renderer);if(t==null)return;const[s,a]=t,u=this._select_event(i,"replace",[this.model.vertex_renderer]),l=this.model.vertex_renderer.data_source,d=this.model.vertex_renderer.glyph,[m,f]=[d.x.field,d.y.field];if(u.length&&this._selected_renderer!=null){const b=l.selected.indices[0];this._drawing?(this._drawing=!1,l.selection_manager.clear()):(l.selected.indices=[b+1],m&&l.get_array(m).splice(b+1,0,s),f&&l.get_array(f).splice(b+1,0,a),this._drawing=!0),l.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(i)}_show_vertices(i){if(!this.model.active)return;const t=this.model.renderers[0],s=()=>this._update_vertices(t),a=t==null?void 0:t.data_source,u=this._select_event(i,"replace",this.model.renderers);if(!u.length)return this._set_vertices([],[]),this._selected_renderer=null,this._drawing=!1,this._cur_index=null,void(a!=null&&a.disconnect(a.properties.data.change,s));a!=null&&a.connect(a.properties.data.change,s),this._cur_index=u[0].data_source.selected.indices[0],this._update_vertices(u[0])}_update_vertices(i){const t=i.glyph,s=i.data_source,a=this._cur_index,[u,l]=[t.xs.field,t.ys.field];if(this._drawing||a==null&&(u||l))return;let d,m;u&&a!=null?(d=s.data[u][a],(0,g.isArray)(d)||(s.data[u][a]=d=Array.from(d))):d=t.xs.value,l&&a!=null?(m=s.data[l][a],(0,g.isArray)(m)||(s.data[l][a]=m=Array.from(m))):m=t.ys.value,this._selected_renderer=i,this._set_vertices(d,m)}_move(i){if(this._drawing&&this._selected_renderer!=null){const t=this.model.vertex_renderer,s=t.data_source,a=t.glyph,u=this._map_drag(i.sx,i.sy,t);if(u==null)return;let[l,d]=u;const m=s.selected.indices;[l,d]=this._snap_to_vertex(i,l,d),s.selected.indices=m;const[f,b]=[a.x.field,a.y.field],y=m[0];f&&(s.data[f][y]=l),b&&(s.data[b][y]=d),s.change.emit(),this._selected_renderer.data_source.change.emit()}}_tap(i){const t=this.model.vertex_renderer,s=this._map_drag(i.sx,i.sy,t);if(s==null)return;if(this._drawing&&this._selected_renderer){let[u,l]=s;const d=t.data_source,m=t.glyph,[f,b]=[m.x.field,m.y.field],y=d.selected.indices;[u,l]=this._snap_to_vertex(i,u,l);const A=y[0];if(d.selected.indices=[A+1],f){const L=d.get_array(f),x=L[A];L[A]=u,L.splice(A+1,0,x)}if(b){const L=d.get_array(b),x=L[A];L[A]=l,L.splice(A+1,0,x)}return d.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}const a=this._select_mode(i);this._select_event(i,a,[t]),this._select_event(i,a,this.model.renderers)}_remove_vertex(){if(!this._drawing||!this._selected_renderer)return;const i=this.model.vertex_renderer,t=i.data_source,s=i.glyph,a=t.selected.indices[0],[u,l]=[s.x.field,s.y.field];u&&t.get_array(u).splice(a,1),l&&t.get_array(l).splice(a,1),t.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}_pan_start(i){this._select_event(i,"append",[this.model.vertex_renderer]),this._basepoint=[i.sx,i.sy]}_pan(i){this._basepoint!=null&&(this._drag_points(i,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(i){this._basepoint!=null&&(this._drag_points(i,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}_keyup(i){if(!this.model.active||!this._mouse_in_frame)return;let t;t=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(const s of t)i.keyCode===w.Keys.Backspace?(this._delete_selected(s),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):i.keyCode==w.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),s.data_source.selection_manager.clear())}deactivate(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())}}e.PolyEditToolView=c,c.__name__="PolyEditToolView";class o extends p.PolyTool{constructor(i){super(i),this.tool_name="Poly Edit Tool",this.icon=T.tool_icon_poly_edit,this.event_type=["tap","pan","move"],this.default_order=4}}e.PolyEditTool=o,v=o,o.__name__="PolyEditTool",v.prototype.default_view=c},function(Q,O,e,C,R){var v;C();const w=Q(378),g=Q(116),p=Q(20),T=Q(228);class c extends w.SelectToolView{_compute_limits(t){const s=this.plot_view.frame,a=this.model.dimensions;let u=this._base_point;if(this.model.origin=="center"){const[l,d]=u,[m,f]=t;u=[l-(m-l),d-(f-d)]}return this.model._get_dim_limits(u,t,s,a)}_pan_start(t){const{sx:s,sy:a}=t;this._base_point=[s,a]}_pan(t){const{sx:s,sy:a}=t,u=[s,a],[l,d]=this._compute_limits(u);this.model.overlay.update({left:l[0],right:l[1],top:d[0],bottom:d[1]}),this.model.select_every_mousemove&&this._do_select(l,d,!1,this._select_mode(t))}_pan_end(t){const{sx:s,sy:a}=t,u=[s,a],[l,d]=this._compute_limits(u);this._do_select(l,d,!0,this._select_mode(t)),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.state.push("box_select",{selection:this.plot_view.get_selection()})}_do_select([t,s],[a,u],l,d="replace"){const m={type:"rect",sx0:t,sx1:s,sy0:a,sy1:u};this._select(m,l,d)}}e.BoxSelectToolView=c,c.__name__="BoxSelectToolView";const o=()=>new g.BoxAnnotation({level:"overlay",top_units:"screen",left_units:"screen",bottom_units:"screen",right_units:"screen",fill_color:"lightgrey",fill_alpha:.5,line_color:"black",line_alpha:1,line_width:2,line_dash:[4,4]});class r extends w.SelectTool{constructor(t){super(t),this.tool_name="Box Select",this.icon=T.tool_icon_box_select,this.event_type="pan",this.default_order=30}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.BoxSelectTool=r,v=r,r.__name__="BoxSelectTool",v.prototype.default_view=c,v.define(({Boolean:i,Ref:t})=>({dimensions:[p.Dimensions,"both"],select_every_mousemove:[i,!1],overlay:[t(g.BoxAnnotation),o],origin:[p.BoxOrigin,"corner"]})),v.register_alias("box_select",()=>new r),v.register_alias("xbox_select",()=>new r({dimensions:"width"})),v.register_alias("ybox_select",()=>new r({dimensions:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(223),g=Q(175),p=Q(339),T=Q(176),c=Q(66),o=Q(20),r=Q(43),i=Q(251),t=Q(15),s=Q(11);class a extends w.GestureToolView{connect_signals(){super.connect_signals(),this.model.clear.connect(()=>this._clear())}get computed_renderers(){const{renderers:d,names:m}=this.model,f=this.plot_model.data_renderers;return(0,c.compute_renderers)(d,f,m)}_computed_renderers_by_data_source(){var d;const m=new Map;for(const f of this.computed_renderers){let b;if(f instanceof g.GlyphRenderer)b=f.data_source;else{if(!(f instanceof p.GraphRenderer))continue;b=f.node_renderer.data_source}const y=(d=m.get(b))!==null&&d!==void 0?d:[];m.set(b,[...y,f])}return m}_select_mode(d){const{shiftKey:m,ctrlKey:f}=d;return m||f?m&&!f?"append":!m&&f?"intersect":m&&f?"subtract":void(0,s.unreachable)():this.model.mode}_keyup(d){d.keyCode==r.Keys.Esc&&this._clear()}_clear(){for(const m of this.computed_renderers)m.get_selection_manager().clear();const d=this.computed_renderers.map(m=>this.plot_view.renderer_view(m));this.plot_view.request_paint(d)}_select(d,m,f){const b=this._computed_renderers_by_data_source();for(const[,y]of b){const A=y[0].get_selection_manager(),L=[];for(const x of y){const H=this.plot_view.renderer_view(x);H!=null&&L.push(H)}A.select(L,d,m,f)}this.model.callback!=null&&this._emit_callback(d),this._emit_selection_event(d,m)}_emit_selection_event(d,m=!0){const{x_scale:f,y_scale:b}=this.plot_view.frame;let y;switch(d.type){case"point":{const{sx:A,sy:L}=d,x=f.invert(A),H=b.invert(L);y=Object.assign(Object.assign({},d),{x,y:H});break}case"span":{const{sx:A,sy:L}=d,x=f.invert(A),H=b.invert(L);y=Object.assign(Object.assign({},d),{x,y:H});break}case"rect":{const{sx0:A,sx1:L,sy0:x,sy1:H}=d,[S,k]=f.r_invert(A,L),[E,P]=b.r_invert(x,H);y=Object.assign(Object.assign({},d),{x0:S,y0:E,x1:k,y1:P});break}case"poly":{const{sx:A,sy:L}=d,x=f.v_invert(A),H=b.v_invert(L);y=Object.assign(Object.assign({},d),{x,y:H});break}}this.plot_model.trigger_event(new i.SelectionGeometry(y,m))}}e.SelectToolView=a,a.__name__="SelectToolView";class u extends w.GestureTool{constructor(d){super(d)}initialize(){super.initialize(),this.clear=new t.Signal0(this,"clear")}get menu(){return[{icon:"bk-tool-icon-replace-mode",tooltip:"Replace the current selection",active:()=>this.mode=="replace",handler:()=>{this.mode="replace",this.active=!0}},{icon:"bk-tool-icon-append-mode",tooltip:"Append to the current selection (Shift)",active:()=>this.mode=="append",handler:()=>{this.mode="append",this.active=!0}},{icon:"bk-tool-icon-intersect-mode",tooltip:"Intersect with the current selection (Ctrl)",active:()=>this.mode=="intersect",handler:()=>{this.mode="intersect",this.active=!0}},{icon:"bk-tool-icon-subtract-mode",tooltip:"Subtract from the current selection (Shift+Ctrl)",active:()=>this.mode=="subtract",handler:()=>{this.mode="subtract",this.active=!0}},null,{icon:"bk-tool-icon-clear-selection",tooltip:"Clear the current selection (Esc)",handler:()=>{this.clear.emit()}}]}}e.SelectTool=u,v=u,u.__name__="SelectTool",v.define(({String:l,Array:d,Ref:m,Or:f,Auto:b})=>({renderers:[f(d(m(T.DataRenderer)),b),"auto"],names:[d(l),[]],mode:[o.SelectionMode,"replace"]}))},function(Q,O,e,C,R){var v;C();const w=Q(223),g=Q(116),p=Q(20),T=Q(228);class c extends w.GestureToolView{_match_aspect(t,s,a){const u=a.bbox.aspect,l=a.bbox.h_range.end,d=a.bbox.h_range.start,m=a.bbox.v_range.end,f=a.bbox.v_range.start;let b=Math.abs(t[0]-s[0]),y=Math.abs(t[1]-s[1]);const A=y==0?0:b/y,[L]=A>=u?[1,A/u]:[u/A,1];let x,H,S,k;return t[0]<=s[0]?(x=t[0],H=t[0]+b*L,H>l&&(H=l)):(H=t[0],x=t[0]-b*L,x<d&&(x=d)),b=Math.abs(H-x),t[1]<=s[1]?(k=t[1],S=t[1]+b/u,S>m&&(S=m)):(S=t[1],k=t[1]-b/u,k<f&&(k=f)),y=Math.abs(S-k),t[0]<=s[0]?H=t[0]+u*y:x=t[0]-u*y,[[x,H],[k,S]]}_compute_limits(t){const s=this.plot_view.frame,a=this.model.dimensions;let u,l,d=this._base_point;if(this.model.origin=="center"){const[m,f]=d,[b,y]=t;d=[m-(b-m),f-(y-f)]}return this.model.match_aspect&&a=="both"?[u,l]=this._match_aspect(d,t,s):[u,l]=this.model._get_dim_limits(d,t,s,a),[u,l]}_pan_start(t){this._base_point=[t.sx,t.sy]}_pan(t){const s=[t.sx,t.sy],[a,u]=this._compute_limits(s);this.model.overlay.update({left:a[0],right:a[1],top:u[0],bottom:u[1]})}_pan_end(t){const s=[t.sx,t.sy],[a,u]=this._compute_limits(s);this._update(a,u),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.trigger_ranges_update_event()}_update([t,s],[a,u]){if(Math.abs(s-t)<=5||Math.abs(u-a)<=5)return;const{x_scales:l,y_scales:d}=this.plot_view.frame,m=new Map;for(const[y,A]of l){const[L,x]=A.r_invert(t,s);m.set(y,{start:L,end:x})}const f=new Map;for(const[y,A]of d){const[L,x]=A.r_invert(a,u);f.set(y,{start:L,end:x})}const b={xrs:m,yrs:f};this.plot_view.state.push("box_zoom",{range:b}),this.plot_view.update_range(b)}}e.BoxZoomToolView=c,c.__name__="BoxZoomToolView";const o=()=>new g.BoxAnnotation({level:"overlay",top_units:"screen",left_units:"screen",bottom_units:"screen",right_units:"screen",fill_color:"lightgrey",fill_alpha:.5,line_color:"black",line_alpha:1,line_width:2,line_dash:[4,4]});class r extends w.GestureTool{constructor(t){super(t),this.tool_name="Box Zoom",this.icon=T.tool_icon_box_zoom,this.event_type="pan",this.default_order=20}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.BoxZoomTool=r,v=r,r.__name__="BoxZoomTool",v.prototype.default_view=c,v.define(({Boolean:i,Ref:t})=>({dimensions:[p.Dimensions,"both"],overlay:[t(g.BoxAnnotation),o],match_aspect:[i,!1],origin:[p.BoxOrigin,"corner"]})),v.register_alias("box_zoom",()=>new r({dimensions:"both"})),v.register_alias("xbox_zoom",()=>new r({dimensions:"width"})),v.register_alias("ybox_zoom",()=>new r({dimensions:"height"}))},function(V,Q,O,e,C){var R;e();const v=V(378),w=V(217),g=V(381),p=V(43),T=V(228);class c extends v.SelectToolView{constructor(){super(...arguments),this.sxs=[],this.sys=[]}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._active_change())}_active_change(){this.model.active||this._clear_overlay()}_keyup(i){i.keyCode==p.Keys.Enter&&this._clear_overlay()}_pan_start(i){this.sxs=[],this.sys=[];const{sx:t,sy:s}=i;this._append_overlay(t,s)}_pan(i){const[t,s]=this.plot_view.frame.bbox.clip(i.sx,i.sy);this._append_overlay(t,s),this.model.select_every_mousemove&&this._do_select(this.sxs,this.sys,!1,this._select_mode(i))}_pan_end(i){const{sxs:t,sys:s}=this;this._clear_overlay(),this._do_select(t,s,!0,this._select_mode(i)),this.plot_view.state.push("lasso_select",{selection:this.plot_view.get_selection()})}_append_overlay(i,t){const{sxs:s,sys:a}=this;s.push(i),a.push(t),this.model.overlay.update({xs:s,ys:a})}_clear_overlay(){this.sxs=[],this.sys=[],this.model.overlay.update({xs:this.sxs,ys:this.sys})}_do_select(i,t,s,a){const u={type:"poly",sx:i,sy:t};this._select(u,s,a)}}O.LassoSelectToolView=c,c.__name__="LassoSelectToolView";class o extends v.SelectTool{constructor(i){super(i),this.tool_name="Lasso Select",this.icon=T.tool_icon_lasso_select,this.event_type="pan",this.default_order=12}}O.LassoSelectTool=o,R=o,o.__name__="LassoSelectTool",R.prototype.default_view=c,R.define(({Boolean:r,Ref:i})=>({select_every_mousemove:[r,!0],overlay:[i(w.PolyAnnotation),g.DEFAULT_POLY_OVERLAY]})),R.register_alias("lasso_select",()=>new o)},function(Q,O,e,C,R){var v;C();const w=Q(378),g=Q(217),p=Q(43),T=Q(9),c=Q(228);class o extends w.SelectToolView{initialize(){super.initialize(),this.data={sx:[],sy:[]}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,()=>this._active_change())}_active_change(){this.model.active||this._clear_data()}_keyup(t){t.keyCode==p.Keys.Enter&&this._clear_data()}_doubletap(t){this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(t)),this.plot_view.state.push("poly_select",{selection:this.plot_view.get_selection()}),this._clear_data()}_clear_data(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})}_tap(t){const{sx:s,sy:a}=t;this.plot_view.frame.bbox.contains(s,a)&&(this.data.sx.push(s),this.data.sy.push(a),this.model.overlay.update({xs:(0,T.copy)(this.data.sx),ys:(0,T.copy)(this.data.sy)}))}_do_select(t,s,a,u){const l={type:"poly",sx:t,sy:s};this._select(l,a,u)}}e.PolySelectToolView=o,o.__name__="PolySelectToolView",e.DEFAULT_POLY_OVERLAY=()=>new g.PolyAnnotation({level:"overlay",xs_units:"screen",ys_units:"screen",fill_color:"lightgrey",fill_alpha:.5,line_color:"black",line_alpha:1,line_width:2,line_dash:[4,4]});class r extends w.SelectTool{constructor(t){super(t),this.tool_name="Poly Select",this.icon=c.tool_icon_polygon_select,this.event_type="tap",this.default_order=11}}e.PolySelectTool=r,v=r,r.__name__="PolySelectTool",v.prototype.default_view=o,v.define(({Ref:i})=>({overlay:[i(g.PolyAnnotation),e.DEFAULT_POLY_OVERLAY]})),v.register_alias("poly_select",()=>new r)},function(Q,O,e,C,R){var v;C();const w=Q(20),g=Q(383),p=Q(228);class T extends g.LineToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(r){if(!this.model.active)return;const i=this.model.renderers;for(const t of i)this._select_event(r,"replace",[t]).length==1&&(this._selected_renderer=t);this._show_intersections(),this._update_line_cds()}_show_intersections(){if(!this.model.active||this._selected_renderer==null)return;if(!this.model.renderers.length)return this._set_intersection([],[]),this._selected_renderer=null,void(this._drawing=!1);const r=this._selected_renderer.data_source,i=this._selected_renderer.glyph,[t,s]=[i.x.field,i.y.field],a=r.get_array(t),u=r.get_array(s);this._set_intersection(a,u)}_tap(r){const i=this.model.intersection_renderer;if(this._map_drag(r.sx,r.sy,i)==null)return;if(this._drawing&&this._selected_renderer){const s=this._select_mode(r);if(this._select_event(r,s,[i]).length==0)return}const t=this._select_mode(r);this._select_event(r,t,[i]),this._select_event(r,t,this.model.renderers)}_update_line_cds(){if(this._selected_renderer==null)return;const r=this.model.intersection_renderer.glyph,i=this.model.intersection_renderer.data_source,[t,s]=[r.x.field,r.y.field];if(t&&s){const a=i.data[t],u=i.data[s];this._selected_renderer.data_source.data[t]=a,this._selected_renderer.data_source.data[s]=u}this._emit_cds_changes(this._selected_renderer.data_source,!0,!0,!1)}_pan_start(r){this._select_event(r,"append",[this.model.intersection_renderer]),this._basepoint=[r.sx,r.sy]}_pan(r){this._basepoint!=null&&(this._drag_points(r,[this.model.intersection_renderer],this.model.dimensions),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(r){this._basepoint!=null&&(this._drag_points(r,[this.model.intersection_renderer]),this._emit_cds_changes(this.model.intersection_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}activate(){this._drawing=!0}deactivate(){this._selected_renderer&&(this._drawing&&(this._drawing=!1),this._hide_intersections())}}e.LineEditToolView=T,T.__name__="LineEditToolView";class c extends g.LineTool{constructor(r){super(r),this.tool_name="Line Edit Tool",this.icon=p.tool_icon_line_edit,this.event_type=["tap","pan","move"],this.default_order=4}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.LineEditTool=c,v=c,c.__name__="LineEditTool",v.prototype.default_view=T,v.define(()=>({dimensions:[w.Dimensions,"both"]}))},function(Q,O,e,C,R){var v;C();const w=Q(8),g=Q(370);class p extends g.EditToolView{_set_intersection(o,r){const i=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[s,a]=[i.x.field,i.y.field];s&&((0,w.isArray)(o)?t.data[s]=o:i.x={value:o}),a&&((0,w.isArray)(r)?t.data[a]=r:i.y={value:r}),this._emit_cds_changes(t,!0,!0,!1)}_hide_intersections(){this._set_intersection([],[])}}e.LineToolView=p,p.__name__="LineToolView";class T extends g.EditTool{constructor(o){super(o)}}e.LineTool=T,v=T,T.__name__="LineTool",v.define(({AnyRef:c})=>({intersection_renderer:[c()]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(223),p=Q(20),T=(0,v.__importStar)(Q(228));function c(i,t,s){const a=new Map;for(const[u,l]of i){const[d,m]=l.r_invert(t,s);a.set(u,{start:d,end:m})}return a}e.update_ranges=c;class o extends g.GestureToolView{_pan_start(t){var s;this.last_dx=0,this.last_dy=0;const{sx:a,sy:u}=t,l=this.plot_view.frame.bbox;if(!l.contains(a,u)){const d=l.h_range,m=l.v_range;(a<d.start||a>d.end)&&(this.v_axis_only=!0),(u<m.start||u>m.end)&&(this.h_axis_only=!0)}(s=this.model.document)===null||s===void 0||s.interactive_start(this.plot_model)}_pan(t){var s;this._update(t.deltaX,t.deltaY),(s=this.model.document)===null||s===void 0||s.interactive_start(this.plot_model)}_pan_end(t){this.h_axis_only=!1,this.v_axis_only=!1,this.pan_info!=null&&this.plot_view.state.push("pan",{range:this.pan_info}),this.plot_view.trigger_ranges_update_event()}_update(t,s){const a=this.plot_view.frame,u=t-this.last_dx,l=s-this.last_dy,d=a.bbox.h_range,m=d.start-u,f=d.end-u,b=a.bbox.v_range,y=b.start-l,A=b.end-l,L=this.model.dimensions;let x,H,S,k,E,P;L!="width"&&L!="both"||this.v_axis_only?(x=d.start,H=d.end,S=0):(x=m,H=f,S=-u),L!="height"&&L!="both"||this.h_axis_only?(k=b.start,E=b.end,P=0):(k=y,E=A,P=-l),this.last_dx=t,this.last_dy=s;const{x_scales:N,y_scales:B}=a,D=c(N,x,H),j=c(B,k,E);this.pan_info={xrs:D,yrs:j,sdx:S,sdy:P},this.plot_view.update_range(this.pan_info,{panning:!0})}}e.PanToolView=o,o.__name__="PanToolView";class r extends g.GestureTool{constructor(t){super(t),this.tool_name="Pan",this.event_type="pan",this.default_order=10}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.PanTool=r,w=r,r.__name__="PanTool",w.prototype.default_view=o,w.define(()=>({dimensions:[p.Dimensions,"both",{on_update(i,t){switch(i){case"both":t.icon=T.tool_icon_pan;break;case"width":t.icon=T.tool_icon_xpan;break;case"height":t.icon=T.tool_icon_ypan}}}]})),w.register_alias("pan",()=>new r({dimensions:"both"})),w.register_alias("xpan",()=>new r({dimensions:"width"})),w.register_alias("ypan",()=>new r({dimensions:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(116),g=Q(58),p=Q(19),T=Q(223),c=Q(228);function o(b){switch(b){case 1:return 2;case 2:return 1;case 4:return 5;case 5:return 4;default:return b}}function r(b,y,A,L){if(y==null)return!1;const x=A.compute(y);return Math.abs(b-x)<L}function i(b,y,A,L,x){let H=!0;if(x.left!=null&&x.right!=null){const S=A.invert(b);(S<x.left||S>x.right)&&(H=!1)}if(x.bottom!=null&&x.top!=null){const S=L.invert(y);(S<x.bottom||S>x.top)&&(H=!1)}return H}function t(b,y,A){let L=0;return b>=A.start&&b<=A.end&&(L+=1),y>=A.start&&y<=A.end&&(L+=1),L}function s(b,y,A,L){const x=y.compute(b),H=y.invert(x+A);return H>=L.start&&H<=L.end?H:b}function a(b,y,A){return b>y.start?(y.end=b,A):(y.end=y.start,y.start=b,o(A))}function u(b,y,A){return b<y.end?(y.start=b,A):(y.start=y.end,y.end=b,o(A))}function l(b,y,A,L){const[x,H]=y.r_compute(b.start,b.end),[S,k]=y.r_invert(x+A,H+A),E=t(b.start,b.end,L);t(S,k,L)>=E&&(b.start=S,b.end=k)}e.flip_side=o,e.is_near=r,e.is_inside=i,e.sides_inside=t,e.compute_value=s,e.update_range_end_side=a,e.update_range_start_side=u,e.update_range=l;class d extends T.GestureToolView{initialize(){super.initialize(),this.side=0,this.model.update_overlay_from_ranges()}connect_signals(){super.connect_signals(),this.model.x_range!=null&&this.connect(this.model.x_range.change,()=>this.model.update_overlay_from_ranges()),this.model.y_range!=null&&this.connect(this.model.y_range.change,()=>this.model.update_overlay_from_ranges())}_pan_start(y){this.last_dx=0,this.last_dy=0;const A=this.model.x_range,L=this.model.y_range,{frame:x}=this.plot_view,H=x.x_scale,S=x.y_scale,k=this.model.overlay,{left:E,right:P,top:N,bottom:B}=k,D=this.model.overlay.line_width+w.EDGE_TOLERANCE;A!=null&&this.model.x_interaction&&(r(y.sx,E,H,D)?this.side=1:r(y.sx,P,H,D)?this.side=2:i(y.sx,y.sy,H,S,k)&&(this.side=3)),L!=null&&this.model.y_interaction&&(this.side==0&&r(y.sy,B,S,D)&&(this.side=4),this.side==0&&r(y.sy,N,S,D)?this.side=5:i(y.sx,y.sy,H,S,this.model.overlay)&&(this.side==3?this.side=7:this.side=6))}_pan(y){const A=this.plot_view.frame,L=y.deltaX-this.last_dx,x=y.deltaY-this.last_dy,H=this.model.x_range,S=this.model.y_range,k=A.x_scale,E=A.y_scale;if(H!=null){if(this.side==3||this.side==7)l(H,k,L,A.x_range);else if(this.side==1){const P=s(H.start,k,L,A.x_range);this.side=u(P,H,this.side)}else if(this.side==2){const P=s(H.end,k,L,A.x_range);this.side=a(P,H,this.side)}}if(S!=null){if(this.side==6||this.side==7)l(S,E,x,A.y_range);else if(this.side==4){const P=s(S.start,E,x,A.y_range);this.side=u(P,S,this.side)}else if(this.side==5){const P=s(S.end,E,x,A.y_range);this.side=a(P,S,this.side)}}this.last_dx=y.deltaX,this.last_dy=y.deltaY}_pan_end(y){this.side=0,this.plot_view.trigger_ranges_update_event()}}e.RangeToolView=d,d.__name__="RangeToolView";const m=()=>new w.BoxAnnotation({level:"overlay",fill_color:"lightgrey",fill_alpha:.5,line_color:"black",line_alpha:1,line_width:.5,line_dash:[2,2]});class f extends T.GestureTool{constructor(y){super(y),this.tool_name="Range Tool",this.icon=c.tool_icon_range,this.event_type="pan",this.default_order=1}initialize(){super.initialize(),this.overlay.in_cursor="grab",this.overlay.ew_cursor=this.x_range!=null&&this.x_interaction?"ew-resize":null,this.overlay.ns_cursor=this.y_range!=null&&this.y_interaction?"ns-resize":null}update_overlay_from_ranges(){this.x_range==null&&this.y_range==null&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,p.logger.warn("RangeTool not configured with any Ranges.")),this.x_range==null?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),this.y_range==null?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)}}e.RangeTool=f,v=f,f.__name__="RangeTool",v.prototype.default_view=d,v.define(({Boolean:b,Ref:y,Nullable:A})=>({x_range:[A(y(g.Range1d)),null],x_interaction:[b,!0],y_range:[A(y(g.Range1d)),null],y_interaction:[b,!0],overlay:[y(w.BoxAnnotation),m]}))},function(Q,O,e,C,R){var v;C();const w=Q(378),g=Q(20),p=Q(228);class T extends w.SelectToolView{_tap(r){this.model.gesture=="tap"&&this._handle_tap(r)}_doubletap(r){this.model.gesture=="doubletap"&&this._handle_tap(r)}_handle_tap(r){const{sx:i,sy:t}=r,s={type:"point",sx:i,sy:t};this._select(s,!0,this._select_mode(r))}_select(r,i,t){const{callback:s}=this.model;if(this.model.behavior=="select"){const a=this._computed_renderers_by_data_source();for(const[,u]of a){const l=u[0].get_selection_manager(),d=u.map(m=>this.plot_view.renderer_view(m)).filter(m=>m!=null);if(l.select(d,r,i,t)&&s!=null){const m=d[0].coordinates.x_scale.invert(r.sx),f=d[0].coordinates.y_scale.invert(r.sy),b={geometries:Object.assign(Object.assign({},r),{x:m,y:f}),source:l.source};s.execute(this.model,b)}}this._emit_selection_event(r),this.plot_view.state.push("tap",{selection:this.plot_view.get_selection()})}else for(const a of this.computed_renderers){const u=this.plot_view.renderer_view(a);if(u==null)continue;const l=a.get_selection_manager();if(l.inspect(u,r)&&s!=null){const d=u.coordinates.x_scale.invert(r.sx),m=u.coordinates.y_scale.invert(r.sy),f={geometries:Object.assign(Object.assign({},r),{x:d,y:m}),source:l.source};s.execute(this.model,f)}}}}e.TapToolView=T,T.__name__="TapToolView";class c extends w.SelectTool{constructor(r){super(r),this.tool_name="Tap",this.icon=p.tool_icon_tap_select,this.event_type="tap",this.default_order=10}}e.TapTool=c,v=c,c.__name__="TapTool",v.prototype.default_view=T,v.define(({Any:o,Enum:r,Nullable:i})=>({behavior:[g.TapBehavior,"select"],gesture:[r("tap","doubletap"),"tap"],callback:[i(o)]})),v.register_alias("click",()=>new c({behavior:"inspect"})),v.register_alias("tap",()=>new c),v.register_alias("doubletap",()=>new c({gesture:"doubletap"}))},function(Q,O,e,C,R){var v;C();const w=Q(223),g=Q(20),p=Q(228),T=Q(384);class c extends w.GestureToolView{_scroll(i){let t=this.model.speed*i.delta;t>.9?t=.9:t<-.9&&(t=-.9),this._update_ranges(t)}_update_ranges(i){var t;const{frame:s}=this.plot_view,a=s.bbox.h_range,u=s.bbox.v_range,[l,d]=[a.start,a.end],[m,f]=[u.start,u.end];let b,y,A,L;switch(this.model.dimension){case"height":{const k=Math.abs(f-m);b=l,y=d,A=m-k*i,L=f-k*i;break}case"width":{const k=Math.abs(d-l);b=l-k*i,y=d-k*i,A=m,L=f;break}}const{x_scales:x,y_scales:H}=s,S={xrs:(0,T.update_ranges)(x,b,y),yrs:(0,T.update_ranges)(H,A,L),factor:i};this.plot_view.state.push("wheel_pan",{range:S}),this.plot_view.update_range(S,{scrolling:!0}),(t=this.model.document)===null||t===void 0||t.interactive_start(this.plot_model,()=>this.plot_view.trigger_ranges_update_event())}}e.WheelPanToolView=c,c.__name__="WheelPanToolView";class o extends w.GestureTool{constructor(i){super(i),this.tool_name="Wheel Pan",this.icon=p.tool_icon_wheel_pan,this.event_type="scroll",this.default_order=12}get tooltip(){return this._get_dim_tooltip(this.dimension)}}e.WheelPanTool=o,v=o,o.__name__="WheelPanTool",v.prototype.default_view=c,v.define(()=>({dimension:[g.Dimension,"width"]})),v.internal(({Number:r})=>({speed:[r,.001]})),v.register_alias("xwheel_pan",()=>new o({dimension:"width"})),v.register_alias("ywheel_pan",()=>new o({dimension:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(223),g=Q(368),p=Q(20),T=Q(27),c=Q(228);class o extends w.GestureToolView{_pinch(t){const{sx:s,sy:a,scale:u,ctrlKey:l,shiftKey:d}=t;let m;m=u>=1?20*(u-1):-20/u,this._scroll({type:"wheel",sx:s,sy:a,delta:m,ctrlKey:l,shiftKey:d})}_scroll(t){var s;const{frame:a}=this.plot_view,u=a.bbox.h_range,l=a.bbox.v_range,{sx:d,sy:m}=t,f=this.model.dimensions,b=(f=="width"||f=="both")&&u.start<d&&d<u.end,y=(f=="height"||f=="both")&&l.start<m&&m<l.end;if(!(b&&y||this.model.zoom_on_axis))return;const A=this.model.speed*t.delta,L=(0,g.scale_range)(a,A,b,y,{x:d,y:m});this.plot_view.state.push("wheel_zoom",{range:L});const{maintain_focus:x}=this.model;this.plot_view.update_range(L,{scrolling:!0,maintain_focus:x}),(s=this.model.document)===null||s===void 0||s.interactive_start(this.plot_model,()=>this.plot_view.trigger_ranges_update_event())}}e.WheelZoomToolView=o,o.__name__="WheelZoomToolView";class r extends w.GestureTool{constructor(t){super(t),this.tool_name="Wheel Zoom",this.icon=c.tool_icon_wheel_zoom,this.event_type=T.is_mobile?"pinch":"scroll",this.default_order=10}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.WheelZoomTool=r,v=r,r.__name__="WheelZoomTool",v.prototype.default_view=o,v.define(({Boolean:i,Number:t})=>({dimensions:[p.Dimensions,"both"],maintain_focus:[i,!0],zoom_on_axis:[i,!0],speed:[t,1/600]})),v.register_alias("wheel_zoom",()=>new r({dimensions:"both"})),v.register_alias("xwheel_zoom",()=>new r({dimensions:"width"})),v.register_alias("ywheel_zoom",()=>new r({dimensions:"height"}))},function(Q,O,e,C,R){var v;C();const w=Q(232),g=Q(219),p=Q(20),T=Q(13),c=Q(228);class o extends w.InspectToolView{_move(t){if(!this.model.active)return;const{sx:s,sy:a}=t;this.plot_view.frame.bbox.contains(s,a)?this._update_spans(s,a):this._update_spans(null,null)}_move_exit(t){this._update_spans(null,null)}_update_spans(t,s){const a=this.model.dimensions;a!="width"&&a!="both"||(this.model.spans.width.location=s),a!="height"&&a!="both"||(this.model.spans.height.location=t)}}e.CrosshairToolView=o,o.__name__="CrosshairToolView";class r extends w.InspectTool{constructor(t){super(t),this.tool_name="Crosshair",this.icon=c.tool_icon_crosshair}get tooltip(){return this._get_dim_tooltip(this.dimensions)}get synthetic_renderers(){return(0,T.values)(this.spans)}}e.CrosshairTool=r,v=r,r.__name__="CrosshairTool",(()=>{function i(t,s){return new g.Span({for_hover:!0,dimension:s,location_units:"screen",level:"overlay",line_color:t.line_color,line_width:t.line_width,line_alpha:t.line_alpha})}v.prototype.default_view=o,v.define(({Alpha:t,Number:s,Color:a})=>({dimensions:[p.Dimensions,"both"],line_color:[a,"black"],line_width:[s,1],line_alpha:[t,1]})),v.internal(({Struct:t,Ref:s})=>({spans:[t({width:s(g.Span),height:s(g.Span)}),a=>({width:i(a,"width"),height:i(a,"height")})]})),v.register_alias("crosshair",()=>new r)})()},function(Q,O,e,C,R){var v;C();const w=Q(53),g=Q(13),p=Q(34);class T extends w.Model{constructor(o){super(o)}get values(){return(0,g.values)(this.args)}_make_code(o,r,i,t){return new Function(...(0,g.keys)(this.args),o,r,i,(0,p.use_strict)(t))}format(o,r,i){return this._make_code("value","format","special_vars",this.code)(...this.values,o,r,i)}}e.CustomJSHover=T,v=T,T.__name__="CustomJSHover",v.define(({Unknown:c,String:o,Dict:r})=>({args:[r(c),{}],code:[o,""]}))},function(Q,O,e,C,R){C();const v=Q(1);var w;const g=Q(232),p=Q(390),T=Q(241),c=Q(175),o=Q(339),r=Q(176),i=Q(177),t=Q(283),s=Q(186),a=Q(187),u=Q(189),l=(0,v.__importStar)(Q(185)),d=Q(152),m=Q(43),f=Q(22),b=Q(13),y=Q(234),A=Q(8),L=Q(113),x=Q(20),H=Q(228),S=Q(15),k=Q(66),E=(0,v.__importStar)(Q(242)),P=Q(392);function N(M,F,W,U,q,X){const ae={x:q[M],y:X[M]},me={x:q[M+1],y:X[M+1]};let Ve,Je;if(F.type=="span")F.direction=="h"?(Ve=Math.abs(ae.x-W),Je=Math.abs(me.x-W)):(Ve=Math.abs(ae.y-U),Je=Math.abs(me.y-U));else{const rt={x:W,y:U};Ve=l.dist_2_pts(ae,rt),Je=l.dist_2_pts(me,rt)}return Ve<Je?[[ae.x,ae.y],M]:[[me.x,me.y],M+1]}function B(M,F,W){return[[M[W],F[W]],W]}e._nearest_line_hit=N,e._line_hit=B;class D extends g.InspectToolView{initialize(){super.initialize(),this._ttmodels=new Map,this._ttviews=new Map}async lazy_initialize(){await super.lazy_initialize(),await this._update_ttmodels();const{tooltips:F}=this.model;F instanceof P.Template&&(this._template_view=await(0,L.build_view)(F,{parent:this}),this._template_view.render())}remove(){var F;(F=this._template_view)===null||F===void 0||F.remove(),(0,L.remove_views)(this._ttviews),super.remove()}connect_signals(){super.connect_signals();const F=this.plot_model.properties.renderers,{renderers:W,tooltips:U}=this.model.properties;this.on_change(U,()=>delete this._template_el),this.on_change([F,W,U],async()=>await this._update_ttmodels())}async _update_ttmodels(){const{_ttmodels:F,computed_renderers:W}=this;F.clear();const{tooltips:U}=this.model;if(U!=null)for(const me of this.computed_renderers){const Ve=new T.Tooltip({custom:(0,A.isString)(U)||(0,A.isFunction)(U),attachment:this.model.attachment,show_arrow:this.model.show_arrow});me instanceof c.GlyphRenderer?F.set(me,Ve):me instanceof o.GraphRenderer&&(F.set(me.node_renderer,Ve),F.set(me.edge_renderer,Ve))}const q=await(0,L.build_views)(this._ttviews,[...F.values()],{parent:this.plot_view});for(const me of q)me.render();const X=[...function*(){for(const me of W)me instanceof c.GlyphRenderer?yield me:me instanceof o.GraphRenderer&&(yield me.node_renderer,yield me.edge_renderer)}()],ae=this._slots.get(this._update);if(ae!=null){const me=new Set(X.map(Ve=>Ve.data_source));S.Signal.disconnect_receiver(this,ae,me)}for(const me of X)this.connect(me.data_source.inspect,this._update)}get computed_renderers(){const{renderers:F,names:W}=this.model,U=this.plot_model.data_renderers;return(0,k.compute_renderers)(F,U,W)}get ttmodels(){return this._ttmodels}_clear(){this._inspect(1/0,1/0);for(const[,F]of this.ttmodels)F.clear()}_move(F){if(!this.model.active)return;const{sx:W,sy:U}=F;this.plot_view.frame.bbox.contains(W,U)?this._inspect(W,U):this._clear()}_move_exit(){this._clear()}_inspect(F,W){let U;this.model.mode=="mouse"?U={type:"point",sx:F,sy:W}:U={type:"span",direction:this.model.mode=="vline"?"h":"v",sx:F,sy:W};for(const q of this.computed_renderers){const X=q.get_selection_manager(),ae=this.plot_view.renderer_view(q);ae!=null&&X.inspect(ae,U)}this._emit_callback(U)}_update([F,{geometry:W}]){var U,q;if(!this.model.active||W.type!="point"&&W.type!="span"||!(F instanceof c.GlyphRenderer)||this.model.muted_policy=="ignore"&&F.muted)return;const X=this.ttmodels.get(F);if(X==null)return;const ae=F.get_selection_manager(),me=ae.inspectors.get(F),Ve=F.view.convert_selection_to_subset(me);if(me.is_empty()&&me.view==null)return void X.clear();const Je=ae.source,rt=this.plot_view.renderer_view(F);if(rt==null)return;const{sx:yt,sy:xt}=W,r1=rt.coordinates.x_scale,t1=rt.coordinates.y_scale,Bt=r1.invert(yt),Kt=t1.invert(xt),{glyph:wt}=rt,Rt=[];if(wt instanceof s.PatchView){const[Ht,dt]=[yt,xt],Wt={x:Bt,y:Kt,sx:yt,sy:xt,rx:Ht,ry:dt,name:F.name};Rt.push([Ht,dt,this._render_tooltips(Je,-1,Wt)])}if(wt instanceof a.HAreaView)for(const Ht of Ve.line_indices){const dt=wt._x1,Wt=wt._x2,jt=wt._y,[a1,ye]=[yt,xt],ie={index:Ht,x:Bt,y:Kt,sx:yt,sy:xt,data_x1:dt,data_x2:Wt,data_y:jt,rx:a1,ry:ye,indices:Ve.line_indices,name:F.name};Rt.push([a1,ye,this._render_tooltips(Je,Ht,ie)])}if(wt instanceof u.VAreaView)for(const Ht of Ve.line_indices){const dt=wt._x,Wt=wt._y1,jt=wt._y2,[a1,ye]=[yt,xt],ie={index:Ht,x:Bt,y:Kt,sx:yt,sy:xt,data_x:dt,data_y1:Wt,data_y2:jt,rx:a1,ry:ye,indices:Ve.line_indices,name:F.name};Rt.push([a1,ye,this._render_tooltips(Je,Ht,ie)])}if(wt instanceof i.LineView)for(const Ht of Ve.line_indices){let dt,Wt,jt=wt._x[Ht+1],a1=wt._y[Ht+1],ye=Ht;switch(this.model.line_policy){case"interp":[jt,a1]=wt.get_interpolation_hit(Ht,W),dt=r1.compute(jt),Wt=t1.compute(a1);break;case"prev":[[dt,Wt],ye]=B(wt.sx,wt.sy,Ht);break;case"next":[[dt,Wt],ye]=B(wt.sx,wt.sy,Ht+1);break;case"nearest":[[dt,Wt],ye]=N(Ht,W,yt,xt,wt.sx,wt.sy),jt=wt._x[ye],a1=wt._y[ye];break;default:[dt,Wt]=[yt,xt]}const ie={index:ye,x:Bt,y:Kt,sx:yt,sy:xt,data_x:jt,data_y:a1,rx:dt,ry:Wt,indices:Ve.line_indices,name:F.name};Rt.push([dt,Wt,this._render_tooltips(Je,ye,ie)])}for(const Ht of me.image_indices){const dt={index:Ht.index,x:Bt,y:Kt,sx:yt,sy:xt,name:F.name},Wt=this._render_tooltips(Je,Ht,dt);Rt.push([yt,xt,Wt])}for(const Ht of Ve.indices)if(wt instanceof t.MultiLineView&&!(0,b.isEmpty)(Ve.multiline_indices))for(const dt of Ve.multiline_indices[Ht.toString()]){let Wt,jt,a1,ye=wt._xs.get(Ht)[dt],ie=wt._ys.get(Ht)[dt],nt=dt;switch(this.model.line_policy){case"interp":[ye,ie]=wt.get_interpolation_hit(Ht,dt,W),Wt=r1.compute(ye),jt=t1.compute(ie);break;case"prev":[[Wt,jt],nt]=B(wt.sxs.get(Ht),wt.sys.get(Ht),dt);break;case"next":[[Wt,jt],nt]=B(wt.sxs.get(Ht),wt.sys.get(Ht),dt+1);break;case"nearest":[[Wt,jt],nt]=N(dt,W,yt,xt,wt.sxs.get(Ht),wt.sys.get(Ht)),ye=wt._xs.get(Ht)[nt],ie=wt._ys.get(Ht)[nt];break;default:throw new Error("shouldn't have happened")}a1=F instanceof c.GlyphRenderer?F.view.convert_indices_from_subset([Ht])[0]:Ht;const St={index:a1,x:Bt,y:Kt,sx:yt,sy:xt,data_x:ye,data_y:ie,segment_index:nt,indices:Ve.multiline_indices,name:F.name};Rt.push([Wt,jt,this._render_tooltips(Je,a1,St)])}else{const dt=(U=wt._x)===null||U===void 0?void 0:U[Ht],Wt=(q=wt._y)===null||q===void 0?void 0:q[Ht];let jt,a1,ye;if(this.model.point_policy=="snap_to_data"){let nt=wt.get_anchor_point(this.model.anchor,Ht,[yt,xt]);if(nt==null&&(nt=wt.get_anchor_point("center",Ht,[yt,xt]),nt==null))continue;jt=nt.x,a1=nt.y}else[jt,a1]=[yt,xt];ye=F instanceof c.GlyphRenderer?F.view.convert_indices_from_subset([Ht])[0]:Ht;const ie={index:ye,x:Bt,y:Kt,sx:yt,sy:xt,data_x:dt,data_y:Wt,indices:Ve.indices,name:F.name};Rt.push([jt,a1,this._render_tooltips(Je,ye,ie)])}if(Rt.length==0)X.clear();else{const{content:Ht}=X;(0,m.empty)(X.content);for(const[,,jt]of Rt)jt!=null&&Ht.appendChild(jt);const[dt,Wt]=Rt[Rt.length-1];X.setv({position:[dt,Wt]},{check_eq:!1})}}_emit_callback(F){const{callback:W}=this.model;if(W!=null)for(const U of this.computed_renderers){if(!(U instanceof c.GlyphRenderer))continue;const q=this.plot_view.renderer_view(U);if(q==null)continue;const{x_scale:X,y_scale:ae}=q.coordinates,me=X.invert(F.sx),Ve=ae.invert(F.sy),Je=U.data_source.inspected;W.execute(this.model,{geometry:Object.assign({x:me,y:Ve},F),renderer:U,index:Je})}}_create_template(F){const W=(0,m.div)({style:{display:"table",borderSpacing:"2px"}});for(const[U]of F){const q=(0,m.div)({style:{display:"table-row"}});W.appendChild(q);const X=(0,m.div)({style:{display:"table-cell"},class:E.tooltip_row_label},U.length!=0?`${U}: `:"");q.appendChild(X);const ae=(0,m.span)();ae.dataset.value="";const me=(0,m.span)({class:E.tooltip_color_block}," ");me.dataset.swatch="",(0,m.undisplay)(me);const Ve=(0,m.div)({style:{display:"table-cell"},class:E.tooltip_row_value},ae,me);q.appendChild(Ve)}return W}_render_template(F,W,U,q,X){const ae=F.cloneNode(!0),me=ae.querySelectorAll("[data-value]"),Ve=ae.querySelectorAll("[data-swatch]"),Je=/\$color(\[.*\])?:(\w*)/,rt=/\$swatch:(\w*)/;for(const[[,yt],xt]of(0,y.enumerate)(W)){const r1=yt.match(rt),t1=yt.match(Je);if(r1!=null||t1!=null){if(r1!=null){const[,Bt]=r1,Kt=U.get_column(Bt);if(Kt==null)me[xt].textContent=`${Bt} unknown`;else{const wt=(0,A.isNumber)(q)?Kt[q]:null;wt!=null&&(Ve[xt].style.backgroundColor=(0,f.color2css)(wt),(0,m.display)(Ve[xt]))}}if(t1!=null){const[,Bt="",Kt]=t1,wt=U.get_column(Kt);if(wt==null){me[xt].textContent=`${Kt} unknown`;continue}const Rt=Bt.indexOf("hex")>=0,Ht=Bt.indexOf("swatch")>=0,dt=(0,A.isNumber)(q)?wt[q]:null;if(dt==null){me[xt].textContent="(null)";continue}me[xt].textContent=Rt?(0,f.color2hex)(dt):(0,f.color2css)(dt),Ht&&(Ve[xt].style.backgroundColor=(0,f.color2css)(dt),(0,m.display)(Ve[xt]))}}else{const Bt=(0,d.replace_placeholders)(yt.replace("$~","$data_"),U,q,this.model.formatters,X);if((0,A.isString)(Bt))me[xt].textContent=Bt;else for(const Kt of Bt)me[xt].appendChild(Kt)}}return ae}_render_tooltips(F,W,U){var q;const{tooltips:X}=this.model;if((0,A.isString)(X)){const ae=(0,d.replace_placeholders)({html:X},F,W,this.model.formatters,U);return(0,m.div)(ae)}if((0,A.isFunction)(X))return X(F,U);if(X instanceof P.Template)return this._template_view.update(F,W,U),this._template_view.el;if(X!=null){const ae=(q=this._template_el)!==null&&q!==void 0?q:this._template_el=this._create_template(X);return this._render_template(ae,X,F,W,U)}return null}}e.HoverToolView=D,D.__name__="HoverToolView";class j extends g.InspectTool{constructor(F){super(F),this.tool_name="Hover",this.icon=H.tool_icon_hover}}e.HoverTool=j,w=j,j.__name__="HoverTool",w.prototype.default_view=D,w.define(({Any:M,Boolean:F,String:W,Array:U,Tuple:q,Dict:X,Or:ae,Ref:me,Function:Ve,Auto:Je,Nullable:rt})=>({tooltips:[rt(ae(me(P.Template),W,U(q(W,W)),Ve())),[["index","$index"],["data (x, y)","($x, $y)"],["screen (x, y)","($sx, $sy)"]]],formatters:[X(ae(me(p.CustomJSHover),d.FormatterType)),{}],renderers:[ae(U(me(r.DataRenderer)),Je),"auto"],names:[U(W),[]],mode:[x.HoverMode,"mouse"],muted_policy:[x.MutedPolicy,"show"],point_policy:[x.PointPolicy,"snap_to_data"],line_policy:[x.LinePolicy,"nearest"],show_arrow:[F,!0],anchor:[x.Anchor,"center"],attachment:[x.TooltipAttachment,"horizontal"],callback:[rt(M)]})),w.register_alias("hover",()=>new j)},function(Q,O,e,C,R){C();const v=Q(1);var w,g,p,T,c,o,r,i,t,s,a,u,l;const d=Q(53),m=Q(309),f=Q(393);R("Styles",f.Styles);const b=Q(43),y=Q(42),A=Q(226),L=Q(113),x=Q(8),H=Q(13),S=(0,v.__importStar)(Q(242)),k=Q(152);class E extends A.DOMView{}e.DOMNodeView=E,E.__name__="DOMNodeView";class P extends d.Model{constructor(ie){super(ie)}}e.DOMNode=P,P.__name__="DOMNode",P.__module__="bokeh.models.dom";class N extends E{render(){super.render(),this.el.textContent=this.model.content}_createElement(){return document.createTextNode("")}}e.TextView=N,N.__name__="TextView";class B extends P{constructor(ie){super(ie)}}e.Text=B,w=B,B.__name__="Text",w.prototype.default_view=N,w.define(({String:ye})=>({content:[ye,""]}));class D extends E{}e.PlaceholderView=D,D.__name__="PlaceholderView",D.tag_name="span";class j extends P{constructor(ie){super(ie)}}e.Placeholder=j,g=j,j.__name__="Placeholder",g.define(({})=>({}));class M extends D{update(ie,nt,St){this.el.textContent=nt.toString()}}e.IndexView=M,M.__name__="IndexView";class F extends j{constructor(ie){super(ie)}}e.Index=F,p=F,F.__name__="Index",p.prototype.default_view=M,p.define(({})=>({}));class W extends D{update(ie,nt,St){const mt=(0,k._get_column_value)(this.model.field,ie,nt),Pt=mt==null?"???":`${mt}`;this.el.textContent=Pt}}e.ValueRefView=W,W.__name__="ValueRefView";class U extends j{constructor(ie){super(ie)}}e.ValueRef=U,T=U,U.__name__="ValueRef",T.prototype.default_view=W,T.define(({String:ye})=>({field:[ye]}));class q extends W{render(){super.render(),this.value_el=(0,b.span)(),this.swatch_el=(0,b.span)({class:S.tooltip_color_block}," "),this.el.appendChild(this.value_el),this.el.appendChild(this.swatch_el)}update(ie,nt,St){const mt=(0,k._get_column_value)(this.model.field,ie,nt),Pt=mt==null?"???":`${mt}`;this.el.textContent=Pt}}e.ColorRefView=q,q.__name__="ColorRefView";class X extends U{constructor(ie){super(ie)}}e.ColorRef=X,c=X,X.__name__="ColorRef",c.prototype.default_view=q,c.define(({Boolean:ye})=>({hex:[ye,!0],swatch:[ye,!0]}));class ae extends E{constructor(){super(...arguments),this.child_views=new Map}async lazy_initialize(){await super.lazy_initialize();const ie=this.model.children.filter(nt=>nt instanceof d.Model);await(0,L.build_views)(this.child_views,ie,{parent:this})}render(){super.render();const{style:ie}=this.model;if(ie!=null)if(ie instanceof f.Styles)for(const nt of ie){const St=nt.get_value();if((0,x.isString)(St)){const mt=nt.attr.replace(/_/g,"-");this.el.style.hasOwnProperty(mt)&&this.el.style.setProperty(mt,St)}}else for(const[nt,St]of(0,H.entries)(ie)){const mt=nt.replace(/_/g,"-");this.el.style.hasOwnProperty(mt)&&this.el.style.setProperty(mt,St)}for(const nt of this.model.children)if((0,x.isString)(nt)){const St=document.createTextNode(nt);this.el.appendChild(St)}else this.child_views.get(nt).renderTo(this.el)}}e.DOMElementView=ae,ae.__name__="DOMElementView";class me extends P{constructor(ie){super(ie)}}e.DOMElement=me,o=me,me.__name__="DOMElement",o.define(({String:ye,Array:ie,Dict:nt,Or:St,Nullable:mt,Ref:Pt})=>({style:[mt(St(Pt(f.Styles),nt(ye))),null],children:[ie(St(ye,Pt(P),Pt(m.LayoutDOM))),[]]}));class Ve extends y.View{}e.ActionView=Ve,Ve.__name__="ActionView";class Je extends d.Model{constructor(ie){super(ie)}}e.Action=Je,r=Je,Je.__name__="Action",Je.__module__="bokeh.models.dom",r.define(({})=>({}));class rt extends ae{constructor(){super(...arguments),this.action_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await(0,L.build_views)(this.action_views,this.model.actions,{parent:this})}remove(){(0,L.remove_views)(this.action_views),super.remove()}update(ie,nt,St={}){(function mt(Pt){for(const Xt of Pt.child_views.values())Xt instanceof D?Xt.update(ie,nt,St):Xt instanceof ae&&mt(Xt)})(this);for(const mt of this.action_views.values())mt.update(ie,nt,St)}}e.TemplateView=rt,rt.__name__="TemplateView",rt.tag_name="div";class yt extends me{}e.Template=yt,i=yt,yt.__name__="Template",i.prototype.default_view=rt,i.define(({Array:ye,Ref:ie})=>({actions:[ye(ie(Je)),[]]}));class xt extends ae{}e.SpanView=xt,xt.__name__="SpanView",xt.tag_name="span";class r1 extends me{}e.Span=r1,t=r1,r1.__name__="Span",t.prototype.default_view=xt;class t1 extends ae{}e.DivView=t1,t1.__name__="DivView",t1.tag_name="div";class Bt extends me{}e.Div=Bt,s=Bt,Bt.__name__="Div",s.prototype.default_view=t1;class Kt extends ae{}e.TableView=Kt,Kt.__name__="TableView",Kt.tag_name="table";class wt extends me{}e.Table=wt,a=wt,wt.__name__="Table",a.prototype.default_view=Kt;class Rt extends ae{}e.TableRowView=Rt,Rt.__name__="TableRowView",Rt.tag_name="tr";class Ht extends me{}e.TableRow=Ht,u=Ht,Ht.__name__="TableRow",u.prototype.default_view=Rt;const dt=Q(41),Wt=Q(234);class jt extends Ve{update(ie,nt,St){for(const[mt,Pt]of(0,Wt.enumerate)(this.model.groups))mt.visible=nt==Pt}}e.ToggleGroupView=jt,jt.__name__="ToggleGroupView";class a1 extends Je{constructor(ie){super(ie)}}e.ToggleGroup=a1,l=a1,a1.__name__="ToggleGroup",l.prototype.default_view=jt,l.define(({Array:ye,Ref:ie})=>({groups:[ye(ie(dt.RendererGroup)),[]]}))},function(V,Q,O,e,C){var R;e();const v=V(53);class w extends v.Model{constructor(p){super(p)}}O.Styles=w,R=w,w.__name__="Styles",w.__module__="bokeh.models.css",R.define(({String:g,Nullable:p})=>({align_content:[p(g),null],align_items:[p(g),null],align_self:[p(g),null],alignment_baseline:[p(g),null],all:[p(g),null],animation:[p(g),null],animation_delay:[p(g),null],animation_direction:[p(g),null],animation_duration:[p(g),null],animation_fill_mode:[p(g),null],animation_iteration_count:[p(g),null],animation_name:[p(g),null],animation_play_state:[p(g),null],animation_timing_function:[p(g),null],backface_visibility:[p(g),null],background:[p(g),null],background_attachment:[p(g),null],background_clip:[p(g),null],background_color:[p(g),null],background_image:[p(g),null],background_origin:[p(g),null],background_position:[p(g),null],background_position_x:[p(g),null],background_position_y:[p(g),null],background_repeat:[p(g),null],background_size:[p(g),null],baseline_shift:[p(g),null],block_size:[p(g),null],border:[p(g),null],border_block_end:[p(g),null],border_block_end_color:[p(g),null],border_block_end_style:[p(g),null],border_block_end_width:[p(g),null],border_block_start:[p(g),null],border_block_start_color:[p(g),null],border_block_start_style:[p(g),null],border_block_start_width:[p(g),null],border_bottom:[p(g),null],border_bottom_color:[p(g),null],border_bottom_left_radius:[p(g),null],border_bottom_right_radius:[p(g),null],border_bottom_style:[p(g),null],border_bottom_width:[p(g),null],border_collapse:[p(g),null],border_color:[p(g),null],border_image:[p(g),null],border_image_outset:[p(g),null],border_image_repeat:[p(g),null],border_image_slice:[p(g),null],border_image_source:[p(g),null],border_image_width:[p(g),null],border_inline_end:[p(g),null],border_inline_end_color:[p(g),null],border_inline_end_style:[p(g),null],border_inline_end_width:[p(g),null],border_inline_start:[p(g),null],border_inline_start_color:[p(g),null],border_inline_start_style:[p(g),null],border_inline_start_width:[p(g),null],border_left:[p(g),null],border_left_color:[p(g),null],border_left_style:[p(g),null],border_left_width:[p(g),null],border_radius:[p(g),null],border_right:[p(g),null],border_right_color:[p(g),null],border_right_style:[p(g),null],border_right_width:[p(g),null],border_spacing:[p(g),null],border_style:[p(g),null],border_top:[p(g),null],border_top_color:[p(g),null],border_top_left_radius:[p(g),null],border_top_right_radius:[p(g),null],border_top_style:[p(g),null],border_top_width:[p(g),null],border_width:[p(g),null],bottom:[p(g),null],box_shadow:[p(g),null],box_sizing:[p(g),null],break_after:[p(g),null],break_before:[p(g),null],break_inside:[p(g),null],caption_side:[p(g),null],caret_color:[p(g),null],clear:[p(g),null],clip:[p(g),null],clip_path:[p(g),null],clip_rule:[p(g),null],color:[p(g),null],color_interpolation:[p(g),null],color_interpolation_filters:[p(g),null],column_count:[p(g),null],column_fill:[p(g),null],column_gap:[p(g),null],column_rule:[p(g),null],column_rule_color:[p(g),null],column_rule_style:[p(g),null],column_rule_width:[p(g),null],column_span:[p(g),null],column_width:[p(g),null],columns:[p(g),null],content:[p(g),null],counter_increment:[p(g),null],counter_reset:[p(g),null],css_float:[p(g),null],css_text:[p(g),null],cursor:[p(g),null],direction:[p(g),null],display:[p(g),null],dominant_baseline:[p(g),null],empty_cells:[p(g),null],fill:[p(g),null],fill_opacity:[p(g),null],fill_rule:[p(g),null],filter:[p(g),null],flex:[p(g),null],flex_basis:[p(g),null],flex_direction:[p(g),null],flex_flow:[p(g),null],flex_grow:[p(g),null],flex_shrink:[p(g),null],flex_wrap:[p(g),null],float:[p(g),null],flood_color:[p(g),null],flood_opacity:[p(g),null],font:[p(g),null],font_family:[p(g),null],font_feature_settings:[p(g),null],font_kerning:[p(g),null],font_size:[p(g),null],font_size_adjust:[p(g),null],font_stretch:[p(g),null],font_style:[p(g),null],font_synthesis:[p(g),null],font_variant:[p(g),null],font_variant_caps:[p(g),null],font_variant_east_asian:[p(g),null],font_variant_ligatures:[p(g),null],font_variant_numeric:[p(g),null],font_variant_position:[p(g),null],font_weight:[p(g),null],gap:[p(g),null],glyph_orientation_vertical:[p(g),null],grid:[p(g),null],grid_area:[p(g),null],grid_auto_columns:[p(g),null],grid_auto_flow:[p(g),null],grid_auto_rows:[p(g),null],grid_column:[p(g),null],grid_column_end:[p(g),null],grid_column_gap:[p(g),null],grid_column_start:[p(g),null],grid_gap:[p(g),null],grid_row:[p(g),null],grid_row_end:[p(g),null],grid_row_gap:[p(g),null],grid_row_start:[p(g),null],grid_template:[p(g),null],grid_template_areas:[p(g),null],grid_template_columns:[p(g),null],grid_template_rows:[p(g),null],height:[p(g),null],hyphens:[p(g),null],image_orientation:[p(g),null],image_rendering:[p(g),null],inline_size:[p(g),null],justify_content:[p(g),null],justify_items:[p(g),null],justify_self:[p(g),null],left:[p(g),null],letter_spacing:[p(g),null],lighting_color:[p(g),null],line_break:[p(g),null],line_height:[p(g),null],list_style:[p(g),null],list_style_image:[p(g),null],list_style_position:[p(g),null],list_style_type:[p(g),null],margin:[p(g),null],margin_block_end:[p(g),null],margin_block_start:[p(g),null],margin_bottom:[p(g),null],margin_inline_end:[p(g),null],margin_inline_start:[p(g),null],margin_left:[p(g),null],margin_right:[p(g),null],margin_top:[p(g),null],marker:[p(g),null],marker_end:[p(g),null],marker_mid:[p(g),null],marker_start:[p(g),null],mask:[p(g),null],mask_composite:[p(g),null],mask_image:[p(g),null],mask_position:[p(g),null],mask_repeat:[p(g),null],mask_size:[p(g),null],mask_type:[p(g),null],max_block_size:[p(g),null],max_height:[p(g),null],max_inline_size:[p(g),null],max_width:[p(g),null],min_block_size:[p(g),null],min_height:[p(g),null],min_inline_size:[p(g),null],min_width:[p(g),null],object_fit:[p(g),null],object_position:[p(g),null],opacity:[p(g),null],order:[p(g),null],orphans:[p(g),null],outline:[p(g),null],outline_color:[p(g),null],outline_offset:[p(g),null],outline_style:[p(g),null],outline_width:[p(g),null],overflow:[p(g),null],overflow_anchor:[p(g),null],overflow_wrap:[p(g),null],overflow_x:[p(g),null],overflow_y:[p(g),null],overscroll_behavior:[p(g),null],overscroll_behavior_block:[p(g),null],overscroll_behavior_inline:[p(g),null],overscroll_behavior_x:[p(g),null],overscroll_behavior_y:[p(g),null],padding:[p(g),null],padding_block_end:[p(g),null],padding_block_start:[p(g),null],padding_bottom:[p(g),null],padding_inline_end:[p(g),null],padding_inline_start:[p(g),null],padding_left:[p(g),null],padding_right:[p(g),null],padding_top:[p(g),null],page_break_after:[p(g),null],page_break_before:[p(g),null],page_break_inside:[p(g),null],paint_order:[p(g),null],perspective:[p(g),null],perspective_origin:[p(g),null],place_content:[p(g),null],place_items:[p(g),null],place_self:[p(g),null],pointer_events:[p(g),null],position:[p(g),null],quotes:[p(g),null],resize:[p(g),null],right:[p(g),null],rotate:[p(g),null],row_gap:[p(g),null],ruby_align:[p(g),null],ruby_position:[p(g),null],scale:[p(g),null],scroll_behavior:[p(g),null],shape_rendering:[p(g),null],stop_color:[p(g),null],stop_opacity:[p(g),null],stroke:[p(g),null],stroke_dasharray:[p(g),null],stroke_dashoffset:[p(g),null],stroke_linecap:[p(g),null],stroke_linejoin:[p(g),null],stroke_miterlimit:[p(g),null],stroke_opacity:[p(g),null],stroke_width:[p(g),null],tab_size:[p(g),null],table_layout:[p(g),null],text_align:[p(g),null],text_align_last:[p(g),null],text_anchor:[p(g),null],text_combine_upright:[p(g),null],text_decoration:[p(g),null],text_decoration_color:[p(g),null],text_decoration_line:[p(g),null],text_decoration_style:[p(g),null],text_emphasis:[p(g),null],text_emphasis_color:[p(g),null],text_emphasis_position:[p(g),null],text_emphasis_style:[p(g),null],text_indent:[p(g),null],text_justify:[p(g),null],text_orientation:[p(g),null],text_overflow:[p(g),null],text_rendering:[p(g),null],text_shadow:[p(g),null],text_transform:[p(g),null],text_underline_position:[p(g),null],top:[p(g),null],touch_action:[p(g),null],transform:[p(g),null],transform_box:[p(g),null],transform_origin:[p(g),null],transform_style:[p(g),null],transition:[p(g),null],transition_delay:[p(g),null],transition_duration:[p(g),null],transition_property:[p(g),null],transition_timing_function:[p(g),null],translate:[p(g),null],unicode_bidi:[p(g),null],user_select:[p(g),null],vertical_align:[p(g),null],visibility:[p(g),null],white_space:[p(g),null],widows:[p(g),null],width:[p(g),null],will_change:[p(g),null],word_break:[p(g),null],word_spacing:[p(g),null],word_wrap:[p(g),null],writing_mode:[p(g),null],z_index:[p(g),null]}))},function(Q,O,e,C,R){var v;C();const w=Q(15),g=Q(53),p=Q(224),T=Q(232),c=Q(234);class o extends g.Model{constructor(i){super(i)}get button_view(){return this.tools[0].button_view}get event_type(){return this.tools[0].event_type}get tooltip(){return this.tools[0].tooltip}get tool_name(){return this.tools[0].tool_name}get icon(){return this.tools[0].computed_icon}get computed_icon(){return this.icon}get toggleable(){const i=this.tools[0];return i instanceof T.InspectTool&&i.toggleable}initialize(){super.initialize(),this.do=new w.Signal0(this,"do")}connect_signals(){super.connect_signals(),this.connect(this.do,()=>this.doit()),this.connect(this.properties.active.change,()=>this.set_active());for(const i of this.tools)this.connect(i.properties.active.change,()=>{this.active=i.active})}doit(){for(const i of this.tools)i.do.emit()}set_active(){for(const i of this.tools)i.active=this.active}get menu(){const{menu:i}=this.tools[0];if(i==null)return null;const t=[];for(const[s,a]of(0,c.enumerate)(i))if(s==null)t.push(null);else{const u=()=>{var l,d,m;for(const f of this.tools)(m=(d=(l=f.menu)===null||l===void 0?void 0:l[a])===null||d===void 0?void 0:d.handler)===null||m===void 0||m.call(d)};t.push(Object.assign(Object.assign({},s),{handler:u}))}return t}}e.ToolProxy=o,v=o,o.__name__="ToolProxy",v.define(({Boolean:r,Array:i,Ref:t})=>({tools:[i(t(p.ButtonTool)),[]],active:[r,!1],disabled:[r,!1]}))},function(Q,O,e,C,R){var v,w;C();const g=Q(20),p=Q(9),T=Q(13),c=Q(233),o=Q(221),r=Q(394),i=Q(309),t=Q(207);class s extends c.ToolbarBase{constructor(d){super(d)}initialize(){super.initialize(),this._merge_tools()}_merge_tools(){this._proxied_tools=[];const d={},m={},f={},b=[],y=[];for(const L of this.help)(0,p.includes)(y,L.redirect)||(b.push(L),y.push(L.redirect));this._proxied_tools.push(...b),this.help=b;for(const[L,x]of(0,T.entries)(this.gestures)){L in f||(f[L]={});for(const H of x.tools)H.type in f[L]||(f[L][H.type]=[]),f[L][H.type].push(H)}for(const L of this.inspectors)L.type in d||(d[L.type]=[]),d[L.type].push(L);for(const L of this.actions)L.type in m||(m[L.type]=[]),m[L.type].push(L);const A=(L,x=!1)=>{const H=new r.ToolProxy({tools:L,active:x});return this._proxied_tools.push(H),H};for(const L of(0,T.keys)(f)){const x=this.gestures[L];x.tools=[];for(const H of(0,T.keys)(f[L])){const S=f[L][H];if(S.length>0)if(L=="multi")for(const k of S){const E=A([k]);x.tools.push(E),this.connect(E.properties.active.change,()=>this._active_change(E))}else{const k=A(S);x.tools.push(k),this.connect(k.properties.active.change,()=>this._active_change(k))}}}this.actions=[];for(const[L,x]of(0,T.entries)(m))if(L=="CustomAction")for(const H of x)this.actions.push(A([H]));else x.length>0&&this.actions.push(A(x));this.inspectors=[];for(const L of(0,T.values)(d))L.length>0&&this.inspectors.push(A(L,!0));for(const[L,x]of(0,T.entries)(this.gestures))x.tools.length!=0&&(x.tools=(0,p.sort_by)(x.tools,H=>H.default_order),L!="pinch"&&L!="scroll"&&L!="multi"&&(x.tools[0].active=!0))}}e.ProxyToolbar=s,v=s,s.__name__="ProxyToolbar",v.define(({Array:l,Ref:d})=>({toolbars:[l(d(o.Toolbar)),[]]}));class a extends i.LayoutDOMView{initialize(){this.model.toolbar.toolbar_location=this.model.toolbar_location,super.initialize()}get child_models(){return[this.model.toolbar]}_update_layout(){this.layout=new t.ContentBox(this.child_views[0].el);const{toolbar:d}=this.model;d.horizontal?this.layout.set_sizing({width_policy:"fit",min_width:100,height_policy:"fixed"}):this.layout.set_sizing({width_policy:"fixed",height_policy:"fit",min_height:100})}after_layout(){super.after_layout();const d=this.child_views[0];d.layout.bbox=this.layout.bbox,d.render()}}e.ToolbarBoxView=a,a.__name__="ToolbarBoxView";class u extends i.LayoutDOM{constructor(d){super(d)}}e.ToolbarBox=u,w=u,u.__name__="ToolbarBox",w.prototype.default_view=a,w.define(({Ref:l})=>({toolbar:[l(c.ToolbarBase)],toolbar_location:[g.Location,"right"]}))},function(Q,O,e,C,R){C();const v=Q(1),w=Q(53),g=(0,v.__importStar)(Q(21)),p=Q(8),T=Q(13);e.resolve_defs=function(c,o){var r,i,t,s;function a(l){return l.module!=null?`${l.module}.${l.name}`:l.name}function u(l){if((0,p.isString)(l))switch(l){case"Any":return g.Any;case"Unknown":return g.Unknown;case"Boolean":return g.Boolean;case"Number":return g.Number;case"Int":return g.Int;case"String":return g.String;case"Null":return g.Null}else switch(l[0]){case"Nullable":{const[,d]=l;return g.Nullable(u(d))}case"Or":{const[,...d]=l;return g.Or(...d.map(u))}case"Tuple":{const[,d,...m]=l;return g.Tuple(u(d),...m.map(u))}case"Array":{const[,d]=l;return g.Array(u(d))}case"Struct":{const[,...d]=l,m=d.map(([f,b])=>[f,u(b)]);return g.Struct((0,T.to_object)(m))}case"Dict":{const[,d]=l;return g.Dict(u(d))}case"Map":{const[,d,m]=l;return g.Map(u(d),u(m))}case"Enum":{const[,...d]=l;return g.Enum(...d)}case"Ref":{const[,d]=l,m=o.get(a(d));if(m!=null)return g.Ref(m);throw new Error(`${a(d)} wasn't defined before referencing it`)}case"AnyRef":return g.AnyRef()}}for(const l of c){const d=(()=>{if(l.extends==null)return w.Model;{const f=o.get(a(l.extends));if(f!=null)return f;throw new Error(`base model ${a(l.extends)} of ${a(l)} is not defined`)}})(),m=((s=class extends d{}).__name__=l.name,s.__module__=l.module,s);for(const f of(r=l.properties)!==null&&r!==void 0?r:[]){const b=u((i=f.kind)!==null&&i!==void 0?i:"Unknown");m.define({[f.name]:[b,f.default]})}for(const f of(t=l.overrides)!==null&&t!==void 0?t:[])m.override({[f.name]:f.default});o.register(m)}}},function(Q,O,e,C,R){C();const v=Q(5),w=Q(226),g=Q(113),p=Q(43),T=Q(398);e.index={},e.add_document_standalone=async function(c,o,r=[],i=!1){const t=new Map;async function s(a){let u;const l=c.roots().indexOf(a),d=r[l];d!=null?u=d:o.classList.contains(T.BOKEH_ROOT)?u=o:(u=(0,p.div)({class:T.BOKEH_ROOT}),o.appendChild(u));const m=await(0,g.build_view)(a,{parent:null});return m instanceof w.DOMView&&m.renderTo(u),t.set(a,m),e.index[a.id]=m,m}for(const a of c.roots())await s(a);return i&&(window.document.title=c.title()),c.on_change(a=>{a instanceof v.RootAddedEvent?s(a.model):a instanceof v.RootRemovedEvent?function(u){const l=t.get(u);l!=null&&(l.remove(),t.delete(u),delete e.index[u.id])}(a.model):i&&a instanceof v.TitleChangedEvent&&(window.document.title=a.title)}),[...t.values()]}},function(Q,O,e,C,R){C();const v=Q(43),w=Q(44);function g(p){let T=document.getElementById(p);if(T==null)throw new Error(`Error rendering Bokeh model: could not find #${p} HTML tag`);if(!document.body.contains(T))throw new Error(`Error rendering Bokeh model: element #${p} must be under <body>`);if(T.tagName=="SCRIPT"){const c=(0,v.div)({class:e.BOKEH_ROOT});(0,v.replaceWith)(T,c),T=c}return T}e.BOKEH_ROOT=w.root,e._resolve_element=function(p){const{elementid:T}=p;return T!=null?g(T):document.body},e._resolve_root_elements=function(p){const T=[];if(p.root_ids!=null&&p.roots!=null)for(const c of p.root_ids)T.push(g(p.roots[c]));return T}},function(Q,O,e,C,R){C();const v=Q(400),w=Q(19),g=Q(397);e._get_ws_url=function(T,c){let o,r="ws:";return window.location.protocol=="https:"&&(r="wss:"),c!=null?(o=document.createElement("a"),o.href=c):o=window.location,T!=null?T=="/"&&(T=""):T=o.pathname.replace(/\/+$/,""),`${r}//${o.host}${T}/ws`};const p={};e.add_document_from_session=async function(T,c,o,r=[],i=!1){const t=window.location.search.substr(1);let s;try{s=await function(a,u,l){const d=(0,v.parse_token)(u).session_id;a in p||(p[a]={});const m=p[a];return d in m||(m[d]=(0,v.pull_session)(a,u,l)),m[d]}(T,c,t)}catch(a){const u=(0,v.parse_token)(c).session_id;throw w.logger.error(`Failed to load Bokeh session ${u}: ${a}`),a}return(0,g.add_document_standalone)(s.document,o,r,i)}},function(Q,O,e,C,R){C();const v=Q(19),w=Q(5),g=Q(401),p=Q(402),T=Q(403);e.DEFAULT_SERVER_WEBSOCKET_URL="ws://localhost:5006/ws",e.DEFAULT_TOKEN="eyJzZXNzaW9uX2lkIjogImRlZmF1bHQifQ";let c=0;function o(i){let t=i.split(".")[0];const s=t.length%4;return s!=0&&(t+="=".repeat(4-s)),JSON.parse(atob(t.replace(/_/g,"/").replace(/-/g,"+")))}e.parse_token=o;class r{constructor(t=e.DEFAULT_SERVER_WEBSOCKET_URL,s=e.DEFAULT_TOKEN,a=null){this.url=t,this.token=s,this.args_string=a,this._number=c++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_replies=new Map,this._pending_messages=[],this._receiver=new p.Receiver,this.id=o(s).session_id.split(".")[0],v.logger.debug(`Creating websocket ${this._number} to '${this.url}' session '${this.id}'`)}async connect(){if(this.closed_permanently)throw new Error("Cannot connect() a closed ClientConnection");if(this.socket!=null)throw new Error("Already connected");this._current_handler=null,this._pending_replies.clear(),this._pending_messages=[];try{let t=`${this.url}`;return this.args_string!=null&&this.args_string.length>0&&(t+=`?${this.args_string}`),this.socket=new WebSocket(t,["bokeh",this.token]),new Promise((s,a)=>{this.socket.binaryType="arraybuffer",this.socket.onopen=()=>this._on_open(s,a),this.socket.onmessage=u=>this._on_message(u),this.socket.onclose=u=>this._on_close(u,a),this.socket.onerror=()=>this._on_error(a)})}catch(t){throw v.logger.error(`websocket creation failed to url: ${this.url}`),v.logger.error(` - ${t}`),t}}close(){this.closed_permanently||(v.logger.debug(`Permanently closing websocket connection ${this._number}`),this.closed_permanently=!0,this.socket!=null&&this.socket.close(1e3,`close method called on ClientConnection ${this._number}`),this.session._connection_closed())}_schedule_reconnect(t){setTimeout(()=>{this.closed_permanently||v.logger.info(`Websocket connection ${this._number} disconnected, will not attempt to reconnect`)},t)}send(t){if(this.socket==null)throw new Error(`not connected so cannot send ${t}`);t.send(this.socket)}async send_with_reply(t){const s=await new Promise((a,u)=>{this._pending_replies.set(t.msgid(),{resolve:a,reject:u}),this.send(t)});if(s.msgtype()==="ERROR")throw new Error(`Error reply ${s.content.text}`);return s}async _pull_doc_json(){const t=g.Message.create("PULL-DOC-REQ",{}),s=await this.send_with_reply(t);if(!("doc"in s.content))throw new Error("No 'doc' field in PULL-DOC-REPLY");return s.content.doc}async _repull_session_doc(t,s){var a;v.logger.debug(this.session?"Repulling session":"Pulling session for first time");try{const u=await this._pull_doc_json();if(this.session==null)if(this.closed_permanently)v.logger.debug("Got new document after connection was already closed"),s(new Error("The connection has been closed"));else{const l=w.Document.from_json(u),d=w.Document._compute_patch_since_json(u,l);if(d.events.length>0){v.logger.debug(`Sending ${d.events.length} changes from model construction back to server`);const m=g.Message.create("PATCH-DOC",{},d);this.send(m)}this.session=new T.ClientSession(this,l,this.id);for(const m of this._pending_messages)this.session.handle(m);this._pending_messages=[],v.logger.debug("Created a new session from new pulled doc"),t(this.session)}else this.session.document.replace_with_json(u),v.logger.debug("Updated existing session with new pulled doc")}catch(u){(a=console.trace)===null||a===void 0||a.call(console,u),v.logger.error(`Failed to repull session ${u}`),s(u instanceof Error?u:`${u}`)}}_on_open(t,s){v.logger.info(`Websocket connection ${this._number} is now open`),this._current_handler=a=>{this._awaiting_ack_handler(a,t,s)}}_on_message(t){this._current_handler==null&&v.logger.error("Got a message with no current handler set");try{this._receiver.consume(t.data)}catch(a){this._close_bad_protocol(`${a}`)}const s=this._receiver.message;if(s!=null){const a=s.problem();a!=null&&this._close_bad_protocol(a),this._current_handler(s)}}_on_close(t,s){v.logger.info(`Lost websocket ${this._number} connection, ${t.code} (${t.reason})`),this.socket=null,this._pending_replies.forEach(a=>a.reject("Disconnected")),this._pending_replies.clear(),this.closed_permanently||this._schedule_reconnect(2e3),s(new Error(`Lost websocket connection, ${t.code} (${t.reason})`))}_on_error(t){v.logger.debug(`Websocket error on socket ${this._number}`);const s="Could not open websocket";v.logger.error(`Failed to connect to Bokeh server: ${s}`),t(new Error(s))}_close_bad_protocol(t){v.logger.error(`Closing connection: ${t}`),this.socket!=null&&this.socket.close(1002,t)}_awaiting_ack_handler(t,s,a){t.msgtype()==="ACK"?(this._current_handler=u=>this._steady_state_handler(u),this._repull_session_doc(s,a)):this._close_bad_protocol("First message was not an ACK")}_steady_state_handler(t){const s=t.reqid(),a=this._pending_replies.get(s);a?(this._pending_replies.delete(s),a.resolve(t)):this.session?this.session.handle(t):t.msgtype()!="PATCH-DOC"&&this._pending_messages.push(t)}}e.ClientConnection=r,r.__name__="ClientConnection",e.pull_session=function(i,t,s){return new r(i,t,s).connect()}},function(Q,O,e,C,R){C();const v=Q(34);class w{constructor(p,T,c){this.header=p,this.metadata=T,this.content=c,this.buffers=new Map}static assemble(p,T,c){const o=JSON.parse(p),r=JSON.parse(T),i=JSON.parse(c);return new w(o,r,i)}assemble_buffer(p,T){const c=this.header.num_buffers!=null?this.header.num_buffers:0;if(c<=this.buffers.size)throw new Error(`too many buffers received, expecting ${c}`);const{id:o}=JSON.parse(p);this.buffers.set(o,T)}static create(p,T,c={}){const o=w.create_header(p);return new w(o,T,c)}static create_header(p){return{msgid:(0,v.uniqueId)(),msgtype:p}}complete(){return this.header!=null&&this.metadata!=null&&this.content!=null&&(this.header.num_buffers==null||this.buffers.size==this.header.num_buffers)}send(p){if((this.header.num_buffers!=null?this.header.num_buffers:0)>0)throw new Error("BokehJS only supports receiving buffers, not sending");const T=JSON.stringify(this.header),c=JSON.stringify(this.metadata),o=JSON.stringify(this.content);p.send(T),p.send(c),p.send(o)}msgid(){return this.header.msgid}msgtype(){return this.header.msgtype}reqid(){return this.header.reqid}problem(){return"msgid"in this.header?"msgtype"in this.header?null:"No msgtype in header":"No msgid in header"}}e.Message=w,w.__name__="Message"},function(V,Q,O,e,C){e();const R=V(401),v=V(8);class w{constructor(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}consume(p){this._current_consumer(p)}_HEADER(p){this._assume_text(p),this.message=null,this._partial=null,this._fragments=[p],this._buf_header=null,this._current_consumer=this._METADATA}_METADATA(p){this._assume_text(p),this._fragments.push(p),this._current_consumer=this._CONTENT}_CONTENT(p){this._assume_text(p),this._fragments.push(p);const[T,c,o]=this._fragments.slice(0,3);this._partial=R.Message.assemble(T,c,o),this._check_complete()}_BUFFER_HEADER(p){this._assume_text(p),this._buf_header=p,this._current_consumer=this._BUFFER_PAYLOAD}_BUFFER_PAYLOAD(p){this._assume_binary(p),this._partial.assemble_buffer(this._buf_header,p),this._check_complete()}_assume_text(p){if(!(0,v.isString)(p))throw new Error("Expected text fragment but received binary fragment")}_assume_binary(p){if(!(p instanceof ArrayBuffer))throw new Error("Expected binary fragment but received text fragment")}_check_complete(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER}}O.Receiver=w,w.__name__="Receiver"},function(Q,O,e,C,R){C();const v=Q(5),w=Q(401),g=Q(19);class p{constructor(c,o,r){this._connection=c,this.document=o,this.id=r,this._document_listener=i=>{this._document_changed(i)},this.document.on_change(this._document_listener,!0)}handle(c){const o=c.msgtype();o==="PATCH-DOC"?this._handle_patch(c):o==="OK"?this._handle_ok(c):o==="ERROR"?this._handle_error(c):g.logger.debug(`Doing nothing with message ${c.msgtype()}`)}close(){this._connection.close()}_connection_closed(){this.document.remove_on_change(this._document_listener)}async request_server_info(){const c=w.Message.create("SERVER-INFO-REQ",{});return(await this._connection.send_with_reply(c)).content}async force_roundtrip(){await this.request_server_info()}_document_changed(c){if(c.setter_id===this.id)return;const o=c instanceof v.DocumentEventBatch?c.events:[c],r=this.document.create_json_patch(o),i=w.Message.create("PATCH-DOC",{},r);this._connection.send(i)}_handle_patch(c){this.document.apply_json_patch(c.content,c.buffers,this.id)}_handle_ok(c){g.logger.trace(`Unhandled OK reply to ${c.reqid()}`)}_handle_error(c){g.logger.error(`Unhandled ERROR reply to ${c.reqid()}: ${c.content.text}`)}}e.ClientSession=p,p.__name__="ClientSession"},function(Q,O,e,C,R){C();const v=Q(1),w=Q(5),g=Q(402),p=Q(19),T=Q(43),c=Q(13),o=Q(397),r=Q(398),i=(0,v.__importDefault)(Q(44)),t=(0,v.__importDefault)(Q(240)),s=(0,v.__importDefault)(Q(405));function a(l,d){d.buffers.length>0?l.consume(d.buffers[0].buffer):l.consume(d.content.data);const m=l.message;m!=null&&this.apply_json_patch(m.content,m.buffers)}function u(l,d){if(typeof Jupyter<"u"&&Jupyter.notebook.kernel!=null){p.logger.info(`Registering Jupyter comms for target ${l}`);const m=Jupyter.notebook.kernel.comm_manager;try{m.register_target(l,f=>{p.logger.info(`Registering Jupyter comms for target ${l}`);const b=new g.Receiver;f.on_msg(a.bind(d,b))})}catch(f){p.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${f})`)}}else if(d.roots()[0].id in e.kernels){p.logger.info(`Registering JupyterLab comms for target ${l}`);const m=e.kernels[d.roots()[0].id];try{m.registerCommTarget(l,f=>{p.logger.info(`Registering JupyterLab comms for target ${l}`);const b=new g.Receiver;f.onMsg=a.bind(d,b)})}catch(f){p.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${f})`)}}else if(typeof google<"u"&&google.colab.kernel!=null){p.logger.info(`Registering Google Colab comms for target ${l}`);const m=google.colab.kernel.comms;try{m.registerTarget(l,async f=>{var b,y,A;p.logger.info(`Registering Google Colab comms for target ${l}`);const L=new g.Receiver;try{for(var x,H=(0,v.__asyncValues)(f.messages);!(x=await H.next()).done;){const S=x.value,k={data:S.data},E=[];for(const N of(A=S.buffers)!==null&&A!==void 0?A:[])E.push(new DataView(N));const P={content:k,buffers:E};a.bind(d)(L,P)}}catch(S){b={error:S}}finally{try{x&&!x.done&&(y=H.return)&&await y.call(H)}finally{if(b)throw b.error}}})}catch(f){p.logger.warn(`Google Colab comms failed to register. push_notebook() will not function. (exception reported: ${f})`)}}else console.warn("Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest @bokeh/jupyter_bokeh extension is installed. In an exported notebook this warning is expected.")}T.stylesheet.append(i.default),T.stylesheet.append(t.default),T.stylesheet.append(s.default),e.kernels={},e.embed_items_notebook=function(l,d){if((0,c.size)(l)!=1)throw new Error("embed_items_notebook expects exactly one document in docs_json");const m=w.Document.from_json((0,c.values)(l)[0]);for(const f of d){f.notebook_comms_target!=null&&u(f.notebook_comms_target,m);const b=(0,r._resolve_element)(f),y=(0,r._resolve_root_elements)(f);(0,o.add_document_standalone)(m,b,y)}}},function(Q,O,e,C,R){C(),e.root="bk-root",e.tooltip="bk-tooltip",e.default=".rendered_html .bk-root .bk-tooltip table,.rendered_html .bk-root .bk-tooltip tr,.rendered_html .bk-root .bk-tooltip th,.rendered_html .bk-root .bk-tooltip td{border:none;padding:1px;}"},function(V,Q,O,e,C){e();const R=V(1);(0,R.__exportStar)(V(401),O),(0,R.__exportStar)(V(402),O)},function(Q,O,e,C,R){function v(){const w=document.getElementsByTagName("body")[0],g=document.getElementsByClassName("bokeh-test-div");g.length==1&&(w.removeChild(g[0]),delete g[0]);const p=document.createElement("div");p.classList.add("bokeh-test-div"),p.style.display="none",w.insertBefore(p,w.firstChild)}C(),e.results={},e.init=function(){v()},e.record0=function(w,g){e.results[w]=g},e.record=function(w,g){e.results[w]=g,v()},e.count=function(w){e.results[w]==null&&(e.results[w]=0),e.results[w]+=1,v()}},function(Q,O,e,C,R){C(),e.safely=function(v,w=!1){try{return v()}catch(g){if(function(p){const T=document.createElement("div");T.style.backgroundColor="#f2dede",T.style.border="1px solid #a94442",T.style.borderRadius="4px",T.style.display="inline-block",T.style.fontFamily="sans-serif",T.style.marginTop="5px",T.style.minWidth="200px",T.style.padding="5px 5px 5px 10px",T.classList.add("bokeh-error-box-into-flames");const c=document.createElement("span");c.style.backgroundColor="#a94442",c.style.borderRadius="0px 4px 0px 0px",c.style.color="white",c.style.cursor="pointer",c.style.cssFloat="right",c.style.fontSize="0.8em",c.style.margin="-6px -6px 0px 0px",c.style.padding="2px 5px 4px 5px",c.title="close",c.setAttribute("aria-label","close"),c.appendChild(document.createTextNode("x")),c.addEventListener("click",()=>i.removeChild(T));const o=document.createElement("h3");o.style.color="#a94442",o.style.margin="8px 0px 0px 0px",o.style.padding="0px",o.appendChild(document.createTextNode("Bokeh Error"));const r=document.createElement("pre");r.style.whiteSpace="unset",r.style.overflowX="auto",r.appendChild(document.createTextNode(p)),T.appendChild(c),T.appendChild(o),T.appendChild(r);const i=document.getElementsByTagName("body")[0];i.insertBefore(T,i.firstChild)}(g instanceof Error&&g.stack?g.stack:`${g}`),w)return;throw g}}}],0,{main:0,tslib:1,index:2,version:3,"embed/index":4,"document/index":5,"document/document":6,base:7,"core/util/types":8,"core/util/array":9,"core/util/math":10,"core/util/assert":11,"core/util/arrayable":12,"core/util/object":13,"core/has_props":14,"core/signaling":15,"core/util/defer":16,"core/util/refs":17,"core/properties":18,"core/logging":19,"core/enums":20,"core/kinds":21,"core/util/color":22,"core/util/svg_colors":23,"core/types":24,"core/util/bitset":25,"core/util/eq":26,"core/util/platform":27,"core/settings":28,"core/util/ndarray":29,"core/serializer":30,"core/util/serialization":31,"core/util/buffer":32,"core/uniforms":33,"core/util/string":34,"document/events":35,"core/util/pretty":36,"core/util/cloneable":37,"models/index":38,"models/annotations/index":39,"models/annotations/annotation":40,"models/renderers/renderer":41,"core/view":42,"core/dom":43,"styles/root.css":44,"core/visuals/index":45,"core/visuals/line":46,"core/visuals/visual":47,"core/property_mixins":48,"core/visuals/fill":49,"core/visuals/text":50,"core/visuals/hatch":51,"core/visuals/patterns":52,model:53,"models/canvas/coordinates":54,"models/scales/scale":55,"models/transforms/transform":56,"models/ranges/range":57,"models/ranges/range1d":58,"models/scales/linear_scale":59,"models/scales/continuous_scale":60,"models/scales/log_scale":61,"models/scales/categorical_scale":62,"models/ranges/data_range1d":63,"models/ranges/data_range":64,"core/util/bbox":65,"models/util":66,"models/ranges/factor_range":67,"models/annotations/arrow":68,"models/annotations/data_annotation":69,"models/sources/columnar_data_source":70,"models/sources/data_source":71,"models/selections/selection":72,"core/selection_manager":73,"models/selections/interaction_policy":74,"models/sources/column_data_source":75,"core/util/typed_array":76,"core/util/set":77,"core/util/projections":78,"models/annotations/arrow_head":112,"core/build_views":113,"models/annotations/band":114,"models/annotations/upper_lower":115,"models/annotations/box_annotation":116,"models/annotations/color_bar":117,"models/annotations/title":118,"models/annotations/text_annotation":119,"core/graphics":120,"core/util/text":121,"core/util/affine":122,"core/layout/side_panel":123,"core/layout/types":124,"core/layout/layoutable":125,"models/canvas/cartesian_frame":126,"models/axes/index":127,"models/axes/axis":128,"models/renderers/guide_renderer":129,"models/tickers/ticker":130,"models/formatters/tick_formatter":131,"models/policies/labeling":132,"models/text/base_text":133,"models/text/utils":134,"models/text/math_text":135,"core/util/image":136,"models/text/providers":137,"core/util/modules":138,"models/text/plain_text":139,"models/axes/categorical_axis":140,"models/tickers/categorical_ticker":141,"models/formatters/categorical_tick_formatter":142,"models/axes/continuous_axis":143,"models/axes/datetime_axis":144,"models/axes/linear_axis":145,"models/formatters/basic_tick_formatter":146,"models/tickers/basic_ticker":147,"models/tickers/adaptive_ticker":148,"models/tickers/continuous_ticker":149,"models/formatters/datetime_tick_formatter":150,"core/util/templating":152,"models/tickers/datetime_ticker":155,"models/tickers/composite_ticker":156,"models/tickers/days_ticker":157,"models/tickers/single_interval_ticker":158,"models/tickers/util":159,"models/tickers/months_ticker":160,"models/tickers/years_ticker":161,"models/axes/log_axis":162,"models/formatters/log_tick_formatter":163,"models/tickers/log_ticker":164,"models/axes/mercator_axis":165,"models/formatters/mercator_tick_formatter":166,"models/tickers/mercator_ticker":167,"models/tickers/index":168,"models/tickers/fixed_ticker":169,"models/tickers/binned_ticker":170,"models/mappers/scanning_color_mapper":171,"models/mappers/continuous_color_mapper":172,"models/mappers/color_mapper":173,"models/mappers/mapper":174,"models/renderers/glyph_renderer":175,"models/renderers/data_renderer":176,"models/glyphs/line":177,"models/glyphs/xy_glyph":178,"models/glyphs/glyph":179,"core/util/ragged_array":180,"core/util/spatial":181,"models/glyphs/utils":184,"core/hittest":185,"models/glyphs/patch":186,"models/glyphs/harea":187,"models/glyphs/area":188,"models/glyphs/varea":189,"models/sources/cds_view":190,"models/filters/filter":191,"models/formatters/index":192,"models/formatters/func_tick_formatter":193,"models/formatters/numeral_tick_formatter":194,"models/formatters/printf_tick_formatter":195,"models/mappers/index":196,"models/mappers/categorical_color_mapper":197,"models/mappers/categorical_mapper":198,"models/mappers/categorical_marker_mapper":199,"models/mappers/categorical_pattern_mapper":200,"models/mappers/linear_color_mapper":201,"models/mappers/log_color_mapper":202,"models/mappers/eqhist_color_mapper":203,"models/scales/index":204,"models/scales/linear_interpolation_scale":205,"models/ranges/index":206,"core/layout/index":207,"core/layout/alignments":208,"core/layout/grid":209,"core/layout/html":210,"core/layout/border":211,"models/annotations/label":212,"models/annotations/label_set":213,"models/annotations/legend":214,"models/annotations/legend_item":215,"core/vectorization":216,"models/annotations/poly_annotation":217,"models/annotations/slope":218,"models/annotations/span":219,"models/annotations/toolbar_panel":220,"models/tools/toolbar":221,"models/tools/tool":222,"models/tools/gestures/gesture_tool":223,"models/tools/button_tool":224,"core/dom_view":226,"styles/toolbar.css":227,"styles/icons.css":228,"styles/menus.css":229,"core/util/menus":230,"models/tools/on_off_button":231,"models/tools/inspectors/inspect_tool":232,"models/tools/toolbar_base":233,"core/util/iterator":234,"core/util/canvas":235,"core/util/svg":236,"core/util/random":237,"models/tools/actions/action_tool":238,"models/tools/actions/help_tool":239,"styles/logo.css":240,"models/annotations/tooltip":241,"styles/tooltips.css":242,"models/annotations/whisker":243,"models/callbacks/index":244,"models/callbacks/customjs":245,"models/callbacks/callback":246,"models/callbacks/open_url":247,"models/canvas/index":248,"models/canvas/canvas":249,"core/ui_events":250,"core/bokeh_events":251,"core/util/wheel":252,"models/expressions/index":253,"models/expressions/expression":254,"models/expressions/customjs_expr":255,"models/expressions/stack":256,"models/expressions/cumsum":257,"models/expressions/minimum":258,"models/expressions/maximum":259,"models/expressions/coordinate_transform":260,"models/expressions/polar":261,"models/filters/index":262,"models/filters/boolean_filter":263,"models/filters/customjs_filter":264,"models/filters/group_filter":265,"models/filters/index_filter":266,"models/glyphs/index":267,"models/glyphs/annular_wedge":268,"models/glyphs/annulus":269,"models/glyphs/arc":270,"models/glyphs/bezier":271,"models/glyphs/circle":272,"models/glyphs/ellipse":273,"models/glyphs/ellipse_oval":274,"models/glyphs/center_rotatable":275,"models/glyphs/hbar":276,"models/glyphs/box":277,"models/glyphs/hex_tile":278,"models/glyphs/image":279,"models/glyphs/image_base":280,"models/glyphs/image_rgba":281,"models/glyphs/image_url":282,"models/glyphs/multi_line":283,"models/glyphs/multi_polygons":284,"models/glyphs/oval":285,"models/glyphs/patches":286,"models/glyphs/quad":287,"models/glyphs/quadratic":288,"models/glyphs/ray":289,"models/glyphs/rect":290,"models/glyphs/scatter":291,"models/glyphs/marker":292,"models/glyphs/defs":293,"models/glyphs/segment":294,"models/glyphs/spline":295,"core/util/interpolation":296,"models/glyphs/step":297,"models/glyphs/text":298,"models/glyphs/vbar":299,"models/glyphs/wedge":300,"models/graphs/index":301,"models/graphs/graph_hit_test_policy":302,"models/graphs/layout_provider":303,"models/graphs/static_layout_provider":304,"models/grids/index":305,"models/grids/grid":306,"models/layouts/index":307,"models/layouts/box":308,"models/layouts/layout_dom":309,"models/layouts/column":310,"models/layouts/grid_box":311,"models/layouts/html_box":312,"models/layouts/panel":313,"models/layouts/row":314,"models/layouts/spacer":315,"models/layouts/tabs":316,"styles/tabs.css":317,"styles/buttons.css":318,"models/layouts/widget_box":319,"models/text/index":320,"models/transforms/index":321,"models/transforms/customjs_transform":322,"models/transforms/dodge":323,"models/transforms/range_transform":324,"models/transforms/interpolator":325,"models/transforms/jitter":326,"models/transforms/linear_interpolator":327,"models/transforms/step_interpolator":328,"models/plots/index":329,"models/plots/gmap_plot":330,"models/plots/plot":331,"models/plots/plot_canvas":332,"core/util/throttle":333,"models/plots/range_manager":334,"models/plots/state_manager":335,"models/plots/gmap_plot_canvas":336,"models/policies/index":337,"models/renderers/index":338,"models/renderers/graph_renderer":339,"models/selections/index":340,"models/sources/index":341,"models/sources/server_sent_data_source":342,"models/sources/web_data_source":343,"models/sources/ajax_data_source":344,"models/sources/geojson_data_source":345,"models/tiles/index":346,"models/tiles/bbox_tile_source":347,"models/tiles/mercator_tile_source":348,"models/tiles/tile_source":349,"models/tiles/tile_utils":350,"models/tiles/quadkey_tile_source":351,"models/tiles/tile_renderer":352,"models/tiles/wmts_tile_source":353,"styles/tiles.css":354,"models/tiles/tms_tile_source":355,"models/textures/index":356,"models/textures/canvas_texture":357,"models/textures/texture":358,"models/textures/image_url_texture":359,"models/tools/index":360,"models/tools/actions/custom_action":361,"models/tools/actions/redo_tool":362,"models/tools/actions/reset_tool":363,"models/tools/actions/save_tool":364,"models/tools/actions/undo_tool":365,"models/tools/actions/zoom_in_tool":366,"models/tools/actions/zoom_base_tool":367,"core/util/zoom":368,"models/tools/actions/zoom_out_tool":369,"models/tools/edit/edit_tool":370,"models/tools/edit/box_edit_tool":371,"models/tools/edit/freehand_draw_tool":372,"models/tools/edit/point_draw_tool":373,"models/tools/edit/poly_draw_tool":374,"models/tools/edit/poly_tool":375,"models/tools/edit/poly_edit_tool":376,"models/tools/gestures/box_select_tool":377,"models/tools/gestures/select_tool":378,"models/tools/gestures/box_zoom_tool":379,"models/tools/gestures/lasso_select_tool":380,"models/tools/gestures/poly_select_tool":381,"models/tools/edit/line_edit_tool":382,"models/tools/edit/line_tool":383,"models/tools/gestures/pan_tool":384,"models/tools/gestures/range_tool":385,"models/tools/gestures/tap_tool":386,"models/tools/gestures/wheel_pan_tool":387,"models/tools/gestures/wheel_zoom_tool":388,"models/tools/inspectors/crosshair_tool":389,"models/tools/inspectors/customjs_hover":390,"models/tools/inspectors/hover_tool":391,"models/dom/index":392,"models/dom/styles":393,"models/tools/tool_proxy":394,"models/tools/toolbar_box":395,"document/defs":396,"embed/standalone":397,"embed/dom":398,"embed/server":399,"client/connection":400,"protocol/message":401,"protocol/receiver":402,"client/session":403,"embed/notebook":404,"styles/notebook.css":405,"protocol/index":406,testing:407,safely:408},{});/*!
58
58
  * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors
59
59
  * All rights reserved.
60
60
  *
@@ -125,7 +125,7 @@ ${c.default}`,attributes:{a_position:{buffer:a.buffer([[-.5,-.5],[-.5,.5],[.5,.5
125
125
  `),Nt=1,Jt=0,te={unknown:new u,0:new u};te.unknown.name=te[0].name=Me||m(),te.unknown.lines.push(new l(0,""));for(var ve=0;ve<Ot.length;++ve){var Se=Ot[ve],Fe=/^\s*#\s*(\w+)\s+(.+)\s*$/.exec(Se);if(Fe)switch(Fe[1]){case"line":var Ce=/(\d+)(\s+\d+)?/.exec(Fe[2]);Ce&&(Nt=0|Ce[1],Ce[2]&&((Jt=0|Ce[2])in te||(te[Jt]=new u)));break;case"define":var it=/SHADER_NAME(_B64)?\s+(.*)$/.exec(Fe[2]);it&&(te[Jt].name=it[1]?(et=it[2],typeof atob<"u"?atob(et):"base64:"+et):it[2])}te[Jt].lines.push(new l(Nt++,Se))}return Object.keys(te).forEach(function(ut){var ft=te[ut];ft.lines.forEach(function(Ct){ft.index[Ct.number]=Ct})}),te}function y(he){he._commandRef=m()}function A(he,Me){var et=f();c(he+" in command "+(Me||m())+(et==="unknown"?"":" called from "+et))}function L(he,Me,et,Ot){i(he,Me)||A("invalid parameter type"+r(et)+". expected "+Me+", got "+typeof he,Ot||m())}var x=33071,H={};function S(he,Me){return he===32820||he===32819||he===33635?2:he===34042?4:H[he]*Me}function k(he){return!(he&he-1||!he)}H[5120]=H[5121]=1,H[5122]=H[5123]=H[36193]=H[33635]=H[32819]=H[32820]=2,H[5124]=H[5125]=H[5126]=H[34042]=4;var E=p(o,{optional:function(he){he()},raise:c,commandRaise:A,command:function(he,Me,et){he||A(Me,et||m())},parameter:function(he,Me,et){he in Me||c("unknown parameter ("+he+")"+r(et)+". possible values: "+Object.keys(Me).join())},commandParameter:function(he,Me,et,Ot){he in Me||A("unknown parameter ("+he+")"+r(et)+". possible values: "+Object.keys(Me).join(),Ot||m())},constructor:function(he){Object.keys(he).forEach(function(Me){s.indexOf(Me)<0&&c('invalid regl constructor argument "'+Me+'". must be one of '+s)})},type:function(he,Me,et){i(he,Me)||c("invalid parameter type"+r(et)+". expected "+Me+", got "+typeof he)},commandType:L,isTypedArray:function(he,Me){g(he)||c("invalid parameter type"+r(Me)+". must be a typed array")},nni:function(he,Me){he>=0&&(0|he)===he||c("invalid parameter type, ("+he+")"+r(Me)+". must be a nonnegative integer")},oneOf:t,shaderError:function(he,Me,et,Ot,Nt){if(!he.getShaderParameter(Me,he.COMPILE_STATUS)){var Jt=he.getShaderInfoLog(Me),te=Ot===he.FRAGMENT_SHADER?"fragment":"vertex";L(et,"string",te+" shader source must be a string",Nt);var ve=b(et,Nt),Se=function(Fe){var Ce=[];return Fe.split(`
126
126
  `).forEach(function(it){if(!(it.length<5)){var ut=/^ERROR:\s+(\d+):(\d+):\s*(.*)$/.exec(it);ut?Ce.push(new d(0|ut[1],0|ut[2],ut[3].trim())):it.length>0&&Ce.push(new d("unknown",0,it))}}),Ce}(Jt);(function(Fe,Ce){Ce.forEach(function(it){var ut=Fe[it.file];if(ut){var ft=ut.index[it.line];if(ft)return ft.errors.push(it),void(ut.hasErrors=!0)}Fe.unknown.hasErrors=!0,Fe.unknown.lines[0].errors.push(it)})})(ve,Se),Object.keys(ve).forEach(function(Fe){var Ce=ve[Fe];if(Ce.hasErrors){var it=[""],ut=[""];ft("file number "+Fe+": "+Ce.name+`
127
127
  `,"color:red;text-decoration:underline;font-weight:bold"),Ce.lines.forEach(function(Ct){if(Ct.errors.length>0){ft(a(Ct.number,4)+"| ","background-color:yellow; font-weight:bold"),ft(Ct.line+T,"color:red; background-color:yellow; font-weight:bold");var Yt=0;Ct.errors.forEach(function(Q1){var o1=Q1.message,x1=/^\s*'(.*)'\s*:\s*(.*)$/.exec(o1);if(x1){var O1=x1[1];o1=x1[2],O1==="assign"&&(O1="="),Yt=Math.max(Ct.line.indexOf(O1,Yt),0)}else Yt=0;ft(a("| ",6)),ft(a("^^^",Yt+3)+T,"font-weight:bold"),ft(a("| ",6)),ft(o1+T,"font-weight:bold")}),ft(a("| ",6)+T)}else ft(a(Ct.number,4)+"| "),ft(Ct.line+T,"color:red")}),typeof document>"u"||window.chrome?console.log(it.join("")):(ut[0]=it.join("%c"),console.log.apply(console,ut))}function ft(Ct,Yt){it.push(Ct),ut.push(Yt||"")}}),o.raise("Error compiling "+te+" shader, "+ve[0].name)}},linkError:function(he,Me,et,Ot,Nt){if(!he.getProgramParameter(Me,he.LINK_STATUS)){var Jt=he.getProgramInfoLog(Me),te=b(et,Nt),ve='Error linking program with vertex shader, "'+b(Ot,Nt)[0].name+'", and fragment shader "'+te[0].name+'"';typeof document<"u"?console.log("%c"+ve+`
128
- %c`+Jt,"color:red;text-decoration:underline;font-weight:bold","color:red"):console.log(ve+T+Jt),o.raise(ve)}},callSite:f,saveCommandRef:y,saveDrawInfo:function(he,Me,et,Ot){function Nt(Se){return Se?Ot.id(Se):0}function Jt(Se,Fe){Object.keys(Fe).forEach(function(Ce){Se[Ot.id(Ce)]=!0})}y(he),he._fragId=Nt(he.static.frag),he._vertId=Nt(he.static.vert);var te=he._uniformSet={};Jt(te,Me.static),Jt(te,Me.dynamic);var ve=he._attributeSet={};Jt(ve,et.static),Jt(ve,et.dynamic),he._hasCount="count"in he.static||"count"in he.dynamic||"elements"in he.static||"elements"in he.dynamic},framebufferFormat:function(he,Me,et){he.texture?t(he.texture._texture.internalformat,Me,"unsupported texture format for attachment"):t(he.renderbuffer._renderbuffer.format,et,"unsupported renderbuffer format for attachment")},guessCommand:m,texture2D:function(he,Me,et){var Ot,Nt=Me.width,Jt=Me.height,te=Me.channels;o(Nt>0&&Nt<=et.maxTextureSize&&Jt>0&&Jt<=et.maxTextureSize,"invalid texture shape"),he.wrapS===x&&he.wrapT===x||o(k(Nt)&&k(Jt),"incompatible wrap mode for texture, both width and height must be power of 2"),Me.mipmask===1?Nt!==1&&Jt!==1&&o(he.minFilter!==9984&&he.minFilter!==9986&&he.minFilter!==9985&&he.minFilter!==9987,"min filter requires mipmap"):(o(k(Nt)&&k(Jt),"texture must be a square power of 2 to support mipmapping"),o(Me.mipmask===(Nt<<1)-1,"missing or incomplete mipmap data")),Me.type===5126&&(et.extensions.indexOf("oes_texture_float_linear")<0&&o(he.minFilter===9728&&he.magFilter===9728,"filter not supported, must enable oes_texture_float_linear"),o(!he.genMipmaps,"mipmap generation not supported with float textures"));var ve=Me.images;for(Ot=0;Ot<16;++Ot)if(ve[Ot]){var Se=Nt>>Ot,Fe=Jt>>Ot;o(Me.mipmask&1<<Ot,"missing mipmap data");var Ce=ve[Ot];if(o(Ce.width===Se&&Ce.height===Fe,"invalid shape for mip images"),o(Ce.format===Me.format&&Ce.internalformat===Me.internalformat&&Ce.type===Me.type,"incompatible type for mip image"),!Ce.compressed)if(Ce.data){var it=Math.ceil(S(Ce.type,te)*Se/Ce.unpackAlignment)*Ce.unpackAlignment;o(Ce.data.byteLength===it*Fe,"invalid data for image, buffer size is inconsistent with image format")}else Ce.element||Ce.copy}else he.genMipmaps||o((Me.mipmask&1<<Ot)==0,"extra mipmap data");Me.compressed&&o(!he.genMipmaps,"mipmap generation for compressed images not supported")},textureCube:function(he,Me,et,Ot){var Nt=he.width,Jt=he.height,te=he.channels;o(Nt>0&&Nt<=Ot.maxTextureSize&&Jt>0&&Jt<=Ot.maxTextureSize,"invalid texture shape"),o(Nt===Jt,"cube map must be square"),o(Me.wrapS===x&&Me.wrapT===x,"wrap mode not supported by cube map");for(var ve=0;ve<et.length;++ve){var Se=et[ve];o(Se.width===Nt&&Se.height===Jt,"inconsistent cube map face shape"),Me.genMipmaps&&(o(!Se.compressed,"can not generate mipmap for compressed textures"),o(Se.mipmask===1,"can not specify mipmaps and generate mipmaps"));for(var Fe=Se.images,Ce=0;Ce<16;++Ce){var it=Fe[Ce];if(it){var ut=Nt>>Ce,ft=Jt>>Ce;o(Se.mipmask&1<<Ce,"missing mipmap data"),o(it.width===ut&&it.height===ft,"invalid shape for mip images"),o(it.format===he.format&&it.internalformat===he.internalformat&&it.type===he.type,"incompatible type for mip image"),it.compressed||(it.data?o(it.data.byteLength===ut*ft*Math.max(S(it.type,te),it.unpackAlignment),"invalid data for image, buffer size is inconsistent with image format"):it.element||it.copy)}}}}}),P=0;function N(he,Me){this.id=P++,this.type=he,this.data=Me}function B(he){return he.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function D(he){if(he.length===0)return[];var Me=he.charAt(0),et=he.charAt(he.length-1);if(he.length>1&&Me===et&&(Me==='"'||Me==="'"))return['"'+B(he.substr(1,he.length-2))+'"'];var Ot=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(he);if(Ot)return D(he.substr(0,Ot.index)).concat(D(Ot[1])).concat(D(he.substr(Ot.index+Ot[0].length)));var Nt=he.split(".");if(Nt.length===1)return['"'+B(he)+'"'];for(var Jt=[],te=0;te<Nt.length;++te)Jt=Jt.concat(D(Nt[te]));return Jt}function j(he){return"["+D(he).join("][")+"]"}var M={DynamicVariable:N,define:function(he,Me){return new N(he,j(Me+""))},isDynamic:function(he){return typeof he=="function"&&!he._reglType||he instanceof N},unbox:function he(Me,et){return typeof Me=="function"?new N(0,Me):typeof Me=="number"||typeof Me=="boolean"?new N(5,Me):Array.isArray(Me)?new N(6,Me.map(function(Ot,Nt){return he(Ot,et+"["+Nt+"]")})):Me instanceof N?Me:void E(!1,"invalid option type in uniform "+et)},accessor:j},F={next:typeof requestAnimationFrame=="function"?function(he){return requestAnimationFrame(he)}:function(he){return setTimeout(he,16)},cancel:typeof cancelAnimationFrame=="function"?function(he){return cancelAnimationFrame(he)}:clearTimeout},W=typeof performance<"u"&&performance.now?function(){return performance.now()}:function(){return+new Date};function U(he){return typeof he=="string"?he.split():(E(Array.isArray(he),"invalid extension array"),he)}function q(he){return typeof he=="string"?(E(typeof document<"u","not supported outside of DOM"),document.querySelector(he)):he}function X(he){var Me,et,Ot,Nt,Jt,te=he||{},ve={},Se=[],Fe=[],Ce=typeof window>"u"?1:window.devicePixelRatio,it=!1,ut=function(Yt){Yt&&E.raise(Yt)},ft=function(){};if(typeof te=="string"?(E(typeof document<"u","selector queries only supported in DOM enviroments"),Me=document.querySelector(te),E(Me,"invalid query string for element")):typeof te=="object"?typeof(Jt=te).nodeName=="string"&&typeof Jt.appendChild=="function"&&typeof Jt.getBoundingClientRect=="function"?Me=te:function(Yt){return typeof Yt.drawArrays=="function"||typeof Yt.drawElements=="function"}(te)?Ot=(Nt=te).canvas:(E.constructor(te),"gl"in te?Nt=te.gl:"canvas"in te?Ot=q(te.canvas):"container"in te&&(et=q(te.container)),"attributes"in te&&(ve=te.attributes,E.type(ve,"object","invalid context attributes")),"extensions"in te&&(Se=U(te.extensions)),"optionalExtensions"in te&&(Fe=U(te.optionalExtensions)),"onDone"in te&&(E.type(te.onDone,"function","invalid or missing onDone callback"),ut=te.onDone),"profile"in te&&(it=!!te.profile),"pixelRatio"in te&&(Ce=+te.pixelRatio,E(Ce>0,"invalid pixel ratio"))):E.raise("invalid arguments to regl"),Me&&(Me.nodeName.toLowerCase()==="canvas"?Ot=Me:et=Me),!Nt){if(!Ot){E(typeof document<"u","must manually specify webgl context outside of DOM environments");var Ct=function(Yt,Q1,o1){var x1,O1=document.createElement("canvas");function _1(){var B1=window.innerWidth,$1=window.innerHeight;if(Yt!==document.body){var j1=O1.getBoundingClientRect();B1=j1.right-j1.left,$1=j1.bottom-j1.top}O1.width=o1*B1,O1.height=o1*$1}return p(O1.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"}),Yt.appendChild(O1),Yt===document.body&&(O1.style.position="absolute",p(Yt.style,{margin:0,padding:0})),Yt!==document.body&&typeof ResizeObserver=="function"?(x1=new ResizeObserver(function(){setTimeout(_1)})).observe(Yt):window.addEventListener("resize",_1,!1),_1(),{canvas:O1,onDestroy:function(){x1?x1.disconnect():window.removeEventListener("resize",_1),Yt.removeChild(O1)}}}(et||document.body,0,Ce);if(!Ct)return null;Ot=Ct.canvas,ft=Ct.onDestroy}ve.premultipliedAlpha===void 0&&(ve.premultipliedAlpha=!0),Nt=function(Yt,Q1){function o1(x1){try{return Yt.getContext(x1,Q1)}catch{return null}}return o1("webgl")||o1("experimental-webgl")||o1("webgl-experimental")}(Ot,ve)}return Nt?{gl:Nt,canvas:Ot,container:et,extensions:Se,optionalExtensions:Fe,pixelRatio:Ce,profile:it,onDone:ut,onDestroy:ft}:(ft(),ut("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function ae(he,Me){for(var et=Array(he),Ot=0;Ot<he;++Ot)et[Ot]=Me(Ot);return et}function me(he){var Me,et;return Me=(he>65535)<<4,Me|=et=((he>>>=Me)>255)<<3,Me|=et=((he>>>=et)>15)<<2,(Me|=et=((he>>>=et)>3)<<1)|(he>>>=et)>>1}function Ve(){var he=ae(8,function(){return[]});function Me(Ot){var Nt=function(te){for(var ve=16;ve<=268435456;ve*=16)if(te<=ve)return ve;return 0}(Ot),Jt=he[me(Nt)>>2];return Jt.length>0?Jt.pop():new ArrayBuffer(Nt)}function et(Ot){he[me(Ot.byteLength)>>2].push(Ot)}return{alloc:Me,free:et,allocType:function(Ot,Nt){var Jt=null;switch(Ot){case 5120:Jt=new Int8Array(Me(Nt),0,Nt);break;case 5121:Jt=new Uint8Array(Me(Nt),0,Nt);break;case 5122:Jt=new Int16Array(Me(2*Nt),0,Nt);break;case 5123:Jt=new Uint16Array(Me(2*Nt),0,Nt);break;case 5124:Jt=new Int32Array(Me(4*Nt),0,Nt);break;case 5125:Jt=new Uint32Array(Me(4*Nt),0,Nt);break;case 5126:Jt=new Float32Array(Me(4*Nt),0,Nt);break;default:return null}return Jt.length!==Nt?Jt.subarray(0,Nt):Jt},freeType:function(Ot){et(Ot.buffer)}}}var Je=Ve();Je.zero=Ve();var rt=3553,yt=6408,xt=5126,r1=36160;function t1(he){return!!he&&typeof he=="object"&&Array.isArray(he.shape)&&Array.isArray(he.stride)&&typeof he.offset=="number"&&he.shape.length===he.stride.length&&(Array.isArray(he.data)||g(he.data))}var Bt=function(he){return Object.keys(he).map(function(Me){return he[Me]})},Kt={shape:function(he){for(var Me=[],et=he;et.length;et=et[0])Me.push(et.length);return Me},flatten:function(he,Me,et,Ot){var Nt=1;if(Me.length)for(var Jt=0;Jt<Me.length;++Jt)Nt*=Me[Jt];else Nt=0;var te=Ot||Je.allocType(et,Nt);switch(Me.length){case 0:break;case 1:(function(ve,Se,Fe){for(var Ce=0;Ce<Se;++Ce)Fe[Ce]=ve[Ce]})(he,Me[0],te);break;case 2:(function(ve,Se,Fe,Ce){for(var it=0,ut=0;ut<Se;++ut)for(var ft=ve[ut],Ct=0;Ct<Fe;++Ct)Ce[it++]=ft[Ct]})(he,Me[0],Me[1],te);break;case 3:wt(he,Me[0],Me[1],Me[2],te,0);break;default:Rt(he,Me,0,te,0)}return te}};function wt(he,Me,et,Ot,Nt,Jt){for(var te=Jt,ve=0;ve<Me;++ve)for(var Se=he[ve],Fe=0;Fe<et;++Fe)for(var Ce=Se[Fe],it=0;it<Ot;++it)Nt[te++]=Ce[it]}function Rt(he,Me,et,Ot,Nt){for(var Jt=1,te=et+1;te<Me.length;++te)Jt*=Me[te];var ve=Me[et];if(Me.length-et==4){var Se=Me[et+1],Fe=Me[et+2],Ce=Me[et+3];for(te=0;te<ve;++te)wt(he[te],Se,Fe,Ce,Ot,Nt),Nt+=Jt}else for(te=0;te<ve;++te)Rt(he[te],Me,et+1,Ot,Nt),Nt+=Jt}var Ht={"[object Int8Array]":5120,"[object Int16Array]":5122,"[object Int32Array]":5124,"[object Uint8Array]":5121,"[object Uint8ClampedArray]":5121,"[object Uint16Array]":5123,"[object Uint32Array]":5125,"[object Float32Array]":5126,"[object Float64Array]":5121,"[object ArrayBuffer]":5121},dt={int8:5120,int16:5122,int32:5124,uint8:5121,uint16:5123,uint32:5125,float:5126,float32:5126},Wt={dynamic:35048,stream:35040,static:35044},jt=Kt.flatten,a1=Kt.shape,ye=5121,ie=5126,nt=[];function St(he){return 0|Ht[Object.prototype.toString.call(he)]}function mt(he,Me){for(var et=0;et<Me.length;++et)he[et]=Me[et]}function Pt(he,Me,et,Ot,Nt,Jt,te){for(var ve=0,Se=0;Se<et;++Se)for(var Fe=0;Fe<Ot;++Fe)he[ve++]=Me[Nt*Se+Jt*Fe+te]}nt[5120]=1,nt[5122]=2,nt[5124]=4,nt[5121]=1,nt[5123]=2,nt[5125]=4,nt[5126]=4;var Xt={points:0,point:0,lines:1,line:1,triangles:4,triangle:4,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},u1=5121,v1=5123,h1=5125,De=34963,Ze=new Float32Array(1),$e=new Uint32Array(Ze.buffer);function Qt(he){for(var Me=Je.allocType(5123,he.length),et=0;et<he.length;++et)if(isNaN(he[et]))Me[et]=65535;else if(he[et]===1/0)Me[et]=31744;else if(he[et]===-1/0)Me[et]=64512;else{Ze[0]=he[et];var Ot=$e[0],Nt=Ot>>>31<<15,Jt=(Ot<<1>>>24)-127,te=Ot>>13&1023;if(Jt<-24)Me[et]=Nt;else if(Jt<-14){var ve=-14-Jt;Me[et]=Nt+(te+1024>>ve)}else Me[et]=Jt>15?Nt+31744:Nt+(Jt+15<<10)+te}return Me}function It(he){return Array.isArray(he)||g(he)}var Ut=function(he){return!(he&he-1||!he)},Zt=3553,b1=34067,k1=34069,A1=6408,W1=6406,S1=6407,Z1=6409,o2=6410,d2=32855,Q2=6402,w2=34041,P2=35904,oe=35906,K=36193,ue=33776,se=33777,ne=33778,J=33779,re=5121,Qe=5123,Le=5125,Re=5126,ct=33071,Y=9728,de=9984,He=9987,tt=4352,ht=33984,Lt=[de,9986,9985,He],e1=[0,Z1,o2,S1,A1],m1={};function n1(he){return"[object "+he+"]"}m1[6409]=m1[6406]=m1[6402]=1,m1[34041]=m1[6410]=2,m1[6407]=m1[35904]=3,m1[6408]=m1[35906]=4;var E1=n1("HTMLCanvasElement"),K1=n1("OffscreenCanvas"),D1=n1("CanvasRenderingContext2D"),U1=n1("ImageBitmap"),t2=n1("HTMLImageElement"),R1=n1("HTMLVideoElement"),y2=Object.keys(Ht).concat([E1,K1,D1,U1,t2,R1]),n2=[];n2[5121]=1,n2[5126]=4,n2[36193]=2,n2[5123]=2,n2[5125]=4;var e2=[];function Z2(he){return Array.isArray(he)&&(he.length===0||typeof he[0]=="number")}function I2(he){return!!Array.isArray(he)&&!(he.length===0||!It(he[0]))}function s2(he){return Object.prototype.toString.call(he)}function Ye(he){return s2(he)===E1}function lt(he){return s2(he)===K1}function pt(he){if(!he)return!1;var Me=s2(he);return y2.indexOf(Me)>=0||Z2(he)||I2(he)||t1(he)}function Dt(he){return 0|Ht[Object.prototype.toString.call(he)]}function c1(he,Me){return Je.allocType(he.type===K?Re:he.type,Me)}function s1(he,Me){he.type===K?(he.data=Qt(Me),Je.freeType(Me)):he.data=Me}function y1(he,Me,et,Ot,Nt,Jt){var te;if(te=e2[he]!==void 0?e2[he]:m1[he]*n2[Me],Jt&&(te*=6),Nt){for(var ve=0,Se=et;Se>=1;)ve+=te*Se*Se,Se/=2;return ve}return te*et*Ot}function g1(he,Me,et,Ot,Nt,Jt,te){var ve={"don't care":tt,"dont care":tt,nice:4354,fast:4353},Se={repeat:10497,clamp:ct,mirror:33648},Fe={nearest:Y,linear:9729},Ce=p({mipmap:He,"nearest mipmap nearest":de,"linear mipmap nearest":9985,"nearest mipmap linear":9986,"linear mipmap linear":He},Fe),it={none:0,browser:37444},ut={uint8:re,rgba4:32819,rgb565:33635,"rgb5 a1":32820},ft={alpha:W1,luminance:Z1,"luminance alpha":o2,rgb:S1,rgba:A1,rgba4:32854,"rgb5 a1":d2,rgb565:36194},Ct={};Me.ext_srgb&&(ft.srgb=P2,ft.srgba=oe),Me.oes_texture_float&&(ut.float32=ut.float=Re),Me.oes_texture_half_float&&(ut.float16=ut["half float"]=K),Me.webgl_depth_texture&&(p(ft,{depth:Q2,"depth stencil":w2}),p(ut,{uint16:Qe,uint32:Le,"depth stencil":34042})),Me.webgl_compressed_texture_s3tc&&p(Ct,{"rgb s3tc dxt1":ue,"rgba s3tc dxt1":se,"rgba s3tc dxt3":ne,"rgba s3tc dxt5":J}),Me.webgl_compressed_texture_atc&&p(Ct,{"rgb atc":35986,"rgba atc explicit alpha":35987,"rgba atc interpolated alpha":34798}),Me.webgl_compressed_texture_pvrtc&&p(Ct,{"rgb pvrtc 4bppv1":35840,"rgb pvrtc 2bppv1":35841,"rgba pvrtc 4bppv1":35842,"rgba pvrtc 2bppv1":35843}),Me.webgl_compressed_texture_etc1&&(Ct["rgb etc1"]=36196);var Yt=Array.prototype.slice.call(he.getParameter(34467));Object.keys(Ct).forEach(function(le){var be=Ct[le];Yt.indexOf(be)>=0&&(ft[le]=be)});var Q1=Object.keys(ft);et.textureFormats=Q1;var o1=[];Object.keys(ft).forEach(function(le){var be=ft[le];o1[be]=le});var x1=[];Object.keys(ut).forEach(function(le){var be=ut[le];x1[be]=le});var O1=[];Object.keys(Fe).forEach(function(le){O1[Fe[le]]=le});var _1=[];Object.keys(Ce).forEach(function(le){var be=Ce[le];_1[be]=le});var B1=[];Object.keys(Se).forEach(function(le){B1[Se[le]]=le});var $1=Q1.reduce(function(le,be){var Te=ft[be];return Te===Z1||Te===W1||Te===Z1||Te===o2||Te===Q2||Te===w2||Me.ext_srgb&&(Te===P2||Te===oe)?le[Te]=Te:Te===d2||be.indexOf("rgba")>=0?le[Te]=A1:le[Te]=S1,le},{});function j1(){this.internalformat=A1,this.format=A1,this.type=re,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=37444,this.width=0,this.height=0,this.channels=0}function V1(le,be){le.internalformat=be.internalformat,le.format=be.format,le.type=be.type,le.compressed=be.compressed,le.premultiplyAlpha=be.premultiplyAlpha,le.flipY=be.flipY,le.unpackAlignment=be.unpackAlignment,le.colorSpace=be.colorSpace,le.width=be.width,le.height=be.height,le.channels=be.channels}function h2(le,be){if(typeof be=="object"&&be){if("premultiplyAlpha"in be&&(E.type(be.premultiplyAlpha,"boolean","invalid premultiplyAlpha"),le.premultiplyAlpha=be.premultiplyAlpha),"flipY"in be&&(E.type(be.flipY,"boolean","invalid texture flip"),le.flipY=be.flipY),"alignment"in be&&(E.oneOf(be.alignment,[1,2,4,8],"invalid texture unpack alignment"),le.unpackAlignment=be.alignment),"colorSpace"in be&&(E.parameter(be.colorSpace,it,"invalid colorSpace"),le.colorSpace=it[be.colorSpace]),"type"in be){var Te=be.type;E(Me.oes_texture_float||!(Te==="float"||Te==="float32"),"you must enable the OES_texture_float extension in order to use floating point textures."),E(Me.oes_texture_half_float||!(Te==="half float"||Te==="float16"),"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures."),E(Me.webgl_depth_texture||!(Te==="uint16"||Te==="uint32"||Te==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),E.parameter(Te,ut,"invalid texture type"),le.type=ut[Te]}var Ee=le.width,Ie=le.height,ot=le.channels,je=!1;"shape"in be?(E(Array.isArray(be.shape)&&be.shape.length>=2,"shape must be an array"),Ee=be.shape[0],Ie=be.shape[1],be.shape.length===3&&(ot=be.shape[2],E(ot>0&&ot<=4,"invalid number of channels"),je=!0),E(Ee>=0&&Ee<=et.maxTextureSize,"invalid width"),E(Ie>=0&&Ie<=et.maxTextureSize,"invalid height")):("radius"in be&&(Ee=Ie=be.radius,E(Ee>=0&&Ee<=et.maxTextureSize,"invalid radius")),"width"in be&&(Ee=be.width,E(Ee>=0&&Ee<=et.maxTextureSize,"invalid width")),"height"in be&&(Ie=be.height,E(Ie>=0&&Ie<=et.maxTextureSize,"invalid height")),"channels"in be&&(ot=be.channels,E(ot>0&&ot<=4,"invalid number of channels"),je=!0)),le.width=0|Ee,le.height=0|Ie,le.channels=0|ot;var xe=!1;if("format"in be){var Ae=be.format;E(Me.webgl_depth_texture||!(Ae==="depth"||Ae==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),E.parameter(Ae,ft,"invalid texture format");var Oe=le.internalformat=ft[Ae];le.format=$1[Oe],Ae in ut&&("type"in be||(le.type=ut[Ae])),Ae in Ct&&(le.compressed=!0),xe=!0}!je&&xe?le.channels=m1[le.format]:je&&!xe?le.channels!==e1[le.format]&&(le.format=le.internalformat=e1[le.channels]):xe&&je&&E(le.channels===m1[le.format],"number of channels inconsistent with specified format")}}function a2(le){he.pixelStorei(37440,le.flipY),he.pixelStorei(37441,le.premultiplyAlpha),he.pixelStorei(37443,le.colorSpace),he.pixelStorei(3317,le.unpackAlignment)}function P1(){j1.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function T2(le,be){var Te=null;if(pt(be)?Te=be:be&&(E.type(be,"object","invalid pixel data type"),h2(le,be),"x"in be&&(le.xOffset=0|be.x),"y"in be&&(le.yOffset=0|be.y),pt(be.data)&&(Te=be.data)),E(!le.compressed||Te instanceof Uint8Array,"compressed texture data must be stored in a uint8array"),be.copy){E(!Te,"can not specify copy and data field for the same texture");var Ee=Nt.viewportWidth,Ie=Nt.viewportHeight;le.width=le.width||Ee-le.xOffset,le.height=le.height||Ie-le.yOffset,le.needsCopy=!0,E(le.xOffset>=0&&le.xOffset<Ee&&le.yOffset>=0&&le.yOffset<Ie&&le.width>0&&le.width<=Ee&&le.height>0&&le.height<=Ie,"copy texture read out of bounds")}else if(Te){if(g(Te))le.channels=le.channels||4,le.data=Te,"type"in be||le.type!==re||(le.type=Dt(Te));else if(Z2(Te))le.channels=le.channels||4,function(Xe,_e){var we=_e.length;switch(Xe.type){case re:case Qe:case Le:case Re:var Ne=Je.allocType(Xe.type,we);Ne.set(_e),Xe.data=Ne;break;case K:Xe.data=Qt(_e);break;default:E.raise("unsupported texture type, must specify a typed array")}}(le,Te),le.alignment=1,le.needsFree=!0;else if(t1(Te)){var ot=Te.data;Array.isArray(ot)||le.type!==re||(le.type=Dt(ot));var je,xe,Ae,Oe,We,Ge,Pe=Te.shape,ze=Te.stride;Pe.length===3?(Ae=Pe[2],Ge=ze[2]):(E(Pe.length===2,"invalid ndarray pixel data, must be 2 or 3D"),Ae=1,Ge=1),je=Pe[0],xe=Pe[1],Oe=ze[0],We=ze[1],le.alignment=1,le.width=je,le.height=xe,le.channels=Ae,le.format=le.internalformat=e1[Ae],le.needsFree=!0,function(Xe,_e,we,Ne,vt,qt){for(var $t=Xe.width,Vt=Xe.height,f1=Xe.channels,l1=c1(Xe,$t*Vt*f1),d1=0,i1=0;i1<Vt;++i1)for(var zt=0;zt<$t;++zt)for(var H1=0;H1<f1;++H1)l1[d1++]=_e[we*zt+Ne*i1+vt*H1+qt];s1(Xe,l1)}(le,ot,Oe,We,Ge,Te.offset)}else if(Ye(Te)||lt(Te)||s2(Te)===D1)Ye(Te)||lt(Te)?le.element=Te:le.element=Te.canvas,le.width=le.element.width,le.height=le.element.height,le.channels=4;else if(function(Xe){return s2(Xe)===U1}(Te))le.element=Te,le.width=Te.width,le.height=Te.height,le.channels=4;else if(function(Xe){return s2(Xe)===t2}(Te))le.element=Te,le.width=Te.naturalWidth,le.height=Te.naturalHeight,le.channels=4;else if(function(Xe){return s2(Xe)===R1}(Te))le.element=Te,le.width=Te.videoWidth,le.height=Te.videoHeight,le.channels=4;else if(I2(Te)){var ge=le.width||Te[0].length,ke=le.height||Te.length,st=le.channels;st=It(Te[0][0])?st||Te[0][0].length:st||1;for(var _t=Kt.shape(Te),Ft=1,Mt=0;Mt<_t.length;++Mt)Ft*=_t[Mt];var bt=c1(le,Ft);Kt.flatten(Te,_t,"",bt),s1(le,bt),le.alignment=1,le.width=ge,le.height=ke,le.channels=st,le.format=le.internalformat=e1[st],le.needsFree=!0}}else le.width=le.width||1,le.height=le.height||1,le.channels=le.channels||4;le.type===Re?E(et.extensions.indexOf("oes_texture_float")>=0,"oes_texture_float extension not enabled"):le.type===K&&E(et.extensions.indexOf("oes_texture_half_float")>=0,"oes_texture_half_float extension not enabled")}function p2(le,be,Te){var Ee=le.element,Ie=le.data,ot=le.internalformat,je=le.format,xe=le.type,Ae=le.width,Oe=le.height;a2(le),Ee?he.texImage2D(be,Te,je,je,xe,Ee):le.compressed?he.compressedTexImage2D(be,Te,ot,Ae,Oe,0,Ie):le.needsCopy?(Ot(),he.copyTexImage2D(be,Te,je,le.xOffset,le.yOffset,Ae,Oe,0)):he.texImage2D(be,Te,je,Ae,Oe,0,je,xe,Ie||null)}function _n(le,be,Te,Ee,Ie){var ot=le.element,je=le.data,xe=le.internalformat,Ae=le.format,Oe=le.type,We=le.width,Ge=le.height;a2(le),ot?he.texSubImage2D(be,Ie,Te,Ee,Ae,Oe,ot):le.compressed?he.compressedTexSubImage2D(be,Ie,Te,Ee,xe,We,Ge,je):le.needsCopy?(Ot(),he.copyTexSubImage2D(be,Ie,Te,Ee,le.xOffset,le.yOffset,We,Ge)):he.texSubImage2D(be,Ie,Te,Ee,We,Ge,Ae,Oe,je)}var an=[];function rn(){return an.pop()||new P1}function q2(le){le.needsFree&&Je.freeType(le.data),P1.call(le),an.push(le)}function ln(){j1.call(this),this.genMipmaps=!1,this.mipmapHint=tt,this.mipmask=0,this.images=Array(16)}function kn(le,be,Te){var Ee=le.images[0]=rn();le.mipmask=1,Ee.width=le.width=be,Ee.height=le.height=Te,Ee.channels=le.channels=4}function F2(le,be){var Te=null;if(pt(be))V1(Te=le.images[0]=rn(),le),T2(Te,be),le.mipmask=1;else if(h2(le,be),Array.isArray(be.mipmap))for(var Ee=be.mipmap,Ie=0;Ie<Ee.length;++Ie)V1(Te=le.images[Ie]=rn(),le),Te.width>>=Ie,Te.height>>=Ie,T2(Te,Ee[Ie]),le.mipmask|=1<<Ie;else V1(Te=le.images[0]=rn(),le),T2(Te,be),le.mipmask=1;V1(le,le.images[0]),!le.compressed||le.internalformat!==ue&&le.internalformat!==se&&le.internalformat!==ne&&le.internalformat!==J||E(le.width%4==0&&le.height%4==0,"for compressed texture formats, mipmap level 0 must have width and height that are a multiple of 4")}function dn(le,be){for(var Te=le.images,Ee=0;Ee<Te.length;++Ee){if(!Te[Ee])return;p2(Te[Ee],be,Ee)}}var gn=[];function Qn(){var le=gn.pop()||new ln;j1.call(le),le.mipmask=0;for(var be=0;be<16;++be)le.images[be]=null;return le}function vn(le){for(var be=le.images,Te=0;Te<be.length;++Te)be[Te]&&q2(be[Te]),be[Te]=null;gn.push(le)}function Tn(){this.minFilter=Y,this.magFilter=Y,this.wrapS=ct,this.wrapT=ct,this.anisotropic=1,this.genMipmaps=!1,this.mipmapHint=tt}function Sn(le,be){if("min"in be){var Te=be.min;E.parameter(Te,Ce),le.minFilter=Ce[Te],Lt.indexOf(le.minFilter)>=0&&!("faces"in be)&&(le.genMipmaps=!0)}if("mag"in be){var Ee=be.mag;E.parameter(Ee,Fe),le.magFilter=Fe[Ee]}var Ie=le.wrapS,ot=le.wrapT;if("wrap"in be){var je=be.wrap;typeof je=="string"?(E.parameter(je,Se),Ie=ot=Se[je]):Array.isArray(je)&&(E.parameter(je[0],Se),E.parameter(je[1],Se),Ie=Se[je[0]],ot=Se[je[1]])}else{if("wrapS"in be){var xe=be.wrapS;E.parameter(xe,Se),Ie=Se[xe]}if("wrapT"in be){var Ae=be.wrapT;E.parameter(Ae,Se),ot=Se[Ae]}}if(le.wrapS=Ie,le.wrapT=ot,"anisotropic"in be){var Oe=be.anisotropic;E(typeof Oe=="number"&&Oe>=1&&Oe<=et.maxAnisotropic,"aniso samples must be between 1 and "),le.anisotropic=be.anisotropic}if("mipmap"in be){var We=!1;switch(typeof be.mipmap){case"string":E.parameter(be.mipmap,ve,"invalid mipmap hint"),le.mipmapHint=ve[be.mipmap],le.genMipmaps=!0,We=!0;break;case"boolean":We=le.genMipmaps=be.mipmap;break;case"object":E(Array.isArray(be.mipmap),"invalid mipmap type"),le.genMipmaps=!1,We=!0;break;default:E.raise("invalid mipmap type")}We&&!("min"in be)&&(le.minFilter=de)}}function Cn(le,be){he.texParameteri(be,10241,le.minFilter),he.texParameteri(be,10240,le.magFilter),he.texParameteri(be,10242,le.wrapS),he.texParameteri(be,10243,le.wrapT),Me.ext_texture_filter_anisotropic&&he.texParameteri(be,34046,le.anisotropic),le.genMipmaps&&(he.hint(33170,le.mipmapHint),he.generateMipmap(be))}var Kn=0,en={},cn=et.maxTextureUnits,Ue=Array(cn).map(function(){return null});function fe(le){j1.call(this),this.mipmask=0,this.internalformat=A1,this.id=Kn++,this.refCount=1,this.target=le,this.texture=he.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new Tn,te.profile&&(this.stats={size:0})}function Ke(le){he.activeTexture(ht),he.bindTexture(le.target,le.texture)}function kt(){var le=Ue[0];le?he.bindTexture(le.target,le.texture):he.bindTexture(Zt,null)}function Gt(le){var be=le.texture;E(be,"must not double destroy texture");var Te=le.unit,Ee=le.target;Te>=0&&(he.activeTexture(ht+Te),he.bindTexture(Ee,null),Ue[Te]=null),he.deleteTexture(be),le.texture=null,le.params=null,le.pixels=null,le.refCount=0,delete en[le.id],Jt.textureCount--}return p(fe.prototype,{bind:function(){var le=this;le.bindCount+=1;var be=le.unit;if(be<0){for(var Te=0;Te<cn;++Te){var Ee=Ue[Te];if(Ee){if(Ee.bindCount>0)continue;Ee.unit=-1}Ue[Te]=le,be=Te;break}be>=cn&&E.raise("insufficient number of texture units"),te.profile&&Jt.maxTextureUnits<be+1&&(Jt.maxTextureUnits=be+1),le.unit=be,he.activeTexture(ht+be),he.bindTexture(le.target,le.texture)}return be},unbind:function(){this.bindCount-=1},decRef:function(){--this.refCount<=0&&Gt(this)}}),te.profile&&(Jt.getTotalTextureSize=function(){var le=0;return Object.keys(en).forEach(function(be){le+=en[be].stats.size}),le}),{create2D:function(le,be){var Te=new fe(Zt);function Ee(Ie,ot){var je=Te.texInfo;Tn.call(je);var xe=Qn();return typeof Ie=="number"?kn(xe,0|Ie,typeof ot=="number"?0|ot:0|Ie):Ie?(E.type(Ie,"object","invalid arguments to regl.texture"),Sn(je,Ie),F2(xe,Ie)):kn(xe,1,1),je.genMipmaps&&(xe.mipmask=(xe.width<<1)-1),Te.mipmask=xe.mipmask,V1(Te,xe),E.texture2D(je,xe,et),Te.internalformat=xe.internalformat,Ee.width=xe.width,Ee.height=xe.height,Ke(Te),dn(xe,Zt),Cn(je,Zt),kt(),vn(xe),te.profile&&(Te.stats.size=y1(Te.internalformat,Te.type,xe.width,xe.height,je.genMipmaps,!1)),Ee.format=o1[Te.internalformat],Ee.type=x1[Te.type],Ee.mag=O1[je.magFilter],Ee.min=_1[je.minFilter],Ee.wrapS=B1[je.wrapS],Ee.wrapT=B1[je.wrapT],Ee}return en[Te.id]=Te,Jt.textureCount++,Ee(le,be),Ee.subimage=function(Ie,ot,je,xe){E(!!Ie,"must specify image data");var Ae=0|ot,Oe=0|je,We=0|xe,Ge=rn();return V1(Ge,Te),Ge.width=0,Ge.height=0,T2(Ge,Ie),Ge.width=Ge.width||(Te.width>>We)-Ae,Ge.height=Ge.height||(Te.height>>We)-Oe,E(Te.type===Ge.type&&Te.format===Ge.format&&Te.internalformat===Ge.internalformat,"incompatible format for texture.subimage"),E(Ae>=0&&Oe>=0&&Ae+Ge.width<=Te.width&&Oe+Ge.height<=Te.height,"texture.subimage write out of bounds"),E(Te.mipmask&1<<We,"missing mipmap data"),E(Ge.data||Ge.element||Ge.needsCopy,"missing image data"),Ke(Te),_n(Ge,Zt,Ae,Oe,We),kt(),q2(Ge),Ee},Ee.resize=function(Ie,ot){var je=0|Ie,xe=0|ot||je;if(je===Te.width&&xe===Te.height)return Ee;Ee.width=Te.width=je,Ee.height=Te.height=xe,Ke(Te);for(var Ae=0;Te.mipmask>>Ae;++Ae){var Oe=je>>Ae,We=xe>>Ae;if(!Oe||!We)break;he.texImage2D(Zt,Ae,Te.format,Oe,We,0,Te.format,Te.type,null)}return kt(),te.profile&&(Te.stats.size=y1(Te.internalformat,Te.type,je,xe,!1,!1)),Ee},Ee._reglType="texture2d",Ee._texture=Te,te.profile&&(Ee.stats=Te.stats),Ee.destroy=function(){Te.decRef()},Ee},createCube:function(le,be,Te,Ee,Ie,ot){var je=new fe(b1);en[je.id]=je,Jt.cubeCount++;var xe=new Array(6);function Ae(Oe,We,Ge,Pe,ze,ge){var ke,st=je.texInfo;for(Tn.call(st),ke=0;ke<6;++ke)xe[ke]=Qn();if(typeof Oe!="number"&&Oe)if(typeof Oe=="object")if(We)F2(xe[0],Oe),F2(xe[1],We),F2(xe[2],Ge),F2(xe[3],Pe),F2(xe[4],ze),F2(xe[5],ge);else if(Sn(st,Oe),h2(je,Oe),"faces"in Oe){var _t=Oe.faces;for(E(Array.isArray(_t)&&_t.length===6,"cube faces must be a length 6 array"),ke=0;ke<6;++ke)E(typeof _t[ke]=="object"&&!!_t[ke],"invalid input for cube map face"),V1(xe[ke],je),F2(xe[ke],_t[ke])}else for(ke=0;ke<6;++ke)F2(xe[ke],Oe);else E.raise("invalid arguments to cube map");else{var Ft=0|Oe||1;for(ke=0;ke<6;++ke)kn(xe[ke],Ft,Ft)}for(V1(je,xe[0]),E.optional(function(){et.npotTextureCube||E(Ut(je.width)&&Ut(je.height),"your browser does not support non power or two texture dimensions")}),st.genMipmaps?je.mipmask=(xe[0].width<<1)-1:je.mipmask=xe[0].mipmask,E.textureCube(je,st,xe,et),je.internalformat=xe[0].internalformat,Ae.width=xe[0].width,Ae.height=xe[0].height,Ke(je),ke=0;ke<6;++ke)dn(xe[ke],k1+ke);for(Cn(st,b1),kt(),te.profile&&(je.stats.size=y1(je.internalformat,je.type,Ae.width,Ae.height,st.genMipmaps,!0)),Ae.format=o1[je.internalformat],Ae.type=x1[je.type],Ae.mag=O1[st.magFilter],Ae.min=_1[st.minFilter],Ae.wrapS=B1[st.wrapS],Ae.wrapT=B1[st.wrapT],ke=0;ke<6;++ke)vn(xe[ke]);return Ae}return Ae(le,be,Te,Ee,Ie,ot),Ae.subimage=function(Oe,We,Ge,Pe,ze){E(!!We,"must specify image data"),E(typeof Oe=="number"&&Oe===(0|Oe)&&Oe>=0&&Oe<6,"invalid face");var ge=0|Ge,ke=0|Pe,st=0|ze,_t=rn();return V1(_t,je),_t.width=0,_t.height=0,T2(_t,We),_t.width=_t.width||(je.width>>st)-ge,_t.height=_t.height||(je.height>>st)-ke,E(je.type===_t.type&&je.format===_t.format&&je.internalformat===_t.internalformat,"incompatible format for texture.subimage"),E(ge>=0&&ke>=0&&ge+_t.width<=je.width&&ke+_t.height<=je.height,"texture.subimage write out of bounds"),E(je.mipmask&1<<st,"missing mipmap data"),E(_t.data||_t.element||_t.needsCopy,"missing image data"),Ke(je),_n(_t,k1+Oe,ge,ke,st),kt(),q2(_t),Ae},Ae.resize=function(Oe){var We=0|Oe;if(We!==je.width){Ae.width=je.width=We,Ae.height=je.height=We,Ke(je);for(var Ge=0;Ge<6;++Ge)for(var Pe=0;je.mipmask>>Pe;++Pe)he.texImage2D(k1+Ge,Pe,je.format,We>>Pe,We>>Pe,0,je.format,je.type,null);return kt(),te.profile&&(je.stats.size=y1(je.internalformat,je.type,Ae.width,Ae.height,!1,!0)),Ae}},Ae._reglType="textureCube",Ae._texture=je,te.profile&&(Ae.stats=je.stats),Ae.destroy=function(){je.decRef()},Ae},clear:function(){for(var le=0;le<cn;++le)he.activeTexture(ht+le),he.bindTexture(Zt,null),Ue[le]=null;Bt(en).forEach(Gt),Jt.cubeCount=0,Jt.textureCount=0},getTexture:function(le){return null},restore:function(){for(var le=0;le<cn;++le){var be=Ue[le];be&&(be.bindCount=0,be.unit=-1,Ue[le]=null)}Bt(en).forEach(function(Te){Te.texture=he.createTexture(),he.bindTexture(Te.target,Te.texture);for(var Ee=0;Ee<32;++Ee)if(Te.mipmask&1<<Ee)if(Te.target===Zt)he.texImage2D(Zt,Ee,Te.internalformat,Te.width>>Ee,Te.height>>Ee,0,Te.internalformat,Te.type,null);else for(var Ie=0;Ie<6;++Ie)he.texImage2D(k1+Ie,Ee,Te.internalformat,Te.width>>Ee,Te.height>>Ee,0,Te.internalformat,Te.type,null);Cn(Te.texInfo,Te.target)})},refresh:function(){for(var le=0;le<cn;++le){var be=Ue[le];be&&(be.bindCount=0,be.unit=-1,Ue[le]=null),he.activeTexture(ht+le),he.bindTexture(Zt,null),he.bindTexture(b1,null)}}}}e2[32854]=2,e2[32855]=2,e2[36194]=2,e2[34041]=4,e2[33776]=.5,e2[33777]=.5,e2[33778]=1,e2[33779]=1,e2[35986]=.5,e2[35987]=1,e2[34798]=1,e2[35840]=.5,e2[35841]=.25,e2[35842]=.5,e2[35843]=.25,e2[36196]=.5;var I1=36161,w1=32854,L1=[];function X1(he,Me,et){return L1[he]*Me*et}L1[32854]=2,L1[32855]=2,L1[36194]=2,L1[33189]=2,L1[36168]=1,L1[34041]=4,L1[35907]=4,L1[34836]=16,L1[34842]=8,L1[34843]=6;var N1=36160,J1=36161,l2=3553,b2=34069,N2=[6407,6408],E2=[];E2[6408]=4,E2[6407]=3;var X2=[];X2[5121]=1,X2[5126]=4,X2[36193]=2;var tn=[32854,32855,36194,35907,34842,34843,34836],Y2={36053:"complete",36054:"incomplete attachment",36057:"incomplete dimensions",36055:"incomplete, missing attachment",36061:"unsupported"},L2=34963,K2=["attributes","elements","offset","count","primitive","instances"];function Vn(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.offset=0,this.stride=0,this.divisor=0}var Rn=5121,Zn=5126;function T3(he,Me,et,Ot,Nt,Jt,te){function ve(Se){var Fe;Me.next===null?(E(Nt.preserveDrawingBuffer,'you must create a webgl context with "preserveDrawingBuffer":true in order to read pixels from the drawing buffer'),Fe=Rn):(E(Me.next.colorAttachments[0].texture!==null,"You cannot read from a renderbuffer"),Fe=Me.next.colorAttachments[0].texture._texture.type,E.optional(function(){Jt.oes_texture_float?(E(Fe===Rn||Fe===Zn,"Reading from a framebuffer is only allowed for the types 'uint8' and 'float'"),Fe===Zn&&E(te.readFloat,"Reading 'float' values is not permitted in your browser. For a fallback, please see: https://www.npmjs.com/package/glsl-read-float")):E(Fe===Rn,"Reading from a framebuffer is only allowed for the type 'uint8'")}));var Ce=0,it=0,ut=Ot.framebufferWidth,ft=Ot.framebufferHeight,Ct=null;g(Se)?Ct=Se:Se&&(E.type(Se,"object","invalid arguments to regl.read()"),Ce=0|Se.x,it=0|Se.y,E(Ce>=0&&Ce<Ot.framebufferWidth,"invalid x offset for regl.read"),E(it>=0&&it<Ot.framebufferHeight,"invalid y offset for regl.read"),ut=0|(Se.width||Ot.framebufferWidth-Ce),ft=0|(Se.height||Ot.framebufferHeight-it),Ct=Se.data||null),Ct&&(Fe===Rn?E(Ct instanceof Uint8Array,"buffer must be 'Uint8Array' when reading from a framebuffer of type 'uint8'"):Fe===Zn&&E(Ct instanceof Float32Array,"buffer must be 'Float32Array' when reading from a framebuffer of type 'float'")),E(ut>0&&ut+Ce<=Ot.framebufferWidth,"invalid width for read pixels"),E(ft>0&&ft+it<=Ot.framebufferHeight,"invalid height for read pixels"),et();var Yt=ut*ft*4;return Ct||(Fe===Rn?Ct=new Uint8Array(Yt):Fe===Zn&&(Ct=Ct||new Float32Array(Yt))),E.isTypedArray(Ct,"data buffer for regl.read() must be a typedarray"),E(Ct.byteLength>=Yt,"data buffer for regl.read() too small"),he.pixelStorei(3333,4),he.readPixels(Ce,it,ut,ft,6408,Fe,Ct),Ct}return function(Se){return Se&&"framebuffer"in Se?function(Fe){var Ce;return Me.setFBO({framebuffer:Fe.framebuffer},function(){Ce=ve(Fe)}),Ce}(Se):ve(Se)}}function xn(he){return Array.prototype.slice.call(he)}function pn(he){return xn(he).join("")}var wn="xyzw".split(""),Un="dither",Jn="blend.enable",e3="blend.color",Pn="blend.equation",t3="blend.func",Mn="depth.enable",n3="depth.func",r3="depth.range",qn="depth.mask",i3="colorMask",c3="cull.enable",u3="cull.face",I="frontFace",z="lineWidth",G="polygonOffset.enable",Z="polygonOffset.offset",ee="sample.alpha",ce="sample.enable",pe="sample.coverage",Be="stencil.enable",qe="stencil.mask",at="stencil.func",At="stencil.opFront",Et="stencil.opBack",Tt="scissor.enable",gt="scissor.box",T1="viewport",C1="profile",p1="framebuffer",c2="vert",m2="frag",A2="elements",q1="primitive",M1="count",V2="offset",z1="instances",u2="vao",In="Width",$n="Height",k2=p1+In,J2=p1+$n,Ln="drawingBufferWidth",D2="drawingBufferHeight",En=[t3,Pn,at,At,Et,pe,T1,gt,Z],M2=34962,_2=34963,B2=5126,O2=35664,U2=35665,g2=35666,Y1=5124,x2=35667,R2=35668,v2=35669,j2=35670,un=35671,An=35672,Xn=35673,Nn=35674,Dn=35675,fn=35676,Bn=35678,jn=35680,zn=1028,nn=1029,o3=2305,on=7680,S2={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},sn=["constant color, constant alpha","one minus constant color, constant alpha","constant color, one minus constant alpha","one minus constant color, one minus constant alpha","constant alpha, constant color","constant alpha, one minus constant color","one minus constant alpha, constant color","one minus constant alpha, one minus constant color"],Hn={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},hn={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},s3={frag:35632,vert:35633},a3={cw:2304,ccw:o3};function r2(he){return Array.isArray(he)||g(he)||t1(he)}function Fn(he){return he.sort(function(Me,et){return Me===T1?-1:et===T1?1:Me<et?-1:1})}function i2(he,Me,et,Ot){this.thisDep=he,this.contextDep=Me,this.propDep=et,this.append=Ot}function C2(he){return he&&!(he.thisDep||he.contextDep||he.propDep)}function f2(he){return new i2(!1,!1,!1,he)}function z2(he,Me){var et=he.type;if(et===0){var Ot=he.data.length;return new i2(!0,Ot>=1,Ot>=2,Me)}if(et===4){var Nt=he.data;return new i2(Nt.thisDep,Nt.contextDep,Nt.propDep,Me)}if(et===5)return new i2(!1,!1,!1,Me);if(et===6){for(var Jt=!1,te=!1,ve=!1,Se=0;Se<he.data.length;++Se){var Fe=he.data[Se];if(Fe.type===1)ve=!0;else if(Fe.type===2)te=!0;else if(Fe.type===3)Jt=!0;else if(Fe.type===0){Jt=!0;var Ce=Fe.data;Ce>=1&&(te=!0),Ce>=2&&(ve=!0)}else Fe.type===4&&(Jt=Jt||Fe.data.thisDep,te=te||Fe.data.contextDep,ve=ve||Fe.data.propDep)}return new i2(Jt,te,ve,Me)}return new i2(et===3,et===2,et===1,Me)}var h3=new i2(!1,!1,!1,function(){});function p3(he,Me,et,Ot,Nt,Jt,te,ve,Se,Fe,Ce,it,ut,ft,Ct){var Yt=Fe.Record,Q1={add:32774,subtract:32778,"reverse subtract":32779};et.ext_blend_minmax&&(Q1.min=32775,Q1.max=32776);var o1=et.angle_instanced_arrays,x1=et.webgl_draw_buffers,O1=et.oes_vertex_array_object,_1={dirty:!0,profile:Ct.profile},B1={},$1=[],j1={},V1={};function h2(Ue){return Ue.replace(".","_")}function a2(Ue,fe,Ke){var kt=h2(Ue);$1.push(Ue),B1[kt]=_1[kt]=!!Ke,j1[kt]=fe}function P1(Ue,fe,Ke){var kt=h2(Ue);$1.push(Ue),Array.isArray(Ke)?(_1[kt]=Ke.slice(),B1[kt]=Ke.slice()):_1[kt]=B1[kt]=Ke,V1[kt]=fe}a2(Un,3024),a2(Jn,3042),P1(e3,"blendColor",[0,0,0,0]),P1(Pn,"blendEquationSeparate",[32774,32774]),P1(t3,"blendFuncSeparate",[1,0,1,0]),a2(Mn,2929,!0),P1(n3,"depthFunc",513),P1(r3,"depthRange",[0,1]),P1(qn,"depthMask",!0),P1(i3,i3,[!0,!0,!0,!0]),a2(c3,2884),P1(u3,"cullFace",nn),P1(I,I,o3),P1(z,z,1),a2(G,32823),P1(Z,"polygonOffset",[0,0]),a2(ee,32926),a2(ce,32928),P1(pe,"sampleCoverage",[1,!1]),a2(Be,2960),P1(qe,"stencilMask",-1),P1(at,"stencilFunc",[519,0,-1]),P1(At,"stencilOpSeparate",[zn,on,on,on]),P1(Et,"stencilOpSeparate",[nn,on,on,on]),a2(Tt,3089),P1(gt,"scissor",[0,0,he.drawingBufferWidth,he.drawingBufferHeight]),P1(T1,T1,[0,0,he.drawingBufferWidth,he.drawingBufferHeight]);var T2={gl:he,context:ut,strings:Me,next:B1,current:_1,draw:it,elements:Jt,buffer:Nt,shader:Ce,attributes:Fe.state,vao:Fe,uniforms:Se,framebuffer:ve,extensions:et,timer:ft,isBufferArgs:r2},p2={primTypes:Xt,compareFuncs:Hn,blendFuncs:S2,blendEquations:Q1,stencilOps:hn,glTypes:dt,orientationType:a3};E.optional(function(){T2.isArrayLike=It}),x1&&(p2.backBuffer=[nn],p2.drawBuffer=ae(Ot.maxDrawbuffers,function(Ue){return Ue===0?[0]:ae(Ue,function(fe){return 36064+fe})}));var _n=0;function an(){var Ue=function(){var Ie=0,ot=[],je=[];function xe(){var Ge=[],Pe=[];return p(function(){Ge.push.apply(Ge,xn(arguments))},{def:function(){var ze="v"+Ie++;return Pe.push(ze),arguments.length>0&&(Ge.push(ze,"="),Ge.push.apply(Ge,xn(arguments)),Ge.push(";")),ze},toString:function(){return pn([Pe.length>0?"var "+Pe.join(",")+";":"",pn(Ge)])}})}function Ae(){var Ge=xe(),Pe=xe(),ze=Ge.toString,ge=Pe.toString;function ke(st,_t){Pe(st,_t,"=",Ge.def(st,_t),";")}return p(function(){Ge.apply(Ge,xn(arguments))},{def:Ge.def,entry:Ge,exit:Pe,save:ke,set:function(st,_t,Ft){ke(st,_t),Ge(st,_t,"=",Ft,";")},toString:function(){return ze()+ge()}})}var Oe=xe(),We={};return{global:Oe,link:function(Ge){for(var Pe=0;Pe<je.length;++Pe)if(je[Pe]===Ge)return ot[Pe];var ze="g"+Ie++;return ot.push(ze),je.push(Ge),ze},block:xe,proc:function(Ge,Pe){var ze=[];function ge(){var Ft="a"+ze.length;return ze.push(Ft),Ft}Pe=Pe||0;for(var ke=0;ke<Pe;++ke)ge();var st=Ae(),_t=st.toString;return We[Ge]=p(st,{arg:ge,toString:function(){return pn(["function(",ze.join(),"){",_t(),"}"])}})},scope:Ae,cond:function(){var Ge=pn(arguments),Pe=Ae(),ze=Ae(),ge=Pe.toString,ke=ze.toString;return p(Pe,{then:function(){return Pe.apply(Pe,xn(arguments)),this},else:function(){return ze.apply(ze,xn(arguments)),this},toString:function(){var st=ke();return st&&(st="else{"+st+"}"),pn(["if(",Ge,"){",ge(),"}",st])}})},compile:function(){var Ge=['"use strict";',Oe,"return {"];Object.keys(We).forEach(function(ze){Ge.push('"',ze,'":',We[ze].toString(),",")}),Ge.push("}");var Pe=pn(Ge).replace(/;/g,`;
128
+ %c`+Jt,"color:red;text-decoration:underline;font-weight:bold","color:red"):console.log(ve+T+Jt),o.raise(ve)}},callSite:f,saveCommandRef:y,saveDrawInfo:function(he,Me,et,Ot){function Nt(Se){return Se?Ot.id(Se):0}function Jt(Se,Fe){Object.keys(Fe).forEach(function(Ce){Se[Ot.id(Ce)]=!0})}y(he),he._fragId=Nt(he.static.frag),he._vertId=Nt(he.static.vert);var te=he._uniformSet={};Jt(te,Me.static),Jt(te,Me.dynamic);var ve=he._attributeSet={};Jt(ve,et.static),Jt(ve,et.dynamic),he._hasCount="count"in he.static||"count"in he.dynamic||"elements"in he.static||"elements"in he.dynamic},framebufferFormat:function(he,Me,et){he.texture?t(he.texture._texture.internalformat,Me,"unsupported texture format for attachment"):t(he.renderbuffer._renderbuffer.format,et,"unsupported renderbuffer format for attachment")},guessCommand:m,texture2D:function(he,Me,et){var Ot,Nt=Me.width,Jt=Me.height,te=Me.channels;o(Nt>0&&Nt<=et.maxTextureSize&&Jt>0&&Jt<=et.maxTextureSize,"invalid texture shape"),he.wrapS===x&&he.wrapT===x||o(k(Nt)&&k(Jt),"incompatible wrap mode for texture, both width and height must be power of 2"),Me.mipmask===1?Nt!==1&&Jt!==1&&o(he.minFilter!==9984&&he.minFilter!==9986&&he.minFilter!==9985&&he.minFilter!==9987,"min filter requires mipmap"):(o(k(Nt)&&k(Jt),"texture must be a square power of 2 to support mipmapping"),o(Me.mipmask===(Nt<<1)-1,"missing or incomplete mipmap data")),Me.type===5126&&(et.extensions.indexOf("oes_texture_float_linear")<0&&o(he.minFilter===9728&&he.magFilter===9728,"filter not supported, must enable oes_texture_float_linear"),o(!he.genMipmaps,"mipmap generation not supported with float textures"));var ve=Me.images;for(Ot=0;Ot<16;++Ot)if(ve[Ot]){var Se=Nt>>Ot,Fe=Jt>>Ot;o(Me.mipmask&1<<Ot,"missing mipmap data");var Ce=ve[Ot];if(o(Ce.width===Se&&Ce.height===Fe,"invalid shape for mip images"),o(Ce.format===Me.format&&Ce.internalformat===Me.internalformat&&Ce.type===Me.type,"incompatible type for mip image"),!Ce.compressed)if(Ce.data){var it=Math.ceil(S(Ce.type,te)*Se/Ce.unpackAlignment)*Ce.unpackAlignment;o(Ce.data.byteLength===it*Fe,"invalid data for image, buffer size is inconsistent with image format")}else Ce.element||Ce.copy}else he.genMipmaps||o((Me.mipmask&1<<Ot)==0,"extra mipmap data");Me.compressed&&o(!he.genMipmaps,"mipmap generation for compressed images not supported")},textureCube:function(he,Me,et,Ot){var Nt=he.width,Jt=he.height,te=he.channels;o(Nt>0&&Nt<=Ot.maxTextureSize&&Jt>0&&Jt<=Ot.maxTextureSize,"invalid texture shape"),o(Nt===Jt,"cube map must be square"),o(Me.wrapS===x&&Me.wrapT===x,"wrap mode not supported by cube map");for(var ve=0;ve<et.length;++ve){var Se=et[ve];o(Se.width===Nt&&Se.height===Jt,"inconsistent cube map face shape"),Me.genMipmaps&&(o(!Se.compressed,"can not generate mipmap for compressed textures"),o(Se.mipmask===1,"can not specify mipmaps and generate mipmaps"));for(var Fe=Se.images,Ce=0;Ce<16;++Ce){var it=Fe[Ce];if(it){var ut=Nt>>Ce,ft=Jt>>Ce;o(Se.mipmask&1<<Ce,"missing mipmap data"),o(it.width===ut&&it.height===ft,"invalid shape for mip images"),o(it.format===he.format&&it.internalformat===he.internalformat&&it.type===he.type,"incompatible type for mip image"),it.compressed||(it.data?o(it.data.byteLength===ut*ft*Math.max(S(it.type,te),it.unpackAlignment),"invalid data for image, buffer size is inconsistent with image format"):it.element||it.copy)}}}}}),P=0;function N(he,Me){this.id=P++,this.type=he,this.data=Me}function B(he){return he.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function D(he){if(he.length===0)return[];var Me=he.charAt(0),et=he.charAt(he.length-1);if(he.length>1&&Me===et&&(Me==='"'||Me==="'"))return['"'+B(he.substr(1,he.length-2))+'"'];var Ot=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(he);if(Ot)return D(he.substr(0,Ot.index)).concat(D(Ot[1])).concat(D(he.substr(Ot.index+Ot[0].length)));var Nt=he.split(".");if(Nt.length===1)return['"'+B(he)+'"'];for(var Jt=[],te=0;te<Nt.length;++te)Jt=Jt.concat(D(Nt[te]));return Jt}function j(he){return"["+D(he).join("][")+"]"}var M={DynamicVariable:N,define:function(he,Me){return new N(he,j(Me+""))},isDynamic:function(he){return typeof he=="function"&&!he._reglType||he instanceof N},unbox:function he(Me,et){return typeof Me=="function"?new N(0,Me):typeof Me=="number"||typeof Me=="boolean"?new N(5,Me):Array.isArray(Me)?new N(6,Me.map(function(Ot,Nt){return he(Ot,et+"["+Nt+"]")})):Me instanceof N?Me:void E(!1,"invalid option type in uniform "+et)},accessor:j},F={next:typeof requestAnimationFrame=="function"?function(he){return requestAnimationFrame(he)}:function(he){return setTimeout(he,16)},cancel:typeof cancelAnimationFrame=="function"?function(he){return cancelAnimationFrame(he)}:clearTimeout},W=typeof performance<"u"&&performance.now?function(){return performance.now()}:function(){return+new Date};function U(he){return typeof he=="string"?he.split():(E(Array.isArray(he),"invalid extension array"),he)}function q(he){return typeof he=="string"?(E(typeof document<"u","not supported outside of DOM"),document.querySelector(he)):he}function X(he){var Me,et,Ot,Nt,Jt,te=he||{},ve={},Se=[],Fe=[],Ce=typeof window>"u"?1:window.devicePixelRatio,it=!1,ut=function(Yt){Yt&&E.raise(Yt)},ft=function(){};if(typeof te=="string"?(E(typeof document<"u","selector queries only supported in DOM enviroments"),Me=document.querySelector(te),E(Me,"invalid query string for element")):typeof te=="object"?typeof(Jt=te).nodeName=="string"&&typeof Jt.appendChild=="function"&&typeof Jt.getBoundingClientRect=="function"?Me=te:function(Yt){return typeof Yt.drawArrays=="function"||typeof Yt.drawElements=="function"}(te)?Ot=(Nt=te).canvas:(E.constructor(te),"gl"in te?Nt=te.gl:"canvas"in te?Ot=q(te.canvas):"container"in te&&(et=q(te.container)),"attributes"in te&&(ve=te.attributes,E.type(ve,"object","invalid context attributes")),"extensions"in te&&(Se=U(te.extensions)),"optionalExtensions"in te&&(Fe=U(te.optionalExtensions)),"onDone"in te&&(E.type(te.onDone,"function","invalid or missing onDone callback"),ut=te.onDone),"profile"in te&&(it=!!te.profile),"pixelRatio"in te&&(Ce=+te.pixelRatio,E(Ce>0,"invalid pixel ratio"))):E.raise("invalid arguments to regl"),Me&&(Me.nodeName.toLowerCase()==="canvas"?Ot=Me:et=Me),!Nt){if(!Ot){E(typeof document<"u","must manually specify webgl context outside of DOM environments");var Ct=function(Yt,Q1,o1){var x1,O1=document.createElement("canvas");function _1(){var B1=window.innerWidth,$1=window.innerHeight;if(Yt!==document.body){var j1=O1.getBoundingClientRect();B1=j1.right-j1.left,$1=j1.bottom-j1.top}O1.width=o1*B1,O1.height=o1*$1}return p(O1.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"}),Yt.appendChild(O1),Yt===document.body&&(O1.style.position="absolute",p(Yt.style,{margin:0,padding:0})),Yt!==document.body&&typeof ResizeObserver=="function"?(x1=new ResizeObserver(function(){setTimeout(_1)})).observe(Yt):window.addEventListener("resize",_1,!1),_1(),{canvas:O1,onDestroy:function(){x1?x1.disconnect():window.removeEventListener("resize",_1),Yt.removeChild(O1)}}}(et||document.body,0,Ce);if(!Ct)return null;Ot=Ct.canvas,ft=Ct.onDestroy}ve.premultipliedAlpha===void 0&&(ve.premultipliedAlpha=!0),Nt=function(Yt,Q1){function o1(x1){try{return Yt.getContext(x1,Q1)}catch{return null}}return o1("webgl")||o1("experimental-webgl")||o1("webgl-experimental")}(Ot,ve)}return Nt?{gl:Nt,canvas:Ot,container:et,extensions:Se,optionalExtensions:Fe,pixelRatio:Ce,profile:it,onDone:ut,onDestroy:ft}:(ft(),ut("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function ae(he,Me){for(var et=Array(he),Ot=0;Ot<he;++Ot)et[Ot]=Me(Ot);return et}function me(he){var Me,et;return Me=(he>65535)<<4,Me|=et=((he>>>=Me)>255)<<3,Me|=et=((he>>>=et)>15)<<2,(Me|=et=((he>>>=et)>3)<<1)|(he>>>=et)>>1}function Ve(){var he=ae(8,function(){return[]});function Me(Ot){var Nt=function(te){for(var ve=16;ve<=268435456;ve*=16)if(te<=ve)return ve;return 0}(Ot),Jt=he[me(Nt)>>2];return Jt.length>0?Jt.pop():new ArrayBuffer(Nt)}function et(Ot){he[me(Ot.byteLength)>>2].push(Ot)}return{alloc:Me,free:et,allocType:function(Ot,Nt){var Jt=null;switch(Ot){case 5120:Jt=new Int8Array(Me(Nt),0,Nt);break;case 5121:Jt=new Uint8Array(Me(Nt),0,Nt);break;case 5122:Jt=new Int16Array(Me(2*Nt),0,Nt);break;case 5123:Jt=new Uint16Array(Me(2*Nt),0,Nt);break;case 5124:Jt=new Int32Array(Me(4*Nt),0,Nt);break;case 5125:Jt=new Uint32Array(Me(4*Nt),0,Nt);break;case 5126:Jt=new Float32Array(Me(4*Nt),0,Nt);break;default:return null}return Jt.length!==Nt?Jt.subarray(0,Nt):Jt},freeType:function(Ot){et(Ot.buffer)}}}var Je=Ve();Je.zero=Ve();var rt=3553,yt=6408,xt=5126,r1=36160;function t1(he){return!!he&&typeof he=="object"&&Array.isArray(he.shape)&&Array.isArray(he.stride)&&typeof he.offset=="number"&&he.shape.length===he.stride.length&&(Array.isArray(he.data)||g(he.data))}var Bt=function(he){return Object.keys(he).map(function(Me){return he[Me]})},Kt={shape:function(he){for(var Me=[],et=he;et.length;et=et[0])Me.push(et.length);return Me},flatten:function(he,Me,et,Ot){var Nt=1;if(Me.length)for(var Jt=0;Jt<Me.length;++Jt)Nt*=Me[Jt];else Nt=0;var te=Ot||Je.allocType(et,Nt);switch(Me.length){case 0:break;case 1:(function(ve,Se,Fe){for(var Ce=0;Ce<Se;++Ce)Fe[Ce]=ve[Ce]})(he,Me[0],te);break;case 2:(function(ve,Se,Fe,Ce){for(var it=0,ut=0;ut<Se;++ut)for(var ft=ve[ut],Ct=0;Ct<Fe;++Ct)Ce[it++]=ft[Ct]})(he,Me[0],Me[1],te);break;case 3:wt(he,Me[0],Me[1],Me[2],te,0);break;default:Rt(he,Me,0,te,0)}return te}};function wt(he,Me,et,Ot,Nt,Jt){for(var te=Jt,ve=0;ve<Me;++ve)for(var Se=he[ve],Fe=0;Fe<et;++Fe)for(var Ce=Se[Fe],it=0;it<Ot;++it)Nt[te++]=Ce[it]}function Rt(he,Me,et,Ot,Nt){for(var Jt=1,te=et+1;te<Me.length;++te)Jt*=Me[te];var ve=Me[et];if(Me.length-et==4){var Se=Me[et+1],Fe=Me[et+2],Ce=Me[et+3];for(te=0;te<ve;++te)wt(he[te],Se,Fe,Ce,Ot,Nt),Nt+=Jt}else for(te=0;te<ve;++te)Rt(he[te],Me,et+1,Ot,Nt),Nt+=Jt}var Ht={"[object Int8Array]":5120,"[object Int16Array]":5122,"[object Int32Array]":5124,"[object Uint8Array]":5121,"[object Uint8ClampedArray]":5121,"[object Uint16Array]":5123,"[object Uint32Array]":5125,"[object Float32Array]":5126,"[object Float64Array]":5121,"[object ArrayBuffer]":5121},dt={int8:5120,int16:5122,int32:5124,uint8:5121,uint16:5123,uint32:5125,float:5126,float32:5126},Wt={dynamic:35048,stream:35040,static:35044},jt=Kt.flatten,a1=Kt.shape,ye=5121,ie=5126,nt=[];function St(he){return 0|Ht[Object.prototype.toString.call(he)]}function mt(he,Me){for(var et=0;et<Me.length;++et)he[et]=Me[et]}function Pt(he,Me,et,Ot,Nt,Jt,te){for(var ve=0,Se=0;Se<et;++Se)for(var Fe=0;Fe<Ot;++Fe)he[ve++]=Me[Nt*Se+Jt*Fe+te]}nt[5120]=1,nt[5122]=2,nt[5124]=4,nt[5121]=1,nt[5123]=2,nt[5125]=4,nt[5126]=4;var Xt={points:0,point:0,lines:1,line:1,triangles:4,triangle:4,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},u1=5121,v1=5123,h1=5125,De=34963,Ze=new Float32Array(1),$e=new Uint32Array(Ze.buffer);function Qt(he){for(var Me=Je.allocType(5123,he.length),et=0;et<he.length;++et)if(isNaN(he[et]))Me[et]=65535;else if(he[et]===1/0)Me[et]=31744;else if(he[et]===-1/0)Me[et]=64512;else{Ze[0]=he[et];var Ot=$e[0],Nt=Ot>>>31<<15,Jt=(Ot<<1>>>24)-127,te=Ot>>13&1023;if(Jt<-24)Me[et]=Nt;else if(Jt<-14){var ve=-14-Jt;Me[et]=Nt+(te+1024>>ve)}else Me[et]=Jt>15?Nt+31744:Nt+(Jt+15<<10)+te}return Me}function It(he){return Array.isArray(he)||g(he)}var Ut=function(he){return!(he&he-1||!he)},Zt=3553,b1=34067,k1=34069,A1=6408,W1=6406,S1=6407,Z1=6409,o2=6410,d2=32855,Q2=6402,w2=34041,P2=35904,oe=35906,K=36193,ue=33776,se=33777,ne=33778,J=33779,re=5121,Qe=5123,Le=5125,Re=5126,ct=33071,Y=9728,de=9984,He=9987,tt=4352,ht=33984,Lt=[de,9986,9985,He],e1=[0,Z1,o2,S1,A1],m1={};function n1(he){return"[object "+he+"]"}m1[6409]=m1[6406]=m1[6402]=1,m1[34041]=m1[6410]=2,m1[6407]=m1[35904]=3,m1[6408]=m1[35906]=4;var E1=n1("HTMLCanvasElement"),K1=n1("OffscreenCanvas"),D1=n1("CanvasRenderingContext2D"),U1=n1("ImageBitmap"),t2=n1("HTMLImageElement"),R1=n1("HTMLVideoElement"),y2=Object.keys(Ht).concat([E1,K1,D1,U1,t2,R1]),n2=[];n2[5121]=1,n2[5126]=4,n2[36193]=2,n2[5123]=2,n2[5125]=4;var e2=[];function Z2(he){return Array.isArray(he)&&(he.length===0||typeof he[0]=="number")}function I2(he){return!!Array.isArray(he)&&!(he.length===0||!It(he[0]))}function s2(he){return Object.prototype.toString.call(he)}function Ye(he){return s2(he)===E1}function lt(he){return s2(he)===K1}function pt(he){if(!he)return!1;var Me=s2(he);return y2.indexOf(Me)>=0||Z2(he)||I2(he)||t1(he)}function Dt(he){return 0|Ht[Object.prototype.toString.call(he)]}function c1(he,Me){return Je.allocType(he.type===K?Re:he.type,Me)}function s1(he,Me){he.type===K?(he.data=Qt(Me),Je.freeType(Me)):he.data=Me}function y1(he,Me,et,Ot,Nt,Jt){var te;if(te=e2[he]!==void 0?e2[he]:m1[he]*n2[Me],Jt&&(te*=6),Nt){for(var ve=0,Se=et;Se>=1;)ve+=te*Se*Se,Se/=2;return ve}return te*et*Ot}function g1(he,Me,et,Ot,Nt,Jt,te){var ve={"don't care":tt,"dont care":tt,nice:4354,fast:4353},Se={repeat:10497,clamp:ct,mirror:33648},Fe={nearest:Y,linear:9729},Ce=p({mipmap:He,"nearest mipmap nearest":de,"linear mipmap nearest":9985,"nearest mipmap linear":9986,"linear mipmap linear":He},Fe),it={none:0,browser:37444},ut={uint8:re,rgba4:32819,rgb565:33635,"rgb5 a1":32820},ft={alpha:W1,luminance:Z1,"luminance alpha":o2,rgb:S1,rgba:A1,rgba4:32854,"rgb5 a1":d2,rgb565:36194},Ct={};Me.ext_srgb&&(ft.srgb=P2,ft.srgba=oe),Me.oes_texture_float&&(ut.float32=ut.float=Re),Me.oes_texture_half_float&&(ut.float16=ut["half float"]=K),Me.webgl_depth_texture&&(p(ft,{depth:Q2,"depth stencil":w2}),p(ut,{uint16:Qe,uint32:Le,"depth stencil":34042})),Me.webgl_compressed_texture_s3tc&&p(Ct,{"rgb s3tc dxt1":ue,"rgba s3tc dxt1":se,"rgba s3tc dxt3":ne,"rgba s3tc dxt5":J}),Me.webgl_compressed_texture_atc&&p(Ct,{"rgb atc":35986,"rgba atc explicit alpha":35987,"rgba atc interpolated alpha":34798}),Me.webgl_compressed_texture_pvrtc&&p(Ct,{"rgb pvrtc 4bppv1":35840,"rgb pvrtc 2bppv1":35841,"rgba pvrtc 4bppv1":35842,"rgba pvrtc 2bppv1":35843}),Me.webgl_compressed_texture_etc1&&(Ct["rgb etc1"]=36196);var Yt=Array.prototype.slice.call(he.getParameter(34467));Object.keys(Ct).forEach(function(le){var be=Ct[le];Yt.indexOf(be)>=0&&(ft[le]=be)});var Q1=Object.keys(ft);et.textureFormats=Q1;var o1=[];Object.keys(ft).forEach(function(le){var be=ft[le];o1[be]=le});var x1=[];Object.keys(ut).forEach(function(le){var be=ut[le];x1[be]=le});var O1=[];Object.keys(Fe).forEach(function(le){O1[Fe[le]]=le});var _1=[];Object.keys(Ce).forEach(function(le){var be=Ce[le];_1[be]=le});var B1=[];Object.keys(Se).forEach(function(le){B1[Se[le]]=le});var $1=Q1.reduce(function(le,be){var Te=ft[be];return Te===Z1||Te===W1||Te===Z1||Te===o2||Te===Q2||Te===w2||Me.ext_srgb&&(Te===P2||Te===oe)?le[Te]=Te:Te===d2||be.indexOf("rgba")>=0?le[Te]=A1:le[Te]=S1,le},{});function j1(){this.internalformat=A1,this.format=A1,this.type=re,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=37444,this.width=0,this.height=0,this.channels=0}function V1(le,be){le.internalformat=be.internalformat,le.format=be.format,le.type=be.type,le.compressed=be.compressed,le.premultiplyAlpha=be.premultiplyAlpha,le.flipY=be.flipY,le.unpackAlignment=be.unpackAlignment,le.colorSpace=be.colorSpace,le.width=be.width,le.height=be.height,le.channels=be.channels}function h2(le,be){if(typeof be=="object"&&be){if("premultiplyAlpha"in be&&(E.type(be.premultiplyAlpha,"boolean","invalid premultiplyAlpha"),le.premultiplyAlpha=be.premultiplyAlpha),"flipY"in be&&(E.type(be.flipY,"boolean","invalid texture flip"),le.flipY=be.flipY),"alignment"in be&&(E.oneOf(be.alignment,[1,2,4,8],"invalid texture unpack alignment"),le.unpackAlignment=be.alignment),"colorSpace"in be&&(E.parameter(be.colorSpace,it,"invalid colorSpace"),le.colorSpace=it[be.colorSpace]),"type"in be){var Te=be.type;E(Me.oes_texture_float||!(Te==="float"||Te==="float32"),"you must enable the OES_texture_float extension in order to use floating point textures."),E(Me.oes_texture_half_float||!(Te==="half float"||Te==="float16"),"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures."),E(Me.webgl_depth_texture||!(Te==="uint16"||Te==="uint32"||Te==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),E.parameter(Te,ut,"invalid texture type"),le.type=ut[Te]}var Ee=le.width,Ie=le.height,ot=le.channels,je=!1;"shape"in be?(E(Array.isArray(be.shape)&&be.shape.length>=2,"shape must be an array"),Ee=be.shape[0],Ie=be.shape[1],be.shape.length===3&&(ot=be.shape[2],E(ot>0&&ot<=4,"invalid number of channels"),je=!0),E(Ee>=0&&Ee<=et.maxTextureSize,"invalid width"),E(Ie>=0&&Ie<=et.maxTextureSize,"invalid height")):("radius"in be&&(Ee=Ie=be.radius,E(Ee>=0&&Ee<=et.maxTextureSize,"invalid radius")),"width"in be&&(Ee=be.width,E(Ee>=0&&Ee<=et.maxTextureSize,"invalid width")),"height"in be&&(Ie=be.height,E(Ie>=0&&Ie<=et.maxTextureSize,"invalid height")),"channels"in be&&(ot=be.channels,E(ot>0&&ot<=4,"invalid number of channels"),je=!0)),le.width=0|Ee,le.height=0|Ie,le.channels=0|ot;var xe=!1;if("format"in be){var Ae=be.format;E(Me.webgl_depth_texture||!(Ae==="depth"||Ae==="depth stencil"),"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures."),E.parameter(Ae,ft,"invalid texture format");var Oe=le.internalformat=ft[Ae];le.format=$1[Oe],Ae in ut&&("type"in be||(le.type=ut[Ae])),Ae in Ct&&(le.compressed=!0),xe=!0}!je&&xe?le.channels=m1[le.format]:je&&!xe?le.channels!==e1[le.format]&&(le.format=le.internalformat=e1[le.channels]):xe&&je&&E(le.channels===m1[le.format],"number of channels inconsistent with specified format")}}function a2(le){he.pixelStorei(37440,le.flipY),he.pixelStorei(37441,le.premultiplyAlpha),he.pixelStorei(37443,le.colorSpace),he.pixelStorei(3317,le.unpackAlignment)}function P1(){j1.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function T2(le,be){var Te=null;if(pt(be)?Te=be:be&&(E.type(be,"object","invalid pixel data type"),h2(le,be),"x"in be&&(le.xOffset=0|be.x),"y"in be&&(le.yOffset=0|be.y),pt(be.data)&&(Te=be.data)),E(!le.compressed||Te instanceof Uint8Array,"compressed texture data must be stored in a uint8array"),be.copy){E(!Te,"can not specify copy and data field for the same texture");var Ee=Nt.viewportWidth,Ie=Nt.viewportHeight;le.width=le.width||Ee-le.xOffset,le.height=le.height||Ie-le.yOffset,le.needsCopy=!0,E(le.xOffset>=0&&le.xOffset<Ee&&le.yOffset>=0&&le.yOffset<Ie&&le.width>0&&le.width<=Ee&&le.height>0&&le.height<=Ie,"copy texture read out of bounds")}else if(Te){if(g(Te))le.channels=le.channels||4,le.data=Te,"type"in be||le.type!==re||(le.type=Dt(Te));else if(Z2(Te))le.channels=le.channels||4,function(Xe,_e){var we=_e.length;switch(Xe.type){case re:case Qe:case Le:case Re:var Ne=Je.allocType(Xe.type,we);Ne.set(_e),Xe.data=Ne;break;case K:Xe.data=Qt(_e);break;default:E.raise("unsupported texture type, must specify a typed array")}}(le,Te),le.alignment=1,le.needsFree=!0;else if(t1(Te)){var ot=Te.data;Array.isArray(ot)||le.type!==re||(le.type=Dt(ot));var je,xe,Ae,Oe,We,Ge,Pe=Te.shape,ze=Te.stride;Pe.length===3?(Ae=Pe[2],Ge=ze[2]):(E(Pe.length===2,"invalid ndarray pixel data, must be 2 or 3D"),Ae=1,Ge=1),je=Pe[0],xe=Pe[1],Oe=ze[0],We=ze[1],le.alignment=1,le.width=je,le.height=xe,le.channels=Ae,le.format=le.internalformat=e1[Ae],le.needsFree=!0,function(Xe,_e,we,Ne,vt,qt){for(var $t=Xe.width,Vt=Xe.height,f1=Xe.channels,l1=c1(Xe,$t*Vt*f1),d1=0,i1=0;i1<Vt;++i1)for(var zt=0;zt<$t;++zt)for(var H1=0;H1<f1;++H1)l1[d1++]=_e[we*zt+Ne*i1+vt*H1+qt];s1(Xe,l1)}(le,ot,Oe,We,Ge,Te.offset)}else if(Ye(Te)||lt(Te)||s2(Te)===D1)Ye(Te)||lt(Te)?le.element=Te:le.element=Te.canvas,le.width=le.element.width,le.height=le.element.height,le.channels=4;else if(function(Xe){return s2(Xe)===U1}(Te))le.element=Te,le.width=Te.width,le.height=Te.height,le.channels=4;else if(function(Xe){return s2(Xe)===t2}(Te))le.element=Te,le.width=Te.naturalWidth,le.height=Te.naturalHeight,le.channels=4;else if(function(Xe){return s2(Xe)===R1}(Te))le.element=Te,le.width=Te.videoWidth,le.height=Te.videoHeight,le.channels=4;else if(I2(Te)){var ge=le.width||Te[0].length,ke=le.height||Te.length,st=le.channels;st=It(Te[0][0])?st||Te[0][0].length:st||1;for(var _t=Kt.shape(Te),Ft=1,Mt=0;Mt<_t.length;++Mt)Ft*=_t[Mt];var bt=c1(le,Ft);Kt.flatten(Te,_t,"",bt),s1(le,bt),le.alignment=1,le.width=ge,le.height=ke,le.channels=st,le.format=le.internalformat=e1[st],le.needsFree=!0}}else le.width=le.width||1,le.height=le.height||1,le.channels=le.channels||4;le.type===Re?E(et.extensions.indexOf("oes_texture_float")>=0,"oes_texture_float extension not enabled"):le.type===K&&E(et.extensions.indexOf("oes_texture_half_float")>=0,"oes_texture_half_float extension not enabled")}function p2(le,be,Te){var Ee=le.element,Ie=le.data,ot=le.internalformat,je=le.format,xe=le.type,Ae=le.width,Oe=le.height;a2(le),Ee?he.texImage2D(be,Te,je,je,xe,Ee):le.compressed?he.compressedTexImage2D(be,Te,ot,Ae,Oe,0,Ie):le.needsCopy?(Ot(),he.copyTexImage2D(be,Te,je,le.xOffset,le.yOffset,Ae,Oe,0)):he.texImage2D(be,Te,je,Ae,Oe,0,je,xe,Ie||null)}function _n(le,be,Te,Ee,Ie){var ot=le.element,je=le.data,xe=le.internalformat,Ae=le.format,Oe=le.type,We=le.width,Ge=le.height;a2(le),ot?he.texSubImage2D(be,Ie,Te,Ee,Ae,Oe,ot):le.compressed?he.compressedTexSubImage2D(be,Ie,Te,Ee,xe,We,Ge,je):le.needsCopy?(Ot(),he.copyTexSubImage2D(be,Ie,Te,Ee,le.xOffset,le.yOffset,We,Ge)):he.texSubImage2D(be,Ie,Te,Ee,We,Ge,Ae,Oe,je)}var an=[];function rn(){return an.pop()||new P1}function q2(le){le.needsFree&&Je.freeType(le.data),P1.call(le),an.push(le)}function ln(){j1.call(this),this.genMipmaps=!1,this.mipmapHint=tt,this.mipmask=0,this.images=Array(16)}function kn(le,be,Te){var Ee=le.images[0]=rn();le.mipmask=1,Ee.width=le.width=be,Ee.height=le.height=Te,Ee.channels=le.channels=4}function F2(le,be){var Te=null;if(pt(be))V1(Te=le.images[0]=rn(),le),T2(Te,be),le.mipmask=1;else if(h2(le,be),Array.isArray(be.mipmap))for(var Ee=be.mipmap,Ie=0;Ie<Ee.length;++Ie)V1(Te=le.images[Ie]=rn(),le),Te.width>>=Ie,Te.height>>=Ie,T2(Te,Ee[Ie]),le.mipmask|=1<<Ie;else V1(Te=le.images[0]=rn(),le),T2(Te,be),le.mipmask=1;V1(le,le.images[0]),!le.compressed||le.internalformat!==ue&&le.internalformat!==se&&le.internalformat!==ne&&le.internalformat!==J||E(le.width%4==0&&le.height%4==0,"for compressed texture formats, mipmap level 0 must have width and height that are a multiple of 4")}function dn(le,be){for(var Te=le.images,Ee=0;Ee<Te.length;++Ee){if(!Te[Ee])return;p2(Te[Ee],be,Ee)}}var gn=[];function Qn(){var le=gn.pop()||new ln;j1.call(le),le.mipmask=0;for(var be=0;be<16;++be)le.images[be]=null;return le}function vn(le){for(var be=le.images,Te=0;Te<be.length;++Te)be[Te]&&q2(be[Te]),be[Te]=null;gn.push(le)}function Tn(){this.minFilter=Y,this.magFilter=Y,this.wrapS=ct,this.wrapT=ct,this.anisotropic=1,this.genMipmaps=!1,this.mipmapHint=tt}function Sn(le,be){if("min"in be){var Te=be.min;E.parameter(Te,Ce),le.minFilter=Ce[Te],Lt.indexOf(le.minFilter)>=0&&!("faces"in be)&&(le.genMipmaps=!0)}if("mag"in be){var Ee=be.mag;E.parameter(Ee,Fe),le.magFilter=Fe[Ee]}var Ie=le.wrapS,ot=le.wrapT;if("wrap"in be){var je=be.wrap;typeof je=="string"?(E.parameter(je,Se),Ie=ot=Se[je]):Array.isArray(je)&&(E.parameter(je[0],Se),E.parameter(je[1],Se),Ie=Se[je[0]],ot=Se[je[1]])}else{if("wrapS"in be){var xe=be.wrapS;E.parameter(xe,Se),Ie=Se[xe]}if("wrapT"in be){var Ae=be.wrapT;E.parameter(Ae,Se),ot=Se[Ae]}}if(le.wrapS=Ie,le.wrapT=ot,"anisotropic"in be){var Oe=be.anisotropic;E(typeof Oe=="number"&&Oe>=1&&Oe<=et.maxAnisotropic,"aniso samples must be between 1 and "),le.anisotropic=be.anisotropic}if("mipmap"in be){var We=!1;switch(typeof be.mipmap){case"string":E.parameter(be.mipmap,ve,"invalid mipmap hint"),le.mipmapHint=ve[be.mipmap],le.genMipmaps=!0,We=!0;break;case"boolean":We=le.genMipmaps=be.mipmap;break;case"object":E(Array.isArray(be.mipmap),"invalid mipmap type"),le.genMipmaps=!1,We=!0;break;default:E.raise("invalid mipmap type")}We&&!("min"in be)&&(le.minFilter=de)}}function Cn(le,be){he.texParameteri(be,10241,le.minFilter),he.texParameteri(be,10240,le.magFilter),he.texParameteri(be,10242,le.wrapS),he.texParameteri(be,10243,le.wrapT),Me.ext_texture_filter_anisotropic&&he.texParameteri(be,34046,le.anisotropic),le.genMipmaps&&(he.hint(33170,le.mipmapHint),he.generateMipmap(be))}var Kn=0,en={},cn=et.maxTextureUnits,Ue=Array(cn).map(function(){return null});function fe(le){j1.call(this),this.mipmask=0,this.internalformat=A1,this.id=Kn++,this.refCount=1,this.target=le,this.texture=he.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new Tn,te.profile&&(this.stats={size:0})}function Ke(le){he.activeTexture(ht),he.bindTexture(le.target,le.texture)}function kt(){var le=Ue[0];le?he.bindTexture(le.target,le.texture):he.bindTexture(Zt,null)}function Gt(le){var be=le.texture;E(be,"must not double destroy texture");var Te=le.unit,Ee=le.target;Te>=0&&(he.activeTexture(ht+Te),he.bindTexture(Ee,null),Ue[Te]=null),he.deleteTexture(be),le.texture=null,le.params=null,le.pixels=null,le.refCount=0,delete en[le.id],Jt.textureCount--}return p(fe.prototype,{bind:function(){var le=this;le.bindCount+=1;var be=le.unit;if(be<0){for(var Te=0;Te<cn;++Te){var Ee=Ue[Te];if(Ee){if(Ee.bindCount>0)continue;Ee.unit=-1}Ue[Te]=le,be=Te;break}be>=cn&&E.raise("insufficient number of texture units"),te.profile&&Jt.maxTextureUnits<be+1&&(Jt.maxTextureUnits=be+1),le.unit=be,he.activeTexture(ht+be),he.bindTexture(le.target,le.texture)}return be},unbind:function(){this.bindCount-=1},decRef:function(){--this.refCount<=0&&Gt(this)}}),te.profile&&(Jt.getTotalTextureSize=function(){var le=0;return Object.keys(en).forEach(function(be){le+=en[be].stats.size}),le}),{create2D:function(le,be){var Te=new fe(Zt);function Ee(Ie,ot){var je=Te.texInfo;Tn.call(je);var xe=Qn();return typeof Ie=="number"?kn(xe,0|Ie,typeof ot=="number"?0|ot:0|Ie):Ie?(E.type(Ie,"object","invalid arguments to regl.texture"),Sn(je,Ie),F2(xe,Ie)):kn(xe,1,1),je.genMipmaps&&(xe.mipmask=(xe.width<<1)-1),Te.mipmask=xe.mipmask,V1(Te,xe),E.texture2D(je,xe,et),Te.internalformat=xe.internalformat,Ee.width=xe.width,Ee.height=xe.height,Ke(Te),dn(xe,Zt),Cn(je,Zt),kt(),vn(xe),te.profile&&(Te.stats.size=y1(Te.internalformat,Te.type,xe.width,xe.height,je.genMipmaps,!1)),Ee.format=o1[Te.internalformat],Ee.type=x1[Te.type],Ee.mag=O1[je.magFilter],Ee.min=_1[je.minFilter],Ee.wrapS=B1[je.wrapS],Ee.wrapT=B1[je.wrapT],Ee}return en[Te.id]=Te,Jt.textureCount++,Ee(le,be),Ee.subimage=function(Ie,ot,je,xe){E(!!Ie,"must specify image data");var Ae=0|ot,Oe=0|je,We=0|xe,Ge=rn();return V1(Ge,Te),Ge.width=0,Ge.height=0,T2(Ge,Ie),Ge.width=Ge.width||(Te.width>>We)-Ae,Ge.height=Ge.height||(Te.height>>We)-Oe,E(Te.type===Ge.type&&Te.format===Ge.format&&Te.internalformat===Ge.internalformat,"incompatible format for texture.subimage"),E(Ae>=0&&Oe>=0&&Ae+Ge.width<=Te.width&&Oe+Ge.height<=Te.height,"texture.subimage write out of bounds"),E(Te.mipmask&1<<We,"missing mipmap data"),E(Ge.data||Ge.element||Ge.needsCopy,"missing image data"),Ke(Te),_n(Ge,Zt,Ae,Oe,We),kt(),q2(Ge),Ee},Ee.resize=function(Ie,ot){var je=0|Ie,xe=0|ot||je;if(je===Te.width&&xe===Te.height)return Ee;Ee.width=Te.width=je,Ee.height=Te.height=xe,Ke(Te);for(var Ae=0;Te.mipmask>>Ae;++Ae){var Oe=je>>Ae,We=xe>>Ae;if(!Oe||!We)break;he.texImage2D(Zt,Ae,Te.format,Oe,We,0,Te.format,Te.type,null)}return kt(),te.profile&&(Te.stats.size=y1(Te.internalformat,Te.type,je,xe,!1,!1)),Ee},Ee._reglType="texture2d",Ee._texture=Te,te.profile&&(Ee.stats=Te.stats),Ee.destroy=function(){Te.decRef()},Ee},createCube:function(le,be,Te,Ee,Ie,ot){var je=new fe(b1);en[je.id]=je,Jt.cubeCount++;var xe=new Array(6);function Ae(Oe,We,Ge,Pe,ze,ge){var ke,st=je.texInfo;for(Tn.call(st),ke=0;ke<6;++ke)xe[ke]=Qn();if(typeof Oe!="number"&&Oe)if(typeof Oe=="object")if(We)F2(xe[0],Oe),F2(xe[1],We),F2(xe[2],Ge),F2(xe[3],Pe),F2(xe[4],ze),F2(xe[5],ge);else if(Sn(st,Oe),h2(je,Oe),"faces"in Oe){var _t=Oe.faces;for(E(Array.isArray(_t)&&_t.length===6,"cube faces must be a length 6 array"),ke=0;ke<6;++ke)E(typeof _t[ke]=="object"&&!!_t[ke],"invalid input for cube map face"),V1(xe[ke],je),F2(xe[ke],_t[ke])}else for(ke=0;ke<6;++ke)F2(xe[ke],Oe);else E.raise("invalid arguments to cube map");else{var Ft=0|Oe||1;for(ke=0;ke<6;++ke)kn(xe[ke],Ft,Ft)}for(V1(je,xe[0]),E.optional(function(){et.npotTextureCube||E(Ut(je.width)&&Ut(je.height),"your browser does not support non power or two texture dimensions")}),st.genMipmaps?je.mipmask=(xe[0].width<<1)-1:je.mipmask=xe[0].mipmask,E.textureCube(je,st,xe,et),je.internalformat=xe[0].internalformat,Ae.width=xe[0].width,Ae.height=xe[0].height,Ke(je),ke=0;ke<6;++ke)dn(xe[ke],k1+ke);for(Cn(st,b1),kt(),te.profile&&(je.stats.size=y1(je.internalformat,je.type,Ae.width,Ae.height,st.genMipmaps,!0)),Ae.format=o1[je.internalformat],Ae.type=x1[je.type],Ae.mag=O1[st.magFilter],Ae.min=_1[st.minFilter],Ae.wrapS=B1[st.wrapS],Ae.wrapT=B1[st.wrapT],ke=0;ke<6;++ke)vn(xe[ke]);return Ae}return Ae(le,be,Te,Ee,Ie,ot),Ae.subimage=function(Oe,We,Ge,Pe,ze){E(!!We,"must specify image data"),E(typeof Oe=="number"&&Oe===(0|Oe)&&Oe>=0&&Oe<6,"invalid face");var ge=0|Ge,ke=0|Pe,st=0|ze,_t=rn();return V1(_t,je),_t.width=0,_t.height=0,T2(_t,We),_t.width=_t.width||(je.width>>st)-ge,_t.height=_t.height||(je.height>>st)-ke,E(je.type===_t.type&&je.format===_t.format&&je.internalformat===_t.internalformat,"incompatible format for texture.subimage"),E(ge>=0&&ke>=0&&ge+_t.width<=je.width&&ke+_t.height<=je.height,"texture.subimage write out of bounds"),E(je.mipmask&1<<st,"missing mipmap data"),E(_t.data||_t.element||_t.needsCopy,"missing image data"),Ke(je),_n(_t,k1+Oe,ge,ke,st),kt(),q2(_t),Ae},Ae.resize=function(Oe){var We=0|Oe;if(We!==je.width){Ae.width=je.width=We,Ae.height=je.height=We,Ke(je);for(var Ge=0;Ge<6;++Ge)for(var Pe=0;je.mipmask>>Pe;++Pe)he.texImage2D(k1+Ge,Pe,je.format,We>>Pe,We>>Pe,0,je.format,je.type,null);return kt(),te.profile&&(je.stats.size=y1(je.internalformat,je.type,Ae.width,Ae.height,!1,!0)),Ae}},Ae._reglType="textureCube",Ae._texture=je,te.profile&&(Ae.stats=je.stats),Ae.destroy=function(){je.decRef()},Ae},clear:function(){for(var le=0;le<cn;++le)he.activeTexture(ht+le),he.bindTexture(Zt,null),Ue[le]=null;Bt(en).forEach(Gt),Jt.cubeCount=0,Jt.textureCount=0},getTexture:function(le){return null},restore:function(){for(var le=0;le<cn;++le){var be=Ue[le];be&&(be.bindCount=0,be.unit=-1,Ue[le]=null)}Bt(en).forEach(function(Te){Te.texture=he.createTexture(),he.bindTexture(Te.target,Te.texture);for(var Ee=0;Ee<32;++Ee)if((Te.mipmask&1<<Ee)!=0)if(Te.target===Zt)he.texImage2D(Zt,Ee,Te.internalformat,Te.width>>Ee,Te.height>>Ee,0,Te.internalformat,Te.type,null);else for(var Ie=0;Ie<6;++Ie)he.texImage2D(k1+Ie,Ee,Te.internalformat,Te.width>>Ee,Te.height>>Ee,0,Te.internalformat,Te.type,null);Cn(Te.texInfo,Te.target)})},refresh:function(){for(var le=0;le<cn;++le){var be=Ue[le];be&&(be.bindCount=0,be.unit=-1,Ue[le]=null),he.activeTexture(ht+le),he.bindTexture(Zt,null),he.bindTexture(b1,null)}}}}e2[32854]=2,e2[32855]=2,e2[36194]=2,e2[34041]=4,e2[33776]=.5,e2[33777]=.5,e2[33778]=1,e2[33779]=1,e2[35986]=.5,e2[35987]=1,e2[34798]=1,e2[35840]=.5,e2[35841]=.25,e2[35842]=.5,e2[35843]=.25,e2[36196]=.5;var I1=36161,w1=32854,L1=[];function X1(he,Me,et){return L1[he]*Me*et}L1[32854]=2,L1[32855]=2,L1[36194]=2,L1[33189]=2,L1[36168]=1,L1[34041]=4,L1[35907]=4,L1[34836]=16,L1[34842]=8,L1[34843]=6;var N1=36160,J1=36161,l2=3553,b2=34069,N2=[6407,6408],E2=[];E2[6408]=4,E2[6407]=3;var X2=[];X2[5121]=1,X2[5126]=4,X2[36193]=2;var tn=[32854,32855,36194,35907,34842,34843,34836],Y2={36053:"complete",36054:"incomplete attachment",36057:"incomplete dimensions",36055:"incomplete, missing attachment",36061:"unsupported"},L2=34963,K2=["attributes","elements","offset","count","primitive","instances"];function Vn(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.offset=0,this.stride=0,this.divisor=0}var Rn=5121,Zn=5126;function T3(he,Me,et,Ot,Nt,Jt,te){function ve(Se){var Fe;Me.next===null?(E(Nt.preserveDrawingBuffer,'you must create a webgl context with "preserveDrawingBuffer":true in order to read pixels from the drawing buffer'),Fe=Rn):(E(Me.next.colorAttachments[0].texture!==null,"You cannot read from a renderbuffer"),Fe=Me.next.colorAttachments[0].texture._texture.type,E.optional(function(){Jt.oes_texture_float?(E(Fe===Rn||Fe===Zn,"Reading from a framebuffer is only allowed for the types 'uint8' and 'float'"),Fe===Zn&&E(te.readFloat,"Reading 'float' values is not permitted in your browser. For a fallback, please see: https://www.npmjs.com/package/glsl-read-float")):E(Fe===Rn,"Reading from a framebuffer is only allowed for the type 'uint8'")}));var Ce=0,it=0,ut=Ot.framebufferWidth,ft=Ot.framebufferHeight,Ct=null;g(Se)?Ct=Se:Se&&(E.type(Se,"object","invalid arguments to regl.read()"),Ce=0|Se.x,it=0|Se.y,E(Ce>=0&&Ce<Ot.framebufferWidth,"invalid x offset for regl.read"),E(it>=0&&it<Ot.framebufferHeight,"invalid y offset for regl.read"),ut=0|(Se.width||Ot.framebufferWidth-Ce),ft=0|(Se.height||Ot.framebufferHeight-it),Ct=Se.data||null),Ct&&(Fe===Rn?E(Ct instanceof Uint8Array,"buffer must be 'Uint8Array' when reading from a framebuffer of type 'uint8'"):Fe===Zn&&E(Ct instanceof Float32Array,"buffer must be 'Float32Array' when reading from a framebuffer of type 'float'")),E(ut>0&&ut+Ce<=Ot.framebufferWidth,"invalid width for read pixels"),E(ft>0&&ft+it<=Ot.framebufferHeight,"invalid height for read pixels"),et();var Yt=ut*ft*4;return Ct||(Fe===Rn?Ct=new Uint8Array(Yt):Fe===Zn&&(Ct=Ct||new Float32Array(Yt))),E.isTypedArray(Ct,"data buffer for regl.read() must be a typedarray"),E(Ct.byteLength>=Yt,"data buffer for regl.read() too small"),he.pixelStorei(3333,4),he.readPixels(Ce,it,ut,ft,6408,Fe,Ct),Ct}return function(Se){return Se&&"framebuffer"in Se?function(Fe){var Ce;return Me.setFBO({framebuffer:Fe.framebuffer},function(){Ce=ve(Fe)}),Ce}(Se):ve(Se)}}function xn(he){return Array.prototype.slice.call(he)}function pn(he){return xn(he).join("")}var wn="xyzw".split(""),Un="dither",Jn="blend.enable",e3="blend.color",Pn="blend.equation",t3="blend.func",Mn="depth.enable",n3="depth.func",r3="depth.range",qn="depth.mask",i3="colorMask",c3="cull.enable",u3="cull.face",I="frontFace",z="lineWidth",G="polygonOffset.enable",Z="polygonOffset.offset",ee="sample.alpha",ce="sample.enable",pe="sample.coverage",Be="stencil.enable",qe="stencil.mask",at="stencil.func",At="stencil.opFront",Et="stencil.opBack",Tt="scissor.enable",gt="scissor.box",T1="viewport",C1="profile",p1="framebuffer",c2="vert",m2="frag",A2="elements",q1="primitive",M1="count",V2="offset",z1="instances",u2="vao",In="Width",$n="Height",k2=p1+In,J2=p1+$n,Ln="drawingBufferWidth",D2="drawingBufferHeight",En=[t3,Pn,at,At,Et,pe,T1,gt,Z],M2=34962,_2=34963,B2=5126,O2=35664,U2=35665,g2=35666,Y1=5124,x2=35667,R2=35668,v2=35669,j2=35670,un=35671,An=35672,Xn=35673,Nn=35674,Dn=35675,fn=35676,Bn=35678,jn=35680,zn=1028,nn=1029,o3=2305,on=7680,S2={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},sn=["constant color, constant alpha","one minus constant color, constant alpha","constant color, one minus constant alpha","one minus constant color, one minus constant alpha","constant alpha, constant color","constant alpha, one minus constant color","one minus constant alpha, constant color","one minus constant alpha, one minus constant color"],Hn={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},hn={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},s3={frag:35632,vert:35633},a3={cw:2304,ccw:o3};function r2(he){return Array.isArray(he)||g(he)||t1(he)}function Fn(he){return he.sort(function(Me,et){return Me===T1?-1:et===T1?1:Me<et?-1:1})}function i2(he,Me,et,Ot){this.thisDep=he,this.contextDep=Me,this.propDep=et,this.append=Ot}function C2(he){return he&&!(he.thisDep||he.contextDep||he.propDep)}function f2(he){return new i2(!1,!1,!1,he)}function z2(he,Me){var et=he.type;if(et===0){var Ot=he.data.length;return new i2(!0,Ot>=1,Ot>=2,Me)}if(et===4){var Nt=he.data;return new i2(Nt.thisDep,Nt.contextDep,Nt.propDep,Me)}if(et===5)return new i2(!1,!1,!1,Me);if(et===6){for(var Jt=!1,te=!1,ve=!1,Se=0;Se<he.data.length;++Se){var Fe=he.data[Se];if(Fe.type===1)ve=!0;else if(Fe.type===2)te=!0;else if(Fe.type===3)Jt=!0;else if(Fe.type===0){Jt=!0;var Ce=Fe.data;Ce>=1&&(te=!0),Ce>=2&&(ve=!0)}else Fe.type===4&&(Jt=Jt||Fe.data.thisDep,te=te||Fe.data.contextDep,ve=ve||Fe.data.propDep)}return new i2(Jt,te,ve,Me)}return new i2(et===3,et===2,et===1,Me)}var h3=new i2(!1,!1,!1,function(){});function p3(he,Me,et,Ot,Nt,Jt,te,ve,Se,Fe,Ce,it,ut,ft,Ct){var Yt=Fe.Record,Q1={add:32774,subtract:32778,"reverse subtract":32779};et.ext_blend_minmax&&(Q1.min=32775,Q1.max=32776);var o1=et.angle_instanced_arrays,x1=et.webgl_draw_buffers,O1=et.oes_vertex_array_object,_1={dirty:!0,profile:Ct.profile},B1={},$1=[],j1={},V1={};function h2(Ue){return Ue.replace(".","_")}function a2(Ue,fe,Ke){var kt=h2(Ue);$1.push(Ue),B1[kt]=_1[kt]=!!Ke,j1[kt]=fe}function P1(Ue,fe,Ke){var kt=h2(Ue);$1.push(Ue),Array.isArray(Ke)?(_1[kt]=Ke.slice(),B1[kt]=Ke.slice()):_1[kt]=B1[kt]=Ke,V1[kt]=fe}a2(Un,3024),a2(Jn,3042),P1(e3,"blendColor",[0,0,0,0]),P1(Pn,"blendEquationSeparate",[32774,32774]),P1(t3,"blendFuncSeparate",[1,0,1,0]),a2(Mn,2929,!0),P1(n3,"depthFunc",513),P1(r3,"depthRange",[0,1]),P1(qn,"depthMask",!0),P1(i3,i3,[!0,!0,!0,!0]),a2(c3,2884),P1(u3,"cullFace",nn),P1(I,I,o3),P1(z,z,1),a2(G,32823),P1(Z,"polygonOffset",[0,0]),a2(ee,32926),a2(ce,32928),P1(pe,"sampleCoverage",[1,!1]),a2(Be,2960),P1(qe,"stencilMask",-1),P1(at,"stencilFunc",[519,0,-1]),P1(At,"stencilOpSeparate",[zn,on,on,on]),P1(Et,"stencilOpSeparate",[nn,on,on,on]),a2(Tt,3089),P1(gt,"scissor",[0,0,he.drawingBufferWidth,he.drawingBufferHeight]),P1(T1,T1,[0,0,he.drawingBufferWidth,he.drawingBufferHeight]);var T2={gl:he,context:ut,strings:Me,next:B1,current:_1,draw:it,elements:Jt,buffer:Nt,shader:Ce,attributes:Fe.state,vao:Fe,uniforms:Se,framebuffer:ve,extensions:et,timer:ft,isBufferArgs:r2},p2={primTypes:Xt,compareFuncs:Hn,blendFuncs:S2,blendEquations:Q1,stencilOps:hn,glTypes:dt,orientationType:a3};E.optional(function(){T2.isArrayLike=It}),x1&&(p2.backBuffer=[nn],p2.drawBuffer=ae(Ot.maxDrawbuffers,function(Ue){return Ue===0?[0]:ae(Ue,function(fe){return 36064+fe})}));var _n=0;function an(){var Ue=function(){var Ie=0,ot=[],je=[];function xe(){var Ge=[],Pe=[];return p(function(){Ge.push.apply(Ge,xn(arguments))},{def:function(){var ze="v"+Ie++;return Pe.push(ze),arguments.length>0&&(Ge.push(ze,"="),Ge.push.apply(Ge,xn(arguments)),Ge.push(";")),ze},toString:function(){return pn([Pe.length>0?"var "+Pe.join(",")+";":"",pn(Ge)])}})}function Ae(){var Ge=xe(),Pe=xe(),ze=Ge.toString,ge=Pe.toString;function ke(st,_t){Pe(st,_t,"=",Ge.def(st,_t),";")}return p(function(){Ge.apply(Ge,xn(arguments))},{def:Ge.def,entry:Ge,exit:Pe,save:ke,set:function(st,_t,Ft){ke(st,_t),Ge(st,_t,"=",Ft,";")},toString:function(){return ze()+ge()}})}var Oe=xe(),We={};return{global:Oe,link:function(Ge){for(var Pe=0;Pe<je.length;++Pe)if(je[Pe]===Ge)return ot[Pe];var ze="g"+Ie++;return ot.push(ze),je.push(Ge),ze},block:xe,proc:function(Ge,Pe){var ze=[];function ge(){var Ft="a"+ze.length;return ze.push(Ft),Ft}Pe=Pe||0;for(var ke=0;ke<Pe;++ke)ge();var st=Ae(),_t=st.toString;return We[Ge]=p(st,{arg:ge,toString:function(){return pn(["function(",ze.join(),"){",_t(),"}"])}})},scope:Ae,cond:function(){var Ge=pn(arguments),Pe=Ae(),ze=Ae(),ge=Pe.toString,ke=ze.toString;return p(Pe,{then:function(){return Pe.apply(Pe,xn(arguments)),this},else:function(){return ze.apply(ze,xn(arguments)),this},toString:function(){var st=ke();return st&&(st="else{"+st+"}"),pn(["if(",Ge,"){",ge(),"}",st])}})},compile:function(){var Ge=['"use strict";',Oe,"return {"];Object.keys(We).forEach(function(ze){Ge.push('"',ze,'":',We[ze].toString(),",")}),Ge.push("}");var Pe=pn(Ge).replace(/;/g,`;
129
129
  `).replace(/}/g,`}
130
130
  `).replace(/{/g,`{
131
131
  `);return Function.apply(null,ot.concat(Pe)).apply(null,je)}}}(),fe=Ue.link,Ke=Ue.global;Ue.id=_n++,Ue.batchId="0";var kt=fe(T2),Gt=Ue.shared={props:"a0"};Object.keys(T2).forEach(function(Ie){Gt[Ie]=Ke.def(kt,".",Ie)}),E.optional(function(){Ue.CHECK=fe(E),Ue.commandStr=E.guessCommand(),Ue.command=fe(Ue.commandStr),Ue.assert=function(Ie,ot,je){Ie("if(!(",ot,"))",this.CHECK,".commandRaise(",fe(je),",",this.command,");")},p2.invalidBlendCombinations=sn});var le=Ue.next={},be=Ue.current={};Object.keys(V1).forEach(function(Ie){Array.isArray(_1[Ie])&&(le[Ie]=Ke.def(Gt.next,".",Ie),be[Ie]=Ke.def(Gt.current,".",Ie))});var Te=Ue.constants={};Object.keys(p2).forEach(function(Ie){Te[Ie]=Ke.def(JSON.stringify(p2[Ie]))}),Ue.invoke=function(Ie,ot){switch(ot.type){case 0:var je=["this",Gt.context,Gt.props,Ue.batchId];return Ie.def(fe(ot.data),".call(",je.slice(0,Math.max(ot.data.length+1,4)),")");case 1:return Ie.def(Gt.props,ot.data);case 2:return Ie.def(Gt.context,ot.data);case 3:return Ie.def("this",ot.data);case 4:return ot.data.append(Ue,Ie),ot.data.ref;case 5:return ot.data.toString();case 6:return ot.data.map(function(xe){return Ue.invoke(Ie,xe)})}},Ue.attribCache={};var Ee={};return Ue.scopeAttrib=function(Ie){var ot=Me.id(Ie);if(ot in Ee)return Ee[ot];var je=Fe.scope[ot];return je||(je=Fe.scope[ot]=new Yt),Ee[ot]=fe(je)},Ue}function rn(Ue,fe,Ke,kt,Gt){var le=Ue.static,be=Ue.dynamic;E.optional(function(){var ge=[p1,c2,m2,A2,q1,V2,M1,z1,C1,u2].concat($1);function ke(st){Object.keys(st).forEach(function(_t){E.command(ge.indexOf(_t)>=0,'unknown parameter "'+_t+'"',Gt.commandStr)})}ke(le),ke(be)});var Te=function(ge,ke){var st=ge.static;if(typeof st[m2]=="string"&&typeof st[c2]=="string"){if(Object.keys(ke.dynamic).length>0)return null;var _t=ke.static,Ft=Object.keys(_t);if(Ft.length>0&&typeof _t[Ft[0]]=="number"){for(var Mt=[],bt=0;bt<Ft.length;++bt)E(typeof _t[Ft[bt]]=="number","must specify all vertex attribute locations when using vaos"),Mt.push([0|_t[Ft[bt]],Ft[bt]]);return Mt}}return null}(Ue,fe),Ee=function(ge,ke){var st=ge.static,_t=ge.dynamic;if(p1 in st){var Ft=st[p1];return Ft?(Ft=ve.getFramebuffer(Ft),E.command(Ft,"invalid framebuffer object"),f2(function(bt,Xe){var _e=bt.link(Ft),we=bt.shared;Xe.set(we.framebuffer,".next",_e);var Ne=we.context;return Xe.set(Ne,"."+k2,_e+".width"),Xe.set(Ne,"."+J2,_e+".height"),_e})):f2(function(bt,Xe){var _e=bt.shared;Xe.set(_e.framebuffer,".next","null");var we=_e.context;return Xe.set(we,"."+k2,we+"."+Ln),Xe.set(we,"."+J2,we+"."+D2),"null"})}if(p1 in _t){var Mt=_t[p1];return z2(Mt,function(bt,Xe){var _e=bt.invoke(Xe,Mt),we=bt.shared,Ne=we.framebuffer,vt=Xe.def(Ne,".getFramebuffer(",_e,")");E.optional(function(){bt.assert(Xe,"!"+_e+"||"+vt,"invalid framebuffer object")}),Xe.set(Ne,".next",vt);var qt=we.context;return Xe.set(qt,"."+k2,vt+"?"+vt+".width:"+qt+"."+Ln),Xe.set(qt,"."+J2,vt+"?"+vt+".height:"+qt+"."+D2),vt})}return null}(Ue),Ie=function(ge,ke,st){var _t=ge.static,Ft=ge.dynamic;function Mt(_e){if(_e in _t){var we=_t[_e];E.commandType(we,"object","invalid "+_e,st.commandStr);var Ne,vt,qt=!0,$t=0|we.x,Vt=0|we.y;return"width"in we?(Ne=0|we.width,E.command(Ne>=0,"invalid "+_e,st.commandStr)):qt=!1,"height"in we?(vt=0|we.height,E.command(vt>=0,"invalid "+_e,st.commandStr)):qt=!1,new i2(!qt&&ke&&ke.thisDep,!qt&&ke&&ke.contextDep,!qt&&ke&&ke.propDep,function(d1,i1){var zt=d1.shared.context,H1=Ne;"width"in we||(H1=i1.def(zt,".",k2,"-",$t));var F1=vt;return"height"in we||(F1=i1.def(zt,".",J2,"-",Vt)),[$t,Vt,H1,F1]})}if(_e in Ft){var f1=Ft[_e],l1=z2(f1,function(d1,i1){var zt=d1.invoke(i1,f1);E.optional(function(){d1.assert(i1,zt+"&&typeof "+zt+'==="object"',"invalid "+_e)});var H1=d1.shared.context,F1=i1.def(zt,".x|0"),G2=i1.def(zt,".y|0"),W2=i1.def('"width" in ',zt,"?",zt,".width|0:","(",H1,".",k2,"-",F1,")"),$2=i1.def('"height" in ',zt,"?",zt,".height|0:","(",H1,".",J2,"-",G2,")");return E.optional(function(){d1.assert(i1,W2+">=0&&"+$2+">=0","invalid "+_e)}),[F1,G2,W2,$2]});return ke&&(l1.thisDep=l1.thisDep||ke.thisDep,l1.contextDep=l1.contextDep||ke.contextDep,l1.propDep=l1.propDep||ke.propDep),l1}return ke?new i2(ke.thisDep,ke.contextDep,ke.propDep,function(d1,i1){var zt=d1.shared.context;return[0,0,i1.def(zt,".",k2),i1.def(zt,".",J2)]}):null}var bt=Mt(T1);if(bt){var Xe=bt;bt=new i2(bt.thisDep,bt.contextDep,bt.propDep,function(_e,we){var Ne=Xe.append(_e,we),vt=_e.shared.context;return we.set(vt,".viewportWidth",Ne[2]),we.set(vt,".viewportHeight",Ne[3]),Ne})}return{viewport:bt,scissor_box:Mt(gt)}}(Ue,Ee,Gt),ot=function(ge,ke){var st=ge.static,_t=ge.dynamic,Ft={},Mt=!1,bt=function(){if(u2 in st){var Vt=st[u2];return Vt!==null&&Fe.getVAO(Vt)===null&&(Vt=Fe.createVAO(Vt)),Mt=!0,Ft.vao=Vt,f2(function(l1){var d1=Fe.getVAO(Vt);return d1?l1.link(d1):"null"})}if(u2 in _t){Mt=!0;var f1=_t[u2];return z2(f1,function(l1,d1){var i1=l1.invoke(d1,f1);return d1.def(l1.shared.vao+".getVAO("+i1+")")})}return null}(),Xe=!1,_e=function(){if(A2 in st){var Vt=st[A2];if(Ft.elements=Vt,r2(Vt)){var f1=Ft.elements=Jt.create(Vt,!0);Vt=Jt.getElements(f1),Xe=!0}else Vt&&(Vt=Jt.getElements(Vt),Xe=!0,E.command(Vt,"invalid elements",ke.commandStr));var l1=f2(function(i1,zt){if(Vt){var H1=i1.link(Vt);return i1.ELEMENTS=H1,H1}return i1.ELEMENTS=null,null});return l1.value=Vt,l1}if(A2 in _t){Xe=!0;var d1=_t[A2];return z2(d1,function(i1,zt){var H1=i1.shared,F1=H1.isBufferArgs,G2=H1.elements,W2=i1.invoke(zt,d1),$2=zt.def("null"),Gn=zt.def(F1,"(",W2,")"),Wn=i1.cond(Gn).then($2,"=",G2,".createStream(",W2,");").else($2,"=",G2,".getElements(",W2,");");return E.optional(function(){i1.assert(Wn.else,"!"+W2+"||"+$2,"invalid elements")}),zt.entry(Wn),zt.exit(i1.cond(Gn).then(G2,".destroyStream(",$2,");")),i1.ELEMENTS=$2,$2})}return Mt?new i2(bt.thisDep,bt.contextDep,bt.propDep,function(i1,zt){return zt.def(i1.shared.vao+".currentVAO?"+i1.shared.elements+".getElements("+i1.shared.vao+".currentVAO.elements):null")}):null}();function we(Vt,f1){if(Vt in st){var l1=0|st[Vt];return f1?Ft.offset=l1:Ft.instances=l1,E.command(!f1||l1>=0,"invalid "+Vt,ke.commandStr),f2(function(i1,zt){return f1&&(i1.OFFSET=l1),l1})}if(Vt in _t){var d1=_t[Vt];return z2(d1,function(i1,zt){var H1=i1.invoke(zt,d1);return f1&&(i1.OFFSET=H1,E.optional(function(){i1.assert(zt,H1+">=0","invalid "+Vt)})),H1})}if(f1){if(Xe)return f2(function(i1,zt){return i1.OFFSET=0,0});if(Mt)return new i2(bt.thisDep,bt.contextDep,bt.propDep,function(i1,zt){return zt.def(i1.shared.vao+".currentVAO?"+i1.shared.vao+".currentVAO.offset:0")})}else if(Mt)return new i2(bt.thisDep,bt.contextDep,bt.propDep,function(i1,zt){return zt.def(i1.shared.vao+".currentVAO?"+i1.shared.vao+".currentVAO.instances:-1")});return null}var Ne=we(V2,!0),vt=function(){if(q1 in st){var Vt=st[q1];return Ft.primitive=Vt,E.commandParameter(Vt,Xt,"invalid primitve",ke.commandStr),f2(function(l1,d1){return Xt[Vt]})}if(q1 in _t){var f1=_t[q1];return z2(f1,function(l1,d1){var i1=l1.constants.primTypes,zt=l1.invoke(d1,f1);return E.optional(function(){l1.assert(d1,zt+" in "+i1,"invalid primitive, must be one of "+Object.keys(Xt))}),d1.def(i1,"[",zt,"]")})}return Xe?C2(_e)?_e.value?f2(function(l1,d1){return d1.def(l1.ELEMENTS,".primType")}):f2(function(){return 4}):new i2(_e.thisDep,_e.contextDep,_e.propDep,function(l1,d1){var i1=l1.ELEMENTS;return d1.def(i1,"?",i1,".primType:",4)}):Mt?new i2(bt.thisDep,bt.contextDep,bt.propDep,function(l1,d1){return d1.def(l1.shared.vao+".currentVAO?"+l1.shared.vao+".currentVAO.primitive:4")}):null}(),qt=function(){if(M1 in st){var Vt=0|st[M1];return Ft.count=Vt,E.command(typeof Vt=="number"&&Vt>=0,"invalid vertex count",ke.commandStr),f2(function(){return Vt})}if(M1 in _t){var f1=_t[M1];return z2(f1,function(zt,H1){var F1=zt.invoke(H1,f1);return E.optional(function(){zt.assert(H1,"typeof "+F1+'==="number"&&'+F1+">=0&&"+F1+"===("+F1+"|0)","invalid vertex count")}),F1})}if(Xe){if(C2(_e)){if(_e)return Ne?new i2(Ne.thisDep,Ne.contextDep,Ne.propDep,function(zt,H1){var F1=H1.def(zt.ELEMENTS,".vertCount-",zt.OFFSET);return E.optional(function(){zt.assert(H1,F1+">=0","invalid vertex offset/element buffer too small")}),F1}):f2(function(zt,H1){return H1.def(zt.ELEMENTS,".vertCount")});var l1=f2(function(){return-1});return E.optional(function(){l1.MISSING=!0}),l1}var d1=new i2(_e.thisDep||Ne.thisDep,_e.contextDep||Ne.contextDep,_e.propDep||Ne.propDep,function(zt,H1){var F1=zt.ELEMENTS;return zt.OFFSET?H1.def(F1,"?",F1,".vertCount-",zt.OFFSET,":-1"):H1.def(F1,"?",F1,".vertCount:-1")});return E.optional(function(){d1.DYNAMIC=!0}),d1}if(Mt){var i1=new i2(bt.thisDep,bt.contextDep,bt.propDep,function(zt,H1){return H1.def(zt.shared.vao,".currentVAO?",zt.shared.vao,".currentVAO.count:-1")});return i1}return null}(),$t=we(z1,!1);return{elements:_e,primitive:vt,count:qt,instances:$t,offset:Ne,vao:bt,vaoActive:Mt,elementsActive:Xe,static:Ft}}(Ue,Gt),je=function(ge,ke){var st=ge.static,_t=ge.dynamic,Ft={};return $1.forEach(function(Mt){var bt=h2(Mt);function Xe(_e,we){if(Mt in st){var Ne=_e(st[Mt]);Ft[bt]=f2(function(){return Ne})}else if(Mt in _t){var vt=_t[Mt];Ft[bt]=z2(vt,function(qt,$t){return we(qt,$t,qt.invoke($t,vt))})}}switch(Mt){case c3:case Jn:case Un:case Be:case Mn:case Tt:case G:case ee:case ce:case qn:return Xe(function(_e){return E.commandType(_e,"boolean",Mt,ke.commandStr),_e},function(_e,we,Ne){return E.optional(function(){_e.assert(we,"typeof "+Ne+'==="boolean"',"invalid flag "+Mt,_e.commandStr)}),Ne});case n3:return Xe(function(_e){return E.commandParameter(_e,Hn,"invalid "+Mt,ke.commandStr),Hn[_e]},function(_e,we,Ne){var vt=_e.constants.compareFuncs;return E.optional(function(){_e.assert(we,Ne+" in "+vt,"invalid "+Mt+", must be one of "+Object.keys(Hn))}),we.def(vt,"[",Ne,"]")});case r3:return Xe(function(_e){return E.command(It(_e)&&_e.length===2&&typeof _e[0]=="number"&&typeof _e[1]=="number"&&_e[0]<=_e[1],"depth range is 2d array",ke.commandStr),_e},function(_e,we,Ne){return E.optional(function(){_e.assert(we,_e.shared.isArrayLike+"("+Ne+")&&"+Ne+".length===2&&typeof "+Ne+'[0]==="number"&&typeof '+Ne+'[1]==="number"&&'+Ne+"[0]<="+Ne+"[1]","depth range must be a 2d array")}),[we.def("+",Ne,"[0]"),we.def("+",Ne,"[1]")]});case t3:return Xe(function(_e){E.commandType(_e,"object","blend.func",ke.commandStr);var we="srcRGB"in _e?_e.srcRGB:_e.src,Ne="srcAlpha"in _e?_e.srcAlpha:_e.src,vt="dstRGB"in _e?_e.dstRGB:_e.dst,qt="dstAlpha"in _e?_e.dstAlpha:_e.dst;return E.commandParameter(we,S2,bt+".srcRGB",ke.commandStr),E.commandParameter(Ne,S2,bt+".srcAlpha",ke.commandStr),E.commandParameter(vt,S2,bt+".dstRGB",ke.commandStr),E.commandParameter(qt,S2,bt+".dstAlpha",ke.commandStr),E.command(sn.indexOf(we+", "+vt)===-1,"unallowed blending combination (srcRGB, dstRGB) = ("+we+", "+vt+")",ke.commandStr),[S2[we],S2[vt],S2[Ne],S2[qt]]},function(_e,we,Ne){var vt=_e.constants.blendFuncs;function qt(d1,i1){var zt=we.def('"',d1,i1,'" in ',Ne,"?",Ne,".",d1,i1,":",Ne,".",d1);return E.optional(function(){_e.assert(we,zt+" in "+vt,"invalid "+Mt+"."+d1+i1+", must be one of "+Object.keys(S2))}),zt}E.optional(function(){_e.assert(we,Ne+"&&typeof "+Ne+'==="object"',"invalid blend func, must be an object")});var $t=qt("src","RGB"),Vt=qt("dst","RGB");E.optional(function(){var d1=_e.constants.invalidBlendCombinations;_e.assert(we,d1+".indexOf("+$t+'+", "+'+Vt+") === -1 ","unallowed blending combination for (srcRGB, dstRGB)")});var f1=we.def(vt,"[",$t,"]"),l1=we.def(vt,"[",qt("src","Alpha"),"]");return[f1,we.def(vt,"[",Vt,"]"),l1,we.def(vt,"[",qt("dst","Alpha"),"]")]});case Pn:return Xe(function(_e){return typeof _e=="string"?(E.commandParameter(_e,Q1,"invalid "+Mt,ke.commandStr),[Q1[_e],Q1[_e]]):typeof _e=="object"?(E.commandParameter(_e.rgb,Q1,Mt+".rgb",ke.commandStr),E.commandParameter(_e.alpha,Q1,Mt+".alpha",ke.commandStr),[Q1[_e.rgb],Q1[_e.alpha]]):void E.commandRaise("invalid blend.equation",ke.commandStr)},function(_e,we,Ne){var vt=_e.constants.blendEquations,qt=we.def(),$t=we.def(),Vt=_e.cond("typeof ",Ne,'==="string"');return E.optional(function(){function f1(l1,d1,i1){_e.assert(l1,i1+" in "+vt,"invalid "+d1+", must be one of "+Object.keys(Q1))}f1(Vt.then,Mt,Ne),_e.assert(Vt.else,Ne+"&&typeof "+Ne+'==="object"',"invalid "+Mt),f1(Vt.else,Mt+".rgb",Ne+".rgb"),f1(Vt.else,Mt+".alpha",Ne+".alpha")}),Vt.then(qt,"=",$t,"=",vt,"[",Ne,"];"),Vt.else(qt,"=",vt,"[",Ne,".rgb];",$t,"=",vt,"[",Ne,".alpha];"),we(Vt),[qt,$t]});case e3:return Xe(function(_e){return E.command(It(_e)&&_e.length===4,"blend.color must be a 4d array",ke.commandStr),ae(4,function(we){return+_e[we]})},function(_e,we,Ne){return E.optional(function(){_e.assert(we,_e.shared.isArrayLike+"("+Ne+")&&"+Ne+".length===4","blend.color must be a 4d array")}),ae(4,function(vt){return we.def("+",Ne,"[",vt,"]")})});case qe:return Xe(function(_e){return E.commandType(_e,"number",bt,ke.commandStr),0|_e},function(_e,we,Ne){return E.optional(function(){_e.assert(we,"typeof "+Ne+'==="number"',"invalid stencil.mask")}),we.def(Ne,"|0")});case at:return Xe(function(_e){E.commandType(_e,"object",bt,ke.commandStr);var we=_e.cmp||"keep",Ne=_e.ref||0,vt="mask"in _e?_e.mask:-1;return E.commandParameter(we,Hn,Mt+".cmp",ke.commandStr),E.commandType(Ne,"number",Mt+".ref",ke.commandStr),E.commandType(vt,"number",Mt+".mask",ke.commandStr),[Hn[we],Ne,vt]},function(_e,we,Ne){var vt=_e.constants.compareFuncs;return E.optional(function(){function qt(){_e.assert(we,Array.prototype.join.call(arguments,""),"invalid stencil.func")}qt(Ne+"&&typeof ",Ne,'==="object"'),qt('!("cmp" in ',Ne,")||(",Ne,".cmp in ",vt,")")}),[we.def('"cmp" in ',Ne,"?",vt,"[",Ne,".cmp]",":",on),we.def(Ne,".ref|0"),we.def('"mask" in ',Ne,"?",Ne,".mask|0:-1")]});case At:case Et:return Xe(function(_e){E.commandType(_e,"object",bt,ke.commandStr);var we=_e.fail||"keep",Ne=_e.zfail||"keep",vt=_e.zpass||"keep";return E.commandParameter(we,hn,Mt+".fail",ke.commandStr),E.commandParameter(Ne,hn,Mt+".zfail",ke.commandStr),E.commandParameter(vt,hn,Mt+".zpass",ke.commandStr),[Mt===Et?nn:zn,hn[we],hn[Ne],hn[vt]]},function(_e,we,Ne){var vt=_e.constants.stencilOps;function qt($t){return E.optional(function(){_e.assert(we,'!("'+$t+'" in '+Ne+")||("+Ne+"."+$t+" in "+vt+")","invalid "+Mt+"."+$t+", must be one of "+Object.keys(hn))}),we.def('"',$t,'" in ',Ne,"?",vt,"[",Ne,".",$t,"]:",on)}return E.optional(function(){_e.assert(we,Ne+"&&typeof "+Ne+'==="object"',"invalid "+Mt)}),[Mt===Et?nn:zn,qt("fail"),qt("zfail"),qt("zpass")]});case Z:return Xe(function(_e){E.commandType(_e,"object",bt,ke.commandStr);var we=0|_e.factor,Ne=0|_e.units;return E.commandType(we,"number",bt+".factor",ke.commandStr),E.commandType(Ne,"number",bt+".units",ke.commandStr),[we,Ne]},function(_e,we,Ne){return E.optional(function(){_e.assert(we,Ne+"&&typeof "+Ne+'==="object"',"invalid "+Mt)}),[we.def(Ne,".factor|0"),we.def(Ne,".units|0")]});case u3:return Xe(function(_e){var we=0;return _e==="front"?we=zn:_e==="back"&&(we=nn),E.command(!!we,bt,ke.commandStr),we},function(_e,we,Ne){return E.optional(function(){_e.assert(we,Ne+'==="front"||'+Ne+'==="back"',"invalid cull.face")}),we.def(Ne,'==="front"?',zn,":",nn)});case z:return Xe(function(_e){return E.command(typeof _e=="number"&&_e>=Ot.lineWidthDims[0]&&_e<=Ot.lineWidthDims[1],"invalid line width, must be a positive number between "+Ot.lineWidthDims[0]+" and "+Ot.lineWidthDims[1],ke.commandStr),_e},function(_e,we,Ne){return E.optional(function(){_e.assert(we,"typeof "+Ne+'==="number"&&'+Ne+">="+Ot.lineWidthDims[0]+"&&"+Ne+"<="+Ot.lineWidthDims[1],"invalid line width")}),Ne});case I:return Xe(function(_e){return E.commandParameter(_e,a3,bt,ke.commandStr),a3[_e]},function(_e,we,Ne){return E.optional(function(){_e.assert(we,Ne+'==="cw"||'+Ne+'==="ccw"',"invalid frontFace, must be one of cw,ccw")}),we.def(Ne+'==="cw"?2304:'+o3)});case i3:return Xe(function(_e){return E.command(It(_e)&&_e.length===4,"color.mask must be length 4 array",ke.commandStr),_e.map(function(we){return!!we})},function(_e,we,Ne){return E.optional(function(){_e.assert(we,_e.shared.isArrayLike+"("+Ne+")&&"+Ne+".length===4","invalid color.mask")}),ae(4,function(vt){return"!!"+Ne+"["+vt+"]"})});case pe:return Xe(function(_e){E.command(typeof _e=="object"&&_e,bt,ke.commandStr);var we="value"in _e?_e.value:1,Ne=!!_e.invert;return E.command(typeof we=="number"&&we>=0&&we<=1,"sample.coverage.value must be a number between 0 and 1",ke.commandStr),[we,Ne]},function(_e,we,Ne){return E.optional(function(){_e.assert(we,Ne+"&&typeof "+Ne+'==="object"',"invalid sample.coverage")}),[we.def('"value" in ',Ne,"?+",Ne,".value:1"),we.def("!!",Ne,".invert")]})}}),Ft}(Ue,Gt),xe=function(ge,ke,st){var _t=ge.static,Ft=ge.dynamic;function Mt(Ne){if(Ne in _t){var vt=Me.id(_t[Ne]);E.optional(function(){Ce.shader(s3[Ne],vt,E.guessCommand())});var qt=f2(function(){return vt});return qt.id=vt,qt}if(Ne in Ft){var $t=Ft[Ne];return z2($t,function(Vt,f1){var l1=Vt.invoke(f1,$t),d1=f1.def(Vt.shared.strings,".id(",l1,")");return E.optional(function(){f1(Vt.shared.shader,".shader(",s3[Ne],",",d1,",",Vt.command,");")}),d1})}return null}var bt,Xe=Mt(m2),_e=Mt(c2),we=null;return C2(Xe)&&C2(_e)?(we=Ce.program(_e.id,Xe.id,null,st),bt=f2(function(Ne,vt){return Ne.link(we)})):bt=new i2(Xe&&Xe.thisDep||_e&&_e.thisDep,Xe&&Xe.contextDep||_e&&_e.contextDep,Xe&&Xe.propDep||_e&&_e.propDep,function(Ne,vt){var qt,$t=Ne.shared.shader;qt=Xe?Xe.append(Ne,vt):vt.def($t,".",m2);var Vt=$t+".program("+(_e?_e.append(Ne,vt):vt.def($t,".",c2))+","+qt;return E.optional(function(){Vt+=","+Ne.command}),vt.def(Vt+")")}),{frag:Xe,vert:_e,progVar:bt,program:we}}(Ue,0,Te);function Ae(ge){var ke=Ie[ge];ke&&(je[ge]=ke)}Ae(T1),Ae(h2(gt));var Oe=Object.keys(je).length>0,We={framebuffer:Ee,draw:ot,shader:xe,state:je,dirty:Oe,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(We.profile=function(ge){var ke,st=ge.static,_t=ge.dynamic;if(C1 in st){var Ft=!!st[C1];(ke=f2(function(bt,Xe){return Ft})).enable=Ft}else if(C1 in _t){var Mt=_t[C1];ke=z2(Mt,function(bt,Xe){return bt.invoke(Xe,Mt)})}return ke}(Ue),We.uniforms=function(ge,ke){var st=ge.static,_t=ge.dynamic,Ft={};return Object.keys(st).forEach(function(Mt){var bt,Xe=st[Mt];if(typeof Xe=="number"||typeof Xe=="boolean")bt=f2(function(){return Xe});else if(typeof Xe=="function"){var _e=Xe._reglType;_e==="texture2d"||_e==="textureCube"?bt=f2(function(we){return we.link(Xe)}):_e==="framebuffer"||_e==="framebufferCube"?(E.command(Xe.color.length>0,'missing color attachment for framebuffer sent to uniform "'+Mt+'"',ke.commandStr),bt=f2(function(we){return we.link(Xe.color[0])})):E.commandRaise('invalid data for uniform "'+Mt+'"',ke.commandStr)}else It(Xe)?bt=f2(function(we){return we.global.def("[",ae(Xe.length,function(Ne){return E.command(typeof Xe[Ne]=="number"||typeof Xe[Ne]=="boolean","invalid uniform "+Mt,we.commandStr),Xe[Ne]}),"]")}):E.commandRaise('invalid or missing data for uniform "'+Mt+'"',ke.commandStr);bt.value=Xe,Ft[Mt]=bt}),Object.keys(_t).forEach(function(Mt){var bt=_t[Mt];Ft[Mt]=z2(bt,function(Xe,_e){return Xe.invoke(_e,bt)})}),Ft}(Ke,Gt),We.drawVAO=We.scopeVAO=ot.vao,!We.drawVAO&&xe.program&&!Te&&et.angle_instanced_arrays&&ot.static.elements){var Ge=!0,Pe=xe.program.attributes.map(function(ge){var ke=fe.static[ge];return Ge=Ge&&!!ke,ke});if(Ge&&Pe.length>0){var ze=Fe.getVAO(Fe.createVAO({attributes:Pe,elements:ot.static.elements}));We.drawVAO=new i2(null,null,null,function(ge,ke){return ge.link(ze)}),We.useVAO=!0}}return Te?We.useVAO=!0:We.attributes=function(ge,ke){var st=ge.static,_t=ge.dynamic,Ft={};return Object.keys(st).forEach(function(Mt){var bt=st[Mt],Xe=Me.id(Mt),_e=new Yt;if(r2(bt))_e.state=1,_e.buffer=Nt.getBuffer(Nt.create(bt,M2,!1,!0)),_e.type=0;else{var we=Nt.getBuffer(bt);if(we)_e.state=1,_e.buffer=we,_e.type=0;else if(E.command(typeof bt=="object"&&bt,"invalid data for attribute "+Mt,ke.commandStr),"constant"in bt){var Ne=bt.constant;_e.buffer="null",_e.state=2,typeof Ne=="number"?_e.x=Ne:(E.command(It(Ne)&&Ne.length>0&&Ne.length<=4,"invalid constant for attribute "+Mt,ke.commandStr),wn.forEach(function(d1,i1){i1<Ne.length&&(_e[d1]=Ne[i1])}))}else{we=r2(bt.buffer)?Nt.getBuffer(Nt.create(bt.buffer,M2,!1,!0)):Nt.getBuffer(bt.buffer),E.command(!!we,'missing buffer for attribute "'+Mt+'"',ke.commandStr);var vt=0|bt.offset;E.command(vt>=0,'invalid offset for attribute "'+Mt+'"',ke.commandStr);var qt=0|bt.stride;E.command(qt>=0&&qt<256,'invalid stride for attribute "'+Mt+'", must be integer betweeen [0, 255]',ke.commandStr);var $t=0|bt.size;E.command(!("size"in bt)||$t>0&&$t<=4,'invalid size for attribute "'+Mt+'", must be 1,2,3,4',ke.commandStr);var Vt=!!bt.normalized,f1=0;"type"in bt&&(E.commandParameter(bt.type,dt,"invalid type for attribute "+Mt,ke.commandStr),f1=dt[bt.type]);var l1=0|bt.divisor;E.optional(function(){"divisor"in bt&&(E.command(l1===0||o1,'cannot specify divisor for attribute "'+Mt+'", instancing not supported',ke.commandStr),E.command(l1>=0,'invalid divisor for attribute "'+Mt+'"',ke.commandStr));var d1=ke.commandStr,i1=["buffer","offset","divisor","normalized","type","size","stride"];Object.keys(bt).forEach(function(zt){E.command(i1.indexOf(zt)>=0,'unknown parameter "'+zt+'" for attribute pointer "'+Mt+'" (valid parameters are '+i1+")",d1)})}),_e.buffer=we,_e.state=1,_e.size=$t,_e.normalized=Vt,_e.type=f1||we.dtype,_e.offset=vt,_e.stride=qt,_e.divisor=l1}}Ft[Mt]=f2(function(d1,i1){var zt=d1.attribCache;if(Xe in zt)return zt[Xe];var H1={isStream:!1};return Object.keys(_e).forEach(function(F1){H1[F1]=_e[F1]}),_e.buffer&&(H1.buffer=d1.link(_e.buffer),H1.type=H1.type||H1.buffer+".dtype"),zt[Xe]=H1,H1})}),Object.keys(_t).forEach(function(Mt){var bt=_t[Mt];Ft[Mt]=z2(bt,function(Xe,_e){var we=Xe.invoke(_e,bt),Ne=Xe.shared,vt=Xe.constants,qt=Ne.isBufferArgs,$t=Ne.buffer;E.optional(function(){Xe.assert(_e,we+"&&(typeof "+we+'==="object"||typeof '+we+'==="function")&&('+qt+"("+we+")||"+$t+".getBuffer("+we+")||"+$t+".getBuffer("+we+".buffer)||"+qt+"("+we+'.buffer)||("constant" in '+we+"&&(typeof "+we+'.constant==="number"||'+Ne.isArrayLike+"("+we+".constant))))",'invalid dynamic attribute "'+Mt+'"')});var Vt={isStream:_e.def(!1)},f1=new Yt;f1.state=1,Object.keys(f1).forEach(function(zt){Vt[zt]=_e.def(""+f1[zt])});var l1=Vt.buffer,d1=Vt.type;function i1(zt){_e(Vt[zt],"=",we,".",zt,"|0;")}return _e("if(",qt,"(",we,")){",Vt.isStream,"=true;",l1,"=",$t,".createStream(",M2,",",we,");",d1,"=",l1,".dtype;","}else{",l1,"=",$t,".getBuffer(",we,");","if(",l1,"){",d1,"=",l1,".dtype;",'}else if("constant" in ',we,"){",Vt.state,"=",2,";","if(typeof "+we+'.constant === "number"){',Vt[wn[0]],"=",we,".constant;",wn.slice(1).map(function(zt){return Vt[zt]}).join("="),"=0;","}else{",wn.map(function(zt,H1){return Vt[zt]+"="+we+".constant.length>"+H1+"?"+we+".constant["+H1+"]:0;"}).join(""),"}}else{","if(",qt,"(",we,".buffer)){",l1,"=",$t,".createStream(",M2,",",we,".buffer);","}else{",l1,"=",$t,".getBuffer(",we,".buffer);","}",d1,'="type" in ',we,"?",vt.glTypes,"[",we,".type]:",l1,".dtype;",Vt.normalized,"=!!",we,".normalized;"),i1("size"),i1("offset"),i1("stride"),i1("divisor"),_e("}}"),_e.exit("if(",Vt.isStream,"){",$t,".destroyStream(",l1,");","}"),Vt})}),Ft}(fe,Gt),We.context=function(ge){var ke=ge.static,st=ge.dynamic,_t={};return Object.keys(ke).forEach(function(Ft){var Mt=ke[Ft];_t[Ft]=f2(function(bt,Xe){return typeof Mt=="number"||typeof Mt=="boolean"?""+Mt:bt.link(Mt)})}),Object.keys(st).forEach(function(Ft){var Mt=st[Ft];_t[Ft]=z2(Mt,function(bt,Xe){return bt.invoke(Xe,Mt)})}),_t}(kt),We}function q2(Ue,fe,Ke){var kt=Ue.shared.context,Gt=Ue.scope();Object.keys(Ke).forEach(function(le){fe.save(kt,"."+le);var be=Ke[le].append(Ue,fe);Array.isArray(be)?Gt(kt,".",le,"=[",be.join(),"];"):Gt(kt,".",le,"=",be,";")}),fe(Gt)}function ln(Ue,fe,Ke,kt){var Gt,le=Ue.shared,be=le.gl,Te=le.framebuffer;x1&&(Gt=fe.def(le.extensions,".webgl_draw_buffers"));var Ee,Ie=Ue.constants,ot=Ie.drawBuffer,je=Ie.backBuffer;Ee=Ke?Ke.append(Ue,fe):fe.def(Te,".next"),kt||fe("if(",Ee,"!==",Te,".cur){"),fe("if(",Ee,"){",be,".bindFramebuffer(",36160,",",Ee,".framebuffer);"),x1&&fe(Gt,".drawBuffersWEBGL(",ot,"[",Ee,".colorAttachments.length]);"),fe("}else{",be,".bindFramebuffer(",36160,",null);"),x1&&fe(Gt,".drawBuffersWEBGL(",je,");"),fe("}",Te,".cur=",Ee,";"),kt||fe("}")}function kn(Ue,fe,Ke){var kt=Ue.shared,Gt=kt.gl,le=Ue.current,be=Ue.next,Te=kt.current,Ee=kt.next,Ie=Ue.cond(Te,".dirty");$1.forEach(function(ot){var je,xe,Ae=h2(ot);if(!(Ae in Ke.state))if(Ae in be){je=be[Ae],xe=le[Ae];var Oe=ae(_1[Ae].length,function(Ge){return Ie.def(je,"[",Ge,"]")});Ie(Ue.cond(Oe.map(function(Ge,Pe){return Ge+"!=="+xe+"["+Pe+"]"}).join("||")).then(Gt,".",V1[Ae],"(",Oe,");",Oe.map(function(Ge,Pe){return xe+"["+Pe+"]="+Ge}).join(";"),";"))}else{je=Ie.def(Ee,".",Ae);var We=Ue.cond(je,"!==",Te,".",Ae);Ie(We),Ae in j1?We(Ue.cond(je).then(Gt,".enable(",j1[Ae],");").else(Gt,".disable(",j1[Ae],");"),Te,".",Ae,"=",je,";"):We(Gt,".",V1[Ae],"(",je,");",Te,".",Ae,"=",je,";")}}),Object.keys(Ke.state).length===0&&Ie(Te,".dirty=false;"),fe(Ie)}function F2(Ue,fe,Ke,kt){var Gt=Ue.shared,le=Ue.current,be=Gt.current,Te=Gt.gl;Fn(Object.keys(Ke)).forEach(function(Ee){var Ie=Ke[Ee];if(!kt||kt(Ie)){var ot=Ie.append(Ue,fe);if(j1[Ee]){var je=j1[Ee];C2(Ie)?fe(Te,ot?".enable(":".disable(",je,");"):fe(Ue.cond(ot).then(Te,".enable(",je,");").else(Te,".disable(",je,");")),fe(be,".",Ee,"=",ot,";")}else if(It(ot)){var xe=le[Ee];fe(Te,".",V1[Ee],"(",ot,");",ot.map(function(Ae,Oe){return xe+"["+Oe+"]="+Ae}).join(";"),";")}else fe(Te,".",V1[Ee],"(",ot,");",be,".",Ee,"=",ot,";")}})}function dn(Ue,fe){o1&&(Ue.instancing=fe.def(Ue.shared.extensions,".angle_instanced_arrays"))}function gn(Ue,fe,Ke,kt,Gt){var le,be,Te,Ee=Ue.shared,Ie=Ue.stats,ot=Ee.current,je=Ee.timer,xe=Ke.profile;function Ae(){return typeof performance>"u"?"Date.now()":"performance.now()"}function Oe(ge){ge(le=fe.def(),"=",Ae(),";"),typeof Gt=="string"?ge(Ie,".count+=",Gt,";"):ge(Ie,".count++;"),ft&&(kt?ge(be=fe.def(),"=",je,".getNumPendingQueries();"):ge(je,".beginQuery(",Ie,");"))}function We(ge){ge(Ie,".cpuTime+=",Ae(),"-",le,";"),ft&&(kt?ge(je,".pushScopeStats(",be,",",je,".getNumPendingQueries(),",Ie,");"):ge(je,".endQuery();"))}function Ge(ge){var ke=fe.def(ot,".profile");fe(ot,".profile=",ge,";"),fe.exit(ot,".profile=",ke,";")}if(xe){if(C2(xe))return void(xe.enable?(Oe(fe),We(fe.exit),Ge("true")):Ge("false"));Ge(Te=xe.append(Ue,fe))}else Te=fe.def(ot,".profile");var Pe=Ue.block();Oe(Pe),fe("if(",Te,"){",Pe,"}");var ze=Ue.block();We(ze),fe.exit("if(",Te,"){",ze,"}")}function Qn(Ue,fe,Ke,kt,Gt){var le=Ue.shared;kt.forEach(function(be){var Te,Ee=be.name,Ie=Ke.attributes[Ee];if(Ie){if(!Gt(Ie))return;Te=Ie.append(Ue,fe)}else{if(!Gt(h3))return;var ot=Ue.scopeAttrib(Ee);E.optional(function(){Ue.assert(fe,ot+".state","missing attribute "+Ee)}),Te={},Object.keys(new Yt).forEach(function(je){Te[je]=fe.def(ot,".",je)})}(function(je,xe,Ae){var Oe=le.gl,We=fe.def(je,".location"),Ge=fe.def(le.attributes,"[",We,"]"),Pe=Ae.state,ze=Ae.buffer,ge=[Ae.x,Ae.y,Ae.z,Ae.w],ke=["buffer","normalized","offset","stride"];function st(){fe("if(!",Ge,".buffer){",Oe,".enableVertexAttribArray(",We,");}");var Ft,Mt=Ae.type;if(Ft=Ae.size?fe.def(Ae.size,"||",xe):xe,fe("if(",Ge,".type!==",Mt,"||",Ge,".size!==",Ft,"||",ke.map(function(Xe){return Ge+"."+Xe+"!=="+Ae[Xe]}).join("||"),"){",Oe,".bindBuffer(",M2,",",ze,".buffer);",Oe,".vertexAttribPointer(",[We,Ft,Mt,Ae.normalized,Ae.stride,Ae.offset],");",Ge,".type=",Mt,";",Ge,".size=",Ft,";",ke.map(function(Xe){return Ge+"."+Xe+"="+Ae[Xe]+";"}).join(""),"}"),o1){var bt=Ae.divisor;fe("if(",Ge,".divisor!==",bt,"){",Ue.instancing,".vertexAttribDivisorANGLE(",[We,bt],");",Ge,".divisor=",bt,";}")}}function _t(){fe("if(",Ge,".buffer){",Oe,".disableVertexAttribArray(",We,");",Ge,".buffer=null;","}if(",wn.map(function(Ft,Mt){return Ge+"."+Ft+"!=="+ge[Mt]}).join("||"),"){",Oe,".vertexAttrib4f(",We,",",ge,");",wn.map(function(Ft,Mt){return Ge+"."+Ft+"="+ge[Mt]+";"}).join(""),"}")}Pe===1?st():Pe===2?_t():(fe("if(",Pe,"===",1,"){"),st(),fe("}else{"),_t(),fe("}"))})(Ue.link(be),function(je){switch(je){case O2:case x2:case un:return 2;case U2:case R2:case An:return 3;case g2:case v2:case Xn:return 4;default:return 1}}(be.info.type),Te)})}function vn(Ue,fe,Ke,kt,Gt,le){for(var be,Te=Ue.shared,Ee=Te.gl,Ie={},ot=0;ot<kt.length;++ot){var je=kt[ot],xe=je.name,Ae=je.info.type,Oe=je.info.size,We=Ke.uniforms[xe];if(Oe>1){if(!We)continue;var Ge=xe.replace("[0]","");if(Ie[Ge])continue;Ie[Ge]=1}var Pe,ze=Ue.link(je)+".location";if(We){if(!Gt(We))continue;if(C2(We)){var ge=We.value;if(E.command(ge!=null,'missing uniform "'+xe+'"',Ue.commandStr),Ae===Bn||Ae===jn){E.command(typeof ge=="function"&&(Ae===Bn&&(ge._reglType==="texture2d"||ge._reglType==="framebuffer")||Ae===jn&&(ge._reglType==="textureCube"||ge._reglType==="framebufferCube")),"invalid texture for uniform "+xe,Ue.commandStr);var ke=Ue.link(ge._texture||ge.color[0]._texture);fe(Ee,".uniform1i(",ze,",",ke+".bind());"),fe.exit(ke,".unbind();")}else if(Ae===Nn||Ae===Dn||Ae===fn){E.optional(function(){E.command(It(ge),"invalid matrix for uniform "+xe,Ue.commandStr),E.command(Ae===Nn&&ge.length===4||Ae===Dn&&ge.length===9||Ae===fn&&ge.length===16,"invalid length for matrix uniform "+xe,Ue.commandStr)});var st=Ue.global.def("new Float32Array(["+Array.prototype.slice.call(ge)+"])"),_t=2;Ae===Dn?_t=3:Ae===fn&&(_t=4),fe(Ee,".uniformMatrix",_t,"fv(",ze,",false,",st,");")}else{switch(Ae){case B2:Oe===1?E.commandType(ge,"number","uniform "+xe,Ue.commandStr):E.command(It(ge)&&ge.length===Oe,"uniform "+xe,Ue.commandStr),be="1f";break;case O2:E.command(It(ge)&&ge.length&&ge.length%2==0&&ge.length<=2*Oe,"uniform "+xe,Ue.commandStr),be="2f";break;case U2:E.command(It(ge)&&ge.length&&ge.length%3==0&&ge.length<=3*Oe,"uniform "+xe,Ue.commandStr),be="3f";break;case g2:E.command(It(ge)&&ge.length&&ge.length%4==0&&ge.length<=4*Oe,"uniform "+xe,Ue.commandStr),be="4f";break;case j2:Oe===1?E.commandType(ge,"boolean","uniform "+xe,Ue.commandStr):E.command(It(ge)&&ge.length===Oe,"uniform "+xe,Ue.commandStr),be="1i";break;case Y1:Oe===1?E.commandType(ge,"number","uniform "+xe,Ue.commandStr):E.command(It(ge)&&ge.length===Oe,"uniform "+xe,Ue.commandStr),be="1i";break;case un:case x2:E.command(It(ge)&&ge.length&&ge.length%2==0&&ge.length<=2*Oe,"uniform "+xe,Ue.commandStr),be="2i";break;case An:case R2:E.command(It(ge)&&ge.length&&ge.length%3==0&&ge.length<=3*Oe,"uniform "+xe,Ue.commandStr),be="3i";break;case Xn:case v2:E.command(It(ge)&&ge.length&&ge.length%4==0&&ge.length<=4*Oe,"uniform "+xe,Ue.commandStr),be="4i"}Oe>1?(be+="v",ge=Ue.global.def("["+Array.prototype.slice.call(ge)+"]")):ge=It(ge)?Array.prototype.slice.call(ge):ge,fe(Ee,".uniform",be,"(",ze,",",ge,");")}continue}Pe=We.append(Ue,fe)}else{if(!Gt(h3))continue;Pe=fe.def(Te.uniforms,"[",Me.id(xe),"]")}Ae===Bn?(E(!Array.isArray(Pe),"must specify a scalar prop for textures"),fe("if(",Pe,"&&",Pe,'._reglType==="framebuffer"){',Pe,"=",Pe,".color[0];","}")):Ae===jn&&(E(!Array.isArray(Pe),"must specify a scalar prop for cube maps"),fe("if(",Pe,"&&",Pe,'._reglType==="framebufferCube"){',Pe,"=",Pe,".color[0];","}")),E.optional(function(){function qt(l1,d1){Ue.assert(fe,l1,'bad data or missing for uniform "'+xe+'". '+d1)}function $t(l1,d1){d1===1&&E(!Array.isArray(Pe),"must not specify an array type for uniform"),qt("Array.isArray("+Pe+") && typeof "+Pe+'[0]===" '+l1+'" || typeof '+Pe+'==="'+l1+'"',"invalid type, expected "+l1)}function Vt(l1,d1,i1){Array.isArray(Pe)?E(Pe.length&&Pe.length%l1==0&&Pe.length<=l1*i1,"must have length of "+(i1===1?"":"n * ")+l1):qt(Te.isArrayLike+"("+Pe+")&&"+Pe+".length && "+Pe+".length % "+l1+" === 0 && "+Pe+".length<="+l1*i1,"invalid vector, should have length of "+(i1===1?"":"n * ")+l1,Ue.commandStr)}function f1(l1){E(!Array.isArray(Pe),"must not specify a value type"),qt("typeof "+Pe+'==="function"&&'+Pe+'._reglType==="texture'+(l1===3553?"2d":"Cube")+'"',"invalid texture type",Ue.commandStr)}switch(Ae){case Y1:$t("number",Oe);break;case x2:Vt(2,0,Oe);break;case R2:Vt(3,0,Oe);break;case v2:Vt(4,0,Oe);break;case B2:$t("number",Oe);break;case O2:Vt(2,0,Oe);break;case U2:Vt(3,0,Oe);break;case g2:Vt(4,0,Oe);break;case j2:$t("boolean",Oe);break;case un:Vt(2,0,Oe);break;case An:Vt(3,0,Oe);break;case Xn:case Nn:Vt(4,0,Oe);break;case Dn:Vt(9,0,Oe);break;case fn:Vt(16,0,Oe);break;case Bn:f1(3553);break;case jn:f1(34067)}});var Ft=1;switch(Ae){case Bn:case jn:var Mt=fe.def(Pe,"._texture");fe(Ee,".uniform1i(",ze,",",Mt,".bind());"),fe.exit(Mt,".unbind();");continue;case Y1:case j2:be="1i";break;case x2:case un:be="2i",Ft=2;break;case R2:case An:be="3i",Ft=3;break;case v2:case Xn:be="4i",Ft=4;break;case B2:be="1f";break;case O2:be="2f",Ft=2;break;case U2:be="3f",Ft=3;break;case g2:be="4f",Ft=4;break;case Nn:be="Matrix2fv";break;case Dn:be="Matrix3fv";break;case fn:be="Matrix4fv"}if(be.indexOf("Matrix")===-1&&Oe>1&&(be+="v",Ft=1),be.charAt(0)==="M"){fe(Ee,".uniform",be,"(",ze,",");var bt=Math.pow(Ae-Nn+2,2),Xe=Ue.global.def("new Float32Array(",bt,")");Array.isArray(Pe)?fe("false,(",ae(bt,function(qt){return Xe+"["+qt+"]="+Pe[qt]}),",",Xe,")"):fe("false,(Array.isArray(",Pe,")||",Pe," instanceof Float32Array)?",Pe,":(",ae(bt,function(qt){return Xe+"["+qt+"]="+Pe+"["+qt+"]"}),",",Xe,")"),fe(");")}else if(Ft>1){for(var _e=[],we=[],Ne=0;Ne<Ft;++Ne)Array.isArray(Pe)?we.push(Pe[Ne]):we.push(fe.def(Pe+"["+Ne+"]")),le&&_e.push(fe.def());le&&fe("if(!",Ue.batchId,"||",_e.map(function(qt,$t){return qt+"!=="+we[$t]}).join("||"),"){",_e.map(function(qt,$t){return qt+"="+we[$t]+";"}).join("")),fe(Ee,".uniform",be,"(",ze,",",we.join(","),");"),le&&fe("}")}else{if(E(!Array.isArray(Pe),"uniform value must not be an array"),le){var vt=fe.def();fe("if(!",Ue.batchId,"||",vt,"!==",Pe,"){",vt,"=",Pe,";")}fe(Ee,".uniform",be,"(",ze,",",Pe,");"),le&&fe("}")}}}function Tn(Ue,fe,Ke,kt){var Gt=Ue.shared,le=Gt.gl,be=Gt.draw,Te=kt.draw,Ee=function(){var ge,ke=Te.elements,st=fe;return ke?((ke.contextDep&&kt.contextDynamic||ke.propDep)&&(st=Ke),ge=ke.append(Ue,st),Te.elementsActive&&st("if("+ge+")"+le+".bindBuffer(34963,"+ge+".buffer.buffer);")):(ge=st.def(),st(ge,"=",be,".",A2,";","if(",ge,"){",le,".bindBuffer(",_2,",",ge,".buffer.buffer);}","else if(",Gt.vao,".currentVAO){",ge,"=",Ue.shared.elements+".getElements("+Gt.vao,".currentVAO.elements);",O1?"":"if("+ge+")"+le+".bindBuffer(34963,"+ge+".buffer.buffer);","}")),ge}();function Ie(ge){var ke=Te[ge];return ke?ke.contextDep&&kt.contextDynamic||ke.propDep?ke.append(Ue,Ke):ke.append(Ue,fe):fe.def(be,".",ge)}var ot,je,xe=Ie(q1),Ae=Ie(V2),Oe=function(){var ge,ke=Te.count,st=fe;return ke?((ke.contextDep&&kt.contextDynamic||ke.propDep)&&(st=Ke),ge=ke.append(Ue,st),E.optional(function(){ke.MISSING&&Ue.assert(fe,"false","missing vertex count"),ke.DYNAMIC&&Ue.assert(st,ge+">=0","missing vertex count")})):(ge=st.def(be,".",M1),E.optional(function(){Ue.assert(st,ge+">=0","missing vertex count")})),ge}();if(typeof Oe=="number"){if(Oe===0)return}else Ke("if(",Oe,"){"),Ke.exit("}");o1&&(ot=Ie(z1),je=Ue.instancing);var We=Ee+".type",Ge=Te.elements&&C2(Te.elements)&&!Te.vaoActive;function Pe(){function ge(){Ke(je,".drawElementsInstancedANGLE(",[xe,Oe,We,Ae+"<<(("+We+"-5121)>>1)",ot],");")}function ke(){Ke(je,".drawArraysInstancedANGLE(",[xe,Ae,Oe,ot],");")}Ee&&Ee!=="null"?Ge?ge():(Ke("if(",Ee,"){"),ge(),Ke("}else{"),ke(),Ke("}")):ke()}function ze(){function ge(){Ke(le+".drawElements("+[xe,Oe,We,Ae+"<<(("+We+"-5121)>>1)"]+");")}function ke(){Ke(le+".drawArrays("+[xe,Ae,Oe]+");")}Ee&&Ee!=="null"?Ge?ge():(Ke("if(",Ee,"){"),ge(),Ke("}else{"),ke(),Ke("}")):ke()}o1&&(typeof ot!="number"||ot>=0)?typeof ot=="string"?(Ke("if(",ot,">0){"),Pe(),Ke("}else if(",ot,"<0){"),ze(),Ke("}")):Pe():ze()}function Sn(Ue,fe,Ke,kt,Gt){var le=an(),be=le.proc("body",Gt);return E.optional(function(){le.commandStr=fe.commandStr,le.command=le.link(fe.commandStr)}),o1&&(le.instancing=be.def(le.shared.extensions,".angle_instanced_arrays")),Ue(le,be,Ke,kt),le.compile().body}function Cn(Ue,fe,Ke,kt){dn(Ue,fe),Ke.useVAO?Ke.drawVAO?fe(Ue.shared.vao,".setVAO(",Ke.drawVAO.append(Ue,fe),");"):fe(Ue.shared.vao,".setVAO(",Ue.shared.vao,".targetVAO);"):(fe(Ue.shared.vao,".setVAO(null);"),Qn(Ue,fe,Ke,kt.attributes,function(){return!0})),vn(Ue,fe,Ke,kt.uniforms,function(){return!0},!1),Tn(Ue,fe,fe,Ke)}function Kn(Ue,fe,Ke,kt){function Gt(){return!0}Ue.batchId="a1",dn(Ue,fe),Qn(Ue,fe,Ke,kt.attributes,Gt),vn(Ue,fe,Ke,kt.uniforms,Gt,!1),Tn(Ue,fe,fe,Ke)}function en(Ue,fe,Ke,kt){dn(Ue,fe);var Gt=Ke.contextDep,le=fe.def(),be=fe.def();Ue.shared.props=be,Ue.batchId=le;var Te=Ue.scope(),Ee=Ue.scope();function Ie(We){return We.contextDep&&Gt||We.propDep}function ot(We){return!Ie(We)}if(fe(Te.entry,"for(",le,"=0;",le,"<","a1",";++",le,"){",be,"=","a0","[",le,"];",Ee,"}",Te.exit),Ke.needsContext&&q2(Ue,Ee,Ke.context),Ke.needsFramebuffer&&ln(Ue,Ee,Ke.framebuffer),F2(Ue,Ee,Ke.state,Ie),Ke.profile&&Ie(Ke.profile)&&gn(Ue,Ee,Ke,!1,!0),kt)Ke.useVAO?Ke.drawVAO?Ie(Ke.drawVAO)?Ee(Ue.shared.vao,".setVAO(",Ke.drawVAO.append(Ue,Ee),");"):Te(Ue.shared.vao,".setVAO(",Ke.drawVAO.append(Ue,Te),");"):Te(Ue.shared.vao,".setVAO(",Ue.shared.vao,".targetVAO);"):(Te(Ue.shared.vao,".setVAO(null);"),Qn(Ue,Te,Ke,kt.attributes,ot),Qn(Ue,Ee,Ke,kt.attributes,Ie)),vn(Ue,Te,Ke,kt.uniforms,ot,!1),vn(Ue,Ee,Ke,kt.uniforms,Ie,!0),Tn(Ue,Te,Ee,Ke);else{var je=Ue.global.def("{}"),xe=Ke.shader.progVar.append(Ue,Ee),Ae=Ee.def(xe,".id"),Oe=Ee.def(je,"[",Ae,"]");Ee(Ue.shared.gl,".useProgram(",xe,".program);","if(!",Oe,"){",Oe,"=",je,"[",Ae,"]=",Ue.link(function(We){return Sn(Kn,Ue,Ke,We,2)}),"(",xe,");}",Oe,".call(this,a0[",le,"],",le,");")}}function cn(Ue,fe,Ke){var kt=fe.static[Ke];if(kt&&function(ot){if(typeof ot=="object"&&!It(ot)){for(var je=Object.keys(ot),xe=0;xe<je.length;++xe)if(M.isDynamic(ot[je[xe]]))return!0;return!1}}(kt)){var Gt=Ue.global,le=Object.keys(kt),be=!1,Te=!1,Ee=!1,Ie=Ue.global.def("{}");le.forEach(function(ot){var je=kt[ot];if(M.isDynamic(je)){typeof je=="function"&&(je=kt[ot]=M.unbox(je));var xe=z2(je,null);be=be||xe.thisDep,Ee=Ee||xe.propDep,Te=Te||xe.contextDep}else{switch(Gt(Ie,".",ot,"="),typeof je){case"number":Gt(je);break;case"string":Gt('"',je,'"');break;case"object":Array.isArray(je)&&Gt("[",je.join(),"]");break;default:Gt(Ue.link(je))}Gt(";")}}),fe.dynamic[Ke]=new M.DynamicVariable(4,{thisDep:be,contextDep:Te,propDep:Ee,ref:Ie,append:function(ot,je){le.forEach(function(xe){var Ae=kt[xe];if(M.isDynamic(Ae)){var Oe=ot.invoke(je,Ae);je(Ie,".",xe,"=",Oe,";")}})}}),delete fe.static[Ke]}}return{next:B1,current:_1,procs:function(){var Ue=an(),fe=Ue.proc("poll"),Ke=Ue.proc("refresh"),kt=Ue.block();fe(kt),Ke(kt);var Gt,le=Ue.shared,be=le.gl,Te=le.next,Ee=le.current;kt(Ee,".dirty=false;"),ln(Ue,fe),ln(Ue,Ke,null,!0),o1&&(Gt=Ue.link(o1)),et.oes_vertex_array_object&&Ke(Ue.link(et.oes_vertex_array_object),".bindVertexArrayOES(null);");for(var Ie=0;Ie<Ot.maxAttributes;++Ie){var ot=Ke.def(le.attributes,"[",Ie,"]"),je=Ue.cond(ot,".buffer");je.then(be,".enableVertexAttribArray(",Ie,");",be,".bindBuffer(",M2,",",ot,".buffer.buffer);",be,".vertexAttribPointer(",Ie,",",ot,".size,",ot,".type,",ot,".normalized,",ot,".stride,",ot,".offset);").else(be,".disableVertexAttribArray(",Ie,");",be,".vertexAttrib4f(",Ie,",",ot,".x,",ot,".y,",ot,".z,",ot,".w);",ot,".buffer=null;"),Ke(je),o1&&Ke(Gt,".vertexAttribDivisorANGLE(",Ie,",",ot,".divisor);")}return Ke(Ue.shared.vao,".currentVAO=null;",Ue.shared.vao,".setVAO(",Ue.shared.vao,".targetVAO);"),Object.keys(j1).forEach(function(xe){var Ae=j1[xe],Oe=kt.def(Te,".",xe),We=Ue.block();We("if(",Oe,"){",be,".enable(",Ae,")}else{",be,".disable(",Ae,")}",Ee,".",xe,"=",Oe,";"),Ke(We),fe("if(",Oe,"!==",Ee,".",xe,"){",We,"}")}),Object.keys(V1).forEach(function(xe){var Ae,Oe,We=V1[xe],Ge=_1[xe],Pe=Ue.block();if(Pe(be,".",We,"("),It(Ge)){var ze=Ge.length;Ae=Ue.global.def(Te,".",xe),Oe=Ue.global.def(Ee,".",xe),Pe(ae(ze,function(ge){return Ae+"["+ge+"]"}),");",ae(ze,function(ge){return Oe+"["+ge+"]="+Ae+"["+ge+"];"}).join("")),fe("if(",ae(ze,function(ge){return Ae+"["+ge+"]!=="+Oe+"["+ge+"]"}).join("||"),"){",Pe,"}")}else Ae=kt.def(Te,".",xe),Oe=kt.def(Ee,".",xe),Pe(Ae,");",Ee,".",xe,"=",Ae,";"),fe("if(",Ae,"!==",Oe,"){",Pe,"}");Ke(Pe)}),Ue.compile()}(),compile:function(Ue,fe,Ke,kt,Gt){var le=an();le.stats=le.link(Gt),Object.keys(fe.static).forEach(function(Te){cn(le,fe,Te)}),En.forEach(function(Te){cn(le,Ue,Te)});var be=rn(Ue,fe,Ke,kt,le);return function(Te,Ee){var Ie=Te.proc("draw",1);dn(Te,Ie),q2(Te,Ie,Ee.context),ln(Te,Ie,Ee.framebuffer),kn(Te,Ie,Ee),F2(Te,Ie,Ee.state),gn(Te,Ie,Ee,!1,!0);var ot=Ee.shader.progVar.append(Te,Ie);if(Ie(Te.shared.gl,".useProgram(",ot,".program);"),Ee.shader.program)Cn(Te,Ie,Ee,Ee.shader.program);else{Ie(Te.shared.vao,".setVAO(null);");var je=Te.global.def("{}"),xe=Ie.def(ot,".id"),Ae=Ie.def(je,"[",xe,"]");Ie(Te.cond(Ae).then(Ae,".call(this,a0);").else(Ae,"=",je,"[",xe,"]=",Te.link(function(Oe){return Sn(Cn,Te,Ee,Oe,1)}),"(",ot,");",Ae,".call(this,a0);"))}Object.keys(Ee.state).length>0&&Ie(Te.shared.current,".dirty=true;"),Te.shared.vao&&Ie(Te.shared.vao,".setVAO(null);")}(le,be),function(Te,Ee){var Ie=Te.proc("scope",3);Te.batchId="a2";var ot=Te.shared,je=ot.current;function xe(Ae){var Oe=Ee.shader[Ae];Oe&&Ie.set(ot.shader,"."+Ae,Oe.append(Te,Ie))}q2(Te,Ie,Ee.context),Ee.framebuffer&&Ee.framebuffer.append(Te,Ie),Fn(Object.keys(Ee.state)).forEach(function(Ae){var Oe=Ee.state[Ae].append(Te,Ie);It(Oe)?Oe.forEach(function(We,Ge){Ie.set(Te.next[Ae],"["+Ge+"]",We)}):Ie.set(ot.next,"."+Ae,Oe)}),gn(Te,Ie,Ee,!0,!0),[A2,V2,M1,z1,q1].forEach(function(Ae){var Oe=Ee.draw[Ae];Oe&&Ie.set(ot.draw,"."+Ae,""+Oe.append(Te,Ie))}),Object.keys(Ee.uniforms).forEach(function(Ae){var Oe=Ee.uniforms[Ae].append(Te,Ie);Array.isArray(Oe)&&(Oe="["+Oe.join()+"]"),Ie.set(ot.uniforms,"["+Me.id(Ae)+"]",Oe)}),Object.keys(Ee.attributes).forEach(function(Ae){var Oe=Ee.attributes[Ae].append(Te,Ie),We=Te.scopeAttrib(Ae);Object.keys(new Yt).forEach(function(Ge){Ie.set(We,"."+Ge,Oe[Ge])})}),Ee.scopeVAO&&Ie.set(ot.vao,".targetVAO",Ee.scopeVAO.append(Te,Ie)),xe(c2),xe(m2),Object.keys(Ee.state).length>0&&(Ie(je,".dirty=true;"),Ie.exit(je,".dirty=true;")),Ie("a1(",Te.shared.context,",a0,",Te.batchId,");")}(le,be),function(Te,Ee){var Ie=Te.proc("batch",2);Te.batchId="0",dn(Te,Ie);var ot=!1,je=!0;Object.keys(Ee.context).forEach(function(ke){ot=ot||Ee.context[ke].propDep}),ot||(q2(Te,Ie,Ee.context),je=!1);var xe=Ee.framebuffer,Ae=!1;function Oe(ke){return ke.contextDep&&ot||ke.propDep}xe?(xe.propDep?ot=Ae=!0:xe.contextDep&&ot&&(Ae=!0),Ae||ln(Te,Ie,xe)):ln(Te,Ie,null),Ee.state.viewport&&Ee.state.viewport.propDep&&(ot=!0),kn(Te,Ie,Ee),F2(Te,Ie,Ee.state,function(ke){return!Oe(ke)}),Ee.profile&&Oe(Ee.profile)||gn(Te,Ie,Ee,!1,"a1"),Ee.contextDep=ot,Ee.needsContext=je,Ee.needsFramebuffer=Ae;var We=Ee.shader.progVar;if(We.contextDep&&ot||We.propDep)en(Te,Ie,Ee,null);else{var Ge=We.append(Te,Ie);if(Ie(Te.shared.gl,".useProgram(",Ge,".program);"),Ee.shader.program)en(Te,Ie,Ee,Ee.shader.program);else{Ie(Te.shared.vao,".setVAO(null);");var Pe=Te.global.def("{}"),ze=Ie.def(Ge,".id"),ge=Ie.def(Pe,"[",ze,"]");Ie(Te.cond(ge).then(ge,".call(this,a0,a1);").else(ge,"=",Pe,"[",ze,"]=",Te.link(function(ke){return Sn(en,Te,Ee,ke,2)}),"(",Ge,");",ge,".call(this,a0,a1);"))}}Object.keys(Ee.state).length>0&&Ie(Te.shared.current,".dirty=true;"),Te.shared.vao&&Ie(Te.shared.vao,".setVAO(null);")}(le,be),p(le.compile(),{destroy:function(){be.shader.program.destroy()}})}}}var d3=function(he,Me){if(!Me.ext_disjoint_timer_query)return null;var et=[];function Ot(ut){et.push(ut)}var Nt=[];function Jt(){this.startQueryIndex=-1,this.endQueryIndex=-1,this.sum=0,this.stats=null}var te=[];function ve(ut){te.push(ut)}var Se=[];function Fe(ut,ft,Ct){var Yt=te.pop()||new Jt;Yt.startQueryIndex=ut,Yt.endQueryIndex=ft,Yt.sum=0,Yt.stats=Ct,Se.push(Yt)}var Ce=[],it=[];return{beginQuery:function(ut){var ft=et.pop()||Me.ext_disjoint_timer_query.createQueryEXT();Me.ext_disjoint_timer_query.beginQueryEXT(35007,ft),Nt.push(ft),Fe(Nt.length-1,Nt.length,ut)},endQuery:function(){Me.ext_disjoint_timer_query.endQueryEXT(35007)},pushScopeStats:Fe,update:function(){var ut,ft,Ct=Nt.length;if(Ct!==0){it.length=Math.max(it.length,Ct+1),Ce.length=Math.max(Ce.length,Ct+1),Ce[0]=0,it[0]=0;var Yt=0;for(ut=0,ft=0;ft<Nt.length;++ft){var Q1=Nt[ft];Me.ext_disjoint_timer_query.getQueryObjectEXT(Q1,34919)?(Yt+=Me.ext_disjoint_timer_query.getQueryObjectEXT(Q1,34918),Ot(Q1)):Nt[ut++]=Q1,Ce[ft+1]=Yt,it[ft+1]=ut}for(Nt.length=ut,ut=0,ft=0;ft<Se.length;++ft){var o1=Se[ft],x1=o1.startQueryIndex,O1=o1.endQueryIndex;o1.sum+=Ce[O1]-Ce[x1];var _1=it[x1],B1=it[O1];B1===_1?(o1.stats.gpuTime+=o1.sum/1e6,ve(o1)):(o1.startQueryIndex=_1,o1.endQueryIndex=B1,Se[ut++]=o1)}Se.length=ut}},getNumPendingQueries:function(){return Nt.length},clear:function(){et.push.apply(et,Nt);for(var ut=0;ut<et.length;ut++)Me.ext_disjoint_timer_query.deleteQueryEXT(et[ut]);Nt.length=0,et.length=0},restore:function(){Nt.length=0,et.length=0}}},mn="webglcontextlost",Yn="webglcontextrestored";function l3(he,Me){for(var et=0;et<he.length;++et)if(he[et]===Me)return et;return-1}return function(he){var Me=X(he);if(!Me)return null;var et=Me.gl,Ot=et.getContextAttributes(),Nt=et.isContextLost(),Jt=function(fe,Ke){var kt={};function Gt(Te){E.type(Te,"string","extension name must be string");var Ee,Ie=Te.toLowerCase();try{Ee=kt[Ie]=fe.getExtension(Ie)}catch{}return!!Ee}for(var le=0;le<Ke.extensions.length;++le){var be=Ke.extensions[le];if(!Gt(be))return Ke.onDestroy(),Ke.onDone('"'+be+'" extension is not supported by the current WebGL context, try upgrading your system or a different browser'),null}return Ke.optionalExtensions.forEach(Gt),{extensions:kt,restore:function(){Object.keys(kt).forEach(function(Te){if(kt[Te]&&!Gt(Te))throw new Error("(regl): error restoring extension "+Te)})}}}(et,Me);if(!Jt)return null;var te,ve,Se=(te={"":0},ve=[""],{id:function(fe){var Ke=te[fe];return Ke||(Ke=te[fe]=ve.length,ve.push(fe),Ke)},str:function(fe){return ve[fe]}}),Fe={vaoCount:0,bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0},Ce=Jt.extensions,it=d3(0,Ce),ut=W(),ft=et.drawingBufferWidth,Ct=et.drawingBufferHeight,Yt={tick:0,time:0,viewportWidth:ft,viewportHeight:Ct,framebufferWidth:ft,framebufferHeight:Ct,drawingBufferWidth:ft,drawingBufferHeight:Ct,pixelRatio:Me.pixelRatio},Q1={elements:null,primitive:4,count:-1,offset:0,instances:-1},o1=function(fe,Ke){var kt=1;Ke.ext_texture_filter_anisotropic&&(kt=fe.getParameter(34047));var Gt=1,le=1;Ke.webgl_draw_buffers&&(Gt=fe.getParameter(34852),le=fe.getParameter(36063));var be=!!Ke.oes_texture_float;if(be){var Te=fe.createTexture();fe.bindTexture(rt,Te),fe.texImage2D(rt,0,yt,1,1,0,yt,xt,null);var Ee=fe.createFramebuffer();if(fe.bindFramebuffer(r1,Ee),fe.framebufferTexture2D(r1,36064,rt,Te,0),fe.bindTexture(rt,null),fe.checkFramebufferStatus(r1)!==36053)be=!1;else{fe.viewport(0,0,1,1),fe.clearColor(1,0,0,1),fe.clear(16384);var Ie=Je.allocType(xt,4);fe.readPixels(0,0,1,1,yt,xt,Ie),fe.getError()?be=!1:(fe.deleteFramebuffer(Ee),fe.deleteTexture(Te),be=Ie[0]===1),Je.freeType(Ie)}}var ot=!0;if(typeof navigator>"u"||!(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent))){var je=fe.createTexture(),xe=Je.allocType(5121,36);fe.activeTexture(33984),fe.bindTexture(34067,je),fe.texImage2D(34069,0,yt,3,3,0,yt,5121,xe),Je.freeType(xe),fe.bindTexture(34067,null),fe.deleteTexture(je),ot=!fe.getError()}return{colorBits:[fe.getParameter(3410),fe.getParameter(3411),fe.getParameter(3412),fe.getParameter(3413)],depthBits:fe.getParameter(3414),stencilBits:fe.getParameter(3415),subpixelBits:fe.getParameter(3408),extensions:Object.keys(Ke).filter(function(Ae){return!!Ke[Ae]}),maxAnisotropic:kt,maxDrawbuffers:Gt,maxColorAttachments:le,pointSizeDims:fe.getParameter(33901),lineWidthDims:fe.getParameter(33902),maxViewportDims:fe.getParameter(3386),maxCombinedTextureUnits:fe.getParameter(35661),maxCubeMapSize:fe.getParameter(34076),maxRenderbufferSize:fe.getParameter(34024),maxTextureUnits:fe.getParameter(34930),maxTextureSize:fe.getParameter(3379),maxAttributes:fe.getParameter(34921),maxVertexUniforms:fe.getParameter(36347),maxVertexTextureUnits:fe.getParameter(35660),maxVaryingVectors:fe.getParameter(36348),maxFragmentUniforms:fe.getParameter(36349),glsl:fe.getParameter(35724),renderer:fe.getParameter(7937),vendor:fe.getParameter(7936),version:fe.getParameter(7938),readFloat:be,npotTextureCube:ot}}(et,Ce),x1=function(fe,Ke,kt,Gt){var le=0,be={};function Te(xe){this.id=le++,this.buffer=fe.createBuffer(),this.type=xe,this.usage=35044,this.byteLength=0,this.dimension=1,this.dtype=ye,this.persistentData=null,kt.profile&&(this.stats={size:0})}Te.prototype.bind=function(){fe.bindBuffer(this.type,this.buffer)},Te.prototype.destroy=function(){je(this)};var Ee=[];function Ie(xe,Ae,Oe){xe.byteLength=Ae.byteLength,fe.bufferData(xe.type,Ae,Oe)}function ot(xe,Ae,Oe,We,Ge,Pe){var ze,ge;if(xe.usage=Oe,Array.isArray(Ae)){if(xe.dtype=We||ie,Ae.length>0)if(Array.isArray(Ae[0])){ze=a1(Ae);for(var ke=1,st=1;st<ze.length;++st)ke*=ze[st];xe.dimension=ke,Ie(xe,ge=jt(Ae,ze,xe.dtype),Oe),Pe?xe.persistentData=ge:Je.freeType(ge)}else if(typeof Ae[0]=="number"){xe.dimension=Ge;var _t=Je.allocType(xe.dtype,Ae.length);mt(_t,Ae),Ie(xe,_t,Oe),Pe?xe.persistentData=_t:Je.freeType(_t)}else g(Ae[0])?(xe.dimension=Ae[0].length,xe.dtype=We||St(Ae[0])||ie,Ie(xe,ge=jt(Ae,[Ae.length,Ae[0].length],xe.dtype),Oe),Pe?xe.persistentData=ge:Je.freeType(ge)):E.raise("invalid buffer data")}else if(g(Ae))xe.dtype=We||St(Ae),xe.dimension=Ge,Ie(xe,Ae,Oe),Pe&&(xe.persistentData=new Uint8Array(new Uint8Array(Ae.buffer)));else if(t1(Ae)){ze=Ae.shape;var Ft=Ae.stride,Mt=Ae.offset,bt=0,Xe=0,_e=0,we=0;ze.length===1?(bt=ze[0],Xe=1,_e=Ft[0],we=0):ze.length===2?(bt=ze[0],Xe=ze[1],_e=Ft[0],we=Ft[1]):E.raise("invalid shape"),xe.dtype=We||St(Ae.data)||ie,xe.dimension=Xe;var Ne=Je.allocType(xe.dtype,bt*Xe);Pt(Ne,Ae.data,bt,Xe,_e,we,Mt),Ie(xe,Ne,Oe),Pe?xe.persistentData=Ne:Je.freeType(Ne)}else Ae instanceof ArrayBuffer?(xe.dtype=ye,xe.dimension=Ge,Ie(xe,Ae,Oe),Pe&&(xe.persistentData=new Uint8Array(new Uint8Array(Ae)))):E.raise("invalid buffer data")}function je(xe){Ke.bufferCount--,Gt(xe);var Ae=xe.buffer;E(Ae,"buffer must not be deleted already"),fe.deleteBuffer(Ae),xe.buffer=null,delete be[xe.id]}return kt.profile&&(Ke.getTotalBufferSize=function(){var xe=0;return Object.keys(be).forEach(function(Ae){xe+=be[Ae].stats.size}),xe}),{create:function(xe,Ae,Oe,We){Ke.bufferCount++;var Ge=new Te(Ae);function Pe(ge){var ke=35044,st=null,_t=0,Ft=0,Mt=1;return Array.isArray(ge)||g(ge)||t1(ge)||ge instanceof ArrayBuffer?st=ge:typeof ge=="number"?_t=0|ge:ge&&(E.type(ge,"object","buffer arguments must be an object, a number or an array"),"data"in ge&&(E(st===null||Array.isArray(st)||g(st)||t1(st),"invalid data for buffer"),st=ge.data),"usage"in ge&&(E.parameter(ge.usage,Wt,"invalid buffer usage"),ke=Wt[ge.usage]),"type"in ge&&(E.parameter(ge.type,dt,"invalid buffer type"),Ft=dt[ge.type]),"dimension"in ge&&(E.type(ge.dimension,"number","invalid dimension"),Mt=0|ge.dimension),"length"in ge&&(E.nni(_t,"buffer length must be a nonnegative integer"),_t=0|ge.length)),Ge.bind(),st?ot(Ge,st,ke,Ft,Mt,We):(_t&&fe.bufferData(Ge.type,_t,ke),Ge.dtype=Ft||ye,Ge.usage=ke,Ge.dimension=Mt,Ge.byteLength=_t),kt.profile&&(Ge.stats.size=Ge.byteLength*nt[Ge.dtype]),Pe}function ze(ge,ke){E(ke+ge.byteLength<=Ge.byteLength,"invalid buffer subdata call, buffer is too small. Can't write data of size "+ge.byteLength+" starting from offset "+ke+" to a buffer of size "+Ge.byteLength),fe.bufferSubData(Ge.type,ke,ge)}return be[Ge.id]=Ge,Oe||Pe(xe),Pe._reglType="buffer",Pe._buffer=Ge,Pe.subdata=function(ge,ke){var st,_t=0|(ke||0);if(Ge.bind(),g(ge)||ge instanceof ArrayBuffer)ze(ge,_t);else if(Array.isArray(ge)){if(ge.length>0)if(typeof ge[0]=="number"){var Ft=Je.allocType(Ge.dtype,ge.length);mt(Ft,ge),ze(Ft,_t),Je.freeType(Ft)}else if(Array.isArray(ge[0])||g(ge[0])){st=a1(ge);var Mt=jt(ge,st,Ge.dtype);ze(Mt,_t),Je.freeType(Mt)}else E.raise("invalid buffer data")}else if(t1(ge)){st=ge.shape;var bt=ge.stride,Xe=0,_e=0,we=0,Ne=0;st.length===1?(Xe=st[0],_e=1,we=bt[0],Ne=0):st.length===2?(Xe=st[0],_e=st[1],we=bt[0],Ne=bt[1]):E.raise("invalid shape");var vt=Array.isArray(ge.data)?Ge.dtype:St(ge.data),qt=Je.allocType(vt,Xe*_e);Pt(qt,ge.data,Xe,_e,we,Ne,ge.offset),ze(qt,_t),Je.freeType(qt)}else E.raise("invalid data for buffer subdata");return Pe},kt.profile&&(Pe.stats=Ge.stats),Pe.destroy=function(){je(Ge)},Pe},createStream:function(xe,Ae){var Oe=Ee.pop();return Oe||(Oe=new Te(xe)),Oe.bind(),ot(Oe,Ae,35040,0,1,!1),Oe},destroyStream:function(xe){Ee.push(xe)},clear:function(){Bt(be).forEach(je),Ee.forEach(je)},getBuffer:function(xe){return xe&&xe._buffer instanceof Te?xe._buffer:null},restore:function(){Bt(be).forEach(function(xe){xe.buffer=fe.createBuffer(),fe.bindBuffer(xe.type,xe.buffer),fe.bufferData(xe.type,xe.persistentData||xe.byteLength,xe.usage)})},_initBuffer:ot}}(et,Fe,Me,function(fe){return _1.destroyBuffer(fe)}),O1=function(fe,Ke,kt,Gt){var le={},be=0,Te={uint8:u1,uint16:v1};function Ee(xe){this.id=be++,le[this.id]=this,this.buffer=xe,this.primType=4,this.vertCount=0,this.type=0}Ke.oes_element_index_uint&&(Te.uint32=h1),Ee.prototype.bind=function(){this.buffer.bind()};var Ie=[];function ot(xe,Ae,Oe,We,Ge,Pe,ze){var ge;if(xe.buffer.bind(),Ae){var ke=ze;ze||g(Ae)&&(!t1(Ae)||g(Ae.data))||(ke=Ke.oes_element_index_uint?h1:v1),kt._initBuffer(xe.buffer,Ae,Oe,ke,3)}else fe.bufferData(De,Pe,Oe),xe.buffer.dtype=ge||u1,xe.buffer.usage=Oe,xe.buffer.dimension=3,xe.buffer.byteLength=Pe;if(ge=ze,!ze){switch(xe.buffer.dtype){case u1:case 5120:ge=u1;break;case v1:case 5122:ge=v1;break;case h1:case 5124:ge=h1;break;default:E.raise("unsupported type for element array")}xe.buffer.dtype=ge}xe.type=ge,E(ge!==h1||!!Ke.oes_element_index_uint,"32 bit element buffers not supported, enable oes_element_index_uint first");var st=Ge;st<0&&(st=xe.buffer.byteLength,ge===v1?st>>=1:ge===h1&&(st>>=2)),xe.vertCount=st;var _t=We;if(We<0){_t=4;var Ft=xe.buffer.dimension;Ft===1&&(_t=0),Ft===2&&(_t=1),Ft===3&&(_t=4)}xe.primType=_t}function je(xe){Gt.elementsCount--,E(xe.buffer!==null,"must not double destroy elements"),delete le[xe.id],xe.buffer.destroy(),xe.buffer=null}return{create:function(xe,Ae){var Oe=kt.create(null,De,!0),We=new Ee(Oe._buffer);function Ge(Pe){if(Pe)if(typeof Pe=="number")Oe(Pe),We.primType=4,We.vertCount=0|Pe,We.type=u1;else{var ze=null,ge=35044,ke=-1,st=-1,_t=0,Ft=0;Array.isArray(Pe)||g(Pe)||t1(Pe)?ze=Pe:(E.type(Pe,"object","invalid arguments for elements"),"data"in Pe&&(ze=Pe.data,E(Array.isArray(ze)||g(ze)||t1(ze),"invalid data for element buffer")),"usage"in Pe&&(E.parameter(Pe.usage,Wt,"invalid element buffer usage"),ge=Wt[Pe.usage]),"primitive"in Pe&&(E.parameter(Pe.primitive,Xt,"invalid element buffer primitive"),ke=Xt[Pe.primitive]),"count"in Pe&&(E(typeof Pe.count=="number"&&Pe.count>=0,"invalid vertex count for elements"),st=0|Pe.count),"type"in Pe&&(E.parameter(Pe.type,Te,"invalid buffer type"),Ft=Te[Pe.type]),"length"in Pe?_t=0|Pe.length:(_t=st,Ft===v1||Ft===5122?_t*=2:Ft!==h1&&Ft!==5124||(_t*=4))),ot(We,ze,ge,ke,st,_t,Ft)}else Oe(),We.primType=4,We.vertCount=0,We.type=u1;return Ge}return Gt.elementsCount++,Ge(xe),Ge._reglType="elements",Ge._elements=We,Ge.subdata=function(Pe,ze){return Oe.subdata(Pe,ze),Ge},Ge.destroy=function(){je(We)},Ge},createStream:function(xe){var Ae=Ie.pop();return Ae||(Ae=new Ee(kt.create(null,De,!0,!1)._buffer)),ot(Ae,xe,35040,-1,-1,0,0),Ae},destroyStream:function(xe){Ie.push(xe)},getElements:function(xe){return typeof xe=="function"&&xe._elements instanceof Ee?xe._elements:null},clear:function(){Bt(le).forEach(je)}}}(et,Ce,x1,Fe),_1=function(fe,Ke,kt,Gt,le,be,Te){for(var Ee=kt.maxAttributes,Ie=new Array(Ee),ot=0;ot<Ee;++ot)Ie[ot]=new Vn;var je=0,xe={},Ae={Record:Vn,scope:{},state:Ie,currentVAO:null,targetVAO:null,restore:Oe()?function(){Oe()&&Bt(xe).forEach(function(Pe){Pe.refresh()})}:function(){},createVAO:function(Pe){var ze=new Ge;function ge(ke){var st;if(Array.isArray(ke))st=ke,ze.elements&&ze.ownsElements&&ze.elements.destroy(),ze.elements=null,ze.ownsElements=!1,ze.offset=0,ze.count=0,ze.instances=-1,ze.primitive=4;else{if(E(typeof ke=="object","invalid arguments for create vao"),E("attributes"in ke,"must specify attributes for vao"),ke.elements){var _t=ke.elements;ze.ownsElements?typeof _t=="function"&&_t._reglType==="elements"?(ze.elements.destroy(),ze.ownsElements=!1):(ze.elements(_t),ze.ownsElements=!1):be.getElements(ke.elements)?(ze.elements=ke.elements,ze.ownsElements=!1):(ze.elements=be.create(ke.elements),ze.ownsElements=!0)}else ze.elements=null,ze.ownsElements=!1;st=ke.attributes,ze.offset=0,ze.count=-1,ze.instances=-1,ze.primitive=4,ze.elements&&(ze.count=ze.elements._elements.vertCount,ze.primitive=ze.elements._elements.primType),"offset"in ke&&(ze.offset=0|ke.offset),"count"in ke&&(ze.count=0|ke.count),"instances"in ke&&(ze.instances=0|ke.instances),"primitive"in ke&&(E(ke.primitive in Xt,"bad primitive type: "+ke.primitive),ze.primitive=Xt[ke.primitive]),E.optional(()=>{for(var qt=Object.keys(ke),$t=0;$t<qt.length;++$t)E(K2.indexOf(qt[$t])>=0,'invalid option for vao: "'+qt[$t]+'" valid options are '+K2)}),E(Array.isArray(st),"attributes must be an array")}E(st.length<Ee,"too many attributes"),E(st.length>0,"must specify at least one attribute");var Ft={},Mt=ze.attributes;Mt.length=st.length;for(var bt=0;bt<st.length;++bt){var Xe,_e=st[bt],we=Mt[bt]=new Vn,Ne=_e.data||_e;Array.isArray(Ne)||g(Ne)||t1(Ne)?(ze.buffers[bt]&&(Xe=ze.buffers[bt],g(Ne)&&Xe._buffer.byteLength>=Ne.byteLength?Xe.subdata(Ne):(Xe.destroy(),ze.buffers[bt]=null)),ze.buffers[bt]||(Xe=ze.buffers[bt]=le.create(_e,34962,!1,!0)),we.buffer=le.getBuffer(Xe),we.size=0|we.buffer.dimension,we.normalized=!1,we.type=we.buffer.dtype,we.offset=0,we.stride=0,we.divisor=0,we.state=1,Ft[bt]=1):le.getBuffer(_e)?(we.buffer=le.getBuffer(_e),we.size=0|we.buffer.dimension,we.normalized=!1,we.type=we.buffer.dtype,we.offset=0,we.stride=0,we.divisor=0,we.state=1):le.getBuffer(_e.buffer)?(we.buffer=le.getBuffer(_e.buffer),we.size=0|(+_e.size||we.buffer.dimension),we.normalized=!!_e.normalized||!1,"type"in _e?(E.parameter(_e.type,dt,"invalid buffer type"),we.type=dt[_e.type]):we.type=we.buffer.dtype,we.offset=0|(_e.offset||0),we.stride=0|(_e.stride||0),we.divisor=0|(_e.divisor||0),we.state=1,E(we.size>=1&&we.size<=4,"size must be between 1 and 4"),E(we.offset>=0,"invalid offset"),E(we.stride>=0&&we.stride<=255,"stride must be between 0 and 255"),E(we.divisor>=0,"divisor must be positive"),E(!we.divisor||!!Ke.angle_instanced_arrays,"ANGLE_instanced_arrays must be enabled to use divisor")):"x"in _e?(E(bt>0,"first attribute must not be a constant"),we.x=+_e.x||0,we.y=+_e.y||0,we.z=+_e.z||0,we.w=+_e.w||0,we.state=2):E(!1,"invalid attribute spec for location "+bt)}for(var vt=0;vt<ze.buffers.length;++vt)!Ft[vt]&&ze.buffers[vt]&&(ze.buffers[vt].destroy(),ze.buffers[vt]=null);return ze.refresh(),ge}return Gt.vaoCount+=1,ge.destroy=function(){for(var ke=0;ke<ze.buffers.length;++ke)ze.buffers[ke]&&ze.buffers[ke].destroy();ze.buffers.length=0,ze.ownsElements&&(ze.elements.destroy(),ze.elements=null,ze.ownsElements=!1),ze.destroy()},ge._vao=ze,ge._reglType="vao",ge(Pe)},getVAO:function(Pe){return typeof Pe=="function"&&Pe._vao?Pe._vao:null},destroyBuffer:function(Pe){for(var ze=0;ze<Ie.length;++ze){var ge=Ie[ze];ge.buffer===Pe&&(fe.disableVertexAttribArray(ze),ge.buffer=null)}},setVAO:Oe()?function(Pe){if(Pe!==Ae.currentVAO){var ze=Oe();Pe?ze.bindVertexArrayOES(Pe.vao):ze.bindVertexArrayOES(null),Ae.currentVAO=Pe}}:function(Pe){if(Pe!==Ae.currentVAO){if(Pe)Pe.bindAttrs();else{for(var ze=We(),ge=0;ge<Ie.length;++ge){var ke=Ie[ge];ke.buffer?(fe.enableVertexAttribArray(ge),ke.buffer.bind(),fe.vertexAttribPointer(ge,ke.size,ke.type,ke.normalized,ke.stride,ke.offfset),ze&&ke.divisor&&ze.vertexAttribDivisorANGLE(ge,ke.divisor)):(fe.disableVertexAttribArray(ge),fe.vertexAttrib4f(ge,ke.x,ke.y,ke.z,ke.w))}Te.elements?fe.bindBuffer(L2,Te.elements.buffer.buffer):fe.bindBuffer(L2,null)}Ae.currentVAO=Pe}},clear:Oe()?function(){Bt(xe).forEach(function(Pe){Pe.destroy()})}:function(){}};function Oe(){return Ke.oes_vertex_array_object}function We(){return Ke.angle_instanced_arrays}function Ge(){this.id=++je,this.attributes=[],this.elements=null,this.ownsElements=!1,this.count=0,this.offset=0,this.instances=-1,this.primitive=4;var Pe=Oe();this.vao=Pe?Pe.createVertexArrayOES():null,xe[this.id]=this,this.buffers=[]}return Ge.prototype.bindAttrs=function(){for(var Pe=We(),ze=this.attributes,ge=0;ge<ze.length;++ge){var ke=ze[ge];ke.buffer?(fe.enableVertexAttribArray(ge),fe.bindBuffer(34962,ke.buffer.buffer),fe.vertexAttribPointer(ge,ke.size,ke.type,ke.normalized,ke.stride,ke.offset),Pe&&ke.divisor&&Pe.vertexAttribDivisorANGLE(ge,ke.divisor)):(fe.disableVertexAttribArray(ge),fe.vertexAttrib4f(ge,ke.x,ke.y,ke.z,ke.w))}for(var st=ze.length;st<Ee;++st)fe.disableVertexAttribArray(st);var _t=be.getElements(this.elements);_t?fe.bindBuffer(L2,_t.buffer.buffer):fe.bindBuffer(L2,null)},Ge.prototype.refresh=function(){var Pe=Oe();Pe&&(Pe.bindVertexArrayOES(this.vao),this.bindAttrs(),Ae.currentVAO=null,Pe.bindVertexArrayOES(null))},Ge.prototype.destroy=function(){if(this.vao){var Pe=Oe();this===Ae.currentVAO&&(Ae.currentVAO=null,Pe.bindVertexArrayOES(null)),Pe.deleteVertexArrayOES(this.vao),this.vao=null}this.ownsElements&&(this.elements.destroy(),this.elements=null,this.ownsElements=!1),xe[this.id]&&(delete xe[this.id],Gt.vaoCount-=1)},Ae}(et,Ce,o1,Fe,x1,O1,Q1),B1=function(fe,Ke,kt,Gt){var le={},be={};function Te(We,Ge,Pe,ze){this.name=We,this.id=Ge,this.location=Pe,this.info=ze}function Ee(We,Ge){for(var Pe=0;Pe<We.length;++Pe)if(We[Pe].id===Ge.id)return void(We[Pe].location=Ge.location);We.push(Ge)}function Ie(We,Ge,Pe){var ze=We===35632?le:be,ge=ze[Ge];if(!ge){var ke=Ke.str(Ge);ge=fe.createShader(We),fe.shaderSource(ge,ke),fe.compileShader(ge),E.shaderError(fe,ge,ke,We,Pe),ze[Ge]=ge}return ge}var ot={},je=[],xe=0;function Ae(We,Ge){this.id=xe++,this.fragId=We,this.vertId=Ge,this.program=null,this.uniforms=[],this.attributes=[],this.refCount=1,Gt.profile&&(this.stats={uniformsCount:0,attributesCount:0})}function Oe(We,Ge,Pe){var ze,ge,ke=Ie(35632,We.fragId),st=Ie(35633,We.vertId),_t=We.program=fe.createProgram();if(fe.attachShader(_t,ke),fe.attachShader(_t,st),Pe)for(ze=0;ze<Pe.length;++ze){var Ft=Pe[ze];fe.bindAttribLocation(_t,Ft[0],Ft[1])}fe.linkProgram(_t),E.linkError(fe,_t,Ke.str(We.fragId),Ke.str(We.vertId),Ge);var Mt=fe.getProgramParameter(_t,35718);Gt.profile&&(We.stats.uniformsCount=Mt);var bt=We.uniforms;for(ze=0;ze<Mt;++ze)if(ge=fe.getActiveUniform(_t,ze)){if(ge.size>1)for(var Xe=0;Xe<ge.size;++Xe){var _e=ge.name.replace("[0]","["+Xe+"]");Ee(bt,new Te(_e,Ke.id(_e),fe.getUniformLocation(_t,_e),ge))}var we=ge.name;ge.size>1&&(we=we.replace("[0]","")),Ee(bt,new Te(we,Ke.id(we),fe.getUniformLocation(_t,we),ge))}var Ne=fe.getProgramParameter(_t,35721);Gt.profile&&(We.stats.attributesCount=Ne);var vt=We.attributes;for(ze=0;ze<Ne;++ze)(ge=fe.getActiveAttrib(_t,ze))&&Ee(vt,new Te(ge.name,Ke.id(ge.name),fe.getAttribLocation(_t,ge.name),ge))}return Gt.profile&&(kt.getMaxUniformsCount=function(){var We=0;return je.forEach(function(Ge){Ge.stats.uniformsCount>We&&(We=Ge.stats.uniformsCount)}),We},kt.getMaxAttributesCount=function(){var We=0;return je.forEach(function(Ge){Ge.stats.attributesCount>We&&(We=Ge.stats.attributesCount)}),We}),{clear:function(){var We=fe.deleteShader.bind(fe);Bt(le).forEach(We),le={},Bt(be).forEach(We),be={},je.forEach(function(Ge){fe.deleteProgram(Ge.program)}),je.length=0,ot={},kt.shaderCount=0},program:function(We,Ge,Pe,ze){E.command(We>=0,"missing vertex shader",Pe),E.command(Ge>=0,"missing fragment shader",Pe);var ge=ot[Ge];ge||(ge=ot[Ge]={});var ke=ge[We];if(ke&&(ke.refCount++,!ze))return ke;var st=new Ae(Ge,We);return kt.shaderCount++,Oe(st,Pe,ze),ke||(ge[We]=st),je.push(st),p(st,{destroy:function(){if(st.refCount--,st.refCount<=0){fe.deleteProgram(st.program);var _t=je.indexOf(st);je.splice(_t,1),kt.shaderCount--}ge[st.vertId].refCount<=0&&(fe.deleteShader(be[st.vertId]),delete be[st.vertId],delete ot[st.fragId][st.vertId]),Object.keys(ot[st.fragId]).length||(fe.deleteShader(le[st.fragId]),delete le[st.fragId],delete ot[st.fragId])}})},restore:function(){le={},be={};for(var We=0;We<je.length;++We)Oe(je[We],null,je[We].attributes.map(function(Ge){return[Ge.location,Ge.name]}))},shader:Ie,frag:-1,vert:-1}}(et,Se,Fe,Me),$1=g1(et,Ce,o1,function(){h2.procs.poll()},Yt,Fe,Me),j1=function(fe,Ke,kt,Gt,le){var be={rgba4:w1,rgb565:36194,"rgb5 a1":32855,depth:33189,stencil:36168,"depth stencil":34041};Ke.ext_srgb&&(be.srgba=35907),Ke.ext_color_buffer_half_float&&(be.rgba16f=34842,be.rgb16f=34843),Ke.webgl_color_buffer_float&&(be.rgba32f=34836);var Te=[];Object.keys(be).forEach(function(xe){var Ae=be[xe];Te[Ae]=xe});var Ee=0,Ie={};function ot(xe){this.id=Ee++,this.refCount=1,this.renderbuffer=xe,this.format=w1,this.width=0,this.height=0,le.profile&&(this.stats={size:0})}function je(xe){var Ae=xe.renderbuffer;E(Ae,"must not double destroy renderbuffer"),fe.bindRenderbuffer(I1,null),fe.deleteRenderbuffer(Ae),xe.renderbuffer=null,xe.refCount=0,delete Ie[xe.id],Gt.renderbufferCount--}return ot.prototype.decRef=function(){--this.refCount<=0&&je(this)},le.profile&&(Gt.getTotalRenderbufferSize=function(){var xe=0;return Object.keys(Ie).forEach(function(Ae){xe+=Ie[Ae].stats.size}),xe}),{create:function(xe,Ae){var Oe=new ot(fe.createRenderbuffer());function We(Ge,Pe){var ze=0,ge=0,ke=w1;if(typeof Ge=="object"&&Ge){var st=Ge;if("shape"in st){var _t=st.shape;E(Array.isArray(_t)&&_t.length>=2,"invalid renderbuffer shape"),ze=0|_t[0],ge=0|_t[1]}else"radius"in st&&(ze=ge=0|st.radius),"width"in st&&(ze=0|st.width),"height"in st&&(ge=0|st.height);"format"in st&&(E.parameter(st.format,be,"invalid renderbuffer format"),ke=be[st.format])}else typeof Ge=="number"?(ze=0|Ge,ge=typeof Pe=="number"?0|Pe:ze):Ge?E.raise("invalid arguments to renderbuffer constructor"):ze=ge=1;if(E(ze>0&&ge>0&&ze<=kt.maxRenderbufferSize&&ge<=kt.maxRenderbufferSize,"invalid renderbuffer size"),ze!==Oe.width||ge!==Oe.height||ke!==Oe.format)return We.width=Oe.width=ze,We.height=Oe.height=ge,Oe.format=ke,fe.bindRenderbuffer(I1,Oe.renderbuffer),fe.renderbufferStorage(I1,ke,ze,ge),E(fe.getError()===0,"invalid render buffer format"),le.profile&&(Oe.stats.size=X1(Oe.format,Oe.width,Oe.height)),We.format=Te[Oe.format],We}return Ie[Oe.id]=Oe,Gt.renderbufferCount++,We(xe,Ae),We.resize=function(Ge,Pe){var ze=0|Ge,ge=0|Pe||ze;return ze===Oe.width&&ge===Oe.height||(E(ze>0&&ge>0&&ze<=kt.maxRenderbufferSize&&ge<=kt.maxRenderbufferSize,"invalid renderbuffer size"),We.width=Oe.width=ze,We.height=Oe.height=ge,fe.bindRenderbuffer(I1,Oe.renderbuffer),fe.renderbufferStorage(I1,Oe.format,ze,ge),E(fe.getError()===0,"invalid render buffer format"),le.profile&&(Oe.stats.size=X1(Oe.format,Oe.width,Oe.height))),We},We._reglType="renderbuffer",We._renderbuffer=Oe,le.profile&&(We.stats=Oe.stats),We.destroy=function(){Oe.decRef()},We},clear:function(){Bt(Ie).forEach(je)},restore:function(){Bt(Ie).forEach(function(xe){xe.renderbuffer=fe.createRenderbuffer(),fe.bindRenderbuffer(I1,xe.renderbuffer),fe.renderbufferStorage(I1,xe.format,xe.width,xe.height)}),fe.bindRenderbuffer(I1,null)}}}(et,Ce,o1,Fe,Me),V1=function(fe,Ke,kt,Gt,le,be){var Te={cur:null,next:null,dirty:!1,setFBO:null},Ee=["rgba"],Ie=["rgba4","rgb565","rgb5 a1"];Ke.ext_srgb&&Ie.push("srgba"),Ke.ext_color_buffer_half_float&&Ie.push("rgba16f","rgb16f"),Ke.webgl_color_buffer_float&&Ie.push("rgba32f");var ot=["uint8"];function je(Xe,_e,we){this.target=Xe,this.texture=_e,this.renderbuffer=we;var Ne=0,vt=0;_e?(Ne=_e.width,vt=_e.height):we&&(Ne=we.width,vt=we.height),this.width=Ne,this.height=vt}function xe(Xe){Xe&&(Xe.texture&&Xe.texture._texture.decRef(),Xe.renderbuffer&&Xe.renderbuffer._renderbuffer.decRef())}function Ae(Xe,_e,we){if(Xe)if(Xe.texture){var Ne=Xe.texture._texture,vt=Math.max(1,Ne.width),qt=Math.max(1,Ne.height);E(vt===_e&&qt===we,"inconsistent width/height for supplied texture"),Ne.refCount+=1}else{var $t=Xe.renderbuffer._renderbuffer;E($t.width===_e&&$t.height===we,"inconsistent width/height for renderbuffer"),$t.refCount+=1}}function Oe(Xe,_e){_e&&(_e.texture?fe.framebufferTexture2D(N1,Xe,_e.target,_e.texture._texture.texture,0):fe.framebufferRenderbuffer(N1,Xe,J1,_e.renderbuffer._renderbuffer.renderbuffer))}function We(Xe){var _e=l2,we=null,Ne=null,vt=Xe;typeof Xe=="object"&&(vt=Xe.data,"target"in Xe&&(_e=0|Xe.target)),E.type(vt,"function","invalid attachment data");var qt=vt._reglType;return qt==="texture2d"?(we=vt,E(_e===l2)):qt==="textureCube"?(we=vt,E(_e>=b2&&_e<34075,"invalid cube map target")):qt==="renderbuffer"?(Ne=vt,_e=J1):E.raise("invalid regl object for attachment"),new je(_e,we,Ne)}function Ge(Xe,_e,we,Ne,vt){if(we){var qt=Gt.create2D({width:Xe,height:_e,format:Ne,type:vt});return qt._texture.refCount=0,new je(l2,qt,null)}var $t=le.create({width:Xe,height:_e,format:Ne});return $t._renderbuffer.refCount=0,new je(J1,null,$t)}function Pe(Xe){return Xe&&(Xe.texture||Xe.renderbuffer)}function ze(Xe,_e,we){Xe&&(Xe.texture?Xe.texture.resize(_e,we):Xe.renderbuffer&&Xe.renderbuffer.resize(_e,we),Xe.width=_e,Xe.height=we)}Ke.oes_texture_half_float&&ot.push("half float","float16"),Ke.oes_texture_float&&ot.push("float","float32");var ge=0,ke={};function st(){this.id=ge++,ke[this.id]=this,this.framebuffer=fe.createFramebuffer(),this.width=0,this.height=0,this.colorAttachments=[],this.depthAttachment=null,this.stencilAttachment=null,this.depthStencilAttachment=null}function _t(Xe){Xe.colorAttachments.forEach(xe),xe(Xe.depthAttachment),xe(Xe.stencilAttachment),xe(Xe.depthStencilAttachment)}function Ft(Xe){var _e=Xe.framebuffer;E(_e,"must not double destroy framebuffer"),fe.deleteFramebuffer(_e),Xe.framebuffer=null,be.framebufferCount--,delete ke[Xe.id]}function Mt(Xe){var _e;fe.bindFramebuffer(N1,Xe.framebuffer);var we=Xe.colorAttachments;for(_e=0;_e<we.length;++_e)Oe(36064+_e,we[_e]);for(_e=we.length;_e<kt.maxColorAttachments;++_e)fe.framebufferTexture2D(N1,36064+_e,l2,null,0);fe.framebufferTexture2D(N1,33306,l2,null,0),fe.framebufferTexture2D(N1,36096,l2,null,0),fe.framebufferTexture2D(N1,36128,l2,null,0),Oe(36096,Xe.depthAttachment),Oe(36128,Xe.stencilAttachment),Oe(33306,Xe.depthStencilAttachment);var Ne=fe.checkFramebufferStatus(N1);fe.isContextLost()||Ne===36053||E.raise("framebuffer configuration not supported, status = "+Y2[Ne]),fe.bindFramebuffer(N1,Te.next?Te.next.framebuffer:null),Te.cur=Te.next,fe.getError()}function bt(Xe,_e){var we=new st;function Ne(vt,qt){var $t;E(Te.next!==we,"can not update framebuffer which is currently in use");var Vt=0,f1=0,l1=!0,d1=!0,i1=null,zt=!0,H1="rgba",F1="uint8",G2=1,W2=null,$2=null,Gn=null,Wn=!1;if(typeof vt=="number")Vt=0|vt,f1=0|qt||Vt;else if(vt){E.type(vt,"object","invalid arguments for framebuffer");var G1=vt;if("shape"in G1){var Q3=G1.shape;E(Array.isArray(Q3)&&Q3.length>=2,"invalid shape for framebuffer"),Vt=Q3[0],f1=Q3[1]}else"radius"in G1&&(Vt=f1=G1.radius),"width"in G1&&(Vt=G1.width),"height"in G1&&(f1=G1.height);("color"in G1||"colors"in G1)&&(i1=G1.color||G1.colors,Array.isArray(i1)&&E(i1.length===1||Ke.webgl_draw_buffers,"multiple render targets not supported")),i1||("colorCount"in G1&&(G2=0|G1.colorCount,E(G2>0,"invalid color buffer count")),"colorTexture"in G1&&(zt=!!G1.colorTexture,H1="rgba4"),"colorType"in G1&&(F1=G1.colorType,zt?(E(Ke.oes_texture_float||!(F1==="float"||F1==="float32"),"you must enable OES_texture_float in order to use floating point framebuffer objects"),E(Ke.oes_texture_half_float||!(F1==="half float"||F1==="float16"),"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects")):F1==="half float"||F1==="float16"?(E(Ke.ext_color_buffer_half_float,"you must enable EXT_color_buffer_half_float to use 16-bit render buffers"),H1="rgba16f"):F1!=="float"&&F1!=="float32"||(E(Ke.webgl_color_buffer_float,"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers"),H1="rgba32f"),E.oneOf(F1,ot,"invalid color type")),"colorFormat"in G1&&(H1=G1.colorFormat,Ee.indexOf(H1)>=0?zt=!0:Ie.indexOf(H1)>=0?zt=!1:E.optional(function(){zt?E.oneOf(G1.colorFormat,Ee,"invalid color format for texture"):E.oneOf(G1.colorFormat,Ie,"invalid color format for renderbuffer")}))),("depthTexture"in G1||"depthStencilTexture"in G1)&&(Wn=!(!G1.depthTexture&&!G1.depthStencilTexture),E(!Wn||Ke.webgl_depth_texture,"webgl_depth_texture extension not supported")),"depth"in G1&&(typeof G1.depth=="boolean"?l1=G1.depth:(W2=G1.depth,d1=!1)),"stencil"in G1&&(typeof G1.stencil=="boolean"?d1=G1.stencil:($2=G1.stencil,l1=!1)),"depthStencil"in G1&&(typeof G1.depthStencil=="boolean"?l1=d1=G1.depthStencil:(Gn=G1.depthStencil,l1=!1,d1=!1))}else Vt=f1=1;var H2=null,yn=null,On=null,bn=null;if(Array.isArray(i1))H2=i1.map(We);else if(i1)H2=[We(i1)];else for(H2=new Array(G2),$t=0;$t<G2;++$t)H2[$t]=Ge(Vt,f1,zt,H1,F1);E(Ke.webgl_draw_buffers||H2.length<=1,"you must enable the WEBGL_draw_buffers extension in order to use multiple color buffers."),E(H2.length<=kt.maxColorAttachments,"too many color attachments, not supported"),Vt=Vt||H2[0].width,f1=f1||H2[0].height,W2?yn=We(W2):l1&&!d1&&(yn=Ge(Vt,f1,Wn,"depth","uint32")),$2?On=We($2):d1&&!l1&&(On=Ge(Vt,f1,!1,"stencil","uint8")),Gn?bn=We(Gn):!W2&&!$2&&d1&&l1&&(bn=Ge(Vt,f1,Wn,"depth stencil","depth stencil")),E(!!W2+!!$2+!!Gn<=1,"invalid framebuffer configuration, can specify exactly one depth/stencil attachment");var f3=null;for($t=0;$t<H2.length;++$t)if(Ae(H2[$t],Vt,f1),E(!H2[$t]||H2[$t].texture&&N2.indexOf(H2[$t].texture._texture.format)>=0||H2[$t].renderbuffer&&tn.indexOf(H2[$t].renderbuffer._renderbuffer.format)>=0,"framebuffer color attachment "+$t+" is invalid"),H2[$t]&&H2[$t].texture){var m3=E2[H2[$t].texture._texture.format]*X2[H2[$t].texture._texture.type];f3===null?f3=m3:E(f3===m3,"all color attachments much have the same number of bits per pixel.")}return Ae(yn,Vt,f1),E(!yn||yn.texture&&yn.texture._texture.format===6402||yn.renderbuffer&&yn.renderbuffer._renderbuffer.format===33189,"invalid depth attachment for framebuffer object"),Ae(On,Vt,f1),E(!On||On.renderbuffer&&On.renderbuffer._renderbuffer.format===36168,"invalid stencil attachment for framebuffer object"),Ae(bn,Vt,f1),E(!bn||bn.texture&&bn.texture._texture.format===34041||bn.renderbuffer&&bn.renderbuffer._renderbuffer.format===34041,"invalid depth-stencil attachment for framebuffer object"),_t(we),we.width=Vt,we.height=f1,we.colorAttachments=H2,we.depthAttachment=yn,we.stencilAttachment=On,we.depthStencilAttachment=bn,Ne.color=H2.map(Pe),Ne.depth=Pe(yn),Ne.stencil=Pe(On),Ne.depthStencil=Pe(bn),Ne.width=we.width,Ne.height=we.height,Mt(we),Ne}return be.framebufferCount++,Ne(Xe,_e),p(Ne,{resize:function(vt,qt){E(Te.next!==we,"can not resize a framebuffer which is currently in use");var $t=Math.max(0|vt,1),Vt=Math.max(0|qt||$t,1);if($t===we.width&&Vt===we.height)return Ne;for(var f1=we.colorAttachments,l1=0;l1<f1.length;++l1)ze(f1[l1],$t,Vt);return ze(we.depthAttachment,$t,Vt),ze(we.stencilAttachment,$t,Vt),ze(we.depthStencilAttachment,$t,Vt),we.width=Ne.width=$t,we.height=Ne.height=Vt,Mt(we),Ne},_reglType:"framebuffer",_framebuffer:we,destroy:function(){Ft(we),_t(we)},use:function(vt){Te.setFBO({framebuffer:Ne},vt)}})}return p(Te,{getFramebuffer:function(Xe){if(typeof Xe=="function"&&Xe._reglType==="framebuffer"){var _e=Xe._framebuffer;if(_e instanceof st)return _e}return null},create:bt,createCube:function(Xe){var _e=Array(6);function we(Ne){var vt;E(_e.indexOf(Te.next)<0,"can not update framebuffer which is currently in use");var qt,$t={color:null},Vt=0,f1=null,l1="rgba",d1="uint8",i1=1;if(typeof Ne=="number")Vt=0|Ne;else if(Ne){E.type(Ne,"object","invalid arguments for framebuffer");var zt=Ne;if("shape"in zt){var H1=zt.shape;E(Array.isArray(H1)&&H1.length>=2,"invalid shape for framebuffer"),E(H1[0]===H1[1],"cube framebuffer must be square"),Vt=H1[0]}else"radius"in zt&&(Vt=0|zt.radius),"width"in zt?(Vt=0|zt.width,"height"in zt&&E(zt.height===Vt,"must be square")):"height"in zt&&(Vt=0|zt.height);("color"in zt||"colors"in zt)&&(f1=zt.color||zt.colors,Array.isArray(f1)&&E(f1.length===1||Ke.webgl_draw_buffers,"multiple render targets not supported")),f1||("colorCount"in zt&&(i1=0|zt.colorCount,E(i1>0,"invalid color buffer count")),"colorType"in zt&&(E.oneOf(zt.colorType,ot,"invalid color type"),d1=zt.colorType),"colorFormat"in zt&&(l1=zt.colorFormat,E.oneOf(zt.colorFormat,Ee,"invalid color format for texture"))),"depth"in zt&&($t.depth=zt.depth),"stencil"in zt&&($t.stencil=zt.stencil),"depthStencil"in zt&&($t.depthStencil=zt.depthStencil)}else Vt=1;if(f1)if(Array.isArray(f1))for(qt=[],vt=0;vt<f1.length;++vt)qt[vt]=f1[vt];else qt=[f1];else{qt=Array(i1);var F1={radius:Vt,format:l1,type:d1};for(vt=0;vt<i1;++vt)qt[vt]=Gt.createCube(F1)}for($t.color=Array(qt.length),vt=0;vt<qt.length;++vt){var G2=qt[vt];E(typeof G2=="function"&&G2._reglType==="textureCube","invalid cube map"),Vt=Vt||G2.width,E(G2.width===Vt&&G2.height===Vt,"invalid cube map shape"),$t.color[vt]={target:b2,data:qt[vt]}}for(vt=0;vt<6;++vt){for(var W2=0;W2<qt.length;++W2)$t.color[W2].target=b2+vt;vt>0&&($t.depth=_e[0].depth,$t.stencil=_e[0].stencil,$t.depthStencil=_e[0].depthStencil),_e[vt]?_e[vt]($t):_e[vt]=bt($t)}return p(we,{width:Vt,height:Vt,color:qt})}return we(Xe),p(we,{faces:_e,resize:function(Ne){var vt,qt=0|Ne;if(E(qt>0&&qt<=kt.maxCubeMapSize,"invalid radius for cube fbo"),qt===we.width)return we;var $t=we.color;for(vt=0;vt<$t.length;++vt)$t[vt].resize(qt);for(vt=0;vt<6;++vt)_e[vt].resize(qt);return we.width=we.height=qt,we},_reglType:"framebufferCube",destroy:function(){_e.forEach(function(Ne){Ne.destroy()})}})},clear:function(){Bt(ke).forEach(Ft)},restore:function(){Te.cur=null,Te.next=null,Te.dirty=!0,Bt(ke).forEach(function(Xe){Xe.framebuffer=fe.createFramebuffer(),Mt(Xe)})}})}(et,Ce,o1,$1,j1,Fe),h2=p3(et,Se,Ce,o1,x1,O1,0,V1,{},_1,B1,Q1,Yt,it,Me),a2=T3(et,V1,h2.procs.poll,Yt,Ot,Ce,o1),P1=h2.next,T2=et.canvas,p2=[],_n=[],an=[],rn=[Me.onDestroy],q2=null;function ln(){if(p2.length===0)return it&&it.update(),void(q2=null);q2=F.next(ln),Kn();for(var fe=p2.length-1;fe>=0;--fe){var Ke=p2[fe];Ke&&Ke(Yt,null,0)}et.flush(),it&&it.update()}function kn(){!q2&&p2.length>0&&(q2=F.next(ln))}function F2(){q2&&(F.cancel(ln),q2=null)}function dn(fe){fe.preventDefault(),Nt=!0,F2(),_n.forEach(function(Ke){Ke()})}function gn(fe){et.getError(),Nt=!1,Jt.restore(),B1.restore(),x1.restore(),$1.restore(),j1.restore(),V1.restore(),_1.restore(),it&&it.restore(),h2.procs.refresh(),kn(),an.forEach(function(Ke){Ke()})}function Qn(fe){function Ke(Ae,Oe){var We={},Ge={};return Object.keys(Ae).forEach(function(Pe){var ze=Ae[Pe];if(M.isDynamic(ze))Ge[Pe]=M.unbox(ze,Pe);else{if(Oe&&Array.isArray(ze)){for(var ge=0;ge<ze.length;++ge)if(M.isDynamic(ze[ge]))return void(Ge[Pe]=M.unbox(ze,Pe))}We[Pe]=ze}}),{dynamic:Ge,static:We}}E(!!fe,"invalid args to regl({...})"),E.type(fe,"object","invalid args to regl({...})");var kt=Ke(fe.context||{},!0),Gt=Ke(fe.uniforms||{},!0),le=Ke(fe.attributes||{},!1),be=Ke(function(Ae){var Oe=p({},Ae);function We(Ge){if(Ge in Oe){var Pe=Oe[Ge];delete Oe[Ge],Object.keys(Pe).forEach(function(ze){Oe[Ge+"."+ze]=Pe[ze]})}}return delete Oe.uniforms,delete Oe.attributes,delete Oe.context,delete Oe.vao,"stencil"in Oe&&Oe.stencil.op&&(Oe.stencil.opBack=Oe.stencil.opFront=Oe.stencil.op,delete Oe.stencil.op),We("blend"),We("depth"),We("cull"),We("stencil"),We("polygonOffset"),We("scissor"),We("sample"),"vao"in Ae&&(Oe.vao=Ae.vao),Oe}(fe),!1),Te={gpuTime:0,cpuTime:0,count:0},Ee=h2.compile(be,le,Gt,kt,Te),Ie=Ee.draw,ot=Ee.batch,je=Ee.scope,xe=[];return p(function(Ae,Oe){var We;if(Nt&&E.raise("context lost"),typeof Ae=="function")return je.call(this,null,Ae,0);if(typeof Oe=="function")if(typeof Ae=="number")for(We=0;We<Ae;++We)je.call(this,null,Oe,We);else{if(!Array.isArray(Ae))return je.call(this,Ae,Oe,0);for(We=0;We<Ae.length;++We)je.call(this,Ae[We],Oe,We)}else if(typeof Ae=="number"){if(Ae>0)return ot.call(this,function(Ge){for(;xe.length<Ge;)xe.push(null);return xe}(0|Ae),0|Ae)}else{if(!Array.isArray(Ae))return Ie.call(this,Ae);if(Ae.length)return ot.call(this,Ae,Ae.length)}},{stats:Te,destroy:function(){Ee.destroy()}})}T2&&(T2.addEventListener(mn,dn,!1),T2.addEventListener(Yn,gn,!1));var vn=V1.setFBO=Qn({framebuffer:M.define.call(null,1,"framebuffer")});function Tn(fe,Ke){var kt=0;h2.procs.poll();var Gt=Ke.color;Gt&&(et.clearColor(+Gt[0]||0,+Gt[1]||0,+Gt[2]||0,+Gt[3]||0),kt|=16384),"depth"in Ke&&(et.clearDepth(+Ke.depth),kt|=256),"stencil"in Ke&&(et.clearStencil(0|Ke.stencil),kt|=1024),E(!!kt,"called regl.clear with no buffer specified"),et.clear(kt)}function Sn(fe){return E.type(fe,"function","regl.frame() callback must be a function"),p2.push(fe),kn(),{cancel:function(){var Ke=l3(p2,fe);E(Ke>=0,"cannot cancel a frame twice"),p2[Ke]=function kt(){var Gt=l3(p2,kt);p2[Gt]=p2[p2.length-1],p2.length-=1,p2.length<=0&&F2()}}}}function Cn(){var fe=P1.viewport,Ke=P1.scissor_box;fe[0]=fe[1]=Ke[0]=Ke[1]=0,Yt.viewportWidth=Yt.framebufferWidth=Yt.drawingBufferWidth=fe[2]=Ke[2]=et.drawingBufferWidth,Yt.viewportHeight=Yt.framebufferHeight=Yt.drawingBufferHeight=fe[3]=Ke[3]=et.drawingBufferHeight}function Kn(){Yt.tick+=1,Yt.time=cn(),Cn(),h2.procs.poll()}function en(){$1.refresh(),Cn(),h2.procs.refresh(),it&&it.update()}function cn(){return(W()-ut)/1e3}en();var Ue=p(Qn,{clear:function(fe){if(E(typeof fe=="object"&&fe,"regl.clear() takes an object as input"),"framebuffer"in fe)if(fe.framebuffer&&fe.framebuffer_reglType==="framebufferCube")for(var Ke=0;Ke<6;++Ke)vn(p({framebuffer:fe.framebuffer.faces[Ke]},fe),Tn);else vn(fe,Tn);else Tn(0,fe)},prop:M.define.bind(null,1),context:M.define.bind(null,2),this:M.define.bind(null,3),draw:Qn({}),buffer:function(fe){return x1.create(fe,34962,!1,!1)},elements:function(fe){return O1.create(fe,!1)},texture:$1.create2D,cube:$1.createCube,renderbuffer:j1.create,framebuffer:V1.create,framebufferCube:V1.createCube,vao:_1.createVAO,attributes:Ot,frame:Sn,on:function(fe,Ke){var kt;switch(E.type(Ke,"function","listener callback must be a function"),fe){case"frame":return Sn(Ke);case"lost":kt=_n;break;case"restore":kt=an;break;case"destroy":kt=rn;break;default:E.raise("invalid event, must be one of frame,lost,restore,destroy")}return kt.push(Ke),{cancel:function(){for(var Gt=0;Gt<kt.length;++Gt)if(kt[Gt]===Ke)return kt[Gt]=kt[kt.length-1],void kt.pop()}}},limits:o1,hasExtension:function(fe){return o1.extensions.indexOf(fe.toLowerCase())>=0},read:a2,destroy:function(){p2.length=0,F2(),T2&&(T2.removeEventListener(mn,dn),T2.removeEventListener(Yn,gn)),B1.clear(),V1.clear(),j1.clear(),_1.clear(),$1.clear(),O1.clear(),x1.clear(),it&&it.clear(),rn.forEach(function(fe){fe()})},_gl:et,_refresh:en,poll:function(){Kn(),it&&it.update()},now:cn,stats:Fe});return Me.onDone(null,Ue),Ue}},typeof e=="object"&&O!==void 0?O.exports=w():typeof define=="function"&&define.amd?define(w):v.createREGL=w()},413:function(Q,O,e,C,R){C();const v=Q(414),w=Q(9),g=Q(12);class p{constructor(c){this._regl=c,this._map=new Map}_create_texture(c){const o=c.length;let r=0;const i=[];let t=0,s=0;for(let x=0;x<o;x++)r+=c[x],i.push(c[x]+c[(x+1)%o]),x%2==0?s=Math.max(s,c[x]):t=Math.min(t,-c[x]);t*=.5,s*=.5;const a=(0,v.gcd)(i),u=[0];for(let x=0;x<o;x++)u.push(u[x]+c[x]);const l=2*r/a,d=(0,v.is_pow_2)(l),m=d?l:128,f=.5*a*l/m;let b;d?(b=.5*c[0],f<b&&(b-=Math.floor(b/f)*f)):b=0;const y=b-.5*f,A=new Uint8Array(m);let L=0;for(let x=0;x<m;x++){const H=b+x*f;H>u[L+1]&&L++;const S=c[L],k=u[L]+.5*S;let E=.5*S-Math.abs(H-k);L%2==1&&(E=-E),A[x]=Math.round(255*(E-t)/(s-t))}return[[r,y,t,s],this._regl.texture({shape:[m,1,1],data:A,wrapS:"repeat",format:"alpha",type:"uint8",mag:"linear",min:"linear"})]}_get_key(c){return c.join(",")}_get_or_create(c){const o=this._get_key(c);let r=this._map.get(o);if(r==null){const i=(0,v.gcd)(c);if(i>1){c=(0,g.map)(c,u=>u/i),r=this._get_or_create(c);const[t,s,a]=r;r=[t,s,i],this._map.set(o,r)}else{const[t,s]=this._create_texture(c);r=[t,s,i],this._map.set(o,r)}}return r}get(c){return c.length%2==1&&(c=(0,w.concat)([c,c])),this._get_or_create(c)}}e.DashCache=p,p.__name__="DashCache"},414:function(Q,O,e,C,R){function v(w,g){let p,T;w>g?(p=w,T=g):(p=g,T=w);let c=p%T;for(;c!=0;)p=T,T=c,c=p%T;return T}C(),e.gcd=function(w){let g=w[0];for(let p=1;p<w.length;p++)g=v(g,w[p]);return g},e.is_pow_2=function(w){return!(w&w-1||!w)}},415:function(V,Q,O,e,C){e(),O.default=`