Overview
POL Balance
0 POL
POL Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Multi Swap | 46449223 | 486 days ago | IN | 0 POL | 0.02682348 |
Loading...
Loading
Contract Name:
DirectSwapper
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2023-08-23 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // File: contracts/1_Storage.sol pragma solidity ^0.8.4; /** * @title DirectSwapper * @notice This contract performs direct swaps across multiple Uniswap pairs. * @dev It optimizes gas by sending the swapped output directly to the next pair in a sequence. */ contract DirectSwapper { /** * @notice Performs a swap on a Uniswap pair. * @dev Assumes that token0 has already reached the pair address. * @param pairAddress Address of the Uniswap pair. * @param token0 Address of the input token. * @param token1 Address of the output token. * @param amountIn Amount of input tokens to swap. * @param recipient Address to receive the output tokens. * @return Amount of output tokens received. */ function swap(address pairAddress, address token0, address token1, uint amountIn, address recipient) internal returns (uint) { IUniswapV2Pair pair = IUniswapV2Pair(pairAddress); // Determine order of tokens in pair (lowest address first) (address token0Pair, address token1Pair) = token0 < token1 ? (token0, token1) : (token1, token0); (uint reserve0, uint reserve1,) = pair.getReserves(); (uint reserveIn, uint reserveOut) = token0 != token0Pair ? (reserve1, reserve0) : (reserve0, reserve1); uint amountOut = getAmountOut(amountIn, reserveIn, reserveOut); (uint amount0Out, uint amount1Out) = token0 == token0Pair ? (uint(0), amountOut) : (amountOut, uint(0)); // Execute the swap pair.swap(amount0Out, amount1Out, recipient, new bytes(0)); return amountOut; } /** * @notice Calculates the expected output amount for a given input amount and reserves. * @dev Uses the formula from the Uniswap whitepaper. * @param amountIn Input amount. * @param reserveIn Reserve of the input token. * @param reserveOut Reserve of the output token. * @return Expected output amount. */ function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint) { require(amountIn > 0, "UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT"); require(reserveIn > 0 && reserveOut > 0, "UniswapV2Library: INSUFFICIENT_LIQUIDITY"); uint amountInWithFee = amountIn * 997; uint numerator = amountInWithFee * reserveOut; uint denominator = reserveIn * 1000 + amountInWithFee; return numerator / denominator; } /** * @notice Executes a sequence of swaps across multiple Uniswap pairs. * @dev Optimized for gas by sending output directly to the next pair in the sequence. * @param pairArray Array of Uniswap pair addresses. * @param tokenArray Array of token addresses. * @param amountIn Initial amount of input token. * @param minimumAmountOut Minimum acceptable amount of the final output token. * @param isNative Indicates if the input or output is native ETH. 1 for input, 2 for output, 0 for none. */ function multiSwap(address[] memory pairArray, address[] memory tokenArray, uint amountIn, uint minimumAmountOut, uint8 isNative) public payable { address tokenIn = tokenArray[0]; uint currentAmount = amountIn; // Handle native ETH deposits if (isNative == 1) { address WETH = pairArray[0]; IWETH(WETH).deposit{value: amountIn}(); IERC20(tokenIn).transfer(pairArray[0], amountIn); } else { IERC20(tokenIn).transferFrom(msg.sender, pairArray[0], amountIn); } for (uint i = 0; i < pairArray.length; i++) { address receiver; if (i != pairArray.length - 1) { receiver = pairArray[i+1]; } else { if (isNative == 2) { receiver = address(this); } else { receiver = msg.sender; } } address token0 = tokenArray[i]; address token1 = tokenArray[i + 1]; currentAmount = swap(pairArray[i], token0, token1, currentAmount, receiver); tokenIn = token1; } require(currentAmount >= minimumAmountOut, "DirectV2: Insufficient final amount due to slippage"); // Convert WETH to native ETH if needed if (isNative == 2) { address WETH = pairArray[pairArray.length - 1]; IWETH(WETH).withdraw(currentAmount); payable(msg.sender).transfer(currentAmount); } } } /** * @title IWETH Interface * @dev Interface for Wrapped Ether (WETH) contract. */ interface IWETH is IERC20 { function deposit() external payable; function withdraw(uint wad) external; } /* Inputs: con: 0x9615FB99FE2E394d753552De419593870866eA27 ["0x60e70705b52a4A5bDc1d8614426bA5016a68aB38","0xb5846453B67d0B4b4Ce655930Cf6E4129F4416D7"] ["0xB5C064F955D8e7F38fE0460C556a72987494eE17","0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619","0x0b3F868E0BE5597D5DB7fEB59E1CADBb0fdDa50a"] 10000000000000000 0 0 */
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address[]","name":"pairArray","type":"address[]"},{"internalType":"address[]","name":"tokenArray","type":"address[]"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"minimumAmountOut","type":"uint256"},{"internalType":"uint8","name":"isNative","type":"uint8"}],"name":"multiSwap","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506110c9806100206000396000f3fe60806040526004361061001e5760003560e01c8063026ce33114610023575b600080fd5b61003d600480360381019061003891906109cb565b61003f565b005b60008460008151811061005557610054610a7e565b5b60200260200101519050600084905060018360ff16036101905760008760008151811061008557610084610a7e565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b1580156100d757600080fd5b505af11580156100eb573d6000803e3d6000fd5b50505050508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb896000815181106101205761011f610a7e565b5b6020026020010151886040518363ffffffff1660e01b8152600401610146929190610acb565b6020604051808303816000875af1158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610b2c565b505061022d565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd33896000815181106101c1576101c0610a7e565b5b6020026020010151886040518463ffffffff1660e01b81526004016101e893929190610b59565b6020604051808303816000875af1158015610207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022b9190610b2c565b505b60005b8751811015610321576000600189516102499190610bbf565b821461027d578860018361025d9190610bf3565b8151811061026e5761026d610a7e565b5b60200260200101519050610295565b60028560ff160361029057309050610294565b3390505b5b60008883815181106102aa576102a9610a7e565b5b602002602001015190506000896001856102c49190610bf3565b815181106102d5576102d4610a7e565b5b602002602001015190506103068b85815181106102f5576102f4610a7e565b5b602002602001015183838887610459565b9450809550505050808061031990610c27565b915050610230565b5083811015610365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c90610cf2565b60405180910390fd5b60028360ff160361045057600087600189516103819190610bbf565b8151811061039257610391610a7e565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b81526004016103d59190610d12565b600060405180830381600087803b1580156103ef57600080fd5b505af1158015610403573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561044d573d6000803e3d6000fd5b50505b50505050505050565b6000808690506000808673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161061049c57868861049f565b87875b915091506000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156104f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105159190610daf565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000808573ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff160361057757838361057a565b82845b91509150600061058b8b84846106a7565b90506000808873ffffffffffffffffffffffffffffffffffffffff168f73ffffffffffffffffffffffffffffffffffffffff16146105cb578260006105cf565b6000835b915091508973ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838f600067ffffffffffffffff81111561060d5761060c6107bb565b5b6040519080825280601f01601f19166020018201604052801561063f5781602001600182028036833780820191505090505b506040518563ffffffff1660e01b815260040161065f9493929190610e81565b600060405180830381600087803b15801561067957600080fd5b505af115801561068d573d6000803e3d6000fd5b50505050829a505050505050505050505095945050505050565b60008084116106eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e290610f3f565b60405180910390fd5b6000831180156106fb5750600082115b61073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073190610fd1565b60405180910390fd5b60006103e58561074a9190610ff1565b90506000838261075a9190610ff1565b90506000826103e88761076d9190610ff1565b6107779190610bf3565b905080826107859190611062565b93505050509392505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6107f3826107aa565b810181811067ffffffffffffffff82111715610812576108116107bb565b5b80604052505050565b6000610825610791565b905061083182826107ea565b919050565b600067ffffffffffffffff821115610851576108506107bb565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061089282610867565b9050919050565b6108a281610887565b81146108ad57600080fd5b50565b6000813590506108bf81610899565b92915050565b60006108d86108d384610836565b61081b565b905080838252602082019050602084028301858111156108fb576108fa610862565b5b835b81811015610924578061091088826108b0565b8452602084019350506020810190506108fd565b5050509392505050565b600082601f830112610943576109426107a5565b5b81356109538482602086016108c5565b91505092915050565b6000819050919050565b61096f8161095c565b811461097a57600080fd5b50565b60008135905061098c81610966565b92915050565b600060ff82169050919050565b6109a881610992565b81146109b357600080fd5b50565b6000813590506109c58161099f565b92915050565b600080600080600060a086880312156109e7576109e661079b565b5b600086013567ffffffffffffffff811115610a0557610a046107a0565b5b610a118882890161092e565b955050602086013567ffffffffffffffff811115610a3257610a316107a0565b5b610a3e8882890161092e565b9450506040610a4f8882890161097d565b9350506060610a608882890161097d565b9250506080610a71888289016109b6565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b610ab681610887565b82525050565b610ac58161095c565b82525050565b6000604082019050610ae06000830185610aad565b610aed6020830184610abc565b9392505050565b60008115159050919050565b610b0981610af4565b8114610b1457600080fd5b50565b600081519050610b2681610b00565b92915050565b600060208284031215610b4257610b4161079b565b5b6000610b5084828501610b17565b91505092915050565b6000606082019050610b6e6000830186610aad565b610b7b6020830185610aad565b610b886040830184610abc565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bca8261095c565b9150610bd58361095c565b9250828203905081811115610bed57610bec610b90565b5b92915050565b6000610bfe8261095c565b9150610c098361095c565b9250828201905080821115610c2157610c20610b90565b5b92915050565b6000610c328261095c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c6457610c63610b90565b5b600182019050919050565b600082825260208201905092915050565b7f44697265637456323a20496e73756666696369656e742066696e616c20616d6f60008201527f756e742064756520746f20736c69707061676500000000000000000000000000602082015250565b6000610cdc603383610c6f565b9150610ce782610c80565b604082019050919050565b60006020820190508181036000830152610d0b81610ccf565b9050919050565b6000602082019050610d276000830184610abc565b92915050565b60006dffffffffffffffffffffffffffff82169050919050565b610d5081610d2d565b8114610d5b57600080fd5b50565b600081519050610d6d81610d47565b92915050565b600063ffffffff82169050919050565b610d8c81610d73565b8114610d9757600080fd5b50565b600081519050610da981610d83565b92915050565b600080600060608486031215610dc857610dc761079b565b5b6000610dd686828701610d5e565b9350506020610de786828701610d5e565b9250506040610df886828701610d9a565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e3c578082015181840152602081019050610e21565b60008484015250505050565b6000610e5382610e02565b610e5d8185610e0d565b9350610e6d818560208601610e1e565b610e76816107aa565b840191505092915050565b6000608082019050610e966000830187610abc565b610ea36020830186610abc565b610eb06040830185610aad565b8181036060830152610ec28184610e48565b905095945050505050565b7f556e697377617056324c6962726172793a20494e53554646494349454e545f4960008201527f4e5055545f414d4f554e54000000000000000000000000000000000000000000602082015250565b6000610f29602b83610c6f565b9150610f3482610ecd565b604082019050919050565b60006020820190508181036000830152610f5881610f1c565b9050919050565b7f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60008201527f4951554944495459000000000000000000000000000000000000000000000000602082015250565b6000610fbb602883610c6f565b9150610fc682610f5f565b604082019050919050565b60006020820190508181036000830152610fea81610fae565b9050919050565b6000610ffc8261095c565b91506110078361095c565b92508282026110158161095c565b9150828204841483151761102c5761102b610b90565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061106d8261095c565b91506110788361095c565b92508261108857611087611033565b5b82820490509291505056fea2646970667358221220ecfd7a59222a132b55b4d22cc85c11e5902bf275578279de4ce68dc9b2c68a4d64736f6c63430008120033
Deployed Bytecode
0x60806040526004361061001e5760003560e01c8063026ce33114610023575b600080fd5b61003d600480360381019061003891906109cb565b61003f565b005b60008460008151811061005557610054610a7e565b5b60200260200101519050600084905060018360ff16036101905760008760008151811061008557610084610a7e565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b1580156100d757600080fd5b505af11580156100eb573d6000803e3d6000fd5b50505050508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb896000815181106101205761011f610a7e565b5b6020026020010151886040518363ffffffff1660e01b8152600401610146929190610acb565b6020604051808303816000875af1158015610165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101899190610b2c565b505061022d565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd33896000815181106101c1576101c0610a7e565b5b6020026020010151886040518463ffffffff1660e01b81526004016101e893929190610b59565b6020604051808303816000875af1158015610207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022b9190610b2c565b505b60005b8751811015610321576000600189516102499190610bbf565b821461027d578860018361025d9190610bf3565b8151811061026e5761026d610a7e565b5b60200260200101519050610295565b60028560ff160361029057309050610294565b3390505b5b60008883815181106102aa576102a9610a7e565b5b602002602001015190506000896001856102c49190610bf3565b815181106102d5576102d4610a7e565b5b602002602001015190506103068b85815181106102f5576102f4610a7e565b5b602002602001015183838887610459565b9450809550505050808061031990610c27565b915050610230565b5083811015610365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035c90610cf2565b60405180910390fd5b60028360ff160361045057600087600189516103819190610bbf565b8151811061039257610391610a7e565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b81526004016103d59190610d12565b600060405180830381600087803b1580156103ef57600080fd5b505af1158015610403573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561044d573d6000803e3d6000fd5b50505b50505050505050565b6000808690506000808673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161061049c57868861049f565b87875b915091506000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156104f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105159190610daf565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000808573ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff160361057757838361057a565b82845b91509150600061058b8b84846106a7565b90506000808873ffffffffffffffffffffffffffffffffffffffff168f73ffffffffffffffffffffffffffffffffffffffff16146105cb578260006105cf565b6000835b915091508973ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838f600067ffffffffffffffff81111561060d5761060c6107bb565b5b6040519080825280601f01601f19166020018201604052801561063f5781602001600182028036833780820191505090505b506040518563ffffffff1660e01b815260040161065f9493929190610e81565b600060405180830381600087803b15801561067957600080fd5b505af115801561068d573d6000803e3d6000fd5b50505050829a505050505050505050505095945050505050565b60008084116106eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e290610f3f565b60405180910390fd5b6000831180156106fb5750600082115b61073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073190610fd1565b60405180910390fd5b60006103e58561074a9190610ff1565b90506000838261075a9190610ff1565b90506000826103e88761076d9190610ff1565b6107779190610bf3565b905080826107859190611062565b93505050509392505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6107f3826107aa565b810181811067ffffffffffffffff82111715610812576108116107bb565b5b80604052505050565b6000610825610791565b905061083182826107ea565b919050565b600067ffffffffffffffff821115610851576108506107bb565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061089282610867565b9050919050565b6108a281610887565b81146108ad57600080fd5b50565b6000813590506108bf81610899565b92915050565b60006108d86108d384610836565b61081b565b905080838252602082019050602084028301858111156108fb576108fa610862565b5b835b81811015610924578061091088826108b0565b8452602084019350506020810190506108fd565b5050509392505050565b600082601f830112610943576109426107a5565b5b81356109538482602086016108c5565b91505092915050565b6000819050919050565b61096f8161095c565b811461097a57600080fd5b50565b60008135905061098c81610966565b92915050565b600060ff82169050919050565b6109a881610992565b81146109b357600080fd5b50565b6000813590506109c58161099f565b92915050565b600080600080600060a086880312156109e7576109e661079b565b5b600086013567ffffffffffffffff811115610a0557610a046107a0565b5b610a118882890161092e565b955050602086013567ffffffffffffffff811115610a3257610a316107a0565b5b610a3e8882890161092e565b9450506040610a4f8882890161097d565b9350506060610a608882890161097d565b9250506080610a71888289016109b6565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b610ab681610887565b82525050565b610ac58161095c565b82525050565b6000604082019050610ae06000830185610aad565b610aed6020830184610abc565b9392505050565b60008115159050919050565b610b0981610af4565b8114610b1457600080fd5b50565b600081519050610b2681610b00565b92915050565b600060208284031215610b4257610b4161079b565b5b6000610b5084828501610b17565b91505092915050565b6000606082019050610b6e6000830186610aad565b610b7b6020830185610aad565b610b886040830184610abc565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bca8261095c565b9150610bd58361095c565b9250828203905081811115610bed57610bec610b90565b5b92915050565b6000610bfe8261095c565b9150610c098361095c565b9250828201905080821115610c2157610c20610b90565b5b92915050565b6000610c328261095c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c6457610c63610b90565b5b600182019050919050565b600082825260208201905092915050565b7f44697265637456323a20496e73756666696369656e742066696e616c20616d6f60008201527f756e742064756520746f20736c69707061676500000000000000000000000000602082015250565b6000610cdc603383610c6f565b9150610ce782610c80565b604082019050919050565b60006020820190508181036000830152610d0b81610ccf565b9050919050565b6000602082019050610d276000830184610abc565b92915050565b60006dffffffffffffffffffffffffffff82169050919050565b610d5081610d2d565b8114610d5b57600080fd5b50565b600081519050610d6d81610d47565b92915050565b600063ffffffff82169050919050565b610d8c81610d73565b8114610d9757600080fd5b50565b600081519050610da981610d83565b92915050565b600080600060608486031215610dc857610dc761079b565b5b6000610dd686828701610d5e565b9350506020610de786828701610d5e565b9250506040610df886828701610d9a565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e3c578082015181840152602081019050610e21565b60008484015250505050565b6000610e5382610e02565b610e5d8185610e0d565b9350610e6d818560208601610e1e565b610e76816107aa565b840191505092915050565b6000608082019050610e966000830187610abc565b610ea36020830186610abc565b610eb06040830185610aad565b8181036060830152610ec28184610e48565b905095945050505050565b7f556e697377617056324c6962726172793a20494e53554646494349454e545f4960008201527f4e5055545f414d4f554e54000000000000000000000000000000000000000000602082015250565b6000610f29602b83610c6f565b9150610f3482610ecd565b604082019050919050565b60006020820190508181036000830152610f5881610f1c565b9050919050565b7f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60008201527f4951554944495459000000000000000000000000000000000000000000000000602082015250565b6000610fbb602883610c6f565b9150610fc682610f5f565b604082019050919050565b60006020820190508181036000830152610fea81610fae565b9050919050565b6000610ffc8261095c565b91506110078361095c565b92508282026110158161095c565b9150828204841483151761102c5761102b610b90565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061106d8261095c565b91506110788361095c565b92508261108857611087611033565b5b82820490509291505056fea2646970667358221220ecfd7a59222a132b55b4d22cc85c11e5902bf275578279de4ce68dc9b2c68a4d64736f6c63430008120033
Deployed Bytecode Sourcemap
5672:4357:0:-:0;;;;;;;;;;;;;;;;;;;;;8468:1558;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;8624:15;8642:10;8653:1;8642:13;;;;;;;;:::i;:::-;;;;;;;;8624:31;;8666:18;8687:8;8666:29;;8763:1;8751:8;:13;;;8747:286;;8781:12;8796:9;8806:1;8796:12;;;;;;;;:::i;:::-;;;;;;;;8781:27;;8829:4;8823:19;;;8850:8;8823:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8883:7;8876:24;;;8901:9;8911:1;8901:12;;;;;;;;:::i;:::-;;;;;;;;8915:8;8876:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8766:170;8747:286;;;8964:7;8957:28;;;8986:10;8998:9;9008:1;8998:12;;;;;;;;:::i;:::-;;;;;;;;9012:8;8957:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8747:286;9050:6;9045:603;9066:9;:16;9062:1;:20;9045:603;;;9104:16;9163:1;9144:9;:16;:20;;;;:::i;:::-;9139:1;:25;9135:287;;9196:9;9208:1;9206;:3;;;;:::i;:::-;9196:14;;;;;;;;:::i;:::-;;;;;;;;9185:25;;9135:287;;;9267:1;9255:8;:13;;;9251:156;;9312:4;9293:24;;9251:156;;;9377:10;9366:21;;9251:156;9135:287;9436:14;9453:10;9464:1;9453:13;;;;;;;;:::i;:::-;;;;;;;;9436:30;;9481:14;9498:10;9513:1;9509;:5;;;;:::i;:::-;9498:17;;;;;;;;:::i;:::-;;;;;;;;9481:34;;9546:59;9551:9;9561:1;9551:12;;;;;;;;:::i;:::-;;;;;;;;9565:6;9573;9581:13;9596:8;9546:4;:59::i;:::-;9530:75;;9630:6;9620:16;;9089:559;;;9084:3;;;;;:::i;:::-;;;;9045:603;;;;9685:16;9668:13;:33;;9660:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;9835:1;9823:8;:13;;;9819:200;;9853:12;9868:9;9897:1;9878:9;:16;:20;;;;:::i;:::-;9868:31;;;;;;;;:::i;:::-;;;;;;;;9853:46;;9920:4;9914:20;;;9935:13;9914:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9972:10;9964:28;;:43;9993:13;9964:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9838:181;9819:200;8613:1413;;8468:1558;;;;;:::o;6170:889::-;6289:4;6306:19;6343:11;6306:49;;6446:18;6466;6497:6;6488:15;;:6;:15;;;:53;;6526:6;6534;6488:53;;;6507:6;6515;6488:53;6445:96;;;;6553:13;6568;6586:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6552:52;;;;;;;;;6616:14;6632:15;6661:10;6651:20;;:6;:20;;;:66;;6698:8;6708;6651:66;;;6675:8;6685;6651:66;6615:102;;;;6730:14;6747:45;6760:8;6770:9;6781:10;6747:12;:45::i;:::-;6730:62;;6804:15;6821;6850:10;6840:20;;:6;:20;;;:66;;6887:9;6903:1;6840:66;;;6869:1;6873:9;6840:66;6803:103;;;;6956:4;:9;;;6966:10;6978;6990:9;7011:1;7001:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6956:58;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7042:9;7035:16;;;;;;;;;;;;6170:889;;;;;;;:::o;7423:490::-;7516:4;7552:1;7541:8;:12;7533:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7632:1;7620:9;:13;:31;;;;;7650:1;7637:10;:14;7620:31;7612:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;7707:20;7741:3;7730:8;:14;;;;:::i;:::-;7707:37;;7755:14;7790:10;7772:15;:28;;;;:::i;:::-;7755:45;;7811:16;7849:15;7842:4;7830:9;:16;;;;:::i;:::-;:34;;;;:::i;:::-;7811:53;;7894:11;7882:9;:23;;;;:::i;:::-;7875:30;;;;;7423:490;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:77::-;3283:7;3312:5;3301:16;;3246:77;;;:::o;3329:122::-;3402:24;3420:5;3402:24;:::i;:::-;3395:5;3392:35;3382:63;;3441:1;3438;3431:12;3382:63;3329:122;:::o;3457:139::-;3503:5;3541:6;3528:20;3519:29;;3557:33;3584:5;3557:33;:::i;:::-;3457:139;;;;:::o;3602:86::-;3637:7;3677:4;3670:5;3666:16;3655:27;;3602:86;;;:::o;3694:118::-;3765:22;3781:5;3765:22;:::i;:::-;3758:5;3755:33;3745:61;;3802:1;3799;3792:12;3745:61;3694:118;:::o;3818:135::-;3862:5;3900:6;3887:20;3878:29;;3916:31;3941:5;3916:31;:::i;:::-;3818:135;;;;:::o;3959:1327::-;4102:6;4110;4118;4126;4134;4183:3;4171:9;4162:7;4158:23;4154:33;4151:120;;;4190:79;;:::i;:::-;4151:120;4338:1;4327:9;4323:17;4310:31;4368:18;4360:6;4357:30;4354:117;;;4390:79;;:::i;:::-;4354:117;4495:78;4565:7;4556:6;4545:9;4541:22;4495:78;:::i;:::-;4485:88;;4281:302;4650:2;4639:9;4635:18;4622:32;4681:18;4673:6;4670:30;4667:117;;;4703:79;;:::i;:::-;4667:117;4808:78;4878:7;4869:6;4858:9;4854:22;4808:78;:::i;:::-;4798:88;;4593:303;4935:2;4961:53;5006:7;4997:6;4986:9;4982:22;4961:53;:::i;:::-;4951:63;;4906:118;5063:2;5089:53;5134:7;5125:6;5114:9;5110:22;5089:53;:::i;:::-;5079:63;;5034:118;5191:3;5218:51;5261:7;5252:6;5241:9;5237:22;5218:51;:::i;:::-;5208:61;;5162:117;3959:1327;;;;;;;;:::o;5292:180::-;5340:77;5337:1;5330:88;5437:4;5434:1;5427:15;5461:4;5458:1;5451:15;5478:118;5565:24;5583:5;5565:24;:::i;:::-;5560:3;5553:37;5478:118;;:::o;5602:::-;5689:24;5707:5;5689:24;:::i;:::-;5684:3;5677:37;5602:118;;:::o;5726:332::-;5847:4;5885:2;5874:9;5870:18;5862:26;;5898:71;5966:1;5955:9;5951:17;5942:6;5898:71;:::i;:::-;5979:72;6047:2;6036:9;6032:18;6023:6;5979:72;:::i;:::-;5726:332;;;;;:::o;6064:90::-;6098:7;6141:5;6134:13;6127:21;6116:32;;6064:90;;;:::o;6160:116::-;6230:21;6245:5;6230:21;:::i;:::-;6223:5;6220:32;6210:60;;6266:1;6263;6256:12;6210:60;6160:116;:::o;6282:137::-;6336:5;6367:6;6361:13;6352:22;;6383:30;6407:5;6383:30;:::i;:::-;6282:137;;;;:::o;6425:345::-;6492:6;6541:2;6529:9;6520:7;6516:23;6512:32;6509:119;;;6547:79;;:::i;:::-;6509:119;6667:1;6692:61;6745:7;6736:6;6725:9;6721:22;6692:61;:::i;:::-;6682:71;;6638:125;6425:345;;;;:::o;6776:442::-;6925:4;6963:2;6952:9;6948:18;6940:26;;6976:71;7044:1;7033:9;7029:17;7020:6;6976:71;:::i;:::-;7057:72;7125:2;7114:9;7110:18;7101:6;7057:72;:::i;:::-;7139;7207:2;7196:9;7192:18;7183:6;7139:72;:::i;:::-;6776:442;;;;;;:::o;7224:180::-;7272:77;7269:1;7262:88;7369:4;7366:1;7359:15;7393:4;7390:1;7383:15;7410:194;7450:4;7470:20;7488:1;7470:20;:::i;:::-;7465:25;;7504:20;7522:1;7504:20;:::i;:::-;7499:25;;7548:1;7545;7541:9;7533:17;;7572:1;7566:4;7563:11;7560:37;;;7577:18;;:::i;:::-;7560:37;7410:194;;;;:::o;7610:191::-;7650:3;7669:20;7687:1;7669:20;:::i;:::-;7664:25;;7703:20;7721:1;7703:20;:::i;:::-;7698:25;;7746:1;7743;7739:9;7732:16;;7767:3;7764:1;7761:10;7758:36;;;7774:18;;:::i;:::-;7758:36;7610:191;;;;:::o;7807:233::-;7846:3;7869:24;7887:5;7869:24;:::i;:::-;7860:33;;7915:66;7908:5;7905:77;7902:103;;7985:18;;:::i;:::-;7902:103;8032:1;8025:5;8021:13;8014:20;;7807:233;;;:::o;8046:169::-;8130:11;8164:6;8159:3;8152:19;8204:4;8199:3;8195:14;8180:29;;8046:169;;;;:::o;8221:238::-;8361:34;8357:1;8349:6;8345:14;8338:58;8430:21;8425:2;8417:6;8413:15;8406:46;8221:238;:::o;8465:366::-;8607:3;8628:67;8692:2;8687:3;8628:67;:::i;:::-;8621:74;;8704:93;8793:3;8704:93;:::i;:::-;8822:2;8817:3;8813:12;8806:19;;8465:366;;;:::o;8837:419::-;9003:4;9041:2;9030:9;9026:18;9018:26;;9090:9;9084:4;9080:20;9076:1;9065:9;9061:17;9054:47;9118:131;9244:4;9118:131;:::i;:::-;9110:139;;8837:419;;;:::o;9262:222::-;9355:4;9393:2;9382:9;9378:18;9370:26;;9406:71;9474:1;9463:9;9459:17;9450:6;9406:71;:::i;:::-;9262:222;;;;:::o;9490:114::-;9527:7;9567:30;9560:5;9556:42;9545:53;;9490:114;;;:::o;9610:122::-;9683:24;9701:5;9683:24;:::i;:::-;9676:5;9673:35;9663:63;;9722:1;9719;9712:12;9663:63;9610:122;:::o;9738:143::-;9795:5;9826:6;9820:13;9811:22;;9842:33;9869:5;9842:33;:::i;:::-;9738:143;;;;:::o;9887:93::-;9923:7;9963:10;9956:5;9952:22;9941:33;;9887:93;;;:::o;9986:120::-;10058:23;10075:5;10058:23;:::i;:::-;10051:5;10048:34;10038:62;;10096:1;10093;10086:12;10038:62;9986:120;:::o;10112:141::-;10168:5;10199:6;10193:13;10184:22;;10215:32;10241:5;10215:32;:::i;:::-;10112:141;;;;:::o;10259:661::-;10346:6;10354;10362;10411:2;10399:9;10390:7;10386:23;10382:32;10379:119;;;10417:79;;:::i;:::-;10379:119;10537:1;10562:64;10618:7;10609:6;10598:9;10594:22;10562:64;:::i;:::-;10552:74;;10508:128;10675:2;10701:64;10757:7;10748:6;10737:9;10733:22;10701:64;:::i;:::-;10691:74;;10646:129;10814:2;10840:63;10895:7;10886:6;10875:9;10871:22;10840:63;:::i;:::-;10830:73;;10785:128;10259:661;;;;;:::o;10926:98::-;10977:6;11011:5;11005:12;10995:22;;10926:98;;;:::o;11030:168::-;11113:11;11147:6;11142:3;11135:19;11187:4;11182:3;11178:14;11163:29;;11030:168;;;;:::o;11204:246::-;11285:1;11295:113;11309:6;11306:1;11303:13;11295:113;;;11394:1;11389:3;11385:11;11379:18;11375:1;11370:3;11366:11;11359:39;11331:2;11328:1;11324:10;11319:15;;11295:113;;;11442:1;11433:6;11428:3;11424:16;11417:27;11266:184;11204:246;;;:::o;11456:373::-;11542:3;11570:38;11602:5;11570:38;:::i;:::-;11624:70;11687:6;11682:3;11624:70;:::i;:::-;11617:77;;11703:65;11761:6;11756:3;11749:4;11742:5;11738:16;11703:65;:::i;:::-;11793:29;11815:6;11793:29;:::i;:::-;11788:3;11784:39;11777:46;;11546:283;11456:373;;;;:::o;11835:640::-;12030:4;12068:3;12057:9;12053:19;12045:27;;12082:71;12150:1;12139:9;12135:17;12126:6;12082:71;:::i;:::-;12163:72;12231:2;12220:9;12216:18;12207:6;12163:72;:::i;:::-;12245;12313:2;12302:9;12298:18;12289:6;12245:72;:::i;:::-;12364:9;12358:4;12354:20;12349:2;12338:9;12334:18;12327:48;12392:76;12463:4;12454:6;12392:76;:::i;:::-;12384:84;;11835:640;;;;;;;:::o;12481:230::-;12621:34;12617:1;12609:6;12605:14;12598:58;12690:13;12685:2;12677:6;12673:15;12666:38;12481:230;:::o;12717:366::-;12859:3;12880:67;12944:2;12939:3;12880:67;:::i;:::-;12873:74;;12956:93;13045:3;12956:93;:::i;:::-;13074:2;13069:3;13065:12;13058:19;;12717:366;;;:::o;13089:419::-;13255:4;13293:2;13282:9;13278:18;13270:26;;13342:9;13336:4;13332:20;13328:1;13317:9;13313:17;13306:47;13370:131;13496:4;13370:131;:::i;:::-;13362:139;;13089:419;;;:::o;13514:227::-;13654:34;13650:1;13642:6;13638:14;13631:58;13723:10;13718:2;13710:6;13706:15;13699:35;13514:227;:::o;13747:366::-;13889:3;13910:67;13974:2;13969:3;13910:67;:::i;:::-;13903:74;;13986:93;14075:3;13986:93;:::i;:::-;14104:2;14099:3;14095:12;14088:19;;13747:366;;;:::o;14119:419::-;14285:4;14323:2;14312:9;14308:18;14300:26;;14372:9;14366:4;14362:20;14358:1;14347:9;14343:17;14336:47;14400:131;14526:4;14400:131;:::i;:::-;14392:139;;14119:419;;;:::o;14544:410::-;14584:7;14607:20;14625:1;14607:20;:::i;:::-;14602:25;;14641:20;14659:1;14641:20;:::i;:::-;14636:25;;14696:1;14693;14689:9;14718:30;14736:11;14718:30;:::i;:::-;14707:41;;14897:1;14888:7;14884:15;14881:1;14878:22;14858:1;14851:9;14831:83;14808:139;;14927:18;;:::i;:::-;14808:139;14592:362;14544:410;;;;:::o;14960:180::-;15008:77;15005:1;14998:88;15105:4;15102:1;15095:15;15129:4;15126:1;15119:15;15146:185;15186:1;15203:20;15221:1;15203:20;:::i;:::-;15198:25;;15237:20;15255:1;15237:20;:::i;:::-;15232:25;;15276:1;15266:35;;15281:18;;:::i;:::-;15266:35;15323:1;15320;15316:9;15311:14;;15146:185;;;;:::o
Swarm Source
ipfs://ecfd7a59222a132b55b4d22cc85c11e5902bf275578279de4ce68dc9b2c68a4d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.