unity-lightweight-charts
Version:
Performant financial charts built with HTML5 canvas
7 lines • 177 kB
JavaScript
/*!
* @license
* TradingView Lightweight Charts™ v4.2.2
* Copyright (c) 2024 TradingView, Inc.
* Licensed under Apache License 2.0 https://www.apache.org/licenses/LICENSE-2.0
*/
"use strict";var t=require("fancy-canvas");const i={upColor:"#26a69a",downColor:"#ef5350",wickVisible:!0,borderVisible:!0,borderColor:"#378658",borderUpColor:"#26a69a",borderDownColor:"#ef5350",wickColor:"#737375",wickUpColor:"#26a69a",wickDownColor:"#ef5350"},s={upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},e={color:"#2196f3",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},n={topColor:"rgba( 46, 220, 135, 0.4)",bottomColor:"rgba( 40, 221, 100, 0)",invertFilledArea:!1,lineColor:"#33D778",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},r={baseValue:{type:"price",price:0},topFillColor1:"rgba(38, 166, 154, 0.28)",topFillColor2:"rgba(38, 166, 154, 0.05)",topLineColor:"rgba(38, 166, 154, 1)",bottomFillColor1:"rgba(239, 83, 80, 0.05)",bottomFillColor2:"rgba(239, 83, 80, 0.28)",bottomLineColor:"rgba(239, 83, 80, 1)",lineWidth:3,lineStyle:0,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},h={color:"#26a69a",base:0},l={color:"#2196f3"},a={title:"",visible:!0,lastValueVisible:!0,priceLineVisible:!0,priceLineSource:0,priceLineWidth:1,priceLineColor:"",priceLineStyle:2,baseLineVisible:!0,baseLineWidth:1,baseLineColor:"#B2B5BE",baseLineStyle:0,priceFormat:{type:"price",precision:2,minMove:.01}};var o,u;function c(t,i){const s={0:[],1:[t.lineWidth,t.lineWidth],2:[2*t.lineWidth,2*t.lineWidth],3:[6*t.lineWidth,6*t.lineWidth],4:[t.lineWidth,4*t.lineWidth]}[i];t.setLineDash(s)}function _(t,i,s,e){t.beginPath();const n=t.lineWidth%2?.5:0;t.moveTo(s,i+n),t.lineTo(e,i+n),t.stroke()}function d(t,i){if(!t)throw new Error("Assertion failed"+(i?": "+i:""))}function f(t){if(void 0===t)throw new Error("Value is undefined");return t}function v(t){if(null===t)throw new Error("Value is null");return t}function p(t){return v(f(t))}exports.LineType=void 0,(o=exports.LineType||(exports.LineType={}))[o.Simple=0]="Simple",o[o.WithSteps=1]="WithSteps",o[o.Curved=2]="Curved",exports.LineStyle=void 0,(u=exports.LineStyle||(exports.LineStyle={}))[u.Solid=0]="Solid",u[u.Dotted=1]="Dotted",u[u.Dashed=2]="Dashed",u[u.LargeDashed=3]="LargeDashed",u[u.SparseDotted=4]="SparseDotted";const m={khaki:"#f0e68c",azure:"#f0ffff",aliceblue:"#f0f8ff",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",gray:"#808080",green:"#008000",honeydew:"#f0fff0",floralwhite:"#fffaf0",lightblue:"#add8e6",lightcoral:"#f08080",lemonchiffon:"#fffacd",hotpink:"#ff69b4",lightyellow:"#ffffe0",greenyellow:"#adff2f",lightgoldenrodyellow:"#fafad2",limegreen:"#32cd32",linen:"#faf0e6",lightcyan:"#e0ffff",magenta:"#f0f",maroon:"#800000",olive:"#808000",orange:"#ffa500",oldlace:"#fdf5e6",mediumblue:"#0000cd",transparent:"#0000",lime:"#0f0",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",midnightblue:"#191970",orchid:"#da70d6",mediumorchid:"#ba55d3",mediumturquoise:"#48d1cc",orangered:"#ff4500",royalblue:"#4169e1",powderblue:"#b0e0e6",red:"#f00",coral:"#ff7f50",turquoise:"#40e0d0",white:"#fff",whitesmoke:"#f5f5f5",wheat:"#f5deb3",teal:"#008080",steelblue:"#4682b4",bisque:"#ffe4c4",aquamarine:"#7fffd4",aqua:"#0ff",sienna:"#a0522d",silver:"#c0c0c0",springgreen:"#00ff7f",antiquewhite:"#faebd7",burlywood:"#deb887",brown:"#a52a2a",beige:"#f5f5dc",chocolate:"#d2691e",chartreuse:"#7fff00",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cadetblue:"#5f9ea0",tomato:"#ff6347",fuchsia:"#f0f",blue:"#00f",salmon:"#fa8072",blanchedalmond:"#ffebcd",slateblue:"#6a5acd",slategray:"#708090",thistle:"#d8bfd8",tan:"#d2b48c",cyan:"#0ff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",blueviolet:"#8a2be2",black:"#000",darkmagenta:"#8b008b",darkslateblue:"#483d8b",darkkhaki:"#bdb76b",darkorchid:"#9932cc",darkorange:"#ff8c00",darkgreen:"#006400",darkred:"#8b0000",dodgerblue:"#1e90ff",darkslategray:"#2f4f4f",dimgray:"#696969",deepskyblue:"#00bfff",firebrick:"#b22222",forestgreen:"#228b22",indigo:"#4b0082",ivory:"#fffff0",lavenderblush:"#fff0f5",feldspar:"#d19275",indianred:"#cd5c5c",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightskyblue:"#87cefa",lightslategray:"#789",lightslateblue:"#8470ff",snow:"#fffafa",lightseagreen:"#20b2aa",lightsalmon:"#ffa07a",darksalmon:"#e9967a",darkviolet:"#9400d3",mediumpurple:"#9370d8",mediumaquamarine:"#66cdaa",skyblue:"#87ceeb",lavender:"#e6e6fa",lightsteelblue:"#b0c4de",mediumvioletred:"#c71585",mintcream:"#f5fffa",navajowhite:"#ffdead",navy:"#000080",olivedrab:"#6b8e23",palevioletred:"#d87093",violetred:"#d02090",yellow:"#ff0",yellowgreen:"#9acd32",lawngreen:"#7cfc00",pink:"#ffc0cb",paleturquoise:"#afeeee",palegoldenrod:"#eee8aa",darkolivegreen:"#556b2f",darkseagreen:"#8fbc8f",darkturquoise:"#00ced1",peachpuff:"#ffdab9",deeppink:"#ff1493",violet:"#ee82ee",palegreen:"#98fb98",mediumseagreen:"#3cb371",peru:"#cd853f",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",purple:"#800080",seagreen:"#2e8b57",seashell:"#fff5ee",papayawhip:"#ffefd5",mediumslateblue:"#7b68ee",plum:"#dda0dd",mediumspringgreen:"#00fa9a"};function b(t){return t<0?0:t>255?255:Math.round(t)||0}function g(t){return t<=0||t>1?Math.min(Math.max(t,0),1):Math.round(1e4*t)/1e4}const w=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,M=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,x=/^rgb\(\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*\)$/,S=/^rgba\(\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?\d*\.?\d+)\s*\)$/;function k(t){(t=t.toLowerCase())in m&&(t=m[t]);{const i=S.exec(t)||x.exec(t);if(i)return[b(parseInt(i[1],10)),b(parseInt(i[2],10)),b(parseInt(i[3],10)),g(i.length<5?1:parseFloat(i[4]))]}{const i=M.exec(t);if(i)return[b(parseInt(i[1],16)),b(parseInt(i[2],16)),b(parseInt(i[3],16)),1]}{const i=w.exec(t);if(i)return[b(17*parseInt(i[1],16)),b(17*parseInt(i[2],16)),b(17*parseInt(i[3],16)),1]}throw new Error(`Cannot parse color: ${t}`)}function C(t){return.199*t[0]+.687*t[1]+.114*t[2]}function y(t){const i=k(t);return{t:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,i:C(i)>160?"black":"white"}}class P{constructor(){this.h=[]}subscribe(t,i,s){const e={l:t,o:i,u:!0===s};this.h.push(e)}unsubscribe(t){const i=this.h.findIndex((i=>t===i.l));i>-1&&this.h.splice(i,1)}unsubscribeAll(t){this.h=this.h.filter((i=>i.o!==t))}_(t,i,s){const e=[...this.h];this.h=this.h.filter((t=>!t.u)),e.forEach((e=>e.l(t,i,s)))}v(){return this.h.length>0}p(){this.h=[]}}function T(t,...i){for(const s of i)for(const i in s)void 0!==s[i]&&("object"!=typeof s[i]||void 0===t[i]||Array.isArray(s[i])?t[i]=s[i]:T(t[i],s[i]));return t}function R(t){return"number"==typeof t&&isFinite(t)}function D(t){return"number"==typeof t&&t%1==0}function B(t){return"string"==typeof t}function L(t){return"boolean"==typeof t}function A(t){const i=t;if(!i||"object"!=typeof i)return i;let s,e,n;for(e in s=Array.isArray(i)?[]:{},i)i.hasOwnProperty(e)&&(n=i[e],s[e]=n&&"object"==typeof n?A(n):n);return s}function V(t){return null!==t}function O(t){return null===t?void 0:t}const I="-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif";function E(t,i,s){return void 0===i&&(i=I),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class z{constructor(t){this.m={borderSize:1,tickLength:5,fontSize:NaN,font:"",fontFamily:"",color:"",paneBackgroundColor:"",paddingBottom:0,paddingInner:0,paddingOuter:0,paddingTop:0,baselineOffset:0},this.g=t}options(){const t=this.m,i=this.M(),s=this.S();return t.fontSize===i&&t.fontFamily===s||(t.fontSize=i,t.fontFamily=s,t.font=E(i,s),t.paddingTop=2.5/12*i,t.paddingBottom=t.paddingTop,t.paddingInner=i/12*t.tickLength,t.paddingOuter=i/12*t.tickLength,t.baselineOffset=0),t.color=this.k(),t.paneBackgroundColor=this.C(),this.m}k(){return this.g.options().layout.textColor}C(){return this.g.backgroundTopColor()}M(){return this.g.options().layout.fontSize}S(){return this.g.options().layout.fontFamily}}class F{constructor(){this.P=[]}T(t){this.P=t}draw(t,i,s){this.P.forEach((e=>{e.draw(t,i,s)}))}}class N{draw(t,i,s){t.useBitmapCoordinateSpace((t=>this.R(t,i,s)))}}class W extends N{constructor(){super(...arguments),this.D=null}B(t){this.D=t}R({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.D||null===this.D.L)return;const e=this.D.L,n=this.D,r=Math.max(1,Math.floor(i))%2/2,h=h=>{t.beginPath();for(let l=e.to-1;l>=e.from;--l){const e=n.A[l],a=Math.round(e.x*i)+r,o=e.y*s,u=h*s+r;t.moveTo(a,o),t.arc(a,o,u,0,2*Math.PI)}t.fill()};n.V>0&&(t.fillStyle=n.O,h(n.I+n.V)),t.fillStyle=n.F,h(n.I)}}function j(){return{A:[{x:0,y:0,time:0,price:0}],F:"",O:"",I:0,V:0,L:null}}const H={from:0,to:1};class ${constructor(t,i){this.N=new F,this.W=[],this.j=[],this.H=!0,this.g=t,this.$=i,this.N.T(this.W)}update(t){const i=this.g.serieses();i.length!==this.W.length&&(this.j=i.map(j),this.W=this.j.map((t=>{const i=new W;return i.B(t),i})),this.N.T(this.W)),this.H=!0}renderer(){return this.H&&(this.U(),this.H=!1),this.N}U(){const t=2===this.$.options().mode,i=this.g.serieses(),s=this.$.appliedIndex(),e=this.g.timeScale();i.forEach(((i,n)=>{var r;const h=this.j[n],l=i.markerDataAtIndex(s);if(t||null===l||!i.visible())return void(h.L=null);const a=v(i.firstValue());h.F=l.backgroundColor,h.I=l.radius,h.V=l.borderWidth,h.A[0].price=l.price,h.A[0].y=i.priceScale().priceToCoordinate(l.price,a.value),h.O=null!==(r=l.borderColor)&&void 0!==r?r:this.g.backgroundColorAtYPercentFromTop(h.A[0].y/i.priceScale().height()),h.A[0].time=s,h.A[0].x=e.indexToCoordinate(s),h.L=H}))}}function U(t,i,s,e,n,r){t.fillRect(i+r,s,e-2*r,r),t.fillRect(i+r,s+n-r,e-2*r,r),t.fillRect(i,s,r,n),t.fillRect(i+e-r,s,r,n)}function q(t,i,s,e,n,r){t.save(),t.globalCompositeOperation="copy",t.fillStyle=r,t.fillRect(i,s,e,n),t.restore()}function Y(t,i){return t.map((t=>0===t?t:t+i))}function Z(t,i,s,e,n,r){t.beginPath(),t.roundRect?t.roundRect(i,s,e,n,r):(t.lineTo(i+e-r[1],s),0!==r[1]&&t.arcTo(i+e,s,i+e,s+r[1],r[1]),t.lineTo(i+e,s+n-r[2]),0!==r[2]&&t.arcTo(i+e,s+n,i+e-r[2],s+n,r[2]),t.lineTo(i+r[3],s+n),0!==r[3]&&t.arcTo(i,s+n,i,s+n-r[3],r[3]),t.lineTo(i,s+r[0]),0!==r[0]&&t.arcTo(i,s,i+r[0],s,r[0]))}const X=21;function K(t,i,s,e,n,r,h=0,l=[0,0,0,0],a="",o="#FFFFFF",u=!1,c=!1,_){if(t.save(),!h||!a||a===r)return Z(t,i,s,e,n,l),t.fillStyle=r,t.fill(),void t.restore();const d=h/2,f=u?12:0;if(Z(t,i+d,s+d,e-h,n-h,Y(l,-d)),"transparent"!==r){const a=c?X+f+1:0,_=c?e+f:e;Z(t,i+h-a,s+h,_-2*h,n-2*h,Y(l,-h)),t.fillStyle=r,t.fill(),u&&function(t,i,s,e,n,r){t.fillStyle=n,t.beginPath();const h=e-8;[[0,0],[0,h/2],[0,h],[4,0],[4,h/2],[4,h]].forEach((e=>{t.moveTo(i+4+e[0],s+4+e[1]),t.arc(i+4+e[0],s+4+e[1],1,0,2*Math.PI,!0)})),t.fillStyle=r,t.fill(),t.strokeStyle=r||"#FFFFFF",t.lineWidth=1,t.stroke()}(t,i+h-a,s,n,r,o),c&&function(t,i,s,e,n,r){t.fillStyle=n,t.fillRect(i,s,e,e),t.beginPath(),t.moveTo(i+4,s+4),t.lineTo(i+e-4,s+e-4),t.moveTo(i+e-4,s+4),t.lineTo(i+4,s+e-4),t.strokeStyle=r||"#FFFFFF",t.lineWidth=1.5,t.stroke()}(t,i+_-n-a,s,n,r,o)}if("transparent"!==a){Z(t,i+d-(c?X+f+1:0),s+d,(c?e+f:e)-h,n-h,Y(l,-d)),t.lineWidth=h,t.strokeStyle=a,t.closePath(),t.stroke()}t.restore()}function G(t,i,s,e,n,r,h){t.save(),t.globalCompositeOperation="copy";const l=t.createLinearGradient(0,0,0,n);l.addColorStop(0,r),l.addColorStop(1,h),t.fillStyle=l,t.fillRect(i,s,e,n),t.restore()}class J extends N{constructor(t){super(),this.q=t}R({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.q)return;const n=this.q.Z.Y,r=this.q.X.Y;if(!n&&!r)return;const h=Math.round(this.q.K*s),l=Math.round(this.q.G*e);t.lineCap="butt",n&&h>=0&&(t.lineWidth=Math.floor(this.q.Z.V*s),t.strokeStyle=this.q.Z.J,t.fillStyle=this.q.Z.J,c(t,this.q.Z.tt),function(t,i,s,e){t.beginPath();const n=t.lineWidth%2?.5:0;t.moveTo(i+n,s),t.lineTo(i+n,e),t.stroke()}(t,h,0,i.height)),r&&l>=0&&(t.lineWidth=Math.floor(this.q.X.V*e),t.strokeStyle=this.q.X.J,t.fillStyle=this.q.X.J,c(t,this.q.X.tt),_(t,l,0,i.width),this.q.it&&function(t,i,s,e,n,r){const h=i-1;t.fillStyle=n,t.fillRect(h,s,e,e);const l=e/2;t.beginPath(),t.arc(h+l,s+l,l-3,0,2*Math.PI),t.setLineDash([]),t.moveTo(h+l,s+7),t.lineTo(h+l,s+e-7),t.moveTo(h+7,s+l),t.lineTo(h+e-7,s+l),t.strokeStyle=r||"#FFFFFF",t.lineWidth=1,t.stroke()}(t,i.width-X,l-10,X,this.q.st,this.q.et))}}class Q{constructor(t){this.H=!0,this.nt={Z:{V:1,tt:0,J:"",Y:!1},X:{V:1,tt:0,J:"",Y:!1},et:"",st:"",it:!1,K:0,G:0},this.rt=new J(this.nt),this.ht=t}lt(){this.H=!0}renderer(){return this.H&&(this.U(),this.H=!1),this.rt}U(){const t=this.ht.visible(),i=v(this.ht.pane()),s=i.model().options(),e=s.crosshair,n=this.nt;if(2===e.mode)return n.X.Y=!1,void(n.Z.Y=!1);n.X.Y=t&&this.ht.horzLineVisible(i),n.Z.Y=t&&this.ht.vertLineVisible(),n.X.V=e.horzLine.width,n.X.tt=e.horzLine.style,n.X.J=e.horzLine.color,n.Z.V=e.vertLine.width,n.Z.tt=e.vertLine.style,n.Z.J=e.vertLine.color,n.st=e.horzLine.labelBackgroundColor,n.et=s.layout.textColor,n.it=s.showAddButton,n.K=this.ht.appliedX(),n.G=this.ht.appliedY()}}class tt{constructor(t,i){this.setData(t,i)}setData(t,i){this.q=t,this.ot=i}height(t,i){return this.q.visible?t.fontSize+t.paddingTop+t.paddingBottom:0}draw(t,i,s,e,n,r,h){if(!this.q.visible||0===this.q.text.length)return;this.ut=h;const l=this.q.color,a=this.ot.background,o=t.useBitmapCoordinateSpace((t=>{const h=t.context;h.font=i.font;const o=this.ct(t,i,s,e,r),u=o._t,c=(t,i)=>{o.dt?K(h,u.ft,u.vt,u.bt,u.gt,t,u.wt,[u.I,0,0,u.I],i,l,n,r):K(h,u.Mt,u.vt,u.bt,u.gt,t,u.wt,[0,u.I,u.I,0],i,l,n,r)};return c(a,"transparent"),this.q.tickVisible&&(h.fillStyle=l,h.fillRect(u.Mt,u.xt,u.St-u.Mt,u.kt)),c("transparent",a),this.q.borderVisible&&(h.fillStyle=i.paneBackgroundColor,h.fillRect(o.dt?u.Ct-u.wt:0,u.vt,u.wt,u.yt-u.vt)),o}));t.useMediaCoordinateSpace((({context:t})=>{const s=o.Pt;if(h){t.font="13px icomoon",t.textAlign="left",t.textBaseline="middle",t.fillStyle=h;const i=this.q.moveTextToInvisibleTick&&r?s.Tt-16-X:s.Tt;return void t.fillText("",i-13,(s.vt+s.yt)/2+s.Rt-1)}t.font=i.font,t.textAlign=o.dt?"right":"left",t.textBaseline="middle",t.fillStyle=l;const e=this.q.moveTextToInvisibleTick&&r?s.Tt-16-X:s.Tt;t.fillText(this.q.text,e,(s.vt+s.yt)/2+s.Rt-1)}))}ct(t,i,s,e,n){var r;const{context:h,bitmapSize:l,mediaSize:a,horizontalPixelRatio:o,verticalPixelRatio:u}=t,c=this.q.tickVisible||!this.q.moveTextToInvisibleTick?i.tickLength:0,_=this.q.separatorVisible?i.borderSize:0,d=i.paddingTop+this.ot.additionalPaddingTop,f=i.paddingBottom+this.ot.additionalPaddingBottom,v=i.paddingInner,p=i.paddingOuter,m=this.q.text,b=i.fontSize,g=s.yMidCorrection(h,m),w=this.ut?13:Math.ceil(s.measureText(h,m)),M=b+d+f,x=i.borderSize+v+p+w+c+(n?16:0),S=Math.max(1,Math.floor(u));let k=Math.round(M*u);k%2!=S%2&&(k+=1);const C=_>0?Math.max(1,Math.floor(_*o)):0,y=Math.round(x*o),P=Math.round(c*o),T=null!==(r=this.ot.fixedCoordinate)&&void 0!==r?r:this.ot.coordinate,R=Math.round(T*u)-Math.floor(.5*u),D=Math.floor(R+S/2-k/2),B=D+k,L="right"===e,A=L?a.width-_:_,V=L?l.width-C:C;let O,I,E;return L?(O=V-y,I=V-P,E=A-c-v-_):(O=V+y,I=V+P,E=A+c+v),{dt:L,_t:{vt:D,xt:R,yt:B,bt:y,gt:k,I:2*o,wt:C,ft:O,Mt:V,St:I,kt:S,Ct:l.width},Pt:{vt:D/u,yt:B/u,Tt:E,Rt:g}}}}class it{constructor(t){this.Dt={coordinate:0,background:"#000",additionalPaddingBottom:0,additionalPaddingTop:0},this.Bt={text:"",visible:!1,tickVisible:!0,moveTextToInvisibleTick:!1,borderColor:"",color:"#FFF",borderVisible:!1,separatorVisible:!1},this.Lt={text:"",visible:!1,tickVisible:!1,moveTextToInvisibleTick:!0,borderColor:"",color:"#FFF",borderVisible:!0,separatorVisible:!0},this.H=!0,this.At=new(t||tt)(this.Bt,this.Dt),this.Vt=new(t||tt)(this.Lt,this.Dt)}text(){return this.Ot(),this.Bt.text}coordinate(){return this.Ot(),this.Dt.coordinate}update(){this.H=!0}height(t,i=!1){return Math.max(this.At.height(t,i),this.Vt.height(t,i))}getFixedCoordinate(){return this.Dt.fixedCoordinate||0}setFixedCoordinate(t){this.Dt.fixedCoordinate=t}isVisible(){return this.Ot(),this.Bt.visible||this.Lt.visible}isAxisLabelVisible(){return this.Ot(),this.Bt.visible}renderer(t){return this.Ot(),this.Bt.tickVisible=this.Bt.tickVisible&&t.options().ticksVisible,this.Lt.tickVisible=this.Lt.tickVisible&&t.options().ticksVisible,this.At.setData(this.Bt,this.Dt),this.Vt.setData(this.Lt,this.Dt),this.At}paneRenderer(){return this.Ot(),this.At.setData(this.Bt,this.Dt),this.Vt.setData(this.Lt,this.Dt),this.Vt}Ot(){this.H&&(this.Bt.tickVisible=!0,this.Lt.tickVisible=!1,this.It(this.Bt,this.Lt,this.Dt))}}class st extends it{constructor(t,i,s){super(),this.ht=t,this.Et=i,this.zt=s}It(t,i,s){if(t.visible=!1,2===this.ht.options().mode)return;const e=this.ht.options().horzLine;if(!e.labelVisible)return;const n=this.Et.firstValue();if(!this.ht.visible()||this.Et.isEmpty()||null===n)return;const r=y(e.labelBackgroundColor);s.background=r.t,t.color=r.i;const h=2/12*this.Et.fontSize();s.additionalPaddingTop=h,s.additionalPaddingBottom=h;const l=this.zt(this.Et);s.coordinate=l.Ft,t.text=this.Et.formatPrice(l.Nt,n),t.visible=!0}}const et=/[1-9]/g;class nt{constructor(){this.q=null}setData(t){this.q=t}draw(t,i){if(null===this.q||!1===this.q.visible||0===this.q.text.length)return;const s=t.useMediaCoordinateSpace((({context:t})=>(t.font=i.font,Math.round(i.widthCache.measureText(t,v(this.q).text,et)))));if(s<=0)return;const e=i.paddingHorizontal,n=s+2*e,r=n/2,h=this.q.width;let l=this.q.coordinate,a=Math.floor(l-r)+.5;a<0?(l+=Math.abs(0-a),a=Math.floor(l-r)+.5):a+n>h&&(l-=Math.abs(h-(a+n)),a=Math.floor(l-r)+.5);const o=a+n,u=Math.ceil(0+i.borderSize+i.tickLength+i.paddingTop+i.fontSize+i.paddingBottom);t.useBitmapCoordinateSpace((({context:t,horizontalPixelRatio:s,verticalPixelRatio:e})=>{const n=v(this.q);t.fillStyle=n.background;const r=Math.round(a*s),h=Math.round(0*e),l=Math.round(o*s),c=Math.round(u*e),_=Math.round(2*s);if(t.beginPath(),t.moveTo(r,h),t.lineTo(r,c-_),t.arcTo(r,c,r+_,c,_),t.lineTo(l-_,c),t.arcTo(l,c,l,c-_,_),t.lineTo(l,h),t.fill(),n.tickVisible){const r=Math.round(n.coordinate*s),l=h,a=Math.round((l+i.tickLength)*e);t.fillStyle=n.color;const o=Math.max(1,Math.floor(s)),u=Math.floor(.5*s);t.fillRect(r-u,l,o,a-l)}})),t.useMediaCoordinateSpace((({context:t})=>{const s=v(this.q),n=0+i.borderSize+i.tickLength+i.paddingTop+i.fontSize/2;t.font=i.font,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.color;const r=i.widthCache.yMidCorrection(t,"Apr0");t.translate(a+e,n+r),t.fillText(s.text,0,0)}))}}class rt{constructor(t,i,s){this.H=!0,this.rt=new nt,this.nt={visible:!1,background:"#4c525e",color:"white",text:"",width:0,coordinate:NaN,tickVisible:!0},this.$=t,this.Wt=i,this.zt=s}lt(){this.H=!0}renderer(){return this.H&&(this.U(),this.H=!1),this.rt.setData(this.nt),this.rt}U(){const t=this.nt;if(t.visible=!1,2===this.$.options().mode)return;const i=this.$.options().vertLine;if(!i.labelVisible)return;const s=this.Wt.timeScale();if(s.isEmpty())return;t.width=s.width();const e=this.zt();if(null===e)return;t.coordinate=e.Ft;const n=s.indexToTimeScalePoint(this.$.appliedIndex());t.text=s.formatDateTime(v(n)),t.visible=!0;const r=y(i.labelBackgroundColor);t.background=r.t,t.color=r.i,t.tickVisible=s.options().ticksVisible}}class ht{constructor(){this._priceScale=null,this.jt=0}zorder(){return this.jt}setZorder(t){this.jt=t}priceScale(){return this._priceScale}setPriceScale(t){this._priceScale=t}labelPaneViews(t){return[]}timeAxisViews(){return[]}visible(){return!0}}var lt;exports.CrosshairMode=void 0,(lt=exports.CrosshairMode||(exports.CrosshairMode={}))[lt.Normal=0]="Normal",lt[lt.Magnet=1]="Magnet",lt[lt.Hidden=2]="Hidden";class at extends ht{constructor(t,i){super(),this.Ht=null,this.$t=NaN,this.Ut=0,this.qt=!0,this.Yt=new Map,this.Zt=!1,this.Xt=NaN,this.Kt=NaN,this.Gt=NaN,this.Jt=NaN,this.Wt=t,this.Qt=i,this.ti=new $(t,this);this.ii=((t,i)=>s=>{const e=i(),n=t();if(s===v(this.Ht).defaultPriceScale())return{Nt:n,Ft:e};{const t=v(s.firstValue());return{Nt:s.coordinateToPrice(e,t),Ft:e}}})((()=>this.$t),(()=>this.Kt));const s=((t,i)=>()=>{const s=this.Wt.timeScale().indexToTime(t()),e=i();return s&&Number.isFinite(e)?{si:s,Ft:e}:null})((()=>this.Ut),(()=>this.appliedX()));this.ei=new rt(this,t,s),this.ni=new Q(this)}options(){return this.Qt}saveOriginCoord(t,i){this.Gt=t,this.Jt=i}clearOriginCoord(){this.Gt=NaN,this.Jt=NaN}originCoordX(){return this.Gt}originCoordY(){return this.Jt}setPosition(t,i,s){this.Zt||(this.Zt=!0),this.qt=!0,this.ri(t,i,s)}appliedIndex(){return this.Ut}appliedX(){return this.Xt}appliedY(){return this.Kt}visible(){return this.qt}clearPosition(){this.qt=!1,this.hi(),this.$t=NaN,this.Xt=NaN,this.Kt=NaN,this.Ht=null,this.clearOriginCoord()}paneViews(t){return null!==this.Ht?[this.ni,this.ti]:[]}horzLineVisible(t){return t===this.Ht&&this.Qt.horzLine.visible}vertLineVisible(){return this.Qt.vertLine.visible}priceAxisViews(t,i){this.qt&&this.Ht===t||this.Yt.clear();const s=[];return this.Ht===t&&s.push(this.li(this.Yt,i,this.ii)),s}timeAxisViews(){return this.qt?[this.ei]:[]}pane(){return this.Ht}updateAllViews(){this.ni.lt(),this.Yt.forEach((t=>t.update())),this.ei.lt(),this.ti.update()}ai(t){return t&&!t.defaultPriceScale().isEmpty()?t.defaultPriceScale():null}ri(t,i,s){this.oi(t,i,s)&&this.updateAllViews()}oi(t,i,s){const e=this.Xt,n=this.Kt,r=this.$t,h=this.Ut,l=this.Ht,a=this.ai(s);this.Ut=t,this.Xt=isNaN(t)?NaN:this.Wt.timeScale().indexToCoordinate(t),this.Ht=s;const o=null!==a?a.firstValue():null;return null!==a&&null!==o?(this.$t=i,this.Kt=a.priceToCoordinate(i,o)):(this.$t=NaN,this.Kt=NaN),e!==this.Xt||n!==this.Kt||h!==this.Ut||r!==this.$t||l!==this.Ht}hi(){const t=this.Wt.serieses().map((t=>t.bars().lastIndex())).filter(V),i=0===t.length?null:Math.max(...t);this.Ut=null!==i?i:NaN}li(t,i,s){let e=t.get(i);return void 0===e&&(e=new st(this,i,s),t.set(i,e)),e}}function ot(t){return"left"===t||"right"===t}class ut{constructor(t){this.ui=new Map,this.ci=[],this._i=t}di(t,i){const s=function(t,i){return void 0===t?i:{fi:Math.max(t.fi,i.fi),vi:t.vi||i.vi}}(this.ui.get(t),i);this.ui.set(t,s)}pi(){return this._i}mi(t){const i=this.ui.get(t);return void 0===i?{fi:this._i}:{fi:Math.max(this._i,i.fi),vi:i.vi}}bi(){this.gi(),this.ci=[{wi:0}]}Mi(t){this.gi(),this.ci=[{wi:1,xi:t}]}Si(t){this.ki(),this.ci.push({wi:5,xi:t})}gi(){this.ki(),this.ci.push({wi:6})}Ci(){this.gi(),this.ci=[{wi:4}]}yi(t){this.gi(),this.ci.push({wi:2,xi:t})}Pi(t){this.gi(),this.ci.push({wi:3,xi:t})}Ti(){return this.ci}Ri(t){for(const i of t.ci)this.Di(i);this._i=Math.max(this._i,t._i),t.ui.forEach(((t,i)=>{this.di(i,t)}))}static Bi(){return new ut(2)}static Li(){return new ut(3)}Di(t){switch(t.wi){case 0:this.bi();break;case 1:this.Mi(t.xi);break;case 2:this.yi(t.xi);break;case 3:this.Pi(t.xi);break;case 4:this.Ci();break;case 5:this.Si(t.xi);break;case 6:this.ki()}}ki(){const t=this.ci.findIndex((t=>5===t.wi));-1!==t&&this.ci.splice(t,1)}}const ct=".";function _t(t,i){if(!R(t))return"n/a";if(!D(i))throw new TypeError("invalid length");if(i<0||i>16)throw new TypeError("invalid length");if(0===i)return t.toString();return("0000000000000000"+t.toString()).slice(-i)}class dt{constructor(t,i){if(i||(i=1),R(t)&&D(t)||(t=100),t<0)throw new TypeError("invalid base");this.Et=t,this.Ai=i,this.Vi()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.Oi(t)}Vi(){if(this.Ii=0,this.Et>0&&this.Ai>0){let t=this.Et;for(;t>1;)t/=10,this.Ii++}}Oi(t){const i=this.Et/this.Ai;let s=Math.floor(t),e="";const n=void 0!==this.Ii?this.Ii:NaN;if(i>1){let r=+(Math.round(t*i)-s*i).toFixed(this.Ii);r>=i&&(r-=i,s+=1),e=ct+_t(+r.toFixed(this.Ii)*this.Ai,n)}else s=Math.round(s*i)/i,n>0&&(e=ct+_t(0,n));return s.toFixed(0)+e}}class ft extends dt{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class vt{constructor(t){this.Ei=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.zi(t):t<999995?i+this.zi(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.zi(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.zi(t/1e9)+"B")}zi(t){let i;const s=Math.pow(10,this.Ei);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.Ei).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,((t,i)=>i))}}function pt(t,i,s,e,n,r,h){if(0===i.length||e.from>=i.length||e.to<=0)return;const{context:l,horizontalPixelRatio:a,verticalPixelRatio:o}=t,u=i[e.from];let c=r(t,u),_=u;if(e.to-e.from<2){const i=n/2;l.beginPath();const s={K:u.K-i,G:u.G},e={K:u.K+i,G:u.G};l.moveTo(s.K*a,s.G*o),l.lineTo(e.K*a,e.G*o),h(t,c,s,e)}else{const n=(i,s)=>{h(t,c,_,s),l.beginPath(),c=i,_=s};let d=_;l.beginPath(),l.moveTo(u.K*a,u.G*o);for(let h=e.from+1;h<e.to;++h){d=i[h];const e=r(t,d);switch(s){case 0:l.lineTo(d.K*a,d.G*o);break;case 1:l.lineTo(d.K*a,i[h-1].G*o),e!==c&&(n(e,d),l.lineTo(d.K*a,i[h-1].G*o)),l.lineTo(d.K*a,d.G*o);break;case 2:{const[t,s]=wt(i,h-1,h);l.bezierCurveTo(t.K*a,t.G*o,s.K*a,s.G*o,d.K*a,d.G*o);break}}1!==s&&e!==c&&(n(e,d),l.moveTo(d.K*a,d.G*o))}(_!==d||_===d&&1===s)&&h(t,c,_,d)}}const mt=6;function bt(t,i){return{K:t.K-i.K,G:t.G-i.G}}function gt(t,i){return{K:t.K/i,G:t.G/i}}function wt(t,i,s){const e=Math.max(0,i-1),n=Math.min(t.length-1,s+1);var r,h;return[(r=t[i],h=gt(bt(t[s],t[e]),mt),{K:r.K+h.K,G:r.G+h.G}),bt(t[s],gt(bt(t[n],t[i]),mt))]}function Mt(t,i,s,e,n){const{context:r,horizontalPixelRatio:h,verticalPixelRatio:l}=i;r.lineTo(n.K*h,t*l),r.lineTo(e.K*h,t*l),r.closePath(),r.fillStyle=s,r.fill()}class xt extends N{constructor(){super(...arguments),this.D=null}B(t){this.D=t}R(t){var i;if(null===this.D)return;const{A:s,L:e,Fi:n,V:r,tt:h,Ni:l}=this.D,a=null!==(i=this.D.Wi)&&void 0!==i?i:this.D.ji?0:t.mediaSize.height;if(null===e)return;const o=t.context;o.lineCap="butt",o.lineJoin="round",o.lineWidth=r,c(o,h),o.lineWidth=1,pt(t,s,l,e,n,this.Hi.bind(this),Mt.bind(null,a))}}function St(t,i,s){return Math.min(Math.max(t,i),s)}function kt(t,i,s){return i-t<=s}function Ct(t){const i=Math.ceil(t);return i%2==0?i-1:i}class yt{$i(t,i){const s=this.Ui,{qi:e,Yi:n,Zi:r,Xi:h,Ki:l,Wi:a}=i;if(void 0===this.Gi||void 0===s||s.qi!==e||s.Yi!==n||s.Zi!==r||s.Xi!==h||s.Wi!==a||s.Ki!==l){const s=t.context.createLinearGradient(0,0,0,l);if(s.addColorStop(0,e),null!=a){const i=St(a*t.verticalPixelRatio/l,0,1);s.addColorStop(i,n),s.addColorStop(i,r)}s.addColorStop(1,h),this.Gi=s,this.Ui=i}return this.Gi}}class Pt extends xt{constructor(){super(...arguments),this.Ji=new yt}Hi(t,i){return this.Ji.$i(t,{qi:i.topColor,Yi:"",Zi:"",Xi:i.bottomColor,Ki:t.bitmapSize.height})}}function Tt(t,i){const s=t.context;s.strokeStyle=i,s.stroke()}class Rt extends N{constructor(){super(...arguments),this.D=null}B(t){this.D=t}R(t){if(null===this.D)return;const{A:i,L:s,Fi:e,Ni:n,V:r,tt:h,Qi:l}=this.D;if(null===s)return;const a=t.context;a.lineCap="butt",a.lineWidth=r*t.verticalPixelRatio,c(a,h),a.lineJoin="round";const o=this.ts.bind(this);void 0!==n&&pt(t,i,n,s,e,o,Tt),l&&function(t,i,s,e,n){const{horizontalPixelRatio:r,verticalPixelRatio:h,context:l}=t;let a=null;const o=Math.max(1,Math.floor(r))%2/2,u=s*h+o;for(let s=e.to-1;s>=e.from;--s){const e=i[s];if(e){const i=n(t,e);i!==a&&(l.beginPath(),null!==a&&l.fill(),l.fillStyle=i,a=i);const s=Math.round(e.K*r)+o,c=e.G*h;l.moveTo(s,c),l.arc(s,c,u,0,2*Math.PI)}}l.fill()}(t,i,l,s,o)}}class Dt extends Rt{ts(t,i){return i.lineColor}}function Bt(t,i,s,e,n=0,r=i.length){let h=r-n;for(;0<h;){const r=h>>1,l=n+r;e(i[l],s)===t?(n=l+1,h-=r+1):h=r}return n}const Lt=Bt.bind(null,!0),At=Bt.bind(null,!1);function Vt(t,i){return t.time<i}function Ot(t,i){return i<t.time}function It(t,i,s){const e=i.left(),n=i.right(),r=Lt(t,e,Vt),h=At(t,n,Ot);if(!s)return{from:r,to:h};let l=r,a=h;return r>0&&r<t.length&&t[r].time>=e&&(l=r-1),h>0&&h<t.length&&t[h-1].time<=n&&(a=h+1),{from:l,to:a}}class Et{constructor(t,i,s){this.ss=!0,this.es=!0,this.ns=!0,this.rs=[],this.hs=null,this.ls=t,this.os=i,this.us=s}update(t){this.ss=!0,"data"===t&&(this.es=!0),"options"===t&&(this.ns=!0)}renderer(){return this.ls.visible()?(this.cs(),null===this.hs?null:this._s):null}ds(){this.rs=this.rs.map((t=>Object.assign(Object.assign({},t),this.ls.barColorer().barStyle(t.time))))}fs(){this.hs=null}cs(){this.es&&(this.vs(),this.es=!1),this.ns&&(this.ds(),this.ns=!1),this.ss&&(this.ps(),this.ss=!1)}ps(){const t=this.ls.priceScale(),i=this.os.timeScale();if(this.fs(),i.isEmpty()||t.isEmpty())return;const s=i.visibleStrictRange();if(null===s)return;if(0===this.ls.bars().size())return;const e=this.ls.firstValue();null!==e&&(this.hs=It(this.rs,s,this.us),this.bs(t,i,e.value),this.gs())}}class zt extends Et{constructor(t,i){super(t,i,!0)}bs(t,i,s){i.indexesToCoordinates(this.rs,O(this.hs)),t.pointsArrayToCoordinates(this.rs,s,O(this.hs))}ws(t,i){return{time:t,price:i,x:NaN,y:NaN}}vs(){const t=this.ls.barColorer();this.rs=this.ls.bars().rows().map((i=>{const s=i.value[3];return this.Ms(i.index,s,t)}))}}class Ft extends zt{constructor(t,i){super(t,i),this._s=new F,this.xs=new Pt,this.Ss=new Dt,this._s.T([this.xs,this.Ss])}Ms(t,i,s){return Object.assign(Object.assign({},this.ws(t,i)),s.barStyle(t))}gs(){const t=this.ls.options();this.xs.B({Ni:t.lineType,A:this.rs,tt:t.lineStyle,V:t.lineWidth,Wi:null,ji:t.invertFilledArea,L:this.hs,Fi:this.os.timeScale().barSpacing()}),this.Ss.B({Ni:t.lineVisible?t.lineType:void 0,A:this.rs,tt:t.lineStyle,V:t.lineWidth,L:this.hs,Fi:this.os.timeScale().barSpacing(),Qi:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0})}}class Nt extends N{constructor(){super(...arguments),this.q=null,this.ks=0,this.Cs=0}B(t){this.q=t}R({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.q||0===this.q.ys.length||null===this.q.L)return;if(this.ks=this.Ps(i),this.ks>=2){Math.max(1,Math.floor(i))%2!=this.ks%2&&this.ks--}this.Cs=this.q.Ts?Math.min(this.ks,Math.floor(i)):this.ks;let e=null;const n=this.Cs<=this.ks&&this.q.Rs>=Math.floor(1.5*i);for(let r=this.q.L.from;r<this.q.L.to;++r){const h=this.q.ys[r];e!==h.barColor&&(t.fillStyle=h.barColor,e=h.barColor);const l=Math.floor(.5*this.Cs),a=Math.round(h.x*i),o=a-l,u=this.Cs,c=o+u-1,_=Math.min(h.highY,h.lowY),d=Math.max(h.highY,h.lowY),f=Math.round(_*s)-l,v=Math.round(d*s)+l,p=Math.max(v-f,this.Cs);t.fillRect(o,f,u,p);const m=Math.ceil(1.5*this.ks);if(n){if(this.q.Ds){const i=a-m;let e=Math.max(f,Math.round(h.openY*s)-l),n=e+u-1;n>f+p-1&&(n=f+p-1,e=n-u+1),t.fillRect(i,e,o-i,n-e+1)}const i=a+m;let e=Math.max(f,Math.round(h.closeY*s)-l),n=e+u-1;n>f+p-1&&(n=f+p-1,e=n-u+1),t.fillRect(c+1,e,i-c,n-e+1)}}}Ps(t){const i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(v(this.q).Rs,t)))}}class Wt extends Et{constructor(t,i){super(t,i,!1)}bs(t,i,s){i.indexesToCoordinates(this.rs,O(this.hs)),t.barPricesToCoordinates(this.rs,s,O(this.hs))}Bs(t,i,s){return{time:t,open:i.value[0],high:i.value[1],low:i.value[2],close:i.value[3],x:NaN,openY:NaN,highY:NaN,lowY:NaN,closeY:NaN}}vs(){const t=this.ls.barColorer();this.rs=this.ls.bars().rows().map((i=>this.Ms(i.index,i,t)))}}class jt extends Wt{constructor(){super(...arguments),this._s=new Nt}Ms(t,i,s){return Object.assign(Object.assign({},this.Bs(t,i,s)),s.barStyle(t))}gs(){const t=this.ls.options();this._s.B({ys:this.rs,Rs:this.os.timeScale().barSpacing(),Ds:t.openVisible,Ts:t.thinBars,L:this.hs})}}class Ht extends xt{constructor(){super(...arguments),this.Ji=new yt}Hi(t,i){const s=this.D;return this.Ji.$i(t,{qi:i.topFillColor1,Yi:i.topFillColor2,Zi:i.bottomFillColor1,Xi:i.bottomFillColor2,Ki:t.bitmapSize.height,Wi:s.Wi})}}class $t extends Rt{constructor(){super(...arguments),this.Ls=new yt}ts(t,i){const s=this.D;return this.Ls.$i(t,{qi:i.topLineColor,Yi:i.topLineColor,Zi:i.bottomLineColor,Xi:i.bottomLineColor,Ki:t.bitmapSize.height,Wi:s.Wi})}}class Ut extends zt{constructor(t,i){super(t,i),this._s=new F,this.As=new Ht,this.Vs=new $t,this._s.T([this.As,this.Vs])}Ms(t,i,s){return Object.assign(Object.assign({},this.ws(t,i)),s.barStyle(t))}gs(){const t=this.ls.firstValue();if(null===t)return;const i=this.ls.options(),s=this.ls.priceScale().priceToCoordinate(i.baseValue.price,t.value),e=this.os.timeScale().barSpacing();this.As.B({A:this.rs,V:i.lineWidth,tt:i.lineStyle,Ni:i.lineType,Wi:s,ji:!1,L:this.hs,Fi:e}),this.Vs.B({A:this.rs,V:i.lineWidth,tt:i.lineStyle,Ni:i.lineVisible?i.lineType:void 0,Qi:i.pointMarkersVisible?i.pointMarkersRadius||i.lineWidth/2+2:void 0,Wi:s,L:this.hs,Fi:e})}}class qt extends N{constructor(){super(...arguments),this.q=null,this.ks=0}B(t){this.q=t}R(t){if(null===this.q||0===this.q.ys.length||null===this.q.L)return;const{horizontalPixelRatio:i}=t;if(this.ks=function(t,i){if(t>=2.5&&t<=4)return Math.floor(3*i);const s=1-.2*Math.atan(Math.max(4,t)-4)/(.5*Math.PI),e=Math.floor(t*s*i),n=Math.floor(t*i),r=Math.min(e,n);return Math.max(Math.floor(i),r)}(this.q.Rs,i),this.ks>=2){Math.floor(i)%2!=this.ks%2&&this.ks--}const s=this.q.ys;this.q.Os&&this.Is(t,s,this.q.L),this.q.Es&&this.zs(t,s,this.q.L);const e=this.Fs(i);(!this.q.Es||this.ks>2*e)&&this.Ns(t,s,this.q.L)}Is(t,i,s){if(null===this.q)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:r}=t;let h="",l=Math.min(Math.floor(n),Math.floor(this.q.Rs*n));l=Math.max(Math.floor(n),Math.min(l,this.ks));const a=Math.floor(.5*l);let o=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.barWickColor!==h&&(e.fillStyle=s.barWickColor,h=s.barWickColor);const u=Math.round(Math.min(s.openY,s.closeY)*r),c=Math.round(Math.max(s.openY,s.closeY)*r),_=Math.round(s.highY*r),d=Math.round(s.lowY*r);let f=Math.round(n*s.x)-a;const v=f+l-1;null!==o&&(f=Math.max(o+1,f),f=Math.min(f,v));const p=v-f+1;e.fillRect(f,_,p,u-_),e.fillRect(f,c+1,p,d-c),o=v}}Fs(t){let i=Math.floor(1*t);this.ks<=2*i&&(i=Math.floor(.5*(this.ks-1)));const s=Math.max(Math.floor(t),i);return this.ks<=2*s?Math.max(Math.floor(t),Math.floor(1*t)):s}zs(t,i,s){if(null===this.q)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:r}=t;let h="";const l=this.Fs(n);let a=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.barBorderColor!==h&&(e.fillStyle=s.barBorderColor,h=s.barBorderColor);let o=Math.round(s.x*n)-Math.floor(.5*this.ks);const u=o+this.ks-1,c=Math.round(Math.min(s.openY,s.closeY)*r),_=Math.round(Math.max(s.openY,s.closeY)*r);if(null!==a&&(o=Math.max(a+1,o),o=Math.min(o,u)),this.q.Rs*n>2*l)U(e,o,c,u-o+1,_-c+1,l);else{const t=u-o+1;e.fillRect(o,c,t,_-c+1)}a=u}}Ns(t,i,s){if(null===this.q)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:r}=t;let h="";const l=this.Fs(n);for(let t=s.from;t<s.to;t++){const s=i[t];let a=Math.round(Math.min(s.openY,s.closeY)*r),o=Math.round(Math.max(s.openY,s.closeY)*r),u=Math.round(s.x*n)-Math.floor(.5*this.ks),c=u+this.ks-1;if(s.barColor!==h){const t=s.barColor;e.fillStyle=t,h=t}this.q.Es&&(u+=l,a+=l,c-=l,o-=l),a>o||e.fillRect(u,a,c-u+1,o-a+1)}}}class Yt extends Wt{constructor(){super(...arguments),this._s=new qt}Ms(t,i,s){return Object.assign(Object.assign({},this.Bs(t,i,s)),s.barStyle(t))}gs(){const t=this.ls.options();this._s.B({ys:this.rs,Rs:this.os.timeScale().barSpacing(),Os:t.wickVisible,Es:t.borderVisible,L:this.hs})}}class Zt{constructor(t,i){this.Ws=t,this.Et=i}draw(t,i,s){this.Ws.draw(t,this.Et,i,s)}}class Xt extends Et{constructor(t,i,s){super(t,i,!1),this.ni=s,this._s=new Zt(this.ni.renderer(),(i=>{const s=t.firstValue();return null===s?null:t.priceScale().priceToCoordinate(i,s.value)}))}js(t){return this.ni.priceValueBuilder(t)}Hs(t){return this.ni.isWhitespace(t)}vs(){const t=this.ls.barColorer();this.rs=this.ls.bars().rows().map((i=>Object.assign(Object.assign({si:i.index,K:NaN},t.barStyle(i.index)),{$s:i.data})))}bs(t,i){i.indexesToCoordinates(this.rs,O(this.hs))}gs(){this.ni.update({bars:this.rs.map(Kt),barSpacing:this.os.timeScale().barSpacing(),visibleRange:this.hs},this.ls.options())}}function Kt(t){return{x:t.x,time:t.time,originalData:t.$s,barColor:t.Us}}class Gt extends N{constructor(){super(...arguments),this.q=null,this.qs=[]}B(t){this.q=t,this.qs=[]}R({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.q||0===this.q.A.length||null===this.q.L)return;this.qs.length||this.Ys(i);const e=Math.max(1,Math.floor(s)),n=Math.round(this.q.Zs*s)-Math.floor(e/2),r=n+e;for(let i=this.q.L.from;i<this.q.L.to;i++){const h=this.q.A[i],l=this.qs[i-this.q.L.from],a=Math.round(h.y*s);let o,u;t.fillStyle=h.Us,a<=n?(o=a,u=r):(o=n,u=a-Math.floor(e/2)+e),t.fillRect(l.Xs,o,l.Ct-l.Xs+1,u-o)}}Ys(t){if(null===this.q||0===this.q.A.length||null===this.q.L)return void(this.qs=[]);const i=Math.ceil(this.q.Rs*t)<=1?0:Math.max(1,Math.floor(t)),s=Math.round(this.q.Rs*t)-i;this.qs=new Array(this.q.L.to-this.q.L.from);for(let i=this.q.L.from;i<this.q.L.to;i++){const e=this.q.A[i],n=Math.round(e.x*t);let r,h;if(s%2){const t=(s-1)/2;r=n-t,h=n+t}else{const t=s/2;r=n-t,h=n+t-1}this.qs[i-this.q.L.from]={Xs:r,Ct:h,Ks:n,Gs:e.x*t,si:e.time}}for(let t=this.q.L.from+1;t<this.q.L.to;t++){const s=this.qs[t-this.q.L.from],e=this.qs[t-this.q.L.from-1];s.si===e.si+1&&(s.Xs-e.Ct!==i+1&&(e.Ks>e.Gs?e.Ct=s.Xs-i-1:s.Xs=e.Ct+i+1))}let e=Math.ceil(this.q.Rs*t);for(let t=this.q.L.from;t<this.q.L.to;t++){const i=this.qs[t-this.q.L.from];i.Ct<i.Xs&&(i.Ct=i.Xs);const s=i.Ct-i.Xs+1;e=Math.min(s,e)}if(i>0&&e<4)for(let t=this.q.L.from;t<this.q.L.to;t++){const i=this.qs[t-this.q.L.from];i.Ct-i.Xs+1>e&&(i.Ks>i.Gs?i.Ct-=1:i.Xs+=1)}}}class Jt extends zt{constructor(){super(...arguments),this._s=new Gt}Ms(t,i,s){return Object.assign(Object.assign({},this.ws(t,i)),s.barStyle(t))}gs(){const t={A:this.rs,Rs:this.os.timeScale().barSpacing(),L:this.hs,Zs:this.ls.priceScale().priceToCoordinate(this.ls.options().base,v(this.ls.firstValue()).value)};this._s.B(t)}}class Qt extends zt{constructor(){super(...arguments),this._s=new Dt}Ms(t,i,s){return Object.assign(Object.assign({},this.ws(t,i)),s.barStyle(t))}gs(){const t=this.ls.options(),i={A:this.rs,tt:t.lineStyle,Ni:t.lineVisible?t.lineType:void 0,V:t.lineWidth,Qi:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0,L:this.hs,Fi:this.os.timeScale().barSpacing()};this._s.B(i)}}const ti=/[2-9]/g;class ii{constructor(t=50){this.Js=0,this.Qs=1,this.te=1,this.ie={},this.se=new Map,this.ee=t}reset(){this.Js=0,this.se.clear(),this.Qs=1,this.te=1,this.ie={}}measureText(t,i,s){return this.ne(t,i,s).width}yMidCorrection(t,i,s){const e=this.ne(t,i,s);return((e.actualBoundingBoxAscent||0)-(e.actualBoundingBoxDescent||0))/2}ne(t,i,s){const e=s||ti,n=String(i).replace(e,"0");if(this.se.has(n))return f(this.se.get(n)).re;if(this.Js===this.ee){const t=this.ie[this.te];delete this.ie[this.te],this.se.delete(t),this.te++,this.Js--}t.save(),t.textBaseline="middle";const r=t.measureText(n);return t.restore(),0===r.width&&i.length||(this.se.set(n,{re:r,he:this.Qs}),this.ie[this.Qs]=n,this.Js++,this.Qs++),r}}class si{constructor(t,i,s,e){this.le=null,this.m=null,this.ae="right",this.oe=t,this.ue=Boolean(s),this.ce=Boolean(i),this.ut=e}_e(t,i,s){this.le=t,this.m=i,this.ae=s}draw(t){null!==this.m&&null!==this.le&&this.le.draw(t,this.m,this.oe,this.ae,this.ce,this.ue,this.ut)}}class ei{constructor(t,i,s,e){this.de=t,this.oe=new ii(50),this.fe=i,this.g=s,this.ve=null==e?void 0:e.order,this.pe=null==e?void 0:e.alert,this.ce=Boolean(null==e?void 0:e.draggable),this.ue=Boolean(this.ve||this.pe)&&!(null==e?void 0:e.hideCloseButton),this.ut=null==e?void 0:e.iconColor,this.me=null==e?void 0:e.labelPosition,this.M=-1,this.rt=new si(this.oe,this.ce,this.ue,this.ut)}renderer(){const t=this.g.paneForSource(this.fe);if(null===t)return null;const i=t.isOverlay(this.fe)?t.defaultVisiblePriceScale():this.fe.priceScale();if(null===i)return null;const s=t.priceScalePosition(i);if("overlay"===s)return null;const e=this.g.priceAxisRendererOptions();return e.fontSize!==this.M&&(this.M=e.fontSize,this.oe.reset()),this.rt._e(this.de.paneRenderer(),e,this.me||s),this.rt}}class ni extends N{constructor(){super(...arguments),this.q=null}B(t){this.q=t}hitTest(t,i){var s;if(!(null===(s=this.q)||void 0===s?void 0:s.Y))return null;const{G:e,V:n,be:r}=this.q;return i>=e-n-7&&i<=e+n+7?{hitTestData:this.q,externalId:r}:null}R({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.q)return;if(!1===this.q.Y)return;const n=Math.round(this.q.G*e);n<0||n>i.height||(t.lineCap="butt",t.strokeStyle=this.q.J,t.lineWidth=Math.floor(this.q.V*s),c(t,this.q.tt),_(t,n,0,i.width))}}class ri{constructor(t){this.ge={G:0,J:"rgba(0, 0, 0, 0)",V:1,tt:0,Y:!1},this.we=new ni,this.H=!0,this.ls=t,this.os=t.model(),this.we.B(this.ge)}lt(){this.H=!0}renderer(){return this.ls.visible()?(this.H&&(this.Me(),this.H=!1),this.we):null}}class hi extends ri{constructor(t){super(t)}Me(){this.ge.Y=!1;const t=this.ls.priceScale(),i=t.mode().mode;if(2!==i&&3!==i)return;const s=this.ls.options();if(!s.baseLineVisible||!this.ls.visible())return;const e=this.ls.firstValue();null!==e&&(this.ge.Y=!0,this.ge.G=t.priceToCoordinate(e.value,e.value),this.ge.J=s.baseLineColor,this.ge.V=s.baseLineWidth,this.ge.tt=s.baseLineStyle)}}class li extends N{constructor(){super(...arguments),this.q=null}B(t){this.q=t}xe(){return this.q}R({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const e=this.q;if(null===e)return;const n=Math.max(1,Math.floor(i)),r=n%2/2,h=Math.round(e.Gs.x*i)+r,l=e.Gs.y*s;t.fillStyle=e.Se,t.beginPath();const a=Math.max(2,1.5*e.ke)*i;t.arc(h,l,a,0,2*Math.PI,!1),t.fill(),t.fillStyle=e.Ce,t.beginPath(),t.arc(h,l,e.I*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=n,t.strokeStyle=e.ye,t.beginPath(),t.arc(h,l,e.I*i+n/2,0,2*Math.PI,!1),t.stroke()}}const ai=[{Pe:0,Te:.25,Re:4,De:10,Be:.25,Le:0,Ae:.4,Ve:.8},{Pe:.25,Te:.525,Re:10,De:14,Be:0,Le:0,Ae:.8,Ve:0},{Pe:.525,Te:1,Re:14,De:14,Be:0,Le:0,Ae:0,Ve:0}];function oi(t,i,s,e){return function(t,i){if("transparent"===t)return t;const s=k(t),e=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*e})`}(t,s+(e-s)*i)}function ui(t,i){const s=t%2600/2600;let e;for(const t of ai)if(s>=t.Pe&&s<=t.Te){e=t;break}d(void 0!==e,"Last price animation internal logic error");const n=(s-e.Pe)/(e.Te-e.Pe);return{Ce:oi(i,n,e.Be,e.Le),ye:oi(i,n,e.Ae,e.Ve),I:(r=n,h=e.Re,l=e.De,h+(l-h)*r)};var r,h,l}class ci{constructor(t){this.rt=new li,this.H=!0,this.Oe=!0,this.Ie=performance.now(),this.Ee=this.Ie-1,this.ze=t}Fe(){this.Ee=this.Ie-1,this.update()}Ne(){if(this.update(),2===this.ze.options().lastPriceAnimation){const t=performance.now(),i=this.Ee-t;if(i>0)return void(i<650&&(this.Ee+=2600));this.Ie=t,this.Ee=t+2600}}update(){this.H=!0}We(){this.Oe=!0}Y(){return 0!==this.ze.options().lastPriceAnimation}je(){switch(this.ze.options().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.Ee}}renderer(){return this.H?(this.U(),this.H=!1,this.Oe=!1):this.Oe&&(this.He(),this.Oe=!1),this.rt}U(){this.rt.B(null);const t=this.ze.model().timeScale(),i=t.visibleStrictRange(),s=this.ze.firstValue();if(null===i||null===s)return;const e=this.ze.lastValueData(!0);if(e.noData||!i.contains(e.index))return;const n={x:t.indexToCoordinate(e.index),y:this.ze.priceScale().priceToCoordinate(e.price,s.value)},r=e.color,h=this.ze.options().lineWidth,l=ui(this.$e(),r);this.rt.B({Se:r,ke:h,Ce:l.Ce,ye:l.ye,I:l.I,Gs:n})}He(){const t=this.rt.xe();if(null!==t){const i=ui(this.$e(),t.Se);t.Ce=i.Ce,t.ye=i.ye,t.I=i.I}}$e(){return this.je()?performance.now()-this.Ie:2599}}function _i(t,i){return Ct(Math.min(Math.max(t,12),30)*i)}function di(t,i){switch(t){case"arrowDown":case"arrowUp":return _i(i,1);case"circle":return _i(i,.8);case"square":return _i(i,.7)}}function fi(t){return function(t){const i=Math.ceil(t);return i%2!=0?i-1:i}(_i(t,1))}function vi(t){return Math.max(_i(t,.1),3)}function pi(t,i,s){return i?t:s?Math.ceil(t/2):0}function mi(t,i,s,e,n){const r=di("square",s),h=(r-1)/2,l=t-h,a=i-h;return e>=l&&e<=l+r&&n>=a&&n<=a+r}function bi(t,i,s,e){const n=(di("arrowUp",e)-1)/2*s.Ue,r=(Ct(e/2)-1)/2*s.Ue;i.beginPath(),t?(i.moveTo(s.K-n,s.G),i.lineTo(s.K,s.G-n),i.lineTo(s.K+n,s.G),i.lineTo(s.K+r,s.G),i.lineTo(s.K+r,s.G+n),i.lineTo(s.K-r,s.G+n),i.lineTo(s.K-r,s.G)):(i.moveTo(s.K-n,s.G),i.lineTo(s.K,s.G+n),i.lineTo(s.K+n,s.G),i.lineTo(s.K+r,s.G),i.lineTo(s.K+r,s.G-n),i.lineTo(s.K-r,s.G-n),i.lineTo(s.K-r,s.G)),i.fill()}function gi(t,i,s,e,n,r){return mi(i,s,e,n,r)}class wi extends N{constructor(){super(...arguments),this.q=null,this.oe=new ii,this.M=-1,this.S="",this.qe=""}B(t){this.q=t}_e(t,i){this.M===t&&this.S===i||(this.M=t,this.S=i,this.qe=E(t,i),this.oe.reset())}hitTest(t,i){if(null===this.q||null===this.q.L)return null;for(let s=this.q.L.from;s<this.q.L.to;s++){const e=this.q.A[s];if(xi(e,t,i))return{hitTestData:e.Ye,externalId:e.be}}return null}R({context:t,horizontalPixelRatio:i,verticalPixelRatio:s},e,n){if(null!==this.q&&null!==this.q.L){t.textBaseline="middle",t.font=this.qe;for(let e=this.q.L.from;e<this.q.L.to;e++){const n=this.q.A[e];void 0!==n.Ze&&(n.Ze.Xe=this.oe.measureText(t,n.Ze.Ke),n.Ze.Ge=this.M,n.Ze.K=n.x-n.Ze.Xe/2),Mi(n,t,i,s)}}}}function Mi(t,i,s,e){i.fillStyle=t.J,void 0!==t.Ze&&function(t,i,s,e,n,r){t.save(),t.scale(n,r),t.fillText(i,s,e),t.restore()}(i,t.Ze.Ke,t.Ze.K,t.Ze.G,s,e),function(t,i,s){if(0===t.Je)return;switch(t.Qe){case"arrowDown":return void bi(!1,i,s,t.Je);case"arrowUp":return void bi(!0,i,s,t.Je);case"circle":return void function(t,i,s){const e=(di("circle",s)-1)/2;t.beginPath(),t.arc(i.K,i.G,e*i.Ue,0,2*Math.PI,!1),t.fill()}(i,s,t.Je);case"square":return void function(t,i,s){const e=di("square",s),n=(e-1)*i.Ue/2,r=i.K-n,h=i.G-n;t.fillRect(r,h,e*i.Ue,e*i.Ue)}(i,s,t.Je)}t.Qe}(t,i,function(t,i,s){const e=Math.max(1,Math.floor(i))%2/2;return{K:Math.round(t.x*i)+e,G:t.G*s,Ue:i}}(t,s,e))}function xi(t,i,s){return!(void 0===t.Ze||!function(t,i,s,e,n,r){const h=e/2;return n>=t&&n<=t+s&&r>=i-h&&r<=i+h}(t.Ze.K,t.Ze.G,t.Ze.Xe,t.Ze.Ge,i,s))||function(t,i,s){if(0===t.Je)return!1;switch(t.Qe){case"arrowDown":case"arrowUp":return gi(0,t.x,t.G,t.Je,i,s);case"circle":return function(t,i,s,e,n){const r=2+di("circle",s)/2,h=t-e,l=i-n;return Math.sqrt(h*h+l*l)<=r}(t.x,t.G,t.Je,i,s);case"square":return mi(t.x,t.G,t.Je,i,s)}}(t,i,s)}function Si(t,i,s,e,n,r,h,l,a){const o=R(s)?s:s.close,u=R(s)?s:s.high,c=R(s)?s:s.low,_=R(i.size)?Math.max(i.size,0):1,d=fi(l.barSpacing())*_,f=d/2;switch(t.Je=d,i.position){case"inBar":return t.G=h.priceToCoordinate(o,a),void(void 0!==t.Ze&&(t.Ze.G=t.G+f+r+.6*n));case"aboveBar":return t.G=h.priceToCoordinate(u,a)-f-e.tn,void 0!==t.Ze&&(t.Ze.G=t.G-f-.6*n,e.tn+=1.2*n),void(e.tn+=d+r);case"belowBar":return t.G=h.priceToCoordinate(c,a)+f+e.sn,void 0!==t.Ze&&(t.Ze.G=t.G+f+r+.6*n,e.sn+=1.2*n),void(e.sn+=d+r)}i.position}class ki{constructor(t,i){this.H=!0,this.en=!0,this.nn=!0,this.rn=null,this.hn=null,this.rt=new wi,this.ze=t,this.Wt=i,this.q={A:[],L:null}}update(t){this.H=!0,this.nn=!0,"data"===t&&(this.en=!0,this.hn=null)}renderer(t){if(!this.ze.visible())return null;this.H&&this.ln();const i=this.Wt.options().layout;return this.rt._e(i.fontSize,i.fontFamily),this.rt.B(this.q),this.rt}an(){if(this.nn){if(this.ze.indexedMarkers().length>0){const t=this.Wt.timeScale().barSpacing(),i=vi(t),s=1.5*fi(t)+2*i,e=this.on();this.rn={above:pi(s,e.aboveBar,e.inBar),below:pi(s,e.belowBar,e.inBar)}}else this.rn=null;this.nn=!1}return this.rn}on(){return null===this.hn&&(this.hn=this.ze.indexedMarkers().reduce(((t,i)=>(t[i.position]||(t[i.position]=!0),t)),{inBar:!1,aboveBar:!1,belowBar:!1})),this.hn}ln(){const t=this.ze.priceScale(),i=this.Wt.timeScale(),s=this.ze.indexedMarkers();this.en&&(this.q.A=s.map((t=>({time:t.time,x:0,G:0,Je:0,Qe:t.shape,J:t.color,Ye:t.internalId,be:t.id,Ze:void 0}))),this.en=!1);const e=this.Wt.options().layout;this.q.L=null;const n=i.visibleStrictRange();if(null===n)return;const r=this.ze.firstValue();if(null===r)return;if(0===this.q.A.length)return;let h=NaN;const l=vi(i.barSpacing()),a={tn:l,sn:l};this.q.L=It(this.q.A,n,!0);for(let n=this.q.L.from;n<this.q.L.to;n++){const o=s[n];o.time!==h&&(a.tn=l,a.sn=l,h=o.time);const u=this.q.A[n];u.x=i.indexToCoordinate(o.time),void 0!==o.text&&o.text.length>0&&(u.Ze={Ke:o.text,K:0,G:0,Xe:0,Ge:0});const c=this.ze.dataAt(o.time);null!==c&&Si(u,o,c,a,e.fontSize,l,t,i,r.value)}this.H=!1}}class Ci extends ri{constructor(t){super(t)}Me(){const t=this.ge;t.Y=!1;const i=this.ls.options();if(!i.priceLineVisible||!this.ls.visible())return;const s=this.ls.lastValueData(0===i.priceLineSource);s.noData||(t.Y=!0,t.G=s.coordinate,t.J=this.ls.priceLineColor(s.color),t.V=i.priceLineWidth,t.tt=i.priceLineStyle)}}class yi extends it{constructor(t){super(),this.ht=t}It(t,i,s){t.visible=!1,i.visible=!1;const e=this.ht;if(!e.visible())return;const n=e.options(),r=n.lastValueVisible,h=""!==e.title(),l=0===n.seriesLastValueMode,a=e.lastValueData(!1);if(a.noData)return;r&&(t.text=this.un(a,r,l),t.visible=0!==t.text.length),(h||l)&&(i.text=this.cn(a,r,h,l),i.visible=i.text.length>0);const o=e.priceLineColor(a.color),u=y(o);s.background=u.t,s.coordinate=a.coordinate,i.borderColor=e.model().backgroundColorAtYPercentFromTop(a.coordinate/e.priceScale().height()),t.borderColor=o,t.color=u.i,i.color=u.i}cn(t,i,s,e){let n="";const r=this.ht.title();return s&&0!==r.length&&(n+=`${r} `),i&&e&&(n+=this.ht.priceScale().isPercentage()?t.formattedPriceAbsolute:t.formattedPricePercentage),n.trim()}un(t,i,s){return i?s?this.ht.priceScale().isPercentage()?t.formattedPricePercentage:t.formattedPriceAbsolute:t.text:""}}function Pi(t,i,s,e){const n=Number.isFinite(i),r=Number.isFinite(s);return n&&r?t(i,s):n||r?n?i:s:e}class Ti{constructor(t,i){this._n=t,this.dn=i}equals(t){return null!==t&&(this._n===t._n&&this.dn===t.dn)}clone(){return new Ti(this._n,this.dn)}minValue(){return this._n}maxValue(){return this.dn}length(){return this.dn-this._n}isEmpty(){return this.dn===this._n||Number.isNaN(this.dn)||Number.isNaN(this._n)}merge(t){ret