\n );\n}\n\nexport default Snippet;\n","import React from \"react\";\nimport { HashRouter, Route, Link } from \"react-router-dom\";\nimport { Menu } from \"semantic-ui-react\";\nimport { getWeb3 } from \"web3-snippets/eth-helpers\";\nimport \"./App.css\";\nimport ApiKeysContext from \"./ApiKeys\";\nimport CheckContract from \"./snippets/CheckContract\";\nimport CheckApprove from \"./snippets/CheckApprove\";\nimport UniswapLoss from \"./snippets/UniswapLoss\";\nimport Compounding from \"./snippets/Compounding\";\nimport PancakeLoss from \"./snippets/PancakeLoss\";\nimport PoolPosition from \"./snippets/PoolPosition\";\n\nfunction App() {\n return (\n \n \n
\n \n \n \n \n \n \n \n
\n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (response.status === 404 || (contentType != null && contentType.indexOf(\"javascript\") === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\");\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"semantic-ui-css/semantic.min.css\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/docs/static/js/main.0500f203.chunk.js b/docs/static/js/main.09e4141f.chunk.js
similarity index 91%
rename from docs/static/js/main.0500f203.chunk.js
rename to docs/static/js/main.09e4141f.chunk.js
index a0a2f53..7b45239 100644
--- a/docs/static/js/main.0500f203.chunk.js
+++ b/docs/static/js/main.09e4141f.chunk.js
@@ -1,2 +1,2 @@
-(this.webpackJsonpwww=this.webpackJsonpwww||[]).push([[0],{437:function(e,t,n){e.exports=n(907)},443:function(e,t,n){},456:function(e,t){},480:function(e,t){},482:function(e,t){},499:function(e,t){},575:function(e,t){},577:function(e,t){},586:function(e,t){},588:function(e,t){},613:function(e,t){},615:function(e,t){},616:function(e,t){},622:function(e,t){},624:function(e,t){},642:function(e,t){},644:function(e,t){},656:function(e,t){},659:function(e,t){},665:function(e,t){},667:function(e,t){},700:function(e,t){},779:function(e,t,n){},907:function(e,t,n){"use strict";n.r(t);var a=n(0),i=n.n(a),u=n(78),p=n.n(u),s=(n(442),n(443),n(70)),r=n(26),y=n(918),o=n(7),l=n.n(o),d=n(19),m=n(8),c=n.n(m),b=n(407),T=n.n(b);function f(e){var t=new T.a(e);return t.eth.transactionBlockTimeout=0,t.eth.transactionPollingTimeout=0,t.eth.transactionConfirmationBlocks=1,t}function v(e,t,n){return new n.eth.Contract(t,e)}function w(e,t,n,a){return h.apply(this,arguments)}function h(){return(h=Object(d.a)(l.a.mark((function e(t,n,a,i){var u,p,s,r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=v(t,n,a),p=[u.methods.decimals().call(),u.methods.name().call(),u.methods.symbol().call()],x(i)&&p.push(u.methods.balanceOf(i).call()),e.next=5,Promise.all(p);case 5:return s=e.sent,r=new c.a(x(i)?s[3]:0),e.abrupt("return",{Address:t,Decimals:s[0],Name:s[1],Symbol:s[2],Balance:M(r,s[0])});case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function M(e,t){var n="string"===typeof t?t:t.Decimals;return e.dividedBy("1e".concat(n)).toNumber()}function k(e,t){return new c.a(e).dividedBy("1e".concat(t.Decimals))}function x(e){return"string"===typeof e&&e.startsWith("0x")}n(779);var g=i.a.createContext({});function O(){return Object(a.useContext)(g)}var A=g,S=n(37),E=n(30),C=n(24),I=n(916),B=n(919),P=n(917),D=n(36),_=n(33),L=n.n(_),j=n(16),R=n.n(j),F=n(232),W=n.n(F),U=n(233),N=n.n(U);function H(e){return G.apply(this,arguments)}function G(){return(G=Object(d.a)(l.a.mark((function e(t){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e){return setTimeout(e,t)})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function V(e){var t=(new Date).getTime()/1e3-parseInt(e);return Math.round(10*t/86400)/10}function q(){return Math.round((new Date).getTime()/1e3)}function J(e){return Y.apply(this,arguments)}function Y(){return(Y=Object(d.a)(l.a.mark((function e(t){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,N()(t);case 2:return n=e.sent,e.next=5,n.json();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function z(e,t){return X.apply(this,arguments)}function X(){return(X=Object(d.a)(l.a.mark((function e(t,n){var a;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,N()(t,{method:"post",body:n,headers:{"Content-Type":"application/json"}});case 2:return a=e.sent,e.next=5,a.json();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Q(e){return K.apply(this,arguments)}function K(){return(K=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p,s,r,y,o,d;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.web3,a=t.ethscn,i=t.address,u=t.hexData,p={Address:i,PublishedAbi:!1,SourceCodeUrl:"",DeployedDaysAgo:0,NumTx:0,NumTxHaveMore:!1,NumTxInLast24Hours:0,TxListUrl:"",TxStats:{},Tx100DaysAgo:0,Tx1000DaysAgo:0,EthSpentOnGas:0,DifferentAddresses:0,MethodCall:{}},e.next=4,J("https://api.etherscan.io/api?module=contract&action=getabi&address=".concat(i,"&apikey=").concat(a));case 4:return"1"===(r=e.sent).status&&r.result&&(s=JSON.parse(r.result),p.PublishedAbi=!0,p.SourceCodeUrl="https://etherscan.io/address/".concat(i,"#code")),p.TxListUrl="https://etherscan.io/txs?a=".concat(i),e.next=9,J("https://api.etherscan.io/api?module=account&action=txlist&address=".concat(i,"&startblock=0&endblock=99999999&sort=asc&apikey=").concat(a));case 9:return y=e.sent,e.next=12,J("https://api.etherscan.io/api?module=account&action=txlist&address=".concat(i,"&startblock=0&endblock=99999999&sort=desc&apikey=").concat(a));case 12:if(o=e.sent,!("1"===y.status&&y.result&&y.result.length>0&&"1"===o.status&&o.result&&o.result.length>0)){e.next=26;break}if(""===y.result[0].to&&y.result[0].input.length>20&&(p.DeployedDaysAgo=V(y.result[0].timeStamp)),!L.a.some(y.result,(function(e){return""!==e.to&&e.to!==i.toLowerCase()}))&&!L.a.some(y.result,(function(e){return""!==e.to&&e.to!==i.toLowerCase()}))){e.next=17;break}throw new Error("Address is not destination of all transactions, is this a contract?");case 17:y.result.length<1e4&&o.result.length<1e4?(p.NumTx=y.result.length,p.NumTxHaveMore=!1):(p.NumTx=1e4,p.NumTxHaveMore=!0),y.result.length>100&&(p.Tx100DaysAgo=V(y.result[100].timeStamp)),y.result.length>1e3&&(p.Tx1000DaysAgo=V(y.result[1e3].timeStamp)),d=q()-86400,p.NumTxInLast24Hours=L.a.reduce(o.result,(function(e,t){return e+(parseInt(t.timeStamp)>d?1:0)}),0),p.EthSpentOnGas=L.a.reduce(o.result,(function(e,t){return e+parseInt(t.gasUsed)*(parseInt(t.gasPrice)/1e18)}),0),p.DifferentAddresses=L.a.uniqBy(o.result,(function(e){return e.from.toLowerCase()})).length,p.EthSpentOnGas=Math.round(1e3*p.EthSpentOnGas)/1e3,s&&(p.TxStats=ee(s,o.result));case 26:if(!u||!s){e.next=32;break}return e.next=29,te(n,a,s,u);case 29:p.MethodCall=e.sent,e.next=33;break;case 32:delete p.MethodCall;case 33:return e.abrupt("return",p);case 34:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function $(e){return Z.apply(this,arguments)}function Z(){return(Z=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.web3,a=t.ethscn,i=t.hexData,u={MethodCall:{}},p=[{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],e.next=5,te(n,a,p,i);case 5:return u.MethodCall=e.sent,e.abrupt("return",u);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ee(e,t){var n,a=0,i={},u=new W.a(e),p=Object(D.a)(t);try{for(p.s();!(n=p.n()).done;){var s=n.value,r=u.decodeData(s.input);if(r.method&&(i[r.method]||(i[r.method]=0),i[r.method]++,++a>1e3))break}}catch(y){p.e(y)}finally{p.f()}return L.a.mapValues(i,(function(e){return Math.round(1e4*e/a)/100}))}function te(e,t,n,a){return ne.apply(this,arguments)}function ne(){return(ne=Object(d.a)(l.a.mark((function e(t,n,a,i){var u,p,s,r,y,o,d,m;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:u=new W.a(a),p=u.decodeData(i),s={Method:p.method,Args:[]},r=0;case 4:if(!(r20);case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var ue=function(){var e=O(),t=e.web3,n=e.ethscn,u=Object(a.useState)({}),p=Object(C.a)(u,2),s=p[0],r=p[1],y=Object(a.useState)(),o=Object(C.a)(y,2),m=o[0],c=o[1],b=Object(a.useState)(!1),T=Object(C.a)(b,2),f=T[0],v=T[1],w=function(e,t){var n=t.name,a=t.value;return r(Object(E.a)(Object(E.a)({},s),{},Object(S.a)({},n,a)))},h=function(){var e=Object(d.a)(l.a.mark((function e(){var a,i,u;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=s.address,i=s.hexData,v(!0),e.next=4,Q({web3:t,ethscn:n,address:a,hexData:i});case 4:u=e.sent,c(u),v(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Check Contract (Anti-Phishing)"),i.a.createElement("br",null),i.a.createElement(I.a,{textAlign:"left"},i.a.createElement(B.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:f,onSubmit:h,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Contract Address",name:"address",placeholder:"0xbD17B1ce622d73bD438b9E658acA5996dc394b0d",onChange:w}),i.a.createElement(P.a.TextArea,{label:"Method Call Hex Data",name:"hexData",placeholder:"0x095ea7b3000000000000000000000000...",onChange:w}),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(m,null,2))))};var pe=function(){var e=O(),t=e.web3,n=e.ethscn,u=Object(a.useState)({}),p=Object(C.a)(u,2),s=p[0],r=p[1],y=Object(a.useState)(),o=Object(C.a)(y,2),m=o[0],c=o[1],b=Object(a.useState)(!1),T=Object(C.a)(b,2),f=T[0],v=T[1],w=function(){var e=Object(d.a)(l.a.mark((function e(){var a,i;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=s.hexData,v(!0),e.next=4,$({web3:t,ethscn:n,hexData:a});case 4:i=e.sent,c(i),v(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Check Approve (Anti-Phishing)"),i.a.createElement("br",null),i.a.createElement(I.a,{textAlign:"left"},i.a.createElement(B.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:f,onSubmit:w,spellcheck:"false"},i.a.createElement(P.a.TextArea,{label:"Method Call Hex Data",name:"hexData",placeholder:"0x095ea7b3000000000000000000000000...",onChange:function(e,t){var n=t.name,a=t.value;return r(Object(E.a)(Object(E.a)({},s),{},Object(S.a)({},n,a)))}}),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(m,null,2))))},se=n(104),re=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"sync",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ye=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"guy",type:"address"},{name:"wad",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"src",type:"address"},{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"wad",type:"uint256"}],name:"withdraw",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"deposit",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!0,inputs:[{name:"",type:"address"},{name:"",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"guy",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Withdrawal",type:"event"}],oe="0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f",le="0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496";function de(e){return me.apply(this,arguments)}function me(){return(me=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p,s,r,y,o,d,m,b,T,f,v,w,h,M,x,g,O,A,S,E,C,I,B,P,_,j,R,F;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.web3,u=t.fromBlock,p=t.toBlock,s=t.pair,r=t.lp,y={Tokens:[],LiquidityChanges:[],SumLpTokens:new c.a(0),SumTokenDeposits:[new c.a(0),new c.a(0)],AvailableTokensToWithdraw:[void 0,void 0],TotalWorth:{},AvailableAfterRebalance:[]},u||(u=0),p||(p="latest"),u=parseInt(u),"latest"!==p&&(p=parseInt(p)),o=new i.eth.Contract(re,s),e.next=9,Te(o,i);case 9:return d=e.sent,y.Tokens[0]=d[0],y.Tokens[1]=d[1],e.next=14,o.getPastEvents("Transfer",{filter:{from:"0x0000000000000000000000000000000000000000",to:r},fromBlock:u,toBlock:p});case 14:return m=e.sent,(n=y.LiquidityChanges).push.apply(n,Object(se.a)(m.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18"),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),e.next=18,o.getPastEvents("Transfer",{filter:{from:r,to:s},fromBlock:u,toBlock:p});case 18:b=e.sent,(a=y.LiquidityChanges).push.apply(a,Object(se.a)(b.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18").negated(),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),y.LiquidityChanges.sort((function(e,t){return e.BlockNumber-t.BlockNumber})),T=Object(D.a)(y.LiquidityChanges),e.prev=22,T.s();case 24:if((f=T.n()).done){e.next=35;break}return v=f.value,e.next=28,H(200);case 28:return e.next=30,i.eth.getTransactionReceipt(v.TxHash);case 30:w=e.sent,h=Object(D.a)(w.logs);try{for(h.s();!(M=h.n()).done;)(x=M.value).topics[0].toLowerCase()===oe&&(g=L.a.find(re,(function(e){return"Mint"===e.name})).inputs,O=i.eth.abi.decodeLog(g,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(O.amount0,y.Tokens[0]),v.TokenDepositDelta[1]=k(O.amount1,y.Tokens[1])),x.topics[0].toLowerCase()===le&&(A=L.a.find(re,(function(e){return"Burn"===e.name})).inputs,S=i.eth.abi.decodeLog(A,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(S.amount0,y.Tokens[0]).negated(),v.TokenDepositDelta[1]=k(S.amount1,y.Tokens[1]).negated())}catch(l){h.e(l)}finally{h.f()}case 33:e.next=24;break;case 35:e.next=40;break;case 37:e.prev=37,e.t0=e.catch(22),T.e(e.t0);case 40:return e.prev=40,T.f(),e.finish(40);case 43:E=Object(D.a)(y.LiquidityChanges);try{for(E.s();!(C=E.n()).done;)I=C.value,y.SumLpTokens=y.SumLpTokens.plus(I.LpTokenDelta),I.SumLpTokensAfter=new c.a(y.SumLpTokens),y.SumTokenDeposits[0]=y.SumTokenDeposits[0].plus(I.TokenDepositDelta[0]),y.SumTokenDeposits[1]=y.SumTokenDeposits[1].plus(I.TokenDepositDelta[1])}catch(l){E.e(l)}finally{E.f()}return e.next=47,o.methods.totalSupply().call();case 47:return B=e.sent,P=new c.a(B).dividedBy("1e18"),_=y.SumLpTokens.dividedBy(P),e.next=52,o.methods.getReserves().call();case 52:return j=e.sent,R=k(j._reserve0,y.Tokens[0]),F=k(j._reserve1,y.Tokens[1]),y.AvailableTokensToWithdraw[0]=R.multipliedBy(_),y.AvailableTokensToWithdraw[1]=F.multipliedBy(_),y.TotalWorth.SumTokenDeposits={CurrentPriceUSD:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceETH")},y.TotalWorth.AvailableTokensToWithdraw={CurrentPriceUSD:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceETH")},y.AvailableAfterRebalance[0]=be(y.AvailableTokensToWithdraw,y.Tokens,0,y.SumTokenDeposits[0]),y.AvailableAfterRebalance[1]=be(y.AvailableTokensToWithdraw,y.Tokens,1,y.SumTokenDeposits[1]),e.abrupt("return",y);case 62:case"end":return e.stop()}}),e,null,[[22,37,40,43]])})))).apply(this,arguments)}function ce(e,t,n){var a=e[0].multipliedBy(t[0][n]),i=e[1].multipliedBy(t[1][n]);return a.plus(i)}function be(e,t,n,a){var i=[];i[n]=new c.a(a);var u=e[n].minus(i[n]).dividedBy(t[1-n].CurrentPriceUSD).multipliedBy(t[n].CurrentPriceUSD);return i[1-n]=e[1-n].plus(u),i}function Te(e,t){return fe.apply(this,arguments)}function fe(){return(fe=Object(d.a)(l.a.mark((function e(t,n){var a,i,u,p;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=[t.methods.token0().call(),t.methods.token1().call()],e.next=3,Promise.all(a);case 3:return i=e.sent,u=[w(i[0],ye,n),w(i[1],ye,n),J("https://api.coingecko.com/api/v3/coins/ethereum/contract/".concat(i[0])),J("https://api.coingecko.com/api/v3/coins/ethereum/contract/".concat(i[1]))],e.next=7,Promise.all(u);case 7:return p=e.sent,e.abrupt("return",[ve(p[0],p[2]),ve(p[1],p[3])]);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ve(e,t){return e.CurrentPriceUSD=new c.a(t.market_data.current_price.usd),e.CurrentPriceBTC=new c.a(t.market_data.current_price.btc),e.CurrentPriceETH=new c.a(t.market_data.current_price.eth),e}var we=function(){var e=O().web3,t=Object(a.useState)({}),n=Object(C.a)(t,2),u=n[0],p=n[1],s=Object(a.useState)(),r=Object(C.a)(s,2),y=r[0],o=r[1],m=Object(a.useState)(!1),c=Object(C.a)(m,2),b=c[0],T=c[1],f=function(e,t){var n=t.name,a=t.value;return p(Object(E.a)(Object(E.a)({},u),{},Object(S.a)({},n,a)))},v=function(){var t=Object(d.a)(l.a.mark((function t(){var n,a,i,p,s;return l.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.fromBlock,a=u.toBlock,i=u.pair,p=u.lp,T(!0),t.next=4,de({web3:e,fromBlock:n,toBlock:a,pair:i,lp:p});case 4:s=t.sent,o(s),T(!1);case 7:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Uniswap Impermanent Loss"),i.a.createElement("br",null),i.a.createElement(I.a,{textAlign:"left"},i.a.createElement(B.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:b,onSubmit:v,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Uniswap Pair Contract Address",name:"pair",placeholder:"0x0d4a11d5EEaaC28EC3F61d100daF4d40471f1852",onChange:f}),i.a.createElement(P.a.Input,{label:"Liquidity Provider Wallet Address",name:"lp",placeholder:"0x533D94255aDABE5F9AC7d6755ebCe1e93a00AfC7",onChange:f}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"From Block",name:"fromBlock",value:"0",onChange:f}),i.a.createElement(P.a.Input,{fluid:!0,label:"To Block",name:"toBlock",value:"latest",onChange:f})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(y,null,2))))};function he(e){var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.cpRateMinutes,p=Me({amount:t=parseFloat(t),apy:n=parseFloat(n),days:a=parseFloat(a),cpCost:i=parseFloat(i),cpRateMinutes:u=parseFloat(u)});return p.RecommendedMinutes=function(e){for(var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.maxMin,p=0,s=0,r=u/1e5,y=.1;yp&&(p=o.CompoundingProfit,s=y)}return s}({amount:t,apy:n,days:a,cpCost:i,maxMin:10080}),p}function Me(e){var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.cpRateMinutes,p={ResultWithoutCompound:0,ResultWithCompound:0,CompoundingProfit:0,CompoundingProfitPercent:0};p.ResultWithoutCompound=t+t*n/100*a/365;for(var s=t,r=0;r+u<24*a*60;)r+=u,s+=s*n/100*u/24/60/365,s-=i;return s+=s*n/100*(24*a*60-r)/24/60/365,p.ResultWithCompound=s,p.CompoundingProfit=p.ResultWithCompound-p.ResultWithoutCompound,p.CompoundingProfitPercent=p.CompoundingProfit/p.ResultWithoutCompound*100,p}var ke=function(){var e=Object(a.useState)({}),t=Object(C.a)(e,2),n=t[0],u=t[1],p=Object(a.useState)(),s=Object(C.a)(p,2),r=s[0],y=s[1],o=Object(a.useState)(!1),l=Object(C.a)(o,2),d=l[0],m=l[1],c=function(e,t){var a=t.name,i=t.value;return u(Object(E.a)(Object(E.a)({},n),{},Object(S.a)({},a,i)))};return i.a.createElement("div",null,i.a.createElement("h2",null,"Compounding Profit Calculator"),i.a.createElement("br",null),i.a.createElement(I.a,{textAlign:"left"},i.a.createElement(B.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:d,onSubmit:function(){var e=n.amount,t=n.apy,a=n.days,i=n.cpCost,u=n.cpRateMinutes;m(!0);var p=he({amount:e,apy:t,days:a,cpCost:i,cpRateMinutes:u});y(p),m(!1)},spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Initial Amount (in tokens)",name:"amount",placeholder:"100000",onChange:c}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"APY (%)",name:"apy",placeholder:"30",onChange:c}),i.a.createElement(P.a.Input,{fluid:!0,label:"Num Days Investing",name:"days",placeholder:"7",onChange:c})),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"Cost of Compound Operation (in tokens)",name:"cpCost",placeholder:"1",onChange:c}),i.a.createElement(P.a.Input,{fluid:!0,label:"Minutes Between Compounds",name:"cpRateMinutes",placeholder:"60",onChange:c})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(r,null,2))))},xe=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"sync",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ge=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[{internalType:"address",name:"_owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}];function Oe(e){return Ae.apply(this,arguments)}function Ae(){return(Ae=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p,s,r,y,o,d,m,b,T,f,v,w,h,M,x,g,O,A,S,E,C,I,B,P,_,j,R,F;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.bscWeb3,u=t.fromBlock,p=t.toBlock,s=t.pair,r=t.lp,y={Tokens:[],LiquidityChanges:[],SumLpTokens:new c.a(0),SumTokenDeposits:[new c.a(0),new c.a(0)],AvailableTokensToWithdraw:[void 0,void 0],TotalWorth:{},AvailableAfterRebalance:[]},u||(u=0),p||(p="latest"),u=parseInt(u),"latest"!==p&&(p=parseInt(p)),o=new i.eth.Contract(xe,s),e.next=9,Ce(o,i);case 9:return d=e.sent,y.Tokens[0]=d[0],y.Tokens[1]=d[1],e.next=14,o.getPastEvents("Transfer",{filter:{from:"0x0000000000000000000000000000000000000000",to:r},fromBlock:u,toBlock:p});case 14:return m=e.sent,(n=y.LiquidityChanges).push.apply(n,Object(se.a)(m.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18"),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),e.next=18,o.getPastEvents("Transfer",{filter:{from:r,to:s},fromBlock:u,toBlock:p});case 18:b=e.sent,(a=y.LiquidityChanges).push.apply(a,Object(se.a)(b.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18").negated(),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),y.LiquidityChanges.sort((function(e,t){return e.BlockNumber-t.BlockNumber})),T=Object(D.a)(y.LiquidityChanges),e.prev=22,T.s();case 24:if((f=T.n()).done){e.next=33;break}return v=f.value,e.next=28,i.eth.getTransactionReceipt(v.TxHash);case 28:w=e.sent,h=Object(D.a)(w.logs);try{for(h.s();!(M=h.n()).done;)"0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"===(x=M.value).topics[0].toLowerCase()&&(g=L.a.find(xe,(function(e){return"Mint"===e.name})).inputs,O=i.eth.abi.decodeLog(g,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(O.amount0,y.Tokens[0]),v.TokenDepositDelta[1]=k(O.amount1,y.Tokens[1])),"0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496"===x.topics[0].toLowerCase()&&(A=L.a.find(xe,(function(e){return"Burn"===e.name})).inputs,S=i.eth.abi.decodeLog(A,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(S.amount0,y.Tokens[0]).negated(),v.TokenDepositDelta[1]=k(S.amount1,y.Tokens[1]).negated())}catch(l){h.e(l)}finally{h.f()}case 31:e.next=24;break;case 33:e.next=38;break;case 35:e.prev=35,e.t0=e.catch(22),T.e(e.t0);case 38:return e.prev=38,T.f(),e.finish(38);case 41:E=Object(D.a)(y.LiquidityChanges);try{for(E.s();!(C=E.n()).done;)I=C.value,y.SumLpTokens=y.SumLpTokens.plus(I.LpTokenDelta),I.SumLpTokensAfter=new c.a(y.SumLpTokens),y.SumTokenDeposits[0]=y.SumTokenDeposits[0].plus(I.TokenDepositDelta[0]),y.SumTokenDeposits[1]=y.SumTokenDeposits[1].plus(I.TokenDepositDelta[1])}catch(l){E.e(l)}finally{E.f()}return e.next=45,o.methods.totalSupply().call();case 45:return B=e.sent,P=new c.a(B).dividedBy("1e18"),_=y.SumLpTokens.dividedBy(P),e.next=50,o.methods.getReserves().call();case 50:return j=e.sent,R=k(j._reserve0,y.Tokens[0]),F=k(j._reserve1,y.Tokens[1]),y.AvailableTokensToWithdraw[0]=R.multipliedBy(_),y.AvailableTokensToWithdraw[1]=F.multipliedBy(_),y.TotalWorth.SumTokenDeposits={CurrentPriceUSD:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceETH")},y.TotalWorth.AvailableTokensToWithdraw={CurrentPriceUSD:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceETH")},y.AvailableAfterRebalance[0]=Ee(y.AvailableTokensToWithdraw,y.Tokens,0,y.SumTokenDeposits[0]),y.AvailableAfterRebalance[1]=Ee(y.AvailableTokensToWithdraw,y.Tokens,1,y.SumTokenDeposits[1]),e.abrupt("return",y);case 60:case"end":return e.stop()}}),e,null,[[22,35,38,41]])})))).apply(this,arguments)}function Se(e,t,n){var a=e[0].multipliedBy(t[0][n]),i=e[1].multipliedBy(t[1][n]);return a.plus(i)}function Ee(e,t,n,a){var i=[];i[n]=new c.a(a);var u=e[n].minus(i[n]).dividedBy(t[1-n].CurrentPriceUSD).multipliedBy(t[n].CurrentPriceUSD);return i[1-n]=e[1-n].plus(u),i}function Ce(e,t){return Ie.apply(this,arguments)}function Ie(){return(Ie=Object(d.a)(l.a.mark((function e(t,n){var a,i,u,p,s,r,y,o,d,m,c;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=[t.methods.token0().call(),t.methods.token1().call()],e.next=3,Promise.all(a);case 3:return i=e.sent,u=[w(i[0],ge,n),w(i[1],ge,n)],e.next=7,Promise.all(u);case 7:return p=e.sent,e.next=10,J("https://api.coingecko.com/api/v3/coins/list");case 10:s=e.sent,r=[null,null],y=Object(D.a)(s);try{for(y.s();!(o=y.n()).done;)d=o.value,(m=d.symbol.toUpperCase())===p[0].Symbol&&(r[0]=J("https://api.coingecko.com/api/v3/coins/".concat(d.id))),m===p[1].Symbol&&(r[1]=J("https://api.coingecko.com/api/v3/coins/".concat(d.id)))}catch(l){y.e(l)}finally{y.f()}if(null!==r[0]&&null!==r[1]){e.next=16;break}throw new Error("Could not find price data for one or both of the tokens (".concat(tokenRawDatas[2],", ").concat(tokenRawDatas[5],")"));case 16:return e.next=18,Promise.all(r);case 18:return c=e.sent,e.abrupt("return",[Be(p[0],c[0]),Be(p[1],c[1])]);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Be(e,t){return e.CurrentPriceUSD=new c.a(t.market_data.current_price.usd),e.CurrentPriceBTC=new c.a(t.market_data.current_price.btc),e.CurrentPriceETH=new c.a(t.market_data.current_price.eth),e}var Pe=function(){var e=O().bscWeb3,t=Object(a.useState)({}),n=Object(C.a)(t,2),u=n[0],p=n[1],s=Object(a.useState)(),r=Object(C.a)(s,2),y=r[0],o=r[1],m=Object(a.useState)(!1),c=Object(C.a)(m,2),b=c[0],T=c[1],f=function(e,t){var n=t.name,a=t.value;return p(Object(E.a)(Object(E.a)({},u),{},Object(S.a)({},n,a)))},v=function(){var t=Object(d.a)(l.a.mark((function t(){var n,a,i,p,s;return l.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.fromBlock,a=u.toBlock,i=u.pair,p=u.lp,T(!0),t.next=4,Oe({bscWeb3:e,fromBlock:n,toBlock:a,pair:i,lp:p});case 4:s=t.sent,o(s),T(!1);case 7:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Pancake Impermanent Loss"),i.a.createElement("br",null),i.a.createElement(I.a,{textAlign:"left"},i.a.createElement(B.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:b,onSubmit:v,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Pancake Pair Contract Address",name:"pair",placeholder:"0x1b96b92314c44b159149f7e0303511fb2fc4774f",onChange:f}),i.a.createElement(P.a.Input,{label:"Liquidity Provider Wallet Address",name:"lp",placeholder:"0x1f38c8bdd9cb174599574b6c8fadffd1fd987c85",onChange:f}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"From Block",name:"fromBlock",value:"0",onChange:f}),i.a.createElement(P.a.Input,{fluid:!0,label:"To Block",name:"toBlock",value:"latest",onChange:f})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(y,null,2))))},De=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"src",type:"address"},{indexed:!0,internalType:"address",name:"dst",type:"address"},{indexed:!1,internalType:"uint256",name:"amt",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!0,inputs:[{indexed:!0,internalType:"bytes4",name:"sig",type:"bytes4"},{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"LOG_CALL",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenOut",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],name:"LOG_EXIT",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenIn",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],name:"LOG_JOIN",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenIn",type:"address"},{indexed:!0,internalType:"address",name:"tokenOut",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{indexed:!1,internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],name:"LOG_SWAP",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"src",type:"address"},{indexed:!0,internalType:"address",name:"dst",type:"address"},{indexed:!1,internalType:"uint256",name:"amt",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"BONE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"BPOW_PRECISION",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"EXIT_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"INIT_POOL_SUPPLY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_BOUND_TOKENS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_BPOW_BASE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_IN_RATIO",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_OUT_RATIO",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_TOTAL_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BALANCE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BOUND_TOKENS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BPOW_BASE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"src",type:"address"},{internalType:"address",name:"dst",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"whom",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"denorm",type:"uint256"}],name:"bind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcInGivenOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcOutGivenIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcPoolInGivenSingleOut",outputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcPoolOutGivenSingleIn",outputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSingleInGivenPoolOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSingleOutGivenPoolIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSpotPrice",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"decreaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256[]",name:"minAmountsOut",type:"uint256[]"}],name:"exitPool",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPoolAmountIn",type:"uint256"}],name:"exitswapExternAmountOut",outputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256",name:"minAmountOut",type:"uint256"}],name:"exitswapPoolAmountIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"finalize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getColor",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getController",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getCurrentTokens",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getDenormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getFinalTokens",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getNormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getNumTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"}],name:"getSpotPrice",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"}],name:"getSpotPriceSansFee",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getSwapFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getTotalDenormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"}],name:"gulp",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"increaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"t",type:"address"}],name:"isBound",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isFinalized",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isPublicSwap",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256[]",name:"maxAmountsIn",type:"uint256[]"}],name:"joinPool",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"minPoolAmountOut",type:"uint256"}],name:"joinswapExternAmountIn",outputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256",name:"maxAmountIn",type:"uint256"}],name:"joinswapPoolAmountOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"denorm",type:"uint256"}],name:"rebind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"manager",type:"address"}],name:"setController",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"bool",name:"public_",type:"bool"}],name:"setPublicSwap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"setSwapFee",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"minAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPrice",type:"uint256"}],name:"swapExactAmountIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"spotPriceAfter",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"maxAmountIn",type:"uint256"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPrice",type:"uint256"}],name:"swapExactAmountOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"spotPriceAfter",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"src",type:"address"},{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"}],name:"unbind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"}],_e=[{inputs:[{internalType:"contract IERC20",name:"_token0",type:"address"},{internalType:"contract IERC20",name:"_token1",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IMooniswapFactoryGovernance",name:"_mooniswapFactoryGovernance",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"decayPeriod",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"DecayPeriodVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"share",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token0Amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token1Amount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"reason",type:"string"}],name:"Error",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"FeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlippageFeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!0,internalType:"address",name:"srcToken",type:"address"},{indexed:!1,internalType:"address",name:"dstToken",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"result",type:"uint256"},{indexed:!1,internalType:"uint256",name:"srcAdditionBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"dstRemovalBalance",type:"uint256"},{indexed:!1,internalType:"address",name:"referral",type:"address"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"srcBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"dstBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"referralShare",type:"uint256"},{indexed:!1,internalType:"uint256",name:"governanceShare",type:"uint256"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"share",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token0Amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token1Amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decayPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"decayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"decayPeriodVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[2]",name:"maxAmounts",type:"uint256[2]"},{internalType:"uint256[2]",name:"minAmounts",type:"uint256[2]"}],name:"deposit",outputs:[{internalType:"uint256",name:"fairSupply",type:"uint256"},{internalType:"uint256[2]",name:"receivedAmounts",type:"uint256[2]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256[2]",name:"maxAmounts",type:"uint256[2]"},{internalType:"uint256[2]",name:"minAmounts",type:"uint256[2]"},{internalType:"address",name:"target",type:"address"}],name:"depositFor",outputs:[{internalType:"uint256",name:"fairSupply",type:"uint256"},{internalType:"uint256[2]",name:"receivedAmounts",type:"uint256[2]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"discardDecayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardSlippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"feeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"feeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getBalanceForAddition",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getBalanceForRemoval",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"getReturn",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTokens",outputs:[{internalType:"contract IERC20[]",name:"tokens",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"mooniswapFactoryGovernance",outputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"newMooniswapFactoryGovernance",type:"address"}],name:"setMooniswapFactoryGovernance",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slippageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"slippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"slippageFeeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"minReturn",type:"uint256"},{internalType:"address",name:"referral",type:"address"}],name:"swap",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"minReturn",type:"uint256"},{internalType:"address",name:"referral",type:"address"},{internalType:"address payable",name:"receiver",type:"address"}],name:"swapFor",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"i",type:"uint256"}],name:"tokens",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"virtualBalancesForAddition",outputs:[{internalType:"uint216",name:"balance",type:"uint216"},{internalType:"uint40",name:"time",type:"uint40"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"virtualBalancesForRemoval",outputs:[{internalType:"uint216",name:"balance",type:"uint216"},{internalType:"uint40",name:"time",type:"uint40"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualDecayPeriod",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualFee",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualSlippageFee",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"volumes",outputs:[{internalType:"uint128",name:"confirmed",type:"uint128"},{internalType:"uint128",name:"result",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256[]",name:"minReturns",type:"uint256[]"}],name:"withdraw",outputs:[{internalType:"uint256[2]",name:"withdrawnAmounts",type:"uint256[2]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256[]",name:"minReturns",type:"uint256[]"},{internalType:"address payable",name:"target",type:"address"}],name:"withdrawFor",outputs:[{internalType:"uint256[2]",name:"withdrawnAmounts",type:"uint256[2]"}],stateMutability:"nonpayable",type:"function"}],Le=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"sync",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],je=[{inputs:[{internalType:"contract SushiToken",name:"_sushi",type:"address"},{internalType:"address",name:"_devaddr",type:"address"},{internalType:"uint256",name:"_sushiPerBlock",type:"uint256"},{internalType:"uint256",name:"_startBlock",type:"uint256"},{internalType:"uint256",name:"_bonusEndBlock",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"EmergencyWithdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[],name:"BONUS_MULTIPLIER",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"contract IERC20",name:"_lpToken",type:"address"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"add",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"bonusEndBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_devaddr",type:"address"}],name:"dev",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"devaddr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"emergencyWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_from",type:"uint256"},{internalType:"uint256",name:"_to",type:"uint256"}],name:"getMultiplier",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"massUpdatePools",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"migrate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"migrator",outputs:[{internalType:"contract IMigratorChef",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_user",type:"address"}],name:"pendingSushi",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"poolInfo",outputs:[{internalType:"contract IERC20",name:"lpToken",type:"address"},{internalType:"uint256",name:"allocPoint",type:"uint256"},{internalType:"uint256",name:"lastRewardBlock",type:"uint256"},{internalType:"uint256",name:"accSushiPerShare",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"set",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IMigratorChef",name:"_migrator",type:"address"}],name:"setMigrator",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"sushi",outputs:[{internalType:"contract SushiToken",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"sushiPerBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalAllocPoint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"updatePool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"userInfo",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"rewardDebt",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],Re=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"sync",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],Fe=[{inputs:[{internalType:"contract Unic",name:"_unic",type:"address"},{internalType:"address",name:"_devaddr",type:"address"},{internalType:"uint256",name:"_mintRateMultiplier",type:"uint256"},{internalType:"uint256",name:"_mintRateDivider",type:"uint256"},{internalType:"uint256",name:"_unicPerBlock",type:"uint256"},{internalType:"uint256",name:"_startBlock",type:"uint256"},{internalType:"uint256",name:"_blocksPerTranche",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"allocPoint",type:"uint256"},{indexed:!1,internalType:"address",name:"lpToken",type:"address"},{indexed:!1,internalType:"bool",name:"withUpdate",type:"bool"}],name:"Add",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"devaddr",type:"address"}],name:"Dev",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"EmergencyWithdraw",type:"event"},{anonymous:!1,inputs:[],name:"MassUpdatePools",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"allocPoint",type:"uint256"},{indexed:!1,internalType:"bool",name:"withUpdate",type:"bool"}],name:"Set",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"pid",type:"uint256"}],name:"UpdatePool",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"contract IERC20",name:"_lpToken",type:"address"},{internalType:"bool",name:"_withUpdate",type:"bool"},{internalType:"address",name:"_uToken",type:"address"}],name:"add",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"blocksPerTranche",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_devaddr",type:"address"}],name:"dev",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"devaddr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"emergencyWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_from",type:"uint256"},{internalType:"uint256",name:"_to",type:"uint256"}],name:"getRewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"massUpdatePools",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"mintRateDivider",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"mintRateMultiplier",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_user",type:"address"}],name:"pendingUnic",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"poolInfo",outputs:[{internalType:"contract IERC20",name:"lpToken",type:"address"},{internalType:"uint256",name:"allocPoint",type:"uint256"},{internalType:"uint256",name:"lastRewardBlock",type:"uint256"},{internalType:"uint256",name:"accUnicPerShare",type:"uint256"},{internalType:"address",name:"uToken",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"set",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_mintRateMultiplier",type:"uint256"},{internalType:"uint256",name:"_mintRateDivider",type:"uint256"},{internalType:"uint256",name:"_unicPerBlock",type:"uint256"},{internalType:"uint256",name:"_blocksPerTranche",type:"uint256"}],name:"setMintRules",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_startBlock",type:"uint256"}],name:"setStartBlock",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalAllocPoint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"tranche",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unic",outputs:[{internalType:"contract Unic",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"unicPerBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"updatePool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"userInfo",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"rewardDebt",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"whitelist",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],We=[{inputs:[{internalType:"contract Mooniswap",name:"_mooniswap",type:"address"},{internalType:"contract IERC20",name:"_gift",type:"address"},{internalType:"uint256",name:"_duration",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"decayPeriod",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"DecayPeriodVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"FeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"}],name:"RewardAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"}],name:"RewardPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlippageFeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Staked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decayPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"decayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"decayPeriodVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"discardDecayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardSlippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"earned",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"exit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"feeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"feeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReward",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"gift",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastTimeRewardApplicable",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastUpdateTime",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"mooniswap",outputs:[{internalType:"contract Mooniswap",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"mooniswapFactoryGovernance",outputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"reward",type:"uint256"}],name:"notifyRewardAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"periodFinish",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rewardDistribution",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardPerToken",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardPerTokenStored",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"rewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_rewardDistribution",type:"address"}],name:"setRewardDistribution",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slippageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"slippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"slippageFeeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"userRewardPerTokenPaid",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],Ue="BALANCER",Ne="UNISWAP",He="SUSHISWAP",Ge="ONEINCH",Ve="UJENNY",qe="0x0000000000000000000000000000000000000000";function Je(e,t,n,a,i){return Ye.apply(this,arguments)}function Ye(){return(Ye=Object(d.a)(l.a.mark((function e(t,n,a,i,u){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=n,e.next=e.t0===Ue?3:e.t0===Ne?4:e.t0===He?5:e.t0===Ge?6:e.t0===Ve?7:8;break;case 3:return e.abrupt("return",Xe(t,a,i));case 4:return e.abrupt("return",Ke(t,a,i));case 5:return e.abrupt("return",et(t,a,u||"",i));case 6:return e.abrupt("return",ut(t,a,u||"",i));case 7:return e.abrupt("return",ot(t,a,u||"",i));case 8:throw new Error("lpPositionStatus: Pool ".concat(n," not recognized"));case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ze(e,t,n,a,i,u,p,s,r){var y={PoolAddress:e,TotalLPSupply:M(n,i),HolderAddress:x(t)?t:"Not Given",HolderLPBalance:M(a,i)};return x(p)&&(y.FarmAddress=p,y.HolderLPBalanceThroughFarm=M(n.multipliedBy(s),i),y.UnclaimedReward=r),y.PositionValue=u,y}function Xe(e,t,n){return Qe.apply(this,arguments)}function Qe(){return(Qe=Object(d.a)(l.a.mark((function e(t,n,a){var i,u,p,s,r,y,o,d,m,b,T;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=v(n,De,a),u=[i.methods.totalSupply().call(),i.methods.decimals().call(),i.methods.getFinalTokens().call()],x(t)&&u.push(i.methods.balanceOf(t).call()),e.next=5,Promise.all(u);case 5:return p=e.sent,s=new c.a(p[0]),r=new c.a(x(t)?p[3]:t),y=p[1],o=r.dividedBy(s),d=[],p[2].map((function(e){d.push(w(e,ye,a)),d.push(i.methods.getBalance(e).call())})),e.next=14,Promise.all(d);case 14:for(m=e.sent,b=[],T=0;T0&&"1"===o.status&&o.result&&o.result.length>0)){e.next=26;break}if(""===y.result[0].to&&y.result[0].input.length>20&&(p.DeployedDaysAgo=V(y.result[0].timeStamp)),!L.a.some(y.result,(function(e){return""!==e.to&&e.to!==i.toLowerCase()}))&&!L.a.some(y.result,(function(e){return""!==e.to&&e.to!==i.toLowerCase()}))){e.next=17;break}throw new Error("Address is not destination of all transactions, is this a contract?");case 17:y.result.length<1e4&&o.result.length<1e4?(p.NumTx=y.result.length,p.NumTxHaveMore=!1):(p.NumTx=1e4,p.NumTxHaveMore=!0),y.result.length>100&&(p.Tx100DaysAgo=V(y.result[100].timeStamp)),y.result.length>1e3&&(p.Tx1000DaysAgo=V(y.result[1e3].timeStamp)),d=q()-86400,p.NumTxInLast24Hours=L.a.reduce(o.result,(function(e,t){return e+(parseInt(t.timeStamp)>d?1:0)}),0),p.EthSpentOnGas=L.a.reduce(o.result,(function(e,t){return e+parseInt(t.gasUsed)*(parseInt(t.gasPrice)/1e18)}),0),p.DifferentAddresses=L.a.uniqBy(o.result,(function(e){return e.from.toLowerCase()})).length,p.EthSpentOnGas=Math.round(1e3*p.EthSpentOnGas)/1e3,s&&(p.TxStats=ee(s,o.result));case 26:if(!u||!s){e.next=32;break}return e.next=29,te(n,a,s,u);case 29:p.MethodCall=e.sent,e.next=33;break;case 32:delete p.MethodCall;case 33:return e.abrupt("return",p);case 34:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function $(e){return Z.apply(this,arguments)}function Z(){return(Z=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.web3,a=t.ethscn,i=t.hexData,u={MethodCall:{}},p=[{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],e.next=5,te(n,a,p,i);case 5:return u.MethodCall=e.sent,e.abrupt("return",u);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ee(e,t){var n,a=0,i={},u=new W.a(e),p=Object(D.a)(t);try{for(p.s();!(n=p.n()).done;){var s=n.value,r=u.decodeData(s.input);if(r.method&&(i[r.method]||(i[r.method]=0),i[r.method]++,++a>1e3))break}}catch(y){p.e(y)}finally{p.f()}return L.a.mapValues(i,(function(e){return Math.round(1e4*e/a)/100}))}function te(e,t,n,a){return ne.apply(this,arguments)}function ne(){return(ne=Object(d.a)(l.a.mark((function e(t,n,a,i){var u,p,s,r,y,o,d,m;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:u=new W.a(a),p=u.decodeData(i),s={Method:p.method,Args:[]},r=0;case 4:if(!(r20);case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var ue=function(){var e=O(),t=e.web3,n=e.ethscn,u=Object(a.useState)({}),p=Object(C.a)(u,2),s=p[0],r=p[1],y=Object(a.useState)(),o=Object(C.a)(y,2),m=o[0],c=o[1],b=Object(a.useState)(!1),T=Object(C.a)(b,2),f=T[0],v=T[1],w=function(e,t){var n=t.name,a=t.value;return r(Object(E.a)(Object(E.a)({},s),{},Object(S.a)({},n,a)))},h=function(){var e=Object(d.a)(l.a.mark((function e(){var a,i,u;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=s.address,i=s.hexData,v(!0),e.next=4,Q({web3:t,ethscn:n,address:a,hexData:i});case 4:u=e.sent,c(u),v(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Check Contract (Anti-Phishing)"),i.a.createElement("br",null),i.a.createElement(B.a,{textAlign:"left"},i.a.createElement(I.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:f,onSubmit:h,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Contract Address",name:"address",placeholder:"0xbD17B1ce622d73bD438b9E658acA5996dc394b0d",onChange:w}),i.a.createElement(P.a.TextArea,{label:"Method Call Hex Data",name:"hexData",placeholder:"0x095ea7b3000000000000000000000000...",onChange:w}),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(m,null,2))))};var pe=function(){var e=O(),t=e.web3,n=e.ethscn,u=Object(a.useState)({}),p=Object(C.a)(u,2),s=p[0],r=p[1],y=Object(a.useState)(),o=Object(C.a)(y,2),m=o[0],c=o[1],b=Object(a.useState)(!1),T=Object(C.a)(b,2),f=T[0],v=T[1],w=function(){var e=Object(d.a)(l.a.mark((function e(){var a,i;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=s.hexData,v(!0),e.next=4,$({web3:t,ethscn:n,hexData:a});case 4:i=e.sent,c(i),v(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Check Approve (Anti-Phishing)"),i.a.createElement("br",null),i.a.createElement(B.a,{textAlign:"left"},i.a.createElement(I.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:f,onSubmit:w,spellcheck:"false"},i.a.createElement(P.a.TextArea,{label:"Method Call Hex Data",name:"hexData",placeholder:"0x095ea7b3000000000000000000000000...",onChange:function(e,t){var n=t.name,a=t.value;return r(Object(E.a)(Object(E.a)({},s),{},Object(S.a)({},n,a)))}}),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(m,null,2))))},se=n(104),re=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"sync",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ye=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"guy",type:"address"},{name:"wad",type:"uint256"}],name:"approve",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"src",type:"address"},{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transferFrom",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"wad",type:"uint256"}],name:"withdraw",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"dst",type:"address"},{name:"wad",type:"uint256"}],name:"transfer",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"deposit",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!0,inputs:[{name:"",type:"address"},{name:"",type:"address"}],name:"allowance",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{payable:!0,stateMutability:"payable",type:"fallback"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"guy",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"dst",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"src",type:"address"},{indexed:!1,name:"wad",type:"uint256"}],name:"Withdrawal",type:"event"}],oe="0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f",le="0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496";function de(e){return me.apply(this,arguments)}function me(){return(me=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p,s,r,y,o,d,m,b,T,f,v,w,h,M,x,g,O,A,S,E,C,B,I,P,_,j,R,F;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.web3,u=t.fromBlock,p=t.toBlock,s=t.pair,r=t.lp,y={Tokens:[],LiquidityChanges:[],SumLpTokens:new c.a(0),SumTokenDeposits:[new c.a(0),new c.a(0)],AvailableTokensToWithdraw:[void 0,void 0],TotalWorth:{},AvailableAfterRebalance:[]},u||(u=0),p||(p="latest"),u=parseInt(u),"latest"!==p&&(p=parseInt(p)),o=new i.eth.Contract(re,s),e.next=9,Te(o,i);case 9:return d=e.sent,y.Tokens[0]=d[0],y.Tokens[1]=d[1],e.next=14,o.getPastEvents("Transfer",{filter:{from:"0x0000000000000000000000000000000000000000",to:r},fromBlock:u,toBlock:p});case 14:return m=e.sent,(n=y.LiquidityChanges).push.apply(n,Object(se.a)(m.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18"),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),e.next=18,o.getPastEvents("Transfer",{filter:{from:r,to:s},fromBlock:u,toBlock:p});case 18:b=e.sent,(a=y.LiquidityChanges).push.apply(a,Object(se.a)(b.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18").negated(),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),y.LiquidityChanges.sort((function(e,t){return e.BlockNumber-t.BlockNumber})),T=Object(D.a)(y.LiquidityChanges),e.prev=22,T.s();case 24:if((f=T.n()).done){e.next=35;break}return v=f.value,e.next=28,H(200);case 28:return e.next=30,i.eth.getTransactionReceipt(v.TxHash);case 30:w=e.sent,h=Object(D.a)(w.logs);try{for(h.s();!(M=h.n()).done;)(x=M.value).topics[0].toLowerCase()===oe&&(g=L.a.find(re,(function(e){return"Mint"===e.name})).inputs,O=i.eth.abi.decodeLog(g,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(O.amount0,y.Tokens[0]),v.TokenDepositDelta[1]=k(O.amount1,y.Tokens[1])),x.topics[0].toLowerCase()===le&&(A=L.a.find(re,(function(e){return"Burn"===e.name})).inputs,S=i.eth.abi.decodeLog(A,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(S.amount0,y.Tokens[0]).negated(),v.TokenDepositDelta[1]=k(S.amount1,y.Tokens[1]).negated())}catch(l){h.e(l)}finally{h.f()}case 33:e.next=24;break;case 35:e.next=40;break;case 37:e.prev=37,e.t0=e.catch(22),T.e(e.t0);case 40:return e.prev=40,T.f(),e.finish(40);case 43:E=Object(D.a)(y.LiquidityChanges);try{for(E.s();!(C=E.n()).done;)B=C.value,y.SumLpTokens=y.SumLpTokens.plus(B.LpTokenDelta),B.SumLpTokensAfter=new c.a(y.SumLpTokens),y.SumTokenDeposits[0]=y.SumTokenDeposits[0].plus(B.TokenDepositDelta[0]),y.SumTokenDeposits[1]=y.SumTokenDeposits[1].plus(B.TokenDepositDelta[1])}catch(l){E.e(l)}finally{E.f()}return e.next=47,o.methods.totalSupply().call();case 47:return I=e.sent,P=new c.a(I).dividedBy("1e18"),_=y.SumLpTokens.dividedBy(P),e.next=52,o.methods.getReserves().call();case 52:return j=e.sent,R=k(j._reserve0,y.Tokens[0]),F=k(j._reserve1,y.Tokens[1]),y.AvailableTokensToWithdraw[0]=R.multipliedBy(_),y.AvailableTokensToWithdraw[1]=F.multipliedBy(_),y.TotalWorth.SumTokenDeposits={CurrentPriceUSD:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:ce(y.SumTokenDeposits,y.Tokens,"CurrentPriceETH")},y.TotalWorth.AvailableTokensToWithdraw={CurrentPriceUSD:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:ce(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceETH")},y.AvailableAfterRebalance[0]=be(y.AvailableTokensToWithdraw,y.Tokens,0,y.SumTokenDeposits[0]),y.AvailableAfterRebalance[1]=be(y.AvailableTokensToWithdraw,y.Tokens,1,y.SumTokenDeposits[1]),e.abrupt("return",y);case 62:case"end":return e.stop()}}),e,null,[[22,37,40,43]])})))).apply(this,arguments)}function ce(e,t,n){var a=e[0].multipliedBy(t[0][n]),i=e[1].multipliedBy(t[1][n]);return a.plus(i)}function be(e,t,n,a){var i=[];i[n]=new c.a(a);var u=e[n].minus(i[n]).dividedBy(t[1-n].CurrentPriceUSD).multipliedBy(t[n].CurrentPriceUSD);return i[1-n]=e[1-n].plus(u),i}function Te(e,t){return fe.apply(this,arguments)}function fe(){return(fe=Object(d.a)(l.a.mark((function e(t,n){var a,i,u,p;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=[t.methods.token0().call(),t.methods.token1().call()],e.next=3,Promise.all(a);case 3:return i=e.sent,u=[w(i[0],ye,n),w(i[1],ye,n),J("https://api.coingecko.com/api/v3/coins/ethereum/contract/".concat(i[0])),J("https://api.coingecko.com/api/v3/coins/ethereum/contract/".concat(i[1]))],e.next=7,Promise.all(u);case 7:return p=e.sent,e.abrupt("return",[ve(p[0],p[2]),ve(p[1],p[3])]);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ve(e,t){return e.CurrentPriceUSD=new c.a(t.market_data.current_price.usd),e.CurrentPriceBTC=new c.a(t.market_data.current_price.btc),e.CurrentPriceETH=new c.a(t.market_data.current_price.eth),e}var we=function(){var e=O().web3,t=Object(a.useState)({}),n=Object(C.a)(t,2),u=n[0],p=n[1],s=Object(a.useState)(),r=Object(C.a)(s,2),y=r[0],o=r[1],m=Object(a.useState)(!1),c=Object(C.a)(m,2),b=c[0],T=c[1],f=function(e,t){var n=t.name,a=t.value;return p(Object(E.a)(Object(E.a)({},u),{},Object(S.a)({},n,a)))},v=function(){var t=Object(d.a)(l.a.mark((function t(){var n,a,i,p,s;return l.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.fromBlock,a=u.toBlock,i=u.pair,p=u.lp,T(!0),t.next=4,de({web3:e,fromBlock:n,toBlock:a,pair:i,lp:p});case 4:s=t.sent,o(s),T(!1);case 7:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Uniswap Impermanent Loss"),i.a.createElement("br",null),i.a.createElement(B.a,{textAlign:"left"},i.a.createElement(I.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:b,onSubmit:v,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Uniswap Pair Contract Address",name:"pair",placeholder:"0x0d4a11d5EEaaC28EC3F61d100daF4d40471f1852",onChange:f}),i.a.createElement(P.a.Input,{label:"Liquidity Provider Wallet Address",name:"lp",placeholder:"0x533D94255aDABE5F9AC7d6755ebCe1e93a00AfC7",onChange:f}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"From Block",name:"fromBlock",value:"0",onChange:f}),i.a.createElement(P.a.Input,{fluid:!0,label:"To Block",name:"toBlock",value:"latest",onChange:f})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(y,null,2))))};function he(e){var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.cpRateMinutes,p=Me({amount:t=parseFloat(t),apy:n=parseFloat(n),days:a=parseFloat(a),cpCost:i=parseFloat(i),cpRateMinutes:u=parseFloat(u)});return p.RecommendedMinutes=function(e){for(var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.maxMin,p=0,s=0,r=u/1e5,y=.1;yp&&(p=o.CompoundingProfit,s=y)}return s}({amount:t,apy:n,days:a,cpCost:i,maxMin:10080}),p}function Me(e){var t=e.amount,n=e.apy,a=e.days,i=e.cpCost,u=e.cpRateMinutes,p={ResultWithoutCompound:0,ResultWithCompound:0,CompoundingProfit:0,CompoundingProfitPercent:0};p.ResultWithoutCompound=t+t*n/100*a/365;for(var s=t,r=0;r+u<24*a*60;)r+=u,s+=s*n/100*u/24/60/365,s-=i;return s+=s*n/100*(24*a*60-r)/24/60/365,p.ResultWithCompound=s,p.CompoundingProfit=p.ResultWithCompound-p.ResultWithoutCompound,p.CompoundingProfitPercent=p.CompoundingProfit/p.ResultWithoutCompound*100,p}var ke=function(){var e=Object(a.useState)({}),t=Object(C.a)(e,2),n=t[0],u=t[1],p=Object(a.useState)(),s=Object(C.a)(p,2),r=s[0],y=s[1],o=Object(a.useState)(!1),l=Object(C.a)(o,2),d=l[0],m=l[1],c=function(e,t){var a=t.name,i=t.value;return u(Object(E.a)(Object(E.a)({},n),{},Object(S.a)({},a,i)))};return i.a.createElement("div",null,i.a.createElement("h2",null,"Compounding Profit Calculator"),i.a.createElement("br",null),i.a.createElement(B.a,{textAlign:"left"},i.a.createElement(I.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:d,onSubmit:function(){var e=n.amount,t=n.apy,a=n.days,i=n.cpCost,u=n.cpRateMinutes;m(!0);var p=he({amount:e,apy:t,days:a,cpCost:i,cpRateMinutes:u});y(p),m(!1)},spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Initial Amount (in tokens)",name:"amount",placeholder:"100000",onChange:c}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"APY (%)",name:"apy",placeholder:"30",onChange:c}),i.a.createElement(P.a.Input,{fluid:!0,label:"Num Days Investing",name:"days",placeholder:"7",onChange:c})),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"Cost of Compound Operation (in tokens)",name:"cpCost",placeholder:"1",onChange:c}),i.a.createElement(P.a.Input,{fluid:!0,label:"Minutes Between Compounds",name:"cpRateMinutes",placeholder:"60",onChange:c})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(r,null,2))))},xe=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[],name:"sync",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}],ge=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[{internalType:"address",name:"_owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getOwner",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"}];function Oe(e){return Ae.apply(this,arguments)}function Ae(){return(Ae=Object(d.a)(l.a.mark((function e(t){var n,a,i,u,p,s,r,y,o,d,m,b,T,f,v,w,h,M,x,g,O,A,S,E,C,B,I,P,_,j,R,F;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.bscWeb3,u=t.fromBlock,p=t.toBlock,s=t.pair,r=t.lp,y={Tokens:[],LiquidityChanges:[],SumLpTokens:new c.a(0),SumTokenDeposits:[new c.a(0),new c.a(0)],AvailableTokensToWithdraw:[void 0,void 0],TotalWorth:{},AvailableAfterRebalance:[]},u||(u=0),p||(p="latest"),u=parseInt(u),"latest"!==p&&(p=parseInt(p)),o=new i.eth.Contract(xe,s),e.next=9,Ce(o,i);case 9:return d=e.sent,y.Tokens[0]=d[0],y.Tokens[1]=d[1],e.next=14,o.getPastEvents("Transfer",{filter:{from:"0x0000000000000000000000000000000000000000",to:r},fromBlock:u,toBlock:p});case 14:return m=e.sent,(n=y.LiquidityChanges).push.apply(n,Object(se.a)(m.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18"),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),e.next=18,o.getPastEvents("Transfer",{filter:{from:r,to:s},fromBlock:u,toBlock:p});case 18:b=e.sent,(a=y.LiquidityChanges).push.apply(a,Object(se.a)(b.map((function(e){var t=e.transactionHash,n=e.blockNumber,a=e.returnValues;return{BlockNumber:n,TxHash:t,LpTokenDelta:new c.a(a.value).dividedBy("1e18").negated(),SumLpTokensAfter:void 0,TokenDepositDelta:[]}})))),y.LiquidityChanges.sort((function(e,t){return e.BlockNumber-t.BlockNumber})),T=Object(D.a)(y.LiquidityChanges),e.prev=22,T.s();case 24:if((f=T.n()).done){e.next=33;break}return v=f.value,e.next=28,i.eth.getTransactionReceipt(v.TxHash);case 28:w=e.sent,h=Object(D.a)(w.logs);try{for(h.s();!(M=h.n()).done;)"0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"===(x=M.value).topics[0].toLowerCase()&&(g=L.a.find(xe,(function(e){return"Mint"===e.name})).inputs,O=i.eth.abi.decodeLog(g,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(O.amount0,y.Tokens[0]),v.TokenDepositDelta[1]=k(O.amount1,y.Tokens[1])),"0xdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496"===x.topics[0].toLowerCase()&&(A=L.a.find(xe,(function(e){return"Burn"===e.name})).inputs,S=i.eth.abi.decodeLog(A,x.data,L.a.drop(x.topics,1)),v.TokenDepositDelta[0]=k(S.amount0,y.Tokens[0]).negated(),v.TokenDepositDelta[1]=k(S.amount1,y.Tokens[1]).negated())}catch(l){h.e(l)}finally{h.f()}case 31:e.next=24;break;case 33:e.next=38;break;case 35:e.prev=35,e.t0=e.catch(22),T.e(e.t0);case 38:return e.prev=38,T.f(),e.finish(38);case 41:E=Object(D.a)(y.LiquidityChanges);try{for(E.s();!(C=E.n()).done;)B=C.value,y.SumLpTokens=y.SumLpTokens.plus(B.LpTokenDelta),B.SumLpTokensAfter=new c.a(y.SumLpTokens),y.SumTokenDeposits[0]=y.SumTokenDeposits[0].plus(B.TokenDepositDelta[0]),y.SumTokenDeposits[1]=y.SumTokenDeposits[1].plus(B.TokenDepositDelta[1])}catch(l){E.e(l)}finally{E.f()}return e.next=45,o.methods.totalSupply().call();case 45:return I=e.sent,P=new c.a(I).dividedBy("1e18"),_=y.SumLpTokens.dividedBy(P),e.next=50,o.methods.getReserves().call();case 50:return j=e.sent,R=k(j._reserve0,y.Tokens[0]),F=k(j._reserve1,y.Tokens[1]),y.AvailableTokensToWithdraw[0]=R.multipliedBy(_),y.AvailableTokensToWithdraw[1]=F.multipliedBy(_),y.TotalWorth.SumTokenDeposits={CurrentPriceUSD:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:Se(y.SumTokenDeposits,y.Tokens,"CurrentPriceETH")},y.TotalWorth.AvailableTokensToWithdraw={CurrentPriceUSD:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceUSD"),CurrentPriceBTC:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceBTC"),CurrentPriceETH:Se(y.AvailableTokensToWithdraw,y.Tokens,"CurrentPriceETH")},y.AvailableAfterRebalance[0]=Ee(y.AvailableTokensToWithdraw,y.Tokens,0,y.SumTokenDeposits[0]),y.AvailableAfterRebalance[1]=Ee(y.AvailableTokensToWithdraw,y.Tokens,1,y.SumTokenDeposits[1]),e.abrupt("return",y);case 60:case"end":return e.stop()}}),e,null,[[22,35,38,41]])})))).apply(this,arguments)}function Se(e,t,n){var a=e[0].multipliedBy(t[0][n]),i=e[1].multipliedBy(t[1][n]);return a.plus(i)}function Ee(e,t,n,a){var i=[];i[n]=new c.a(a);var u=e[n].minus(i[n]).dividedBy(t[1-n].CurrentPriceUSD).multipliedBy(t[n].CurrentPriceUSD);return i[1-n]=e[1-n].plus(u),i}function Ce(e,t){return Be.apply(this,arguments)}function Be(){return(Be=Object(d.a)(l.a.mark((function e(t,n){var a,i,u,p,s,r,y,o,d,m,c;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=[t.methods.token0().call(),t.methods.token1().call()],e.next=3,Promise.all(a);case 3:return i=e.sent,u=[w(i[0],ge,n),w(i[1],ge,n)],e.next=7,Promise.all(u);case 7:return p=e.sent,e.next=10,J("https://api.coingecko.com/api/v3/coins/list");case 10:s=e.sent,r=[null,null],y=Object(D.a)(s);try{for(y.s();!(o=y.n()).done;)d=o.value,(m=d.symbol.toUpperCase())===p[0].Symbol&&(r[0]=J("https://api.coingecko.com/api/v3/coins/".concat(d.id))),m===p[1].Symbol&&(r[1]=J("https://api.coingecko.com/api/v3/coins/".concat(d.id)))}catch(l){y.e(l)}finally{y.f()}if(null!==r[0]&&null!==r[1]){e.next=16;break}throw new Error("Could not find price data for one or both of the tokens (".concat(tokenRawDatas[2],", ").concat(tokenRawDatas[5],")"));case 16:return e.next=18,Promise.all(r);case 18:return c=e.sent,e.abrupt("return",[Ie(p[0],c[0]),Ie(p[1],c[1])]);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Ie(e,t){return e.CurrentPriceUSD=new c.a(t.market_data.current_price.usd),e.CurrentPriceBTC=new c.a(t.market_data.current_price.btc),e.CurrentPriceETH=new c.a(t.market_data.current_price.eth),e}var Pe=function(){var e=O().bscWeb3,t=Object(a.useState)({}),n=Object(C.a)(t,2),u=n[0],p=n[1],s=Object(a.useState)(),r=Object(C.a)(s,2),y=r[0],o=r[1],m=Object(a.useState)(!1),c=Object(C.a)(m,2),b=c[0],T=c[1],f=function(e,t){var n=t.name,a=t.value;return p(Object(E.a)(Object(E.a)({},u),{},Object(S.a)({},n,a)))},v=function(){var t=Object(d.a)(l.a.mark((function t(){var n,a,i,p,s;return l.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.fromBlock,a=u.toBlock,i=u.pair,p=u.lp,T(!0),t.next=4,Oe({bscWeb3:e,fromBlock:n,toBlock:a,pair:i,lp:p});case 4:s=t.sent,o(s),T(!1);case 7:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return i.a.createElement("div",null,i.a.createElement("h2",null,"Pancake Impermanent Loss"),i.a.createElement("br",null),i.a.createElement(B.a,{textAlign:"left"},i.a.createElement(I.a,{textAlign:"left",secondary:!0,style:{width:"50vw",margin:"auto"}},i.a.createElement(P.a,{loading:b,onSubmit:v,spellcheck:"false"},i.a.createElement(P.a.Input,{label:"Pancake Pair Contract Address",name:"pair",placeholder:"0x1b96b92314c44b159149f7e0303511fb2fc4774f",onChange:f}),i.a.createElement(P.a.Input,{label:"Liquidity Provider Wallet Address",name:"lp",placeholder:"0x1f38c8bdd9cb174599574b6c8fadffd1fd987c85",onChange:f}),i.a.createElement(P.a.Group,{widths:"equal"},i.a.createElement(P.a.Input,{fluid:!0,label:"From Block",name:"fromBlock",value:"0",onChange:f}),i.a.createElement(P.a.Input,{fluid:!0,label:"To Block",name:"toBlock",value:"latest",onChange:f})),i.a.createElement(P.a.Button,{primary:!0},"Submit"))),i.a.createElement("pre",null,JSON.stringify(y,null,2))))},De=[{inputs:[],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"src",type:"address"},{indexed:!0,internalType:"address",name:"dst",type:"address"},{indexed:!1,internalType:"uint256",name:"amt",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!0,inputs:[{indexed:!0,internalType:"bytes4",name:"sig",type:"bytes4"},{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"LOG_CALL",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenOut",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],name:"LOG_EXIT",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenIn",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],name:"LOG_JOIN",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!0,internalType:"address",name:"tokenIn",type:"address"},{indexed:!0,internalType:"address",name:"tokenOut",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{indexed:!1,internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],name:"LOG_SWAP",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"src",type:"address"},{indexed:!0,internalType:"address",name:"dst",type:"address"},{indexed:!1,internalType:"uint256",name:"amt",type:"uint256"}],name:"Transfer",type:"event"},{constant:!0,inputs:[],name:"BONE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"BPOW_PRECISION",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"EXIT_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"INIT_POOL_SUPPLY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_BOUND_TOKENS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_BPOW_BASE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_IN_RATIO",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_OUT_RATIO",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_TOTAL_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MAX_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BALANCE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BOUND_TOKENS",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_BPOW_BASE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_FEE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"MIN_WEIGHT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"src",type:"address"},{internalType:"address",name:"dst",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"whom",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"denorm",type:"uint256"}],name:"bind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcInGivenOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcOutGivenIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcPoolInGivenSingleOut",outputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcPoolOutGivenSingleIn",outputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSingleInGivenPoolOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"poolSupply",type:"uint256"},{internalType:"uint256",name:"totalWeight",type:"uint256"},{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSingleOutGivenPoolIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[{internalType:"uint256",name:"tokenBalanceIn",type:"uint256"},{internalType:"uint256",name:"tokenWeightIn",type:"uint256"},{internalType:"uint256",name:"tokenBalanceOut",type:"uint256"},{internalType:"uint256",name:"tokenWeightOut",type:"uint256"},{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"calcSpotPrice",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"decreaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256[]",name:"minAmountsOut",type:"uint256[]"}],name:"exitPool",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPoolAmountIn",type:"uint256"}],name:"exitswapExternAmountOut",outputs:[{internalType:"uint256",name:"poolAmountIn",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"poolAmountIn",type:"uint256"},{internalType:"uint256",name:"minAmountOut",type:"uint256"}],name:"exitswapPoolAmountIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[],name:"finalize",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getColor",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getController",outputs:[{internalType:"address",name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getCurrentTokens",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getDenormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getFinalTokens",outputs:[{internalType:"address[]",name:"tokens",type:"address[]"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"token",type:"address"}],name:"getNormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getNumTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"}],name:"getSpotPrice",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"address",name:"tokenOut",type:"address"}],name:"getSpotPriceSansFee",outputs:[{internalType:"uint256",name:"spotPrice",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getSwapFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"getTotalDenormalizedWeight",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"}],name:"gulp",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"increaseApproval",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{internalType:"address",name:"t",type:"address"}],name:"isBound",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isFinalized",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"isPublicSwap",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256[]",name:"maxAmountsIn",type:"uint256[]"}],name:"joinPool",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"minPoolAmountOut",type:"uint256"}],name:"joinswapExternAmountIn",outputs:[{internalType:"uint256",name:"poolAmountOut",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"poolAmountOut",type:"uint256"},{internalType:"uint256",name:"maxAmountIn",type:"uint256"}],name:"joinswapPoolAmountOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"balance",type:"uint256"},{internalType:"uint256",name:"denorm",type:"uint256"}],name:"rebind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"manager",type:"address"}],name:"setController",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"bool",name:"public_",type:"bool"}],name:"setPublicSwap",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"uint256",name:"swapFee",type:"uint256"}],name:"setSwapFee",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"minAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPrice",type:"uint256"}],name:"swapExactAmountIn",outputs:[{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"spotPriceAfter",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"tokenIn",type:"address"},{internalType:"uint256",name:"maxAmountIn",type:"uint256"},{internalType:"address",name:"tokenOut",type:"address"},{internalType:"uint256",name:"tokenAmountOut",type:"uint256"},{internalType:"uint256",name:"maxPrice",type:"uint256"}],name:"swapExactAmountOut",outputs:[{internalType:"uint256",name:"tokenAmountIn",type:"uint256"},{internalType:"uint256",name:"spotPriceAfter",type:"uint256"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"src",type:"address"},{internalType:"address",name:"dst",type:"address"},{internalType:"uint256",name:"amt",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{internalType:"address",name:"token",type:"address"}],name:"unbind",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"}],_e=[{inputs:[{internalType:"contract IERC20",name:"_token0",type:"address"},{internalType:"contract IERC20",name:"_token1",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"contract IMooniswapFactoryGovernance",name:"_mooniswapFactoryGovernance",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"decayPeriod",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"DecayPeriodVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"share",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token0Amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token1Amount",type:"uint256"}],name:"Deposited",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"reason",type:"string"}],name:"Error",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"FeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlippageFeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!0,internalType:"address",name:"srcToken",type:"address"},{indexed:!1,internalType:"address",name:"dstToken",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"result",type:"uint256"},{indexed:!1,internalType:"uint256",name:"srcAdditionBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"dstRemovalBalance",type:"uint256"},{indexed:!1,internalType:"address",name:"referral",type:"address"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"srcBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"dstBalance",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"referralShare",type:"uint256"},{indexed:!1,internalType:"uint256",name:"governanceShare",type:"uint256"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!0,internalType:"address",name:"receiver",type:"address"},{indexed:!1,internalType:"uint256",name:"share",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token0Amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"token1Amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decayPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"decayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"decayPeriodVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[2]",name:"maxAmounts",type:"uint256[2]"},{internalType:"uint256[2]",name:"minAmounts",type:"uint256[2]"}],name:"deposit",outputs:[{internalType:"uint256",name:"fairSupply",type:"uint256"},{internalType:"uint256[2]",name:"receivedAmounts",type:"uint256[2]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256[2]",name:"maxAmounts",type:"uint256[2]"},{internalType:"uint256[2]",name:"minAmounts",type:"uint256[2]"},{internalType:"address",name:"target",type:"address"}],name:"depositFor",outputs:[{internalType:"uint256",name:"fairSupply",type:"uint256"},{internalType:"uint256[2]",name:"receivedAmounts",type:"uint256[2]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"discardDecayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardSlippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"feeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"feeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getBalanceForAddition",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"getBalanceForRemoval",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"getReturn",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getTokens",outputs:[{internalType:"contract IERC20[]",name:"tokens",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"mooniswapFactoryGovernance",outputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"newMooniswapFactoryGovernance",type:"address"}],name:"setMooniswapFactoryGovernance",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slippageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"slippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"slippageFeeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"minReturn",type:"uint256"},{internalType:"address",name:"referral",type:"address"}],name:"swap",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"src",type:"address"},{internalType:"contract IERC20",name:"dst",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"minReturn",type:"uint256"},{internalType:"address",name:"referral",type:"address"},{internalType:"address payable",name:"receiver",type:"address"}],name:"swapFor",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"i",type:"uint256"}],name:"tokens",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"sender",type:"address"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"virtualBalancesForAddition",outputs:[{internalType:"uint216",name:"balance",type:"uint216"},{internalType:"uint40",name:"time",type:"uint40"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"virtualBalancesForRemoval",outputs:[{internalType:"uint216",name:"balance",type:"uint216"},{internalType:"uint40",name:"time",type:"uint40"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualDecayPeriod",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualFee",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[],name:"virtualSlippageFee",outputs:[{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint104",name:"",type:"uint104"},{internalType:"uint48",name:"",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20",name:"",type:"address"}],name:"volumes",outputs:[{internalType:"uint128",name:"confirmed",type:"uint128"},{internalType:"uint128",name:"result",type:"uint128"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256[]",name:"minReturns",type:"uint256[]"}],name:"withdraw",outputs:[{internalType:"uint256[2]",name:"withdrawnAmounts",type:"uint256[2]"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256[]",name:"minReturns",type:"uint256[]"},{internalType:"address payable",name:"target",type:"address"}],name:"withdrawFor",outputs:[{internalType:"uint256[2]",name:"withdrawnAmounts",type:"uint256[2]"}],stateMutability:"nonpayable",type:"function"}],Le=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"sync",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],je=[{inputs:[{internalType:"contract SushiToken",name:"_sushi",type:"address"},{internalType:"address",name:"_devaddr",type:"address"},{internalType:"uint256",name:"_sushiPerBlock",type:"uint256"},{internalType:"uint256",name:"_startBlock",type:"uint256"},{internalType:"uint256",name:"_bonusEndBlock",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"EmergencyWithdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[],name:"BONUS_MULTIPLIER",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"contract IERC20",name:"_lpToken",type:"address"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"add",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"bonusEndBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_devaddr",type:"address"}],name:"dev",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"devaddr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"emergencyWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_from",type:"uint256"},{internalType:"uint256",name:"_to",type:"uint256"}],name:"getMultiplier",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"massUpdatePools",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"migrate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"migrator",outputs:[{internalType:"contract IMigratorChef",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_user",type:"address"}],name:"pendingSushi",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"poolInfo",outputs:[{internalType:"contract IERC20",name:"lpToken",type:"address"},{internalType:"uint256",name:"allocPoint",type:"uint256"},{internalType:"uint256",name:"lastRewardBlock",type:"uint256"},{internalType:"uint256",name:"accSushiPerShare",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"set",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IMigratorChef",name:"_migrator",type:"address"}],name:"setMigrator",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"sushi",outputs:[{internalType:"contract SushiToken",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"sushiPerBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalAllocPoint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"updatePool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"userInfo",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"rewardDebt",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],Re=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Burn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1",type:"uint256"}],name:"Mint",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount0In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1In",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount0Out",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount1Out",type:"uint256"},{indexed:!0,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint112",name:"reserve0",type:"uint112"},{indexed:!1,internalType:"uint112",name:"reserve1",type:"uint112"}],name:"Sync",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"MINIMUM_LIQUIDITY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"PERMIT_TYPEHASH",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"burn",outputs:[{internalType:"uint256",name:"amount0",type:"uint256"},{internalType:"uint256",name:"amount1",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"factory",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReserves",outputs:[{internalType:"uint112",name:"_reserve0",type:"uint112"},{internalType:"uint112",name:"_reserve1",type:"uint112"},{internalType:"uint32",name:"_blockTimestampLast",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token0",type:"address"},{internalType:"address",name:"_token1",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"kLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"mint",outputs:[{internalType:"uint256",name:"liquidity",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"price0CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"price1CumulativeLast",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"}],name:"skim",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount0Out",type:"uint256"},{internalType:"uint256",name:"amount1Out",type:"uint256"},{internalType:"address",name:"to",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"sync",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"token0",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"token1",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"value",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],Fe=[{inputs:[{internalType:"contract Unic",name:"_unic",type:"address"},{internalType:"address",name:"_devaddr",type:"address"},{internalType:"uint256",name:"_mintRateMultiplier",type:"uint256"},{internalType:"uint256",name:"_mintRateDivider",type:"uint256"},{internalType:"uint256",name:"_unicPerBlock",type:"uint256"},{internalType:"uint256",name:"_startBlock",type:"uint256"},{internalType:"uint256",name:"_blocksPerTranche",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"allocPoint",type:"uint256"},{indexed:!1,internalType:"address",name:"lpToken",type:"address"},{indexed:!1,internalType:"bool",name:"withUpdate",type:"bool"}],name:"Add",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"devaddr",type:"address"}],name:"Dev",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"EmergencyWithdraw",type:"event"},{anonymous:!1,inputs:[],name:"MassUpdatePools",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"allocPoint",type:"uint256"},{indexed:!1,internalType:"bool",name:"withUpdate",type:"bool"}],name:"Set",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"pid",type:"uint256"}],name:"UpdatePool",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"pid",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"contract IERC20",name:"_lpToken",type:"address"},{internalType:"bool",name:"_withUpdate",type:"bool"},{internalType:"address",name:"_uToken",type:"address"}],name:"add",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"blocksPerTranche",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_devaddr",type:"address"}],name:"dev",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"devaddr",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"emergencyWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_from",type:"uint256"},{internalType:"uint256",name:"_to",type:"uint256"}],name:"getRewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"massUpdatePools",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"mintRateDivider",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"mintRateMultiplier",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"address",name:"_user",type:"address"}],name:"pendingUnic",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"poolInfo",outputs:[{internalType:"contract IERC20",name:"lpToken",type:"address"},{internalType:"uint256",name:"allocPoint",type:"uint256"},{internalType:"uint256",name:"lastRewardBlock",type:"uint256"},{internalType:"uint256",name:"accUnicPerShare",type:"uint256"},{internalType:"address",name:"uToken",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"poolLength",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_allocPoint",type:"uint256"},{internalType:"bool",name:"_withUpdate",type:"bool"}],name:"set",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_mintRateMultiplier",type:"uint256"},{internalType:"uint256",name:"_mintRateDivider",type:"uint256"},{internalType:"uint256",name:"_unicPerBlock",type:"uint256"},{internalType:"uint256",name:"_blocksPerTranche",type:"uint256"}],name:"setMintRules",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_startBlock",type:"uint256"}],name:"setStartBlock",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalAllocPoint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"tranche",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unic",outputs:[{internalType:"contract Unic",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"unicPerBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"}],name:"updatePool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],name:"userInfo",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"rewardDebt",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"whitelist",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_pid",type:"uint256"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],We=[{inputs:[{internalType:"contract Mooniswap",name:"_mooniswap",type:"address"},{internalType:"contract IERC20",name:"_gift",type:"address"},{internalType:"uint256",name:"_duration",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"decayPeriod",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"DecayPeriodVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"FeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"}],name:"RewardAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"}],name:"RewardPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"slippageFee",type:"uint256"},{indexed:!1,internalType:"bool",name:"isDefault",type:"bool"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlippageFeeVoteUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Staked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decayPeriod",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"decayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"decayPeriodVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"discardDecayPeriodVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"discardSlippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"earned",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"exit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"fee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"feeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"feeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getReward",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"gift",outputs:[{internalType:"contract IERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastTimeRewardApplicable",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"lastUpdateTime",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"mooniswap",outputs:[{internalType:"contract Mooniswap",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"mooniswapFactoryGovernance",outputs:[{internalType:"contract IMooniswapFactoryGovernance",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"reward",type:"uint256"}],name:"notifyRewardAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"periodFinish",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueFunds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rewardDistribution",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardPerToken",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardPerTokenStored",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"rewardRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"rewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_rewardDistribution",type:"address"}],name:"setRewardDistribution",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slippageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vote",type:"uint256"}],name:"slippageFeeVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"slippageFeeVotes",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"userRewardPerTokenPaid",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],Ue="BALANCER",Ne="UNISWAP",He="SUSHISWAP",Ge="ONEINCH",Ve="UJENNY",qe="0x0000000000000000000000000000000000000000";function Je(e,t,n,a,i){return Ye.apply(this,arguments)}function Ye(){return(Ye=Object(d.a)(l.a.mark((function e(t,n,a,i,u){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=n,e.next=e.t0===Ue?3:e.t0===Ne?4:e.t0===He?5:e.t0===Ge?6:e.t0===Ve?7:8;break;case 3:return e.abrupt("return",Xe(t,a,i));case 4:return e.abrupt("return",Ke(t,a,i));case 5:return e.abrupt("return",et(t,a,u||"",i));case 6:return e.abrupt("return",ut(t,a,u||"",i));case 7:return e.abrupt("return",ot(t,a,u||"",i));case 8:throw new Error("lpPositionStatus: Pool ".concat(n," not recognized"));case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ze(e,t,n,a,i,u,p,s,r){var y={PoolAddress:e,TotalLPSupply:M(n,i),HolderAddress:x(t)?t:"Not Given",HolderLPBalance:M(a,i)};return x(p)&&(y.FarmAddress=p,y.HolderLPBalanceThroughFarm=M(n.multipliedBy(s),i),y.UnclaimedReward=r),y.PositionValue=u,y}function Xe(e,t,n){return Qe.apply(this,arguments)}function Qe(){return(Qe=Object(d.a)(l.a.mark((function e(t,n,a){var i,u,p,s,r,y,o,d,m,b,T;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=v(n,De,a),u=[i.methods.totalSupply().call(),i.methods.decimals().call(),i.methods.getFinalTokens().call()],x(t)&&u.push(i.methods.balanceOf(t).call()),e.next=5,Promise.all(u);case 5:return p=e.sent,s=new c.a(p[0]),r=new c.a(x(t)?p[3]:t),y=p[1],o=r.dividedBy(s),d=[],p[2].map((function(e){d.push(w(e,ye,a)),d.push(i.methods.getBalance(e).call())})),e.next=14,Promise.all(d);case 14:for(m=e.sent,b=[],T=0;T setTimeout(resolve, milis));\n}\n\nexport function daysAgo(timestampSec) {\n const secDelta = new Date().getTime() / 1000 - parseInt(timestampSec);\n return Math.round((10 * secDelta) / (24 * 60 * 60)) / 10;\n}\n\nexport function timestampNow() {\n return Math.round(new Date().getTime() / 1000);\n}\n\nexport async function fetchJson(url) {\n const res = await fetch(url);\n return await res.json();\n}\n\nexport async function fetchJsonPost(url, dataStr) {\n const res = await fetch(url,\n {\n method: 'post',\n body: dataStr,\n headers: { 'Content-Type': 'application/json' },\n });\n return await res.json();\n}\n","import _ from \"lodash\";\nimport BN from \"bn.js\";\nimport InputDataDecoder from \"ethereum-input-data-decoder\";\nimport { fetchJson, daysAgo, timestampNow, sleep } from \"./helpers\";\n\nconst MIN_CONTRACT_CODE_SIZE = 20;\n\n// takes a contract and method call and performs due diligence over both to protect against phishing\n// web3 - initialized web3 instance used for read only\n// ethscn - etherscan.io API key (string)\n// address - the address of the contract (0x string)\n// hexData - the encoded input data to the transaction (0x string)\nexport async function checkContract({ web3, ethscn, address, hexData }) {\n const res = {\n Address: address,\n PublishedAbi: false,\n SourceCodeUrl: \"\",\n DeployedDaysAgo: 0,\n NumTx: 0,\n NumTxHaveMore: false,\n NumTxInLast24Hours: 0,\n TxListUrl: \"\",\n TxStats: {},\n Tx100DaysAgo: 0,\n Tx1000DaysAgo: 0,\n EthSpentOnGas: 0,\n DifferentAddresses: 0,\n MethodCall: {},\n };\n\n // abi\n let abi;\n const abiReq = await fetchJson(\n `https://api.etherscan.io/api?module=contract&action=getabi&address=${address}&apikey=${ethscn}`\n );\n if (abiReq.status === \"1\" && abiReq.result) {\n abi = JSON.parse(abiReq.result);\n res.PublishedAbi = true;\n res.SourceCodeUrl = `https://etherscan.io/address/${address}#code`;\n }\n\n // transactions\n res.TxListUrl = `https://etherscan.io/txs?a=${address}`;\n const firstTxs = await fetchJson(\n `https://api.etherscan.io/api?module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&sort=asc&apikey=${ethscn}`\n );\n const lastTxs = await fetchJson(\n `https://api.etherscan.io/api?module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&sort=desc&apikey=${ethscn}`\n );\n if (\n firstTxs.status === \"1\" &&\n firstTxs.result &&\n firstTxs.result.length > 0 &&\n lastTxs.status === \"1\" &&\n lastTxs.result &&\n lastTxs.result.length > 0\n ) {\n if (firstTxs.result[0].to === \"\" && firstTxs.result[0].input.length > MIN_CONTRACT_CODE_SIZE) {\n res.DeployedDaysAgo = daysAgo(firstTxs.result[0].timeStamp);\n }\n if (\n _.some(firstTxs.result, (tx) => tx.to !== \"\" && tx.to !== address.toLowerCase()) ||\n _.some(firstTxs.result, (tx) => tx.to !== \"\" && tx.to !== address.toLowerCase())\n ) {\n throw new Error(\"Address is not destination of all transactions, is this a contract?\");\n }\n if (firstTxs.result.length < 10000 && lastTxs.result.length < 10000) {\n res.NumTx = firstTxs.result.length;\n res.NumTxHaveMore = false;\n } else {\n res.NumTx = 10000;\n res.NumTxHaveMore = true;\n }\n if (firstTxs.result.length > 100) {\n res.Tx100DaysAgo = daysAgo(firstTxs.result[100].timeStamp);\n }\n if (firstTxs.result.length > 1000) {\n res.Tx1000DaysAgo = daysAgo(firstTxs.result[1000].timeStamp);\n }\n const before24h = timestampNow() - 24 * 60 * 60;\n res.NumTxInLast24Hours = _.reduce(\n lastTxs.result,\n (sum, tx) => sum + (parseInt(tx.timeStamp) > before24h ? 1 : 0),\n 0\n );\n res.EthSpentOnGas = _.reduce(\n lastTxs.result,\n (sum, tx) => sum + parseInt(tx.gasUsed) * (parseInt(tx.gasPrice) / 1e18),\n 0\n );\n res.DifferentAddresses = _.uniqBy(lastTxs.result, (tx) => tx.from.toLowerCase()).length;\n res.EthSpentOnGas = Math.round(res.EthSpentOnGas * 1000) / 1000;\n if (abi) res.TxStats = getStatsPerMethod(abi, lastTxs.result);\n }\n\n // hex data\n if (hexData && abi) res.MethodCall = await decodeHexData(web3, ethscn, abi, hexData);\n else delete res.MethodCall;\n\n return res;\n}\n\n// takes input for an ERC20 Approve action and performs due diligence over it to protect against phishing\n// web3 - initialized web3 instance used for read only\n// ethscn - etherscan.io API key (string)\n// hexData - the encoded input data to the transaction (0x string)\nexport async function checkApprove({ web3, ethscn, hexData }) {\n const res = {\n MethodCall: {},\n };\n\n const abi = [\n {\n inputs: [\n { internalType: \"address\", name: \"spender\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n ];\n res.MethodCall = await decodeHexData(web3, ethscn, abi, hexData);\n\n return res;\n}\n\nfunction getStatsPerMethod(abi, txs) {\n let total = 0;\n const sumPerMethod = {};\n const decoder = new InputDataDecoder(abi);\n for (const tx of txs) {\n const decoded = decoder.decodeData(tx.input);\n if (!decoded.method) continue;\n if (!sumPerMethod[decoded.method]) sumPerMethod[decoded.method] = 0;\n sumPerMethod[decoded.method]++;\n total++;\n if (total > 1000) break;\n }\n return _.mapValues(sumPerMethod, (sum) => Math.round((100 * 100 * sum) / total) / 100);\n}\n\nasync function decodeHexData(web3, ethscn, abi, hexData) {\n const decoder = new InputDataDecoder(abi);\n const decoded = decoder.decodeData(hexData);\n const res = {\n Method: decoded.method,\n Args: [],\n };\n for (let i = 0; i < decoded.names.length; i++) {\n const name = decoded.names[i];\n const type = decoded.types[i];\n const rawValue = decoded.inputs[i];\n let value = rawValue.toString();\n if (\n type === \"uint256\" &&\n rawValue.eq(new BN(\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\", 16))\n ) {\n value = \"unlimited\";\n }\n if (type === \"address\") {\n value = web3.utils.toChecksumAddress(value);\n }\n res.Args[i] = {\n Name: name,\n Type: type,\n Value: value,\n };\n if (type === \"address\" && (await isContract(web3, value))) {\n await sleep(1100); // don't stress etherscan api\n res.Args[i].Contract = await checkContract({\n web3,\n ethscn,\n address: value,\n });\n }\n }\n return res;\n}\n\nasync function isContract(web3, address) {\n const res = await web3.eth.getCode(address);\n return res.length > MIN_CONTRACT_CODE_SIZE;\n}\n","import React, { useState } from \"react\";\nimport { Container, Segment, Form } from \"semantic-ui-react\";\nimport { checkContract } from \"web3-snippets/anti-phishing\";\nimport { useApiKeys } from \"../ApiKeys\";\n\nfunction Snippet() {\n const { web3, ethscn } = useApiKeys();\n const [input, setInput] = useState({});\n const [result, setResult] = useState();\n const [loading, setLoading] = useState(false);\n const handleChange = (_e, { name, value }) => setInput({ ...input, [name]: value });\n const handleSubmit = async () => {\n const { address, hexData } = input;\n setLoading(true);\n const result = await checkContract({ web3, ethscn, address, hexData });\n setResult(result);\n setLoading(false);\n };\n return (\n
\n );\n}\n\nexport default Snippet;\n","import React from \"react\";\nimport { HashRouter, Route, Link } from \"react-router-dom\";\nimport { Menu } from \"semantic-ui-react\";\nimport { getWeb3 } from \"web3-snippets/eth-helpers\";\nimport \"./App.css\";\nimport ApiKeysContext from \"./ApiKeys\";\nimport CheckContract from \"./snippets/CheckContract\";\nimport CheckApprove from \"./snippets/CheckApprove\";\nimport UniswapLoss from \"./snippets/UniswapLoss\";\nimport Compounding from \"./snippets/Compounding\";\nimport PancakeLoss from \"./snippets/PancakeLoss\";\nimport PoolPosition from \"./snippets/PoolPosition\";\n\nfunction App() {\n return (\n \n \n
\n \n \n \n \n \n \n \n
\n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (response.status === 404 || (contentType != null && contentType.indexOf(\"javascript\") === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\");\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"semantic-ui-css/semantic.min.css\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/lib/pool-position.js b/lib/pool-position.js
index 23bf76f..85e7dcf 100644
--- a/lib/pool-position.js
+++ b/lib/pool-position.js
@@ -177,8 +177,10 @@ async function sushiCalculateLocked(holderAddress, farmPoolId) {
throw new Error(`Graph query error: ${response.errors[0].message}`);
}
+ console.log(JSON.stringify(response.data.users, null, 2))
for(const user of response.data.users) {
- if (user.pool.id === farmPoolId) {
+ console.log(JSON.stringify(user, null, 2))
+ if (user.pool && user.pool.id === farmPoolId) {
const sushiPerShare = new BigNumber(user.pool.accSushiPerShare).dividedBy('1e12');
const sushiDebt = new BigNumber(user.rewardDebt).dividedBy('1e18');
const pending = new BigNumber(user.amount).dividedBy('1e18').multipliedBy(sushiPerShare).minus(sushiDebt);
@@ -186,6 +188,8 @@ async function sushiCalculateLocked(holderAddress, farmPoolId) {
const harvested = new BigNumber(user.sushiHarvested);
const locked = pending.plus(harvested).multipliedBy(2);
return locked;
+ } else {
+ return new BigNumber(user.sushiHarvested).multipliedBy(2);
}
}
throw new Error(`Liquidity Provider Wallet Address ${holderAddress} with MasterChef Farm Pool Id ${farmPoolId} not found`)