Overview
S Balance
0 S
S Value
-More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
UniswapV2Pair
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity Standard Json-Input format)
/* █▀ █▀█ █▄░█ █ █▀▀ █▀▀ ▄▀█ █▀▀ ▀█▀ █▀█ █▀█ █▄█ ▄█ █▄█ █░▀█ █ █▄▄ █▀░ █▀█ █▄▄ ░█░ █▄█ █▀▄ ░█░ Trade on SonicFactory and have fun! Web: https://sonicfactory.fun/ */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; import "./libraries/UQ112x112.sol"; import "./interfaces/IERC20.sol"; import "./interfaces/IWETH.sol"; import "./interfaces/IIncubator.sol"; contract UniswapV2Pair { using UQ112x112 for uint224; address private immutable INCUBATOR; address private _CREATOR; address private _REFERRAL; address private _WETH; address private _TOKEN; address public immutable token0; address public immutable token1; bool private _initialized; bool private _AUTOESCAPE; uint8 private locked; uint24 private _FEE; uint24 private _TAX; uint24 private _REF; uint32 private _LAUNCH; uint32 private blockTimestampLast; uint112 private _ETH_RESERVE_VIRTUAL_INITIAL; uint112 private _ETH_RESERVE_ESCAPE_TARGET; uint112 private _TOKEN_INITIAL_RESERVE; uint112 private reserve0; uint112 private reserve1; uint256 public price0CumulativeLast; uint256 public price1CumulativeLast; event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); error ErrorLocked(); error ErrorAutoEscape(); error ErrorNotLaunched(); error ErrorUnauthorized(address sender); error ErrorAlreadyInitialized(); error ErrorInsufficientReserves(); error ErrorSwapInsufficientInput(); error ErrorSwapInsufficientOutput(); error ErrorSwapInsufficientLiquidity(); error ErrorSwapInvalidRecipient(); error ErrorTransfer(address to, uint256 amount); modifier lock() { if (locked >= 1) { revert ErrorLocked(); } locked = 1; _; if (locked == 1) { locked = 0; } } modifier isLaunched() { if (_LAUNCH > _timestamp()) { revert ErrorNotLaunched(); } _; } constructor(address incubator, address _token0, address _token1) payable { INCUBATOR = incubator; token0 = _token0; token1 = _token1; } function initializePair(address creator, uint24 fee, uint24 tax, uint24 ref, uint32 launch, uint112 tokenInitialReserve, uint112 ethInitialVirtualReserve, uint112 ethReserveEscapeTarget, address WETH, address referral, bool autoEscape) external { if (msg.sender != INCUBATOR) { revert ErrorUnauthorized(msg.sender); } if (_initialized) { revert ErrorAlreadyInitialized(); } _CREATOR = creator; _FEE = fee; _TAX = tax; _LAUNCH = launch; _ETH_RESERVE_VIRTUAL_INITIAL = ethInitialVirtualReserve; _ETH_RESERVE_ESCAPE_TARGET = ethReserveEscapeTarget; _TOKEN_INITIAL_RESERVE = tokenInitialReserve; _WETH = WETH; _TOKEN = token0 == _WETH ? token1 : token0; _AUTOESCAPE = autoEscape; if (referral != address(0) && referral != creator) { _REF = ref; _REFERRAL = referral; } _initialized = true; _update(token0 == _WETH ? uint256(ethInitialVirtualReserve) : uint256(_TOKEN_INITIAL_RESERVE), token0 == _WETH ? uint256(_TOKEN_INITIAL_RESERVE) : uint256(ethInitialVirtualReserve), 0, 0); } function FEE() external view returns (uint24) { return _FEE; } function TAX() external view returns (uint24) { return _TAX; } function ETH_INITIAL_VIRTUAL_RESERVE() external view returns (uint112) { return _ETH_RESERVE_VIRTUAL_INITIAL; } function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) { return (reserve0, reserve1, blockTimestampLast); } function sync() external lock { uint256 balance0; uint256 balance1; unchecked { balance0 = IERC20(token0).balanceOf(address(this)) + (token0 == _WETH ? uint256(_ETH_RESERVE_VIRTUAL_INITIAL) : 0); balance1 = IERC20(token1).balanceOf(address(this)) + (token1 == _WETH ? uint256(_ETH_RESERVE_VIRTUAL_INITIAL) : 0); } _update(balance0, balance1, reserve0, reserve1); } function swap(address to, address tokenIn) external payable isLaunched lock { if (to == token0 || to == token1) { revert ErrorSwapInvalidRecipient(); } bool buy = tokenIn == _WETH; uint256 amountInEffective; uint256 amountOutEffective; uint256 amountIn; uint256 amountOut; uint256 ethAmount; uint256 feeAmount; uint256 taxAmount; uint256 refAmount; if (buy) { amountIn = msg.value; amountInEffective = _percentage(amountIn, 100_000 - uint256(_FEE + _TAX)); ethAmount = amountIn; if (_FEE > 0 || _TAX > 0) { if (_FEE > 0) { unchecked { feeAmount = _percentage(amountIn, uint256(_FEE)); if (_REF > 0) { refAmount = _percentage(feeAmount, uint256(_REF)); feeAmount -= refAmount; } } } if (_TAX > 0) { taxAmount = _percentage(amountIn, uint256(_TAX)); } } IWETH(_WETH).deposit{ value: amountInEffective }(); IWETH(_WETH).transfer(address(this), amountInEffective); } else { unchecked { amountIn = amountInEffective = IERC20(tokenIn).balanceOf(address(this)) - uint256(token0 == tokenIn ? reserve0 : reserve1); } } if (amountIn == 0) { revert ErrorSwapInsufficientInput(); } (uint112 reserveIn, uint112 reserveOut) = token0 == tokenIn ? (reserve0, reserve1) : (reserve1, reserve0); unchecked { amountOut = amountOutEffective = (amountInEffective * uint256(reserveOut)) / (uint256(reserveIn) + amountInEffective); } if (amountOut == 0) { revert ErrorSwapInsufficientOutput(); } if (amountOut > uint256(reserveOut)) { revert ErrorSwapInsufficientLiquidity(); } if (tokenIn == _TOKEN) { unchecked { amountOutEffective = _percentage(amountOut, 100_000 - uint256(_FEE + _TAX)); } IWETH(_WETH).withdraw(amountOut); ethAmount = amountOut; if (_FEE > 0 || _TAX > 0) { if (_FEE > 0) { unchecked { feeAmount = _percentage(amountOut, uint256(_FEE)); if (_REF > 0) { refAmount = _percentage(feeAmount, uint256(_REF)); feeAmount -= refAmount; } } } if (_TAX > 0) { taxAmount = _percentage(amountOut, uint256(_TAX)); } } } if (_FEE > 0 || _TAX > 0) { if (feeAmount > 0) { _withdrawETH(INCUBATOR, feeAmount); if (refAmount > 0) { _withdrawETH(_REFERRAL, refAmount); } } if (taxAmount > 0) { _withdrawETH(_CREATOR, taxAmount); } } uint256 tokenAmount = buy ? amountOut : amountIn; { // scope to avoid "stack too deep" error address _to = to; bool _buy = buy; uint256 _amountOutEffective = amountOutEffective; uint256 _ethAmount = ethAmount; uint256 _tokenAmount = tokenAmount; uint256 _feeAmount = feeAmount; uint256 _taxAmount = taxAmount; uint256 _refAmount = refAmount; if (_buy) { IERC20(_TOKEN).transfer(_to, _amountOutEffective); } else{ _withdrawETH(_to, _amountOutEffective); } (uint112 ethReserve, uint112 tokenReserve) = _getReserves(); IIncubator(INCUBATOR).pairSwap(_to, _buy, ethReserve, tokenReserve, _ethAmount, _tokenAmount, _feeAmount, _taxAmount, _refAmount); } uint256 balance0; uint256 balance1; unchecked { balance0 = IERC20(token0).balanceOf(address(this)) + (token0 == _WETH ? uint256(_ETH_RESERVE_VIRTUAL_INITIAL) : 0); balance1 = IERC20(token1).balanceOf(address(this)) + (token1 == _WETH ? uint256(_ETH_RESERVE_VIRTUAL_INITIAL) : 0); } _update(balance0, balance1, reserve0, reserve1); if (tokenIn == token0) { emit Swap(msg.sender, amountIn, 0, 0, amountOut, to); } else { emit Swap(msg.sender, 0, amountIn, amountOut, 0, to); } if (buy && _AUTOESCAPE) { unchecked { if ((token0 == _WETH ? balance0 : balance1) - uint256(_ETH_RESERVE_VIRTUAL_INITIAL) >= uint256(_ETH_RESERVE_ESCAPE_TARGET)) { _escape(); } } } } function escape() external isLaunched lock { if (msg.sender != _CREATOR) { revert ErrorUnauthorized(msg.sender); } if (_AUTOESCAPE) { revert ErrorAutoEscape(); } unchecked { if ((token0 == _WETH ? reserve0 : reserve1) - uint256(_ETH_RESERVE_VIRTUAL_INITIAL) < uint256(_ETH_RESERVE_ESCAPE_TARGET)) { revert ErrorInsufficientReserves(); } } _escape(); } function _getReserves() private view returns (uint112 ethReserve, uint112 tokenReserve) { ethReserve = token0 == _WETH ? reserve0 : reserve1; tokenReserve = token0 == _WETH ? reserve1 : reserve0; } function _update(uint256 balance0, uint256 balance1, uint112 _reserve0, uint112 _reserve1) private { uint32 blockTimestamp = _timestamp(); unchecked { uint32 timeElapsed = blockTimestamp - blockTimestampLast; if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) { price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed; price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed; } } reserve0 = uint112(balance0); reserve1 = uint112(balance1); blockTimestampLast = blockTimestamp; blockTimestampLast = _timestamp(); emit Sync(reserve0, reserve1); } function _withdrawETH(address to, uint256 value) private { (bool success,) = payable(to).call{ value: value }(""); if (!success) { revert ErrorTransfer(to, value); } } function _escape() private { locked = 2; delete _FEE; delete _TAX; delete _REF; uint256 balance0 = IERC20(token0).balanceOf(address(this)); uint256 balance1 = IERC20(token1).balanceOf(address(this)); (uint256 tokenAmount, uint256 ethAmount) = token0 == _WETH ? (balance1, balance0) : (balance0, balance1); IERC20(_TOKEN).transfer(INCUBATOR, tokenAmount); IWETH(_WETH).withdraw(ethAmount); IIncubator(INCUBATOR).tokenEscape{ value: ethAmount }(tokenAmount); _update(0, 0, reserve0, reserve1); } function _percentage(uint256 value, uint256 bps) private pure returns (uint256) { unchecked { return (value * bps) / 100_000; } } function _timestamp() private view returns (uint32) { unchecked { return uint32(block.timestamp % 2**32); } } receive() external payable { require(msg.sender == _WETH); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; interface IIncubator { function pairSwap(address user, bool buy, uint112 ethReserve, uint112 tokenReserve, uint256 ethAmount, uint256 tokenAmount, uint256 feeAmount, uint256 taxAmount, uint256 refAmount) external; function tokenEscape(uint256 tokenAmount) external payable; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; interface IWETH { function deposit() external payable; function transfer(address to, uint256 value) external returns (bool); function withdraw(uint256) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; interface IERC20 { function balanceOf(address owner) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; library UQ112x112 { uint224 constant Q112 = 2**112; function encode(uint112 y) internal pure returns (uint224 z) { unchecked { z = uint224(y) * Q112; } } function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) { unchecked { z = x / uint224(y); } } }
{ "optimizer": { "enabled": true, "runs": 9999 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "remappings": [], "evmVersion": "cancun" }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"incubator","type":"address"},{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"ErrorAlreadyInitialized","type":"error"},{"inputs":[],"name":"ErrorAutoEscape","type":"error"},{"inputs":[],"name":"ErrorInsufficientReserves","type":"error"},{"inputs":[],"name":"ErrorLocked","type":"error"},{"inputs":[],"name":"ErrorNotLaunched","type":"error"},{"inputs":[],"name":"ErrorSwapInsufficientInput","type":"error"},{"inputs":[],"name":"ErrorSwapInsufficientLiquidity","type":"error"},{"inputs":[],"name":"ErrorSwapInsufficientOutput","type":"error"},{"inputs":[],"name":"ErrorSwapInvalidRecipient","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ErrorTransfer","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ErrorUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"inputs":[],"name":"ETH_INITIAL_VIRTUAL_RESERVE","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAX","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"escape","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint24","name":"tax","type":"uint24"},{"internalType":"uint24","name":"ref","type":"uint24"},{"internalType":"uint32","name":"launch","type":"uint32"},{"internalType":"uint112","name":"tokenInitialReserve","type":"uint112"},{"internalType":"uint112","name":"ethInitialVirtualReserve","type":"uint112"},{"internalType":"uint112","name":"ethReserveEscapeTarget","type":"uint112"},{"internalType":"address","name":"WETH","type":"address"},{"internalType":"address","name":"referral","type":"address"},{"internalType":"bool","name":"autoEscape","type":"bool"}],"name":"initializePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e0604052604051612a0e380380612a0e8339810160408190526100229161005a565b6001600160a01b0392831660805290821660a0521660c05261009a565b80516001600160a01b0381168114610055575f5ffd5b919050565b5f5f5f6060848603121561006c575f5ffd5b6100758461003f565b92506100836020850161003f565b91506100916040850161003f565b90509250925092565b60805160a05160c05161287f61018f5f395f81816102a10152818161059b01528181610908015281816114f10152818161157601528181611c9601528181611d1b015261234801525f818161015d0152818161054601528181610575015281816106fc0152818161076e015281816108dc01528181610c8201528181610dce015281816113e601528181611477015281816116230152818161178a015281816119e101528181611b9701528181611c1c01528181612149015281816121c0015281816122a401526123bd01525f818161032c015281816111da015281816113830152818161242b015261254c015261287f5ff3fe6080604052600436106100c6575f3560e01c80636b76484e11610071578063d21220a71161004c578063d21220a714610290578063d33945fd146102c3578063fff6cae91461030d575f5ffd5b80636b76484e14610235578063c57981b514610248578063d180667d1461027c575f5ffd5b80635a3d5493116100a15780635a3d5493146101ba5780635d5a1e43146101cf57806368f58b03146101ee575f5ffd5b80630902f1ac146100e75780630dfe16811461014c5780635909c0d514610197575f5ffd5b366100e3576002546001600160a01b031633146100e1575f5ffd5b005b5f5ffd5b3480156100f2575f5ffd5b50600654600454604080516dffffffffffffffffffffffffffff80851682526e010000000000000000000000000000909404909316602084015264010000000090910463ffffffff16908201526060015b60405180910390f35b348015610157575f5ffd5b5061017f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610143565b3480156101a2575f5ffd5b506101ac60075481565b604051908152602001610143565b3480156101c5575f5ffd5b506101ac60085481565b3480156101da575f5ffd5b506100e16101e9366004612684565b610321565b3480156101f9575f5ffd5b506003547a010000000000000000000000000000000000000000000000000000900462ffffff165b60405162ffffff9091168152602001610143565b6100e1610243366004612757565b6107ef565b348015610253575f5ffd5b5060035477010000000000000000000000000000000000000000000000900462ffffff16610221565b348015610287575f5ffd5b506100e1611835565b34801561029b575f5ffd5b5061017f7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ce575f5ffd5b506004546801000000000000000090046dffffffffffffffffffffffffffff166040516dffffffffffffffffffffffffffff9091168152602001610143565b348015610318575f5ffd5b506100e1611af3565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461038a576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b60035474010000000000000000000000000000000000000000900460ff16156103df576040517f66a02dea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8a5f5f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555089600360176101000a81548162ffffff021916908362ffffff160217905550886003601a6101000a81548162ffffff021916908362ffffff1602179055508660045f6101000a81548163ffffffff021916908363ffffffff16021790555084600460086101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055508360055f6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550856005600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055508260025f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060025f9054906101000a90046001600160a01b03166001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610599577f00000000000000000000000000000000000000000000000000000000000000006105bb565b7f00000000000000000000000000000000000000000000000000000000000000005b600380548315157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ff00000000000000000000000000000000000000009091166001600160a01b039384161717905582161580159061062f57508a6001600160a01b0316826001600160a01b031614155b156106b457600380547cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d01000000000000000000000000000000000000000000000000000000000062ffffff8b1602179055600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384161790555b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556002546107e2907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614610757576005546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16610769565b856dffffffffffffffffffffffffffff165b6002547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146107b557866dffffffffffffffffffffffffffff166107db565b6005546e01000000000000000000000000000090046dffffffffffffffffffffffffffff165b5f5f611e19565b5050505050505050505050565b60045463ffffffff42811691161115610834576040517fd51c1d2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600176010000000000000000000000000000000000000000000090910460ff161061088e576040517f2b10235600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556001600160a01b038281167f000000000000000000000000000000000000000000000000000000000000000091909116148061093c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15610973576040517fe4ad481200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b038281169116145f808080808080808815610c76576003543496506109ff9087906109e89062ffffff7a0100000000000000000000000000000000000000000000000000008204811691770100000000000000000000000000000000000000000000009004166127b5565b6109fa9062ffffff16620186a06127d0565b61208d565b60035490985086945077010000000000000000000000000000000000000000000000900462ffffff16151580610a5957506003547a010000000000000000000000000000000000000000000000000000900462ffffff1615155b15610b805760035477010000000000000000000000000000000000000000000000900462ffffff1615610b2157600354610ab490879077010000000000000000000000000000000000000000000000900462ffffff1661208d565b6003549093507d010000000000000000000000000000000000000000000000000000000000900462ffffff1615610b2157600354610b199084907d010000000000000000000000000000000000000000000000000000000000900462ffffff1661208d565b905080830392505b6003547a010000000000000000000000000000000000000000000000000000900462ffffff1615610b8057600354610b7d9087907a010000000000000000000000000000000000000000000000000000900462ffffff1661208d565b91505b60025f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0896040518263ffffffff1660e01b81526004015f604051808303818588803b158015610bcd575f5ffd5b505af1158015610bdf573d5f5f3e3d5ffd5b50506002546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152306004820152602481018d90526001600160a01b03909116935063a9059cbb925060440190506020604051808303815f875af1158015610c4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7091906127e3565b50610d87565b896001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610cd9576006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16610ced565b6006546dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526dffffffffffffffffffffffffffff91909116906001600160a01b038c16906370a0823190602401602060405180830381865afa158015610d5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d809190612805565b0397508795505b855f03610dc0576040517f0b0597fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f8b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610e28576006546dffffffffffffffffffffffffffff6e010000000000000000000000000000820481169116610e52565b6006546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004165b9150915089826dffffffffffffffffffffffffffff1601816dffffffffffffffffffffffffffff168b0281610e8957610e8961281c565b049850889650865f03610ec8576040517fa5cf903d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806dffffffffffffffffffffffffffff16871115610f12576040517fdd5487b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546001600160a01b03908116908d160361117657600354610f8390889077010000000000000000000000000000000000000000000000810462ffffff9081167a01000000000000000000000000000000000000000000000000000090920481169190910116620186a00361208d565b6002546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018a9052919a506001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015610fe0575f5ffd5b505af1158015610ff2573d5f5f3e3d5ffd5b505060035489985077010000000000000000000000000000000000000000000000900462ffffff161515915081905061104f57506003547a010000000000000000000000000000000000000000000000000000900462ffffff1615155b156111765760035477010000000000000000000000000000000000000000000000900462ffffff1615611117576003546110aa90889077010000000000000000000000000000000000000000000000900462ffffff1661208d565b6003549095507d010000000000000000000000000000000000000000000000000000000000900462ffffff16156111175760035461110f9086907d010000000000000000000000000000000000000000000000000000000000900462ffffff1661208d565b925082850394505b6003547a010000000000000000000000000000000000000000000000000000900462ffffff1615611176576003546111739088907a010000000000000000000000000000000000000000000000000000900462ffffff1661208d565b93505b60035477010000000000000000000000000000000000000000000000900462ffffff161515806111ca57506003547a010000000000000000000000000000000000000000000000000000900462ffffff1615155b1561123657841561121b576111ff7f0000000000000000000000000000000000000000000000000000000000000000866120a0565b821561121b5760015461121b906001600160a01b0316846120a0565b8315611236575f54611236906001600160a01b0316856120a0565b5f8b6112425788611244565b875b90508d8c8b89848a8a8a86156112e7576003546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018990529091169063a9059cbb906044016020604051808303815f875af11580156112bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e191906127e3565b506112f1565b6112f188876120a0565b5f5f6112fb612140565b6040517fa73cc35c0000000000000000000000000000000000000000000000000000000081526001600160a01b038d811660048301528c151560248301526dffffffffffffffffffffffffffff808516604484015283166064830152608482018b905260a482018a905260c4820189905260e4820188905261010482018790529294509092507f00000000000000000000000000000000000000000000000000000000000000009091169063a73cc35c90610124015f604051808303815f87803b1580156113c7575f5ffd5b505af11580156113d9573d5f5f3e3d5ffd5b50506002545f9c508c9b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614995061142998505050505050505050575f611449565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156114c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e89190612805565b600254910192507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614611528575f611548565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156115c3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e79190612805565b6006549101915061162190839083906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e19565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168f6001600160a01b0316036116c6578f6001600160a01b0316336001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228d5f5f8f6040516116b9949392919093845260208401929092526040830152606082015260800190565b60405180910390a361172e565b8f6001600160a01b0316336001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8225f8e8e5f604051611725949392919093845260208401929092526040830152606082015260800190565b60405180910390a35b8d801561175657506003547501000000000000000000000000000000000000000000900460ff165b156117d1576005546004546002546dffffffffffffffffffffffffffff9283169268010000000000000000909204909116907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146117c157826117c3565b835b03106117d1576117d1612235565b5050600354760100000000000000000000000000000000000000000000900460ff166001039b506118319a505050505050505050505057600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff1690555b5050565b60045463ffffffff4281169116111561187a576040517fd51c1d2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600176010000000000000000000000000000000000000000000090910460ff16106118d4576040517f2b10235600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790555f54336001600160a01b039091161461195c576040517fa11a9a41000000000000000000000000000000000000000000000000000000008152336004820152602401610381565b6003547501000000000000000000000000000000000000000000900460ff16156119b2576040517f037573b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546004546002546dffffffffffffffffffffffffffff9283169268010000000000000000909204909116907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614611a3c576006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16611a50565b6006546dffffffffffffffffffffffffffff165b6dffffffffffffffffffffffffffff16031015611a99576040517f448cb04d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1612235565b600354760100000000000000000000000000000000000000000000900460ff16600103611af157600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff1690555b565b600354600176010000000000000000000000000000000000000000000090910460ff1610611b4d576040517f2b10235600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556002545f9081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614611bce575f611bee565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611c69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8d9190612805565b600254910192507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614611ccd575f611ced565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611d68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8c9190612805565b60065491019150611dc690839083906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e19565b5050600354760100000000000000000000000000000000000000000000900460ff16600103611af157600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff169055565b60045463ffffffff4281169164010000000090048116820390811615801590611e5157506dffffffffffffffffffffffffffff841615155b8015611e6c57506dffffffffffffffffffffffffffff831615155b15611f4e5763ffffffff8116611ec3856e0100000000000000000000000000006dffffffffffffffffffffffffffff8716025b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906125ec565b600780547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116611f21846e0100000000000000000000000000006dffffffffffffffffffffffffffff881602611e9f565b600880547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b50600680546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909216908816171790556004805463ffffffff8316640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff909116179055611fe763ffffffff421690565b6004805463ffffffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff909216919091179055600654604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000090930490921660208301527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a15050505050565b5f620186a08383025b0490505b92915050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146120e9576040519150601f19603f3d011682016040523d82523d5f602084013e6120ee565b606091505b505090508061213b576040517f1c196f330000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101839052604401610381565b505050565b6002545f9081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146121a4576006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff166121b8565b6006546dffffffffffffffffffffffffffff165b6002549092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614612209576006546dffffffffffffffffffffffffffff1661222f565b6006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff165b90509091565b6003805475ffffffffffffffffffffffffffffffffffffffffffff167602000000000000000000000000000000000000000000001790556040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156122e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230d9190612805565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561238d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b19190612805565b6002549091505f9081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146123f55783836123f8565b82845b6003546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052939550919350919091169063a9059cbb906044016020604051808303815f875af1158015612488573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ac91906127e3565b506002546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b158015612509575f5ffd5b505af115801561251b573d5f5f3e3d5ffd5b50506040517f37b3375f000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506337b3375f915083906024015f604051808303818588803b158015612599575f5ffd5b505af11580156125ab573d5f5f3e3d5ffd5b50506006546125e693505f92508291506dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e19565b50505050565b5f6dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816120965761209661281c565b80356001600160a01b0381168114612640575f5ffd5b919050565b803562ffffff81168114612640575f5ffd5b80356dffffffffffffffffffffffffffff81168114612640575f5ffd5b8015158114612681575f5ffd5b50565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e03121561269f575f5ffd5b6126a88c61262a565b9a506126b660208d01612645565b99506126c460408d01612645565b98506126d260608d01612645565b975060808c013563ffffffff811681146126ea575f5ffd5b96506126f860a08d01612657565b955061270660c08d01612657565b945061271460e08d01612657565b93506127236101008d0161262a565b92506127326101208d0161262a565b91506101408c013561274381612674565b809150509295989b509295989b9093969950565b5f5f60408385031215612768575f5ffd5b6127718361262a565b915061277f6020840161262a565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b62ffffff818116838216019081111561209a5761209a612788565b8181038181111561209a5761209a612788565b5f602082840312156127f3575f5ffd5b81516127fe81612674565b9392505050565b5f60208284031215612815575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffdfea26469706673582212203e6d64bf01b3961f85ab1454e0831b50d35284c0df91085124e5c38266e30bd264736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002
Deployed Bytecode
0x6080604052600436106100c6575f3560e01c80636b76484e11610071578063d21220a71161004c578063d21220a714610290578063d33945fd146102c3578063fff6cae91461030d575f5ffd5b80636b76484e14610235578063c57981b514610248578063d180667d1461027c575f5ffd5b80635a3d5493116100a15780635a3d5493146101ba5780635d5a1e43146101cf57806368f58b03146101ee575f5ffd5b80630902f1ac146100e75780630dfe16811461014c5780635909c0d514610197575f5ffd5b366100e3576002546001600160a01b031633146100e1575f5ffd5b005b5f5ffd5b3480156100f2575f5ffd5b50600654600454604080516dffffffffffffffffffffffffffff80851682526e010000000000000000000000000000909404909316602084015264010000000090910463ffffffff16908201526060015b60405180910390f35b348015610157575f5ffd5b5061017f7f000000000000000000000000000000000000000000000000000000000000000181565b6040516001600160a01b039091168152602001610143565b3480156101a2575f5ffd5b506101ac60075481565b604051908152602001610143565b3480156101c5575f5ffd5b506101ac60085481565b3480156101da575f5ffd5b506100e16101e9366004612684565b610321565b3480156101f9575f5ffd5b506003547a010000000000000000000000000000000000000000000000000000900462ffffff165b60405162ffffff9091168152602001610143565b6100e1610243366004612757565b6107ef565b348015610253575f5ffd5b5060035477010000000000000000000000000000000000000000000000900462ffffff16610221565b348015610287575f5ffd5b506100e1611835565b34801561029b575f5ffd5b5061017f7f000000000000000000000000000000000000000000000000000000000000000281565b3480156102ce575f5ffd5b506004546801000000000000000090046dffffffffffffffffffffffffffff166040516dffffffffffffffffffffffffffff9091168152602001610143565b348015610318575f5ffd5b506100e1611af3565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461038a576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b60035474010000000000000000000000000000000000000000900460ff16156103df576040517f66a02dea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8a5f5f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555089600360176101000a81548162ffffff021916908362ffffff160217905550886003601a6101000a81548162ffffff021916908362ffffff1602179055508660045f6101000a81548163ffffffff021916908363ffffffff16021790555084600460086101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055508360055f6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550856005600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055508260025f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060025f9054906101000a90046001600160a01b03166001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000016001600160a01b031614610599577f00000000000000000000000000000000000000000000000000000000000000016105bb565b7f00000000000000000000000000000000000000000000000000000000000000025b600380548315157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ff00000000000000000000000000000000000000009091166001600160a01b039384161717905582161580159061062f57508a6001600160a01b0316826001600160a01b031614155b156106b457600380547cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d01000000000000000000000000000000000000000000000000000000000062ffffff8b1602179055600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384161790555b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556002546107e2907f00000000000000000000000000000000000000000000000000000000000000016001600160a01b03908116911614610757576005546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16610769565b856dffffffffffffffffffffffffffff165b6002547f00000000000000000000000000000000000000000000000000000000000000016001600160a01b039081169116146107b557866dffffffffffffffffffffffffffff166107db565b6005546e01000000000000000000000000000090046dffffffffffffffffffffffffffff165b5f5f611e19565b5050505050505050505050565b60045463ffffffff42811691161115610834576040517fd51c1d2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600176010000000000000000000000000000000000000000000090910460ff161061088e576040517f2b10235600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556001600160a01b038281167f000000000000000000000000000000000000000000000000000000000000000191909116148061093c57507f00000000000000000000000000000000000000000000000000000000000000026001600160a01b0316826001600160a01b0316145b15610973576040517fe4ad481200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b038281169116145f808080808080808815610c76576003543496506109ff9087906109e89062ffffff7a0100000000000000000000000000000000000000000000000000008204811691770100000000000000000000000000000000000000000000009004166127b5565b6109fa9062ffffff16620186a06127d0565b61208d565b60035490985086945077010000000000000000000000000000000000000000000000900462ffffff16151580610a5957506003547a010000000000000000000000000000000000000000000000000000900462ffffff1615155b15610b805760035477010000000000000000000000000000000000000000000000900462ffffff1615610b2157600354610ab490879077010000000000000000000000000000000000000000000000900462ffffff1661208d565b6003549093507d010000000000000000000000000000000000000000000000000000000000900462ffffff1615610b2157600354610b199084907d010000000000000000000000000000000000000000000000000000000000900462ffffff1661208d565b905080830392505b6003547a010000000000000000000000000000000000000000000000000000900462ffffff1615610b8057600354610b7d9087907a010000000000000000000000000000000000000000000000000000900462ffffff1661208d565b91505b60025f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0896040518263ffffffff1660e01b81526004015f604051808303818588803b158015610bcd575f5ffd5b505af1158015610bdf573d5f5f3e3d5ffd5b50506002546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152306004820152602481018d90526001600160a01b03909116935063a9059cbb925060440190506020604051808303815f875af1158015610c4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7091906127e3565b50610d87565b896001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000016001600160a01b031614610cd9576006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16610ced565b6006546dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526dffffffffffffffffffffffffffff91909116906001600160a01b038c16906370a0823190602401602060405180830381865afa158015610d5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d809190612805565b0397508795505b855f03610dc0576040517f0b0597fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f8b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000016001600160a01b031614610e28576006546dffffffffffffffffffffffffffff6e010000000000000000000000000000820481169116610e52565b6006546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004165b9150915089826dffffffffffffffffffffffffffff1601816dffffffffffffffffffffffffffff168b0281610e8957610e8961281c565b049850889650865f03610ec8576040517fa5cf903d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806dffffffffffffffffffffffffffff16871115610f12576040517fdd5487b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546001600160a01b03908116908d160361117657600354610f8390889077010000000000000000000000000000000000000000000000810462ffffff9081167a01000000000000000000000000000000000000000000000000000090920481169190910116620186a00361208d565b6002546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018a9052919a506001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015610fe0575f5ffd5b505af1158015610ff2573d5f5f3e3d5ffd5b505060035489985077010000000000000000000000000000000000000000000000900462ffffff161515915081905061104f57506003547a010000000000000000000000000000000000000000000000000000900462ffffff1615155b156111765760035477010000000000000000000000000000000000000000000000900462ffffff1615611117576003546110aa90889077010000000000000000000000000000000000000000000000900462ffffff1661208d565b6003549095507d010000000000000000000000000000000000000000000000000000000000900462ffffff16156111175760035461110f9086907d010000000000000000000000000000000000000000000000000000000000900462ffffff1661208d565b925082850394505b6003547a010000000000000000000000000000000000000000000000000000900462ffffff1615611176576003546111739088907a010000000000000000000000000000000000000000000000000000900462ffffff1661208d565b93505b60035477010000000000000000000000000000000000000000000000900462ffffff161515806111ca57506003547a010000000000000000000000000000000000000000000000000000900462ffffff1615155b1561123657841561121b576111ff7f0000000000000000000000000000000000000000000000000000000000000000866120a0565b821561121b5760015461121b906001600160a01b0316846120a0565b8315611236575f54611236906001600160a01b0316856120a0565b5f8b6112425788611244565b875b90508d8c8b89848a8a8a86156112e7576003546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018990529091169063a9059cbb906044016020604051808303815f875af11580156112bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e191906127e3565b506112f1565b6112f188876120a0565b5f5f6112fb612140565b6040517fa73cc35c0000000000000000000000000000000000000000000000000000000081526001600160a01b038d811660048301528c151560248301526dffffffffffffffffffffffffffff808516604484015283166064830152608482018b905260a482018a905260c4820189905260e4820188905261010482018790529294509092507f00000000000000000000000000000000000000000000000000000000000000009091169063a73cc35c90610124015f604051808303815f87803b1580156113c7575f5ffd5b505af11580156113d9573d5f5f3e3d5ffd5b50506002545f9c508c9b507f00000000000000000000000000000000000000000000000000000000000000016001600160a01b03908116911614995061142998505050505050505050575f611449565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000016001600160a01b0316906370a0823190602401602060405180830381865afa1580156114c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e89190612805565b600254910192507f00000000000000000000000000000000000000000000000000000000000000026001600160a01b03908116911614611528575f611548565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000026001600160a01b0316906370a0823190602401602060405180830381865afa1580156115c3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e79190612805565b6006549101915061162190839083906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e19565b7f00000000000000000000000000000000000000000000000000000000000000016001600160a01b03168f6001600160a01b0316036116c6578f6001600160a01b0316336001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228d5f5f8f6040516116b9949392919093845260208401929092526040830152606082015260800190565b60405180910390a361172e565b8f6001600160a01b0316336001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8225f8e8e5f604051611725949392919093845260208401929092526040830152606082015260800190565b60405180910390a35b8d801561175657506003547501000000000000000000000000000000000000000000900460ff165b156117d1576005546004546002546dffffffffffffffffffffffffffff9283169268010000000000000000909204909116907f00000000000000000000000000000000000000000000000000000000000000016001600160a01b039081169116146117c157826117c3565b835b03106117d1576117d1612235565b5050600354760100000000000000000000000000000000000000000000900460ff166001039b506118319a505050505050505050505057600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff1690555b5050565b60045463ffffffff4281169116111561187a576040517fd51c1d2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600176010000000000000000000000000000000000000000000090910460ff16106118d4576040517f2b10235600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790555f54336001600160a01b039091161461195c576040517fa11a9a41000000000000000000000000000000000000000000000000000000008152336004820152602401610381565b6003547501000000000000000000000000000000000000000000900460ff16156119b2576040517f037573b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546004546002546dffffffffffffffffffffffffffff9283169268010000000000000000909204909116907f00000000000000000000000000000000000000000000000000000000000000016001600160a01b03908116911614611a3c576006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16611a50565b6006546dffffffffffffffffffffffffffff165b6dffffffffffffffffffffffffffff16031015611a99576040517f448cb04d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1612235565b600354760100000000000000000000000000000000000000000000900460ff16600103611af157600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff1690555b565b600354600176010000000000000000000000000000000000000000000090910460ff1610611b4d576040517f2b10235600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556002545f9081907f00000000000000000000000000000000000000000000000000000000000000016001600160a01b03908116911614611bce575f611bee565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000016001600160a01b0316906370a0823190602401602060405180830381865afa158015611c69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8d9190612805565b600254910192507f00000000000000000000000000000000000000000000000000000000000000026001600160a01b03908116911614611ccd575f611ced565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000026001600160a01b0316906370a0823190602401602060405180830381865afa158015611d68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8c9190612805565b60065491019150611dc690839083906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e19565b5050600354760100000000000000000000000000000000000000000000900460ff16600103611af157600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff169055565b60045463ffffffff4281169164010000000090048116820390811615801590611e5157506dffffffffffffffffffffffffffff841615155b8015611e6c57506dffffffffffffffffffffffffffff831615155b15611f4e5763ffffffff8116611ec3856e0100000000000000000000000000006dffffffffffffffffffffffffffff8716025b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906125ec565b600780547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116611f21846e0100000000000000000000000000006dffffffffffffffffffffffffffff881602611e9f565b600880547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b50600680546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909216908816171790556004805463ffffffff8316640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff909116179055611fe763ffffffff421690565b6004805463ffffffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff909216919091179055600654604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000090930490921660208301527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a15050505050565b5f620186a08383025b0490505b92915050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146120e9576040519150601f19603f3d011682016040523d82523d5f602084013e6120ee565b606091505b505090508061213b576040517f1c196f330000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101839052604401610381565b505050565b6002545f9081907f00000000000000000000000000000000000000000000000000000000000000016001600160a01b039081169116146121a4576006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff166121b8565b6006546dffffffffffffffffffffffffffff165b6002549092507f00000000000000000000000000000000000000000000000000000000000000016001600160a01b03908116911614612209576006546dffffffffffffffffffffffffffff1661222f565b6006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff165b90509091565b6003805475ffffffffffffffffffffffffffffffffffffffffffff167602000000000000000000000000000000000000000000001790556040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000116906370a0823190602401602060405180830381865afa1580156122e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230d9190612805565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000216906370a0823190602401602060405180830381865afa15801561238d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b19190612805565b6002549091505f9081907f00000000000000000000000000000000000000000000000000000000000000016001600160a01b039081169116146123f55783836123f8565b82845b6003546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052939550919350919091169063a9059cbb906044016020604051808303815f875af1158015612488573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ac91906127e3565b506002546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b158015612509575f5ffd5b505af115801561251b573d5f5f3e3d5ffd5b50506040517f37b3375f000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506337b3375f915083906024015f604051808303818588803b158015612599575f5ffd5b505af11580156125ab573d5f5f3e3d5ffd5b50506006546125e693505f92508291506dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e19565b50505050565b5f6dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816120965761209661281c565b80356001600160a01b0381168114612640575f5ffd5b919050565b803562ffffff81168114612640575f5ffd5b80356dffffffffffffffffffffffffffff81168114612640575f5ffd5b8015158114612681575f5ffd5b50565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e03121561269f575f5ffd5b6126a88c61262a565b9a506126b660208d01612645565b99506126c460408d01612645565b98506126d260608d01612645565b975060808c013563ffffffff811681146126ea575f5ffd5b96506126f860a08d01612657565b955061270660c08d01612657565b945061271460e08d01612657565b93506127236101008d0161262a565b92506127326101208d0161262a565b91506101408c013561274381612674565b809150509295989b509295989b9093969950565b5f5f60408385031215612768575f5ffd5b6127718361262a565b915061277f6020840161262a565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b62ffffff818116838216019081111561209a5761209a612788565b8181038181111561209a5761209a612788565b5f602082840312156127f3575f5ffd5b81516127fe81612674565b9392505050565b5f60208284031215612815575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffdfea26469706673582212203e6d64bf01b3961f85ab1454e0831b50d35284c0df91085124e5c38266e30bd264736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002
-----Decoded View---------------
Arg [0] : incubator (address): 0x0000000000000000000000000000000000000000
Arg [1] : _token0 (address): 0x0000000000000000000000000000000000000001
Arg [2] : _token1 (address): 0x0000000000000000000000000000000000000002
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000002
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.