@raydium-io/raydium-sdk-v2 0.2.36-alpha → 0.2.37-alpha

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.
@@ -1,4 +1,4 @@
1
- var ar=Object.defineProperty,ur=Object.defineProperties;var cr=Object.getOwnPropertyDescriptors;var Kt=Object.getOwnPropertySymbols;var jn=Object.prototype.hasOwnProperty,Qn=Object.prototype.propertyIsEnumerable;var Yn=(n,e,t)=>e in n?ar(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,G=(n,e)=>{for(var t in e||(e={}))jn.call(e,t)&&Yn(n,t,e[t]);if(Kt)for(var t of Kt(e))Qn.call(e,t)&&Yn(n,t,e[t]);return n},z=(n,e)=>ur(n,cr(e));var we=(n,e)=>{var t={};for(var i in n)jn.call(n,i)&&e.indexOf(i)<0&&(t[i]=n[i]);if(n!=null&&Kt)for(var i of Kt(n))e.indexOf(i)<0&&Qn.call(n,i)&&(t[i]=n[i]);return t};import{PublicKey as g}from"@solana/web3.js";import{AccountLayout as Bs,NATIVE_MINT as it,TOKEN_PROGRAM_ID as ae,createAssociatedTokenAccountIdempotentInstruction as rt}from"@solana/spl-token";import Be from"bn.js";var Xe=9e15,Fe=1e9,rn="0123456789abcdef",Rt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Mt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",on={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Xe,maxE:Xe,crypto:!1},ti,xe,W=!0,Ft="[DecimalError] ",Oe=Ft+"Invalid argument: ",ni=Ft+"Precision limit exceeded",ii=Ft+"crypto unavailable",ri="[object Decimal]",se=Math.floor,ee=Math.pow,lr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,mr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,dr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,oi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ye=1e7,V=7,pr=9007199254740991,fr=Rt.length-1,sn=Mt.length-1,T={toStringTag:ri};T.absoluteValue=T.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),F(n)};T.ceil=function(){return F(new this.constructor(this),this.e+1,2)};T.clampedTo=T.clamp=function(n,e){var t,i=this,o=i.constructor;if(n=new o(n),e=new o(e),!n.s||!e.s)return new o(NaN);if(n.gt(e))throw Error(Oe+e);return t=i.cmp(n),t<0?n:i.cmp(e)>0?e:new o(i)};T.comparedTo=T.cmp=function(n){var e,t,i,o,r=this,s=r.d,a=(n=new r.constructor(n)).d,c=r.s,u=n.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(r.e!==n.e)return r.e>n.e^c<0?1:-1;for(i=s.length,o=a.length,e=0,t=i<o?i:o;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return i===o?0:i>o^c<0?1:-1};T.cosine=T.cos=function(){var n,e,t=this,i=t.constructor;return t.d?t.d[0]?(n=i.precision,e=i.rounding,i.precision=n+Math.max(t.e,t.sd())+V,i.rounding=1,t=br(i,li(i,t)),i.precision=n,i.rounding=e,F(xe==2||xe==3?t.neg():t,n,e,!0)):new i(1):new i(NaN)};T.cubeRoot=T.cbrt=function(){var n,e,t,i,o,r,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(W=!1,r=l.s*ee(l.s*l,1/3),!r||Math.abs(r)==1/0?(t=re(l.d),n=l.e,(r=(n-t.length+1)%3)&&(t+=r==1||r==-2?"0":"00"),r=ee(t,1/3),n=se((n+1)/3)-(n%3==(n<0?-1:2)),r==1/0?t="5e"+n:(t=r.toExponential(),t=t.slice(0,t.indexOf("e")+1)+n),i=new m(t),i.s=l.s):i=new m(r.toString()),s=(n=m.precision)+3;;)if(a=i,c=a.times(a).times(a),u=c.plus(l),i=Z(u.plus(l).times(a),u.plus(c),s+2,1),re(a.d).slice(0,s)===(t=re(i.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!o&&t=="4999"){if(!o&&(F(a,n+1,0),a.times(a).times(a).eq(l))){i=a;break}s+=4,o=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(F(i,n+1,1),e=!i.times(i).times(i).eq(l));break}return W=!0,F(i,n,m.rounding,e)};T.decimalPlaces=T.dp=function(){var n,e=this.d,t=NaN;if(e){if(n=e.length-1,t=(n-se(this.e/V))*V,n=e[n],n)for(;n%10==0;n/=10)t--;t<0&&(t=0)}return t};T.dividedBy=T.div=function(n){return Z(this,new this.constructor(n))};T.dividedToIntegerBy=T.divToInt=function(n){var e=this,t=e.constructor;return F(Z(e,new t(n),0,1,1),t.precision,t.rounding)};T.equals=T.eq=function(n){return this.cmp(n)===0};T.floor=function(){return F(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(n){return this.cmp(n)>0};T.greaterThanOrEqualTo=T.gte=function(n){var e=this.cmp(n);return e==1||e===0};T.hyperbolicCosine=T.cosh=function(){var n,e,t,i,o,r=this,s=r.constructor,a=new s(1);if(!r.isFinite())return new s(r.s?1/0:NaN);if(r.isZero())return a;t=s.precision,i=s.rounding,s.precision=t+Math.max(r.e,r.sd())+4,s.rounding=1,o=r.d.length,o<32?(n=Math.ceil(o/3),e=(1/vt(4,n)).toString()):(n=16,e="2.3283064365386962890625e-10"),r=He(s,1,r.times(e),new s(1),!0);for(var c,u=n,l=new s(8);u--;)c=r.times(r),r=a.minus(c.times(l.minus(c.times(l))));return F(r,s.precision=t,s.rounding=i,!0)};T.hyperbolicSine=T.sinh=function(){var n,e,t,i,o=this,r=o.constructor;if(!o.isFinite()||o.isZero())return new r(o);if(e=r.precision,t=r.rounding,r.precision=e+Math.max(o.e,o.sd())+4,r.rounding=1,i=o.d.length,i<3)o=He(r,2,o,o,!0);else{n=1.4*Math.sqrt(i),n=n>16?16:n|0,o=o.times(1/vt(5,n)),o=He(r,2,o,o,!0);for(var s,a=new r(5),c=new r(16),u=new r(20);n--;)s=o.times(o),o=o.times(a.plus(s.times(c.times(s).plus(u))))}return r.precision=e,r.rounding=t,F(o,e,t,!0)};T.hyperbolicTangent=T.tanh=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+7,i.rounding=1,Z(t.sinh(),t.cosh(),i.precision=n,i.rounding=e)):new i(t.s)};T.inverseCosine=T.acos=function(){var n=this,e=n.constructor,t=n.abs().cmp(1),i=e.precision,o=e.rounding;return t!==-1?t===0?n.isNeg()?Ae(e,i,o):new e(0):new e(NaN):n.isZero()?Ae(e,i+4,o).times(.5):(e.precision=i+6,e.rounding=1,n=new e(1).minus(n).div(n.plus(1)).sqrt().atan(),e.precision=i,e.rounding=o,n.times(2))};T.inverseHyperbolicCosine=T.acosh=function(){var n,e,t=this,i=t.constructor;return t.lte(1)?new i(t.eq(1)?0:NaN):t.isFinite()?(n=i.precision,e=i.rounding,i.precision=n+Math.max(Math.abs(t.e),t.sd())+4,i.rounding=1,W=!1,t=t.times(t).minus(1).sqrt().plus(t),W=!0,i.precision=n,i.rounding=e,t.ln()):new i(t)};T.inverseHyperbolicSine=T.asinh=function(){var n,e,t=this,i=t.constructor;return!t.isFinite()||t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+2*Math.max(Math.abs(t.e),t.sd())+6,i.rounding=1,W=!1,t=t.times(t).plus(1).sqrt().plus(t),W=!0,i.precision=n,i.rounding=e,t.ln())};T.inverseHyperbolicTangent=T.atanh=function(){var n,e,t,i,o=this,r=o.constructor;return o.isFinite()?o.e>=0?new r(o.abs().eq(1)?o.s/0:o.isZero()?o:NaN):(n=r.precision,e=r.rounding,i=o.sd(),Math.max(i,n)<2*-o.e-1?F(new r(o),n,e,!0):(r.precision=t=i-o.e,o=Z(o.plus(1),new r(1).minus(o),t+n,1),r.precision=n+4,r.rounding=1,o=o.ln(),r.precision=n,r.rounding=e,o.times(.5))):new r(NaN)};T.inverseSine=T.asin=function(){var n,e,t,i,o=this,r=o.constructor;return o.isZero()?new r(o):(e=o.abs().cmp(1),t=r.precision,i=r.rounding,e!==-1?e===0?(n=Ae(r,t+4,i).times(.5),n.s=o.s,n):new r(NaN):(r.precision=t+6,r.rounding=1,o=o.div(new r(1).minus(o.times(o)).sqrt().plus(1)).atan(),r.precision=t,r.rounding=i,o.times(2)))};T.inverseTangent=T.atan=function(){var n,e,t,i,o,r,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=sn)return s=Ae(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=sn)return s=Ae(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/V+2|0),n=t;n;--n)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(W=!1,e=Math.ceil(a/V),i=1,c=u.times(u),s=new l(u),o=u;n!==-1;)if(o=o.times(c),r=s.minus(o.div(i+=2)),o=o.times(c),s=r.plus(o.div(i+=2)),s.d[e]!==void 0)for(n=e;s.d[n]===r.d[n]&&n--;);return t&&(s=s.times(2<<t-1)),W=!0,F(s,l.precision=m,l.rounding=d,!0)};T.isFinite=function(){return!!this.d};T.isInteger=T.isInt=function(){return!!this.d&&se(this.e/V)>this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(n){return this.cmp(n)<0};T.lessThanOrEqualTo=T.lte=function(n){return this.cmp(n)<1};T.logarithm=T.log=function(n){var e,t,i,o,r,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding,p=5;if(n==null)n=new l(10),e=!0;else{if(n=new l(n),t=n.d,n.s<0||!t||!t[0]||n.eq(1))return new l(NaN);e=n.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)r=!0;else{for(o=t[0];o%10===0;)o/=10;r=o!==1}if(W=!1,a=m+p,s=Me(u,a),i=e?Ot(l,a+10):Me(n,a),c=Z(s,i,a,1),ot(c.d,o=m,d))do if(a+=10,s=Me(u,a),i=e?Ot(l,a+10):Me(n,a),c=Z(s,i,a,1),!r){+re(c.d).slice(o+1,o+15)+1==1e14&&(c=F(c,m+1,0));break}while(ot(c.d,o+=10,d));return W=!0,F(c,m,d)};T.minus=T.sub=function(n){var e,t,i,o,r,s,a,c,u,l,m,d,p=this,f=p.constructor;if(n=new f(n),!p.d||!n.d)return!p.s||!n.s?n=new f(NaN):p.d?n.s=-n.s:n=new f(n.d||p.s!==n.s?p:NaN),n;if(p.s!=n.s)return n.s=-n.s,p.plus(n);if(u=p.d,d=n.d,a=f.precision,c=f.rounding,!u[0]||!d[0]){if(d[0])n.s=-n.s;else if(u[0])n=new f(p);else return new f(c===3?-0:0);return W?F(n,a,c):n}if(t=se(n.e/V),l=se(p.e/V),u=u.slice(),r=l-t,r){for(m=r<0,m?(e=u,r=-r,s=d.length):(e=d,t=l,s=u.length),i=Math.max(Math.ceil(a/V),s)+2,r>i&&(r=i,e.length=1),e.reverse(),i=r;i--;)e.push(0);e.reverse()}else{for(i=u.length,s=d.length,m=i<s,m&&(s=i),i=0;i<s;i++)if(u[i]!=d[i]){m=u[i]<d[i];break}r=0}for(m&&(e=u,u=d,d=e,n.s=-n.s),s=u.length,i=d.length-s;i>0;--i)u[s++]=0;for(i=d.length;i>r;){if(u[--i]<d[i]){for(o=i;o&&u[--o]===0;)u[o]=ye-1;--u[o],u[i]+=ye}u[i]-=d[i]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(n.d=u,n.e=Et(u,t),W?F(n,a,c):n):new f(c===3?-0:0)};T.modulo=T.mod=function(n){var e,t=this,i=t.constructor;return n=new i(n),!t.d||!n.s||n.d&&!n.d[0]?new i(NaN):!n.d||t.d&&!t.d[0]?F(new i(t),i.precision,i.rounding):(W=!1,i.modulo==9?(e=Z(t,n.abs(),0,3,1),e.s*=n.s):e=Z(t,n,0,i.modulo,1),e=e.times(n),W=!0,t.minus(e))};T.naturalExponential=T.exp=function(){return an(this)};T.naturalLogarithm=T.ln=function(){return Me(this)};T.negated=T.neg=function(){var n=new this.constructor(this);return n.s=-n.s,F(n)};T.plus=T.add=function(n){var e,t,i,o,r,s,a,c,u,l,m=this,d=m.constructor;if(n=new d(n),!m.d||!n.d)return!m.s||!n.s?n=new d(NaN):m.d||(n=new d(n.d||m.s===n.s?m:NaN)),n;if(m.s!=n.s)return n.s=-n.s,m.minus(n);if(u=m.d,l=n.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(n=new d(m)),W?F(n,a,c):n;if(r=se(m.e/V),i=se(n.e/V),u=u.slice(),o=r-i,o){for(o<0?(t=u,o=-o,s=l.length):(t=l,i=r,s=u.length),r=Math.ceil(a/V),s=r>s?r+1:s+1,o>s&&(o=s,t.length=1),t.reverse();o--;)t.push(0);t.reverse()}for(s=u.length,o=l.length,s-o<0&&(o=s,t=l,l=u,u=t),e=0;o;)e=(u[--o]=u[o]+l[o]+e)/ye|0,u[o]%=ye;for(e&&(u.unshift(e),++i),s=u.length;u[--s]==0;)u.pop();return n.d=u,n.e=Et(u,i),W?F(n,a,c):n};T.precision=T.sd=function(n){var e,t=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(Oe+n);return t.d?(e=si(t.d),n&&t.e+1>e&&(e=t.e+1)):e=NaN,e};T.round=function(){var n=this,e=n.constructor;return F(new e(n),n.e+1,e.rounding)};T.sine=T.sin=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+Math.max(t.e,t.sd())+V,i.rounding=1,t=gr(i,li(i,t)),i.precision=n,i.rounding=e,F(xe>2?t.neg():t,n,e,!0)):new i(NaN)};T.squareRoot=T.sqrt=function(){var n,e,t,i,o,r,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(W=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=re(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=se((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),i=new l(e)):i=new l(u.toString()),t=(c=l.precision)+3;;)if(r=i,i=r.plus(Z(s,r,t+2,1)).times(.5),re(r.d).slice(0,t)===(e=re(i.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!o&&e=="4999"){if(!o&&(F(r,c+1,0),r.times(r).eq(s))){i=r;break}t+=4,o=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(F(i,c+1,1),n=!i.times(i).eq(s));break}return W=!0,F(i,c,l.rounding,n)};T.tangent=T.tan=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+10,i.rounding=1,t=t.sin(),t.s=1,t=Z(t,new i(1).minus(t.times(t)).sqrt(),n+10,0),i.precision=n,i.rounding=e,F(xe==2||xe==4?t.neg():t,n,e,!0)):new i(NaN)};T.times=T.mul=function(n){var e,t,i,o,r,s,a,c,u,l=this,m=l.constructor,d=l.d,p=(n=new m(n)).d;if(n.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!n.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?n.s/0:n.s*0);for(t=se(l.e/V)+se(n.e/V),c=d.length,u=p.length,c<u&&(r=d,d=p,p=r,s=c,c=u,u=s),r=[],s=c+u,i=s;i--;)r.push(0);for(i=u;--i>=0;){for(e=0,o=c+i;o>i;)a=r[o]+p[i]*d[o-i-1]+e,r[o--]=a%ye|0,e=a/ye|0;r[o]=(r[o]+e)%ye|0}for(;!r[--s];)r.pop();return e?++t:r.shift(),n.d=r,n.e=Et(r,t),W?F(n,m.precision,m.rounding):n};T.toBinary=function(n,e){return un(this,2,n,e)};T.toDecimalPlaces=T.toDP=function(n,e){var t=this,i=t.constructor;return t=new i(t),n===void 0?t:(ce(n,0,Fe),e===void 0?e=i.rounding:ce(e,0,8),F(t,n+t.e+1,e))};T.toExponential=function(n,e){var t,i=this,o=i.constructor;return n===void 0?t=ke(i,!0):(ce(n,0,Fe),e===void 0?e=o.rounding:ce(e,0,8),i=F(new o(i),n+1,e),t=ke(i,!0,n+1)),i.isNeg()&&!i.isZero()?"-"+t:t};T.toFixed=function(n,e){var t,i,o=this,r=o.constructor;return n===void 0?t=ke(o):(ce(n,0,Fe),e===void 0?e=r.rounding:ce(e,0,8),i=F(new r(o),n+o.e+1,e),t=ke(i,!1,n+i.e+1)),o.isNeg()&&!o.isZero()?"-"+t:t};T.toFraction=function(n){var e,t,i,o,r,s,a,c,u,l,m,d,p=this,f=p.d,b=p.constructor;if(!f)return new b(p);if(u=t=new b(1),i=c=new b(0),e=new b(i),r=e.e=si(f)-p.e-1,s=r%V,e.d[0]=ee(10,s<0?V+s:s),n==null)n=r>0?e:u;else{if(a=new b(n),!a.isInt()||a.lt(u))throw Error(Oe+a);n=a.gt(e)?r>0?e:u:a}for(W=!1,a=new b(re(f)),l=b.precision,b.precision=r=f.length*V*2;m=Z(a,e,0,1,1),o=t.plus(m.times(i)),o.cmp(n)!=1;)t=i,i=o,o=u,u=c.plus(m.times(o)),c=o,o=e,e=a.minus(m.times(o)),a=o;return o=Z(n.minus(t),i,0,1,1),c=c.plus(o.times(u)),t=t.plus(o.times(i)),c.s=u.s=p.s,d=Z(u,i,r,1).minus(p).abs().cmp(Z(c,t,r,1).minus(p).abs())<1?[u,i]:[c,t],b.precision=l,W=!0,d};T.toHexadecimal=T.toHex=function(n,e){return un(this,16,n,e)};T.toNearest=function(n,e){var t=this,i=t.constructor;if(t=new i(t),n==null){if(!t.d)return t;n=new i(1),e=i.rounding}else{if(n=new i(n),e===void 0?e=i.rounding:ce(e,0,8),!t.d)return n.s?t:n;if(!n.d)return n.s&&(n.s=t.s),n}return n.d[0]?(W=!1,t=Z(t,n,0,e,1).times(n),W=!0,F(t)):(n.s=t.s,t=n),t};T.toNumber=function(){return+this};T.toOctal=function(n,e){return un(this,8,n,e)};T.toPower=T.pow=function(n){var e,t,i,o,r,s,a=this,c=a.constructor,u=+(n=new c(n));if(!a.d||!n.d||!a.d[0]||!n.d[0])return new c(ee(+a,u));if(a=new c(a),a.eq(1))return a;if(i=c.precision,r=c.rounding,n.eq(1))return F(a,i,r);if(e=se(n.e/V),e>=n.d.length-1&&(t=u<0?-u:u)<=pr)return o=ai(c,a,t,i),n.s<0?new c(1).div(o):F(o,i,r);if(s=a.s,s<0){if(e<n.d.length-1)return new c(NaN);if((n.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=ee(+a,u),e=t==0||!isFinite(t)?se(u*(Math.log("0."+re(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(W=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),o=an(n.times(Me(a,i+t)),i),o.d&&(o=F(o,i+5,1),ot(o.d,i,r)&&(e=i+10,o=F(an(n.times(Me(a,e+t)),e),e+5,1),+re(o.d).slice(i+1,i+15)+1==1e14&&(o=F(o,i+1,0)))),o.s=s,W=!0,c.rounding=r,F(o,i,r))};T.toPrecision=function(n,e){var t,i=this,o=i.constructor;return n===void 0?t=ke(i,i.e<=o.toExpNeg||i.e>=o.toExpPos):(ce(n,1,Fe),e===void 0?e=o.rounding:ce(e,0,8),i=F(new o(i),n,e),t=ke(i,n<=i.e||i.e<=o.toExpNeg,n)),i.isNeg()&&!i.isZero()?"-"+t:t};T.toSignificantDigits=T.toSD=function(n,e){var t=this,i=t.constructor;return n===void 0?(n=i.precision,e=i.rounding):(ce(n,1,Fe),e===void 0?e=i.rounding:ce(e,0,8)),F(new i(t),n,e)};T.toString=function(){var n=this,e=n.constructor,t=ke(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()&&!n.isZero()?"-"+t:t};T.truncated=T.trunc=function(){return F(new this.constructor(this),this.e+1,1)};T.valueOf=T.toJSON=function(){var n=this,e=n.constructor,t=ke(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()?"-"+t:t};function re(n){var e,t,i,o=n.length-1,r="",s=n[0];if(o>0){for(r+=s,e=1;e<o;e++)i=n[e]+"",t=V-i.length,t&&(r+=Re(t)),r+=i;s=n[e],i=s+"",t=V-i.length,t&&(r+=Re(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return r+s}function ce(n,e,t){if(n!==~~n||n<e||n>t)throw Error(Oe+n)}function ot(n,e,t,i){var o,r,s,a;for(r=n[0];r>=10;r/=10)--e;return--e<0?(e+=V,o=0):(o=Math.ceil((e+1)/V),e%=V),r=ee(10,V-e),a=n[o]%r|0,i==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==r||t>3&&a+1==r/2)&&(n[o+1]/r/100|0)==ee(10,e-2)-1||(a==r/2||a==0)&&(n[o+1]/r/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(i||t<4)&&a==9999||!i&&t>3&&a==4999):s=((i||t<4)&&a+1==r||!i&&t>3&&a+1==r/2)&&(n[o+1]/r/1e3|0)==ee(10,e-3)-1,s}function Nt(n,e,t){for(var i,o=[0],r,s=0,a=n.length;s<a;){for(r=o.length;r--;)o[r]*=e;for(o[0]+=rn.indexOf(n.charAt(s++)),i=0;i<o.length;i++)o[i]>t-1&&(o[i+1]===void 0&&(o[i+1]=0),o[i+1]+=o[i]/t|0,o[i]%=t)}return o.reverse()}function br(n,e){var t,i,o;if(e.isZero())return e;i=e.d.length,i<32?(t=Math.ceil(i/3),o=(1/vt(4,t)).toString()):(t=16,o="2.3283064365386962890625e-10"),n.precision+=t,e=He(n,1,e.times(o),new n(1));for(var r=t;r--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return n.precision-=t,e}var Z=function(){function n(i,o,r){var s,a=0,c=i.length;for(i=i.slice();c--;)s=i[c]*o+a,i[c]=s%r|0,a=s/r|0;return a&&i.unshift(a),i}function e(i,o,r,s){var a,c;if(r!=s)c=r>s?1:-1;else for(a=c=0;a<r;a++)if(i[a]!=o[a]){c=i[a]>o[a]?1:-1;break}return c}function t(i,o,r,s){for(var a=0;r--;)i[r]-=a,a=i[r]<o[r]?1:0,i[r]=a*s+i[r]-o[r];for(;!i[0]&&i.length>1;)i.shift()}return function(i,o,r,s,a,c){var u,l,m,d,p,f,b,y,P,w,A,k,B,h,I,x,N,L,S,R,D=i.constructor,q=i.s==o.s?1:-1,v=i.d,K=o.d;if(!v||!v[0]||!K||!K[0])return new D(!i.s||!o.s||(v?K&&v[0]==K[0]:!K)?NaN:v&&v[0]==0||!K?q*0:q/0);for(c?(p=1,l=i.e-o.e):(c=ye,p=V,l=se(i.e/p)-se(o.e/p)),S=K.length,N=v.length,P=new D(q),w=P.d=[],m=0;K[m]==(v[m]||0);m++);if(K[m]>(v[m]||0)&&l--,r==null?(h=r=D.precision,s=D.rounding):a?h=r+(i.e-o.e)+1:h=r,h<0)w.push(1),f=!0;else{if(h=h/p+2|0,m=0,S==1){for(d=0,K=K[0],h++;(m<N||d)&&h--;m++)I=d*c+(v[m]||0),w[m]=I/K|0,d=I%K|0;f=d||m<N}else{for(d=c/(K[0]+1)|0,d>1&&(K=n(K,d,c),v=n(v,d,c),S=K.length,N=v.length),x=S,A=v.slice(0,S),k=A.length;k<S;)A[k++]=0;R=K.slice(),R.unshift(0),L=K[0],K[1]>=c/2&&++L;do d=0,u=e(K,A,S,k),u<0?(B=A[0],S!=k&&(B=B*c+(A[1]||0)),d=B/L|0,d>1?(d>=c&&(d=c-1),b=n(K,d,c),y=b.length,k=A.length,u=e(b,A,y,k),u==1&&(d--,t(b,S<y?R:K,y,c))):(d==0&&(u=d=1),b=K.slice()),y=b.length,y<k&&b.unshift(0),t(A,b,k,c),u==-1&&(k=A.length,u=e(K,A,S,k),u<1&&(d++,t(A,S<k?R:K,k,c))),k=A.length):u===0&&(d++,A=[0]),w[m++]=d,u&&A[0]?A[k++]=v[x]||0:(A=[v[x]],k=1);while((x++<N||A[0]!==void 0)&&h--);f=A[0]!==void 0}w[0]||w.shift()}if(p==1)P.e=l,ti=f;else{for(m=1,d=w[0];d>=10;d/=10)m++;P.e=m+l*p-1,F(P,a?r+P.e+1:r,s,f)}return P}}();function F(n,e,t,i){var o,r,s,a,c,u,l,m,d,p=n.constructor;e:if(e!=null){if(m=n.d,!m)return n;for(o=1,a=m[0];a>=10;a/=10)o++;if(r=e-o,r<0)r+=V,s=e,l=m[d=0],c=l/ee(10,o-s-1)%10|0;else if(d=Math.ceil((r+1)/V),a=m.length,d>=a)if(i){for(;a++<=d;)m.push(0);l=c=0,o=1,r%=V,s=r-V+1}else break e;else{for(l=a=m[d],o=1;a>=10;a/=10)o++;r%=V,s=r-V+o,c=s<0?0:l/ee(10,o-s-1)%10|0}if(i=i||e<0||m[d+1]!==void 0||(s<0?l:l%ee(10,o-s-1)),u=t<4?(c||i)&&(t==0||t==(n.s<0?3:2)):c>5||c==5&&(t==4||i||t==6&&(r>0?s>0?l/ee(10,o-s):0:m[d-1])%10&1||t==(n.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=n.e+1,m[0]=ee(10,(V-e%V)%V),n.e=-e||0):m[0]=n.e=0,n;if(r==0?(m.length=d,a=1,d--):(m.length=d+1,a=ee(10,V-r),m[d]=s>0?(l/ee(10,o-s)%ee(10,s)|0)*a:0),u)for(;;)if(d==0){for(r=1,s=m[0];s>=10;s/=10)r++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;r!=a&&(n.e++,m[0]==ye&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=ye)break;m[d--]=0,a=1}for(r=m.length;m[--r]===0;)m.pop()}return W&&(n.e>p.maxE?(n.d=null,n.e=NaN):n.e<p.minE&&(n.e=0,n.d=[0])),n}function ke(n,e,t){if(!n.isFinite())return ci(n);var i,o=n.e,r=re(n.d),s=r.length;return e?(t&&(i=t-s)>0?r=r.charAt(0)+"."+r.slice(1)+Re(i):s>1&&(r=r.charAt(0)+"."+r.slice(1)),r=r+(n.e<0?"e":"e+")+n.e):o<0?(r="0."+Re(-o-1)+r,t&&(i=t-s)>0&&(r+=Re(i))):o>=s?(r+=Re(o+1-s),t&&(i=t-o-1)>0&&(r=r+"."+Re(i))):((i=o+1)<s&&(r=r.slice(0,i)+"."+r.slice(i)),t&&(i=t-s)>0&&(o+1===s&&(r+="."),r+=Re(i))),r}function Et(n,e){var t=n[0];for(e*=V;t>=10;t/=10)e++;return e}function Ot(n,e,t){if(e>fr)throw W=!0,t&&(n.precision=t),Error(ni);return F(new n(Rt),e,1,!0)}function Ae(n,e,t){if(e>sn)throw Error(ni);return F(new n(Mt),e,t,!0)}function si(n){var e=n.length-1,t=e*V+1;if(e=n[e],e){for(;e%10==0;e/=10)t--;for(e=n[0];e>=10;e/=10)t++}return t}function Re(n){for(var e="";n--;)e+="0";return e}function ai(n,e,t,i){var o,r=new n(1),s=Math.ceil(i/V+4);for(W=!1;;){if(t%2&&(r=r.times(e),$n(r.d,s)&&(o=!0)),t=se(t/2),t===0){t=r.d.length-1,o&&r.d[t]===0&&++r.d[t];break}e=e.times(e),$n(e.d,s)}return W=!0,r}function Jn(n){return n.d[n.d.length-1]&1}function ui(n,e,t){for(var i,o,r=new n(e[0]),s=0;++s<e.length;){if(o=new n(e[s]),!o.s){r=o;break}i=r.cmp(o),(i===t||i===0&&r.s===t)&&(r=o)}return r}function an(n,e){var t,i,o,r,s,a,c,u=0,l=0,m=0,d=n.constructor,p=d.rounding,f=d.precision;if(!n.d||!n.d[0]||n.e>17)return new d(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:0/0);for(e==null?(W=!1,c=f):c=e,a=new d(.03125);n.e>-2;)n=n.times(a),m+=5;for(i=Math.log(ee(2,m))/Math.LN10*2+5|0,c+=i,t=r=s=new d(1),d.precision=c;;){if(r=F(r.times(n),c,1),t=t.times(++l),a=s.plus(Z(r,t,c,1)),re(a.d).slice(0,c)===re(s.d).slice(0,c)){for(o=m;o--;)s=F(s.times(s),c,1);if(e==null)if(u<3&&ot(s.d,c-i,p,u))d.precision=c+=10,t=r=a=new d(1),l=0,u++;else return F(s,d.precision=f,p,W=!0);else return d.precision=f,s}s=a}}function Me(n,e){var t,i,o,r,s,a,c,u,l,m,d,p=1,f=10,b=n,y=b.d,P=b.constructor,w=P.rounding,A=P.precision;if(b.s<0||!y||!y[0]||!b.e&&y[0]==1&&y.length==1)return new P(y&&!y[0]?-1/0:b.s!=1?NaN:y?0:b);if(e==null?(W=!1,l=A):l=e,P.precision=l+=f,t=re(y),i=t.charAt(0),Math.abs(r=b.e)<15e14){for(;i<7&&i!=1||i==1&&t.charAt(1)>3;)b=b.times(n),t=re(b.d),i=t.charAt(0),p++;r=b.e,i>1?(b=new P("0."+t),r++):b=new P(i+"."+t.slice(1))}else return u=Ot(P,l+2,A).times(r+""),b=Me(new P(i+"."+t.slice(1)),l-f).plus(u),P.precision=A,e==null?F(b,A,w,W=!0):b;for(m=b,c=s=b=Z(b.minus(1),b.plus(1),l,1),d=F(b.times(b),l,1),o=3;;){if(s=F(s.times(d),l,1),u=c.plus(Z(s,new P(o),l,1)),re(u.d).slice(0,l)===re(c.d).slice(0,l))if(c=c.times(2),r!==0&&(c=c.plus(Ot(P,l+2,A).times(r+""))),c=Z(c,new P(p),l,1),e==null)if(ot(c.d,l-f,w,a))P.precision=l+=f,u=s=b=Z(m.minus(1),m.plus(1),l,1),d=F(b.times(b),l,1),o=a=1;else return F(c,P.precision=A,w,W=!0);else return P.precision=A,c;c=u,o+=2}}function ci(n){return String(n.s*n.s/0)}function Lt(n,e){var t,i,o;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(i=e.search(/e/i))>0?(t<0&&(t=i),t+=+e.slice(i+1),e=e.substring(0,i)):t<0&&(t=e.length),i=0;e.charCodeAt(i)===48;i++);for(o=e.length;e.charCodeAt(o-1)===48;--o);if(e=e.slice(i,o),e){if(o-=i,n.e=t=t-i-1,n.d=[],i=(t+1)%V,t<0&&(i+=V),i<o){for(i&&n.d.push(+e.slice(0,i)),o-=V;i<o;)n.d.push(+e.slice(i,i+=V));e=e.slice(i),i=V-e.length}else i-=o;for(;i--;)e+="0";n.d.push(+e),W&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function yr(n,e){var t,i,o,r,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),oi.test(e))return Lt(n,e)}else if(e==="Infinity"||e==="NaN")return+e||(n.s=NaN),n.e=NaN,n.d=null,n;if(mr.test(e))t=16,e=e.toLowerCase();else if(lr.test(e))t=2;else if(dr.test(e))t=8;else throw Error(Oe+e);for(r=e.search(/p/i),r>0?(c=+e.slice(r+1),e=e.substring(2,r)):e=e.slice(2),r=e.indexOf("."),s=r>=0,i=n.constructor,s&&(e=e.replace(".",""),a=e.length,r=a-r,o=ai(i,new i(t),r,r*2)),u=Nt(e,t,ye),l=u.length-1,r=l;u[r]===0;--r)u.pop();return r<0?new i(n.s*0):(n.e=Et(u,l),n.d=u,W=!1,s&&(n=Z(n,o,a*4)),c&&(n=n.times(Math.abs(c)<54?ee(2,c):st.pow(2,c))),W=!0,n)}function gr(n,e){var t,i=e.d.length;if(i<3)return e.isZero()?e:He(n,2,e,e);t=1.4*Math.sqrt(i),t=t>16?16:t|0,e=e.times(1/vt(5,t)),e=He(n,2,e,e);for(var o,r=new n(5),s=new n(16),a=new n(20);t--;)o=e.times(e),e=e.times(r.plus(o.times(s.times(o).minus(a))));return e}function He(n,e,t,i,o){var r,s,a,c,u=1,l=n.precision,m=Math.ceil(l/V);for(W=!1,c=t.times(t),a=new n(i);;){if(s=Z(a.times(c),new n(e++*e++),l,1),a=o?i.plus(s):i.minus(s),i=Z(s.times(c),new n(e++*e++),l,1),s=a.plus(i),s.d[m]!==void 0){for(r=m;s.d[r]===a.d[r]&&r--;);if(r==-1)break}r=a,a=i,i=s,s=r,u++}return W=!0,s.d.length=m+1,s}function vt(n,e){for(var t=n;--e;)t*=n;return t}function li(n,e){var t,i=e.s<0,o=Ae(n,n.precision,1),r=o.times(.5);if(e=e.abs(),e.lte(r))return xe=i?4:1,e;if(t=e.divToInt(o),t.isZero())xe=i?3:2;else{if(e=e.minus(t.times(o)),e.lte(r))return xe=Jn(t)?i?2:3:i?4:1,e;xe=Jn(t)?i?1:4:i?3:2}return e.minus(o).abs()}function un(n,e,t,i){var o,r,s,a,c,u,l,m,d,p=n.constructor,f=t!==void 0;if(f?(ce(t,1,Fe),i===void 0?i=p.rounding:ce(i,0,8)):(t=p.precision,i=p.rounding),!n.isFinite())l=ci(n);else{for(l=ke(n),s=l.indexOf("."),f?(o=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):o=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=Nt(ke(d),10,o),d.e=d.d.length),m=Nt(l,10,o),r=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=f?"0p+0":"0";else{if(s<0?r--:(n=new p(n),n.d=m,n.e=r,n=Z(n,d,t,i,0,o),m=n.d,r=n.e,u=ti),s=m[t],a=o/2,u=u||m[t+1]!==void 0,u=i<4?(s!==void 0||u)&&(i===0||i===(n.s<0?3:2)):s>a||s===a&&(i===4||u||i===6&&m[t-1]&1||i===(n.s<0?8:7)),m.length=t,u)for(;++m[--t]>o-1;)m[t]=0,t||(++r,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=rn.charAt(m[s]);if(f){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=Nt(l,o,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=rn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(r<0?"p":"p+")+r}else if(r<0){for(;++r;)l="0"+l;l="0."+l}else if(++r>c)for(r-=c;r--;)l+="0";else r<c&&(l=l.slice(0,r)+"."+l.slice(r))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return n.s<0?"-"+l:l}function $n(n,e){if(n.length>e)return n.length=e,!0}function Pr(n){return new this(n).abs()}function wr(n){return new this(n).acos()}function Ar(n){return new this(n).acosh()}function kr(n,e){return new this(n).plus(e)}function Tr(n){return new this(n).asin()}function hr(n){return new this(n).asinh()}function Br(n){return new this(n).atan()}function Ir(n){return new this(n).atanh()}function xr(n,e){n=new this(n),e=new this(e);var t,i=this.precision,o=this.rounding,r=i+4;return!n.s||!e.s?t=new this(NaN):!n.d&&!e.d?(t=Ae(this,r,1).times(e.s>0?.25:.75),t.s=n.s):!e.d||n.isZero()?(t=e.s<0?Ae(this,i,o):new this(0),t.s=n.s):!n.d||e.isZero()?(t=Ae(this,r,1).times(.5),t.s=n.s):e.s<0?(this.precision=r,this.rounding=1,t=this.atan(Z(n,e,r,1)),e=Ae(this,r,1),this.precision=i,this.rounding=o,t=n.s<0?t.minus(e):t.plus(e)):t=this.atan(Z(n,e,r,1)),t}function Cr(n){return new this(n).cbrt()}function Sr(n){return F(n=new this(n),n.e+1,2)}function Kr(n,e,t){return new this(n).clamp(e,t)}function Nr(n){if(!n||typeof n!="object")throw Error(Ft+"Object expected");var e,t,i,o=n.defaults===!0,r=["precision",1,Fe,"rounding",0,8,"toExpNeg",-Xe,0,"toExpPos",0,Xe,"maxE",0,Xe,"minE",-Xe,0,"modulo",0,9];for(e=0;e<r.length;e+=3)if(t=r[e],o&&(this[t]=on[t]),(i=n[t])!==void 0)if(se(i)===i&&i>=r[e+1]&&i<=r[e+2])this[t]=i;else throw Error(Oe+t+": "+i);if(t="crypto",o&&(this[t]=on[t]),(i=n[t])!==void 0)if(i===!0||i===!1||i===0||i===1)if(i)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ii);else this[t]=!1;else throw Error(Oe+t+": "+i);return this}function Lr(n){return new this(n).cos()}function Rr(n){return new this(n).cosh()}function mi(n){var e,t,i;function o(r){var s,a,c,u=this;if(!(u instanceof o))return new o(r);if(u.constructor=o,ei(r)){u.s=r.s,W?!r.d||r.e>o.maxE?(u.e=NaN,u.d=null):r.e<o.minE?(u.e=0,u.d=[0]):(u.e=r.e,u.d=r.d.slice()):(u.e=r.e,u.d=r.d?r.d.slice():r.d);return}if(c=typeof r,c==="number"){if(r===0){u.s=1/r<0?-1:1,u.e=0,u.d=[0];return}if(r<0?(r=-r,u.s=-1):u.s=1,r===~~r&&r<1e7){for(s=0,a=r;a>=10;a/=10)s++;W?s>o.maxE?(u.e=NaN,u.d=null):s<o.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[r]):(u.e=s,u.d=[r]);return}if(r*0!==0){r||(u.s=NaN),u.e=NaN,u.d=null;return}return Lt(u,r.toString())}if(c==="string")return(a=r.charCodeAt(0))===45?(r=r.slice(1),u.s=-1):(a===43&&(r=r.slice(1)),u.s=1),oi.test(r)?Lt(u,r):yr(u,r);if(c==="bigint")return r<0?(r=-r,u.s=-1):u.s=1,Lt(u,r.toString());throw Error(Oe+r)}if(o.prototype=T,o.ROUND_UP=0,o.ROUND_DOWN=1,o.ROUND_CEIL=2,o.ROUND_FLOOR=3,o.ROUND_HALF_UP=4,o.ROUND_HALF_DOWN=5,o.ROUND_HALF_EVEN=6,o.ROUND_HALF_CEIL=7,o.ROUND_HALF_FLOOR=8,o.EUCLID=9,o.config=o.set=Nr,o.clone=mi,o.isDecimal=ei,o.abs=Pr,o.acos=wr,o.acosh=Ar,o.add=kr,o.asin=Tr,o.asinh=hr,o.atan=Br,o.atanh=Ir,o.atan2=xr,o.cbrt=Cr,o.ceil=Sr,o.clamp=Kr,o.cos=Lr,o.cosh=Rr,o.div=Mr,o.exp=Or,o.floor=Fr,o.hypot=Er,o.ln=vr,o.log=Vr,o.log10=Wr,o.log2=Dr,o.max=_r,o.min=qr,o.mod=Gr,o.mul=Ur,o.pow=Xr,o.random=Hr,o.round=zr,o.sign=Zr,o.sin=Yr,o.sinh=jr,o.sqrt=Qr,o.sub=Jr,o.sum=$r,o.tan=eo,o.tanh=to,o.trunc=no,n===void 0&&(n={}),n&&n.defaults!==!0)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<i.length;)n.hasOwnProperty(t=i[e++])||(n[t]=this[t]);return o.config(n),o}function Mr(n,e){return new this(n).div(e)}function Or(n){return new this(n).exp()}function Fr(n){return F(n=new this(n),n.e+1,3)}function Er(){var n,e,t=new this(0);for(W=!1,n=0;n<arguments.length;)if(e=new this(arguments[n++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return W=!0,new this(1/0);t=e}return W=!0,t.sqrt()}function ei(n){return n instanceof st||n&&n.toStringTag===ri||!1}function vr(n){return new this(n).ln()}function Vr(n,e){return new this(n).log(e)}function Dr(n){return new this(n).log(2)}function Wr(n){return new this(n).log(10)}function _r(){return ui(this,arguments,-1)}function qr(){return ui(this,arguments,1)}function Gr(n,e){return new this(n).mod(e)}function Ur(n,e){return new this(n).mul(e)}function Xr(n,e){return new this(n).pow(e)}function Hr(n){var e,t,i,o,r=0,s=new this(1),a=[];if(n===void 0?n=this.precision:ce(n,1,Fe),i=Math.ceil(n/V),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(i));r<i;)o=e[r],o>=429e7?e[r]=crypto.getRandomValues(new Uint32Array(1))[0]:a[r++]=o%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(i*=4);r<i;)o=e[r]+(e[r+1]<<8)+(e[r+2]<<16)+((e[r+3]&127)<<24),o>=214e7?crypto.randomBytes(4).copy(e,r):(a.push(o%1e7),r+=4);r=i/4}else throw Error(ii);else for(;r<i;)a[r++]=Math.random()*1e7|0;for(i=a[--r],n%=V,i&&n&&(o=ee(10,V-n),a[r]=(i/o|0)*o);a[r]===0;r--)a.pop();if(r<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=V)a.shift();for(i=1,o=a[0];o>=10;o/=10)i++;i<V&&(t-=V-i)}return s.e=t,s.d=a,s}function zr(n){return F(n=new this(n),n.e+1,this.rounding)}function Zr(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function Yr(n){return new this(n).sin()}function jr(n){return new this(n).sinh()}function Qr(n){return new this(n).sqrt()}function Jr(n,e){return new this(n).sub(e)}function $r(){var n=0,e=arguments,t=new this(e[n]);for(W=!1;t.s&&++n<e.length;)t=t.plus(e[n]);return W=!0,F(t,this.precision,this.rounding)}function eo(n){return new this(n).tan()}function to(n){return new this(n).tanh()}function no(n){return F(n=new this(n),n.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString;T[Symbol.toStringTag]="Decimal";var st=T.constructor=mi(on);Rt=new st(Rt);Mt=new st(Mt);var te=st;import Eo from"big.js";import Oc from"bn.js";import{get as di,set as io}from"lodash";var cn=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(i=>typeof i=="object"?JSON.stringify(i):i).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},pi={},ro={};function ne(n){let e=di(pi,n);if(!e){let t=di(ro,n);e=new cn({name:n,logLevel:t}),io(pi,n,e)}return e}import{PublicKey as fi}from"@solana/web3.js";import{MINT_SIZE as oo,TOKEN_PROGRAM_ID as so,getTransferFeeConfig as ao,unpackMint as uo}from"@solana/spl-token";var ln=ne("Raydium_accountInfo_util");async function at(n,e,t){let{batchRequest:i,commitment:o="confirmed",chunkCount:r=100}=G({batchRequest:!1},t),s=mn(e,r),a=new Array(s.length).fill([]);if(i){let c=s.map(m=>{let d=n._buildArgs([m.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=mn(c,10);a=(await(await Promise.all(u.map(async m=>await n._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&ln.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:f,lamports:b,owner:y,rentEpoch:P}=d;return p.length!==2&&p[1]!=="base64"&&ln.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:f,lamports:b,owner:new fi(y),rentEpoch:P}}return null})))}else try{a=await Promise.all(s.map(c=>n.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&ln.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function We(n,e,t){let i=await at(n,e.map(o=>o.pubkey),t);return e.map((o,r)=>z(G({},o),{accountInfo:i[r]}))}async function dn({connection:n,mints:e,config:t}){var r,s,a;if(e.length===0)return{};let i=await We(n,e.map(c=>({pubkey:ut(c)})),t),o={};for(let c of i){if(!c.accountInfo||c.accountInfo.data.length<oo){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=uo(c.pubkey,c.accountInfo,(r=c.accountInfo)==null?void 0:r.owner);o[c.pubkey.toString()]=z(G({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||so,feeConfig:(a=ao(u))!=null?a:void 0})}return o[fi.default.toBase58()]=o[le.toBase58()],o}import ct from"bn.js";var bi=9007199254740991;function Te(n){let e=ne("Raydium_parseBigNumberish");if(n instanceof ct)return n;if(typeof n=="string"){if(n.match(/^-?[0-9]+$/))return new ct(n);e.logWithError(`invalid BigNumberish string: ${n}`)}return typeof n=="number"?(n%1&&e.logWithError(`BigNumberish number underflow: ${n}`),(n>=bi||n<=-bi)&&e.logWithError(`BigNumberish number overflow: ${n}`),new ct(String(n))):typeof n=="bigint"?new ct(n.toString()):(e.error(`invalid BigNumberish value: ${n}`),new ct(0))}import{PublicKey as co}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yi}from"@solana/spl-token";var pn={chainId:101,address:co.default.toBase58(),programId:yi.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ee={chainId:101,address:"So11111111111111111111111111111111111111112",programId:yi.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as yn}from"@solana/web3.js";import{PublicKey as j,SystemProgram as gi,SYSVAR_RENT_PUBKEY as lo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as mo}from"@solana/spl-token";function fn({pubkey:n,isSigner:e=!1,isWritable:t=!0}){return{pubkey:n,isWritable:t,isSigner:e}}var Zs=[fn({pubkey:mo,isWritable:!1}),fn({pubkey:gi.programId,isWritable:!1}),fn({pubkey:lo,isWritable:!1})];function bn({publicKey:n,transformSol:e}){let t=Pi(n.toString());if(t instanceof j)return e&&t.equals(lt)?le:t;if(e&&t.toString()===lt.toBase58())return le;if(typeof t=="string"){if(t===j.default.toBase58())return j.default;try{return new j(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Pi(n){try{return new j(n)}catch{return n}}var po=new j("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Vt=new j("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Dt=new j("SysvarRent111111111111111111111111111111111"),Ys=new j("SysvarC1ock11111111111111111111111111111111"),ze=new j("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),js=new j("Sysvar1nstructions1111111111111111111111111"),wi=gi.programId,Qs=new j("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Js=new j("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),$s=new j("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ea=new j("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ta=new j("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),na=new j("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ia=new j("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ra=new j("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),oa=new j("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),sa=new j("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),aa=new j("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),le=new j("So11111111111111111111111111111111111111112"),lt=j.default;function ut(n){return bn({publicKey:n,transformSol:!0})}var gn=class{constructor({mint:e,decimals:t,symbol:i,name:o,skipMint:r=!1,isToken2022:s=!1}){if(e===lt.toBase58()||e instanceof yn&&lt.equals(e)){this.decimals=Ee.decimals,this.symbol=Ee.symbol,this.name=Ee.name,this.mint=new yn(Ee.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=i||e.toString().substring(0,6),this.name=o||e.toString().substring(0,6),this.mint=r?yn.default:bn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ve=gn;ve.WSOL=new gn(z(G({},Ee),{mint:Ee.address}));var Pn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:i="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=i}equals(e){return this===e}},Wt=Pn;Wt.SOL=new Pn(pn);import fo from"toformat";var bo=fo,mt=bo;import qt from"big.js";import go from"bn.js";import Po from"decimal.js-light";var _t=ne("module/fraction"),wn=mt(qt),dt=mt(Po),wo={[0]:dt.ROUND_DOWN,[1]:dt.ROUND_HALF_UP,[2]:dt.ROUND_UP},Ao={[0]:qt.roundDown,[1]:qt.roundHalfUp,[2]:qt.roundUp},Y=class{constructor(e,t=new go(1)){this.numerator=Te(e),this.denominator=Te(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(Te(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(Te(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(Te(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(Te(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},i=1){Number.isInteger(e)||_t.logWithError(`${e} is not an integer.`),e<=0&&_t.logWithError(`${e} is not positive.`),dt.set({precision:e+1,rounding:wo[i]});let o=new dt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return o.toFormat(o.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},i=1){return Number.isInteger(e)||_t.logWithError(`${e} is not an integer.`),e<0&&_t.logWithError(`${e} is negative.`),wn.DP=e,wn.RM=Ao[i]||1,new wn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};import ko from"bn.js";var Ai=new Y(new ko(100)),pe=class extends Y{toSignificant(e=5,t,i){return this.mul(Ai).toSignificant(e,t,i)}toFixed(e=2,t,i){return this.mul(Ai).toFixed(e,t,i)}};var Oa=ne("Raydium_price");function mn(n,e=1,t=[]){let i=[...n];if(e<=0)return t;for(;i.length;)t.push(i.splice(0,e));return t}import{PublicKey as So}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ko}from"@solana/spl-token";import{ComputeBudgetProgram as ki,Keypair as hi,PublicKey as To,Transaction as Bi,TransactionMessage as ho,VersionedTransaction as Ii}from"@solana/web3.js";var ie={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as Bo}from"@solana/spl-token";var Ti=ne("Raydium_txUtil"),xi=1644;function Ut(n){let e=[],t=[];return n.microLamports&&(e.push(ki.setComputeUnitPrice({microLamports:n.microLamports})),t.push(ie.SetComputeUnitPrice)),n.units&&(e.push(ki.setComputeUnitLimit({units:n.units})),t.push(ie.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Ze(n,e){var i,o;let t=e!=null?e:"confirmed";return(o=await((i=n.getLatestBlockhash)==null?void 0:i.call(n,{commitment:t})))==null?void 0:o.blockhash}async function Xt(n,e){return n.getSignatureStatuses([e]),new Promise((t,i)=>{let o=setTimeout(i,6e4);n.onSignature(e,r=>{if(clearTimeout(o),!r.err){t("");return}i(Object.assign(r.err,{txId:e}))},"confirmed")})}function Io(n,e){n.length<1&&Ti.logWithError(`no instructions provided: ${n.toString()}`),e.length<1&&Ti.logWithError(`no signers provided:, ${e.toString()}`);let t=new Bi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...n);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<xi}catch{return!1}}function fe(n,e){let[t,i]=To.findProgramAddressSync(n,e);return{publicKey:t,nonce:i}}function pt({instructions:n,payer:e,signers:t}){return Io(n,[e,...t])}function ft({instructions:n,payer:e,lookupTableAddressAccount:t,recentBlockhash:i=hi.generate().publicKey.toString()}){let r=new ho({payerKey:e,recentBlockhash:i,instructions:n}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ii(r).serialize()).toString("base64").length<xi}catch{return!1}}var xo=n=>Buffer.isBuffer(n)?n:n instanceof Uint8Array?Buffer.from(n.buffer,n.byteOffset,n.byteLength):Buffer.from(n),Co=n=>{let e=n.serialize({requireAllSignatures:!1,verifySignatures:!1});n instanceof Ii&&(e=xo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function _e(n){let e=[];return n.forEach(t=>{t instanceof Bi&&(t.recentBlockhash||(t.recentBlockhash=Bo.toBase58()),t.feePayer||(t.feePayer=hi.generate().publicKey)),e.push(Co(t))}),console.log("simulate tx string:",e),e}function de(n,e,t){return fe([n.toBuffer(),(t!=null?t:Ko).toBuffer(),e.toBuffer()],new So("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as E}from"@solana/web3.js";var fu=new E("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),bu=new E("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),yu=new E("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),gu=new E("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pu=new E("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),wu=new E("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Au=new E("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ku=new E("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Tu=new E("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),hu=new E("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),No=new E("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Lo=new E("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ro=new E("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Bu=new E("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Iu=new E("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),xu=new E("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Cu=new E("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Su=new E("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ku=new E("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Nu=new E("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),bt=new E("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ci=new E("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Lu=new E("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ht=new E("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),zt=new E("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ru=new E("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Mu=new E("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Ou=new E("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Fu=new E("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Eu=new E("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vu=new E("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Vu={OPEN_BOOK_PROGRAM:new E("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new E("Ray1111111111111111111111111111111111111111"),AMM_V4:new E("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new E("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new E("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new E("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new E("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new E("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new E("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new E("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new E("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new E("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:E.default,Router:new E("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new E("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new E("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new E("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new E("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new E("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new E("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new E("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new E("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new E("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new E("Ray1111111111111111111111111111111111111111")};import ge from"bn.js";var yt=1e4;function he(n,e,t,i){if(e===void 0)return{amount:n,fee:void 0,expirationTime:void 0};let o=z(G({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),r=t.epoch<o.newerTransferFee.epoch?o.olderTransferFee:o.newerTransferFee,s=new ge(r.maximumFee.toString()),a=t.epoch<o.newerTransferFee.epoch?(Number(o.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(i)if(r.transferFeeBasisPoints===yt){let c=new ge(r.maximumFee.toString());return{amount:n.add(c),fee:c,expirationTime:a}}else{let c=Tn(n.mul(new ge(yt)),new ge(yt-r.transferFeeBasisPoints)),u=new ge(r.maximumFee.toString()),l=c.sub(n).gt(u)?n.add(u):c,m=Tn(l.mul(new ge(r.transferFeeBasisPoints)),new ge(yt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=Tn(n.mul(new ge(r.transferFeeBasisPoints)),new ge(yt)),u=c.gt(s)?s:c;return{amount:n,fee:u,expirationTime:a}}}function Tn(n,e){let{div:t,mod:i}=n.divmod(e);return i.gt(new ge(0))?t.add(new ge(1)):t}import{PublicKey as hn,AddressLookupTableAccount as Qe}from"@solana/web3.js";async function Bn({connection:n,address:e,cluster:t="mainnet"}){let i=await at(n,[...new Set(e.map(r=>r.toString()))].map(r=>new hn(r))),o={};for(let r=0;r<e.length;r++){let s=i[r],a=e[r];if(!s)continue;let c=new Qe({key:a,state:Qe.deserialize(s.data)});o[a.toString()]=c,t==="devnet"?je[a.toString()]=c:Ye[a.toString()]=c}return o}var Ye={},In=async n=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ye[e])return Ye;let t=new hn(e),i=await n.getAccountInfo(t);return i&&(Ye[e]=new Qe({key:t,state:Qe.deserialize(i.data)})),Ye},je={},xn=async n=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(je[e])return je;let t=new hn(e),i=await n.getAccountInfo(t);return i&&(je[e]=new Qe({key:t,state:Qe.deserialize(i.data)})),je};import{PublicKey as Je,sendAndConfirmTransaction as Cn,SystemProgram as Mo,Transaction as gt,TransactionMessage as Pt,VersionedTransaction as wt}from"@solana/web3.js";import Oo from"axios";var Zt=2e3,Yt=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var i;let e=(await Oo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(i=e==null?void 0:e[15])!=null?i:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:i}=Ut(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...i),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Mo.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Je(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(ie.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let i=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(i))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:i=[],instructionTypes:o=[],endInstructionTypes:r=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...i),this.instructionTypes.push(...o),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...s.filter(a=>a!==Je.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(G({},t||{})):this.build(t)}build(e){var i;let t=new gt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((i=this.owner)==null?void 0:i.signer)&&!this.signers.some(o=>o.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async o=>{var l;let{recentBlockHash:r,skipPreflight:s=!0,sendAndConfirm:a,notSendToRpc:c}=o||{},u=r!=null?r:await Ze(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),_e([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:a?await Cn(this.connection,t,this.signers.find(d=>d.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let m=await this.signAllTransactions([t]);if(this.signers.length)for(let d of m)try{d.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:s}),signedTx:m[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:i}=e,{transaction:o}=this.build(i),r=t.filter(l=>l.transaction.instructions.length>0),s=[o,...r.map(l=>l.transaction)],a=[this.signers,...r.map(l=>l.signers)],c=[...this.instructionTypes,...r.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async l=>{var P;let{sequentially:m,onTxUpdate:d,skipTxCount:p=0,recentBlockHash:f,skipPreflight:b=!0}=l||{},y=f!=null?f:await Ze(this.connection,this.blockhashCommitment);if((P=this.owner)!=null&&P.isKeyPair){if(m){let w=[],A=0;for(let k of s){if(++A,A<=p)continue;let B=await Cn(this.connection,k,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});w.push(B)}return{txIds:w,signedTxs:s}}return{txIds:await await Promise.all(s.map(async w=>(w.recentBlockhash=y,await this.connection.sendRawTransaction(w.serialize(),{skipPreflight:b})))),signedTxs:s}}if(this.signAllTransactions){let w=s.map((k,B)=>(k.recentBlockhash=y,a[B].length&&k.sign(...a[B]),k));_e(w);let A=await this.signAllTransactions(w);if(m){let k=0,B=[],h=async()=>{if(!A[k])return;let I=await this.connection.sendRawTransaction(A[k].serialize(),{skipPreflight:b});B.push({txId:I,status:"sent",signedTx:A[k]}),d==null||d([...B]),k++;let x=!1,N=null,L=null,S=R=>{N!==null&&clearInterval(N),L!==null&&this.connection.removeSignatureListener(L);let D=B.findIndex(q=>q.txId===I);if(D>-1){if(B[D].status==="error"||B[D].status==="success")return;B[D].status=R.err?"error":"success"}d==null||d([...B]),R.err||h()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var R;if(x){clearInterval(N);return}try{let D=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});D&&(x=!0,clearInterval(N),S({err:((R=D.meta)==null?void 0:R.err)||null}),console.log("tx status from getTransaction:",I))}catch(D){x=!0,clearInterval(N),console.error("getTransaction timeout:",D,I)}},Zt)),L=this.connection.onSignature(I,R=>{if(x){this.connection.removeSignatureListener(L);return}x=!0,S(R)},"confirmed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:B.map(I=>I.txId),signedTxs:A}}else{let k=[];for(let B=0;B<A.length;B+=1){let h=await this.connection.sendRawTransaction(A[B].serialize(),{skipPreflight:b});k.push(h)}return{txIds:k,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:i}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:i||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:i})}async buildV0(e){var b;let f=e||{},{lookupTableCache:t={},lookupTableAddress:i=[],forerunCreate:o,recentBlockhash:r}=f,s=we(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=G(G({},this.cluster==="devnet"?await xn(this.connection):await In(this.connection)),t),c=Array.from(new Set([...i,...this.lookupTableAddress])),u=[];for(let y of c)a[y]===void 0&&u.push(new Je(y));let l=await Bn({connection:this.connection,address:u});for(let[y,P]of Object.entries(l))a[y]=P;let m=o?Je.default.toBase58():r!=null?r:await Ze(this.connection,this.blockhashCommitment),d=new Pt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((b=this.owner)==null?void 0:b.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new wt(d);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var k;let{skipPreflight:P=!0,sendAndConfirm:w,notSendToRpc:A}=y||{};if(_e([p]),(k=this.owner)!=null&&k.isKeyPair){let B=await this.connection.sendTransaction(p,{skipPreflight:P});return w&&await Xt(this.connection,B),{txId:B,signedTx:p}}if(this.signAllTransactions){let B=await this.signAllTransactions([p]);if(this.signers.length)for(let h of B)try{h.sign(this.signers)}catch{}return{txId:A?"":await this.connection.sendTransaction(B[0],{skipPreflight:P}),signedTx:B[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:i}=e,{transaction:o}=await this.buildV0(i),r=t.filter(l=>l.builder.instructions.length>0),s=[o,...r.map(l=>l.transaction)],a=[this.signers,...r.map(l=>l.signers)],c=[...this.instructionTypes,...r.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:i,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:f=!0}=l||{};if(p&&s.forEach(y=>y.message.recentBlockhash=p),_e(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let y=[];for(let P of s){let w=await this.connection.sendTransaction(P,{skipPreflight:f});await Xt(this.connection,w),y.push(w)}return{txIds:y,signedTxs:s}}return{txIds:await Promise.all(s.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(m){let P=0,w=[],A=async()=>{if(!y[P])return;let k=await this.connection.sendTransaction(y[P],{skipPreflight:f});w.push({txId:k,status:"sent",signedTx:y[P]}),d==null||d([...w]),P++;let B=!1,h=null,I=null,x=N=>{h!==null&&clearInterval(h),I!==null&&this.connection.removeSignatureListener(I);let L=w.findIndex(S=>S.txId===k);if(L>-1){if(w[L].status==="error"||w[L].status==="success")return;w[L].status=N.err?"error":"success"}d==null||d([...w]),N.err||A()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var N;if(B){clearInterval(h);return}try{let L=await this.connection.getTransaction(k,{commitment:"confirmed",maxSupportedTransactionVersion:0});L&&(B=!0,clearInterval(h),x({err:((N=L.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",k))}catch(L){B=!0,clearInterval(h),console.error("getTransaction timeout:",L,k)}},Zt)),I=this.connection.onSignature(k,N=>{if(B){this.connection.removeSignatureListener(I);return}B=!0,x(N)},"confirmed"),this.connection.getSignatureStatus(k)};return A(),{txIds:[],signedTxs:y}}else{let P=[];for(let w=0;w<y.length;w+=1){let A=await this.connection.sendTransaction(y[w],{skipPreflight:f});P.push(A)}return{txIds:P,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuild(e){var d;let m=e||{},{splitIns:t=[],computeBudgetConfig:i}=m,o=we(m,["splitIns","computeBudgetConfig"]),r=i?Ut(i):{instructions:[],instructionTypes:[]},s=this.signers.reduce((p,f)=>z(G({},p),{[f.publicKey.toBase58()]:f}),{}),a=[],c=[],u=[],l=0;if(this.allInstructions.forEach(p=>{let f=[...u,p],b=i?[...r.instructions,...f]:f,P=[...new Set(f.map(w=>w.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat()).values()].map(w=>new Je(w));if(p!==t[l]&&u.length<12&&(pt({instructions:b,payer:this.feePayer,signers:P})||pt({instructions:f,payer:this.feePayer,signers:P})))u.push(p);else{if(u.length===0)throw Error("item ins too big");l+=p===t[l]?1:0,pt({instructions:i?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:P})?a.push(new gt().add(...r.instructions,...u)):a.push(new gt().add(...u)),c.push(Array.from(new Set(u.map(w=>w.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat())).map(w=>s[w]).filter(w=>w!==void 0)),u=[p]}}),u.length>0){let f=[...new Set(u.map(b=>b.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(b=>s[b]).filter(b=>b!==void 0);pt({instructions:i?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:f.map(b=>b.publicKey)})?a.push(new gt().add(...r.instructions,...u)):a.push(new gt().add(...u)),c.push(f)}return a.forEach(p=>p.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&c.forEach(p=>{p.some(f=>f.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async p=>{var k;let{sequentially:f,onTxUpdate:b,skipTxCount:y=0,recentBlockHash:P,skipPreflight:w=!0}=p||{},A=P!=null?P:await Ze(this.connection,this.blockhashCommitment);if(a.forEach(async(B,h)=>{B.recentBlockhash=A,c[h].length&&B.sign(...c[h])}),_e(a),(k=this.owner)!=null&&k.isKeyPair){if(f){let B=0,h=[];for(let I of a){if(++B,B<=y){h.push("tx skipped");continue}let x=await Cn(this.connection,I,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});h.push(x)}return{txIds:h,signedTxs:a}}return{txIds:await Promise.all(a.map(async B=>await this.connection.sendRawTransaction(B.serialize(),{skipPreflight:w}))),signedTxs:a}}if(this.signAllTransactions){let B=await this.signAllTransactions(a.slice(y,a.length)),h=[...a.slice(0,y),...B];if(f){let I=0,x=[],N=async()=>{if(!h[I])return;I<y&&(x.push({txId:"",status:"success",signedTx:h[I]}),b==null||b([...x]),I++,N());let L=await this.connection.sendRawTransaction(h[I].serialize(),{skipPreflight:w});x.push({txId:L,status:"sent",signedTx:h[I]}),b==null||b([...x]),I++;let S=!1,R=null,D=null,q=v=>{R!==null&&clearInterval(R),D!==null&&this.connection.removeSignatureListener(D);let K=x.findIndex($=>$.txId===L);if(K>-1){if(x[K].status==="error"||x[K].status==="success")return;x[K].status=v.err?"error":"success"}b==null||b([...x]),v.err||N()};this.loopMultiTxStatus&&(R=setInterval(async()=>{var v;if(S){clearInterval(R);return}try{let K=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:0});K&&(S=!0,clearInterval(R),q({err:((v=K.meta)==null?void 0:v.err)||null}),console.log("tx status from getTransaction:",L))}catch(K){S=!0,clearInterval(R),console.error("getTransaction timeout:",K,L)}},Zt)),D=this.connection.onSignature(L,v=>{if(S){this.connection.removeSignatureListener(D);return}S=!0,q(v)},"confirmed"),this.connection.getSignatureStatus(L)};return await N(),{txIds:x.map(L=>L.txId),signedTxs:h}}else{let I=[];for(let x=0;x<h.length;x+=1){let N=await this.connection.sendRawTransaction(h[x].serialize(),{skipPreflight:w});I.push(N)}return{txIds:I,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var A;let w=e||{},{computeBudgetConfig:t,splitIns:i=[],lookupTableCache:o={},lookupTableAddress:r=[]}=w,s=we(w,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),a=G(G({},this.cluster==="devnet"?await xn(this.connection):await In(this.connection)),o),c=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let k of c)a[k]===void 0&&u.push(new Je(k));let l=await Bn({connection:this.connection,address:u});for(let[k,B]of Object.entries(l))a[k]=B;let m=t?Ut(t):{instructions:[],instructionTypes:[]},d=await Ze(this.connection,this.blockhashCommitment),p=this.signers.reduce((k,B)=>z(G({},k),{[B.publicKey.toBase58()]:B}),{}),f=[],b=[],y=[],P=0;if(this.allInstructions.forEach(k=>{let B=[...y,k],h=t?[...m.instructions,...B]:B;if(k!==i[P]&&y.length<12&&(ft({instructions:h,payer:this.feePayer,lookupTableAddressAccount:a})||ft({instructions:B,payer:this.feePayer,lookupTableAddressAccount:a})))y.push(k);else{if(y.length===0)throw Error("item ins too big");P+=k===i[P]?1:0;let I={};for(let x of[...new Set(c)])a[x]!==void 0&&(I[x]=a[x]);if(t&&ft({instructions:[...m.instructions,...y],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let x=new Pt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...y]}).compileToV0Message(Object.values(a));f.push(new wt(x))}else{let x=new Pt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...y]}).compileToV0Message(Object.values(a));f.push(new wt(x))}b.push(Array.from(new Set(y.map(x=>x.keys.filter(N=>N.isSigner).map(N=>N.pubkey.toString())).flat())).map(x=>p[x]).filter(x=>x!==void 0)),y=[k]}}),y.length>0){let B=[...new Set(y.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(h=>p[h]).filter(h=>h!==void 0);if(t&&ft({instructions:[...m.instructions,...y],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let h=new Pt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...y]}).compileToV0Message(Object.values(a));f.push(new wt(h))}else{let h=new Pt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...y]}).compileToV0Message(Object.values(a));f.push(new wt(h))}b.push(B)}return(A=this.owner)!=null&&A.signer&&b.forEach(k=>{k.some(B=>B.publicKey.equals(this.owner.publicKey))||k.push(this.owner.signer)}),f.forEach((k,B)=>{k.sign(b[B])}),{builder:this,transactions:f,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async k=>{var L;let{sequentially:B,onTxUpdate:h,skipTxCount:I=0,recentBlockHash:x,skipPreflight:N=!0}=k||{};if(f.map(async(S,R)=>{b[R].length&&S.sign(b[R]),x&&(S.message.recentBlockhash=x)}),_e(f),(L=this.owner)!=null&&L.isKeyPair){if(B){let S=0,R=[];for(let D of f){if(++S,S<=I){console.log("skip tx: ",S),R.push("tx skipped");continue}let q=await this.connection.sendTransaction(D,{skipPreflight:N});await Xt(this.connection,q),R.push(q)}return{txIds:R,signedTxs:f}}return{txIds:await Promise.all(f.map(async S=>await this.connection.sendTransaction(S,{skipPreflight:N}))),signedTxs:f}}if(this.signAllTransactions){let S=await this.signAllTransactions(f.slice(I,f.length)),R=[...f.slice(0,I),...S];if(B){let D=0,q=[],v=async()=>{if(!R[D])return;if(D<I){q.push({txId:"",status:"success",signedTx:R[D]}),h==null||h([...q]),D++,v();return}let K=await this.connection.sendTransaction(R[D],{skipPreflight:N});q.push({txId:K,status:"sent",signedTx:R[D]}),h==null||h([...q]),D++;let $=!1,ue=null,Pe=null,Zn=De=>{ue!==null&&clearInterval(ue),Pe!==null&&this.connection.removeSignatureListener(Pe);let Ie=q.findIndex(sr=>sr.txId===K);if(Ie>-1){if(q[Ie].status==="error"||q[Ie].status==="success")return;q[Ie].status=De.err?"error":"success"}h==null||h([...q]),De.err||v()};this.loopMultiTxStatus&&(ue=setInterval(async()=>{var De;if($){clearInterval(ue);return}try{let Ie=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ie&&($=!0,clearInterval(ue),Zn({err:((De=Ie.meta)==null?void 0:De.err)||null}),console.log("tx status from getTransaction:",K))}catch(Ie){$=!0,clearInterval(ue),console.error("getTransaction timeout:",Ie,K)}},Zt)),Pe=this.connection.onSignature(K,De=>{if($){this.connection.removeSignatureListener(Pe);return}$=!0,Zn(De)},"confirmed"),this.connection.getSignatureStatus(K)};return v(),{txIds:[],signedTxs:R}}else{let D=[];for(let q=0;q<R.length;q+=1){let v=await this.connection.sendTransaction(R[q],{skipPreflight:N});D.push(v)}return{txIds:D,signedTxs:R}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import{PublicKey as oc}from"@solana/web3.js";import ac from"bn.js";import Fo from"bn.js";var qe=new Fo(1e6);var Gc=ne("Raydium_amount"),Uc=mt(Eo);var kn=new Be(0),rl=new Be(1),ol=new Be(2),sl=new Be(3),al=new Be(5),vo=new Be(10),ul=new Be(100),cl=new Be(1e3),ll=new Be(1e4);function Sn(n,e,t){return n.mul(e).add(t).sub(new Be(1)).div(t)}function jt(n,e,t){return n.mul(e).div(t)}import Ki from"bn.js";import Qt from"bn.js";function Kn(n,e){if(e.isZero())throw Error("divisor is zero");return n.mod(e)}function Vo(n,e){if(e.isZero())throw Error("rhs is zero");let t=n.div(e);return Kn(n,e).gt(At)&&(t=t.add(new Qt(1))),[t,e]}var At=new Qt(0),kt=class{static swapBaseInputWithoutFees(e,t,i){let o=e.mul(i),r=t.add(e);return o.div(r)}static swapBaseOutputWithoutFees(e,t,i){let o=t.mul(e),r=i.sub(e),[s]=Vo(o,r);return s}static lpTokensToTradingTokens(e,t,i,o,r){let s=e.mul(i).div(t),a=e.mul(o).div(t);if(r===0)return{tokenAmount0:s,tokenAmount1:a};if(r===1)return Kn(e.mul(i),t).gt(At)&&s.gt(At)&&(s=s.add(new Qt(1))),Kn(e.mul(o),t).gt(At)&&a.gt(At)&&(a=a.add(new Qt(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};import Do from"bn.js";var me=class{static tradingFee(e,t){return Sn(e,t,qe)}static protocolFee(e,t){return jt(e,t,qe)}static fundFee(e,t){return jt(e,t,qe)}static creatorFee(e,t){return Sn(e,t,qe)}static splitCreatorFee(e,t,i){return jt(e,i,t.add(i))}static calculatePreFeeAmount(e,t){if(t.isZero())return e;let i=e.mul(qe),o=qe.sub(t);return i.add(o).sub(new Do(1)).div(o)}};var Tt=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swapBaseInput(e,t,i,o,r,s,a,c){let u=new Ki(0),l=me.tradingFee(e,o),m;c?(u=me.creatorFee(e,r),m=e.sub(l).sub(u)):m=e.sub(l);let d=me.protocolFee(l,s),p=me.protocolFee(l,a),f=kt.swapBaseInputWithoutFees(m,t,i),b;return c?b=f:(u=me.creatorFee(f,r),b=f.sub(u)),{newInputVaultAmount:t.add(m),newOutputVaultAmount:i.sub(f),inputAmount:e,outputAmount:b,tradeFee:l,protocolFee:d,fundFee:p,creatorFee:u}}static swapBaseOutput(e,t,i,o,r,s,a,c){let u,l=new Ki(0),m;if(c)m=e;else{let y=me.calculatePreFeeAmount(e,r);l=y.sub(e),m=y}let d=kt.swapBaseOutputWithoutFees(m,t,i),p;if(c){let y=me.calculatePreFeeAmount(d,o.add(r)),P=y.sub(d);l=me.splitCreatorFee(P,o,r),u=P.sub(l),p=y}else{let y=me.calculatePreFeeAmount(d,o);u=y.sub(d),p=y}let f=me.protocolFee(u,s),b=me.fundFee(u,a);return{newInputVaultAmount:t.add(d),newOutputVaultAmount:i.sub(m),inputAmount:p,outputAmount:e,tradeFee:u,protocolFee:f,fundFee:b,creatorFee:l}}};import J from"bn.js";var Nn=(...n)=>n.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),$e=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ne(t)}createTxBuilder(e){return this.scope.checkOwner(),new Yt({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Nn(e))}logInfo(...e){this.logger.info(Nn(e))}logAndCreateError(...e){let t=Nn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Zo}from"@solana/web3.js";import Mi,{isBN as Oi}from"bn.js";import{bits as Nl,BitStructure as Ll,blob as Wo,Blob as Rl,cstr as Ml,f32 as Ol,f32be as Fl,f64 as El,f64be as vl,greedy as Vl,Layout as _o,ns64 as Dl,ns64be as Wl,nu64 as _l,nu64be as ql,offset as Gl,s16 as Ul,s16be as Xl,s24 as Hl,s24be as zl,s32 as qo,s32be as Zl,s40 as Yl,s40be as jl,s48 as Ql,s48be as Jl,s8 as $l,seq as Go,struct as em,Structure as Uo,u16 as Xo,u16be as tm,u24 as nm,u24be as im,u32 as rm,u32be as om,u40 as sm,u40be as am,u48 as um,u48be as cm,u8 as Ho,UInt as zo,union as lm,Union as mm,unionLayoutDiscriminator as dm,utf8 as pm}from"@solana/buffer-layout";var Ln=_o,Ni=Uo;var Rn=zo;var Li=Ho,Ge=Xo;var Ce=qo;var Ri=Go;var oe=Wo;var et=class extends Ln{constructor(t,i,o){super(t,o);this.blob=oe(t),this.signed=i}decode(t,i=0){let o=new Mi(this.blob.decode(t,i),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(t,i,o=0){return typeof t=="number"&&(t=new Mi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),i,o)}};function X(n){return new Rn(1,n)}function Se(n){return new Rn(4,n)}function C(n){return new et(8,!1,n)}function Q(n){return new et(16,!1,n)}function Fi(n){return new et(8,!0,n)}function Ei(n){return new et(16,!0,n)}var Jt=class extends Ln{constructor(t,i,o,r){super(t.span,r);this.layout=t,this.decoder=i,this.encoder=o}decode(t,i){return this.decoder(this.layout.decode(t,i))}encode(t,i,o){return this.layout.encode(this.encoder(t),i,o)}getSpan(t,i){return this.layout.getSpan(t,i)}};function _(n){return new Jt(oe(32),e=>new Zo(e),e=>e.toBuffer(),n)}function Ve(n){return new Jt(Li(),Yo,jo,n)}function Yo(n){if(n===0)return!1;if(n===1)return!0;throw new Error("Invalid bool: "+n)}function jo(n){return n?1:0}var Mn=class extends Ni{decode(e,t){return super.decode(e,t)}};function U(n,e,t){return new Mn(n,e,t)}function H(n,e,t){let i,o=typeof e=="number"?e:Oi(e)?e.toNumber():new Proxy(e,{get(r,s){if(!i){let a=Reflect.get(r,"count");i=Oi(a)?a.toNumber():a,Reflect.set(r,"count",i)}return Reflect.get(r,s)},set(r,s,a){return s==="count"&&(i=a),Reflect.set(r,s,a)}});return Ri(n,o,t)}var Cm=U([Se("mintAuthorityOption"),_("mintAuthority"),C("supply"),X("decimals"),X("isInitialized"),Se("freezeAuthorityOption"),_("freezeAuthority")]);import{PublicKey as Lm}from"@solana/web3.js";import{MintLayout as Mm,TOKEN_PROGRAM_ID as Fm}from"@solana/spl-token";var Ue=o=>{var r=o,{address:n,programId:e,decimals:t}=r,i=we(r,["address","programId","decimals"]);return G({chainId:101,address:ut(n).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:i.extensions||{}},i)},tt=n=>n?z(G({},n),{transferFeeConfigAuthority:n.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:n.withdrawWithheldAuthority.toBase58(),withheldAmount:n.withheldAmount.toString(),olderTransferFee:z(G({},n.olderTransferFee),{epoch:n.olderTransferFee.epoch.toString(),maximumFee:n.olderTransferFee.maximumFee.toString()}),newerTransferFee:z(G({},n.newerTransferFee),{epoch:n.newerTransferFee.epoch.toString(),maximumFee:n.newerTransferFee.maximumFee.toString()})}):void 0;import{PublicKey as St,TransactionInstruction as Ne,Keypair as ks,SystemProgram as Gn}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as nn,TOKEN_2022_PROGRAM_ID as Un,TOKEN_PROGRAM_ID as Ke}from"@solana/spl-token";var Qo=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),zm=Buffer.from("amm_config","utf8"),Jo=Buffer.from("pool","utf8"),$o=Buffer.from("pool_lp_mint","utf8"),es=Buffer.from("pool_vault","utf8"),ts=Buffer.from("observation","utf8"),ns=Buffer.from("permission","utf8");function $t(n){return fe([Qo],n)}function On(n,e,t,i){return fe([Jo,e.toBuffer(),t.toBuffer(),i.toBuffer()],n)}function is(n,e){return fe([$o,e.toBuffer()],n)}function vi(n,e,t){return fe([es,e.toBuffer(),t.toBuffer()],n)}function ht(n,e){return fe([ts,e.toBuffer()],n)}function Fn({poolId:n,programId:e,configId:t,mintA:i,mintB:o}){let r=$t(e).publicKey,s=n||On(e,t,i,o).publicKey,a=is(e,s).publicKey,c=vi(e,s,i).publicKey,u=vi(e,s,o).publicKey,l=ht(e,s).publicKey;return{poolId:s,configId:t,authority:r,lpMint:a,vaultA:c,vaultB:u,observationId:l}}var rs=Buffer.from("locked_liquidity","utf8");function Bt(n,e){return fe([rs,e.toBuffer()],n)}function Vi(n,e){return fe([ns,e.toBuffer()],n)}import{PublicKey as Kf}from"@solana/web3.js";import Lf from"bn.js";import{AccountLayout as Ff,createAssociatedTokenAccountIdempotentInstruction as Ef,TOKEN_2022_PROGRAM_ID as vf,TOKEN_PROGRAM_ID as Vf}from"@solana/spl-token";import{Keypair as tf,PublicKey as nf,SystemProgram as of,TransactionInstruction as sf}from"@solana/web3.js";import uf from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as mf,TOKEN_2022_PROGRAM_ID as df,TOKEN_PROGRAM_ID as pf}from"@solana/spl-token";import Fp from"bn.js";import be from"bn.js";var En=new be(0),Di=new be(1),Wi=new be(-1),en=new be(1).shln(64),_i=new be(1).shln(128),os=en.sub(Di);var ss=_i.subn(1),nt=-443636,It=-nt,vn=new be("4295048016"),Vn=new be("79226673521066979257578248091"),jm=new be("4295048017"),Qm=new be("79226673521066979257578248090");var as=new be(10).pow(new be(6));var Jm=new be("18446744073700000000");import kp from"bn.js";var od=Buffer.from("amm_config","utf8"),sd=Buffer.from("pool","utf8"),ad=Buffer.from("pool_vault","utf8"),ud=Buffer.from("pool_reward_vault","utf8"),cd=Buffer.from("position","utf8"),ld=Buffer.from("tick_array","utf8"),md=Buffer.from("operation","utf8"),dd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),pd=Buffer.from("observation","utf8");function Dn(n){return fe([Buffer.from("metadata","utf8"),ze.toBuffer(),n.toBuffer()],ze)}var fd=Buffer.from("locked_position","utf8");var bd=Buffer.from("support_mint","utf8");import{PublicKey as Zd}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as jd}from"@solana/spl-token";import Jd from"bn.js";import Pd from"bn.js";var qn=14;var tn=60;var ms=U([oe(8),X("bump"),Ge("index"),_(""),Se("protocolFeeRate"),Se("tradeFeeRate"),Ge("tickSpacing"),H(C(),8,"")]),ds=U([Se("blockTimestamp"),Fi("tickCumulative"),H(C(),4)]),ji=U([oe(8),Ve("initialized"),C("recentEpoch"),Ge("observationIndex"),_("poolId"),H(ds,100,"observations"),H(C(),4)]),ps=U([X("rewardState"),C("openTime"),C("endTime"),C("lastUpdateTime"),Q("emissionsPerSecondX64"),C("rewardTotalEmissioned"),C("rewardClaimed"),_("tokenMint"),_("tokenVault"),_("creator"),Q("rewardGrowthGlobalX64")]),zi=U([oe(8),X("bump"),_("ammConfig"),_("creator"),_("mintA"),_("mintB"),_("vaultA"),_("vaultB"),_("observationId"),X("mintDecimalsA"),X("mintDecimalsB"),Ge("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),Ce("tickCurrent"),Se(),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),C("protocolFeesTokenA"),C("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),X("status"),H(X(),7,""),H(ps,3,"rewardInfos"),H(C(),16,"tickArrayBitmap"),C("totalFeesTokenA"),C("totalFeesClaimedTokenA"),C("totalFeesTokenB"),C("totalFeesClaimedTokenB"),C("fundFeesTokenA"),C("fundFeesTokenB"),C("startTime"),H(C(),15*4-3,"padding")]),fs=U([Q("growthInsideLastX64"),C("rewardAmountOwed")]),Zi=U([oe(8),X("bump"),_("nftMint"),_("poolId"),Ce("tickLower"),Ce("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),C("tokenFeesOwedA"),C("tokenFeesOwedB"),H(fs,3,"rewardInfos"),H(C(),8,"")]),Xp=U([oe(8),X("bump"),_("poolId"),Ce("tickLowerIndex"),Ce("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),C("tokenFeesOwedA"),C("tokenFeesOwedB"),H(Q(),3,"rewardGrowthInside"),H(C(),8,"")]),bs=U([Ce("tick"),Ei("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),H(Q(),3,"rewardGrowthsOutsideX64"),H(Se(),13,"")]),Ui=U([oe(8),_("poolId"),Ce("startTickIndex"),H(bs,tn,"ticks"),X("initializedTickCount"),H(X(),115,"")]),ys=U([oe(329),H(_(),100,"whitelistMints")]),ls=U([oe(8),_("poolId"),H(H(C(),8),qn,"positiveTickArrayBitmap"),H(H(C(),8),qn,"negativeTickArrayBitmap")]),Hp=U([C(),X("bump"),_("owner"),_("poolId"),_("positionId"),_("nftAccount"),H(C(),8)]),gs=U([oe(8),X("bump"),_("lockOwner"),_("poolId"),_("positionId"),_("nftAccount"),_("lockNftMint"),C("recentEpoch"),H(C(),8)]);ji.span;var Tf=ne("Raydium_Clmm");var Ts=ne("Raydium_cpmm"),Le={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132])};function Qi(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f,b,y,P,w,A){let k=U([C("amountMaxA"),C("amountMaxB"),C("openTime")]),B=On(n,t,r,s).publicKey,h=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!o.equals(B),isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:nn,isSigner:!1,isWritable:!1},{pubkey:wi,isSigner:!1,isWritable:!1},{pubkey:Dt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(k.span);return k.encode({amountMaxA:P,amountMaxB:w,openTime:A},I),new Ne({keys:h,programId:n,data:Buffer.from([...Le.initialize,...I])})}function Ji(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f){let b=U([C("lpAmount"),C("amountMaxA"),C("amountMaxB")]),y=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return Ts.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:f.toString()}),b.encode({lpAmount:d,amountMaxA:p,amountMaxB:f},P),new Ne({keys:y,programId:n,data:Buffer.from([...Le.deposit,...P])})}function $i(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f){let b=U([C("lpAmount"),C("amountMinA"),C("amountMinB")]),y=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Vt,isSigner:!1,isWritable:!1}],P=Buffer.alloc(b.span);return b.encode({lpAmount:d,amountMinA:p,amountMinB:f},P),new Ne({keys:y,programId:n,data:Buffer.from([...Le.withdraw,...P])})}function er(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f,b){let y=U([C("amountIn"),C("amounOutMin")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],w=Buffer.alloc(y.span);return y.encode({amountIn:f,amounOutMin:b},w),new Ne({keys:P,programId:n,data:Buffer.from([...Le.swapBaseInput,...w])})}function tr(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f,b){let y=U([C("amountInMax"),C("amountOut")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],w=Buffer.alloc(y.span);return y.encode({amountInMax:f,amountOut:b},w),new Ne({keys:P,programId:n,data:Buffer.from([...Le.swapBaseOutput,...w])})}async function nr(n){var y;let{ownerInfo:e,poolInfo:t,poolKeys:i,feeNftOwner:o,getEphemeralSigners:r}=n,s=[],[a,c]=[new St(t.id),new St(t.lpMint.address)],u;if(r)u=new St((await r(1))[0]);else{let P=ks.generate();s.push(P),u=P.publicKey}let{publicKey:l}=de(o,u,Ke),{publicKey:m}=Dn(u),{publicKey:d}=Bt(n.lockProgram,u),{publicKey:p}=de(e.wallet,c,Ke),{publicKey:f}=de(n.lockAuthProgram,c,Ke),b=hs({programId:n.lockProgram,auth:n.lockAuthProgram,payer:e.feePayer,liquidityOwner:e.wallet,nftOwner:o,nftMint:u,nftAccount:l,poolId:a,lockPda:d,mintLp:c,userLpVault:p,lockLpVault:f,poolVaultA:new St(i.vault.A),poolVaultB:new St(i.vault.B),metadataAccount:m,lpAmount:n.lpAmount,withMetadata:(y=n.withMetadata)!=null?y:!0});return{address:{nftMint:u,nftAccount:l,metadataAccount:m,lockPda:d,userLpVault:p,lockLpVault:f},instructions:[b],signers:s,instructionTypes:[ie.CpmmLockLp],lookupTableAddress:[]}}function hs({programId:n,auth:e,payer:t,liquidityOwner:i,nftOwner:o,nftMint:r,nftAccount:s,poolId:a,lockPda:c,mintLp:u,userLpVault:l,lockLpVault:m,poolVaultA:d,poolVaultB:p,metadataAccount:f,lpAmount:b,withMetadata:y}){let P=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Dt,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:nn,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1}],w=U([C("lpAmount"),Ve("withMetadata")]),A=Buffer.alloc(w.span);w.encode({lpAmount:b,withMetadata:y},A);let k=Buffer.from([...Le.lockCpLiquidity,...A]);return new Ne({keys:P,programId:n,data:k})}function Xn({programId:n,nftOwner:e,auth:t,nftAccount:i,lockPda:o,poolId:r,mintLp:s,userVaultA:a,userVaultB:c,poolVaultA:u,poolVaultB:l,mintA:m,mintB:d,lockLpVault:p,lpFeeAmount:f,cpmmProgram:b,cpmmAuthProgram:y}){let P=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:b!=null?b:bt,isSigner:!1,isWritable:!1},{pubkey:y!=null?y:Ci,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:Vt,isSigner:!1,isWritable:!1}],w=U([C("lpFeeAmount")]),A=Buffer.alloc(w.span);w.encode({lpFeeAmount:f},A);let k=Buffer.from([...Le.collectCpFee,...A]);return new Ne({keys:P,programId:n,data:k})}function Hn(n,e,t,i,o,r,s,a,c,u,l,m,d){let p=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:nn,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1}];return new Ne({keys:p,programId:n,data:Le.collectCreatorFee})}function ir(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f,b,y,P,w,A,k,B,h){let I=U([C("amountA"),C("amountB"),C("openTime"),X("feeOn")]),x=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:nn,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1}],N=Buffer.alloc(I.span);return I.encode({amountA:A,amountB:k,openTime:B,feeOn:h},N),new Ne({keys:x,programId:n,data:Buffer.from([...Le.initializeWithPermission,...N])})}var rr=U([oe(8),X("bump"),Ve("disableCreatePool"),Ge("index"),C("tradeFeeRate"),C("protocolFeeRate"),C("fundFeeRate"),C("createPoolFee"),_("protocolOwner"),_("fundOwner"),C("creatorFeeRate"),H(C(),15)]),or=U([oe(8),_("configId"),_("poolCreator"),_("vaultA"),_("vaultB"),_("mintLp"),_("mintA"),_("mintB"),_("mintProgramA"),_("mintProgramB"),_("observationId"),X("bump"),X("status"),X("lpDecimals"),X("mintDecimalA"),X("mintDecimalB"),C("lpAmount"),C("protocolFeesMintA"),C("protocolFeesMintB"),C("fundFeesMintA"),C("fundFeesMintB"),C("openTime"),C("epoch"),X("feeOn"),Ve("enableCreatorFee"),H(X(),6),C("creatorFeesMintA"),C("creatorFeesMintB"),H(C(),28)]),Lb=U([oe(8),_("configId"),H(C(),30)]);var zn=class extends $e{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let i=await We(this.scope.connection,e.map(m=>({pubkey:new g(m)}))),o={},r=new Set,s=[];for(let m=0;m<e.length;m++){let d=i[m];if(d.accountInfo===null)throw Error("fetch pool info error: "+String(e[m]));let p=or.decode(d.accountInfo.data);o[String(e[m])]=z(G({},p),{programId:d.accountInfo.owner}),r.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...r],d=await We(this.scope.connection,m.map(p=>({pubkey:new g(p)})));for(let p=0;p<m.length;p++){let f=d[p].accountInfo;if(f===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=rr.decode(f.data)}}let c={},u=await We(this.scope.connection,s.map(m=>({pubkey:new g(m)})));for(let m=0;m<s.length;m++){let d=u[m].accountInfo;if(d===null)throw Error("fetch vault info error: "+s[m]);c[String(s[m])]=new J(Bs.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(o)){let p=c[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA).sub(d.creatorFeesMintA),f=c[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB).sub(d.creatorFeesMintB);l[m]=z(G({},d),{baseReserve:p,quoteReserve:f,vaultAAmount:c[d.vaultA.toString()],vaultBAmount:c[d.vaultB.toString()],configInfo:a[d.configId.toString()],poolPrice:new te(f.toString()).div(new te(10).pow(d.mintDecimalB)).div(new te(p.toString()).div(new te(10).pow(d.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((i,o)=>{var c,u,l,m;let r=e[o],[s,a]=[r.mintA.toBase58(),r.mintB.toBase58()];return z(G({},i),{[o]:z(G({},r),{id:new g(o),configInfo:r.configInfo,version:7,authority:$t(r.programId).publicKey,mintA:Ue({address:s,decimals:r.mintDecimalA,programId:r.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[s])!=null&&c.feeConfig?tt((u=t[s])==null?void 0:u.feeConfig):void 0}}),mintB:Ue({address:a,decimals:r.mintDecimalB,programId:r.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?tt((m=t[a])==null?void 0:m.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),i=await dn({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),o=Ue({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:i[t.mintA.toBase58()].feeConfig?tt(i[t.mintA.toBase58()].feeConfig):void 0}}),r=Ue({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:i[t.mintB.toBase58()].feeConfig?tt(i[t.mintB.toBase58()].feeConfig):void 0}}),s=Ue({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:ae.toBase58()}),a={id:t.configId.toBase58(),index:t.configInfo.index,protocolFeeRate:t.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:t.configInfo.tradeFeeRate.toNumber(),fundFeeRate:t.configInfo.fundFeeRate.toNumber(),createPoolFee:t.configInfo.createPoolFee.toString()},c={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};return{poolInfo:{programId:t.programId.toBase58(),id:e,type:"Standard",lpMint:s,lpPrice:0,lpAmount:t.lpAmount.toNumber(),config:a,mintA:o,mintB:r,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new te(t.vaultAAmount.toString()).div(10**o.decimals).toNumber(),mintAmountB:new te(t.vaultBAmount.toString()).div(10**r.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,burnPercent:0,day:c,week:c,month:c,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:o,mintB:r,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:$t(t.programId).publicKey.toBase58(),mintLp:s,config:a,observationId:ht(t.programId,new g(e)).publicKey.toBase58()},rpcData:t}}async createPool(f){var b=f,{poolId:e,programId:t,poolFeeAccount:i,startTime:o,ownerInfo:r,associatedOnly:s=!1,checkCreateATAOwner:a=!1,txVersion:c,feeConfig:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d}=b,p=we(b,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer"]);var K,$,ue;let y=r.feePayer||((K=this.scope.owner)==null?void 0:K.publicKey),P=new J(new g(p.mintA.address).toBuffer()).lte(new J(new g(p.mintB.address).toBuffer())),[w,A]=P?[p.mintA,p.mintB]:[p.mintB,p.mintA],[k,B]=P?[p.mintAAmount,p.mintBAmount]:[p.mintBAmount,p.mintAAmount],h=r.useSOLBalance&&w.address===it.toBase58(),I=r.useSOLBalance&&A.address===it.toBase58(),[x,N]=[new g(w.address),new g(A.address)],L=this.createTxBuilder(d),{account:S,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:x,tokenProgram:w.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:y,amount:k}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:s,checkCreateATAOwner:a});L.addInstruction(R||{});let{account:D,instructionParams:q}=await this.scope.account.getOrCreateTokenAccount({mint:new g(A.address),tokenProgram:A.programId,owner:this.scope.ownerPubKey,createInfo:I?{payer:y,amount:B}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:s,checkCreateATAOwner:a});if(L.addInstruction(q||{}),S===void 0||D===void 0)throw Error("you don't has some token account");let v=Fn({poolId:e,programId:t,configId:new g(u.id),mintA:x,mintB:N});return L.addInstruction({instructions:[Qi(t,this.scope.ownerPubKey,new g(u.id),v.authority,v.poolId,x,N,v.lpMint,S,D,de(this.scope.ownerPubKey,v.lpMint).publicKey,v.vaultA,v.vaultB,i,new g(($=w.programId)!=null?$:ae),new g((ue=A.programId)!=null?ue:ae),v.observationId,k,B,o)],instructionTypes:[ie.CpmmCreatePool]}),L.addCustomComputeBudget(l),L.addTipInstruction(m),L.versionBuild({txVersion:c,extInfo:{address:z(G({},v),{mintA:w,mintB:A,programId:t,poolFeeAccount:i,feeConfig:u})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:i,inputAmount:o,baseIn:r,slippage:s,computeResult:a,computeBudgetConfig:c,txTipConfig:u,config:l,txVersion:m,feePayer:d}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),o.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:o.toString()});let{account:p}=this.scope,{bypassAssociatedCheck:f,checkCreateATAOwner:b}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},l),y=a?void 0:await this.getRpcPoolInfo(t.id),{liquidity:P,inputAmountFee:w,anotherAmount:A}=a||this.computePairAmount({poolInfo:z(G({},t),{lpAmount:new te(y.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:y.baseReserve,quoteReserve:y.quoteReserve,slippage:new pe(0),baseIn:r,epochInfo:await this.scope.fetchEpochInfo(),amount:new te(o.toString()).div(10**(r?t.mintA.decimals:t.mintB.decimals))}),k=A.amount,B=t.mintA.address===it.toString(),h=t.mintB.address===it.toString(),I=this.createTxBuilder(d),[x,N]=[new g(t.mintA.address),new g(t.mintB.address)],{account:L,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new g(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:B||(r?o:k).isZero()?{payer:this.scope.ownerPubKey,amount:r?o:k}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:!1,checkCreateATAOwner:b});I.addInstruction(S||{});let{account:R,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new g(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||(r?k:o).isZero()?{payer:this.scope.ownerPubKey,amount:r?k:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:b});I.addInstruction(D||{}),!L&&!R&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",p.tokenAccounts);let q=await p.getCreatedTokenAccount({mint:new g(t.lpMint.address)}),Pe=await p.handleTokenAccount({side:"out",amount:0,mint:new g(t.lpMint.address),tokenAccount:q,bypassAssociatedCheck:f,checkCreateATAOwner:b}),{tokenAccount:v}=Pe,K=we(Pe,["tokenAccount"]);I.addInstruction(K);let $=i!=null?i:await this.getCpmmPoolKeys(t.id),ue=new pe(new J(1)).sub(s);return I.addInstruction({instructions:[Ji(new g(t.programId),this.scope.ownerPubKey,new g($.authority),new g(t.id),v,L,R,new g($.vault.A),new g($.vault.B),x,N,new g(t.lpMint.address),a?a==null?void 0:a.liquidity:ue.mul(P).quotient,r?w.amount:k,r?k:w.amount)],instructionTypes:[ie.CpmmAddLiquidity],lookupTableAddress:$.lookupTableAccount?[$.lookupTableAccount]:[]}),I.addCustomComputeBudget(c),I.addTipInstruction(u),I.versionBuild({txVersion:m})}async withdrawLiquidity(e){var K,$;let{poolInfo:t,poolKeys:i,lpAmount:o,slippage:r,computeBudgetConfig:s,txTipConfig:a,txVersion:c,feePayer:u,closeWsol:l=!0}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let m=new pe(new J(1)).sub(r),d=await this.getRpcPoolInfo(t.id),[p,f]=[m.mul(o.mul(d.baseReserve).div(d.lpAmount)).quotient,m.mul(o.mul(d.quoteReserve).div(d.lpAmount)).quotient],b=await this.scope.fetchEpochInfo(),[y,P]=[he(p,t.mintA.extensions.feeConfig,b,!1),he(f,t.mintB.extensions.feeConfig,b,!1)],{account:w}=this.scope,A=this.createTxBuilder(u),[k,B]=[new g(t.mintA.address),new g(t.mintB.address)],h=k.equals(le),I=B.equals(le),x,N,{account:L,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new g(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(h&&l),associatedOnly:!h,checkCreateATAOwner:!1});x=L,S&&A.addInstruction(S);let{account:R,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new g(t.mintB.address),notUseTokenAccount:I,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(I&&l),associatedOnly:!I,checkCreateATAOwner:!1});N=R,D&&A.addInstruction(D),(!x||!N)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",w.tokenAccounts);let q=await w.getCreatedTokenAccount({mint:new g(t.lpMint.address)});q||this.logAndCreateError("cannot found lp token account","tokenAccounts",w.tokenAccounts);let v=i!=null?i:await this.getCpmmPoolKeys(t.id);return A.addInstruction({instructions:[$i(new g(t.programId),this.scope.ownerPubKey,new g(v.authority),new g(t.id),q,x,N,new g(v.vault.A),new g(v.vault.B),k,B,new g(t.lpMint.address),o,p.sub((K=y.fee)!=null?K:new J(0)),f.sub(($=P.fee)!=null?$:new J(0)))],instructionTypes:[ie.CpmmWithdrawLiquidity],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),A.addCustomComputeBudget(s),A.addTipInstruction(a),A.versionBuild({txVersion:c})}async swap(e){var S,R,D,q,v,K;let{poolInfo:t,poolKeys:i,baseIn:o,fixedOut:r,inputAmount:s,swapResult:a,slippage:c=0,config:u,computeBudgetConfig:l,txTipConfig:m,txVersion:d,feePayer:p}=e,{bypassAssociatedCheck:f,checkCreateATAOwner:b,associatedOnly:y}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},u),P=this.createTxBuilder(p),[w,A]=[new g(t.mintA.address),new g(t.mintB.address)];r?a.inputAmount=a.inputAmount.mul(new J((1+c)*1e4)).div(new J(1e4)):a.outputAmount=a.outputAmount.mul(new J((1-c)*1e4)).div(new J(1e4));let k=t.mintA.address===le.toBase58(),B=t.mintB.address===le.toBase58(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:w,tokenProgram:new g((S=t.mintA.programId)!=null?S:ae),owner:this.scope.ownerPubKey,createInfo:k||!o?{payer:p||this.scope.ownerPubKey,amount:o?a.inputAmount:0}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:y,checkCreateATAOwner:b});I&&P.addInstruction(I);let{account:x,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:A,tokenProgram:new g((R=t.mintB.programId)!=null?R:ae),owner:this.scope.ownerPubKey,createInfo:B||o?{payer:p||this.scope.ownerPubKey,amount:o?0:a.inputAmount}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:y,checkCreateATAOwner:b});N&&P.addInstruction(N),(!h||!x)&&this.logAndCreateError("user do not have token account",{mintA:t.mintA.symbol||t.mintA.address,mintB:t.mintB.symbol||t.mintB.address,mintATokenAcc:h,mintBTokenAcc:x,mintAUseSOLBalance:k,mintBUseSOLBalance:B,associatedOnly:y});let L=i!=null?i:await this.getCpmmPoolKeys(t.id);return P.addInstruction({instructions:[r?tr(new g(t.programId),this.scope.ownerPubKey,new g(L.authority),new g(L.config.id),new g(t.id),o?h:x,o?x:h,new g(L.vault[o?"A":"B"]),new g(L.vault[o?"B":"A"]),new g((v=t[o?"mintA":"mintB"].programId)!=null?v:ae),new g((K=t[o?"mintB":"mintA"].programId)!=null?K:ae),o?w:A,o?A:w,ht(new g(t.programId),new g(t.id)).publicKey,a.inputAmount,a.outputAmount):er(new g(t.programId),this.scope.ownerPubKey,new g(L.authority),new g(L.config.id),new g(t.id),o?h:x,o?x:h,new g(L.vault[o?"A":"B"]),new g(L.vault[o?"B":"A"]),new g((D=t[o?"mintA":"mintB"].programId)!=null?D:ae),new g((q=t[o?"mintB":"mintA"].programId)!=null?q:ae),o?w:A,o?A:w,ht(new g(t.programId),new g(t.id)).publicKey,s,a.outputAmount)],instructionTypes:[r?ie.CpmmSwapBaseOut:ie.ClmmSwapBaseIn]}),P.addCustomComputeBudget(l),P.addTipInstruction(m),P.versionBuild({txVersion:d})}async lockLp(e){var d,p,f,b,y;let{poolInfo:t,lpAmount:i,computeBudgetConfig:o,txTipConfig:r,txVersion:s,feePayer:a,feeNftOwner:c}=e;i.isZero()&&this.logAndCreateError("lpAmount must greater than zero",{lpAmount:i.toString()});let u=this.createTxBuilder(a),l=(d=e.poolKeys)!=null?d:await this.getCpmmPoolKeys(t.id),m=await nr({poolInfo:t,poolKeys:l,ownerInfo:{wallet:this.scope.ownerPubKey,feePayer:(p=e.feePayer)!=null?p:this.scope.ownerPubKey},feeNftOwner:c!=null?c:this.scope.ownerPubKey,lockProgram:(f=e.programId)!=null?f:Ht,lockAuthProgram:(b=e.authProgram)!=null?b:zt,lpAmount:i,withMetadata:(y=e.withMetadata)!=null?y:!0,getEphemeralSigners:e.getEphemeralSigners});return u.addInstruction(m),u.addCustomComputeBudget(o),u.addTipInstruction(r),u.versionBuild({txVersion:s,extInfo:m.address})}async harvestLockLp(e){var R;let{poolInfo:t,lpFeeAmount:i,nftMint:o,programId:r=Ht,authProgram:s=zt,cpmmProgram:a,computeBudgetConfig:c,txTipConfig:u,txVersion:l,closeWsol:m=!0}=e;i.isZero()&&this.logAndCreateError("lpFeeAmount must greater than zero",{lpAmount:i.toString()});let d=e.feePayer||this.scope.ownerPubKey,p=this.createTxBuilder(d),[f,b]=[new g(t.mintA.address),new g(t.mintB.address)],y=f.equals(le),P=b.equals(le),w,A,{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new g(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(y&&m),associatedOnly:!y,checkCreateATAOwner:!1});w=k,B&&p.addInstruction(B);let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new g(t.mintB.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(P&&m),associatedOnly:!P,checkCreateATAOwner:!1});A=h,I&&p.addInstruction(I),(!w||!A)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:w,tokenAccountB:A});let x=(R=e.poolKeys)!=null?R:await this.getCpmmPoolKeys(t.id),{publicKey:N}=de(d,o,ae),{publicKey:L}=Bt(r,o),{publicKey:S}=de(s,new g(t.lpMint.address),ae);return p.addInstruction({instructions:[Xn({programId:r,nftOwner:this.scope.ownerPubKey,auth:s,nftMint:o,nftAccount:N,lockPda:L,poolId:new g(t.id),mintLp:new g(x.mintLp.address),userVaultA:w,userVaultB:A,poolVaultA:new g(x.vault.A),poolVaultB:new g(x.vault.B),mintA:f,mintB:b,lockLpVault:S,lpFeeAmount:i,cpmmProgram:a==null?void 0:a.programId,cpmmAuthProgram:a==null?void 0:a.authProgram})],instructionTypes:[ie.CpmmCollectLockFee]}),p.addCustomComputeBudget(c),p.addTipInstruction(u),p.versionBuild({txVersion:l})}async harvestMultiLockLp(e){var d;let{lockInfo:t,programId:i=Ht,authProgram:o=zt,cpmmProgram:r,computeBudgetConfig:s,txVersion:a,closeWsol:c=!0}=e,u=e.feePayer||this.scope.ownerPubKey,l=this.createTxBuilder(u),m={};for(let p of t){let{poolInfo:f,lpFeeAmount:b,nftMint:y}=p;if(b.isZero())continue;let[P,w]=[new g(f.mintA.address),new g(f.mintB.address)],A=P.equals(le),k=w.equals(le),B=m[f.mintA.address],h=m[f.mintB.address];if(!B)if(A){let{account:S,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintA.programId,mint:new g(f.mintA.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});B=S,R&&l.addInstruction(R),m[f.mintA.address]=S}else{let S=new g(f.mintA.address);B=this.scope.account.getAssociatedTokenAccount(S,new g(f.mintA.programId)),l.addInstruction({instructions:[rt(this.scope.ownerPubKey,B,this.scope.ownerPubKey,S,new g(f.mintA.programId))]}),m[f.mintA.address]=B}if(!h)if(k){let{account:S,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintB.programId,mint:new g(f.mintB.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});h=S,R&&l.addInstruction(R),m[f.mintB.address]=S}else{let S=new g(f.mintB.address);h=this.scope.account.getAssociatedTokenAccount(S,new g(f.mintB.programId)),l.addInstruction({instructions:[rt(this.scope.ownerPubKey,h,this.scope.ownerPubKey,S,new g(f.mintB.programId))]}),m[f.mintB.address]=h}(!B||!h)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:B,tokenAccountB:h});let I=(d=p.poolKeys)!=null?d:await this.getCpmmPoolKeys(f.id),{publicKey:x}=de(u,y,ae),{publicKey:N}=Bt(i,y),{publicKey:L}=de(o,new g(f.lpMint.address),ae);l.addInstruction({instructions:[Xn({programId:i,nftOwner:this.scope.ownerPubKey,auth:o,nftMint:y,nftAccount:x,lockPda:N,poolId:new g(f.id),mintLp:new g(I.mintLp.address),userVaultA:B,userVaultB:h,poolVaultA:new g(I.vault.A),poolVaultB:new g(I.vault.B),mintA:P,mintB:w,lockLpVault:L,lpFeeAmount:b,cpmmProgram:r==null?void 0:r.programId,cpmmAuthProgram:r==null?void 0:r.authProgram})],instructionTypes:[ie.CpmmCollectLockFee]})}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:s}):l.sizeCheckBuild({computeBudgetConfig:s})}async createPoolWithPermission(b){var y=b,{poolId:e,programId:t,poolFeeAccount:i,startTime:o,ownerInfo:r,associatedOnly:s=!1,checkCreateATAOwner:a=!1,txVersion:c,feeConfig:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d,feeOn:p}=y,f=we(y,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer","feeOn"]);var $,ue,Pe;console.log("***this method only available for wallet with permissions***");let P=r.feePayer||(($=this.scope.owner)==null?void 0:$.publicKey),w=new J(new g(f.mintA.address).toBuffer()).lte(new J(new g(f.mintB.address).toBuffer())),[A,k]=w?[f.mintA,f.mintB]:[f.mintB,f.mintA],[B,h]=w?[f.mintAAmount,f.mintBAmount]:[f.mintBAmount,f.mintAAmount],I=r.useSOLBalance&&A.address===it.toBase58(),x=r.useSOLBalance&&k.address===it.toBase58(),[N,L]=[new g(A.address),new g(k.address)],S=this.createTxBuilder(d),{account:R,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({mint:N,tokenProgram:A.programId,owner:this.scope.ownerPubKey,createInfo:I?{payer:P,amount:B}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:s,checkCreateATAOwner:a});S.addInstruction(D||{});let{account:q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({mint:new g(k.address),tokenProgram:k.programId,owner:this.scope.ownerPubKey,createInfo:x?{payer:P,amount:h}:void 0,notUseTokenAccount:x,skipCloseAccount:!x,associatedOnly:x?!1:s,checkCreateATAOwner:a});if(S.addInstruction(v||{}),R===void 0||q===void 0)throw Error("you don't has some token account");let K=Fn({poolId:e,programId:t,configId:new g(u.id),mintA:N,mintB:L});return S.addInstruction({instructions:[ir(t,this.scope.ownerPubKey,this.scope.ownerPubKey,new g(u.id),K.authority,K.poolId,N,L,K.lpMint,R,q,de(this.scope.ownerPubKey,K.lpMint).publicKey,K.vaultA,K.vaultB,i,new g((ue=A.programId)!=null?ue:ae),new g((Pe=k.programId)!=null?Pe:ae),K.observationId,Vi(t,this.scope.ownerPubKey).publicKey,B,h,o,p)],instructionTypes:[ie.CpmmCreatePool]}),S.addCustomComputeBudget(l),S.addTipInstruction(m),S.versionBuild({txVersion:c,extInfo:{address:z(G({},K),{mintA:A,mintB:k,programId:t,poolFeeAccount:i,feeConfig:u})}})}async collectCreatorFees({poolInfo:e,poolKeys:t,programId:i=bt,txVersion:o,computeBudgetConfig:r,txTipConfig:s,feePayer:a}){let c=a||this.scope.ownerPubKey,u=this.createTxBuilder(c),l=t!=null?t:await this.getCpmmPoolKeys(e.id),[m,d,p,f]=[new g(e.mintA.address),new g(e.mintB.address),new g(e.mintA.programId),new g(e.mintB.programId)],b=this.scope.account.getAssociatedTokenAccount(m,p),y=this.scope.account.getAssociatedTokenAccount(d,f);return u.addInstruction({instructions:[rt(this.scope.ownerPubKey,b,this.scope.ownerPubKey,m,new g(e.mintA.programId)),rt(this.scope.ownerPubKey,y,this.scope.ownerPubKey,d,new g(e.mintB.programId))]}),u.addInstruction({instructions:[Hn(i,this.scope.ownerPubKey,new g(l.authority),new g(l.id),new g(l.config.id),new g(l.vault.A),new g(l.vault.B),m,d,b,y,p,f)],instructionTypes:[]}),u.addCustomComputeBudget(r),u.addTipInstruction(s),u.versionBuild({txVersion:o})}async collectMultiCreatorFees({poolInfoList:e,poolKeyList:t,programId:i=bt,txVersion:o,computeBudgetConfig:r,feePayer:s}){let a=s||this.scope.ownerPubKey,c=this.createTxBuilder(a),u={},l=t!=null?t:[];if(!l.length){let d=e.map(y=>y.id),p=95,f=[];for(let y=0;y<d.length;y+=p)f.push(d.slice(y,y+p));l=(await Promise.all(f.map(y=>this.scope.api.fetchPoolKeysById({idList:y})))).flat()}let m=l.reduce((d,p)=>z(G({},d),{[p.id]:p}),{});for(let d of e){let p=m[d.id]||await this.getCpmmPoolKeys(d.id),[f,b,y,P]=[new g(d.mintA.address),new g(d.mintB.address),new g(d.mintA.programId),new g(d.mintB.programId)],w=u[d.mintA.address]||this.scope.account.getAssociatedTokenAccount(f,y),A=u[d.mintB.address]||this.scope.account.getAssociatedTokenAccount(b,P);u[d.mintA.address]||c.addInstruction({instructions:[rt(this.scope.ownerPubKey,w,this.scope.ownerPubKey,f,y)]}),u[d.mintB.address]||c.addInstruction({instructions:[rt(this.scope.ownerPubKey,A,this.scope.ownerPubKey,b,P)]}),u[d.mintA.address]=w,u[d.mintB.address]=A,c.addInstruction({instructions:[Hn(i,this.scope.ownerPubKey,new g(p.authority),new g(p.id),new g(p.config.id),new g(p.vault.A),new g(p.vault.B),f,b,w,A,y,P)],instructionTypes:[]})}return o===0?c.sizeCheckBuildV0({computeBudgetConfig:r}):c.sizeCheckBuild({computeBudgetConfig:r})}computeSwapAmount({pool:e,amountIn:t,outputMint:i,slippage:o,swapBaseIn:r=!0}){let s=i.toString()===e.mintB.address,a=e.feeOn===0||e.feeOn===2,c=r?Tt.swapBaseInput(t,s?e.baseReserve:e.quoteReserve,s?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate,e.configInfo.creatorFeeRate,e.configInfo.protocolFeeRate,e.configInfo.fundFeeRate,a):Tt.swapBaseOutput(t,s?e.baseReserve:e.quoteReserve,s?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate,e.configInfo.creatorFeeRate,e.configInfo.protocolFeeRate,e.configInfo.fundFeeRate,a),u=new te(c.outputAmount.toString()).div(c.inputAmount.toString()),l=c.outputAmount.mul(new J((1-o)*1e4)).div(new J(1e4));return{allTrade:c.inputAmount.eq(t),amountIn:t,amountOut:c.outputAmount,minAmountOut:l,executionPrice:u,fee:c.tradeFee,priceImpact:e.poolPrice.sub(u).div(e.poolPrice)}}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:i,amount:o,slippage:r,epochInfo:s,baseIn:a}){var k,B,h,I,x,N,L,S,R;let c=1-Number(r.toSignificant())/100,u=new J(new te(o).mul(10**e[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),l=he(u,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=u.sub((k=l.fee)!=null?k:new J(0)),d=new J(new te(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,te.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",i.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",u.toString(),"amountInFee:",(h=(B=l.fee)==null?void 0:B.toString())!=null?h:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${r.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let f=m.mul(d).div(p==="base"?t:i),b={amount:kn,fee:void 0,expirationTime:void 0};if(!m.isZero()){let D=Is(f,t,i,d);this.logDebug("lpAmountData:",{amountA:D.amountA.toString(),amountB:D.amountB.toString()}),b=he(D[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let y=new pe(new J(1)).add(r),P=new pe(new J(1)).sub(r),w=he(y.mul(b.amount.sub((I=b.fee)!=null?I:new J(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0),A=he(P.mul(b.amount.sub((x=b.fee)!=null?x:new J(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",b.amount.toString(),"anotherAmountFee:",(L=(N=b.fee)==null?void 0:N.toString())!=null?L:0,"maxAnotherAmount:",w.amount.toString(),"maxAnotherAmountFee:",(R=(S=w.fee)==null?void 0:S.toString())!=null?R:0),{inputAmountFee:l,anotherAmount:b,maxAnotherAmount:w,minAnotherAmount:A,liquidity:f}}};function Is(n,e,t,i){let o=n.mul(e).div(i);!o.isZero()&&!n.mul(e).mod(i).isZero()&&(o=o.add(new J(1)));let r=n.mul(t).div(i);return!r.isZero()&&!n.mul(t).mod(i).isZero()&&(r=r.add(new J(1))),{amountA:o,amountB:r}}export{zn as default};
1
+ var ar=Object.defineProperty,ur=Object.defineProperties;var cr=Object.getOwnPropertyDescriptors;var St=Object.getOwnPropertySymbols;var jn=Object.prototype.hasOwnProperty,Qn=Object.prototype.propertyIsEnumerable;var Yn=(n,e,t)=>e in n?ar(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,G=(n,e)=>{for(var t in e||(e={}))jn.call(e,t)&&Yn(n,t,e[t]);if(St)for(var t of St(e))Qn.call(e,t)&&Yn(n,t,e[t]);return n},z=(n,e)=>ur(n,cr(e));var we=(n,e)=>{var t={};for(var i in n)jn.call(n,i)&&e.indexOf(i)<0&&(t[i]=n[i]);if(n!=null&&St)for(var i of St(n))e.indexOf(i)<0&&Qn.call(n,i)&&(t[i]=n[i]);return t};import{PublicKey as g}from"@solana/web3.js";import{AccountLayout as Bs,NATIVE_MINT as it,TOKEN_PROGRAM_ID as ae,createAssociatedTokenAccountIdempotentInstruction as nn}from"@solana/spl-token";import Be from"bn.js";var Xe=9e15,Fe=1e9,rn="0123456789abcdef",Lt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Rt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",on={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Xe,maxE:Xe,crypto:!1},ti,xe,W=!0,Ot="[DecimalError] ",Oe=Ot+"Invalid argument: ",ni=Ot+"Precision limit exceeded",ii=Ot+"crypto unavailable",ri="[object Decimal]",se=Math.floor,ee=Math.pow,lr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,mr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,dr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,oi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ye=1e7,V=7,pr=9007199254740991,fr=Lt.length-1,sn=Rt.length-1,T={toStringTag:ri};T.absoluteValue=T.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),F(n)};T.ceil=function(){return F(new this.constructor(this),this.e+1,2)};T.clampedTo=T.clamp=function(n,e){var t,i=this,o=i.constructor;if(n=new o(n),e=new o(e),!n.s||!e.s)return new o(NaN);if(n.gt(e))throw Error(Oe+e);return t=i.cmp(n),t<0?n:i.cmp(e)>0?e:new o(i)};T.comparedTo=T.cmp=function(n){var e,t,i,o,r=this,s=r.d,a=(n=new r.constructor(n)).d,c=r.s,u=n.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(r.e!==n.e)return r.e>n.e^c<0?1:-1;for(i=s.length,o=a.length,e=0,t=i<o?i:o;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return i===o?0:i>o^c<0?1:-1};T.cosine=T.cos=function(){var n,e,t=this,i=t.constructor;return t.d?t.d[0]?(n=i.precision,e=i.rounding,i.precision=n+Math.max(t.e,t.sd())+V,i.rounding=1,t=br(i,li(i,t)),i.precision=n,i.rounding=e,F(xe==2||xe==3?t.neg():t,n,e,!0)):new i(1):new i(NaN)};T.cubeRoot=T.cbrt=function(){var n,e,t,i,o,r,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(W=!1,r=l.s*ee(l.s*l,1/3),!r||Math.abs(r)==1/0?(t=re(l.d),n=l.e,(r=(n-t.length+1)%3)&&(t+=r==1||r==-2?"0":"00"),r=ee(t,1/3),n=se((n+1)/3)-(n%3==(n<0?-1:2)),r==1/0?t="5e"+n:(t=r.toExponential(),t=t.slice(0,t.indexOf("e")+1)+n),i=new m(t),i.s=l.s):i=new m(r.toString()),s=(n=m.precision)+3;;)if(a=i,c=a.times(a).times(a),u=c.plus(l),i=Z(u.plus(l).times(a),u.plus(c),s+2,1),re(a.d).slice(0,s)===(t=re(i.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!o&&t=="4999"){if(!o&&(F(a,n+1,0),a.times(a).times(a).eq(l))){i=a;break}s+=4,o=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(F(i,n+1,1),e=!i.times(i).times(i).eq(l));break}return W=!0,F(i,n,m.rounding,e)};T.decimalPlaces=T.dp=function(){var n,e=this.d,t=NaN;if(e){if(n=e.length-1,t=(n-se(this.e/V))*V,n=e[n],n)for(;n%10==0;n/=10)t--;t<0&&(t=0)}return t};T.dividedBy=T.div=function(n){return Z(this,new this.constructor(n))};T.dividedToIntegerBy=T.divToInt=function(n){var e=this,t=e.constructor;return F(Z(e,new t(n),0,1,1),t.precision,t.rounding)};T.equals=T.eq=function(n){return this.cmp(n)===0};T.floor=function(){return F(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(n){return this.cmp(n)>0};T.greaterThanOrEqualTo=T.gte=function(n){var e=this.cmp(n);return e==1||e===0};T.hyperbolicCosine=T.cosh=function(){var n,e,t,i,o,r=this,s=r.constructor,a=new s(1);if(!r.isFinite())return new s(r.s?1/0:NaN);if(r.isZero())return a;t=s.precision,i=s.rounding,s.precision=t+Math.max(r.e,r.sd())+4,s.rounding=1,o=r.d.length,o<32?(n=Math.ceil(o/3),e=(1/Et(4,n)).toString()):(n=16,e="2.3283064365386962890625e-10"),r=He(s,1,r.times(e),new s(1),!0);for(var c,u=n,l=new s(8);u--;)c=r.times(r),r=a.minus(c.times(l.minus(c.times(l))));return F(r,s.precision=t,s.rounding=i,!0)};T.hyperbolicSine=T.sinh=function(){var n,e,t,i,o=this,r=o.constructor;if(!o.isFinite()||o.isZero())return new r(o);if(e=r.precision,t=r.rounding,r.precision=e+Math.max(o.e,o.sd())+4,r.rounding=1,i=o.d.length,i<3)o=He(r,2,o,o,!0);else{n=1.4*Math.sqrt(i),n=n>16?16:n|0,o=o.times(1/Et(5,n)),o=He(r,2,o,o,!0);for(var s,a=new r(5),c=new r(16),u=new r(20);n--;)s=o.times(o),o=o.times(a.plus(s.times(c.times(s).plus(u))))}return r.precision=e,r.rounding=t,F(o,e,t,!0)};T.hyperbolicTangent=T.tanh=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+7,i.rounding=1,Z(t.sinh(),t.cosh(),i.precision=n,i.rounding=e)):new i(t.s)};T.inverseCosine=T.acos=function(){var n=this,e=n.constructor,t=n.abs().cmp(1),i=e.precision,o=e.rounding;return t!==-1?t===0?n.isNeg()?Ae(e,i,o):new e(0):new e(NaN):n.isZero()?Ae(e,i+4,o).times(.5):(e.precision=i+6,e.rounding=1,n=new e(1).minus(n).div(n.plus(1)).sqrt().atan(),e.precision=i,e.rounding=o,n.times(2))};T.inverseHyperbolicCosine=T.acosh=function(){var n,e,t=this,i=t.constructor;return t.lte(1)?new i(t.eq(1)?0:NaN):t.isFinite()?(n=i.precision,e=i.rounding,i.precision=n+Math.max(Math.abs(t.e),t.sd())+4,i.rounding=1,W=!1,t=t.times(t).minus(1).sqrt().plus(t),W=!0,i.precision=n,i.rounding=e,t.ln()):new i(t)};T.inverseHyperbolicSine=T.asinh=function(){var n,e,t=this,i=t.constructor;return!t.isFinite()||t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+2*Math.max(Math.abs(t.e),t.sd())+6,i.rounding=1,W=!1,t=t.times(t).plus(1).sqrt().plus(t),W=!0,i.precision=n,i.rounding=e,t.ln())};T.inverseHyperbolicTangent=T.atanh=function(){var n,e,t,i,o=this,r=o.constructor;return o.isFinite()?o.e>=0?new r(o.abs().eq(1)?o.s/0:o.isZero()?o:NaN):(n=r.precision,e=r.rounding,i=o.sd(),Math.max(i,n)<2*-o.e-1?F(new r(o),n,e,!0):(r.precision=t=i-o.e,o=Z(o.plus(1),new r(1).minus(o),t+n,1),r.precision=n+4,r.rounding=1,o=o.ln(),r.precision=n,r.rounding=e,o.times(.5))):new r(NaN)};T.inverseSine=T.asin=function(){var n,e,t,i,o=this,r=o.constructor;return o.isZero()?new r(o):(e=o.abs().cmp(1),t=r.precision,i=r.rounding,e!==-1?e===0?(n=Ae(r,t+4,i).times(.5),n.s=o.s,n):new r(NaN):(r.precision=t+6,r.rounding=1,o=o.div(new r(1).minus(o.times(o)).sqrt().plus(1)).atan(),r.precision=t,r.rounding=i,o.times(2)))};T.inverseTangent=T.atan=function(){var n,e,t,i,o,r,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=sn)return s=Ae(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=sn)return s=Ae(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/V+2|0),n=t;n;--n)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(W=!1,e=Math.ceil(a/V),i=1,c=u.times(u),s=new l(u),o=u;n!==-1;)if(o=o.times(c),r=s.minus(o.div(i+=2)),o=o.times(c),s=r.plus(o.div(i+=2)),s.d[e]!==void 0)for(n=e;s.d[n]===r.d[n]&&n--;);return t&&(s=s.times(2<<t-1)),W=!0,F(s,l.precision=m,l.rounding=d,!0)};T.isFinite=function(){return!!this.d};T.isInteger=T.isInt=function(){return!!this.d&&se(this.e/V)>this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(n){return this.cmp(n)<0};T.lessThanOrEqualTo=T.lte=function(n){return this.cmp(n)<1};T.logarithm=T.log=function(n){var e,t,i,o,r,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding,p=5;if(n==null)n=new l(10),e=!0;else{if(n=new l(n),t=n.d,n.s<0||!t||!t[0]||n.eq(1))return new l(NaN);e=n.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)r=!0;else{for(o=t[0];o%10===0;)o/=10;r=o!==1}if(W=!1,a=m+p,s=Me(u,a),i=e?Mt(l,a+10):Me(n,a),c=Z(s,i,a,1),rt(c.d,o=m,d))do if(a+=10,s=Me(u,a),i=e?Mt(l,a+10):Me(n,a),c=Z(s,i,a,1),!r){+re(c.d).slice(o+1,o+15)+1==1e14&&(c=F(c,m+1,0));break}while(rt(c.d,o+=10,d));return W=!0,F(c,m,d)};T.minus=T.sub=function(n){var e,t,i,o,r,s,a,c,u,l,m,d,p=this,f=p.constructor;if(n=new f(n),!p.d||!n.d)return!p.s||!n.s?n=new f(NaN):p.d?n.s=-n.s:n=new f(n.d||p.s!==n.s?p:NaN),n;if(p.s!=n.s)return n.s=-n.s,p.plus(n);if(u=p.d,d=n.d,a=f.precision,c=f.rounding,!u[0]||!d[0]){if(d[0])n.s=-n.s;else if(u[0])n=new f(p);else return new f(c===3?-0:0);return W?F(n,a,c):n}if(t=se(n.e/V),l=se(p.e/V),u=u.slice(),r=l-t,r){for(m=r<0,m?(e=u,r=-r,s=d.length):(e=d,t=l,s=u.length),i=Math.max(Math.ceil(a/V),s)+2,r>i&&(r=i,e.length=1),e.reverse(),i=r;i--;)e.push(0);e.reverse()}else{for(i=u.length,s=d.length,m=i<s,m&&(s=i),i=0;i<s;i++)if(u[i]!=d[i]){m=u[i]<d[i];break}r=0}for(m&&(e=u,u=d,d=e,n.s=-n.s),s=u.length,i=d.length-s;i>0;--i)u[s++]=0;for(i=d.length;i>r;){if(u[--i]<d[i]){for(o=i;o&&u[--o]===0;)u[o]=ye-1;--u[o],u[i]+=ye}u[i]-=d[i]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(n.d=u,n.e=Ft(u,t),W?F(n,a,c):n):new f(c===3?-0:0)};T.modulo=T.mod=function(n){var e,t=this,i=t.constructor;return n=new i(n),!t.d||!n.s||n.d&&!n.d[0]?new i(NaN):!n.d||t.d&&!t.d[0]?F(new i(t),i.precision,i.rounding):(W=!1,i.modulo==9?(e=Z(t,n.abs(),0,3,1),e.s*=n.s):e=Z(t,n,0,i.modulo,1),e=e.times(n),W=!0,t.minus(e))};T.naturalExponential=T.exp=function(){return an(this)};T.naturalLogarithm=T.ln=function(){return Me(this)};T.negated=T.neg=function(){var n=new this.constructor(this);return n.s=-n.s,F(n)};T.plus=T.add=function(n){var e,t,i,o,r,s,a,c,u,l,m=this,d=m.constructor;if(n=new d(n),!m.d||!n.d)return!m.s||!n.s?n=new d(NaN):m.d||(n=new d(n.d||m.s===n.s?m:NaN)),n;if(m.s!=n.s)return n.s=-n.s,m.minus(n);if(u=m.d,l=n.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(n=new d(m)),W?F(n,a,c):n;if(r=se(m.e/V),i=se(n.e/V),u=u.slice(),o=r-i,o){for(o<0?(t=u,o=-o,s=l.length):(t=l,i=r,s=u.length),r=Math.ceil(a/V),s=r>s?r+1:s+1,o>s&&(o=s,t.length=1),t.reverse();o--;)t.push(0);t.reverse()}for(s=u.length,o=l.length,s-o<0&&(o=s,t=l,l=u,u=t),e=0;o;)e=(u[--o]=u[o]+l[o]+e)/ye|0,u[o]%=ye;for(e&&(u.unshift(e),++i),s=u.length;u[--s]==0;)u.pop();return n.d=u,n.e=Ft(u,i),W?F(n,a,c):n};T.precision=T.sd=function(n){var e,t=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(Oe+n);return t.d?(e=si(t.d),n&&t.e+1>e&&(e=t.e+1)):e=NaN,e};T.round=function(){var n=this,e=n.constructor;return F(new e(n),n.e+1,e.rounding)};T.sine=T.sin=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+Math.max(t.e,t.sd())+V,i.rounding=1,t=gr(i,li(i,t)),i.precision=n,i.rounding=e,F(xe>2?t.neg():t,n,e,!0)):new i(NaN)};T.squareRoot=T.sqrt=function(){var n,e,t,i,o,r,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(W=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=re(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=se((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),i=new l(e)):i=new l(u.toString()),t=(c=l.precision)+3;;)if(r=i,i=r.plus(Z(s,r,t+2,1)).times(.5),re(r.d).slice(0,t)===(e=re(i.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!o&&e=="4999"){if(!o&&(F(r,c+1,0),r.times(r).eq(s))){i=r;break}t+=4,o=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(F(i,c+1,1),n=!i.times(i).eq(s));break}return W=!0,F(i,c,l.rounding,n)};T.tangent=T.tan=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+10,i.rounding=1,t=t.sin(),t.s=1,t=Z(t,new i(1).minus(t.times(t)).sqrt(),n+10,0),i.precision=n,i.rounding=e,F(xe==2||xe==4?t.neg():t,n,e,!0)):new i(NaN)};T.times=T.mul=function(n){var e,t,i,o,r,s,a,c,u,l=this,m=l.constructor,d=l.d,p=(n=new m(n)).d;if(n.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!n.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?n.s/0:n.s*0);for(t=se(l.e/V)+se(n.e/V),c=d.length,u=p.length,c<u&&(r=d,d=p,p=r,s=c,c=u,u=s),r=[],s=c+u,i=s;i--;)r.push(0);for(i=u;--i>=0;){for(e=0,o=c+i;o>i;)a=r[o]+p[i]*d[o-i-1]+e,r[o--]=a%ye|0,e=a/ye|0;r[o]=(r[o]+e)%ye|0}for(;!r[--s];)r.pop();return e?++t:r.shift(),n.d=r,n.e=Ft(r,t),W?F(n,m.precision,m.rounding):n};T.toBinary=function(n,e){return un(this,2,n,e)};T.toDecimalPlaces=T.toDP=function(n,e){var t=this,i=t.constructor;return t=new i(t),n===void 0?t:(ce(n,0,Fe),e===void 0?e=i.rounding:ce(e,0,8),F(t,n+t.e+1,e))};T.toExponential=function(n,e){var t,i=this,o=i.constructor;return n===void 0?t=ke(i,!0):(ce(n,0,Fe),e===void 0?e=o.rounding:ce(e,0,8),i=F(new o(i),n+1,e),t=ke(i,!0,n+1)),i.isNeg()&&!i.isZero()?"-"+t:t};T.toFixed=function(n,e){var t,i,o=this,r=o.constructor;return n===void 0?t=ke(o):(ce(n,0,Fe),e===void 0?e=r.rounding:ce(e,0,8),i=F(new r(o),n+o.e+1,e),t=ke(i,!1,n+i.e+1)),o.isNeg()&&!o.isZero()?"-"+t:t};T.toFraction=function(n){var e,t,i,o,r,s,a,c,u,l,m,d,p=this,f=p.d,b=p.constructor;if(!f)return new b(p);if(u=t=new b(1),i=c=new b(0),e=new b(i),r=e.e=si(f)-p.e-1,s=r%V,e.d[0]=ee(10,s<0?V+s:s),n==null)n=r>0?e:u;else{if(a=new b(n),!a.isInt()||a.lt(u))throw Error(Oe+a);n=a.gt(e)?r>0?e:u:a}for(W=!1,a=new b(re(f)),l=b.precision,b.precision=r=f.length*V*2;m=Z(a,e,0,1,1),o=t.plus(m.times(i)),o.cmp(n)!=1;)t=i,i=o,o=u,u=c.plus(m.times(o)),c=o,o=e,e=a.minus(m.times(o)),a=o;return o=Z(n.minus(t),i,0,1,1),c=c.plus(o.times(u)),t=t.plus(o.times(i)),c.s=u.s=p.s,d=Z(u,i,r,1).minus(p).abs().cmp(Z(c,t,r,1).minus(p).abs())<1?[u,i]:[c,t],b.precision=l,W=!0,d};T.toHexadecimal=T.toHex=function(n,e){return un(this,16,n,e)};T.toNearest=function(n,e){var t=this,i=t.constructor;if(t=new i(t),n==null){if(!t.d)return t;n=new i(1),e=i.rounding}else{if(n=new i(n),e===void 0?e=i.rounding:ce(e,0,8),!t.d)return n.s?t:n;if(!n.d)return n.s&&(n.s=t.s),n}return n.d[0]?(W=!1,t=Z(t,n,0,e,1).times(n),W=!0,F(t)):(n.s=t.s,t=n),t};T.toNumber=function(){return+this};T.toOctal=function(n,e){return un(this,8,n,e)};T.toPower=T.pow=function(n){var e,t,i,o,r,s,a=this,c=a.constructor,u=+(n=new c(n));if(!a.d||!n.d||!a.d[0]||!n.d[0])return new c(ee(+a,u));if(a=new c(a),a.eq(1))return a;if(i=c.precision,r=c.rounding,n.eq(1))return F(a,i,r);if(e=se(n.e/V),e>=n.d.length-1&&(t=u<0?-u:u)<=pr)return o=ai(c,a,t,i),n.s<0?new c(1).div(o):F(o,i,r);if(s=a.s,s<0){if(e<n.d.length-1)return new c(NaN);if((n.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=ee(+a,u),e=t==0||!isFinite(t)?se(u*(Math.log("0."+re(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(W=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),o=an(n.times(Me(a,i+t)),i),o.d&&(o=F(o,i+5,1),rt(o.d,i,r)&&(e=i+10,o=F(an(n.times(Me(a,e+t)),e),e+5,1),+re(o.d).slice(i+1,i+15)+1==1e14&&(o=F(o,i+1,0)))),o.s=s,W=!0,c.rounding=r,F(o,i,r))};T.toPrecision=function(n,e){var t,i=this,o=i.constructor;return n===void 0?t=ke(i,i.e<=o.toExpNeg||i.e>=o.toExpPos):(ce(n,1,Fe),e===void 0?e=o.rounding:ce(e,0,8),i=F(new o(i),n,e),t=ke(i,n<=i.e||i.e<=o.toExpNeg,n)),i.isNeg()&&!i.isZero()?"-"+t:t};T.toSignificantDigits=T.toSD=function(n,e){var t=this,i=t.constructor;return n===void 0?(n=i.precision,e=i.rounding):(ce(n,1,Fe),e===void 0?e=i.rounding:ce(e,0,8)),F(new i(t),n,e)};T.toString=function(){var n=this,e=n.constructor,t=ke(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()&&!n.isZero()?"-"+t:t};T.truncated=T.trunc=function(){return F(new this.constructor(this),this.e+1,1)};T.valueOf=T.toJSON=function(){var n=this,e=n.constructor,t=ke(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()?"-"+t:t};function re(n){var e,t,i,o=n.length-1,r="",s=n[0];if(o>0){for(r+=s,e=1;e<o;e++)i=n[e]+"",t=V-i.length,t&&(r+=Re(t)),r+=i;s=n[e],i=s+"",t=V-i.length,t&&(r+=Re(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return r+s}function ce(n,e,t){if(n!==~~n||n<e||n>t)throw Error(Oe+n)}function rt(n,e,t,i){var o,r,s,a;for(r=n[0];r>=10;r/=10)--e;return--e<0?(e+=V,o=0):(o=Math.ceil((e+1)/V),e%=V),r=ee(10,V-e),a=n[o]%r|0,i==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==r||t>3&&a+1==r/2)&&(n[o+1]/r/100|0)==ee(10,e-2)-1||(a==r/2||a==0)&&(n[o+1]/r/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(i||t<4)&&a==9999||!i&&t>3&&a==4999):s=((i||t<4)&&a+1==r||!i&&t>3&&a+1==r/2)&&(n[o+1]/r/1e3|0)==ee(10,e-3)-1,s}function Kt(n,e,t){for(var i,o=[0],r,s=0,a=n.length;s<a;){for(r=o.length;r--;)o[r]*=e;for(o[0]+=rn.indexOf(n.charAt(s++)),i=0;i<o.length;i++)o[i]>t-1&&(o[i+1]===void 0&&(o[i+1]=0),o[i+1]+=o[i]/t|0,o[i]%=t)}return o.reverse()}function br(n,e){var t,i,o;if(e.isZero())return e;i=e.d.length,i<32?(t=Math.ceil(i/3),o=(1/Et(4,t)).toString()):(t=16,o="2.3283064365386962890625e-10"),n.precision+=t,e=He(n,1,e.times(o),new n(1));for(var r=t;r--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return n.precision-=t,e}var Z=function(){function n(i,o,r){var s,a=0,c=i.length;for(i=i.slice();c--;)s=i[c]*o+a,i[c]=s%r|0,a=s/r|0;return a&&i.unshift(a),i}function e(i,o,r,s){var a,c;if(r!=s)c=r>s?1:-1;else for(a=c=0;a<r;a++)if(i[a]!=o[a]){c=i[a]>o[a]?1:-1;break}return c}function t(i,o,r,s){for(var a=0;r--;)i[r]-=a,a=i[r]<o[r]?1:0,i[r]=a*s+i[r]-o[r];for(;!i[0]&&i.length>1;)i.shift()}return function(i,o,r,s,a,c){var u,l,m,d,p,f,b,y,P,w,A,k,B,h,I,x,N,L,S,R,D=i.constructor,q=i.s==o.s?1:-1,v=i.d,K=o.d;if(!v||!v[0]||!K||!K[0])return new D(!i.s||!o.s||(v?K&&v[0]==K[0]:!K)?NaN:v&&v[0]==0||!K?q*0:q/0);for(c?(p=1,l=i.e-o.e):(c=ye,p=V,l=se(i.e/p)-se(o.e/p)),S=K.length,N=v.length,P=new D(q),w=P.d=[],m=0;K[m]==(v[m]||0);m++);if(K[m]>(v[m]||0)&&l--,r==null?(h=r=D.precision,s=D.rounding):a?h=r+(i.e-o.e)+1:h=r,h<0)w.push(1),f=!0;else{if(h=h/p+2|0,m=0,S==1){for(d=0,K=K[0],h++;(m<N||d)&&h--;m++)I=d*c+(v[m]||0),w[m]=I/K|0,d=I%K|0;f=d||m<N}else{for(d=c/(K[0]+1)|0,d>1&&(K=n(K,d,c),v=n(v,d,c),S=K.length,N=v.length),x=S,A=v.slice(0,S),k=A.length;k<S;)A[k++]=0;R=K.slice(),R.unshift(0),L=K[0],K[1]>=c/2&&++L;do d=0,u=e(K,A,S,k),u<0?(B=A[0],S!=k&&(B=B*c+(A[1]||0)),d=B/L|0,d>1?(d>=c&&(d=c-1),b=n(K,d,c),y=b.length,k=A.length,u=e(b,A,y,k),u==1&&(d--,t(b,S<y?R:K,y,c))):(d==0&&(u=d=1),b=K.slice()),y=b.length,y<k&&b.unshift(0),t(A,b,k,c),u==-1&&(k=A.length,u=e(K,A,S,k),u<1&&(d++,t(A,S<k?R:K,k,c))),k=A.length):u===0&&(d++,A=[0]),w[m++]=d,u&&A[0]?A[k++]=v[x]||0:(A=[v[x]],k=1);while((x++<N||A[0]!==void 0)&&h--);f=A[0]!==void 0}w[0]||w.shift()}if(p==1)P.e=l,ti=f;else{for(m=1,d=w[0];d>=10;d/=10)m++;P.e=m+l*p-1,F(P,a?r+P.e+1:r,s,f)}return P}}();function F(n,e,t,i){var o,r,s,a,c,u,l,m,d,p=n.constructor;e:if(e!=null){if(m=n.d,!m)return n;for(o=1,a=m[0];a>=10;a/=10)o++;if(r=e-o,r<0)r+=V,s=e,l=m[d=0],c=l/ee(10,o-s-1)%10|0;else if(d=Math.ceil((r+1)/V),a=m.length,d>=a)if(i){for(;a++<=d;)m.push(0);l=c=0,o=1,r%=V,s=r-V+1}else break e;else{for(l=a=m[d],o=1;a>=10;a/=10)o++;r%=V,s=r-V+o,c=s<0?0:l/ee(10,o-s-1)%10|0}if(i=i||e<0||m[d+1]!==void 0||(s<0?l:l%ee(10,o-s-1)),u=t<4?(c||i)&&(t==0||t==(n.s<0?3:2)):c>5||c==5&&(t==4||i||t==6&&(r>0?s>0?l/ee(10,o-s):0:m[d-1])%10&1||t==(n.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=n.e+1,m[0]=ee(10,(V-e%V)%V),n.e=-e||0):m[0]=n.e=0,n;if(r==0?(m.length=d,a=1,d--):(m.length=d+1,a=ee(10,V-r),m[d]=s>0?(l/ee(10,o-s)%ee(10,s)|0)*a:0),u)for(;;)if(d==0){for(r=1,s=m[0];s>=10;s/=10)r++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;r!=a&&(n.e++,m[0]==ye&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=ye)break;m[d--]=0,a=1}for(r=m.length;m[--r]===0;)m.pop()}return W&&(n.e>p.maxE?(n.d=null,n.e=NaN):n.e<p.minE&&(n.e=0,n.d=[0])),n}function ke(n,e,t){if(!n.isFinite())return ci(n);var i,o=n.e,r=re(n.d),s=r.length;return e?(t&&(i=t-s)>0?r=r.charAt(0)+"."+r.slice(1)+Re(i):s>1&&(r=r.charAt(0)+"."+r.slice(1)),r=r+(n.e<0?"e":"e+")+n.e):o<0?(r="0."+Re(-o-1)+r,t&&(i=t-s)>0&&(r+=Re(i))):o>=s?(r+=Re(o+1-s),t&&(i=t-o-1)>0&&(r=r+"."+Re(i))):((i=o+1)<s&&(r=r.slice(0,i)+"."+r.slice(i)),t&&(i=t-s)>0&&(o+1===s&&(r+="."),r+=Re(i))),r}function Ft(n,e){var t=n[0];for(e*=V;t>=10;t/=10)e++;return e}function Mt(n,e,t){if(e>fr)throw W=!0,t&&(n.precision=t),Error(ni);return F(new n(Lt),e,1,!0)}function Ae(n,e,t){if(e>sn)throw Error(ni);return F(new n(Rt),e,t,!0)}function si(n){var e=n.length-1,t=e*V+1;if(e=n[e],e){for(;e%10==0;e/=10)t--;for(e=n[0];e>=10;e/=10)t++}return t}function Re(n){for(var e="";n--;)e+="0";return e}function ai(n,e,t,i){var o,r=new n(1),s=Math.ceil(i/V+4);for(W=!1;;){if(t%2&&(r=r.times(e),$n(r.d,s)&&(o=!0)),t=se(t/2),t===0){t=r.d.length-1,o&&r.d[t]===0&&++r.d[t];break}e=e.times(e),$n(e.d,s)}return W=!0,r}function Jn(n){return n.d[n.d.length-1]&1}function ui(n,e,t){for(var i,o,r=new n(e[0]),s=0;++s<e.length;){if(o=new n(e[s]),!o.s){r=o;break}i=r.cmp(o),(i===t||i===0&&r.s===t)&&(r=o)}return r}function an(n,e){var t,i,o,r,s,a,c,u=0,l=0,m=0,d=n.constructor,p=d.rounding,f=d.precision;if(!n.d||!n.d[0]||n.e>17)return new d(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:0/0);for(e==null?(W=!1,c=f):c=e,a=new d(.03125);n.e>-2;)n=n.times(a),m+=5;for(i=Math.log(ee(2,m))/Math.LN10*2+5|0,c+=i,t=r=s=new d(1),d.precision=c;;){if(r=F(r.times(n),c,1),t=t.times(++l),a=s.plus(Z(r,t,c,1)),re(a.d).slice(0,c)===re(s.d).slice(0,c)){for(o=m;o--;)s=F(s.times(s),c,1);if(e==null)if(u<3&&rt(s.d,c-i,p,u))d.precision=c+=10,t=r=a=new d(1),l=0,u++;else return F(s,d.precision=f,p,W=!0);else return d.precision=f,s}s=a}}function Me(n,e){var t,i,o,r,s,a,c,u,l,m,d,p=1,f=10,b=n,y=b.d,P=b.constructor,w=P.rounding,A=P.precision;if(b.s<0||!y||!y[0]||!b.e&&y[0]==1&&y.length==1)return new P(y&&!y[0]?-1/0:b.s!=1?NaN:y?0:b);if(e==null?(W=!1,l=A):l=e,P.precision=l+=f,t=re(y),i=t.charAt(0),Math.abs(r=b.e)<15e14){for(;i<7&&i!=1||i==1&&t.charAt(1)>3;)b=b.times(n),t=re(b.d),i=t.charAt(0),p++;r=b.e,i>1?(b=new P("0."+t),r++):b=new P(i+"."+t.slice(1))}else return u=Mt(P,l+2,A).times(r+""),b=Me(new P(i+"."+t.slice(1)),l-f).plus(u),P.precision=A,e==null?F(b,A,w,W=!0):b;for(m=b,c=s=b=Z(b.minus(1),b.plus(1),l,1),d=F(b.times(b),l,1),o=3;;){if(s=F(s.times(d),l,1),u=c.plus(Z(s,new P(o),l,1)),re(u.d).slice(0,l)===re(c.d).slice(0,l))if(c=c.times(2),r!==0&&(c=c.plus(Mt(P,l+2,A).times(r+""))),c=Z(c,new P(p),l,1),e==null)if(rt(c.d,l-f,w,a))P.precision=l+=f,u=s=b=Z(m.minus(1),m.plus(1),l,1),d=F(b.times(b),l,1),o=a=1;else return F(c,P.precision=A,w,W=!0);else return P.precision=A,c;c=u,o+=2}}function ci(n){return String(n.s*n.s/0)}function Nt(n,e){var t,i,o;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(i=e.search(/e/i))>0?(t<0&&(t=i),t+=+e.slice(i+1),e=e.substring(0,i)):t<0&&(t=e.length),i=0;e.charCodeAt(i)===48;i++);for(o=e.length;e.charCodeAt(o-1)===48;--o);if(e=e.slice(i,o),e){if(o-=i,n.e=t=t-i-1,n.d=[],i=(t+1)%V,t<0&&(i+=V),i<o){for(i&&n.d.push(+e.slice(0,i)),o-=V;i<o;)n.d.push(+e.slice(i,i+=V));e=e.slice(i),i=V-e.length}else i-=o;for(;i--;)e+="0";n.d.push(+e),W&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function yr(n,e){var t,i,o,r,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),oi.test(e))return Nt(n,e)}else if(e==="Infinity"||e==="NaN")return+e||(n.s=NaN),n.e=NaN,n.d=null,n;if(mr.test(e))t=16,e=e.toLowerCase();else if(lr.test(e))t=2;else if(dr.test(e))t=8;else throw Error(Oe+e);for(r=e.search(/p/i),r>0?(c=+e.slice(r+1),e=e.substring(2,r)):e=e.slice(2),r=e.indexOf("."),s=r>=0,i=n.constructor,s&&(e=e.replace(".",""),a=e.length,r=a-r,o=ai(i,new i(t),r,r*2)),u=Kt(e,t,ye),l=u.length-1,r=l;u[r]===0;--r)u.pop();return r<0?new i(n.s*0):(n.e=Ft(u,l),n.d=u,W=!1,s&&(n=Z(n,o,a*4)),c&&(n=n.times(Math.abs(c)<54?ee(2,c):ot.pow(2,c))),W=!0,n)}function gr(n,e){var t,i=e.d.length;if(i<3)return e.isZero()?e:He(n,2,e,e);t=1.4*Math.sqrt(i),t=t>16?16:t|0,e=e.times(1/Et(5,t)),e=He(n,2,e,e);for(var o,r=new n(5),s=new n(16),a=new n(20);t--;)o=e.times(e),e=e.times(r.plus(o.times(s.times(o).minus(a))));return e}function He(n,e,t,i,o){var r,s,a,c,u=1,l=n.precision,m=Math.ceil(l/V);for(W=!1,c=t.times(t),a=new n(i);;){if(s=Z(a.times(c),new n(e++*e++),l,1),a=o?i.plus(s):i.minus(s),i=Z(s.times(c),new n(e++*e++),l,1),s=a.plus(i),s.d[m]!==void 0){for(r=m;s.d[r]===a.d[r]&&r--;);if(r==-1)break}r=a,a=i,i=s,s=r,u++}return W=!0,s.d.length=m+1,s}function Et(n,e){for(var t=n;--e;)t*=n;return t}function li(n,e){var t,i=e.s<0,o=Ae(n,n.precision,1),r=o.times(.5);if(e=e.abs(),e.lte(r))return xe=i?4:1,e;if(t=e.divToInt(o),t.isZero())xe=i?3:2;else{if(e=e.minus(t.times(o)),e.lte(r))return xe=Jn(t)?i?2:3:i?4:1,e;xe=Jn(t)?i?1:4:i?3:2}return e.minus(o).abs()}function un(n,e,t,i){var o,r,s,a,c,u,l,m,d,p=n.constructor,f=t!==void 0;if(f?(ce(t,1,Fe),i===void 0?i=p.rounding:ce(i,0,8)):(t=p.precision,i=p.rounding),!n.isFinite())l=ci(n);else{for(l=ke(n),s=l.indexOf("."),f?(o=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):o=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=Kt(ke(d),10,o),d.e=d.d.length),m=Kt(l,10,o),r=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=f?"0p+0":"0";else{if(s<0?r--:(n=new p(n),n.d=m,n.e=r,n=Z(n,d,t,i,0,o),m=n.d,r=n.e,u=ti),s=m[t],a=o/2,u=u||m[t+1]!==void 0,u=i<4?(s!==void 0||u)&&(i===0||i===(n.s<0?3:2)):s>a||s===a&&(i===4||u||i===6&&m[t-1]&1||i===(n.s<0?8:7)),m.length=t,u)for(;++m[--t]>o-1;)m[t]=0,t||(++r,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=rn.charAt(m[s]);if(f){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=Kt(l,o,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=rn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(r<0?"p":"p+")+r}else if(r<0){for(;++r;)l="0"+l;l="0."+l}else if(++r>c)for(r-=c;r--;)l+="0";else r<c&&(l=l.slice(0,r)+"."+l.slice(r))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return n.s<0?"-"+l:l}function $n(n,e){if(n.length>e)return n.length=e,!0}function Pr(n){return new this(n).abs()}function wr(n){return new this(n).acos()}function Ar(n){return new this(n).acosh()}function kr(n,e){return new this(n).plus(e)}function Tr(n){return new this(n).asin()}function hr(n){return new this(n).asinh()}function Br(n){return new this(n).atan()}function Ir(n){return new this(n).atanh()}function xr(n,e){n=new this(n),e=new this(e);var t,i=this.precision,o=this.rounding,r=i+4;return!n.s||!e.s?t=new this(NaN):!n.d&&!e.d?(t=Ae(this,r,1).times(e.s>0?.25:.75),t.s=n.s):!e.d||n.isZero()?(t=e.s<0?Ae(this,i,o):new this(0),t.s=n.s):!n.d||e.isZero()?(t=Ae(this,r,1).times(.5),t.s=n.s):e.s<0?(this.precision=r,this.rounding=1,t=this.atan(Z(n,e,r,1)),e=Ae(this,r,1),this.precision=i,this.rounding=o,t=n.s<0?t.minus(e):t.plus(e)):t=this.atan(Z(n,e,r,1)),t}function Cr(n){return new this(n).cbrt()}function Sr(n){return F(n=new this(n),n.e+1,2)}function Kr(n,e,t){return new this(n).clamp(e,t)}function Nr(n){if(!n||typeof n!="object")throw Error(Ot+"Object expected");var e,t,i,o=n.defaults===!0,r=["precision",1,Fe,"rounding",0,8,"toExpNeg",-Xe,0,"toExpPos",0,Xe,"maxE",0,Xe,"minE",-Xe,0,"modulo",0,9];for(e=0;e<r.length;e+=3)if(t=r[e],o&&(this[t]=on[t]),(i=n[t])!==void 0)if(se(i)===i&&i>=r[e+1]&&i<=r[e+2])this[t]=i;else throw Error(Oe+t+": "+i);if(t="crypto",o&&(this[t]=on[t]),(i=n[t])!==void 0)if(i===!0||i===!1||i===0||i===1)if(i)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ii);else this[t]=!1;else throw Error(Oe+t+": "+i);return this}function Lr(n){return new this(n).cos()}function Rr(n){return new this(n).cosh()}function mi(n){var e,t,i;function o(r){var s,a,c,u=this;if(!(u instanceof o))return new o(r);if(u.constructor=o,ei(r)){u.s=r.s,W?!r.d||r.e>o.maxE?(u.e=NaN,u.d=null):r.e<o.minE?(u.e=0,u.d=[0]):(u.e=r.e,u.d=r.d.slice()):(u.e=r.e,u.d=r.d?r.d.slice():r.d);return}if(c=typeof r,c==="number"){if(r===0){u.s=1/r<0?-1:1,u.e=0,u.d=[0];return}if(r<0?(r=-r,u.s=-1):u.s=1,r===~~r&&r<1e7){for(s=0,a=r;a>=10;a/=10)s++;W?s>o.maxE?(u.e=NaN,u.d=null):s<o.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[r]):(u.e=s,u.d=[r]);return}if(r*0!==0){r||(u.s=NaN),u.e=NaN,u.d=null;return}return Nt(u,r.toString())}if(c==="string")return(a=r.charCodeAt(0))===45?(r=r.slice(1),u.s=-1):(a===43&&(r=r.slice(1)),u.s=1),oi.test(r)?Nt(u,r):yr(u,r);if(c==="bigint")return r<0?(r=-r,u.s=-1):u.s=1,Nt(u,r.toString());throw Error(Oe+r)}if(o.prototype=T,o.ROUND_UP=0,o.ROUND_DOWN=1,o.ROUND_CEIL=2,o.ROUND_FLOOR=3,o.ROUND_HALF_UP=4,o.ROUND_HALF_DOWN=5,o.ROUND_HALF_EVEN=6,o.ROUND_HALF_CEIL=7,o.ROUND_HALF_FLOOR=8,o.EUCLID=9,o.config=o.set=Nr,o.clone=mi,o.isDecimal=ei,o.abs=Pr,o.acos=wr,o.acosh=Ar,o.add=kr,o.asin=Tr,o.asinh=hr,o.atan=Br,o.atanh=Ir,o.atan2=xr,o.cbrt=Cr,o.ceil=Sr,o.clamp=Kr,o.cos=Lr,o.cosh=Rr,o.div=Mr,o.exp=Or,o.floor=Fr,o.hypot=Er,o.ln=vr,o.log=Vr,o.log10=Wr,o.log2=Dr,o.max=_r,o.min=qr,o.mod=Gr,o.mul=Ur,o.pow=Xr,o.random=Hr,o.round=zr,o.sign=Zr,o.sin=Yr,o.sinh=jr,o.sqrt=Qr,o.sub=Jr,o.sum=$r,o.tan=eo,o.tanh=to,o.trunc=no,n===void 0&&(n={}),n&&n.defaults!==!0)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<i.length;)n.hasOwnProperty(t=i[e++])||(n[t]=this[t]);return o.config(n),o}function Mr(n,e){return new this(n).div(e)}function Or(n){return new this(n).exp()}function Fr(n){return F(n=new this(n),n.e+1,3)}function Er(){var n,e,t=new this(0);for(W=!1,n=0;n<arguments.length;)if(e=new this(arguments[n++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return W=!0,new this(1/0);t=e}return W=!0,t.sqrt()}function ei(n){return n instanceof ot||n&&n.toStringTag===ri||!1}function vr(n){return new this(n).ln()}function Vr(n,e){return new this(n).log(e)}function Dr(n){return new this(n).log(2)}function Wr(n){return new this(n).log(10)}function _r(){return ui(this,arguments,-1)}function qr(){return ui(this,arguments,1)}function Gr(n,e){return new this(n).mod(e)}function Ur(n,e){return new this(n).mul(e)}function Xr(n,e){return new this(n).pow(e)}function Hr(n){var e,t,i,o,r=0,s=new this(1),a=[];if(n===void 0?n=this.precision:ce(n,1,Fe),i=Math.ceil(n/V),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(i));r<i;)o=e[r],o>=429e7?e[r]=crypto.getRandomValues(new Uint32Array(1))[0]:a[r++]=o%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(i*=4);r<i;)o=e[r]+(e[r+1]<<8)+(e[r+2]<<16)+((e[r+3]&127)<<24),o>=214e7?crypto.randomBytes(4).copy(e,r):(a.push(o%1e7),r+=4);r=i/4}else throw Error(ii);else for(;r<i;)a[r++]=Math.random()*1e7|0;for(i=a[--r],n%=V,i&&n&&(o=ee(10,V-n),a[r]=(i/o|0)*o);a[r]===0;r--)a.pop();if(r<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=V)a.shift();for(i=1,o=a[0];o>=10;o/=10)i++;i<V&&(t-=V-i)}return s.e=t,s.d=a,s}function zr(n){return F(n=new this(n),n.e+1,this.rounding)}function Zr(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function Yr(n){return new this(n).sin()}function jr(n){return new this(n).sinh()}function Qr(n){return new this(n).sqrt()}function Jr(n,e){return new this(n).sub(e)}function $r(){var n=0,e=arguments,t=new this(e[n]);for(W=!1;t.s&&++n<e.length;)t=t.plus(e[n]);return W=!0,F(t,this.precision,this.rounding)}function eo(n){return new this(n).tan()}function to(n){return new this(n).tanh()}function no(n){return F(n=new this(n),n.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString;T[Symbol.toStringTag]="Decimal";var ot=T.constructor=mi(on);Lt=new ot(Lt);Rt=new ot(Rt);var te=ot;import Eo from"big.js";import Oc from"bn.js";import{get as di,set as io}from"lodash";var cn=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(i=>typeof i=="object"?JSON.stringify(i):i).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},pi={},ro={};function ne(n){let e=di(pi,n);if(!e){let t=di(ro,n);e=new cn({name:n,logLevel:t}),io(pi,n,e)}return e}import{PublicKey as fi}from"@solana/web3.js";import{MINT_SIZE as oo,TOKEN_PROGRAM_ID as so,getTransferFeeConfig as ao,unpackMint as uo}from"@solana/spl-token";var ln=ne("Raydium_accountInfo_util");async function st(n,e,t){let{batchRequest:i,commitment:o="confirmed",chunkCount:r=100}=G({batchRequest:!1},t),s=mn(e,r),a=new Array(s.length).fill([]);if(i){let c=s.map(m=>{let d=n._buildArgs([m.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=mn(c,10);a=(await(await Promise.all(u.map(async m=>await n._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&ln.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:f,lamports:b,owner:y,rentEpoch:P}=d;return p.length!==2&&p[1]!=="base64"&&ln.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:f,lamports:b,owner:new fi(y),rentEpoch:P}}return null})))}else try{a=await Promise.all(s.map(c=>n.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&ln.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function We(n,e,t){let i=await st(n,e.map(o=>o.pubkey),t);return e.map((o,r)=>z(G({},o),{accountInfo:i[r]}))}async function dn({connection:n,mints:e,config:t}){var r,s,a;if(e.length===0)return{};let i=await We(n,e.map(c=>({pubkey:at(c)})),t),o={};for(let c of i){if(!c.accountInfo||c.accountInfo.data.length<oo){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=uo(c.pubkey,c.accountInfo,(r=c.accountInfo)==null?void 0:r.owner);o[c.pubkey.toString()]=z(G({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||so,feeConfig:(a=ao(u))!=null?a:void 0})}return o[fi.default.toBase58()]=o[le.toBase58()],o}import ut from"bn.js";var bi=9007199254740991;function Te(n){let e=ne("Raydium_parseBigNumberish");if(n instanceof ut)return n;if(typeof n=="string"){if(n.match(/^-?[0-9]+$/))return new ut(n);e.logWithError(`invalid BigNumberish string: ${n}`)}return typeof n=="number"?(n%1&&e.logWithError(`BigNumberish number underflow: ${n}`),(n>=bi||n<=-bi)&&e.logWithError(`BigNumberish number overflow: ${n}`),new ut(String(n))):typeof n=="bigint"?new ut(n.toString()):(e.error(`invalid BigNumberish value: ${n}`),new ut(0))}import{PublicKey as co}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yi}from"@solana/spl-token";var pn={chainId:101,address:co.default.toBase58(),programId:yi.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ee={chainId:101,address:"So11111111111111111111111111111111111111112",programId:yi.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as yn}from"@solana/web3.js";import{PublicKey as j,SystemProgram as gi,SYSVAR_RENT_PUBKEY as lo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as mo}from"@solana/spl-token";function fn({pubkey:n,isSigner:e=!1,isWritable:t=!0}){return{pubkey:n,isWritable:t,isSigner:e}}var Zs=[fn({pubkey:mo,isWritable:!1}),fn({pubkey:gi.programId,isWritable:!1}),fn({pubkey:lo,isWritable:!1})];function bn({publicKey:n,transformSol:e}){let t=Pi(n.toString());if(t instanceof j)return e&&t.equals(ct)?le:t;if(e&&t.toString()===ct.toBase58())return le;if(typeof t=="string"){if(t===j.default.toBase58())return j.default;try{return new j(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Pi(n){try{return new j(n)}catch{return n}}var po=new j("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),vt=new j("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Vt=new j("SysvarRent111111111111111111111111111111111"),Ys=new j("SysvarC1ock11111111111111111111111111111111"),ze=new j("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),js=new j("Sysvar1nstructions1111111111111111111111111"),wi=gi.programId,Qs=new j("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Js=new j("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),$s=new j("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ea=new j("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ta=new j("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),na=new j("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ia=new j("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ra=new j("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),oa=new j("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),sa=new j("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),aa=new j("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),le=new j("So11111111111111111111111111111111111111112"),ct=j.default;function at(n){return bn({publicKey:n,transformSol:!0})}var gn=class{constructor({mint:e,decimals:t,symbol:i,name:o,skipMint:r=!1,isToken2022:s=!1}){if(e===ct.toBase58()||e instanceof yn&&ct.equals(e)){this.decimals=Ee.decimals,this.symbol=Ee.symbol,this.name=Ee.name,this.mint=new yn(Ee.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=i||e.toString().substring(0,6),this.name=o||e.toString().substring(0,6),this.mint=r?yn.default:bn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ve=gn;ve.WSOL=new gn(z(G({},Ee),{mint:Ee.address}));var Pn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:i="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=i}equals(e){return this===e}},Dt=Pn;Dt.SOL=new Pn(pn);import fo from"toformat";var bo=fo,lt=bo;import _t from"big.js";import go from"bn.js";import Po from"decimal.js-light";var Wt=ne("module/fraction"),wn=lt(_t),mt=lt(Po),wo={[0]:mt.ROUND_DOWN,[1]:mt.ROUND_HALF_UP,[2]:mt.ROUND_UP},Ao={[0]:_t.roundDown,[1]:_t.roundHalfUp,[2]:_t.roundUp},Y=class{constructor(e,t=new go(1)){this.numerator=Te(e),this.denominator=Te(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(Te(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(Te(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(Te(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(Te(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},i=1){Number.isInteger(e)||Wt.logWithError(`${e} is not an integer.`),e<=0&&Wt.logWithError(`${e} is not positive.`),mt.set({precision:e+1,rounding:wo[i]});let o=new mt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return o.toFormat(o.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},i=1){return Number.isInteger(e)||Wt.logWithError(`${e} is not an integer.`),e<0&&Wt.logWithError(`${e} is negative.`),wn.DP=e,wn.RM=Ao[i]||1,new wn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};import ko from"bn.js";var Ai=new Y(new ko(100)),pe=class extends Y{toSignificant(e=5,t,i){return this.mul(Ai).toSignificant(e,t,i)}toFixed(e=2,t,i){return this.mul(Ai).toFixed(e,t,i)}};var Oa=ne("Raydium_price");function mn(n,e=1,t=[]){let i=[...n];if(e<=0)return t;for(;i.length;)t.push(i.splice(0,e));return t}import{PublicKey as So}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ko}from"@solana/spl-token";import{ComputeBudgetProgram as ki,Keypair as hi,PublicKey as To,Transaction as Bi,TransactionMessage as ho,VersionedTransaction as Ii}from"@solana/web3.js";var ie={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as Bo}from"@solana/spl-token";var Ti=ne("Raydium_txUtil"),xi=1644;function Gt(n){let e=[],t=[];return n.microLamports&&(e.push(ki.setComputeUnitPrice({microLamports:n.microLamports})),t.push(ie.SetComputeUnitPrice)),n.units&&(e.push(ki.setComputeUnitLimit({units:n.units})),t.push(ie.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Ze(n,e){var i,o;let t=e!=null?e:"confirmed";return(o=await((i=n.getLatestBlockhash)==null?void 0:i.call(n,{commitment:t})))==null?void 0:o.blockhash}async function Ut(n,e){return n.getSignatureStatuses([e]),new Promise((t,i)=>{let o=setTimeout(i,6e4);n.onSignature(e,r=>{if(clearTimeout(o),!r.err){t("");return}i(Object.assign(r.err,{txId:e}))},"confirmed")})}function Io(n,e){n.length<1&&Ti.logWithError(`no instructions provided: ${n.toString()}`),e.length<1&&Ti.logWithError(`no signers provided:, ${e.toString()}`);let t=new Bi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...n);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<xi}catch{return!1}}function fe(n,e){let[t,i]=To.findProgramAddressSync(n,e);return{publicKey:t,nonce:i}}function dt({instructions:n,payer:e,signers:t}){return Io(n,[e,...t])}function pt({instructions:n,payer:e,lookupTableAddressAccount:t,recentBlockhash:i=hi.generate().publicKey.toString()}){let r=new ho({payerKey:e,recentBlockhash:i,instructions:n}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ii(r).serialize()).toString("base64").length<xi}catch{return!1}}var xo=n=>Buffer.isBuffer(n)?n:n instanceof Uint8Array?Buffer.from(n.buffer,n.byteOffset,n.byteLength):Buffer.from(n),Co=n=>{let e=n.serialize({requireAllSignatures:!1,verifySignatures:!1});n instanceof Ii&&(e=xo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function _e(n){let e=[];return n.forEach(t=>{t instanceof Bi&&(t.recentBlockhash||(t.recentBlockhash=Bo.toBase58()),t.feePayer||(t.feePayer=hi.generate().publicKey)),e.push(Co(t))}),console.log("simulate tx string:",e),e}function de(n,e,t){return fe([n.toBuffer(),(t!=null?t:Ko).toBuffer(),e.toBuffer()],new So("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as E}from"@solana/web3.js";var fu=new E("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),bu=new E("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),yu=new E("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),gu=new E("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pu=new E("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),wu=new E("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Au=new E("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ku=new E("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Tu=new E("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),hu=new E("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),No=new E("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Lo=new E("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ro=new E("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Bu=new E("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Iu=new E("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),xu=new E("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Cu=new E("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Su=new E("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ku=new E("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Nu=new E("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),ft=new E("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ci=new E("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Lu=new E("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Xt=new E("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ht=new E("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ru=new E("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Mu=new E("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Ou=new E("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Fu=new E("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Eu=new E("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vu=new E("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Vu={OPEN_BOOK_PROGRAM:new E("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new E("Ray1111111111111111111111111111111111111111"),AMM_V4:new E("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new E("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new E("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new E("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new E("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new E("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new E("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new E("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new E("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new E("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:E.default,Router:new E("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new E("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new E("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new E("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new E("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new E("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new E("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new E("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new E("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new E("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new E("Ray1111111111111111111111111111111111111111")};import ge from"bn.js";var bt=1e4;function he(n,e,t,i){if(e===void 0)return{amount:n,fee:void 0,expirationTime:void 0};let o=z(G({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),r=t.epoch<o.newerTransferFee.epoch?o.olderTransferFee:o.newerTransferFee,s=new ge(r.maximumFee.toString()),a=t.epoch<o.newerTransferFee.epoch?(Number(o.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(i)if(r.transferFeeBasisPoints===bt){let c=new ge(r.maximumFee.toString());return{amount:n.add(c),fee:c,expirationTime:a}}else{let c=Tn(n.mul(new ge(bt)),new ge(bt-r.transferFeeBasisPoints)),u=new ge(r.maximumFee.toString()),l=c.sub(n).gt(u)?n.add(u):c,m=Tn(l.mul(new ge(r.transferFeeBasisPoints)),new ge(bt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=Tn(n.mul(new ge(r.transferFeeBasisPoints)),new ge(bt)),u=c.gt(s)?s:c;return{amount:n,fee:u,expirationTime:a}}}function Tn(n,e){let{div:t,mod:i}=n.divmod(e);return i.gt(new ge(0))?t.add(new ge(1)):t}import{PublicKey as hn,AddressLookupTableAccount as Qe}from"@solana/web3.js";async function Bn({connection:n,address:e,cluster:t="mainnet"}){let i=await st(n,[...new Set(e.map(r=>r.toString()))].map(r=>new hn(r))),o={};for(let r=0;r<e.length;r++){let s=i[r],a=e[r];if(!s)continue;let c=new Qe({key:a,state:Qe.deserialize(s.data)});o[a.toString()]=c,t==="devnet"?je[a.toString()]=c:Ye[a.toString()]=c}return o}var Ye={},In=async n=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ye[e])return Ye;let t=new hn(e),i=await n.getAccountInfo(t);return i&&(Ye[e]=new Qe({key:t,state:Qe.deserialize(i.data)})),Ye},je={},xn=async n=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(je[e])return je;let t=new hn(e),i=await n.getAccountInfo(t);return i&&(je[e]=new Qe({key:t,state:Qe.deserialize(i.data)})),je};import{PublicKey as Je,sendAndConfirmTransaction as Cn,SystemProgram as Mo,Transaction as yt,TransactionMessage as gt,VersionedTransaction as Pt}from"@solana/web3.js";import Oo from"axios";var zt=2e3,Zt=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var i;let e=(await Oo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(i=e==null?void 0:e[15])!=null?i:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:i}=Gt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...i),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Mo.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Je(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(ie.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let i=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(i))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:i=[],instructionTypes:o=[],endInstructionTypes:r=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...i),this.instructionTypes.push(...o),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...s.filter(a=>a!==Je.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(G({},t||{})):this.build(t)}build(e){var i;let t=new yt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((i=this.owner)==null?void 0:i.signer)&&!this.signers.some(o=>o.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async o=>{var l;let{recentBlockHash:r,skipPreflight:s=!0,sendAndConfirm:a,notSendToRpc:c}=o||{},u=r!=null?r:await Ze(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),_e([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:a?await Cn(this.connection,t,this.signers.find(d=>d.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let m=await this.signAllTransactions([t]);if(this.signers.length)for(let d of m)try{d.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:s}),signedTx:m[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:i}=e,{transaction:o}=this.build(i),r=t.filter(l=>l.transaction.instructions.length>0),s=[o,...r.map(l=>l.transaction)],a=[this.signers,...r.map(l=>l.signers)],c=[...this.instructionTypes,...r.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async l=>{var P;let{sequentially:m,onTxUpdate:d,skipTxCount:p=0,recentBlockHash:f,skipPreflight:b=!0}=l||{},y=f!=null?f:await Ze(this.connection,this.blockhashCommitment);if((P=this.owner)!=null&&P.isKeyPair){if(m){let w=[],A=0;for(let k of s){if(++A,A<=p)continue;let B=await Cn(this.connection,k,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});w.push(B)}return{txIds:w,signedTxs:s}}return{txIds:await await Promise.all(s.map(async w=>(w.recentBlockhash=y,await this.connection.sendRawTransaction(w.serialize(),{skipPreflight:b})))),signedTxs:s}}if(this.signAllTransactions){let w=s.map((k,B)=>(k.recentBlockhash=y,a[B].length&&k.sign(...a[B]),k));_e(w);let A=await this.signAllTransactions(w);if(m){let k=0,B=[],h=async()=>{if(!A[k])return;let I=await this.connection.sendRawTransaction(A[k].serialize(),{skipPreflight:b});B.push({txId:I,status:"sent",signedTx:A[k]}),d==null||d([...B]),k++;let x=!1,N=null,L=null,S=R=>{N!==null&&clearInterval(N),L!==null&&this.connection.removeSignatureListener(L);let D=B.findIndex(q=>q.txId===I);if(D>-1){if(B[D].status==="error"||B[D].status==="success")return;B[D].status=R.err?"error":"success"}d==null||d([...B]),R.err||h()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var R;if(x){clearInterval(N);return}try{let D=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});D&&(x=!0,clearInterval(N),S({err:((R=D.meta)==null?void 0:R.err)||null}),console.log("tx status from getTransaction:",I))}catch(D){x=!0,clearInterval(N),console.error("getTransaction timeout:",D,I)}},zt)),L=this.connection.onSignature(I,R=>{if(x){this.connection.removeSignatureListener(L);return}x=!0,S(R)},"confirmed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:B.map(I=>I.txId),signedTxs:A}}else{let k=[];for(let B=0;B<A.length;B+=1){let h=await this.connection.sendRawTransaction(A[B].serialize(),{skipPreflight:b});k.push(h)}return{txIds:k,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:i}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:i||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:i})}async buildV0(e){var b;let f=e||{},{lookupTableCache:t={},lookupTableAddress:i=[],forerunCreate:o,recentBlockhash:r}=f,s=we(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=G(G({},this.cluster==="devnet"?await xn(this.connection):await In(this.connection)),t),c=Array.from(new Set([...i,...this.lookupTableAddress])),u=[];for(let y of c)a[y]===void 0&&u.push(new Je(y));let l=await Bn({connection:this.connection,address:u});for(let[y,P]of Object.entries(l))a[y]=P;let m=o?Je.default.toBase58():r!=null?r:await Ze(this.connection,this.blockhashCommitment),d=new gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((b=this.owner)==null?void 0:b.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new Pt(d);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var k;let{skipPreflight:P=!0,sendAndConfirm:w,notSendToRpc:A}=y||{};if(_e([p]),(k=this.owner)!=null&&k.isKeyPair){let B=await this.connection.sendTransaction(p,{skipPreflight:P});return w&&await Ut(this.connection,B),{txId:B,signedTx:p}}if(this.signAllTransactions){let B=await this.signAllTransactions([p]);if(this.signers.length)for(let h of B)try{h.sign(this.signers)}catch{}return{txId:A?"":await this.connection.sendTransaction(B[0],{skipPreflight:P}),signedTx:B[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:i}=e,{transaction:o}=await this.buildV0(i),r=t.filter(l=>l.builder.instructions.length>0),s=[o,...r.map(l=>l.transaction)],a=[this.signers,...r.map(l=>l.signers)],c=[...this.instructionTypes,...r.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:i,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:f=!0}=l||{};if(p&&s.forEach(y=>y.message.recentBlockhash=p),_e(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let y=[];for(let P of s){let w=await this.connection.sendTransaction(P,{skipPreflight:f});await Ut(this.connection,w),y.push(w)}return{txIds:y,signedTxs:s}}return{txIds:await Promise.all(s.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(m){let P=0,w=[],A=async()=>{if(!y[P])return;let k=await this.connection.sendTransaction(y[P],{skipPreflight:f});w.push({txId:k,status:"sent",signedTx:y[P]}),d==null||d([...w]),P++;let B=!1,h=null,I=null,x=N=>{h!==null&&clearInterval(h),I!==null&&this.connection.removeSignatureListener(I);let L=w.findIndex(S=>S.txId===k);if(L>-1){if(w[L].status==="error"||w[L].status==="success")return;w[L].status=N.err?"error":"success"}d==null||d([...w]),N.err||A()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var N;if(B){clearInterval(h);return}try{let L=await this.connection.getTransaction(k,{commitment:"confirmed",maxSupportedTransactionVersion:0});L&&(B=!0,clearInterval(h),x({err:((N=L.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",k))}catch(L){B=!0,clearInterval(h),console.error("getTransaction timeout:",L,k)}},zt)),I=this.connection.onSignature(k,N=>{if(B){this.connection.removeSignatureListener(I);return}B=!0,x(N)},"confirmed"),this.connection.getSignatureStatus(k)};return A(),{txIds:[],signedTxs:y}}else{let P=[];for(let w=0;w<y.length;w+=1){let A=await this.connection.sendTransaction(y[w],{skipPreflight:f});P.push(A)}return{txIds:P,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuild(e){var d;let m=e||{},{splitIns:t=[],computeBudgetConfig:i}=m,o=we(m,["splitIns","computeBudgetConfig"]),r=i?Gt(i):{instructions:[],instructionTypes:[]},s=this.signers.reduce((p,f)=>z(G({},p),{[f.publicKey.toBase58()]:f}),{}),a=[],c=[],u=[],l=0;if(this.allInstructions.forEach(p=>{let f=[...u,p],b=i?[...r.instructions,...f]:f,P=[...new Set(f.map(w=>w.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat()).values()].map(w=>new Je(w));if(p!==t[l]&&u.length<12&&(dt({instructions:b,payer:this.feePayer,signers:P})||dt({instructions:f,payer:this.feePayer,signers:P})))u.push(p);else{if(u.length===0)throw Error("item ins too big");l+=p===t[l]?1:0,dt({instructions:i?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:P})?a.push(new yt().add(...r.instructions,...u)):a.push(new yt().add(...u)),c.push(Array.from(new Set(u.map(w=>w.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat())).map(w=>s[w]).filter(w=>w!==void 0)),u=[p]}}),u.length>0){let f=[...new Set(u.map(b=>b.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(b=>s[b]).filter(b=>b!==void 0);dt({instructions:i?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:f.map(b=>b.publicKey)})?a.push(new yt().add(...r.instructions,...u)):a.push(new yt().add(...u)),c.push(f)}return a.forEach(p=>p.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&c.forEach(p=>{p.some(f=>f.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async p=>{var k;let{sequentially:f,onTxUpdate:b,skipTxCount:y=0,recentBlockHash:P,skipPreflight:w=!0}=p||{},A=P!=null?P:await Ze(this.connection,this.blockhashCommitment);if(a.forEach(async(B,h)=>{B.recentBlockhash=A,c[h].length&&B.sign(...c[h])}),_e(a),(k=this.owner)!=null&&k.isKeyPair){if(f){let B=0,h=[];for(let I of a){if(++B,B<=y){h.push("tx skipped");continue}let x=await Cn(this.connection,I,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});h.push(x)}return{txIds:h,signedTxs:a}}return{txIds:await Promise.all(a.map(async B=>await this.connection.sendRawTransaction(B.serialize(),{skipPreflight:w}))),signedTxs:a}}if(this.signAllTransactions){let B=await this.signAllTransactions(a.slice(y,a.length)),h=[...a.slice(0,y),...B];if(f){let I=0,x=[],N=async()=>{if(!h[I])return;I<y&&(x.push({txId:"",status:"success",signedTx:h[I]}),b==null||b([...x]),I++,N());let L=await this.connection.sendRawTransaction(h[I].serialize(),{skipPreflight:w});x.push({txId:L,status:"sent",signedTx:h[I]}),b==null||b([...x]),I++;let S=!1,R=null,D=null,q=v=>{R!==null&&clearInterval(R),D!==null&&this.connection.removeSignatureListener(D);let K=x.findIndex($=>$.txId===L);if(K>-1){if(x[K].status==="error"||x[K].status==="success")return;x[K].status=v.err?"error":"success"}b==null||b([...x]),v.err||N()};this.loopMultiTxStatus&&(R=setInterval(async()=>{var v;if(S){clearInterval(R);return}try{let K=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:0});K&&(S=!0,clearInterval(R),q({err:((v=K.meta)==null?void 0:v.err)||null}),console.log("tx status from getTransaction:",L))}catch(K){S=!0,clearInterval(R),console.error("getTransaction timeout:",K,L)}},zt)),D=this.connection.onSignature(L,v=>{if(S){this.connection.removeSignatureListener(D);return}S=!0,q(v)},"confirmed"),this.connection.getSignatureStatus(L)};return await N(),{txIds:x.map(L=>L.txId),signedTxs:h}}else{let I=[];for(let x=0;x<h.length;x+=1){let N=await this.connection.sendRawTransaction(h[x].serialize(),{skipPreflight:w});I.push(N)}return{txIds:I,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var A;let w=e||{},{computeBudgetConfig:t,splitIns:i=[],lookupTableCache:o={},lookupTableAddress:r=[]}=w,s=we(w,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),a=G(G({},this.cluster==="devnet"?await xn(this.connection):await In(this.connection)),o),c=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let k of c)a[k]===void 0&&u.push(new Je(k));let l=await Bn({connection:this.connection,address:u});for(let[k,B]of Object.entries(l))a[k]=B;let m=t?Gt(t):{instructions:[],instructionTypes:[]},d=await Ze(this.connection,this.blockhashCommitment),p=this.signers.reduce((k,B)=>z(G({},k),{[B.publicKey.toBase58()]:B}),{}),f=[],b=[],y=[],P=0;if(this.allInstructions.forEach(k=>{let B=[...y,k],h=t?[...m.instructions,...B]:B;if(k!==i[P]&&y.length<12&&(pt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:a})||pt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:a})))y.push(k);else{if(y.length===0)throw Error("item ins too big");P+=k===i[P]?1:0;let I={};for(let x of[...new Set(c)])a[x]!==void 0&&(I[x]=a[x]);if(t&&pt({instructions:[...m.instructions,...y],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let x=new gt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...y]}).compileToV0Message(Object.values(a));f.push(new Pt(x))}else{let x=new gt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...y]}).compileToV0Message(Object.values(a));f.push(new Pt(x))}b.push(Array.from(new Set(y.map(x=>x.keys.filter(N=>N.isSigner).map(N=>N.pubkey.toString())).flat())).map(x=>p[x]).filter(x=>x!==void 0)),y=[k]}}),y.length>0){let B=[...new Set(y.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(h=>p[h]).filter(h=>h!==void 0);if(t&&pt({instructions:[...m.instructions,...y],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let h=new gt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...y]}).compileToV0Message(Object.values(a));f.push(new Pt(h))}else{let h=new gt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...y]}).compileToV0Message(Object.values(a));f.push(new Pt(h))}b.push(B)}return(A=this.owner)!=null&&A.signer&&b.forEach(k=>{k.some(B=>B.publicKey.equals(this.owner.publicKey))||k.push(this.owner.signer)}),f.forEach((k,B)=>{k.sign(b[B])}),{builder:this,transactions:f,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async k=>{var L;let{sequentially:B,onTxUpdate:h,skipTxCount:I=0,recentBlockHash:x,skipPreflight:N=!0}=k||{};if(f.map(async(S,R)=>{b[R].length&&S.sign(b[R]),x&&(S.message.recentBlockhash=x)}),_e(f),(L=this.owner)!=null&&L.isKeyPair){if(B){let S=0,R=[];for(let D of f){if(++S,S<=I){console.log("skip tx: ",S),R.push("tx skipped");continue}let q=await this.connection.sendTransaction(D,{skipPreflight:N});await Ut(this.connection,q),R.push(q)}return{txIds:R,signedTxs:f}}return{txIds:await Promise.all(f.map(async S=>await this.connection.sendTransaction(S,{skipPreflight:N}))),signedTxs:f}}if(this.signAllTransactions){let S=await this.signAllTransactions(f.slice(I,f.length)),R=[...f.slice(0,I),...S];if(B){let D=0,q=[],v=async()=>{if(!R[D])return;if(D<I){q.push({txId:"",status:"success",signedTx:R[D]}),h==null||h([...q]),D++,v();return}let K=await this.connection.sendTransaction(R[D],{skipPreflight:N});q.push({txId:K,status:"sent",signedTx:R[D]}),h==null||h([...q]),D++;let $=!1,ue=null,Pe=null,Zn=De=>{ue!==null&&clearInterval(ue),Pe!==null&&this.connection.removeSignatureListener(Pe);let Ie=q.findIndex(sr=>sr.txId===K);if(Ie>-1){if(q[Ie].status==="error"||q[Ie].status==="success")return;q[Ie].status=De.err?"error":"success"}h==null||h([...q]),De.err||v()};this.loopMultiTxStatus&&(ue=setInterval(async()=>{var De;if($){clearInterval(ue);return}try{let Ie=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ie&&($=!0,clearInterval(ue),Zn({err:((De=Ie.meta)==null?void 0:De.err)||null}),console.log("tx status from getTransaction:",K))}catch(Ie){$=!0,clearInterval(ue),console.error("getTransaction timeout:",Ie,K)}},zt)),Pe=this.connection.onSignature(K,De=>{if($){this.connection.removeSignatureListener(Pe);return}$=!0,Zn(De)},"confirmed"),this.connection.getSignatureStatus(K)};return v(),{txIds:[],signedTxs:R}}else{let D=[];for(let q=0;q<R.length;q+=1){let v=await this.connection.sendTransaction(R[q],{skipPreflight:N});D.push(v)}return{txIds:D,signedTxs:R}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import{PublicKey as oc}from"@solana/web3.js";import ac from"bn.js";import Fo from"bn.js";var qe=new Fo(1e6);var Gc=ne("Raydium_amount"),Uc=lt(Eo);var kn=new Be(0),rl=new Be(1),ol=new Be(2),sl=new Be(3),al=new Be(5),vo=new Be(10),ul=new Be(100),cl=new Be(1e3),ll=new Be(1e4);function Sn(n,e,t){return n.mul(e).add(t).sub(new Be(1)).div(t)}function Yt(n,e,t){return n.mul(e).div(t)}import Ki from"bn.js";import jt from"bn.js";function Kn(n,e){if(e.isZero())throw Error("divisor is zero");return n.mod(e)}function Vo(n,e){if(e.isZero())throw Error("rhs is zero");let t=n.div(e);return Kn(n,e).gt(wt)&&(t=t.add(new jt(1))),[t,e]}var wt=new jt(0),At=class{static swapBaseInputWithoutFees(e,t,i){let o=e.mul(i),r=t.add(e);return o.div(r)}static swapBaseOutputWithoutFees(e,t,i){let o=t.mul(e),r=i.sub(e),[s]=Vo(o,r);return s}static lpTokensToTradingTokens(e,t,i,o,r){let s=e.mul(i).div(t),a=e.mul(o).div(t);if(r===0)return{tokenAmount0:s,tokenAmount1:a};if(r===1)return Kn(e.mul(i),t).gt(wt)&&s.gt(wt)&&(s=s.add(new jt(1))),Kn(e.mul(o),t).gt(wt)&&a.gt(wt)&&(a=a.add(new jt(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};import Do from"bn.js";var me=class{static tradingFee(e,t){return Sn(e,t,qe)}static protocolFee(e,t){return Yt(e,t,qe)}static fundFee(e,t){return Yt(e,t,qe)}static creatorFee(e,t){return Sn(e,t,qe)}static splitCreatorFee(e,t,i){return Yt(e,i,t.add(i))}static calculatePreFeeAmount(e,t){if(t.isZero())return e;let i=e.mul(qe),o=qe.sub(t);return i.add(o).sub(new Do(1)).div(o)}};var kt=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swapBaseInput(e,t,i,o,r,s,a,c){let u=new Ki(0),l=me.tradingFee(e,o),m;c?(u=me.creatorFee(e,r),m=e.sub(l).sub(u)):m=e.sub(l);let d=me.protocolFee(l,s),p=me.protocolFee(l,a),f=At.swapBaseInputWithoutFees(m,t,i),b;return c?b=f:(u=me.creatorFee(f,r),b=f.sub(u)),{newInputVaultAmount:t.add(m),newOutputVaultAmount:i.sub(f),inputAmount:e,outputAmount:b,tradeFee:l,protocolFee:d,fundFee:p,creatorFee:u}}static swapBaseOutput(e,t,i,o,r,s,a,c){let u,l=new Ki(0),m;if(c)m=e;else{let y=me.calculatePreFeeAmount(e,r);l=y.sub(e),m=y}let d=At.swapBaseOutputWithoutFees(m,t,i),p;if(c){let y=me.calculatePreFeeAmount(d,o.add(r)),P=y.sub(d);l=me.splitCreatorFee(P,o,r),u=P.sub(l),p=y}else{let y=me.calculatePreFeeAmount(d,o);u=y.sub(d),p=y}let f=me.protocolFee(u,s),b=me.fundFee(u,a);return{newInputVaultAmount:t.add(d),newOutputVaultAmount:i.sub(m),inputAmount:p,outputAmount:e,tradeFee:u,protocolFee:f,fundFee:b,creatorFee:l}}};import J from"bn.js";var Nn=(...n)=>n.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),$e=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ne(t)}createTxBuilder(e){return this.scope.checkOwner(),new Zt({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Nn(e))}logInfo(...e){this.logger.info(Nn(e))}logAndCreateError(...e){let t=Nn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Zo}from"@solana/web3.js";import Mi,{isBN as Oi}from"bn.js";import{bits as Nl,BitStructure as Ll,blob as Wo,Blob as Rl,cstr as Ml,f32 as Ol,f32be as Fl,f64 as El,f64be as vl,greedy as Vl,Layout as _o,ns64 as Dl,ns64be as Wl,nu64 as _l,nu64be as ql,offset as Gl,s16 as Ul,s16be as Xl,s24 as Hl,s24be as zl,s32 as qo,s32be as Zl,s40 as Yl,s40be as jl,s48 as Ql,s48be as Jl,s8 as $l,seq as Go,struct as em,Structure as Uo,u16 as Xo,u16be as tm,u24 as nm,u24be as im,u32 as rm,u32be as om,u40 as sm,u40be as am,u48 as um,u48be as cm,u8 as Ho,UInt as zo,union as lm,Union as mm,unionLayoutDiscriminator as dm,utf8 as pm}from"@solana/buffer-layout";var Ln=_o,Ni=Uo;var Rn=zo;var Li=Ho,Ge=Xo;var Ce=qo;var Ri=Go;var oe=Wo;var et=class extends Ln{constructor(t,i,o){super(t,o);this.blob=oe(t),this.signed=i}decode(t,i=0){let o=new Mi(this.blob.decode(t,i),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(t,i,o=0){return typeof t=="number"&&(t=new Mi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),i,o)}};function X(n){return new Rn(1,n)}function Se(n){return new Rn(4,n)}function C(n){return new et(8,!1,n)}function Q(n){return new et(16,!1,n)}function Fi(n){return new et(8,!0,n)}function Ei(n){return new et(16,!0,n)}var Qt=class extends Ln{constructor(t,i,o,r){super(t.span,r);this.layout=t,this.decoder=i,this.encoder=o}decode(t,i){return this.decoder(this.layout.decode(t,i))}encode(t,i,o){return this.layout.encode(this.encoder(t),i,o)}getSpan(t,i){return this.layout.getSpan(t,i)}};function _(n){return new Qt(oe(32),e=>new Zo(e),e=>e.toBuffer(),n)}function Ve(n){return new Qt(Li(),Yo,jo,n)}function Yo(n){if(n===0)return!1;if(n===1)return!0;throw new Error("Invalid bool: "+n)}function jo(n){return n?1:0}var Mn=class extends Ni{decode(e,t){return super.decode(e,t)}};function U(n,e,t){return new Mn(n,e,t)}function H(n,e,t){let i,o=typeof e=="number"?e:Oi(e)?e.toNumber():new Proxy(e,{get(r,s){if(!i){let a=Reflect.get(r,"count");i=Oi(a)?a.toNumber():a,Reflect.set(r,"count",i)}return Reflect.get(r,s)},set(r,s,a){return s==="count"&&(i=a),Reflect.set(r,s,a)}});return Ri(n,o,t)}var Cm=U([Se("mintAuthorityOption"),_("mintAuthority"),C("supply"),X("decimals"),X("isInitialized"),Se("freezeAuthorityOption"),_("freezeAuthority")]);import{PublicKey as Lm}from"@solana/web3.js";import{MintLayout as Mm,TOKEN_PROGRAM_ID as Fm}from"@solana/spl-token";var Ue=o=>{var r=o,{address:n,programId:e,decimals:t}=r,i=we(r,["address","programId","decimals"]);return G({chainId:101,address:at(n).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:i.extensions||{}},i)},tt=n=>n?z(G({},n),{transferFeeConfigAuthority:n.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:n.withdrawWithheldAuthority.toBase58(),withheldAmount:n.withheldAmount.toString(),olderTransferFee:z(G({},n.olderTransferFee),{epoch:n.olderTransferFee.epoch.toString(),maximumFee:n.olderTransferFee.maximumFee.toString()}),newerTransferFee:z(G({},n.newerTransferFee),{epoch:n.newerTransferFee.epoch.toString(),maximumFee:n.newerTransferFee.maximumFee.toString()})}):void 0;import{PublicKey as Ct,TransactionInstruction as Ne,Keypair as ks,SystemProgram as Gn}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as tn,TOKEN_2022_PROGRAM_ID as Un,TOKEN_PROGRAM_ID as Ke}from"@solana/spl-token";var Qo=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),zm=Buffer.from("amm_config","utf8"),Jo=Buffer.from("pool","utf8"),$o=Buffer.from("pool_lp_mint","utf8"),es=Buffer.from("pool_vault","utf8"),ts=Buffer.from("observation","utf8"),ns=Buffer.from("permission","utf8");function Jt(n){return fe([Qo],n)}function On(n,e,t,i){return fe([Jo,e.toBuffer(),t.toBuffer(),i.toBuffer()],n)}function is(n,e){return fe([$o,e.toBuffer()],n)}function vi(n,e,t){return fe([es,e.toBuffer(),t.toBuffer()],n)}function Tt(n,e){return fe([ts,e.toBuffer()],n)}function Fn({poolId:n,programId:e,configId:t,mintA:i,mintB:o}){let r=Jt(e).publicKey,s=n||On(e,t,i,o).publicKey,a=is(e,s).publicKey,c=vi(e,s,i).publicKey,u=vi(e,s,o).publicKey,l=Tt(e,s).publicKey;return{poolId:s,configId:t,authority:r,lpMint:a,vaultA:c,vaultB:u,observationId:l}}var rs=Buffer.from("locked_liquidity","utf8");function ht(n,e){return fe([rs,e.toBuffer()],n)}function Vi(n,e){return fe([ns,e.toBuffer()],n)}import{PublicKey as Kf}from"@solana/web3.js";import Lf from"bn.js";import{AccountLayout as Ff,createAssociatedTokenAccountIdempotentInstruction as Ef,TOKEN_2022_PROGRAM_ID as vf,TOKEN_PROGRAM_ID as Vf}from"@solana/spl-token";import{Keypair as tf,PublicKey as nf,SystemProgram as of,TransactionInstruction as sf}from"@solana/web3.js";import uf from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as mf,TOKEN_2022_PROGRAM_ID as df,TOKEN_PROGRAM_ID as pf}from"@solana/spl-token";import Fp from"bn.js";import be from"bn.js";var En=new be(0),Di=new be(1),Wi=new be(-1),$t=new be(1).shln(64),_i=new be(1).shln(128),os=$t.sub(Di);var ss=_i.subn(1),nt=-443636,Bt=-nt,vn=new be("4295048016"),Vn=new be("79226673521066979257578248091"),jm=new be("4295048017"),Qm=new be("79226673521066979257578248090");var as=new be(10).pow(new be(6));var Jm=new be("18446744073700000000");import kp from"bn.js";var od=Buffer.from("amm_config","utf8"),sd=Buffer.from("pool","utf8"),ad=Buffer.from("pool_vault","utf8"),ud=Buffer.from("pool_reward_vault","utf8"),cd=Buffer.from("position","utf8"),ld=Buffer.from("tick_array","utf8"),md=Buffer.from("operation","utf8"),dd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),pd=Buffer.from("observation","utf8");function Dn(n){return fe([Buffer.from("metadata","utf8"),ze.toBuffer(),n.toBuffer()],ze)}var fd=Buffer.from("locked_position","utf8");var bd=Buffer.from("support_mint","utf8");import{PublicKey as Zd}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as jd}from"@solana/spl-token";import Jd from"bn.js";import Pd from"bn.js";var qn=14;var en=60;var ms=U([oe(8),X("bump"),Ge("index"),_(""),Se("protocolFeeRate"),Se("tradeFeeRate"),Ge("tickSpacing"),H(C(),8,"")]),ds=U([Se("blockTimestamp"),Fi("tickCumulative"),H(C(),4)]),ji=U([oe(8),Ve("initialized"),C("recentEpoch"),Ge("observationIndex"),_("poolId"),H(ds,100,"observations"),H(C(),4)]),ps=U([X("rewardState"),C("openTime"),C("endTime"),C("lastUpdateTime"),Q("emissionsPerSecondX64"),C("rewardTotalEmissioned"),C("rewardClaimed"),_("tokenMint"),_("tokenVault"),_("creator"),Q("rewardGrowthGlobalX64")]),zi=U([oe(8),X("bump"),_("ammConfig"),_("creator"),_("mintA"),_("mintB"),_("vaultA"),_("vaultB"),_("observationId"),X("mintDecimalsA"),X("mintDecimalsB"),Ge("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),Ce("tickCurrent"),Se(),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),C("protocolFeesTokenA"),C("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),X("status"),H(X(),7,""),H(ps,3,"rewardInfos"),H(C(),16,"tickArrayBitmap"),C("totalFeesTokenA"),C("totalFeesClaimedTokenA"),C("totalFeesTokenB"),C("totalFeesClaimedTokenB"),C("fundFeesTokenA"),C("fundFeesTokenB"),C("startTime"),H(C(),15*4-3,"padding")]),fs=U([Q("growthInsideLastX64"),C("rewardAmountOwed")]),Zi=U([oe(8),X("bump"),_("nftMint"),_("poolId"),Ce("tickLower"),Ce("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),C("tokenFeesOwedA"),C("tokenFeesOwedB"),H(fs,3,"rewardInfos"),H(C(),8,"")]),Xp=U([oe(8),X("bump"),_("poolId"),Ce("tickLowerIndex"),Ce("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),C("tokenFeesOwedA"),C("tokenFeesOwedB"),H(Q(),3,"rewardGrowthInside"),H(C(),8,"")]),bs=U([Ce("tick"),Ei("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),H(Q(),3,"rewardGrowthsOutsideX64"),H(Se(),13,"")]),Ui=U([oe(8),_("poolId"),Ce("startTickIndex"),H(bs,en,"ticks"),X("initializedTickCount"),H(X(),115,"")]),ys=U([oe(329),H(_(),100,"whitelistMints")]),ls=U([oe(8),_("poolId"),H(H(C(),8),qn,"positiveTickArrayBitmap"),H(H(C(),8),qn,"negativeTickArrayBitmap")]),Hp=U([C(),X("bump"),_("owner"),_("poolId"),_("positionId"),_("nftAccount"),H(C(),8)]),gs=U([oe(8),X("bump"),_("lockOwner"),_("poolId"),_("positionId"),_("nftAccount"),_("lockNftMint"),C("recentEpoch"),H(C(),8)]);ji.span;var Tf=ne("Raydium_Clmm");var Ts=ne("Raydium_cpmm"),Le={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132])};function Qi(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f,b,y,P,w,A){let k=U([C("amountMaxA"),C("amountMaxB"),C("openTime")]),B=On(n,t,r,s).publicKey,h=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!o.equals(B),isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:wi,isSigner:!1,isWritable:!1},{pubkey:Vt,isSigner:!1,isWritable:!1}],I=Buffer.alloc(k.span);return k.encode({amountMaxA:P,amountMaxB:w,openTime:A},I),new Ne({keys:h,programId:n,data:Buffer.from([...Le.initialize,...I])})}function Ji(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f){let b=U([C("lpAmount"),C("amountMaxA"),C("amountMaxB")]),y=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return Ts.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:f.toString()}),b.encode({lpAmount:d,amountMaxA:p,amountMaxB:f},P),new Ne({keys:y,programId:n,data:Buffer.from([...Le.deposit,...P])})}function $i(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f){let b=U([C("lpAmount"),C("amountMinA"),C("amountMinB")]),y=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:vt,isSigner:!1,isWritable:!1}],P=Buffer.alloc(b.span);return b.encode({lpAmount:d,amountMinA:p,amountMinB:f},P),new Ne({keys:y,programId:n,data:Buffer.from([...Le.withdraw,...P])})}function er(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f,b){let y=U([C("amountIn"),C("amounOutMin")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],w=Buffer.alloc(y.span);return y.encode({amountIn:f,amounOutMin:b},w),new Ne({keys:P,programId:n,data:Buffer.from([...Le.swapBaseInput,...w])})}function tr(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f,b){let y=U([C("amountInMax"),C("amountOut")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],w=Buffer.alloc(y.span);return y.encode({amountInMax:f,amountOut:b},w),new Ne({keys:P,programId:n,data:Buffer.from([...Le.swapBaseOutput,...w])})}async function nr(n){var y;let{ownerInfo:e,poolInfo:t,poolKeys:i,feeNftOwner:o,getEphemeralSigners:r}=n,s=[],[a,c]=[new Ct(t.id),new Ct(t.lpMint.address)],u;if(r)u=new Ct((await r(1))[0]);else{let P=ks.generate();s.push(P),u=P.publicKey}let{publicKey:l}=de(o,u,Ke),{publicKey:m}=Dn(u),{publicKey:d}=ht(n.lockProgram,u),{publicKey:p}=de(e.wallet,c,Ke),{publicKey:f}=de(n.lockAuthProgram,c,Ke),b=hs({programId:n.lockProgram,auth:n.lockAuthProgram,payer:e.feePayer,liquidityOwner:e.wallet,nftOwner:o,nftMint:u,nftAccount:l,poolId:a,lockPda:d,mintLp:c,userLpVault:p,lockLpVault:f,poolVaultA:new Ct(i.vault.A),poolVaultB:new Ct(i.vault.B),metadataAccount:m,lpAmount:n.lpAmount,withMetadata:(y=n.withMetadata)!=null?y:!0});return{address:{nftMint:u,nftAccount:l,metadataAccount:m,lockPda:d,userLpVault:p,lockLpVault:f},instructions:[b],signers:s,instructionTypes:[ie.CpmmLockLp],lookupTableAddress:[]}}function hs({programId:n,auth:e,payer:t,liquidityOwner:i,nftOwner:o,nftMint:r,nftAccount:s,poolId:a,lockPda:c,mintLp:u,userLpVault:l,lockLpVault:m,poolVaultA:d,poolVaultB:p,metadataAccount:f,lpAmount:b,withMetadata:y}){let P=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Vt,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1}],w=U([C("lpAmount"),Ve("withMetadata")]),A=Buffer.alloc(w.span);w.encode({lpAmount:b,withMetadata:y},A);let k=Buffer.from([...Le.lockCpLiquidity,...A]);return new Ne({keys:P,programId:n,data:k})}function Xn({programId:n,nftOwner:e,auth:t,nftAccount:i,lockPda:o,poolId:r,mintLp:s,userVaultA:a,userVaultB:c,poolVaultA:u,poolVaultB:l,mintA:m,mintB:d,lockLpVault:p,lpFeeAmount:f,cpmmProgram:b,cpmmAuthProgram:y}){let P=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:b!=null?b:ft,isSigner:!1,isWritable:!1},{pubkey:y!=null?y:Ci,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:vt,isSigner:!1,isWritable:!1}],w=U([C("lpFeeAmount")]),A=Buffer.alloc(w.span);w.encode({lpFeeAmount:f},A);let k=Buffer.from([...Le.collectCpFee,...A]);return new Ne({keys:P,programId:n,data:k})}function Hn(n,e,t,i,o,r,s,a,c,u,l,m,d){let p=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1}];return new Ne({keys:p,programId:n,data:Le.collectCreatorFee})}function ir(n,e,t,i,o,r,s,a,c,u,l,m,d,p,f,b,y,P,w,A,k,B,h){let I=U([C("amountA"),C("amountB"),C("openTime"),X("feeOn")]),x=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:tn,isSigner:!1,isWritable:!1},{pubkey:Gn.programId,isSigner:!1,isWritable:!1}],N=Buffer.alloc(I.span);return I.encode({amountA:A,amountB:k,openTime:B,feeOn:h},N),new Ne({keys:x,programId:n,data:Buffer.from([...Le.initializeWithPermission,...N])})}var rr=U([oe(8),X("bump"),Ve("disableCreatePool"),Ge("index"),C("tradeFeeRate"),C("protocolFeeRate"),C("fundFeeRate"),C("createPoolFee"),_("protocolOwner"),_("fundOwner"),C("creatorFeeRate"),H(C(),15)]),or=U([oe(8),_("configId"),_("poolCreator"),_("vaultA"),_("vaultB"),_("mintLp"),_("mintA"),_("mintB"),_("mintProgramA"),_("mintProgramB"),_("observationId"),X("bump"),X("status"),X("lpDecimals"),X("mintDecimalA"),X("mintDecimalB"),C("lpAmount"),C("protocolFeesMintA"),C("protocolFeesMintB"),C("fundFeesMintA"),C("fundFeesMintB"),C("openTime"),C("epoch"),X("feeOn"),Ve("enableCreatorFee"),H(X(),6),C("creatorFeesMintA"),C("creatorFeesMintB"),H(C(),28)]),Lb=U([oe(8),_("configId"),H(C(),30)]);var zn=class extends $e{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let i=await We(this.scope.connection,e.map(m=>({pubkey:new g(m)}))),o={},r=new Set,s=[];for(let m=0;m<e.length;m++){let d=i[m];if(d.accountInfo===null)throw Error("fetch pool info error: "+String(e[m]));let p=or.decode(d.accountInfo.data);o[String(e[m])]=z(G({},p),{programId:d.accountInfo.owner}),r.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...r],d=await We(this.scope.connection,m.map(p=>({pubkey:new g(p)})));for(let p=0;p<m.length;p++){let f=d[p].accountInfo;if(f===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=rr.decode(f.data)}}let c={},u=await We(this.scope.connection,s.map(m=>({pubkey:new g(m)})));for(let m=0;m<s.length;m++){let d=u[m].accountInfo;if(d===null)throw Error("fetch vault info error: "+s[m]);c[String(s[m])]=new J(Bs.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(o)){let p=c[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA).sub(d.creatorFeesMintA),f=c[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB).sub(d.creatorFeesMintB);l[m]=z(G({},d),{baseReserve:p,quoteReserve:f,vaultAAmount:c[d.vaultA.toString()],vaultBAmount:c[d.vaultB.toString()],configInfo:a[d.configId.toString()],poolPrice:new te(f.toString()).div(new te(10).pow(d.mintDecimalB)).div(new te(p.toString()).div(new te(10).pow(d.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((i,o)=>{var c,u,l,m;let r=e[o],[s,a]=[r.mintA.toBase58(),r.mintB.toBase58()];return z(G({},i),{[o]:z(G({},r),{id:new g(o),configInfo:r.configInfo,version:7,authority:Jt(r.programId).publicKey,mintA:Ue({address:s,decimals:r.mintDecimalA,programId:r.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[s])!=null&&c.feeConfig?tt((u=t[s])==null?void 0:u.feeConfig):void 0}}),mintB:Ue({address:a,decimals:r.mintDecimalB,programId:r.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?tt((m=t[a])==null?void 0:m.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),i=await dn({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),o=Ue({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:i[t.mintA.toBase58()].feeConfig?tt(i[t.mintA.toBase58()].feeConfig):void 0}}),r=Ue({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:i[t.mintB.toBase58()].feeConfig?tt(i[t.mintB.toBase58()].feeConfig):void 0}}),s=Ue({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:ae.toBase58()}),a={id:t.configId.toBase58(),index:t.configInfo.index,protocolFeeRate:t.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:t.configInfo.tradeFeeRate.toNumber(),fundFeeRate:t.configInfo.fundFeeRate.toNumber(),createPoolFee:t.configInfo.createPoolFee.toString()},c={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};return{poolInfo:{programId:t.programId.toBase58(),id:e,type:"Standard",lpMint:s,lpPrice:0,lpAmount:t.lpAmount.toNumber(),config:a,mintA:o,mintB:r,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new te(t.vaultAAmount.toString()).div(10**o.decimals).toNumber(),mintAmountB:new te(t.vaultBAmount.toString()).div(10**r.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,burnPercent:0,day:c,week:c,month:c,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:o,mintB:r,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:Jt(t.programId).publicKey.toBase58(),mintLp:s,config:a,observationId:Tt(t.programId,new g(e)).publicKey.toBase58()},rpcData:t}}async createPool(f){var b=f,{poolId:e,programId:t,poolFeeAccount:i,startTime:o,ownerInfo:r,associatedOnly:s=!1,checkCreateATAOwner:a=!1,txVersion:c,feeConfig:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d}=b,p=we(b,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer"]);var K,$,ue;let y=r.feePayer||((K=this.scope.owner)==null?void 0:K.publicKey),P=new J(new g(p.mintA.address).toBuffer()).lte(new J(new g(p.mintB.address).toBuffer())),[w,A]=P?[p.mintA,p.mintB]:[p.mintB,p.mintA],[k,B]=P?[p.mintAAmount,p.mintBAmount]:[p.mintBAmount,p.mintAAmount],h=r.useSOLBalance&&w.address===it.toBase58(),I=r.useSOLBalance&&A.address===it.toBase58(),[x,N]=[new g(w.address),new g(A.address)],L=this.createTxBuilder(d),{account:S,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:x,tokenProgram:w.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:y,amount:k}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:s,checkCreateATAOwner:a});L.addInstruction(R||{});let{account:D,instructionParams:q}=await this.scope.account.getOrCreateTokenAccount({mint:new g(A.address),tokenProgram:A.programId,owner:this.scope.ownerPubKey,createInfo:I?{payer:y,amount:B}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:s,checkCreateATAOwner:a});if(L.addInstruction(q||{}),S===void 0||D===void 0)throw Error("you don't has some token account");let v=Fn({poolId:e,programId:t,configId:new g(u.id),mintA:x,mintB:N});return L.addInstruction({instructions:[Qi(t,this.scope.ownerPubKey,new g(u.id),v.authority,v.poolId,x,N,v.lpMint,S,D,de(this.scope.ownerPubKey,v.lpMint).publicKey,v.vaultA,v.vaultB,i,new g(($=w.programId)!=null?$:ae),new g((ue=A.programId)!=null?ue:ae),v.observationId,k,B,o)],instructionTypes:[ie.CpmmCreatePool]}),L.addCustomComputeBudget(l),L.addTipInstruction(m),L.versionBuild({txVersion:c,extInfo:{address:z(G({},v),{mintA:w,mintB:A,programId:t,poolFeeAccount:i,feeConfig:u})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:i,inputAmount:o,baseIn:r,slippage:s,computeResult:a,computeBudgetConfig:c,txTipConfig:u,config:l,txVersion:m,feePayer:d}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),o.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:o.toString()});let{account:p}=this.scope,{bypassAssociatedCheck:f,checkCreateATAOwner:b}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},l),y=a?void 0:await this.getRpcPoolInfo(t.id),{liquidity:P,inputAmountFee:w,anotherAmount:A}=a||this.computePairAmount({poolInfo:z(G({},t),{lpAmount:new te(y.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:y.baseReserve,quoteReserve:y.quoteReserve,slippage:new pe(0),baseIn:r,epochInfo:await this.scope.fetchEpochInfo(),amount:new te(o.toString()).div(10**(r?t.mintA.decimals:t.mintB.decimals))}),k=A.amount,B=t.mintA.address===it.toString(),h=t.mintB.address===it.toString(),I=this.createTxBuilder(d),[x,N]=[new g(t.mintA.address),new g(t.mintB.address)],{account:L,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new g(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:B||(r?o:k).isZero()?{payer:this.scope.ownerPubKey,amount:r?o:k}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:!1,checkCreateATAOwner:b});I.addInstruction(S||{});let{account:R,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new g(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||(r?k:o).isZero()?{payer:this.scope.ownerPubKey,amount:r?k:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:b});I.addInstruction(D||{}),!L&&!R&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",p.tokenAccounts);let q=await p.getCreatedTokenAccount({mint:new g(t.lpMint.address)}),Pe=await p.handleTokenAccount({side:"out",amount:0,mint:new g(t.lpMint.address),tokenAccount:q,bypassAssociatedCheck:f,checkCreateATAOwner:b}),{tokenAccount:v}=Pe,K=we(Pe,["tokenAccount"]);I.addInstruction(K);let $=i!=null?i:await this.getCpmmPoolKeys(t.id),ue=new pe(new J(1)).sub(s);return I.addInstruction({instructions:[Ji(new g(t.programId),this.scope.ownerPubKey,new g($.authority),new g(t.id),v,L,R,new g($.vault.A),new g($.vault.B),x,N,new g(t.lpMint.address),a?a==null?void 0:a.liquidity:ue.mul(P).quotient,r?w.amount:k,r?k:w.amount)],instructionTypes:[ie.CpmmAddLiquidity],lookupTableAddress:$.lookupTableAccount?[$.lookupTableAccount]:[]}),I.addCustomComputeBudget(c),I.addTipInstruction(u),I.versionBuild({txVersion:m})}async withdrawLiquidity(e){var K,$;let{poolInfo:t,poolKeys:i,lpAmount:o,slippage:r,computeBudgetConfig:s,txTipConfig:a,txVersion:c,feePayer:u,closeWsol:l=!0}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let m=new pe(new J(1)).sub(r),d=await this.getRpcPoolInfo(t.id),[p,f]=[m.mul(o.mul(d.baseReserve).div(d.lpAmount)).quotient,m.mul(o.mul(d.quoteReserve).div(d.lpAmount)).quotient],b=await this.scope.fetchEpochInfo(),[y,P]=[he(p,t.mintA.extensions.feeConfig,b,!1),he(f,t.mintB.extensions.feeConfig,b,!1)],{account:w}=this.scope,A=this.createTxBuilder(u),[k,B]=[new g(t.mintA.address),new g(t.mintB.address)],h=k.equals(le),I=B.equals(le),x,N,{account:L,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new g(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(h&&l),associatedOnly:!h,checkCreateATAOwner:!1});x=L,S&&A.addInstruction(S);let{account:R,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new g(t.mintB.address),notUseTokenAccount:I,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(I&&l),associatedOnly:!I,checkCreateATAOwner:!1});N=R,D&&A.addInstruction(D),(!x||!N)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",w.tokenAccounts);let q=await w.getCreatedTokenAccount({mint:new g(t.lpMint.address)});q||this.logAndCreateError("cannot found lp token account","tokenAccounts",w.tokenAccounts);let v=i!=null?i:await this.getCpmmPoolKeys(t.id);return A.addInstruction({instructions:[$i(new g(t.programId),this.scope.ownerPubKey,new g(v.authority),new g(t.id),q,x,N,new g(v.vault.A),new g(v.vault.B),k,B,new g(t.lpMint.address),o,p.sub((K=y.fee)!=null?K:new J(0)),f.sub(($=P.fee)!=null?$:new J(0)))],instructionTypes:[ie.CpmmWithdrawLiquidity],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),A.addCustomComputeBudget(s),A.addTipInstruction(a),A.versionBuild({txVersion:c})}async swap(e){var S,R,D,q,v,K;let{poolInfo:t,poolKeys:i,baseIn:o,fixedOut:r,inputAmount:s,swapResult:a,slippage:c=0,config:u,computeBudgetConfig:l,txTipConfig:m,txVersion:d,feePayer:p}=e,{bypassAssociatedCheck:f,checkCreateATAOwner:b,associatedOnly:y}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},u),P=this.createTxBuilder(p),[w,A]=[new g(t.mintA.address),new g(t.mintB.address)];r?a.inputAmount=a.inputAmount.mul(new J((1+c)*1e4)).div(new J(1e4)):a.outputAmount=a.outputAmount.mul(new J((1-c)*1e4)).div(new J(1e4));let k=t.mintA.address===le.toBase58(),B=t.mintB.address===le.toBase58(),{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:w,tokenProgram:new g((S=t.mintA.programId)!=null?S:ae),owner:this.scope.ownerPubKey,createInfo:k||!o?{payer:p||this.scope.ownerPubKey,amount:o?a.inputAmount:0}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:y,checkCreateATAOwner:b});I&&P.addInstruction(I);let{account:x,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:A,tokenProgram:new g((R=t.mintB.programId)!=null?R:ae),owner:this.scope.ownerPubKey,createInfo:B||o?{payer:p||this.scope.ownerPubKey,amount:o?0:a.inputAmount}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:y,checkCreateATAOwner:b});N&&P.addInstruction(N),(!h||!x)&&this.logAndCreateError("user do not have token account",{mintA:t.mintA.symbol||t.mintA.address,mintB:t.mintB.symbol||t.mintB.address,mintATokenAcc:h,mintBTokenAcc:x,mintAUseSOLBalance:k,mintBUseSOLBalance:B,associatedOnly:y});let L=i!=null?i:await this.getCpmmPoolKeys(t.id);return P.addInstruction({instructions:[r?tr(new g(t.programId),this.scope.ownerPubKey,new g(L.authority),new g(L.config.id),new g(t.id),o?h:x,o?x:h,new g(L.vault[o?"A":"B"]),new g(L.vault[o?"B":"A"]),new g((v=t[o?"mintA":"mintB"].programId)!=null?v:ae),new g((K=t[o?"mintB":"mintA"].programId)!=null?K:ae),o?w:A,o?A:w,Tt(new g(t.programId),new g(t.id)).publicKey,a.inputAmount,a.outputAmount):er(new g(t.programId),this.scope.ownerPubKey,new g(L.authority),new g(L.config.id),new g(t.id),o?h:x,o?x:h,new g(L.vault[o?"A":"B"]),new g(L.vault[o?"B":"A"]),new g((D=t[o?"mintA":"mintB"].programId)!=null?D:ae),new g((q=t[o?"mintB":"mintA"].programId)!=null?q:ae),o?w:A,o?A:w,Tt(new g(t.programId),new g(t.id)).publicKey,s,a.outputAmount)],instructionTypes:[r?ie.CpmmSwapBaseOut:ie.ClmmSwapBaseIn]}),P.addCustomComputeBudget(l),P.addTipInstruction(m),P.versionBuild({txVersion:d})}async lockLp(e){var d,p,f,b,y;let{poolInfo:t,lpAmount:i,computeBudgetConfig:o,txTipConfig:r,txVersion:s,feePayer:a,feeNftOwner:c}=e;i.isZero()&&this.logAndCreateError("lpAmount must greater than zero",{lpAmount:i.toString()});let u=this.createTxBuilder(a),l=(d=e.poolKeys)!=null?d:await this.getCpmmPoolKeys(t.id),m=await nr({poolInfo:t,poolKeys:l,ownerInfo:{wallet:this.scope.ownerPubKey,feePayer:(p=e.feePayer)!=null?p:this.scope.ownerPubKey},feeNftOwner:c!=null?c:this.scope.ownerPubKey,lockProgram:(f=e.programId)!=null?f:Xt,lockAuthProgram:(b=e.authProgram)!=null?b:Ht,lpAmount:i,withMetadata:(y=e.withMetadata)!=null?y:!0,getEphemeralSigners:e.getEphemeralSigners});return u.addInstruction(m),u.addCustomComputeBudget(o),u.addTipInstruction(r),u.versionBuild({txVersion:s,extInfo:m.address})}async harvestLockLp(e){var R;let{poolInfo:t,lpFeeAmount:i,nftMint:o,programId:r=Xt,authProgram:s=Ht,cpmmProgram:a,computeBudgetConfig:c,txTipConfig:u,txVersion:l,closeWsol:m=!0}=e;i.isZero()&&this.logAndCreateError("lpFeeAmount must greater than zero",{lpAmount:i.toString()});let d=e.feePayer||this.scope.ownerPubKey,p=this.createTxBuilder(d),[f,b]=[new g(t.mintA.address),new g(t.mintB.address)],y=f.equals(le),P=b.equals(le),w,A,{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new g(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(y&&m),associatedOnly:!y,checkCreateATAOwner:!1});w=k,B&&p.addInstruction(B);let{account:h,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new g(t.mintB.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(P&&m),associatedOnly:!P,checkCreateATAOwner:!1});A=h,I&&p.addInstruction(I),(!w||!A)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:w,tokenAccountB:A});let x=(R=e.poolKeys)!=null?R:await this.getCpmmPoolKeys(t.id),{publicKey:N}=de(d,o,ae),{publicKey:L}=ht(r,o),{publicKey:S}=de(s,new g(t.lpMint.address),ae);return p.addInstruction({instructions:[Xn({programId:r,nftOwner:this.scope.ownerPubKey,auth:s,nftMint:o,nftAccount:N,lockPda:L,poolId:new g(t.id),mintLp:new g(x.mintLp.address),userVaultA:w,userVaultB:A,poolVaultA:new g(x.vault.A),poolVaultB:new g(x.vault.B),mintA:f,mintB:b,lockLpVault:S,lpFeeAmount:i,cpmmProgram:a==null?void 0:a.programId,cpmmAuthProgram:a==null?void 0:a.authProgram})],instructionTypes:[ie.CpmmCollectLockFee]}),p.addCustomComputeBudget(c),p.addTipInstruction(u),p.versionBuild({txVersion:l})}async harvestMultiLockLp(e){var d;let{lockInfo:t,programId:i=Xt,authProgram:o=Ht,cpmmProgram:r,computeBudgetConfig:s,txVersion:a,closeWsol:c=!0}=e,u=e.feePayer||this.scope.ownerPubKey,l=this.createTxBuilder(u),m={};for(let p of t){let{poolInfo:f,lpFeeAmount:b,nftMint:y}=p;if(b.isZero())continue;let[P,w]=[new g(f.mintA.address),new g(f.mintB.address)],A=P.equals(le),k=w.equals(le),B=m[f.mintA.address],h=m[f.mintB.address];if(!B)if(A){let{account:S,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintA.programId,mint:new g(f.mintA.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});B=S,R&&l.addInstruction(R),m[f.mintA.address]=S}else{let S=new g(f.mintA.address);B=this.scope.account.getAssociatedTokenAccount(S,new g(f.mintA.programId)),l.addInstruction({instructions:[nn(this.scope.ownerPubKey,B,this.scope.ownerPubKey,S,new g(f.mintA.programId))]}),m[f.mintA.address]=B}if(!h)if(k){let{account:S,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintB.programId,mint:new g(f.mintB.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});h=S,R&&l.addInstruction(R),m[f.mintB.address]=S}else{let S=new g(f.mintB.address);h=this.scope.account.getAssociatedTokenAccount(S,new g(f.mintB.programId)),l.addInstruction({instructions:[nn(this.scope.ownerPubKey,h,this.scope.ownerPubKey,S,new g(f.mintB.programId))]}),m[f.mintB.address]=h}(!B||!h)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:B,tokenAccountB:h});let I=(d=p.poolKeys)!=null?d:await this.getCpmmPoolKeys(f.id),{publicKey:x}=de(u,y,ae),{publicKey:N}=ht(i,y),{publicKey:L}=de(o,new g(f.lpMint.address),ae);l.addInstruction({instructions:[Xn({programId:i,nftOwner:this.scope.ownerPubKey,auth:o,nftMint:y,nftAccount:x,lockPda:N,poolId:new g(f.id),mintLp:new g(I.mintLp.address),userVaultA:B,userVaultB:h,poolVaultA:new g(I.vault.A),poolVaultB:new g(I.vault.B),mintA:P,mintB:w,lockLpVault:L,lpFeeAmount:b,cpmmProgram:r==null?void 0:r.programId,cpmmAuthProgram:r==null?void 0:r.authProgram})],instructionTypes:[ie.CpmmCollectLockFee]})}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:s}):l.sizeCheckBuild({computeBudgetConfig:s})}async createPoolWithPermission(b){var y=b,{poolId:e,programId:t,poolFeeAccount:i,startTime:o,ownerInfo:r,associatedOnly:s=!1,checkCreateATAOwner:a=!1,txVersion:c,feeConfig:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d,feeOn:p}=y,f=we(y,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer","feeOn"]);var $,ue,Pe;console.log("***this method only available for wallet with permissions***");let P=r.feePayer||(($=this.scope.owner)==null?void 0:$.publicKey),w=new J(new g(f.mintA.address).toBuffer()).lte(new J(new g(f.mintB.address).toBuffer())),[A,k]=w?[f.mintA,f.mintB]:[f.mintB,f.mintA],[B,h]=w?[f.mintAAmount,f.mintBAmount]:[f.mintBAmount,f.mintAAmount],I=r.useSOLBalance&&A.address===it.toBase58(),x=r.useSOLBalance&&k.address===it.toBase58(),[N,L]=[new g(A.address),new g(k.address)],S=this.createTxBuilder(d),{account:R,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({mint:N,tokenProgram:A.programId,owner:this.scope.ownerPubKey,createInfo:I?{payer:P,amount:B}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:s,checkCreateATAOwner:a});S.addInstruction(D||{});let{account:q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({mint:new g(k.address),tokenProgram:k.programId,owner:this.scope.ownerPubKey,createInfo:x?{payer:P,amount:h}:void 0,notUseTokenAccount:x,skipCloseAccount:!x,associatedOnly:x?!1:s,checkCreateATAOwner:a});if(S.addInstruction(v||{}),R===void 0||q===void 0)throw Error("you don't has some token account");let K=Fn({poolId:e,programId:t,configId:new g(u.id),mintA:N,mintB:L});return S.addInstruction({instructions:[ir(t,this.scope.ownerPubKey,this.scope.ownerPubKey,new g(u.id),K.authority,K.poolId,N,L,K.lpMint,R,q,de(this.scope.ownerPubKey,K.lpMint).publicKey,K.vaultA,K.vaultB,i,new g((ue=A.programId)!=null?ue:ae),new g((Pe=k.programId)!=null?Pe:ae),K.observationId,Vi(t,this.scope.ownerPubKey).publicKey,B,h,o,p)],instructionTypes:[ie.CpmmCreatePool]}),S.addCustomComputeBudget(l),S.addTipInstruction(m),S.versionBuild({txVersion:c,extInfo:{address:z(G({},K),{mintA:A,mintB:k,programId:t,poolFeeAccount:i,feeConfig:u})}})}async collectCreatorFees({poolInfo:e,poolKeys:t,programId:i=ft,txVersion:o,computeBudgetConfig:r,txTipConfig:s,feePayer:a}){let c=a||this.scope.ownerPubKey,u=this.createTxBuilder(c),l=t!=null?t:await this.getCpmmPoolKeys(e.id),[m,d,p,f]=[new g(e.mintA.address),new g(e.mintB.address),new g(e.mintA.programId),new g(e.mintB.programId)],b=this.scope.account.getAssociatedTokenAccount(m,p),y=this.scope.account.getAssociatedTokenAccount(d,f);return u.addInstruction({instructions:[nn(this.scope.ownerPubKey,b,this.scope.ownerPubKey,m,new g(e.mintA.programId)),nn(this.scope.ownerPubKey,y,this.scope.ownerPubKey,d,new g(e.mintB.programId))]}),u.addInstruction({instructions:[Hn(i,this.scope.ownerPubKey,new g(l.authority),new g(l.id),new g(l.config.id),new g(l.vault.A),new g(l.vault.B),m,d,b,y,p,f)],instructionTypes:[]}),u.addCustomComputeBudget(r),u.addTipInstruction(s),u.versionBuild({txVersion:o})}async collectMultiCreatorFees({poolInfoList:e,poolKeyList:t,programId:i=ft,txVersion:o,computeBudgetConfig:r,feePayer:s}){let a=s||this.scope.ownerPubKey,c=this.createTxBuilder(a),u={},l=t!=null?t:[];if(!l.length){let d=e.map(y=>y.id),p=95,f=[];for(let y=0;y<d.length;y+=p)f.push(d.slice(y,y+p));l=(await Promise.all(f.map(y=>this.scope.api.fetchPoolKeysById({idList:y})))).flat()}let m=l.reduce((d,p)=>z(G({},d),{[p.id]:p}),{});for(let d of e){let p=m[d.id]||await this.getCpmmPoolKeys(d.id),[f,b,y,P]=[new g(d.mintA.address),new g(d.mintB.address),new g(d.mintA.programId),new g(d.mintB.programId)],w=u[d.mintA.address]||this.scope.account.getAssociatedTokenAccount(f,y),A=u[d.mintB.address]||this.scope.account.getAssociatedTokenAccount(b,P);u[d.mintA.address]=w,u[d.mintB.address]=A,c.addInstruction({instructions:[Hn(i,this.scope.ownerPubKey,new g(p.authority),new g(p.id),new g(p.config.id),new g(p.vault.A),new g(p.vault.B),f,b,w,A,y,P)],instructionTypes:[]})}return o===0?c.sizeCheckBuildV0({computeBudgetConfig:r}):c.sizeCheckBuild({computeBudgetConfig:r})}computeSwapAmount({pool:e,amountIn:t,outputMint:i,slippage:o,swapBaseIn:r=!0}){let s=i.toString()===e.mintB.address,a=e.feeOn===0||e.feeOn===2,c=r?kt.swapBaseInput(t,s?e.baseReserve:e.quoteReserve,s?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate,e.configInfo.creatorFeeRate,e.configInfo.protocolFeeRate,e.configInfo.fundFeeRate,a):kt.swapBaseOutput(t,s?e.baseReserve:e.quoteReserve,s?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate,e.configInfo.creatorFeeRate,e.configInfo.protocolFeeRate,e.configInfo.fundFeeRate,a),u=new te(c.outputAmount.toString()).div(c.inputAmount.toString()),l=c.outputAmount.mul(new J((1-o)*1e4)).div(new J(1e4));return{allTrade:c.inputAmount.eq(t),amountIn:t,amountOut:c.outputAmount,minAmountOut:l,executionPrice:u,fee:c.tradeFee,priceImpact:e.poolPrice.sub(u).div(e.poolPrice)}}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:i,amount:o,slippage:r,epochInfo:s,baseIn:a}){var k,B,h,I,x,N,L,S,R;let c=1-Number(r.toSignificant())/100,u=new J(new te(o).mul(10**e[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),l=he(u,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=u.sub((k=l.fee)!=null?k:new J(0)),d=new J(new te(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,te.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",i.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",u.toString(),"amountInFee:",(h=(B=l.fee)==null?void 0:B.toString())!=null?h:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${r.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let f=m.mul(d).div(p==="base"?t:i),b={amount:kn,fee:void 0,expirationTime:void 0};if(!m.isZero()){let D=Is(f,t,i,d);this.logDebug("lpAmountData:",{amountA:D.amountA.toString(),amountB:D.amountB.toString()}),b=he(D[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let y=new pe(new J(1)).add(r),P=new pe(new J(1)).sub(r),w=he(y.mul(b.amount.sub((I=b.fee)!=null?I:new J(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0),A=he(P.mul(b.amount.sub((x=b.fee)!=null?x:new J(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",b.amount.toString(),"anotherAmountFee:",(L=(N=b.fee)==null?void 0:N.toString())!=null?L:0,"maxAnotherAmount:",w.amount.toString(),"maxAnotherAmountFee:",(R=(S=w.fee)==null?void 0:S.toString())!=null?R:0),{inputAmountFee:l,anotherAmount:b,maxAnotherAmount:w,minAnotherAmount:A,liquidity:f}}};function Is(n,e,t,i){let o=n.mul(e).div(i);!o.isZero()&&!n.mul(e).mod(i).isZero()&&(o=o.add(new J(1)));let r=n.mul(t).div(i);return!r.isZero()&&!n.mul(t).mod(i).isZero()&&(r=r.add(new J(1))),{amountA:o,amountB:r}}export{zn as default};
2
2
  /*!
3
3
  * decimal.js v10.6.0
4
4
  * An arbitrary-precision Decimal type for JavaScript.