{ "abi": [ { "inputs": [], "name": "COIN", "outputs": [ { "internalType": "contract MockERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "USD", "outputs": [ { "internalType": "contract MockERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "inverted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nfpm", "outputs": [ { "internalType": "contract INonfungiblePositionManager", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pool", "outputs": [ { "internalType": "contract IUniswapV3Pool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "price", "outputs": [ { "internalType": "uint160", "name": "sqrtPriceX96", "type": "uint160" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "int24", "name": "lower", "type": "int24" }, { "internalType": "int24", "name": "upper", "type": "int24" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "coinAmount", "type": "uint256" }, { "internalType": "uint256", "name": "usdAmount", "type": "uint256" }, { "internalType": "int24", "name": "lower", "type": "int24" }, { "internalType": "int24", "name": "upper", "type": "int24" } ], "name": "stake", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "int24", "name": "width", "type": "int24" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract MockERC20", "name": "inToken", "type": "address" }, { "internalType": "contract MockERC20", "name": "outToken", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "name": "swap", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract MockERC20", "name": "inToken", "type": "address" }, { "internalType": "contract MockERC20", "name": "outToken", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "name": "swap", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "name": "swapToPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapper", "outputs": [ { "internalType": "contract ISwapRouter", "name": "", "type": "address" } ], "stateMutability": "view", "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" } ], "bytecode": { "object": "0x6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c0586156417905534801561005857600080fd5b50613686806100686000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220bcf6de9d6c3f975767cbe831267c470ecc806539ce37e7f80512820d344df48564736f6c63430008160033", "sourceMap": "588:6124:63:-:0;;;612:87;;;-1:-1:-1;;;;;;612:87:63;;;644:42:50;612:87:63;;;;;705:58;;;;;765:42:50;705:58:63;;;588:6124;;;;;;;;;;;;;;;;", "linkReferences": { "src/Util.sol": { "Util": [ { "start": 5391, "length": 20 }, { "start": 5546, "length": 20 } ] } } }, "deployedBytecode": { "object": "0x60806040523480156200001157600080fd5b5060043610620001325760003560e01c8063a035b1fe11620000c0578063d6f13002116200008b578063df791e50116200006e578063df791e501462000349578063e1c7392a1462000360578063e3baf41a146200036a57600080fd5b8063d6f1300214620002e9578063ddca3f43146200031257600080fd5b8063a035b1fe1462000277578063a54a72b71462000290578063c578d91d14620002b1578063d21220a714620002c857600080fd5b80634a09d3dd11620001015780634a09d3dd14620001e257806353486e2f146200020857806367e368fc14620002215780637303e913146200025657600080fd5b80630dfe1681146200013757806316f0115b14620001705780631bf6c21b14620001a05780632b3297f914620001c1575b600080fd5b600554620001589073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200184b565b60405180910390f35b600254620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6040516200016791906200189f565b600454620001919073ffffffffffffffffffffffffffffffffffffffff1681565b600154620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620001f9620001f336600462001928565b62000381565b60405162000167919062001994565b6200021f62000219366004620019bd565b6200052a565b005b600654620002479074010000000000000000000000000000000000000000900460ff1681565b60405162000167919062001a17565b600054620001919073ffffffffffffffffffffffffffffffffffffffff1681565b620002816200058a565b60405162000167919062001a44565b600354620001919073ffffffffffffffffffffffffffffffffffffffff1681565b6200021f620002c236600462001a54565b6200062d565b600654620001589073ffffffffffffffffffffffffffffffffffffffff1681565b62000300620002fa36600462001a77565b62000887565b60405162000167949392919062001aea565b6002546200033a9074010000000000000000000000000000000000000000900462ffffff1681565b60405162000167919062001b3c565b620001f96200035a36600462001b4c565b620008ad565b6200021f620009cb565b6200021f6200037b36600462001b94565b62000f7b565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b392620003de921690879060040162001bd2565b6020604051808303816000875af1158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062001c08565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf38990620004da90849060040162001cca565b6020604051808303816000875af1158015620004fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000520919062001ce9565b9695505050505050565b600060026200054285670de0b6b3a764000062001d3b565b6200054e919062001d90565b9050600060026200056386620f424062001d3b565b6200056f919062001d90565b90506200057f8282868662000887565b505050505050505050565b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620005fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000621919062001dfa565b50949695505050505050565b6200066d6040518060400160405280600b81526020017f73776170546f50726963650000000000000000000000000000000000000000008152506200104f565b6200068e8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b60006200069a6200058a565b9050620006bd8173ffffffffffffffffffffffffffffffffffffffff16620010e2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620006f5575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16116200074a5760065473ffffffffffffffffffffffffffffffffffffffff1662000764565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620007bb5760065473ffffffffffffffffffffffffffffffffffffffff16620007d5565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f19906200083d903090859060040162001bd2565b600060405180830381600087803b1580156200085857600080fd5b505af11580156200086d573d6000803e3d6000fd5b505050506200087f8383838862000381565b505050505050565b6000806000806200089b8888888862001175565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000944919062001eb3565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200099e5762000998600173fffd8963efd1fc6a506488495d951d5263988d2662001ed6565b620009b0565b620009b06401000276a3600162001f07565b9050620009c08585858462000381565b9150505b9392505050565b6012604051620009db906200180c565b620009e7919062001fb9565b604051809103906000f08015801562000a04573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262000a88906200104f565b60035462000aac9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600660405162000abc906200180c565b62000ac8919062002058565b604051809103906000f08015801562000ae5573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262000b69906200104f565b60045462000b8d9073ffffffffffffffffffffffffffffffffffffffff1662001758565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662000c625760035473ffffffffffffffffffffffffffffffffffffffff1662000c7c565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662000d035760045473ffffffffffffffffffffffffffffffffffffffff1662000d1d565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662000d98576910c6f7a0b5ed8d36b4c762000da9565b6e0f42400000000000000000000000005b905062000dcf604051806080016040528060538152602001620035fe605391396200104f565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462000e5694908216939116917401000000000000000000000000000000000000000090910462ffffff169087906004016200207f565b6020604051808303816000875af115801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c919062001eb3565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c00000000000000000000000000000000000000000000000000602082015262000f20906200104f565b60025462000f449073ffffffffffffffffffffffffffffffffffffffff1662001758565b62000f78629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186200021981620020bc565b50565b60008160020b1362000f8c57600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa15801562000ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001023919062001dfa565b50505050509150506200104a8383836200103e919062002104565b6200021985856200215b565b505050565b62000f788160405160240162001066919062002228565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052620017e6565b62000f7881604051602401620010f9919062001994565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f100000000000000000000000000000000000000000000000000000000179052620017e6565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620011d89030908c9060040162001bd2565b600060405180830381600087803b158015620011f357600080fd5b505af115801562001208573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b393506200126b92909116908c9060040162001bd2565b6020604051808303816000875af11580156200128b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b1919062001c08565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200130b9130918c910162001bd2565b600060405180830381600087803b1580156200132657600080fd5b505af11580156200133b573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200139e9391909216918c910162001bd2565b6020604051808303816000875af1158015620013be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013e4919062001c08565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa15801562001456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200147c91906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620014d3908a9085906004016200226b565b602060405180830381865af4158015620014f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200151791906200223d565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da7906200156e90899085906004016200226b565b602060405180830381865af41580156200158c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b291906200223d565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a50919392169163883164569162001689918591016200236e565b6080604051808303816000875af1158015620016a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016cf9190620023a6565b60408051808201909152600681527f6d696e746564000000000000000000000000000000000000000000000000000060208201529399509197509550935062001718906200104f565b62001735856fffffffffffffffffffffffffffffffff16620010e2565b6200174084620010e2565b6200174b83620010e2565b5050945094509450949050565b62000f78816040516024016200176f91906200184b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b62000f788180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6111fd806200240183390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62001845816200181a565b82525050565b602081016200183482846200183a565b600073ffffffffffffffffffffffffffffffffffffffff821662001834565b600062001834826200185b565b600062001834826200187a565b620018458162001887565b6020810162001834828462001894565b600062001834826200181a565b620018c781620018af565b811462000f7857600080fd5b803580620018e181620018bc565b5092915050565b80620018c7565b803580620018e181620018e8565b73ffffffffffffffffffffffffffffffffffffffff8116620018c7565b803580620018e181620018fd565b60008060008060808587031215620019435762001943600080fd5b6200194f8686620018d3565b9350620019608660208701620018d3565b9250620019718660408701620018ef565b91506200198286606087016200191a565b905092959194509250565b8062001845565b602081016200183482846200198d565b620018c78160020b90565b803580620018e181620019a4565b600080600060608486031215620019d757620019d7600080fd5b620019e38585620018ef565b9250620019f48560208601620019af565b915062001a058560408601620019af565b90509250925092565b80151562001845565b6020810162001834828462001a0e565b73ffffffffffffffffffffffffffffffffffffffff811662001845565b6020810162001834828462001a27565b60006020828403121562001a6b5762001a6b600080fd5b620009c483836200191a565b6000806000806080858703121562001a925762001a92600080fd5b62001a9e8686620018ef565b935062001aaf8660208701620018ef565b925062001ac08660408701620019af565b9150620019828660608701620019af565b6fffffffffffffffffffffffffffffffff811662001845565b6080810162001afa82876200198d565b62001b09602083018662001ad1565b62001b1860408301856200198d565b62001b2760608301846200198d565b95945050505050565b62ffffff811662001845565b6020810162001834828462001b30565b60008060006060848603121562001b665762001b66600080fd5b62001b728585620018d3565b925062001b838560208601620018d3565b915062001a058560408601620018ef565b6000806040838503121562001bac5762001bac600080fd5b62001bb88484620018ef565b915062001bc98460208501620019af565b90509250929050565b6040810162001be282856200183a565b620009c460208301846200198d565b801515620018c7565b805180620018e18162001bf1565b60006020828403121562001c1f5762001c1f600080fd5b620009c4838362001bfa565b62001c388282516200183a565b602081015162001c4c60208401826200183a565b50604081015162001c61604084018262001b30565b50606081015162001c7660608401826200183a565b50608081015162001c8b60808401826200198d565b5060a081015162001ca060a08401826200198d565b5060c081015162001cb560c08401826200198d565b5060e08101516200104a60e084018262001a27565b610100810162001834828462001c2b565b805180620018e181620018e8565b60006020828403121562001d005762001d00600080fd5b620009c4838362001cdb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102818382821583820483141762001d585762001d5862001d0c565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081838062001da45762001da462001d61565b90049392505050565b805180620018e181620018fd565b805180620018e181620019a4565b61ffff8116620018c7565b805180620018e18162001dc9565b60ff8116620018c7565b805180620018e18162001de2565b600080600080600080600060e0888a03121562001e1a5762001e1a600080fd5b62001e26898962001dad565b965062001e378960208a0162001dbb565b955062001e488960408a0162001dd4565b945062001e598960608a0162001dd4565b935062001e6a8960808a0162001dd4565b925062001e7b8960a08a0162001dec565b915062001e8c8960c08a0162001bfa565b905092959891949750929550565b620018c7816200181a565b805180620018e18162001e9a565b60006020828403121562001eca5762001eca600080fd5b620009c4838362001ea5565b73ffffffffffffffffffffffffffffffffffffffff82811682821603908190811115620018e157620018e162001d0c565b73ffffffffffffffffffffffffffffffffffffffff82811682821601908190811115620018e157620018e162001d0c565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262001f66565b600060ff821662001834565b620018458162001fa2565b60608152600062001fcd6060830162001f38565b828103602084015262001fe08162001f6f565b91505062001834604083018462001fae565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262001f66565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262001f66565b6060815260006200206c6060830162001ff2565b828103602084015262001fe08162002025565b608081016200208f82876200183a565b6200209e60208301866200183a565b620020ad604083018562001b30565b62001b27606083018462001a27565b6000620020c98260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103620020fb57620020fb62001d0c565b60000392915050565b6000620021118260020b90565b6200211c8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715620018e157620018e162001d0c565b6000620021688260020b90565b620021738460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000082121715620018e157620018e162001d0c565b60005b83811015620021ce578181015183820152602001620021b4565b50506000910152565b6000620021e2825190565b80845260208401620021f9828260208701620021b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b602081526000620009c46020830184620021d7565b600060208284031215620022545762002254600080fd5b620009c4838362001dbb565b620018458160020b90565b604081016200227b828562002260565b620009c4602083018462002260565b620022978282516200183a565b6020810151620022ab60208401826200183a565b506040810151620022c0604084018262001b30565b506060810151620022d5606084018262002260565b506080810151620022ea608084018262002260565b5060a0810151620022ff60a08401826200198d565b5060c08101516200231460c08401826200198d565b5060e08101516200232960e08401826200198d565b50610100810151620023406101008401826200198d565b50610120810151620023576101208401826200183a565b506101408101516200104a6101408401826200198d565b61016081016200183482846200228a565b6fffffffffffffffffffffffffffffffff8116620018c7565b805180620018e1816200237f565b60008060008060808587031215620023c157620023c1600080fd5b620023cd868662001cdb565b9350620023de866020870162002398565b9250620023ef866040870162001cdb565b915062001982866060870162001cdb56fe60806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726ca2646970667358221220bcf6de9d6c3f975767cbe831267c470ecc806539ce37e7f80512820d344df48564736f6c63430008160033", "sourceMap": "588:6124:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;769:26;;;;;;;;;;;;;;;;:::i;851:20::-;;;;;;;;;705:58;;;;;;;;;5079:824;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2667:221::-;;;;;;:::i;:::-;;:::i;:::-;;988:20;;;;;;;;;;;;;;;;;;;:::i;612:87::-;;;;;;;;;5909:112;;;:::i;:::-;;;;;;;:::i;824:21::-;;;;;;;;;6027:683;;;;;;:::i;:::-;;:::i;961:21::-;;;;;;;;;2895:279;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;801:17::-;;;;;;;;;;;;;;;;;;;:::i;4784:289::-;;;;;;:::i;:::-;;:::i;1349:1125::-;;;:::i;2481:179::-;;;;;;:::i;:::-;;:::i;5079:824::-;5246:7;;5222:43;;;;;5193:17;;5222:15;;;;;;;:43;;5246:7;;5256:8;;5222:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5688:159:63;;;;;;;;;;;;;;;;;;;;;5773:3;;;;;;;5688:159;;;;5778:10;5688:159;;;;5790:15;5688:159;;;;;;;;;;-1:-1:-1;5688:159:63;;;;;;;;;;;5864:7;;:32;;;;;5688:159;;5864:7;;:24;;:32;;5688:159;;5864:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5857:39;5079:824;-1:-1:-1;;;;;;5079:824:63:o;2667:221::-;2741:18;2780:1;2762:15;:6;2771;2762:15;:::i;:::-;:19;;;;:::i;:::-;2741:40;-1:-1:-1;2791:17:63;2828:1;2811:14;:6;2820:5;2811:14;:::i;:::-;:18;;;;:::i;:::-;2791:38;;2839:42;2845:10;2857:9;2868:5;2875;2839;:42::i;:::-;;;;;2731:157;;2667:221;;;:::o;5909:112::-;6002:4;;:12;;;;;;;;5947:20;;6002:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5979:35:63;;5909:112;-1:-1:-1;;;;;;5909:112:63:o;6027:683::-;6092:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;6129:31;6142:17;6129:31;;:12;:31::i;:::-;6170:16;6189:7;:5;:7::i;:::-;6170:26;;6206:22;6219:8;6206:22;;:12;:22::i;:::-;6254:17;6242:29;;:8;:29;;;6238:55;;6286:7;6027:683;:::o;6238:55::-;6302:17;6333;6322:28;;:8;:28;;;:68;;6383:6;;;;6322:68;;;6363:6;;;;6322:68;6302:88;;6400:18;6432:17;6421:28;;:8;:28;;;:68;;6482:6;;;;6421:68;;;6462:6;;;;6421:68;6612:33;;;;;6400:89;;-1:-1:-1;6596:6:63;;6612:12;;;;;;:33;;6633:4;;6596:6;;6612:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6655:48;6660:7;6669:8;6679:4;6685:17;6655:4;:48::i;:::-;;6082:628;;;;6027:683;:::o;2895:279::-;3004:15;3029:17;3056:15;3081;3124:43;3131:10;3143:9;3154:5;3161;3124:6;:43::i;:::-;3117:50;;;;-1:-1:-1;3117:50:63;-1:-1:-1;3117:50:63;;-1:-1:-1;2895:279:63;-1:-1:-1;;;;;2895:279:63:o;4784:289::-;4871:17;4900:13;4936:4;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4916:33;;4924:7;4916:33;;;:93;;4982:27;5008:1;997:49:38;4982:27:63;:::i;:::-;4916:93;;;4952:27;817:10:38;4978:1:63;4952:27;:::i;:::-;4900:109;;5026:40;5031:7;5040:8;5050;5060:5;5026:4;:40::i;:::-;5019:47;;;4784:289;;;;;;:::o;1349:1125::-;1436:2;1389:50;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:4:63;:57;;;;;;;;;;;;;;;1449:19;;;;;;;;;;;;;;;;;;;:12;:19::i;:::-;1499:4;;1478:27;;1499:4;;1478:12;:27::i;:::-;1563:1;1521:44;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1515:3:63;:50;;;;;;;;;;;;;;;1575:20;;;;;;;;;;;;;;;;;;;:12;:20::i;:::-;1626:3;;1605:26;;1626:3;;1605:12;:26::i;:::-;1641:3;:9;;;;;;;;1695:3;;1679:4;;1660:8;:39;;;;1641:9;1695:3;;;;1679:4;;;;1671:28;;;;1660:39;;;;;;;;;;;1718:8;;;:39;;1752:4;;;;1718:39;;;1737:3;;;;1718:39;1709:6;:48;;;;;;;;;;;;;;;1776:8;;;;;;;:39;;1811:3;;;;1776:39;;;1795:4;;;;1776:39;1767:6;:48;;;;;;;;;;;;;;;;;-1:-1:-1;;1848:8:63;;;;;:90;;1914:23;1848:90;;;1867:35;1848:90;1825:113;;1957:99;;;;;;;;;;;;;;;;;;:12;:99::i;:::-;2188:4;;2228:6;;2236;;2244:3;;2188:74;;;;;:4;;;;;:39;;:74;;2228:6;;;;2236;;;2244:3;;;;;;;2249:12;;2188:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2166:4;:97;;;;;;;;;;;;;;;2273:23;;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;2327:4;;2306:27;;2327:4;;2306:12;:27::i;:::-;2412:55;2418:10;477:7:38;637:9;477:7;637:9;:::i;2412:55:63:-;1372:1102;1349:1125::o;2481:179::-;2556:1;2550:5;:7;;;2542:16;;;;;;2594:4;;:12;;;;;;;;2571:10;;2594:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2568:38;;;;;;;;2616:37;2622:6;2635:5;2630:4;:10;;;;:::i;:::-;2642;2647:5;2642:4;:10;:::i;2616:37::-;2532:128;2481:179;;:::o;6598:121:16:-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;6356:116::-;6405:60;6461:2;6421:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6405:15;:60::i;3180:1597:63:-;3516:4;;:36;;;;;3291:15;;;;;;;;3516:4;;;;;:9;;:36;;3534:4;;3541:10;;3516:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3562:4:63;;;3583;3562:39;;;;;:4;;;;;-1:-1:-1;3562:12:63;;-1:-1:-1;3562:39:63;;3583:4;;;;3590:10;;3562:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3650:3:63;;;:34;;;;;:3;;;;;:8;;:34;;3667:4;;3674:9;;3650:34;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3694:3:63;;;;3714:4;3694:37;;;;;:3;;;;;-1:-1:-1;3694:11:63;;-1:-1:-1;3694:37:63;;3714:4;;;;;3721:9;;3694:37;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4240:4:63;;:18;;;;;;;;4229:8;;4240:4;;;:16;;:18;;;;;;;;;;;;;;:4;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4276:25;;;;;4229:29;;-1:-1:-1;4276:4:63;;:14;;:25;;4291:5;;4229:29;;4276:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4319;;;;;4268:33;;-1:-1:-1;4319:4:63;;:14;;:25;;4334:5;;4341:2;;4319:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4409:166;;;;;;;;4469:4;;;;;;4409:166;;4484:3;;;;;4409:166;;;;4490:3;;;;;;;;4409:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4409:166:63;;;;;;4469:4;4409:166;;;;;4538:10;4409:166;;;;4550:15;4409:166;;;;4626:4;:17;;;;;4409:166;;-1:-1:-1;4409:166:63;;4626:4;;;:9;;:17;;4409:166;;4626:17;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4653:22;;;;;;;;;;;;;;;;;4585:58;;-1:-1:-1;4585:58:63;;-1:-1:-1;4585:58:63;-1:-1:-1;4585:58:63;-1:-1:-1;4653:22:63;;:12;:22::i;:::-;4685:23;4698:9;4685:23;;:12;:23::i;:::-;4718:21;4731:7;4718:12;:21::i;:::-;4749;4762:7;4749:12;:21::i;:::-;3394:1383;;3180:1597;;;;;;;;;:::o;6841:116:16:-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;868:133;939:55;986:7;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;-1:-1:-1:-;;;;;;;;:::o;147:96:69:-;182:7;93:42;82:54;;215:22;204:33;147:96;-1:-1:-1;;147:96:69:o;248:95::-;314:22;330:5;314:22;:::i;:::-;309:3;302:35;;;248:95::o;348:189::-;482:2;467:18;;494:37;471:9;513:6;494:37;:::i;599:138::-;645:9;93:42;82:54;;682:49;14:128;742:122;788:9;825:33;852:5;825:33;:::i;869:138::-;931:9;968:33;995:5;968:33;:::i;1012:138::-;1094:49;1137:5;1094:49;:::i;1155:229::-;1313:2;1298:18;;1325:53;1302:9;1360:6;1325:53;:::i;2503:107::-;2549:7;2582:22;2598:5;2582:22;:::i;2615:144::-;2701:33;2728:5;2701:33;:::i;:::-;2694:5;2691:44;2681:72;;2749:1;2746;2739:12;2764:194;2854:20;;;2908:44;2854:20;2908:44;:::i;:::-;;2764:194;;;;:::o;3035:122::-;3126:5;3110:22;542:52;3162:172;3241:20;;;3295:33;3241:20;3295:33;:::i;3339:122::-;93:42;82:54;;3414:22;14:128;3466:172;3545:20;;;3599:33;3545:20;3599:33;:::i;3643:600::-;3767:6;3775;3783;3791;3844:3;3832:9;3823:7;3819:23;3815:33;3812:148;;;3871:79;588:6124:63;;;3871:79:69;3979:49;4020:7;4009:9;3979:49;:::i;:::-;3969:59;;4047:58;4097:7;4092:2;4081:9;4077:18;4047:58;:::i;:::-;4037:68;;4124:47;4163:7;4158:2;4147:9;4143:18;4124:47;:::i;:::-;4114:57;;4190:47;4229:7;4224:2;4213:9;4209:18;4190:47;:::i;:::-;4180:57;;3643:600;;;;;;;:::o;4248:106::-;4341:5;4325:22;542:52;4359:200;4493:2;4478:18;;4505:48;4482:9;4535:6;4505:48;:::i;4661:118::-;4734:20;4748:5;4641:1;4630:20;;4564:92;4784:168;4861:20;;;4915:31;4861:20;4915:31;:::i;4957:448::-;5030:6;5038;5046;5099:2;5087:9;5078:7;5074:23;5070:32;5067:147;;;5125:79;588:6124:63;;;5125:79:69;5233:38;5263:7;5252:9;5233:38;:::i;:::-;5223:48;;5290:45;5327:7;5322:2;5311:9;5307:18;5290:45;:::i;:::-;5280:55;;5354:45;5391:7;5386:2;5375:9;5371:18;5354:45;:::i;:::-;5344:55;;4957:448;;;;;:::o;5507:89::-;5482:13;;5475:21;5570:19;5410:92;5601:180;5729:2;5714:18;;5741:34;5718:9;5757:6;5741:34;:::i;6371:106::-;93:42;82:54;;6448:22;14:128;6482:200;6616:2;6601:18;;6628:48;6605:9;6658:6;6628:48;:::i;6687:290::-;6746:6;6799:2;6787:9;6778:7;6774:23;6770:32;6767:147;;;6825:79;588:6124:63;;;6825:79:69;6933:38;6963:7;6952:9;6933:38;:::i;6982:532::-;7064:6;7072;7080;7088;7141:3;7129:9;7120:7;7116:23;7112:33;7109:148;;;7168:79;588:6124:63;;;7168:79:69;7276:38;7306:7;7295:9;7276:38;:::i;:::-;7266:48;;7333:47;7372:7;7367:2;7356:9;7352:18;7333:47;:::i;:::-;7323:57;;7399:45;7436:7;7431:2;7420:9;7416:18;7399:45;:::i;:::-;7389:55;;7463:45;7500:7;7495:2;7484:9;7480:18;7463:45;:::i;7644:95::-;7598:34;7587:46;;7710:22;7519:120;7744:472;7962:3;7947:19;;7975:48;7951:9;8005:6;7975:48;:::i;:::-;8032:46;8074:2;8063:9;8059:18;8051:6;8032:46;:::i;:::-;8087:57;8140:2;8129:9;8125:18;8117:6;8087:57;:::i;:::-;8153;8206:2;8195:9;8191:18;8183:6;8153:57;:::i;:::-;7744:472;;;;;;;:::o;8319:93::-;8299:8;8288:20;;8384:21;8221:93;8417:186;8549:2;8534:18;;8561:36;8538:9;8579:6;8561:36;:::i;8608:516::-;8723:6;8731;8739;8792:2;8780:9;8771:7;8767:23;8763:32;8760:147;;;8818:79;588:6124:63;;;8818:79:69;8926:49;8967:7;8956:9;8926:49;:::i;:::-;8916:59;;8994:58;9044:7;9039:2;9028:9;9024:18;8994:58;:::i;:::-;8984:68;;9071:47;9110:7;9105:2;9094:9;9090:18;9071:47;:::i;9129:369::-;9195:6;9203;9256:2;9244:9;9235:7;9231:23;9227:32;9224:147;;;9282:79;588:6124:63;;;9282:79:69;9390:38;9420:7;9409:9;9390:38;:::i;:::-;9380:48;;9447:45;9484:7;9479:2;9468:9;9464:18;9447:45;:::i;:::-;9437:55;;9129:369;;;;;:::o;9503:283::-;9665:2;9650:18;;9677:37;9654:9;9696:6;9677:37;:::i;:::-;9723:57;9776:2;9765:9;9761:18;9753:6;9723:57;:::i;9791:116::-;5482:13;;5475:21;9863:19;5410:92;9912:170;9999:13;;;10046:30;9999:13;10046:30;:::i;10087:306::-;10154:6;10207:2;10195:9;10186:7;10182:23;10178:32;10175:147;;;10233:79;588:6124:63;;;10233:79:69;10341:46;10379:7;10368:9;10341:46;:::i;10817:948::-;10893:48;10937:3;10929:5;10923:12;10893:48;:::i;:::-;10987:4;10980:5;10976:16;10970:23;11002:59;11055:4;11050:3;11046:14;11032:12;11002:59;:::i;:::-;;11109:4;11102:5;11098:16;11092:23;11124:59;11177:4;11172:3;11168:14;11152;11124:59;:::i;:::-;;11231:4;11224:5;11220:16;11214:23;11246:61;11301:4;11296:3;11292:14;11276;11246:61;:::i;:::-;;11355:4;11348:5;11344:16;11338:23;11370:50;11414:4;11409:3;11405:14;11389;11370:50;:::i;:::-;;11468:4;11461:5;11457:16;11451:23;11483:50;11527:4;11522:3;11518:14;11502;11483:50;:::i;:::-;;11581:4;11574:5;11570:16;11564:23;11596:50;11640:4;11635:3;11631:14;11615;11596:50;:::i;:::-;;11694:4;11687:5;11683:16;11677:23;11709:50;11753:4;11748:3;11744:14;11728;11709:50;:::i;11770:294::-;11986:3;11971:19;;11999:59;11975:9;12040:6;11999:59;:::i;12069:176::-;12159:13;;;12206:33;12159:13;12206:33;:::i;12250:312::-;12320:6;12373:2;12361:9;12352:7;12348:23;12344:32;12341:147;;;12399:79;588:6124:63;;;12399:79:69;12507:49;12548:7;12537:9;12507:49;:::i;12567:184::-;12619:77;12616:1;12609:88;12716:4;12713:1;12706:15;12740:4;12737:1;12730:15;12756:308;12927:13;;;12845:1;12883;12927:13;12992:11;;13013:19;;;13005:28;;12989:45;12979:79;;13038:18;;:::i;:::-;12979:79;;;12756:308;;;;:::o;13069:184::-;13121:77;13118:1;13111:88;13218:4;13215:1;13208:15;13242:4;13239:1;13232:15;13258:202;13298:1;13341;13379;13400:3;13390:37;;13407:18;;:::i;:::-;13441:13;;;13258:202;-1:-1:-1;;;13258:202:69:o;13465:176::-;13555:13;;;13602:33;13555:13;13602:33;:::i;13646:172::-;13734:13;;;13781:31;13734:13;13781:31;:::i;13907:120::-;13893:6;13882:18;;13981:21;13823:79;14032:174;14121:13;;;14168:32;14121:13;14168:32;:::i;14292:118::-;14280:4;14269:16;;14365:20;14211:76;14415:172;14503:13;;;14550:31;14503:13;14550:31;:::i;14592:860::-;14706:6;14714;14722;14730;14738;14746;14754;14807:3;14795:9;14786:7;14782:23;14778:33;14775:148;;;14834:79;588:6124:63;;;14834:79:69;14942:49;14983:7;14972:9;14942:49;:::i;:::-;14932:59;;15010:56;15058:7;15053:2;15042:9;15038:18;15010:56;:::i;:::-;15000:66;;15085:57;15134:7;15129:2;15118:9;15114:18;15085:57;:::i;:::-;15075:67;;15161:57;15210:7;15205:2;15194:9;15190:18;15161:57;:::i;:::-;15151:67;;15237:58;15287:7;15281:3;15270:9;15266:19;15237:58;:::i;:::-;15227:68;;15314:57;15363:7;15357:3;15346:9;15342:19;15314:57;:::i;:::-;15304:67;;15390:56;15438:7;15432:3;15421:9;15417:19;15390:56;:::i;:::-;15380:66;;14592:860;;;;;;;;;;:::o;15457:122::-;15532:22;15548:5;15532:22;:::i;15584:176::-;15674:13;;;15721:33;15674:13;15721:33;:::i;15765:312::-;15835:6;15888:2;15876:9;15867:7;15863:23;15859:32;15856:147;;;15914:79;588:6124:63;;;15914:79:69;16022:49;16063:7;16052:9;16022:49;:::i;16082:257::-;93:42;82:54;;;;;;16193:28;;;;16256:54;;16253:80;;;16313:18;;:::i;16344:252::-;93:42;82:54;;;;;;16453:28;;;;16514:53;;16511:79;;;16570:18;;:::i;16927:262::-;17046:2;16688:19;;16974:3;16740:4;16731:14;;16891:24;16876:40;;17058:95;17180:2;17169:14;;16927:262;-1:-1:-1;;16927:262:69:o;17334:261::-;17453:1;16688:19;;17381:3;16740:4;16731:14;;17321:5;17306:21;;17464:95;17194:135;17676:146;17728:9;14280:4;14269:16;;17765:51;14211:76;17827:125;17906:39;17939:5;17906:39;:::i;17957:600::-;18295:2;18284:9;18277:21;18258:4;18321:49;18366:2;18355:9;18351:18;18321:49;:::i;:::-;18418:9;18410:6;18406:22;18401:2;18390:9;18386:18;18379:50;18446:37;18476:6;18446:37;:::i;:::-;18438:45;;;18492:59;18547:2;18536:9;18532:18;18524:6;18492:59;:::i;18727:262::-;18846:2;16688:19;;18774:3;16740:4;16731:14;;18697:18;18682:34;;18858:95;18562:160;19135:261;19254:1;16688:19;;19182:3;16740:4;16731:14;;19121:6;19106:22;;19265:95;18994:136;19745:590;20082:2;20071:9;20064:21;20045:4;20108:49;20153:2;20142:9;20138:18;20108:49;:::i;:::-;20205:9;20197:6;20193:22;20188:2;20177:9;20173:18;20166:50;20233:37;20263:6;20233:37;:::i;20340:447::-;20556:3;20541:19;;20569:37;20545:9;20588:6;20569:37;:::i;:::-;20615:46;20657:2;20646:9;20642:18;20634:6;20615:46;:::i;:::-;20670:45;20711:2;20700:9;20696:18;20688:6;20670:45;:::i;:::-;20724:57;20777:2;20766:9;20762:18;20754:6;20724:57;:::i;20792:238::-;20826:3;20859:20;20873:5;4641:1;4630:20;;4564:92;20859:20;20903:66;20894:7;20891:79;20888:105;;20973:18;;:::i;:::-;21013:1;21009:15;;20792:238;-1:-1:-1;;20792:238:69:o;21035:303::-;21073:4;21103:16;21117:1;4641;4630:20;;4564:92;21103:16;21151;21165:1;4641;4630:20;;4564:92;21151:16;21142:26;;;-1:-1:-1;21142:26:69;21218:66;21206:79;;21299:8;21287:21;;21203:106;21200:132;;;21312:18;;:::i;21343:297::-;21381:3;21410:16;21424:1;4641;4630:20;;4564:92;21410:16;21457;21471:1;4641;4630:20;;4564:92;21457:16;21448:26;;-1:-1:-1;21448:26:69;21521:8;21510:20;;21543:66;21532:78;;21507:104;21504:130;;;21614:18;;:::i;21726:250::-;21811:1;21821:113;21835:6;21832:1;21829:13;21821:113;;;21911:11;;;21905:18;21892:11;;;21885:39;21857:2;21850:10;21821:113;;;-1:-1:-1;;21968:1:69;21950:16;;21943:27;21726:250::o;22148:306::-;22190:3;22222:26;22242:5;21707:12;;21645:76;22222:26;16688:19;;;16740:4;16731:14;;22327:67;22387:6;22380:5;22373:4;22366:5;22362:16;22327:67;:::i;:::-;22070:66;22065:2;22054:14;;22050:87;22410:38;;22148:306;-1:-1:-1;;;;22148:306:69:o;22459:220::-;22608:2;22597:9;22590:21;22571:4;22628:45;22669:2;22658:9;22654:18;22646:6;22628:45;:::i;22684:308::-;22752:6;22805:2;22793:9;22784:7;22780:23;22776:32;22773:147;;;22831:79;588:6124:63;;;22831:79:69;22939:47;22978:7;22967:9;22939:47;:::i;22997:91::-;23061:20;23075:5;4641:1;4630:20;;4564:92;23093:268;23255:2;23240:18;;23267:35;23244:9;23284:6;23267:35;:::i;:::-;23311:44;23351:2;23340:9;23336:18;23328:6;23311:44;:::i;23471:1301::-;23535:48;23579:3;23571:5;23565:12;23535:48;:::i;:::-;23629:4;23622:5;23618:16;23612:23;23644:59;23697:4;23692:3;23688:14;23674:12;23644:59;:::i;:::-;;23751:4;23744:5;23740:16;23734:23;23766:59;23819:4;23814:3;23810:14;23794;23766:59;:::i;:::-;;23873:4;23866:5;23862:16;23856:23;23888:57;23939:4;23934:3;23930:14;23914;23888:57;:::i;:::-;;23993:4;23986:5;23982:16;23976:23;24008:57;24059:4;24054:3;24050:14;24034;24008:57;:::i;:::-;;24113:4;24106:5;24102:16;24096:23;24128:50;24172:4;24167:3;24163:14;24147;24128:50;:::i;:::-;;24226:4;24219:5;24215:16;24209:23;24241:50;24285:4;24280:3;24276:14;24260;24241:50;:::i;:::-;;24339:4;24332:5;24328:16;24322:23;24354:50;24398:4;24393:3;24389:14;24373;24354:50;:::i;:::-;;24452:6;24445:5;24441:18;24435:25;24469:52;24513:6;24508:3;24504:16;24488:14;24469:52;:::i;:::-;;24569:6;24562:5;24558:18;24552:25;24586:63;24641:6;24636:3;24632:16;24616:14;24586:63;:::i;:::-;;24697:6;24690:5;24686:18;24680:25;24714:52;24758:6;24753:3;24749:16;24733:14;24714:52;:::i;24777:258::-;24969:3;24954:19;;24982:47;24958:9;25011:6;24982:47;:::i;25040:122::-;7598:34;7587:46;;25115:22;7519:120;25167:176;25257:13;;;25304:33;25257:13;25304:33;:::i;25348:595::-;25445:6;25453;25461;25469;25522:3;25510:9;25501:7;25497:23;25493:33;25490:148;;;25549:79;588:6124:63;;;25549:79:69;25657:49;25698:7;25687:9;25657:49;:::i;:::-;25647:59;;25725:58;25775:7;25770:2;25759:9;25755:18;25725:58;:::i;:::-;25715:68;;25802:58;25852:7;25847:2;25836:9;25832:18;25802:58;:::i;:::-;25792:68;;25879:58;25929:7;25924:2;25913:9;25909:18;25879:58;:::i", "linkReferences": { "src/Util.sol": { "Util": [ { "start": 5287, "length": 20 }, { "start": 5442, "length": 20 } ] } } }, "methodIdentifiers": { "COIN()": "a54a72b7", "USD()": "1bf6c21b", "fee()": "ddca3f43", "init()": "e1c7392a", "inverted()": "67e368fc", "nfpm()": "7303e913", "pool()": "16f0115b", "price()": "a035b1fe", "stake(uint256,int24)": "e3baf41a", "stake(uint256,int24,int24)": "53486e2f", "stake(uint256,uint256,int24,int24)": "d6f13002", "swap(address,address,uint256)": "df791e50", "swap(address,address,uint256,uint160)": "4a09d3dd", "swapToPrice(uint160)": "c578d91d", "swapper()": "2b3297f9", "token0()": "0dfe1681", "token1()": "d21220a7" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"COIN\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inverted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nfpm\",\"outputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"coinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usdAmount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"width\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/MockEnv.sol\":\"MockEnv\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"src/Constants.sol\":{\"keccak256\":\"0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be\",\"dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" }, "language": "Solidity", "output": { "abi": [ { "inputs": [], "stateMutability": "view", "type": "function", "name": "COIN", "outputs": [ { "internalType": "contract MockERC20", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "USD", "outputs": [ { "internalType": "contract MockERC20", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "fee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ] }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "init" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "inverted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "nfpm", "outputs": [ { "internalType": "contract INonfungiblePositionManager", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "pool", "outputs": [ { "internalType": "contract IUniswapV3Pool", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "price", "outputs": [ { "internalType": "uint160", "name": "sqrtPriceX96", "type": "uint160" } ] }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "int24", "name": "lower", "type": "int24" }, { "internalType": "int24", "name": "upper", "type": "int24" } ], "stateMutability": "nonpayable", "type": "function", "name": "stake" }, { "inputs": [ { "internalType": "uint256", "name": "coinAmount", "type": "uint256" }, { "internalType": "uint256", "name": "usdAmount", "type": "uint256" }, { "internalType": "int24", "name": "lower", "type": "int24" }, { "internalType": "int24", "name": "upper", "type": "int24" } ], "stateMutability": "nonpayable", "type": "function", "name": "stake", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ] }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "int24", "name": "width", "type": "int24" } ], "stateMutability": "nonpayable", "type": "function", "name": "stake" }, { "inputs": [ { "internalType": "contract MockERC20", "name": "inToken", "type": "address" }, { "internalType": "contract MockERC20", "name": "outToken", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "stateMutability": "nonpayable", "type": "function", "name": "swap", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ] }, { "inputs": [ { "internalType": "contract MockERC20", "name": "inToken", "type": "address" }, { "internalType": "contract MockERC20", "name": "outToken", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "swap", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ] }, { "inputs": [ { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "stateMutability": "nonpayable", "type": "function", "name": "swapToPrice" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "swapper", "outputs": [ { "internalType": "contract ISwapRouter", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "token0", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "token1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ] } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "settings": { "remappings": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@uniswap/v3-core/=lib_uniswap/v3-core/", "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "v3-core/=lib_uniswap/v3-core/", "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/" ], "optimizer": { "runs": 999999999, "details": { "peephole": true, "inliner": true, "jumpdestRemover": true, "orderLiterals": true, "deduplicate": true, "cse": true, "constantOptimizer": true, "yul": true, "yulDetails": { "stackAllocation": true, "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu" } } }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "test/MockEnv.sol": "MockEnv" }, "libraries": {} }, "sources": { "lib/forge-std/src/console2.sol": { "keccak256": "0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea", "urls": [ "bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973", "dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": { "keccak256": "0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d", "urls": [ "bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d", "dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { "keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b", "urls": [ "bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34", "dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": { "keccak256": "0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca", "urls": [ "bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd", "dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": { "keccak256": "0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68", "urls": [ "bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56", "dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { "keccak256": "0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf", "urls": [ "bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34", "dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol": { "keccak256": "0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9", "urls": [ "bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146", "dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Context.sol": { "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", "urls": [ "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", "urls": [ "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" ], "license": "MIT" }, "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol": { "keccak256": "0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489", "urls": [ "bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2", "dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { "keccak256": "0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1", "urls": [ "bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5", "dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": { "keccak256": "0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69", "urls": [ "bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652", "dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634", "urls": [ "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5", "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5", "urls": [ "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7", "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd", "urls": [ "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03", "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7", "urls": [ "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047", "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235", "urls": [ "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735", "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { "keccak256": "0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f", "urls": [ "bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f", "dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol": { "keccak256": "0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032", "urls": [ "bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d", "dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/libraries/FullMath.sol": { "keccak256": "0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be", "urls": [ "bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d", "dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2" ], "license": "MIT" }, "lib_uniswap/v3-core/contracts/libraries/TickMath.sol": { "keccak256": "0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d", "urls": [ "bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3", "dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol": { "keccak256": "0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4", "urls": [ "bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471", "dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol": { "keccak256": "0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984", "urls": [ "bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56", "dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol": { "keccak256": "0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d", "urls": [ "bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f", "dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol": { "keccak256": "0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274", "urls": [ "bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407", "dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol": { "keccak256": "0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862", "urls": [ "bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f", "dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol": { "keccak256": "0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975", "urls": [ "bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53", "dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol": { "keccak256": "0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24", "urls": [ "bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844", "dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol": { "keccak256": "0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4", "urls": [ "bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48", "dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr" ], "license": "GPL-2.0-or-later" }, "src/Constants.sol": { "keccak256": "0x0dfa2216f60ff43f051a140d565171d67dc461b61dd7c486668c6f085d9405c3", "urls": [ "bzz-raw://015f74b4f9193c43cd67d59dcf9f2c5338995eee0d7cd0feb4d4ab908e3492be", "dweb:/ipfs/QmUaawZvDZi2ERKNE34xGkQvBjoKhdddCTduPxWZZGf1pu" ], "license": "UNLICENSED" }, "src/MockERC20.sol": { "keccak256": "0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089", "urls": [ "bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4", "dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK" ], "license": null }, "src/Util.sol": { "keccak256": "0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad", "urls": [ "bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80", "dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr" ], "license": "UNLICENSED" }, "test/MockEnv.sol": { "keccak256": "0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b", "urls": [ "bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368", "dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V" ], "license": "UNLICENSED" } }, "version": 1 }, "ast": { "absolutePath": "test/MockEnv.sol", "id": 50067, "exportedSymbols": { "Constants": [ 46261 ], "Context": [ 43777 ], "ERC20": [ 43478 ], "FixedPoint96": [ 44338 ], "FullMath": [ 44519 ], "IERC165": [ 43789 ], "IERC20": [ 43556 ], "IERC20Metadata": [ 43581 ], "IERC721": [ 43697 ], "IERC721Enumerable": [ 43728 ], "IERC721Metadata": [ 43755 ], "IERC721Permit": [ 45094 ], "INonfungiblePositionManager": [ 45293 ], "IPeripheryImmutableState": [ 45309 ], "IPeripheryPayments": [ 45335 ], "IPoolInitializer": [ 45354 ], "ISwapRouter": [ 45454 ], "IUniswapV3Factory": [ 43872 ], "IUniswapV3Pool": [ 43894 ], "IUniswapV3PoolActions": [ 44004 ], "IUniswapV3PoolDerivedState": [ 44035 ], "IUniswapV3PoolEvents": [ 44154 ], "IUniswapV3PoolImmutables": [ 44194 ], "IUniswapV3PoolOwnerActions": [ 44220 ], "IUniswapV3PoolState": [ 44328 ], "IUniswapV3SwapCallback": [ 43908 ], "LiquidityAmounts": [ 45794 ], "MockERC20": [ 46475 ], "MockEnv": [ 50066 ], "PoolAddress": [ 45892 ], "TickMath": [ 45059 ], "Util": [ 48901 ], "console2": [ 29653 ] }, "nodeType": "SourceUnit", "src": "65:6648:63", "nodes": [ { "id": 49444, "nodeType": "PragmaDirective", "src": "65:24:63", "nodes": [], "literals": [ "solidity", ">=", "0.8", ".0" ] }, { "id": 49445, "nodeType": "PragmaDirective", "src": "90:19:63", "nodes": [], "literals": [ "abicoder", "v2" ] }, { "id": 49446, "nodeType": "ImportDirective", "src": "111:32:63", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", "scope": 50067, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { "id": 49447, "nodeType": "ImportDirective", "src": "144:30:63", "nodes": [], "absolutePath": "src/MockERC20.sol", "file": "../src/MockERC20.sol", "nameLocation": "-1:-1:-1", "scope": 50067, "sourceUnit": 46476, "symbolAliases": [], "unitAlias": "" }, { "id": 49448, "nodeType": "ImportDirective", "src": "175:25:63", "nodes": [], "absolutePath": "src/Util.sol", "file": "../src/Util.sol", "nameLocation": "-1:-1:-1", "scope": 50067, "sourceUnit": 48902, "symbolAliases": [], "unitAlias": "" }, { "id": 49449, "nodeType": "ImportDirective", "src": "201:30:63", "nodes": [], "absolutePath": "src/Constants.sol", "file": "../src/Constants.sol", "nameLocation": "-1:-1:-1", "scope": 50067, "sourceUnit": 46262, "symbolAliases": [], "unitAlias": "" }, { "id": 49450, "nodeType": "ImportDirective", "src": "232:66:63", "nodes": [], "absolutePath": "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", "file": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", "nameLocation": "-1:-1:-1", "scope": 50067, "sourceUnit": 43895, "symbolAliases": [], "unitAlias": "" }, { "id": 49451, "nodeType": "ImportDirective", "src": "299:59:63", "nodes": [], "absolutePath": "lib_uniswap/v3-core/contracts/libraries/TickMath.sol", "file": "@uniswap/v3-core/contracts/libraries/TickMath.sol", "nameLocation": "-1:-1:-1", "scope": 50067, "sourceUnit": 45060, "symbolAliases": [], "unitAlias": "" }, { "id": 49452, "nodeType": "ImportDirective", "src": "359:84:63", "nodes": [], "absolutePath": "lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol", "file": "@uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol", "nameLocation": "-1:-1:-1", "scope": 50067, "sourceUnit": 45294, "symbolAliases": [], "unitAlias": "" }, { "id": 49453, "nodeType": "ImportDirective", "src": "444:68:63", "nodes": [], "absolutePath": "lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol", "file": "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol", "nameLocation": "-1:-1:-1", "scope": 50067, "sourceUnit": 45455, "symbolAliases": [], "unitAlias": "" }, { "id": 49454, "nodeType": "ImportDirective", "src": "513:72:63", "nodes": [], "absolutePath": "lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol", "file": "@uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol", "nameLocation": "-1:-1:-1", "scope": 50067, "sourceUnit": 45795, "symbolAliases": [], "unitAlias": "" }, { "id": 50066, "nodeType": "ContractDefinition", "src": "588:6124:63", "nodes": [ { "id": 49459, "nodeType": "VariableDeclaration", "src": "612:87:63", "nodes": [], "constant": false, "functionSelector": "7303e913", "mutability": "mutable", "name": "nfpm", "nameLocation": "647:4:63", "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" }, "typeName": { "id": 49456, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49455, "name": "INonfungiblePositionManager", "nameLocations": [ "612:27:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 45293, "src": "612:27:63" }, "referencedDeclaration": 45293, "src": "612:27:63", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" } }, "value": { "expression": { "id": 49457, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46261, "src": "654:9:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, "id": 49458, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "664:35:63", "memberName": "uniswapV3NonfungiblePositionManager", "nodeType": "MemberAccess", "referencedDeclaration": 46254, "src": "654:45:63", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" } }, "visibility": "public" }, { "id": 49464, "nodeType": "VariableDeclaration", "src": "705:58:63", "nodes": [], "constant": false, "functionSelector": "2b3297f9", "mutability": "mutable", "name": "swapper", "nameLocation": "724:7:63", "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ISwapRouter_$45454", "typeString": "contract ISwapRouter" }, "typeName": { "id": 49461, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49460, "name": "ISwapRouter", "nameLocations": [ "705:11:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 45454, "src": "705:11:63" }, "referencedDeclaration": 45454, "src": "705:11:63", "typeDescriptions": { "typeIdentifier": "t_contract$_ISwapRouter_$45454", "typeString": "contract ISwapRouter" } }, "value": { "expression": { "id": 49462, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46261, "src": "734:9:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Constants_$46261_$", "typeString": "type(library Constants)" } }, "id": 49463, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "744:19:63", "memberName": "uniswapV3SwapRouter", "nodeType": "MemberAccess", "referencedDeclaration": 46260, "src": "734:29:63", "typeDescriptions": { "typeIdentifier": "t_contract$_ISwapRouter_$45454", "typeString": "contract ISwapRouter" } }, "visibility": "public" }, { "id": 49467, "nodeType": "VariableDeclaration", "src": "769:26:63", "nodes": [], "constant": false, "functionSelector": "16f0115b", "mutability": "mutable", "name": "pool", "nameLocation": "791:4:63", "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" }, "typeName": { "id": 49466, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49465, "name": "IUniswapV3Pool", "nameLocations": [ "769:14:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 43894, "src": "769:14:63" }, "referencedDeclaration": 43894, "src": "769:14:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, "visibility": "public" }, { "id": 49469, "nodeType": "VariableDeclaration", "src": "801:17:63", "nodes": [], "constant": false, "functionSelector": "ddca3f43", "mutability": "mutable", "name": "fee", "nameLocation": "815:3:63", "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" }, "typeName": { "id": 49468, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "801:6:63", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, "visibility": "public" }, { "id": 49472, "nodeType": "VariableDeclaration", "src": "824:21:63", "nodes": [], "constant": false, "functionSelector": "a54a72b7", "mutability": "mutable", "name": "COIN", "nameLocation": "841:4:63", "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { "id": 49471, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49470, "name": "MockERC20", "nameLocations": [ "824:9:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46475, "src": "824:9:63" }, "referencedDeclaration": 46475, "src": "824:9:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "public" }, { "id": 49475, "nodeType": "VariableDeclaration", "src": "851:20:63", "nodes": [], "constant": false, "functionSelector": "1bf6c21b", "mutability": "mutable", "name": "USD", "nameLocation": "868:3:63", "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { "id": 49474, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49473, "name": "MockERC20", "nameLocations": [ "851:9:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46475, "src": "851:9:63" }, "referencedDeclaration": 46475, "src": "851:9:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "public" }, { "id": 49477, "nodeType": "VariableDeclaration", "src": "877:21:63", "nodes": [], "constant": false, "functionSelector": "0dfe1681", "mutability": "mutable", "name": "token0", "nameLocation": "892:6:63", "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 49476, "name": "address", "nodeType": "ElementaryTypeName", "src": "877:7:63", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "public" }, { "id": 49479, "nodeType": "VariableDeclaration", "src": "961:21:63", "nodes": [], "constant": false, "functionSelector": "d21220a7", "mutability": "mutable", "name": "token1", "nameLocation": "976:6:63", "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 49478, "name": "address", "nodeType": "ElementaryTypeName", "src": "961:7:63", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "public" }, { "id": 49481, "nodeType": "VariableDeclaration", "src": "988:20:63", "nodes": [], "constant": false, "functionSelector": "67e368fc", "mutability": "mutable", "name": "inverted", "nameLocation": "1000:8:63", "scope": 50066, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 49480, "name": "bool", "nodeType": "ElementaryTypeName", "src": "988:4:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "public" }, { "id": 49631, "nodeType": "FunctionDefinition", "src": "1349:1125:63", "nodes": [], "body": { "id": 49630, "nodeType": "Block", "src": "1372:1102:63", "nodes": [], "statements": [ { "expression": { "id": 49492, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 49484, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49472, "src": "1382:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "hexValue": "4d6f636b20457468657265756d2048617264666f726b", "id": 49488, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1403:24:63", "typeDescriptions": { "typeIdentifier": "t_stringliteral_61bca07db2491f9e6530a587e4a3b3d24366afe94d6b7a43f109208d06ad1623", "typeString": "literal_string \"Mock Ethereum Hardfork\"" }, "value": "Mock Ethereum Hardfork" }, { "hexValue": "4d4548", "id": 49489, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1429:5:63", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f6cdb29c65e7a85181f8b7be06d65a4f4c2350d0c1bddc8cde3fbff5a30301b0", "typeString": "literal_string \"MEH\"" }, "value": "MEH" }, { "hexValue": "3138", "id": 49490, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1436:2:63", "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_61bca07db2491f9e6530a587e4a3b3d24366afe94d6b7a43f109208d06ad1623", "typeString": "literal_string \"Mock Ethereum Hardfork\"" }, { "typeIdentifier": "t_stringliteral_f6cdb29c65e7a85181f8b7be06d65a4f4c2350d0c1bddc8cde3fbff5a30301b0", "typeString": "literal_string \"MEH\"" }, { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" } ], "id": 49487, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "1389:13:63", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_MockERC20_$46475_$", "typeString": "function (string memory,string memory,uint8) returns (contract MockERC20)" }, "typeName": { "id": 49486, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49485, "name": "MockERC20", "nameLocations": [ "1393:9:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46475, "src": "1393:9:63" }, "referencedDeclaration": 46475, "src": "1393:9:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } }, "id": 49491, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1389:50:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "src": "1382:57:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "id": 49493, "nodeType": "ExpressionStatement", "src": "1382:57:63" }, { "expression": { "arguments": [ { "hexValue": "4d4548", "id": 49497, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1462:5:63", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f6cdb29c65e7a85181f8b7be06d65a4f4c2350d0c1bddc8cde3fbff5a30301b0", "typeString": "literal_string \"MEH\"" }, "value": "MEH" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_f6cdb29c65e7a85181f8b7be06d65a4f4c2350d0c1bddc8cde3fbff5a30301b0", "typeString": "literal_string \"MEH\"" } ], "expression": { "id": 49494, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "1449:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1458:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "1449:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 49498, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1449:19:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49499, "nodeType": "ExpressionStatement", "src": "1449:19:63" }, { "expression": { "arguments": [ { "arguments": [ { "id": 49505, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49472, "src": "1499:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49504, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1491:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49503, "name": "address", "nodeType": "ElementaryTypeName", "src": "1491:7:63", "typeDescriptions": {} } }, "id": 49506, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1491:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 49500, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "1478:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1487:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22195, "src": "1478:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 49507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1478:27:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49508, "nodeType": "ExpressionStatement", "src": "1478:27:63" }, { "expression": { "id": 49517, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 49509, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "1515:3:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "hexValue": "4a6f6b652043757272656e6379205844", "id": 49513, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1535:18:63", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9de8145b56d0950b3b524db38ddd94ed49e940bef354525a4fce23b44e03c08", "typeString": "literal_string \"Joke Currency XD\"" }, "value": "Joke Currency XD" }, { "hexValue": "55535844", "id": 49514, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1555:6:63", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6eb017ee881f4249a2beb44d6865a54ed1b2d9382b523427c1bb679fc16e4336", "typeString": "literal_string \"USXD\"" }, "value": "USXD" }, { "hexValue": "36", "id": 49515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1563:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_a9de8145b56d0950b3b524db38ddd94ed49e940bef354525a4fce23b44e03c08", "typeString": "literal_string \"Joke Currency XD\"" }, { "typeIdentifier": "t_stringliteral_6eb017ee881f4249a2beb44d6865a54ed1b2d9382b523427c1bb679fc16e4336", "typeString": "literal_string \"USXD\"" }, { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" } ], "id": 49512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "1521:13:63", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_MockERC20_$46475_$", "typeString": "function (string memory,string memory,uint8) returns (contract MockERC20)" }, "typeName": { "id": 49511, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49510, "name": "MockERC20", "nameLocations": [ "1525:9:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46475, "src": "1525:9:63" }, "referencedDeclaration": 46475, "src": "1525:9:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } }, "id": 49516, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1521:44:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "src": "1515:50:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "id": 49518, "nodeType": "ExpressionStatement", "src": "1515:50:63" }, { "expression": { "arguments": [ { "hexValue": "55535844", "id": 49522, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1588:6:63", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6eb017ee881f4249a2beb44d6865a54ed1b2d9382b523427c1bb679fc16e4336", "typeString": "literal_string \"USXD\"" }, "value": "USXD" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_6eb017ee881f4249a2beb44d6865a54ed1b2d9382b523427c1bb679fc16e4336", "typeString": "literal_string \"USXD\"" } ], "expression": { "id": 49519, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "1575:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49521, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1584:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "1575:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 49523, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1575:20:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49524, "nodeType": "ExpressionStatement", "src": "1575:20:63" }, { "expression": { "arguments": [ { "arguments": [ { "id": 49530, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "1626:3:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49529, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1618:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49528, "name": "address", "nodeType": "ElementaryTypeName", "src": "1618:7:63", "typeDescriptions": {} } }, "id": 49531, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1618:12:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 49525, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "1605:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49527, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1614:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22195, "src": "1605:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 49532, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1605:26:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49533, "nodeType": "ExpressionStatement", "src": "1605:26:63" }, { "expression": { "id": 49536, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 49534, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49469, "src": "1641:3:63", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "hexValue": "353030", "id": 49535, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1647:3:63", "typeDescriptions": { "typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500" }, "value": "500" }, "src": "1641:9:63", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, "id": 49537, "nodeType": "ExpressionStatement", "src": "1641:9:63" }, { "expression": { "id": 49548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 49538, "name": "inverted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49481, "src": "1660:8:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 49547, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 49541, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49472, "src": "1679:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49540, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1671:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49539, "name": "address", "nodeType": "ElementaryTypeName", "src": "1671:7:63", "typeDescriptions": {} } }, "id": 49542, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1671:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "arguments": [ { "id": 49545, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "1695:3:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49544, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1687:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49543, "name": "address", "nodeType": "ElementaryTypeName", "src": "1687:7:63", "typeDescriptions": {} } }, "id": 49546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1687:12:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1671:28:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1660:39:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 49549, "nodeType": "ExpressionStatement", "src": "1660:39:63" }, { "expression": { "id": 49561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 49550, "name": "token0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49477, "src": "1709:6:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "condition": { "id": 49551, "name": "inverted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49481, "src": "1718:8:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "arguments": [ { "id": 49558, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49472, "src": "1752:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49557, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1744:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49556, "name": "address", "nodeType": "ElementaryTypeName", "src": "1744:7:63", "typeDescriptions": {} } }, "id": 49559, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1744:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 49560, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1718:39:63", "trueExpression": { "arguments": [ { "id": 49554, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "1737:3:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49553, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1729:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49552, "name": "address", "nodeType": "ElementaryTypeName", "src": "1729:7:63", "typeDescriptions": {} } }, "id": 49555, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1729:12:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1709:48:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 49562, "nodeType": "ExpressionStatement", "src": "1709:48:63" }, { "expression": { "id": 49574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 49563, "name": "token1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49479, "src": "1767:6:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "condition": { "id": 49564, "name": "inverted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49481, "src": "1776:8:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "arguments": [ { "id": 49571, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "1811:3:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49570, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1803:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49569, "name": "address", "nodeType": "ElementaryTypeName", "src": "1803:7:63", "typeDescriptions": {} } }, "id": 49572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1803:12:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 49573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1776:39:63", "trueExpression": { "arguments": [ { "id": 49567, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49472, "src": "1795:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49566, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1787:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49565, "name": "address", "nodeType": "ElementaryTypeName", "src": "1787:7:63", "typeDescriptions": {} } }, "id": 49568, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1787:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1767:48:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 49575, "nodeType": "ExpressionStatement", "src": "1767:48:63" }, { "assignments": [ 49577 ], "declarations": [ { "constant": false, "id": 49577, "mutability": "mutable", "name": "initialPrice", "nameLocation": "1833:12:63", "nodeType": "VariableDeclaration", "scope": 49630, "src": "1825:20:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "typeName": { "id": 49576, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "1825:7:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "visibility": "internal" } ], "id": 49588, "initialValue": { "condition": { "id": 49578, "name": "inverted", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49481, "src": "1848:8:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "arguments": [ { "hexValue": "3739323238313632353134323634333337353933353433", "id": 49585, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1914:23:63", "typeDescriptions": { "typeIdentifier": "t_rational_79228162514264337593543_by_1", "typeString": "int_const 79228162514264337593543" }, "value": "79228162514264337593543" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_79228162514264337593543_by_1", "typeString": "int_const 79228162514264337593543" } ], "id": 49584, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1906:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { "id": 49583, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "1906:7:63", "typeDescriptions": {} } }, "id": 49586, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1906:32:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "id": 49587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "1848:90:63", "trueExpression": { "arguments": [ { "hexValue": "3739323238313632353134323634333337353933353433393530333336303030303030", "id": 49581, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1867:35:63", "typeDescriptions": { "typeIdentifier": "t_rational_79228162514264337593543950336000000_by_1", "typeString": "int_const 7922...(27 digits omitted)...0000" }, "value": "79228162514264337593543950336000000" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_79228162514264337593543950336000000_by_1", "typeString": "int_const 7922...(27 digits omitted)...0000" } ], "id": 49580, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1859:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { "id": 49579, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "1859:7:63", "typeDescriptions": {} } }, "id": 49582, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1859:44:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "VariableDeclarationStatement", "src": "1825:113:63" }, { "expression": { "arguments": [ { "hexValue": "6966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726c", "id": 49592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1970:85:63", "typeDescriptions": { "typeIdentifier": "t_stringliteral_0cc9589f025949272eee97584d99d697e1f21c72bb04afb39d18d0c40805bc23", "typeString": "literal_string \"if this is the last line before a revert then make sure to run forge with --rpc-url\"" }, "value": "if this is the last line before a revert then make sure to run forge with --rpc-url" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_0cc9589f025949272eee97584d99d697e1f21c72bb04afb39d18d0c40805bc23", "typeString": "literal_string \"if this is the last line before a revert then make sure to run forge with --rpc-url\"" } ], "expression": { "id": 49589, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "1957:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1966:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "1957:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 49593, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1957:99:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49594, "nodeType": "ExpressionStatement", "src": "1957:99:63" }, { "expression": { "id": 49605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 49595, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49467, "src": "2166:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "arguments": [ { "id": 49599, "name": "token0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49477, "src": "2228:6:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 49600, "name": "token1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49479, "src": "2236:6:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 49601, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49469, "src": "2244:3:63", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, { "id": 49602, "name": "initialPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49577, "src": "2249:12:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint24", "typeString": "uint24" }, { "typeIdentifier": "t_uint160", "typeString": "uint160" } ], "expression": { "id": 49597, "name": "nfpm", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49459, "src": "2188:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" } }, "id": 49598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2193:34:63", "memberName": "createAndInitializePoolIfNecessary", "nodeType": "MemberAccess", "referencedDeclaration": 45353, "src": "2188:39:63", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_uint24_$_t_uint160_$returns$_t_address_$", "typeString": "function (address,address,uint24,uint160) payable external returns (address)" } }, "id": 49603, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2188:74:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 49596, "name": "IUniswapV3Pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43894, "src": "2173:14:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IUniswapV3Pool_$43894_$", "typeString": "type(contract IUniswapV3Pool)" } }, "id": 49604, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2173:90:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, "src": "2166:97:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, "id": 49606, "nodeType": "ExpressionStatement", "src": "2166:97:63" }, { "expression": { "arguments": [ { "hexValue": "763320706f6f6c", "id": 49610, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2286:9:63", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b5f3ea675d56207132fbaf36b6d49a13e93d56308e585769e46d4a5e8b76e036", "typeString": "literal_string \"v3 pool\"" }, "value": "v3 pool" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_b5f3ea675d56207132fbaf36b6d49a13e93d56308e585769e46d4a5e8b76e036", "typeString": "literal_string \"v3 pool\"" } ], "expression": { "id": 49607, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "2273:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2282:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "2273:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 49611, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2273:23:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49612, "nodeType": "ExpressionStatement", "src": "2273:23:63" }, { "expression": { "arguments": [ { "arguments": [ { "id": 49618, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49467, "src": "2327:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } ], "id": 49617, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2319:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49616, "name": "address", "nodeType": "ElementaryTypeName", "src": "2319:7:63", "typeDescriptions": {} } }, "id": 49619, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2319:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 49613, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "2306:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2315:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22195, "src": "2306:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 49620, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2306:27:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49621, "nodeType": "ExpressionStatement", "src": "2306:27:63" }, { "expression": { "arguments": [ { "hexValue": "31305f3030305f303030", "id": 49623, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2418:10:63", "typeDescriptions": { "typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000" }, "value": "10_000_000" }, { "expression": { "id": 49624, "name": "TickMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 45059, "src": "2430:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_TickMath_$45059_$", "typeString": "type(library TickMath)" } }, "id": 49625, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2439:8:63", "memberName": "MIN_TICK", "nodeType": "MemberAccess", "referencedDeclaration": 44527, "src": "2430:17:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, { "expression": { "id": 49626, "name": "TickMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 45059, "src": "2449:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_TickMath_$45059_$", "typeString": "type(library TickMath)" } }, "id": 49627, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2458:8:63", "memberName": "MAX_TICK", "nodeType": "MemberAccess", "referencedDeclaration": 44532, "src": "2449:17:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_10000000_by_1", "typeString": "int_const 10000000" }, { "typeIdentifier": "t_int24", "typeString": "int24" }, { "typeIdentifier": "t_int24", "typeString": "int24" } ], "id": 49622, "name": "stake", "nodeType": "Identifier", "overloadedDeclarations": [ 49661, 49698, 49725 ], "referencedDeclaration": 49698, "src": "2412:5:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_int24_$_t_int24_$returns$__$", "typeString": "function (uint256,int24,int24)" } }, "id": 49628, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2412:55:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49629, "nodeType": "ExpressionStatement", "src": "2412:55:63" } ] }, "functionSelector": "e1c7392a", "implemented": true, "kind": "function", "modifiers": [], "name": "init", "nameLocation": "1358:4:63", "parameters": { "id": 49482, "nodeType": "ParameterList", "parameters": [], "src": "1362:2:63" }, "returnParameters": { "id": 49483, "nodeType": "ParameterList", "parameters": [], "src": "1372:0:63" }, "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 49661, "nodeType": "FunctionDefinition", "src": "2481:179:63", "nodes": [], "body": { "id": 49660, "nodeType": "Block", "src": "2532:128:63", "nodes": [], "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_int24", "typeString": "int24" }, "id": 49641, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 49639, "name": "width", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49635, "src": "2550:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "30", "id": 49640, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2556:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2550:7:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 49638, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2542:7:63", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 49642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2542:16:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49643, "nodeType": "ExpressionStatement", "src": "2542:16:63" }, { "assignments": [ null, 49645, null, null, null, null, null ], "declarations": [ null, { "constant": false, "id": 49645, "mutability": "mutable", "name": "tick", "nameLocation": "2577:4:63", "nodeType": "VariableDeclaration", "scope": 49660, "src": "2571:10:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 49644, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2571:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" }, null, null, null, null, null ], "id": 49649, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 49646, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49467, "src": "2594:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, "id": 49647, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2599:5:63", "memberName": "slot0", "nodeType": "MemberAccess", "referencedDeclaration": 44241, "src": "2594:10:63", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" } }, "id": 49648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2594:12:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", "typeString": "tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)" } }, "nodeType": "VariableDeclarationStatement", "src": "2568:38:63" }, { "expression": { "arguments": [ { "id": 49651, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49633, "src": "2622:6:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "commonType": { "typeIdentifier": "t_int24", "typeString": "int24" }, "id": 49654, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 49652, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49645, "src": "2630:4:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 49653, "name": "width", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49635, "src": "2635:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "src": "2630:10:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, { "commonType": { "typeIdentifier": "t_int24", "typeString": "int24" }, "id": 49657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 49655, "name": "tick", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49645, "src": "2642:4:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 49656, "name": "width", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49635, "src": "2647:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "src": "2642:10:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_int24", "typeString": "int24" }, { "typeIdentifier": "t_int24", "typeString": "int24" } ], "id": 49650, "name": "stake", "nodeType": "Identifier", "overloadedDeclarations": [ 49661, 49698, 49725 ], "referencedDeclaration": 49698, "src": "2616:5:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_int24_$_t_int24_$returns$__$", "typeString": "function (uint256,int24,int24)" } }, "id": 49658, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2616:37:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49659, "nodeType": "ExpressionStatement", "src": "2616:37:63" } ] }, "functionSelector": "e3baf41a", "implemented": true, "kind": "function", "modifiers": [], "name": "stake", "nameLocation": "2490:5:63", "parameters": { "id": 49636, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49633, "mutability": "mutable", "name": "amount", "nameLocation": "2504:6:63", "nodeType": "VariableDeclaration", "scope": 49661, "src": "2496:14:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49632, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2496:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49635, "mutability": "mutable", "name": "width", "nameLocation": "2518:5:63", "nodeType": "VariableDeclaration", "scope": 49661, "src": "2512:11:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 49634, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2512:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" } ], "src": "2495:29:63" }, "returnParameters": { "id": 49637, "nodeType": "ParameterList", "parameters": [], "src": "2532:0:63" }, "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 49698, "nodeType": "FunctionDefinition", "src": "2667:221:63", "nodes": [], "body": { "id": 49697, "nodeType": "Block", "src": "2731:157:63", "nodes": [], "statements": [ { "assignments": [ 49671 ], "declarations": [ { "constant": false, "id": 49671, "mutability": "mutable", "name": "coinAmount", "nameLocation": "2749:10:63", "nodeType": "VariableDeclaration", "scope": 49697, "src": "2741:18:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49670, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2741:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 49679, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 49678, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 49676, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 49672, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49663, "src": "2762:6:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "commonType": { "typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000" }, "id": 49675, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "3130", "id": 49673, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2771:2:63", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "hexValue": "3138", "id": 49674, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2775:2:63", "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" }, "src": "2771:6:63", "typeDescriptions": { "typeIdentifier": "t_rational_1000000000000000000_by_1", "typeString": "int_const 1000000000000000000" } }, "src": "2762:15:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "hexValue": "32", "id": 49677, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2780:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "src": "2762:19:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "2741:40:63" }, { "assignments": [ 49681 ], "declarations": [ { "constant": false, "id": 49681, "mutability": "mutable", "name": "usdAmount", "nameLocation": "2799:9:63", "nodeType": "VariableDeclaration", "scope": 49697, "src": "2791:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2791:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 49689, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 49688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 49686, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 49682, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49663, "src": "2811:6:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "commonType": { "typeIdentifier": "t_rational_1000000_by_1", "typeString": "int_const 1000000" }, "id": 49685, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "3130", "id": 49683, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2820:2:63", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "hexValue": "36", "id": 49684, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2824:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" }, "src": "2820:5:63", "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", "typeString": "int_const 1000000" } }, "src": "2811:14:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "hexValue": "32", "id": 49687, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2828:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "src": "2811:18:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "2791:38:63" }, { "expression": { "arguments": [ { "id": 49691, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49671, "src": "2845:10:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 49692, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49681, "src": "2857:9:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 49693, "name": "lower", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49665, "src": "2868:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, { "id": 49694, "name": "upper", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49667, "src": "2875:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_int24", "typeString": "int24" }, { "typeIdentifier": "t_int24", "typeString": "int24" } ], "id": 49690, "name": "stake", "nodeType": "Identifier", "overloadedDeclarations": [ 49661, 49698, 49725 ], "referencedDeclaration": 49725, "src": "2839:5:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", "typeString": "function (uint256,uint256,int24,int24) returns (uint256,uint128,uint256,uint256)" } }, "id": 49695, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2839:42:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint128,uint256,uint256)" } }, "id": 49696, "nodeType": "ExpressionStatement", "src": "2839:42:63" } ] }, "functionSelector": "53486e2f", "implemented": true, "kind": "function", "modifiers": [], "name": "stake", "nameLocation": "2676:5:63", "parameters": { "id": 49668, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49663, "mutability": "mutable", "name": "amount", "nameLocation": "2690:6:63", "nodeType": "VariableDeclaration", "scope": 49698, "src": "2682:14:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49662, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2682:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49665, "mutability": "mutable", "name": "lower", "nameLocation": "2704:5:63", "nodeType": "VariableDeclaration", "scope": 49698, "src": "2698:11:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 49664, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2698:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" }, { "constant": false, "id": 49667, "mutability": "mutable", "name": "upper", "nameLocation": "2717:5:63", "nodeType": "VariableDeclaration", "scope": 49698, "src": "2711:11:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 49666, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2711:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" } ], "src": "2681:42:63" }, "returnParameters": { "id": 49669, "nodeType": "ParameterList", "parameters": [], "src": "2731:0:63" }, "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 49725, "nodeType": "FunctionDefinition", "src": "2895:279:63", "nodes": [], "body": { "id": 49724, "nodeType": "Block", "src": "3107:67:63", "nodes": [], "statements": [ { "expression": { "arguments": [ { "id": 49718, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49700, "src": "3131:10:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 49719, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49702, "src": "3143:9:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 49720, "name": "lower", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49704, "src": "3154:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, { "id": 49721, "name": "upper", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49706, "src": "3161:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_int24", "typeString": "int24" }, { "typeIdentifier": "t_int24", "typeString": "int24" } ], "id": 49717, "name": "_stake", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49870, "src": "3124:6:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", "typeString": "function (uint256,uint256,int24,int24) returns (uint256,uint128,uint256,uint256)" } }, "id": 49722, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3124:43:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint128,uint256,uint256)" } }, "functionReturnParameters": 49716, "id": 49723, "nodeType": "Return", "src": "3117:50:63" } ] }, "functionSelector": "d6f13002", "implemented": true, "kind": "function", "modifiers": [], "name": "stake", "nameLocation": "2904:5:63", "parameters": { "id": 49707, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49700, "mutability": "mutable", "name": "coinAmount", "nameLocation": "2918:10:63", "nodeType": "VariableDeclaration", "scope": 49725, "src": "2910:18:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49699, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2910:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49702, "mutability": "mutable", "name": "usdAmount", "nameLocation": "2938:9:63", "nodeType": "VariableDeclaration", "scope": 49725, "src": "2930:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49701, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2930:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49704, "mutability": "mutable", "name": "lower", "nameLocation": "2955:5:63", "nodeType": "VariableDeclaration", "scope": 49725, "src": "2949:11:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 49703, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2949:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" }, { "constant": false, "id": 49706, "mutability": "mutable", "name": "upper", "nameLocation": "2968:5:63", "nodeType": "VariableDeclaration", "scope": 49725, "src": "2962:11:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 49705, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2962:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" } ], "src": "2909:65:63" }, "returnParameters": { "id": 49716, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49709, "mutability": "mutable", "name": "tokenId", "nameLocation": "3012:7:63", "nodeType": "VariableDeclaration", "scope": 49725, "src": "3004:15:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49708, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3004:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49711, "mutability": "mutable", "name": "liquidity", "nameLocation": "3037:9:63", "nodeType": "VariableDeclaration", "scope": 49725, "src": "3029:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" }, "typeName": { "id": 49710, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "3029:7:63", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "visibility": "internal" }, { "constant": false, "id": 49713, "mutability": "mutable", "name": "amount0", "nameLocation": "3064:7:63", "nodeType": "VariableDeclaration", "scope": 49725, "src": "3056:15:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49712, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3056:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49715, "mutability": "mutable", "name": "amount1", "nameLocation": "3089:7:63", "nodeType": "VariableDeclaration", "scope": 49725, "src": "3081:15:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49714, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3081:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "2994:108:63" }, "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 49870, "nodeType": "FunctionDefinition", "src": "3180:1597:63", "nodes": [], "body": { "id": 49869, "nodeType": "Block", "src": "3394:1383:63", "nodes": [], "statements": [ { "expression": { "arguments": [ { "arguments": [ { "id": 49749, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3534:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } ], "id": 49748, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3526:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49747, "name": "address", "nodeType": "ElementaryTypeName", "src": "3526:7:63", "typeDescriptions": {} } }, "id": 49750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3526:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 49751, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49727, "src": "3541:10:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 49744, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49472, "src": "3516:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "id": 49746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3521:4:63", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 46474, "src": "3516:9:63", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 49752, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3516:36:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49753, "nodeType": "ExpressionStatement", "src": "3516:36:63" }, { "expression": { "arguments": [ { "arguments": [ { "id": 49759, "name": "nfpm", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49459, "src": "3583:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" } ], "id": 49758, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3575:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49757, "name": "address", "nodeType": "ElementaryTypeName", "src": "3575:7:63", "typeDescriptions": {} } }, "id": 49760, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3575:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 49761, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49727, "src": "3590:10:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 49754, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49472, "src": "3562:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "id": 49756, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3567:7:63", "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 43058, "src": "3562:12:63", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 49762, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3562:39:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 49763, "nodeType": "ExpressionStatement", "src": "3562:39:63" }, { "expression": { "arguments": [ { "arguments": [ { "id": 49769, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "3667:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } ], "id": 49768, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3659:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49767, "name": "address", "nodeType": "ElementaryTypeName", "src": "3659:7:63", "typeDescriptions": {} } }, "id": 49770, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3659:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 49771, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49729, "src": "3674:9:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 49764, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "3650:3:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "id": 49766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3654:4:63", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 46474, "src": "3650:8:63", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 49772, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3650:34:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49773, "nodeType": "ExpressionStatement", "src": "3650:34:63" }, { "expression": { "arguments": [ { "arguments": [ { "id": 49779, "name": "nfpm", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49459, "src": "3714:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" } ], "id": 49778, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3706:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49777, "name": "address", "nodeType": "ElementaryTypeName", "src": "3706:7:63", "typeDescriptions": {} } }, "id": 49780, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3706:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 49781, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49729, "src": "3721:9:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 49774, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "3694:3:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "id": 49776, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3698:7:63", "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 43058, "src": "3694:11:63", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 49782, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3694:37:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 49783, "nodeType": "ExpressionStatement", "src": "3694:37:63" }, { "assignments": [ 49785 ], "declarations": [ { "constant": false, "id": 49785, "mutability": "mutable", "name": "ts", "nameLocation": "4235:2:63", "nodeType": "VariableDeclaration", "scope": 49869, "src": "4229:8:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 49784, "name": "int24", "nodeType": "ElementaryTypeName", "src": "4229:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" } ], "id": 49789, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 49786, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49467, "src": "4240:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, "id": 49787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4245:11:63", "memberName": "tickSpacing", "nodeType": "MemberAccess", "referencedDeclaration": 44187, "src": "4240:16:63", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_int24_$", "typeString": "function () view external returns (int24)" } }, "id": 49788, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4240:18:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "nodeType": "VariableDeclarationStatement", "src": "4229:29:63" }, { "expression": { "id": 49796, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 49790, "name": "lower", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49731, "src": "4268:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "id": 49793, "name": "lower", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49731, "src": "4291:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, { "id": 49794, "name": "ts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49785, "src": "4298:2:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_int24", "typeString": "int24" }, { "typeIdentifier": "t_int24", "typeString": "int24" } ], "expression": { "id": 49791, "name": "Util", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48901, "src": "4276:4:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Util_$48901_$", "typeString": "type(library Util)" } }, "id": 49792, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4281:9:63", "memberName": "roundTick", "nodeType": "MemberAccess", "referencedDeclaration": 48900, "src": "4276:14:63", "typeDescriptions": { "typeIdentifier": "t_function_delegatecall_pure$_t_int24_$_t_int24_$returns$_t_int24_$", "typeString": "function (int24,int24) pure returns (int24)" } }, "id": 49795, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4276:25:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "src": "4268:33:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "id": 49797, "nodeType": "ExpressionStatement", "src": "4268:33:63" }, { "expression": { "id": 49804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 49798, "name": "upper", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49733, "src": "4311:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "id": 49801, "name": "upper", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49733, "src": "4334:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, { "id": 49802, "name": "ts", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49785, "src": "4341:2:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_int24", "typeString": "int24" }, { "typeIdentifier": "t_int24", "typeString": "int24" } ], "expression": { "id": 49799, "name": "Util", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 48901, "src": "4319:4:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Util_$48901_$", "typeString": "type(library Util)" } }, "id": 49800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4324:9:63", "memberName": "roundTick", "nodeType": "MemberAccess", "referencedDeclaration": 48900, "src": "4319:14:63", "typeDescriptions": { "typeIdentifier": "t_function_delegatecall_pure$_t_int24_$_t_int24_$returns$_t_int24_$", "typeString": "function (int24,int24) pure returns (int24)" } }, "id": 49803, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4319:25:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "src": "4311:33:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "id": 49805, "nodeType": "ExpressionStatement", "src": "4311:33:63" }, { "assignments": [ 49810 ], "declarations": [ { "constant": false, "id": 49810, "mutability": "mutable", "name": "params", "nameLocation": "4400:6:63", "nodeType": "VariableDeclaration", "scope": 49869, "src": "4354:52:63", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_MintParams_$45203_memory_ptr", "typeString": "struct INonfungiblePositionManager.MintParams" }, "typeName": { "id": 49809, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49808, "name": "INonfungiblePositionManager.MintParams", "nameLocations": [ "4354:27:63", "4382:10:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 45203, "src": "4354:38:63" }, "referencedDeclaration": 45203, "src": "4354:38:63", "typeDescriptions": { "typeIdentifier": "t_struct$_MintParams_$45203_storage_ptr", "typeString": "struct INonfungiblePositionManager.MintParams" } }, "visibility": "internal" } ], "id": 49833, "initialValue": { "arguments": [ { "arguments": [ { "id": 49815, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49472, "src": "4469:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49814, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4461:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49813, "name": "address", "nodeType": "ElementaryTypeName", "src": "4461:7:63", "typeDescriptions": {} } }, "id": 49816, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4461:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "id": 49819, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "4484:3:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49818, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4476:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49817, "name": "address", "nodeType": "ElementaryTypeName", "src": "4476:7:63", "typeDescriptions": {} } }, "id": 49820, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4476:12:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 49821, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49469, "src": "4490:3:63", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, { "id": 49822, "name": "lower", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49731, "src": "4495:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, { "id": 49823, "name": "upper", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49733, "src": "4502:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, { "id": 49824, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49727, "src": "4509:10:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 49825, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49729, "src": "4521:9:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "30", "id": 49826, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4532:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "hexValue": "30", "id": 49827, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4535:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "expression": { "id": 49828, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "4538:3:63", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 49829, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4542:6:63", "memberName": "sender", "nodeType": "MemberAccess", "src": "4538:10:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "expression": { "id": 49830, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4550:5:63", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 49831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4556:9:63", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "4550:15:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint24", "typeString": "uint24" }, { "typeIdentifier": "t_int24", "typeString": "int24" }, { "typeIdentifier": "t_int24", "typeString": "int24" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 49811, "name": "INonfungiblePositionManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 45293, "src": "4409:27:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$45293_$", "typeString": "type(contract INonfungiblePositionManager)" } }, "id": 49812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4437:10:63", "memberName": "MintParams", "nodeType": "MemberAccess", "referencedDeclaration": 45203, "src": "4409:38:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_MintParams_$45203_storage_ptr_$", "typeString": "type(struct INonfungiblePositionManager.MintParams storage pointer)" } }, "id": 49832, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4409:166:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_MintParams_$45203_memory_ptr", "typeString": "struct INonfungiblePositionManager.MintParams memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4354:221:63" }, { "expression": { "id": 49843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "components": [ { "id": 49834, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49736, "src": "4586:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 49835, "name": "liquidity", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49738, "src": "4595:9:63", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, { "id": 49836, "name": "amount0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49740, "src": "4606:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 49837, "name": "amount1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49742, "src": "4615:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 49838, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "4585:38:63", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint128,uint256,uint256)" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "id": 49841, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49810, "src": "4636:6:63", "typeDescriptions": { "typeIdentifier": "t_struct$_MintParams_$45203_memory_ptr", "typeString": "struct INonfungiblePositionManager.MintParams memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_MintParams_$45203_memory_ptr", "typeString": "struct INonfungiblePositionManager.MintParams memory" } ], "expression": { "id": 49839, "name": "nfpm", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49459, "src": "4626:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_INonfungiblePositionManager_$45293", "typeString": "contract INonfungiblePositionManager" } }, "id": 49840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4631:4:63", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 45218, "src": "4626:9:63", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_struct$_MintParams_$45203_memory_ptr_$returns$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", "typeString": "function (struct INonfungiblePositionManager.MintParams memory) payable external returns (uint256,uint128,uint256,uint256)" } }, "id": 49842, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4626:17:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint128,uint256,uint256)" } }, "src": "4585:58:63", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49844, "nodeType": "ExpressionStatement", "src": "4585:58:63" }, { "expression": { "arguments": [ { "hexValue": "6d696e746564", "id": 49848, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4666:8:63", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e1d7849c0f6c42b67ef46bfe871686aeac2aa524ff4c77793f2afbd412acbd54", "typeString": "literal_string \"minted\"" }, "value": "minted" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_e1d7849c0f6c42b67ef46bfe871686aeac2aa524ff4c77793f2afbd412acbd54", "typeString": "literal_string \"minted\"" } ], "expression": { "id": 49845, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "4653:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4662:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "4653:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 49849, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4653:22:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49850, "nodeType": "ExpressionStatement", "src": "4653:22:63" }, { "expression": { "arguments": [ { "id": 49854, "name": "liquidity", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49738, "src": "4698:9:63", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint128", "typeString": "uint128" } ], "expression": { "id": 49851, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "4685:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49853, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4694:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22139, "src": "4685:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 49855, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4685:23:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49856, "nodeType": "ExpressionStatement", "src": "4685:23:63" }, { "expression": { "arguments": [ { "id": 49860, "name": "amount0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49740, "src": "4731:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 49857, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "4718:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49859, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4727:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22139, "src": "4718:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 49861, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4718:21:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49862, "nodeType": "ExpressionStatement", "src": "4718:21:63" }, { "expression": { "arguments": [ { "id": 49866, "name": "amount1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49742, "src": "4762:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 49863, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "4749:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4758:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22139, "src": "4749:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 49867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4749:21:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49868, "nodeType": "ExpressionStatement", "src": "4749:21:63" } ] }, "implemented": true, "kind": "function", "modifiers": [], "name": "_stake", "nameLocation": "3189:6:63", "parameters": { "id": 49734, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49727, "mutability": "mutable", "name": "coinAmount", "nameLocation": "3204:10:63", "nodeType": "VariableDeclaration", "scope": 49870, "src": "3196:18:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49726, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3196:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49729, "mutability": "mutable", "name": "usdAmount", "nameLocation": "3224:9:63", "nodeType": "VariableDeclaration", "scope": 49870, "src": "3216:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49728, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3216:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49731, "mutability": "mutable", "name": "lower", "nameLocation": "3241:5:63", "nodeType": "VariableDeclaration", "scope": 49870, "src": "3235:11:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 49730, "name": "int24", "nodeType": "ElementaryTypeName", "src": "3235:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" }, { "constant": false, "id": 49733, "mutability": "mutable", "name": "upper", "nameLocation": "3254:5:63", "nodeType": "VariableDeclaration", "scope": 49870, "src": "3248:11:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 49732, "name": "int24", "nodeType": "ElementaryTypeName", "src": "3248:5:63", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" } ], "src": "3195:65:63" }, "returnParameters": { "id": 49743, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49736, "mutability": "mutable", "name": "tokenId", "nameLocation": "3299:7:63", "nodeType": "VariableDeclaration", "scope": 49870, "src": "3291:15:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49735, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3291:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49738, "mutability": "mutable", "name": "liquidity", "nameLocation": "3324:9:63", "nodeType": "VariableDeclaration", "scope": 49870, "src": "3316:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" }, "typeName": { "id": 49737, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "3316:7:63", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "visibility": "internal" }, { "constant": false, "id": 49740, "mutability": "mutable", "name": "amount0", "nameLocation": "3351:7:63", "nodeType": "VariableDeclaration", "scope": 49870, "src": "3343:15:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49739, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3343:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49742, "mutability": "mutable", "name": "amount1", "nameLocation": "3376:7:63", "nodeType": "VariableDeclaration", "scope": 49870, "src": "3368:15:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49741, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3368:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "3281:108:63" }, "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "id": 49911, "nodeType": "FunctionDefinition", "src": "4784:289:63", "nodes": [], "body": { "id": 49910, "nodeType": "Block", "src": "4890:183:63", "nodes": [], "statements": [ { "assignments": [ 49884 ], "declarations": [ { "constant": false, "id": 49884, "mutability": "mutable", "name": "limit", "nameLocation": "4908:5:63", "nodeType": "VariableDeclaration", "scope": 49910, "src": "4900:13:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "typeName": { "id": 49883, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "4900:7:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "visibility": "internal" } ], "id": 49902, "initialValue": { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 49892, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 49887, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49873, "src": "4924:7:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4916:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49885, "name": "address", "nodeType": "ElementaryTypeName", "src": "4916:7:63", "typeDescriptions": {} } }, "id": 49888, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4916:16:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 49889, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49467, "src": "4936:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, "id": 49890, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4941:6:63", "memberName": "token0", "nodeType": "MemberAccess", "referencedDeclaration": 44169, "src": "4936:11:63", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 49891, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4936:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4916:33:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "id": 49900, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "expression": { "id": 49897, "name": "TickMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 45059, "src": "4982:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_TickMath_$45059_$", "typeString": "type(library TickMath)" } }, "id": 49898, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4991:14:63", "memberName": "MAX_SQRT_RATIO", "nodeType": "MemberAccess", "referencedDeclaration": 44540, "src": "4982:23:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "hexValue": "31", "id": 49899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5008:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "4982:27:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "id": 49901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "4916:93:63", "trueExpression": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "id": 49896, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "expression": { "id": 49893, "name": "TickMath", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 45059, "src": "4952:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_TickMath_$45059_$", "typeString": "type(library TickMath)" } }, "id": 49894, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4961:14:63", "memberName": "MIN_SQRT_RATIO", "nodeType": "MemberAccess", "referencedDeclaration": 44536, "src": "4952:23:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "hexValue": "31", "id": 49895, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4978:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "4952:27:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "VariableDeclarationStatement", "src": "4900:109:63" }, { "expression": { "arguments": [ { "id": 49904, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49873, "src": "5031:7:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, { "id": 49905, "name": "outToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49876, "src": "5040:8:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, { "id": 49906, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49878, "src": "5050:8:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 49907, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49884, "src": "5060:5:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint160", "typeString": "uint160" } ], "id": 49903, "name": "swap", "nodeType": "Identifier", "overloadedDeclarations": [ 49911, 49967 ], "referencedDeclaration": 49967, "src": "5026:4:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_MockERC20_$46475_$_t_contract$_MockERC20_$46475_$_t_uint256_$_t_uint160_$returns$_t_uint256_$", "typeString": "function (contract MockERC20,contract MockERC20,uint256,uint160) returns (uint256)" } }, "id": 49908, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5026:40:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 49882, "id": 49909, "nodeType": "Return", "src": "5019:47:63" } ] }, "functionSelector": "df791e50", "implemented": true, "kind": "function", "modifiers": [], "name": "swap", "nameLocation": "4793:4:63", "parameters": { "id": 49879, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49873, "mutability": "mutable", "name": "inToken", "nameLocation": "4808:7:63", "nodeType": "VariableDeclaration", "scope": 49911, "src": "4798:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { "id": 49872, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49871, "name": "MockERC20", "nameLocations": [ "4798:9:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46475, "src": "4798:9:63" }, "referencedDeclaration": 46475, "src": "4798:9:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "internal" }, { "constant": false, "id": 49876, "mutability": "mutable", "name": "outToken", "nameLocation": "4827:8:63", "nodeType": "VariableDeclaration", "scope": 49911, "src": "4817:18:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { "id": 49875, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49874, "name": "MockERC20", "nameLocations": [ "4817:9:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46475, "src": "4817:9:63" }, "referencedDeclaration": 46475, "src": "4817:9:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "internal" }, { "constant": false, "id": 49878, "mutability": "mutable", "name": "amountIn", "nameLocation": "4845:8:63", "nodeType": "VariableDeclaration", "scope": 49911, "src": "4837:16:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49877, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4837:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4797:57:63" }, "returnParameters": { "id": 49882, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49881, "mutability": "mutable", "name": "amountOut", "nameLocation": "4879:9:63", "nodeType": "VariableDeclaration", "scope": 49911, "src": "4871:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49880, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4871:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4870:19:63" }, "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 49967, "nodeType": "FunctionDefinition", "src": "5079:824:63", "nodes": [], "body": { "id": 49966, "nodeType": "Block", "src": "5212:691:63", "nodes": [], "statements": [ { "expression": { "arguments": [ { "arguments": [ { "id": 49931, "name": "swapper", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49464, "src": "5246:7:63", "typeDescriptions": { "typeIdentifier": "t_contract$_ISwapRouter_$45454", "typeString": "contract ISwapRouter" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_ISwapRouter_$45454", "typeString": "contract ISwapRouter" } ], "id": 49930, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5238:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49929, "name": "address", "nodeType": "ElementaryTypeName", "src": "5238:7:63", "typeDescriptions": {} } }, "id": 49932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5238:16:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 49933, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49919, "src": "5256:8:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 49926, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49914, "src": "5222:7:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "id": 49928, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5230:7:63", "memberName": "approve", "nodeType": "MemberAccess", "referencedDeclaration": 43058, "src": "5222:15:63", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 49934, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5222:43:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 49935, "nodeType": "ExpressionStatement", "src": "5222:43:63" }, { "assignments": [ 49940 ], "declarations": [ { "constant": false, "id": 49940, "mutability": "mutable", "name": "params", "nameLocation": "5679:6:63", "nodeType": "VariableDeclaration", "scope": 49966, "src": "5637:48:63", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_ExactInputSingleParams_$45378_memory_ptr", "typeString": "struct ISwapRouter.ExactInputSingleParams" }, "typeName": { "id": 49939, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49938, "name": "ISwapRouter.ExactInputSingleParams", "nameLocations": [ "5637:11:63", "5649:22:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 45378, "src": "5637:34:63" }, "referencedDeclaration": 45378, "src": "5637:34:63", "typeDescriptions": { "typeIdentifier": "t_struct$_ExactInputSingleParams_$45378_storage_ptr", "typeString": "struct ISwapRouter.ExactInputSingleParams" } }, "visibility": "internal" } ], "id": 49960, "initialValue": { "arguments": [ { "arguments": [ { "id": 49945, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49914, "src": "5744:7:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49944, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5736:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49943, "name": "address", "nodeType": "ElementaryTypeName", "src": "5736:7:63", "typeDescriptions": {} } }, "id": 49946, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5736:16:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "id": 49949, "name": "outToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49917, "src": "5762:8:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } ], "id": 49948, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5754:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 49947, "name": "address", "nodeType": "ElementaryTypeName", "src": "5754:7:63", "typeDescriptions": {} } }, "id": 49950, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5754:17:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 49951, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49469, "src": "5773:3:63", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, { "expression": { "id": 49952, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "5778:3:63", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 49953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5782:6:63", "memberName": "sender", "nodeType": "MemberAccess", "src": "5778:10:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "expression": { "id": 49954, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5790:5:63", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 49955, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5796:9:63", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "5790:15:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 49956, "name": "amountIn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49919, "src": "5807:8:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "30", "id": 49957, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5817:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "id": 49958, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49921, "src": "5820:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint24", "typeString": "uint24" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, { "typeIdentifier": "t_uint160", "typeString": "uint160" } ], "expression": { "id": 49941, "name": "ISwapRouter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 45454, "src": "5688:11:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ISwapRouter_$45454_$", "typeString": "type(contract ISwapRouter)" } }, "id": 49942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5700:22:63", "memberName": "ExactInputSingleParams", "nodeType": "MemberAccess", "referencedDeclaration": 45378, "src": "5688:34:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_ExactInputSingleParams_$45378_storage_ptr_$", "typeString": "type(struct ISwapRouter.ExactInputSingleParams storage pointer)" } }, "id": 49959, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5688:159:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_ExactInputSingleParams_$45378_memory_ptr", "typeString": "struct ISwapRouter.ExactInputSingleParams memory" } }, "nodeType": "VariableDeclarationStatement", "src": "5637:210:63" }, { "expression": { "arguments": [ { "id": 49963, "name": "params", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49940, "src": "5889:6:63", "typeDescriptions": { "typeIdentifier": "t_struct$_ExactInputSingleParams_$45378_memory_ptr", "typeString": "struct ISwapRouter.ExactInputSingleParams memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_ExactInputSingleParams_$45378_memory_ptr", "typeString": "struct ISwapRouter.ExactInputSingleParams memory" } ], "expression": { "id": 49961, "name": "swapper", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49464, "src": "5864:7:63", "typeDescriptions": { "typeIdentifier": "t_contract$_ISwapRouter_$45454", "typeString": "contract ISwapRouter" } }, "id": 49962, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5872:16:63", "memberName": "exactInputSingle", "nodeType": "MemberAccess", "referencedDeclaration": 45387, "src": "5864:24:63", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_struct$_ExactInputSingleParams_$45378_memory_ptr_$returns$_t_uint256_$", "typeString": "function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)" } }, "id": 49964, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5864:32:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 49925, "id": 49965, "nodeType": "Return", "src": "5857:39:63" } ] }, "functionSelector": "4a09d3dd", "implemented": true, "kind": "function", "modifiers": [], "name": "swap", "nameLocation": "5088:4:63", "parameters": { "id": 49922, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49914, "mutability": "mutable", "name": "inToken", "nameLocation": "5103:7:63", "nodeType": "VariableDeclaration", "scope": 49967, "src": "5093:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { "id": 49913, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49912, "name": "MockERC20", "nameLocations": [ "5093:9:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46475, "src": "5093:9:63" }, "referencedDeclaration": 46475, "src": "5093:9:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "internal" }, { "constant": false, "id": 49917, "mutability": "mutable", "name": "outToken", "nameLocation": "5122:8:63", "nodeType": "VariableDeclaration", "scope": 49967, "src": "5112:18:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { "id": 49916, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 49915, "name": "MockERC20", "nameLocations": [ "5112:9:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46475, "src": "5112:9:63" }, "referencedDeclaration": 46475, "src": "5112:9:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "internal" }, { "constant": false, "id": 49919, "mutability": "mutable", "name": "amountIn", "nameLocation": "5140:8:63", "nodeType": "VariableDeclaration", "scope": 49967, "src": "5132:16:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49918, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5132:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 49921, "mutability": "mutable", "name": "sqrtPriceLimitX96", "nameLocation": "5158:17:63", "nodeType": "VariableDeclaration", "scope": 49967, "src": "5150:25:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "typeName": { "id": 49920, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "5150:7:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "visibility": "internal" } ], "src": "5092:84:63" }, "returnParameters": { "id": 49925, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49924, "mutability": "mutable", "name": "amountOut", "nameLocation": "5201:9:63", "nodeType": "VariableDeclaration", "scope": 49967, "src": "5193:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 49923, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5193:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5192:19:63" }, "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 49980, "nodeType": "FunctionDefinition", "src": "5909:112:63", "nodes": [], "body": { "id": 49979, "nodeType": "Block", "src": "5969:52:63", "nodes": [], "statements": [ { "expression": { "id": 49977, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "components": [ { "id": 49972, "name": "sqrtPriceX96", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49970, "src": "5980:12:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, null, null, null, null, null, null ], "id": 49973, "isConstant": false, "isInlineArray": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "TupleExpression", "src": "5979:20:63", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint160_$__$__$__$__$__$__$", "typeString": "tuple(uint160,,,,,,)" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 49974, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49467, "src": "6002:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_IUniswapV3Pool_$43894", "typeString": "contract IUniswapV3Pool" } }, "id": 49975, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6007:5:63", "memberName": "slot0", "nodeType": "MemberAccess", "referencedDeclaration": 44241, "src": "6002:10:63", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" } }, "id": 49976, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6002:12:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", "typeString": "tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)" } }, "src": "5979:35:63", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49978, "nodeType": "ExpressionStatement", "src": "5979:35:63" } ] }, "functionSelector": "a035b1fe", "implemented": true, "kind": "function", "modifiers": [], "name": "price", "nameLocation": "5918:5:63", "parameters": { "id": 49968, "nodeType": "ParameterList", "parameters": [], "src": "5923:2:63" }, "returnParameters": { "id": 49971, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49970, "mutability": "mutable", "name": "sqrtPriceX96", "nameLocation": "5955:12:63", "nodeType": "VariableDeclaration", "scope": 49980, "src": "5947:20:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "typeName": { "id": 49969, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "5947:7:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "visibility": "internal" } ], "src": "5946:22:63" }, "scope": 50066, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 50065, "nodeType": "FunctionDefinition", "src": "6027:683:63", "nodes": [], "body": { "id": 50064, "nodeType": "Block", "src": "6082:628:63", "nodes": [], "statements": [ { "expression": { "arguments": [ { "hexValue": "73776170546f5072696365", "id": 49988, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6105:13:63", "typeDescriptions": { "typeIdentifier": "t_stringliteral_adbad3dc16aedbb9cff2c880c2038e8ed862949065440cbb51dbb708f2ddce21", "typeString": "literal_string \"swapToPrice\"" }, "value": "swapToPrice" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_adbad3dc16aedbb9cff2c880c2038e8ed862949065440cbb51dbb708f2ddce21", "typeString": "literal_string \"swapToPrice\"" } ], "expression": { "id": 49985, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "6092:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49987, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6101:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "6092:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 49989, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6092:27:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49990, "nodeType": "ExpressionStatement", "src": "6092:27:63" }, { "expression": { "arguments": [ { "id": 49994, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49982, "src": "6142:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint160", "typeString": "uint160" } ], "expression": { "id": 49991, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "6129:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 49993, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6138:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22139, "src": "6129:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 49995, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6129:31:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 49996, "nodeType": "ExpressionStatement", "src": "6129:31:63" }, { "assignments": [ 49998 ], "declarations": [ { "constant": false, "id": 49998, "mutability": "mutable", "name": "curPrice", "nameLocation": "6178:8:63", "nodeType": "VariableDeclaration", "scope": 50064, "src": "6170:16:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "typeName": { "id": 49997, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "6170:7:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "visibility": "internal" } ], "id": 50001, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "id": 49999, "name": "price", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49980, "src": "6189:5:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint160_$", "typeString": "function () view returns (uint160)" } }, "id": 50000, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6189:7:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "VariableDeclarationStatement", "src": "6170:26:63" }, { "expression": { "arguments": [ { "id": 50005, "name": "curPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49998, "src": "6219:8:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint160", "typeString": "uint160" } ], "expression": { "id": 50002, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "6206:8:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 50004, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6215:3:63", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22139, "src": "6206:12:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 50006, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6206:22:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 50007, "nodeType": "ExpressionStatement", "src": "6206:22:63" }, { "condition": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "id": 50010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 50008, "name": "curPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49998, "src": "6242:8:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "id": 50009, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49982, "src": "6254:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "src": "6242:29:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 50012, "nodeType": "IfStatement", "src": "6238:55:63", "trueBody": { "functionReturnParameters": 49984, "id": 50011, "nodeType": "Return", "src": "6286:7:63" } }, { "assignments": [ 50015 ], "declarations": [ { "constant": false, "id": 50015, "mutability": "mutable", "name": "inToken", "nameLocation": "6312:7:63", "nodeType": "VariableDeclaration", "scope": 50064, "src": "6302:17:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { "id": 50014, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50013, "name": "MockERC20", "nameLocations": [ "6302:9:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46475, "src": "6302:9:63" }, "referencedDeclaration": 46475, "src": "6302:9:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "internal" } ], "id": 50026, "initialValue": { "condition": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "id": 50018, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 50016, "name": "curPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49998, "src": "6322:8:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "id": 50017, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49982, "src": "6333:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "src": "6322:28:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "arguments": [ { "id": 50023, "name": "token1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49479, "src": "6383:6:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 50022, "name": "MockERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46475, "src": "6373:9:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_MockERC20_$46475_$", "typeString": "type(contract MockERC20)" } }, "id": 50024, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6373:17:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "id": 50025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "6322:68:63", "trueExpression": { "arguments": [ { "id": 50020, "name": "token0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49477, "src": "6363:6:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 50019, "name": "MockERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46475, "src": "6353:9:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_MockERC20_$46475_$", "typeString": "type(contract MockERC20)" } }, "id": 50021, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6353:17:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "nodeType": "VariableDeclarationStatement", "src": "6302:88:63" }, { "assignments": [ 50029 ], "declarations": [ { "constant": false, "id": 50029, "mutability": "mutable", "name": "outToken", "nameLocation": "6410:8:63", "nodeType": "VariableDeclaration", "scope": 50064, "src": "6400:18:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, "typeName": { "id": 50028, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50027, "name": "MockERC20", "nameLocations": [ "6400:9:63" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46475, "src": "6400:9:63" }, "referencedDeclaration": 46475, "src": "6400:9:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "visibility": "internal" } ], "id": 50040, "initialValue": { "condition": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "id": 50032, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 50030, "name": "curPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49998, "src": "6421:8:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 50031, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49982, "src": "6432:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "src": "6421:28:63", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseExpression": { "arguments": [ { "id": 50037, "name": "token1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49479, "src": "6482:6:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 50036, "name": "MockERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46475, "src": "6472:9:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_MockERC20_$46475_$", "typeString": "type(contract MockERC20)" } }, "id": 50038, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6472:17:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "id": 50039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "Conditional", "src": "6421:68:63", "trueExpression": { "arguments": [ { "id": 50034, "name": "token0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49477, "src": "6462:6:63", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 50033, "name": "MockERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46475, "src": "6452:9:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_MockERC20_$46475_$", "typeString": "type(contract MockERC20)" } }, "id": 50035, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6452:17:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "nodeType": "VariableDeclarationStatement", "src": "6400:89:63" }, { "assignments": [ 50042 ], "declarations": [ { "constant": false, "id": 50042, "mutability": "mutable", "name": "aLot", "nameLocation": "6589:4:63", "nodeType": "VariableDeclaration", "scope": 50064, "src": "6581:12:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 50041, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6581:7:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 50046, "initialValue": { "commonType": { "typeIdentifier": "t_rational_1267650600228229401496703205376_by_1", "typeString": "int_const 1267650600228229401496703205376" }, "id": 50045, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "hexValue": "32", "id": 50043, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6596:1:63", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "hexValue": "313030", "id": 50044, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6599:3:63", "typeDescriptions": { "typeIdentifier": "t_rational_100_by_1", "typeString": "int_const 100" }, "value": "100" }, "src": "6596:6:63", "typeDescriptions": { "typeIdentifier": "t_rational_1267650600228229401496703205376_by_1", "typeString": "int_const 1267650600228229401496703205376" } }, "nodeType": "VariableDeclarationStatement", "src": "6581:21:63" }, { "expression": { "arguments": [ { "arguments": [ { "id": 50052, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "6633:4:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockEnv_$50066", "typeString": "contract MockEnv" } ], "id": 50051, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6625:7:63", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 50050, "name": "address", "nodeType": "ElementaryTypeName", "src": "6625:7:63", "typeDescriptions": {} } }, "id": 50053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6625:13:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 50054, "name": "aLot", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50042, "src": "6640:4:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 50047, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50015, "src": "6612:7:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, "id": 50049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6620:4:63", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 46474, "src": "6612:12:63", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 50055, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6612:33:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 50056, "nodeType": "ExpressionStatement", "src": "6612:33:63" }, { "expression": { "arguments": [ { "id": 50058, "name": "inToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50015, "src": "6660:7:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, { "id": 50059, "name": "outToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50029, "src": "6669:8:63", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" } }, { "id": 50060, "name": "aLot", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50042, "src": "6679:4:63", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 50061, "name": "sqrtPriceLimitX96", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49982, "src": "6685:17:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, { "typeIdentifier": "t_contract$_MockERC20_$46475", "typeString": "contract MockERC20" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint160", "typeString": "uint160" } ], "id": 50057, "name": "swap", "nodeType": "Identifier", "overloadedDeclarations": [ 49911, 49967 ], "referencedDeclaration": 49967, "src": "6655:4:63", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_MockERC20_$46475_$_t_contract$_MockERC20_$46475_$_t_uint256_$_t_uint160_$returns$_t_uint256_$", "typeString": "function (contract MockERC20,contract MockERC20,uint256,uint160) returns (uint256)" } }, "id": 50062, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6655:48:63", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 50063, "nodeType": "ExpressionStatement", "src": "6655:48:63" } ] }, "functionSelector": "c578d91d", "implemented": true, "kind": "function", "modifiers": [], "name": "swapToPrice", "nameLocation": "6036:11:63", "parameters": { "id": 49983, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 49982, "mutability": "mutable", "name": "sqrtPriceLimitX96", "nameLocation": "6056:17:63", "nodeType": "VariableDeclaration", "scope": 50065, "src": "6048:25:63", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "typeName": { "id": 49981, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "6048:7:63", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "visibility": "internal" } ], "src": "6047:27:63" }, "returnParameters": { "id": 49984, "nodeType": "ParameterList", "parameters": [], "src": "6082:0:63" }, "scope": 50066, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" } ], "abstract": false, "baseContracts": [], "canonicalName": "MockEnv", "contractDependencies": [ 46475 ], "contractKind": "contract", "fullyImplemented": true, "internalFunctionIDs": { "21582": 1 }, "linearizedBaseContracts": [ 50066 ], "name": "MockEnv", "nameLocation": "597:7:63", "scope": 50067, "usedErrors": [], "usedEvents": [] } ], "license": "UNLICENSED" }, "id": 63 }