Polygon Sponsored slots available. Book your slot here!
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
DODORouteProxy
Compiler Version
v0.6.9+commit.3e3065ac
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-06-11 */ // File: contracts/intf/IDODOApprove.sol /* Copyright 2020 DODO ZOO. SPDX-License-Identifier: Apache-2.0 */ pragma solidity 0.6.9; pragma experimental ABIEncoderV2; interface IDODOApprove { function claimTokens(address token,address who,address dest,uint256 amount) external; function getDODOProxy() external view returns (address); } // File: contracts/lib/InitializableOwnable.sol /** * @title Ownable * @author DODO Breeder * * @notice Ownership related functions */ contract InitializableOwnable { address public _OWNER_; address public _NEW_OWNER_; bool internal _INITIALIZED_; // ============ Events ============ event OwnershipTransferPrepared(address indexed previousOwner, address indexed newOwner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); // ============ Modifiers ============ modifier notInitialized() { require(!_INITIALIZED_, "DODO_INITIALIZED"); _; } modifier onlyOwner() { require(msg.sender == _OWNER_, "NOT_OWNER"); _; } // ============ Functions ============ function initOwner(address newOwner) public notInitialized { _INITIALIZED_ = true; _OWNER_ = newOwner; } function transferOwnership(address newOwner) public onlyOwner { emit OwnershipTransferPrepared(_OWNER_, newOwner); _NEW_OWNER_ = newOwner; } function claimOwnership() public { require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM"); emit OwnershipTransferred(_OWNER_, _NEW_OWNER_); _OWNER_ = _NEW_OWNER_; _NEW_OWNER_ = address(0); } } // File: contracts/SmartRoute/DODOApproveProxy.sol interface IDODOApproveProxy { function isAllowedProxy(address _proxy) external view returns (bool); function claimTokens(address token,address who,address dest,uint256 amount) external; } /** * @title DODOApproveProxy * @author DODO Breeder * * @notice Allow different version dodoproxy to claim from DODOApprove */ contract DODOApproveProxy is InitializableOwnable { // ============ Storage ============ uint256 private constant _TIMELOCK_DURATION_ = 3 days; mapping (address => bool) public _IS_ALLOWED_PROXY_; uint256 public _TIMELOCK_; address public _PENDING_ADD_DODO_PROXY_; address public immutable _DODO_APPROVE_; // ============ Modifiers ============ modifier notLocked() { require( _TIMELOCK_ <= block.timestamp, "SetProxy is timelocked" ); _; } constructor(address dodoApporve) public { _DODO_APPROVE_ = dodoApporve; } function init(address owner, address[] memory proxies) external { initOwner(owner); for(uint i = 0; i < proxies.length; i++) _IS_ALLOWED_PROXY_[proxies[i]] = true; } function unlockAddProxy(address newDodoProxy) public onlyOwner { _TIMELOCK_ = block.timestamp + _TIMELOCK_DURATION_; _PENDING_ADD_DODO_PROXY_ = newDodoProxy; } function lockAddProxy() public onlyOwner { _PENDING_ADD_DODO_PROXY_ = address(0); _TIMELOCK_ = 0; } function addDODOProxy() external onlyOwner notLocked() { _IS_ALLOWED_PROXY_[_PENDING_ADD_DODO_PROXY_] = true; lockAddProxy(); } function removeDODOProxy (address oldDodoProxy) public onlyOwner { _IS_ALLOWED_PROXY_[oldDodoProxy] = false; } function claimTokens( address token, address who, address dest, uint256 amount ) external { require(_IS_ALLOWED_PROXY_[msg.sender], "DODOApproveProxy:Access restricted"); IDODOApprove(_DODO_APPROVE_).claimTokens( token, who, dest, amount ); } function isAllowedProxy(address _proxy) external view returns (bool) { return _IS_ALLOWED_PROXY_[_proxy]; } } // File: contracts/intf/IERC20.sol /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function name() external view returns (string memory); function symbol() external view returns (string memory); /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount ) external returns (bool); } // File: contracts/intf/IWETH.sol interface IWETH { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address src, address dst, uint256 wad ) external returns (bool); function deposit() external payable; function withdraw(uint256 wad) external; } // File: contracts/lib/SafeMath.sol /** * @title SafeMath * @author DODO Breeder * * @notice Math operations with safety checks that revert on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "MUL_ERROR"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "DIVIDING_ERROR"); return a / b; } function divCeil(uint256 a, uint256 b) internal pure returns (uint256) { uint256 quotient = div(a, b); uint256 remainder = a - quotient * b; if (remainder > 0) { return quotient + 1; } else { return quotient; } } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SUB_ERROR"); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "ADD_ERROR"); return c; } function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = x / 2 + 1; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } } // File: contracts/lib/SafeERC20.sol /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: contracts/SmartRoute/lib/UniversalERC20.sol library UniversalERC20 { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 private constant ETH_ADDRESS = IERC20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); function universalTransfer( IERC20 token, address payable to, uint256 amount ) internal { if (amount > 0) { if (isETH(token)) { to.transfer(amount); } else { token.safeTransfer(to, amount); } } } function universalApproveMax( IERC20 token, address to, uint256 amount ) internal { uint256 allowance = token.allowance(address(this), to); if (allowance < amount) { if (allowance > 0) { token.safeApprove(to, 0); } token.safeApprove(to, uint256(-1)); } } function universalBalanceOf(IERC20 token, address who) internal view returns (uint256) { if (isETH(token)) { return who.balance; } else { return token.balanceOf(who); } } function tokenBalanceOf(IERC20 token, address who) internal view returns (uint256) { return token.balanceOf(who); } function isETH(IERC20 token) internal pure returns (bool) { return token == ETH_ADDRESS; } } // File: contracts/SmartRoute/intf/IDODOAdapter.sol interface IDODOAdapter { function sellBase(address to, address pool, bytes memory data) external; function sellQuote(address to, address pool, bytes memory data) external; } // File: contracts/SmartRoute/proxies/DODORouteProxy.sol /** * @title DODORouteProxy * @author DODO Breeder * * @notice Entrance of Split trading in DODO platform */ contract DODORouteProxy { using SafeMath for uint256; using UniversalERC20 for IERC20; // ============ Storage ============ address constant _ETH_ADDRESS_ = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; address public immutable _WETH_; address public immutable _DODO_APPROVE_PROXY_; struct PoolInfo { uint256 direction; uint256 poolEdition; uint256 weight; address pool; address adapter; bytes moreInfo; } // ============ Events ============ event OrderHistory( address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount ); // ============ Modifiers ============ modifier judgeExpired(uint256 deadLine) { require(deadLine >= block.timestamp, "DODORouteProxy: EXPIRED"); _; } fallback() external payable {} receive() external payable {} constructor ( address payable weth, address dodoApproveProxy ) public { _WETH_ = weth; _DODO_APPROVE_PROXY_ = dodoApproveProxy; } function mixSwap( address fromToken, address toToken, uint256 fromTokenAmount, uint256 minReturnAmount, address[] memory mixAdapters, address[] memory mixPairs, address[] memory assetTo, uint256 directions, bytes[] memory moreInfos, uint256 deadLine ) external payable judgeExpired(deadLine) returns (uint256 returnAmount) { require(mixPairs.length > 0, "DODORouteProxy: PAIRS_EMPTY"); require(mixPairs.length == mixAdapters.length, "DODORouteProxy: PAIR_ADAPTER_NOT_MATCH"); require(mixPairs.length == assetTo.length - 1, "DODORouteProxy: PAIR_ASSETTO_NOT_MATCH"); require(minReturnAmount > 0, "DODORouteProxy: RETURN_AMOUNT_ZERO"); address _fromToken = fromToken; address _toToken = toToken; uint256 _fromTokenAmount = fromTokenAmount; uint256 toTokenOriginBalance = IERC20(_toToken).universalBalanceOf(msg.sender); _deposit(msg.sender, assetTo[0], _fromToken, _fromTokenAmount, _fromToken == _ETH_ADDRESS_); for (uint256 i = 0; i < mixPairs.length; i++) { if (directions & 1 == 0) { IDODOAdapter(mixAdapters[i]).sellBase(assetTo[i + 1],mixPairs[i], moreInfos[i]); } else { IDODOAdapter(mixAdapters[i]).sellQuote(assetTo[i + 1],mixPairs[i], moreInfos[i]); } directions = directions >> 1; } if(_toToken == _ETH_ADDRESS_) { returnAmount = IWETH(_WETH_).balanceOf(address(this)); IWETH(_WETH_).withdraw(returnAmount); msg.sender.transfer(returnAmount); }else { returnAmount = IERC20(_toToken).tokenBalanceOf(msg.sender).sub(toTokenOriginBalance); } require(returnAmount >= minReturnAmount, "DODORouteProxy: Return amount is not enough"); emit OrderHistory( _fromToken, _toToken, msg.sender, _fromTokenAmount, returnAmount ); } function dodoMutliSwap( uint256 fromTokenAmount, uint256 minReturnAmount, uint256[] memory totalWeight, uint256[] memory splitNumber, address[] memory midToken, address[] memory assetFrom, bytes[] memory sequence, uint256 deadLine ) external payable judgeExpired(deadLine) returns (uint256 returnAmount) { require(assetFrom.length == splitNumber.length, 'DODORouteProxy: PAIR_ASSETTO_NOT_MATCH'); require(minReturnAmount > 0, "DODORouteProxy: RETURN_AMOUNT_ZERO"); uint256 _fromTokenAmount = fromTokenAmount; address fromToken = midToken[0]; address toToken = midToken[midToken.length - 1]; uint256 toTokenOriginBalance = IERC20(toToken).universalBalanceOf(msg.sender); _deposit(msg.sender, assetFrom[0], fromToken, _fromTokenAmount, fromToken == _ETH_ADDRESS_); _multiSwap(totalWeight, midToken, splitNumber, sequence, assetFrom); if(toToken == _ETH_ADDRESS_) { returnAmount = IWETH(_WETH_).balanceOf(address(this)); IWETH(_WETH_).withdraw(returnAmount); msg.sender.transfer(returnAmount); }else { returnAmount = IERC20(toToken).tokenBalanceOf(msg.sender).sub(toTokenOriginBalance); } require(returnAmount >= minReturnAmount, "DODORouteProxy: Return amount is not enough"); emit OrderHistory( fromToken, toToken, msg.sender, _fromTokenAmount, returnAmount ); } //====================== internal ======================= function _multiSwap( uint256[] memory totalWeight, address[] memory midToken, uint256[] memory splitNumber, bytes[] memory swapSequence, address[] memory assetFrom ) internal { for(uint256 i = 1; i < splitNumber.length; i++) { // define midtoken address, ETH -> WETH address uint256 curTotalAmount = IERC20(midToken[i]).tokenBalanceOf(assetFrom[i-1]); uint256 curTotalWeight = totalWeight[i-1]; for(uint256 j = splitNumber[i-1]; j < splitNumber[i]; j++) { PoolInfo memory curPoolInfo; { (address pool, address adapter, uint256 mixPara, bytes memory moreInfo) = abi.decode(swapSequence[j], (address, address, uint256, bytes)); curPoolInfo.direction = mixPara >> 17; curPoolInfo.weight = (0xffff & mixPara) >> 9; curPoolInfo.poolEdition = (0xff & mixPara); curPoolInfo.pool = pool; curPoolInfo.adapter = adapter; curPoolInfo.moreInfo = moreInfo; } if(assetFrom[i-1] == address(this)) { uint256 curAmount = curTotalAmount.div(curTotalWeight).mul(curPoolInfo.weight); if(curPoolInfo.poolEdition == 1) { //For using transferFrom pool (like dodoV1, Curve) IERC20(midToken[i]).transfer(curPoolInfo.adapter, curAmount); } else { //For using transfer pool (like dodoV2) IERC20(midToken[i]).transfer(curPoolInfo.pool, curAmount); } } if(curPoolInfo.direction == 0) { IDODOAdapter(curPoolInfo.adapter).sellBase(assetFrom[i], curPoolInfo.pool, curPoolInfo.moreInfo); } else { IDODOAdapter(curPoolInfo.adapter).sellQuote(assetFrom[i], curPoolInfo.pool, curPoolInfo.moreInfo); } } } } function _deposit( address from, address to, address token, uint256 amount, bool isETH ) internal { if (isETH) { if (amount > 0) { IWETH(_WETH_).deposit{value: amount}(); if (to != address(this)) SafeERC20.safeTransfer(IERC20(_WETH_), to, amount); } } else { IDODOApproveProxy(_DODO_APPROVE_PROXY_).claimTokens(token, from, to, amount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"weth","type":"address"},{"internalType":"address","name":"dodoApproveProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"fromToken","type":"address"},{"indexed":false,"internalType":"address","name":"toToken","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"fromAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnAmount","type":"uint256"}],"name":"OrderHistory","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"_DODO_APPROVE_PROXY_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_WETH_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fromTokenAmount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256[]","name":"totalWeight","type":"uint256[]"},{"internalType":"uint256[]","name":"splitNumber","type":"uint256[]"},{"internalType":"address[]","name":"midToken","type":"address[]"},{"internalType":"address[]","name":"assetFrom","type":"address[]"},{"internalType":"bytes[]","name":"sequence","type":"bytes[]"},{"internalType":"uint256","name":"deadLine","type":"uint256"}],"name":"dodoMutliSwap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"fromTokenAmount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"address[]","name":"mixAdapters","type":"address[]"},{"internalType":"address[]","name":"mixPairs","type":"address[]"},{"internalType":"address[]","name":"assetTo","type":"address[]"},{"internalType":"uint256","name":"directions","type":"uint256"},{"internalType":"bytes[]","name":"moreInfos","type":"bytes[]"},{"internalType":"uint256","name":"deadLine","type":"uint256"}],"name":"mixSwap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040523480156200001157600080fd5b5060405162001a7038038062001a70833981016040819052620000349162000053565b6001600160601b0319606092831b8116608052911b1660a052620000aa565b6000806040838503121562000066578182fd5b8251620000738162000091565b6020840151909250620000868162000091565b809150509250929050565b6001600160a01b0381168114620000a757600080fd5b50565b60805160601c60a05160601c61197a620000f6600039806108b55280610a5552508060c152806103c3528061046252806106ea5280610789528061098b5280610a13525061197a6000f3fe6080604052600436106100435760003560e01c80630d4eec8f1461004c5780637617b389146100775780638179178814610097578063eb99be12146100aa5761004a565b3661004a57005b005b34801561005857600080fd5b506100616100bf565b60405161006e9190611540565b60405180910390f35b61008a61008536600461130f565b6100e3565b60405161006e919061188c565b61008a6100a536600461143b565b61059a565b3480156100b657600080fd5b506100616108b3565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000814281101561010f5760405162461bcd60e51b815260040161010690611618565b60405180910390fd5b60008751116101305760405162461bcd60e51b81526004016101069061164f565b87518751146101515760405162461bcd60e51b815260040161010690611686565b60018651038751146101755760405162461bcd60e51b8152600401610106906117d9565b600089116101955760405162461bcd60e51b815260040161010690611774565b8b8b8b60006101b36001600160a01b0384163363ffffffff6108d716565b90506101fe338b6000815181106101c657fe5b6020026020010151868573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316896001600160a01b03161461097d565b60005b8b518110156103865760018a166102c8578c818151811061021e57fe5b60200260200101516001600160a01b03166330e6ae318c836001018151811061024357fe5b60200260200101518e848151811061025757fe5b60200260200101518c858151811061026b57fe5b60200260200101516040518463ffffffff1660e01b8152600401610291939291906115b2565b600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b5050505061037a565b8c81815181106102d457fe5b60200260200101516001600160a01b0316636f7929f28c83600101815181106102f957fe5b60200260200101518e848151811061030d57fe5b60200260200101518c858151811061032157fe5b60200260200101516040518463ffffffff1660e01b8152600401610347939291906115b2565b600060405180830381600087803b15801561036157600080fd5b505af1158015610375573d6000803e3d6000fd5b505050505b6001998a1c9901610201565b506001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156104fc576040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906103f8903090600401611540565b60206040518083038186803b15801561041057600080fd5b505afa158015610424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104489190611423565b604051632e1a7d4d60e01b81529096506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d9061049790899060040161188c565b600060405180830381600087803b1580156104b157600080fd5b505af11580156104c5573d6000803e3d6000fd5b505060405133925088156108fc02915088906000818181858888f193505050501580156104f6573d6000803e3d6000fd5b50610528565b610525816105196001600160a01b0386163363ffffffff610aca16565b9063ffffffff610af916565b95505b8c8610156105485760405162461bcd60e51b8152600401610106906116cc565b7f92ceb067a9883c85aba061e46b9edf505a0d6e81927c4b966ebed543a5221787848433858a60405161057f959493929190611554565b60405180910390a150505050509a9950505050505050505050565b600081428110156105bd5760405162461bcd60e51b815260040161010690611618565b86518551146105de5760405162461bcd60e51b8152600401610106906117d9565b600089116105fe5760405162461bcd60e51b815260040161010690611774565b60008a905060008760008151811061061257fe5b6020026020010151905060008860018a51038151811061062e57fe5b60200260200101519050600061065633836001600160a01b03166108d790919063ffffffff16565b90506106a1338a60008151811061066957fe5b6020026020010151858773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316886001600160a01b03161461097d565b6106ae8c8b8d8b8d610b21565b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610823576040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061071f903090600401611540565b60206040518083038186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190611423565b604051632e1a7d4d60e01b81529096506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906107be90899060040161188c565b600060405180830381600087803b1580156107d857600080fd5b505af11580156107ec573d6000803e3d6000fd5b505060405133925088156108fc02915088906000818181858888f1935050505015801561081d573d6000803e3d6000fd5b50610843565b610840816105196001600160a01b0385163363ffffffff610aca16565b95505b8c8610156108635760405162461bcd60e51b8152600401610106906116cc565b7f92ceb067a9883c85aba061e46b9edf505a0d6e81927c4b966ebed543a5221787838333878a60405161089a959493929190611554565b60405180910390a1505050505098975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006108e283610f00565b156108f857506001600160a01b03811631610977565b6040516370a0823160e01b81526001600160a01b038416906370a0823190610924908590600401611540565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190611423565b90505b92915050565b8015610a3e578115610a39577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156109e457600080fd5b505af11580156109f8573d6000803e3d6000fd5b505050506001600160a01b03851630149050610a3957610a397f00000000000000000000000000000000000000000000000000000000000000008584610f25565b610ac3565b60405163052f523360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630a5ea46690610a90908690899089908890600401611588565b600060405180830381600087803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b505050505b5050505050565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190610924908590600401611540565b600082821115610b1b5760405162461bcd60e51b8152600401610106906117b6565b50900390565b60015b8351811015610ef8576000610b74836001840381518110610b4157fe5b6020026020010151878481518110610b5557fe5b60200260200101516001600160a01b0316610aca90919063ffffffff16565b90506000876001840381518110610b8757fe5b602002602001015190506000866001850381518110610ba257fe5b602002602001015190505b868481518110610bb957fe5b6020026020010151811015610eed57610bd06110a9565b600080600060608a8681518110610be357fe5b6020026020010151806020019051810190610bfe9190611268565b601182901c8952607f600983901c1660408a015260ff90911660208901526001600160a01b0392831660608901529116608087015260a0860152505087513092508891506000198801908110610c5057fe5b60200260200101516001600160a01b03161415610dd6576040810151600090610c8f90610c83878763ffffffff610f8016565b9063ffffffff610fb216565b9050816020015160011415610d3b57898681518110610caa57fe5b60200260200101516001600160a01b031663a9059cbb8360800151836040518363ffffffff1660e01b8152600401610ce39291906115ff565b602060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190611403565b50610dd4565b898681518110610d4757fe5b60200260200101516001600160a01b031663a9059cbb8360600151836040518363ffffffff1660e01b8152600401610d809291906115ff565b602060405180830381600087803b158015610d9a57600080fd5b505af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd29190611403565b505b505b8051610e625780608001516001600160a01b03166330e6ae31878781518110610dfb57fe5b602002602001015183606001518460a001516040518463ffffffff1660e01b8152600401610e2b939291906115b2565b600060405180830381600087803b158015610e4557600080fd5b505af1158015610e59573d6000803e3d6000fd5b50505050610ee4565b80608001516001600160a01b0316636f7929f2878781518110610e8157fe5b602002602001015183606001518460a001516040518463ffffffff1660e01b8152600401610eb1939291906115b2565b600060405180830381600087803b158015610ecb57600080fd5b505af1158015610edf573d6000803e3d6000fd5b505050505b50600101610bad565b505050600101610b24565b505050505050565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14919050565b610f7b8363a9059cbb60e01b8484604051602401610f449291906115ff565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610fec565b505050565b6000808211610fa15760405162461bcd60e51b81526004016101069061174c565b818381610faa57fe5b049392505050565b600082610fc157506000610977565b82820282848281610fce57fe5b04146109745760405162461bcd60e51b815260040161010690611869565b60006060836001600160a01b0316836040516110089190611524565b6000604051808303816000865af19150503d8060008114611045576040519150601f19603f3d011682016040523d82523d6000602084013e61104a565b606091505b50915091508161106c5760405162461bcd60e51b815260040161010690611717565b8051156110a357808060200190518101906110879190611403565b6110a35760405162461bcd60e51b81526004016101069061181f565b50505050565b6040518060c0016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001606081525090565b80356109778161192c565b600082601f83011261110c578081fd5b813561111f61111a826118bc565b611895565b81815291506020808301908481018184028601820187101561114057600080fd5b60005b848110156111685781356111568161192c565b84529282019290820190600101611143565b505050505092915050565b600082601f830112611183578081fd5b813561119161111a826118bc565b818152915060208083019084810160005b84811015611168578135870188603f8201126111bd57600080fd5b838101356111cd61111a826118dc565b81815260408b818486010111156111e357600080fd5b828185018884013750600091810186019190915285525092820192908201906001016111a2565b600082601f83011261121a578081fd5b813561122861111a826118bc565b81815291506020808301908481018184028601820187101561124957600080fd5b60005b848110156111685781358452928201929082019060010161124c565b6000806000806080858703121561127d578384fd5b84516112888161192c565b60208601519094506112998161192c565b60408601516060870151919450925067ffffffffffffffff8111156112bc578182fd5b80860187601f8201126112cd578283fd5b805191506112dd61111a836118dc565b8281528860208484010111156112f1578384fd5b611302836020830160208501611900565b9598949750929550505050565b6000806000806000806000806000806101408b8d03121561132e578586fd5b6113388c8c6110f1565b99506113478c60208d016110f1565b985060408b0135975060608b0135965060808b013567ffffffffffffffff80821115611371578788fd5b61137d8e838f016110fc565b975060a08d0135915080821115611392578687fd5b61139e8e838f016110fc565b965060c08d01359150808211156113b3578586fd5b6113bf8e838f016110fc565b955060e08d013594506101008d01359150808211156113dc578384fd5b506113e98d828e01611173565b9250506101208b013590509295989b9194979a5092959850565b600060208284031215611414578081fd5b81518015158114610974578182fd5b600060208284031215611434578081fd5b5051919050565b600080600080600080600080610100898b031215611457578384fd5b8835975060208901359650604089013567ffffffffffffffff8082111561147c578586fd5b6114888c838d0161120a565b975060608b013591508082111561149d578586fd5b6114a98c838d0161120a565b965060808b01359150808211156114be578586fd5b6114ca8c838d016110fc565b955060a08b01359150808211156114df578485fd5b6114eb8c838d016110fc565b945060c08b0135915080821115611500578384fd5b5061150d8b828c01611173565b92505060e089013590509295985092959890939650565b60008251611536818460208701611900565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b600060018060a01b0380861683528085166020840152506060604083015282518060608401526115e9816080850160208701611900565b601f01601f191691909101608001949350505050565b6001600160a01b03929092168252602082015260400190565b60208082526017908201527f444f444f526f75746550726f78793a2045585049524544000000000000000000604082015260600190565b6020808252601b908201527f444f444f526f75746550726f78793a2050414952535f454d5054590000000000604082015260600190565b60208082526026908201527f444f444f526f75746550726f78793a20504149525f414441505445525f4e4f546040820152650be9a82a886960d31b606082015260800190565b6020808252602b908201527f444f444f526f75746550726f78793a2052657475726e20616d6f756e7420697360408201526a040dcdee840cadcdeeaced60ab1b606082015260800190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252600e908201526d2224ab24a224a723afa2a92927a960911b604082015260600190565b60208082526022908201527f444f444f526f75746550726f78793a2052455455524e5f414d4f554e545f5a45604082015261524f60f01b606082015260800190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b60208082526026908201527f444f444f526f75746550726f78793a20504149525f4153534554544f5f4e4f546040820152650be9a82a886960d31b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526009908201526826aaa62fa2a92927a960b91b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff811182821017156118b457600080fd5b604052919050565b600067ffffffffffffffff8211156118d2578081fd5b5060209081020190565b600067ffffffffffffffff8211156118f2578081fd5b50601f01601f191660200190565b60005b8381101561191b578181015183820152602001611903565b838111156110a35750506000910152565b6001600160a01b038116811461194157600080fd5b5056fea2646970667358221220dbbd9888adbcc1054e6920d6da5017b9335680caa7689de59140cc96322b51dc64736f6c634300060900330000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf127000000000000000000000000001feea29da5ae41b0b5f6b10b93ee34752ef80d7
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf127000000000000000000000000001feea29da5ae41b0b5f6b10b93ee34752ef80d7
-----Decoded View---------------
Arg [0] : weth (address): 0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [1] : dodoApproveProxy (address): 0x01feea29da5ae41b0b5f6b10b93ee34752ef80d7
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [1] : 00000000000000000000000001feea29da5ae41b0b5f6b10b93ee34752ef80d7
Deployed ByteCode Sourcemap
13743:7692:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13973:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14917:2111;;;;;;;;;:::i;:::-;;;;;;;;17036:1626;;;;;;;;;:::i;14011:45::-;;;;;;;;;;;;;:::i;13973:31::-;;;:::o;14917:2111::-;15313:20;15294:8;14588:15;14576:8;:27;;14568:63;;;;-1:-1:-1;;;14568:63:0;;;;;;;;;;;;;;;;;15372:1:::1;15354:8;:15;:19;15346:59;;;;-1:-1:-1::0;;;15346:59:0::1;;;;;;;;;15443:11;:18;15424:8;:15;:37;15416:88;;;;-1:-1:-1::0;;;15416:88:0::1;;;;;;;;;15559:1;15542:7;:14;:18;15523:8;:15;:37;15515:88;;;;-1:-1:-1::0;;;15515:88:0::1;;;;;;;;;15640:1;15622:15;:19;15614:66;;;;-1:-1:-1::0;;;15614:66:0::1;;;;;;;;;15714:9:::0;15753:7;15798:15;15693:18:::1;15865:47;-1:-1:-1::0;;;;;15865:35:0;::::1;15901:10;15865:47;:35;:47;:::i;:::-;15834:78;;15933:91;15942:10;15954:7;15962:1;15954:10;;;;;;;;;;;;;;15966;15978:16;13924:42;-1:-1:-1::0;;;;;15996:27:0::1;:10;-1:-1:-1::0;;;;;15996:27:0::1;;15933:8;:91::i;:::-;16042:9;16037:375;16061:8;:15;16057:1;:19;16037:375;;;16115:1;16102:14:::0;::::1;16098:260;;16155:11;16167:1;16155:14;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16142:37:0::1;;16180:7;16188:1;16192;16188:5;16180:14;;;;;;;;;;;;;;16195:8;16204:1;16195:11;;;;;;;;;;;;;;16208:9;16218:1;16208:12;;;;;;;;;;;;;;16142:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16098:260;;;16275:11;16287:1;16275:14;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16262:38:0::1;;16301:7;16309:1;16313;16309:5;16301:14;;;;;;;;;;;;;;16316:8;16325:1;16316:11;;;;;;;;;;;;;;16329:9;16339:1;16329:12;;;;;;;;;;;;;;16262:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16098:260;16399:1;16385:15:::0;;::::1;::::0;16078:3:::1;16037:375;;;-1:-1:-1::0;;;;;;16427:25:0;::::1;13924:42;16427:25;16424:325;;;16484:38;::::0;-1:-1:-1;;;16484:38:0;;-1:-1:-1;;;;;16490:6:0::1;16484:23;::::0;::::1;::::0;:38:::1;::::0;16516:4:::1;::::0;16484:38:::1;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16537:36;::::0;-1:-1:-1;;;16537:36:0;;16469:53;;-1:-1:-1;;;;;;16543:6:0::1;16537:22;::::0;::::1;::::0;:36:::1;::::0;16469:53;;16537:36:::1;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16588:33:0::1;::::0;:10:::1;::::0;-1:-1:-1;16588:33:0;::::1;;;::::0;-1:-1:-1;16608:12:0;;16588:33:::1;::::0;;;16608:12;16588:10;:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16424:325;;;16668:69;16716:20:::0;16668:43:::1;-1:-1:-1::0;;;;;16668:31:0;::::1;16700:10;16668:43;:31;:43;:::i;:::-;:47:::0;:69:::1;:47;:69;:::i;:::-;16653:84;;16424:325;16785:15;16769:12;:31;;16761:87;;;;-1:-1:-1::0;;;16761:87:0::1;;;;;;;;;16866:154;16893:10;16918:8;16941:10;16966:16;16997:12;16866:154;;;;;;;;;;;;;;;;;;;14642:1;;;;14917:2111:::0;;;;;;;;;;;;;:::o;17036:1626::-;17395:20;17376:8;14588:15;14576:8;:27;;14568:63;;;;-1:-1:-1;;;14568:63:0;;;;;;;;;17456:11:::1;:18;17436:9;:16;:38;17428:89;;;;-1:-1:-1::0;;;17428:89:0::1;;;;;;;;;17562:1;17544:15;:19;17536:66;;;;-1:-1:-1::0;;;17536:66:0::1;;;;;;;;;17623:24;17650:15;17623:42;;17676:17;17696:8;17705:1;17696:11;;;;;;;;;;;;;;17676:31;;17718:15;17736:8;17763:1;17745:8;:15;:19;17736:29;;;;;;;;;;;;;;17718:47;;17778:28;17809:46;17844:10;17816:7;-1:-1:-1::0;;;;;17809:34:0::1;;;:46;;;;:::i;:::-;17778:77;;17866:91;17875:10;17887:9;17897:1;17887:12;;;;;;;;;;;;;;17901:9;17912:16;13924:42;-1:-1:-1::0;;;;;17930:26:0::1;:9;-1:-1:-1::0;;;;;17930:26:0::1;;17866:8;:91::i;:::-;17970:67;17981:11;17994:8;18004:11;18017:8;18027:9;17970:10;:67::i;:::-;-1:-1:-1::0;;;;;18057:24:0;::::1;13924:42;18057:24;18054:323;;;18113:38;::::0;-1:-1:-1;;;18113:38:0;;-1:-1:-1;;;;;18119:6:0::1;18113:23;::::0;::::1;::::0;:38:::1;::::0;18145:4:::1;::::0;18113:38:::1;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18166:36;::::0;-1:-1:-1;;;18166:36:0;;18098:53;;-1:-1:-1;;;;;;18172:6:0::1;18166:22;::::0;::::1;::::0;:36:::1;::::0;18098:53;;18166:36:::1;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18217:33:0::1;::::0;:10:::1;::::0;-1:-1:-1;18217:33:0;::::1;;;::::0;-1:-1:-1;18237:12:0;;18217:33:::1;::::0;;;18237:12;18217:10;:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18054:323;;;18297:68;18344:20:::0;18297:42:::1;-1:-1:-1::0;;;;;18297:30:0;::::1;18328:10;18297:42;:30;:42;:::i;:68::-;18282:83;;18054:323;18413:15;18397:12;:31;;18389:87;;;;-1:-1:-1::0;;;18389:87:0::1;;;;;;;;;18498:152;18525:9;18549:7;18571:10;18596:16;18627:12;18498:152;;;;;;;;;;;;;;;;;;;14642:1;;;;17036:1626:::0;;;;;;;;;;;:::o;14011:45::-;;;:::o;12820:228::-;12898:7;12922:12;12928:5;12922;:12::i;:::-;12918:123;;;-1:-1:-1;;;;;;12958:11:0;;;12951:18;;12918:123;13009:20;;-1:-1:-1;;;13009:20:0;;-1:-1:-1;;;;;13009:15:0;;;;;:20;;13025:3;;13009:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13002:27;;12918:123;12820:228;;;;:::o;20937:495::-;21100:5;21096:329;;;21126:10;;21122:183;;21163:6;-1:-1:-1;;;;;21157:21:0;;21186:6;21157:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;21218:19:0;;21232:4;21218:19;;-1:-1:-1;21214:75:0;;21239:50;21269:6;21278:2;21282:6;21239:22;:50::i;:::-;21096:329;;;21337:76;;-1:-1:-1;;;21337:76:0;;-1:-1:-1;;;;;21355:20:0;21337:51;;;;:76;;21389:5;;21396:4;;21402:2;;21406:6;;21337:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21096:329;20937:495;;;;;:::o;13056:129::-;13157:20;;-1:-1:-1;;;13157:20:0;;13130:7;;-1:-1:-1;;;;;13157:15:0;;;;;:20;;13173:3;;13157:20;;;;8134:137;8192:7;8225:1;8220;:6;;8212:28;;;;-1:-1:-1;;;8212:28:0;;;;;;;;;-1:-1:-1;8258:5:0;;;8134:137::o;18741:2188::-;18994:1;18978:1944;19001:11;:18;18997:1;:22;18978:1944;;;19103:22;19128:50;19163:9;19175:1;19173;:3;19163:14;;;;;;;;;;;;;;19135:8;19144:1;19135:11;;;;;;;;;;;;;;-1:-1:-1;;;;;19128:34:0;;;:50;;;;:::i;:::-;19103:75;;19193:22;19218:11;19232:1;19230;:3;19218:16;;;;;;;;;;;;;;19193:41;;19267:9;19279:11;19293:1;19291;:3;19279:16;;;;;;;;;;;;;;19267:28;;19263:1648;19301:11;19313:1;19301:14;;;;;;;;;;;;;;19297:1;:18;19263:1648;;;19341:27;;:::i;:::-;19411:12;19425:15;19442;19459:21;19495:12;19508:1;19495:15;;;;;;;;;;;;;;19484:63;;;;;;;;;;;;;;19623:2;19612:13;;;19588:37;;19669:23;19691:1;19669:23;;;;19648:18;;;:44;19742:4;:14;;;19715:23;;;:42;-1:-1:-1;;;;;19780:23:0;;;:16;;;:23;19826:29;;:19;;;:29;19878:20;;;:31;-1:-1:-1;;19952:14:0;;19978:4;;-1:-1:-1;19952:9:0;;-1:-1:-1;;;19962:3:0;;;19952:14;;;;;;;;;;;;-1:-1:-1;;;;;19952:31:0;;19949:595;;;20067:18;;;;20008:17;;20028:58;;:34;:14;20047;20028:34;:18;:34;:::i;:::-;:38;:58;:38;:58;:::i;:::-;20008:78;;20126:11;:23;;;20153:1;20126:28;20123:402;;;20269:8;20278:1;20269:11;;;;;;;;;;;;;;-1:-1:-1;;;;;20262:28:0;;20291:11;:19;;;20312:9;20262:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20123:402;;;20451:8;20460:1;20451:11;;;;;;;;;;;;;;-1:-1:-1;;;;;20444:28:0;;20473:11;:16;;;20491:9;20444:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20123:402;19949:595;;20583:21;;20580:316;;20647:11;:19;;;-1:-1:-1;;;;;20634:42:0;;20677:9;20687:1;20677:12;;;;;;;;;;;;;;20691:11;:16;;;20709:11;:20;;;20634:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20580:316;;;20792:11;:19;;;-1:-1:-1;;;;;20779:43:0;;20823:9;20833:1;20823:12;;;;;;;;;;;;;;20837:11;:16;;;20855:11;:20;;;20779:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20580:316;-1:-1:-1;19317:3:0;;19263:1648;;;-1:-1:-1;;;19021:3:0;;18978:1944;;;;18741:2188;;;;;:::o;13193:104::-;-1:-1:-1;;;;;13269:20:0;;12055:42;13269:20;13193:104;;;:::o;9226:211::-;9343:86;9363:5;9393:23;;;9418:2;9422:5;9370:58;;;;;;;;;;;;;;-1:-1:-1;;9370:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;9370:58:0;-1:-1:-1;;;;;;9370:58:0;;;;;;;;;;9343:19;:86::i;:::-;9226:211;;;:::o;7689:141::-;7747:7;7779:1;7775;:5;7767:32;;;;-1:-1:-1;;;7767:32:0;;;;;;;;;7821:1;7817;:5;;;;;;;7689:141;-1:-1:-1;;;7689:141:0:o;7455:226::-;7513:7;7537:6;7533:47;;-1:-1:-1;7567:1:0;7560:8;;7533:47;7604:5;;;7608:1;7604;:5;:1;7628:5;;;;;:10;7620:32;;;;-1:-1:-1;;;7620:32:0;;;;;;;;10799:1046;11459:12;11473:23;11508:5;-1:-1:-1;;;;;11500:19:0;11520:4;11500:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11458:67;;;;11544:7;11536:52;;;;-1:-1:-1;;;11536:52:0;;;;;;;;;11605:17;;:21;11601:237;;11760:10;11749:30;;;;;;;;;;;;;;11741:85;;;;-1:-1:-1;;;11741:85:0;;;;;;;;;10799:1046;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;;317:707;;434:3;427:4;419:6;415:17;411:27;401:2;;-1:-1;;442:12;401:2;489:6;476:20;511:80;526:64;583:6;526:64;;;511:80;;;619:21;;;502:89;-1:-1;663:4;676:14;;;;651:17;;;765;;;756:27;;;;753:36;-1:-1;750:2;;;802:1;;792:12;750:2;827:1;812:206;837:6;834:1;831:13;812:206;;;85:6;72:20;97:33;124:5;97:33;;;905:50;;969:14;;;;997;;;;859:1;852:9;812:206;;;816:14;;;;;394:630;;;;;1048:705;;1174:3;1167:4;1159:6;1155:17;1151:27;1141:2;;-1:-1;;1182:12;1141:2;1229:6;1216:20;1251:89;1266:73;1332:6;1266:73;;1251:89;1368:21;;;1242:98;-1:-1;1412:4;1425:14;;;;1400:17;;;1520:1;1505:242;1530:6;1527:1;1524:13;1505:242;;;1613:3;1600:17;1404:6;1588:30;2731:3;2712:17;1588:30;2712:17;2708:27;2698:2;;1520:1;;2739:12;2698:2;1412:4;1588:30;;2773:20;2808:64;2823:48;2864:6;2823:48;;2808:64;2892:6;2885:5;2878:21;2916:17;2996:3;2916:17;2987:6;1588:30;2978:16;;2975:25;2972:2;;;1520:1;;3003:12;2972:2;24794:6;2916:17;1588:30;2916:17;1412:4;2954:5;2950:16;24771:30;-1:-1;1520:1;24832:16;;;;;24825:27;;;;1625:59;;-1:-1;1698:14;;;;1726;;;;1552:1;1545:9;1505:242;;1779:707;;1896:3;1889:4;1881:6;1877:17;1873:27;1863:2;;-1:-1;;1904:12;1863:2;1951:6;1938:20;1973:80;1988:64;2045:6;1988:64;;1973:80;2081:21;;;1964:89;-1:-1;2125:4;2138:14;;;;2113:17;;;2227;;;2218:27;;;;2215:36;-1:-1;2212:2;;;2264:1;;2254:12;2212:2;2289:1;2274:206;2299:6;2296:1;2293:13;2274:206;;;3596:20;;2367:50;;2431:14;;;;2459;;;;2321:1;2314:9;2274:206;;3807:801;;;;;3998:3;3986:9;3977:7;3973:23;3969:33;3966:2;;;-1:-1;;4005:12;3966:2;234:6;228:13;246:41;281:5;246:41;;;4176:2;4234:22;;228:13;4057:82;;-1:-1;246:41;228:13;246:41;;;4303:2;4353:22;;3744:13;4443:2;4428:18;;4422:25;4184:82;;-1:-1;3744:13;-1:-1;4467:18;4456:30;;4453:2;;;-1:-1;;4489:12;4453:2;4575:6;4564:9;4560:22;3191:3;3184:4;3176:6;3172:17;3168:27;3158:2;;-1:-1;;3199:12;3158:2;3239:6;3233:13;3219:27;;3261:64;3276:48;3317:6;3276:48;;3261:64;3345:6;3338:5;3331:21;3449:3;4176:2;3440:6;3373;3431:16;;3428:25;3425:2;;;-1:-1;;3456:12;3425:2;3476:39;3508:6;4176:2;3407:5;3403:16;4176:2;3373:6;3369:17;3476:39;;;3960:648;;;;-1:-1;3960:648;;-1:-1;;;;3960:648;4615:1935;;;;;;;;;;;4981:3;4969:9;4960:7;4956:23;4952:33;4949:2;;;-1:-1;;4988:12;4949:2;5050:53;5095:7;5071:22;5050:53;;;5040:63;;5158:53;5203:7;5140:2;5183:9;5179:22;5158:53;;;5148:63;;5248:2;5291:9;5287:22;3596:20;5256:63;;5356:2;5399:9;5395:22;3596:20;5364:63;;5492:3;5481:9;5477:19;5464:33;5517:18;;5509:6;5506:30;5503:2;;;-1:-1;;5539:12;5503:2;5569:78;5639:7;5630:6;5619:9;5615:22;5569:78;;;5559:88;;5712:3;5701:9;5697:19;5684:33;5670:47;;5517:18;5729:6;5726:30;5723:2;;;-1:-1;;5759:12;5723:2;5789:78;5859:7;5850:6;5839:9;5835:22;5789:78;;;5779:88;;5932:3;5921:9;5917:19;5904:33;5890:47;;5517:18;5949:6;5946:30;5943:2;;;-1:-1;;5979:12;5943:2;6009:78;6079:7;6070:6;6059:9;6055:22;6009:78;;;5999:88;;6124:3;6168:9;6164:22;3596:20;6133:63;;6261:3;6250:9;6246:19;6233:33;6219:47;;5517:18;6278:6;6275:30;6272:2;;;-1:-1;;6308:12;6272:2;;6338:87;6417:7;6408:6;6397:9;6393:22;6338:87;;;6328:97;;;6462:3;6506:9;6502:22;3596:20;6471:63;;4943:1607;;;;;;;;;;;;;;6557:257;;6669:2;6657:9;6648:7;6644:23;6640:32;6637:2;;;-1:-1;;6675:12;6637:2;2575:6;2569:13;25593:5;24100:13;24093:21;25571:5;25568:32;25558:2;;-1:-1;;25604:12;6821:263;;6936:2;6924:9;6915:7;6911:23;6907:32;6904:2;;;-1:-1;;6942:12;6904:2;-1:-1;3744:13;;6898:186;-1:-1;6898:186;7091:1819;;;;;;;;;7448:3;7436:9;7427:7;7423:23;7419:33;7416:2;;;-1:-1;;7455:12;7416:2;7538:22;3596:20;7507:63;;7607:2;7650:9;7646:22;3596:20;7615:63;;7743:2;7732:9;7728:18;7715:32;7767:18;;7759:6;7756:30;7753:2;;;-1:-1;;7789:12;7753:2;7819:78;7889:7;7880:6;7869:9;7865:22;7819:78;;;7809:88;;7962:2;7951:9;7947:18;7934:32;7920:46;;7767:18;7978:6;7975:30;7972:2;;;-1:-1;;8008:12;7972:2;8038:78;8108:7;8099:6;8088:9;8084:22;8038:78;;;8028:88;;8181:3;8170:9;8166:19;8153:33;8139:47;;7767:18;8198:6;8195:30;8192:2;;;-1:-1;;8228:12;8192:2;8258:78;8328:7;8319:6;8308:9;8304:22;8258:78;;;8248:88;;8401:3;8390:9;8386:19;8373:33;8359:47;;7767:18;8418:6;8415:30;8412:2;;;-1:-1;;8448:12;8412:2;8478:78;8548:7;8539:6;8528:9;8524:22;8478:78;;;8468:88;;8621:3;8610:9;8606:19;8593:33;8579:47;;7767:18;8638:6;8635:30;8632:2;;;-1:-1;;8668:12;8632:2;;8698:87;8777:7;8768:6;8757:9;8753:22;8698:87;;;8688:97;;;8822:3;8866:9;8862:22;3596:20;8831:63;;7410:1500;;;;;;;;;;;;13910:271;;9696:5;23293:12;9807:52;9852:6;9847:3;9840:4;9833:5;9829:16;9807:52;;;9871:16;;;;;14044:137;-1:-1;;14044:137;14188:222;-1:-1;;;;;24188:54;;;;9137:37;;14315:2;14300:18;;14286:124;14662:684;-1:-1;;;;;24188:54;;;9137:37;;24188:54;;;15074:2;15059:18;;9137:37;24188:54;;;;15165:2;15150:18;;8996:58;15248:2;15233:18;;13861:37;;;;15331:3;15316:19;;13861:37;;;;14909:3;14894:19;;14880:466;15353:556;-1:-1;;;;;24188:54;;;9137:37;;24188:54;;;15729:2;15714:18;;9137:37;24188:54;;15812:2;15797:18;;9137:37;15895:2;15880:18;;13861:37;;;;15564:3;15549:19;;15535:374;15916:528;;4467:18;;24199:42;;;;24192:5;24188:54;9144:3;9137:37;24199:42;24192:5;24188:54;16281:2;16270:9;16266:18;9137:37;;16117:2;16318;16307:9;16303:18;16296:48;9328:5;23293:12;23449:6;16117:2;16106:9;16102:18;23437:19;9421:52;9466:6;23477:14;16106:9;23477:14;16281:2;9447:5;9443:16;9421:52;;;25227:7;25211:14;-1:-1;;25207:28;9485:39;;;;23477:14;9485:39;;16088:356;-1:-1;;;;16088:356;16451:333;-1:-1;;;;;24188:54;;;;9137:37;;16770:2;16755:18;;13861:37;16606:2;16591:18;;16577:207;16791:416;16991:2;17005:47;;;10124:2;16976:18;;;23437:19;10160:25;23477:14;;;10140:46;10205:12;;;16962:245;17214:416;17414:2;17428:47;;;10456:2;17399:18;;;23437:19;10492:29;23477:14;;;10472:50;10541:12;;;17385:245;17637:416;17837:2;17851:47;;;10792:2;17822:18;;;23437:19;10828:34;23477:14;;;10808:55;-1:-1;;;10883:12;;;10876:30;10925:12;;;17808:245;18060:416;18260:2;18274:47;;;11176:2;18245:18;;;23437:19;11212:34;23477:14;;;11192:55;-1:-1;;;11267:12;;;11260:35;11314:12;;;18231:245;18483:416;18683:2;18697:47;;;18668:18;;;23437:19;11601:34;23477:14;;;11581:55;11655:12;;;18654:245;18906:416;19106:2;19120:47;;;11906:2;19091:18;;;23437:19;-1:-1;;;23477:14;;;11922:37;11978:12;;;19077:245;19329:416;19529:2;19543:47;;;12229:2;19514:18;;;23437:19;12265:34;23477:14;;;12245:55;-1:-1;;;12320:12;;;12313:26;12358:12;;;19500:245;19752:416;19952:2;19966:47;;;12609:1;19937:18;;;23437:19;-1:-1;;;23477:14;;;12624:32;12675:12;;;19923:245;20175:416;20375:2;20389:47;;;12926:2;20360:18;;;23437:19;12962:34;23477:14;;;12942:55;-1:-1;;;13017:12;;;13010:30;13059:12;;;20346:245;20598:416;20798:2;20812:47;;;13310:2;20783:18;;;23437:19;13346:34;23477:14;;;13326:55;-1:-1;;;13401:12;;;13394:34;13447:12;;;20769:245;21021:416;21221:2;21235:47;;;13698:1;21206:18;;;23437:19;-1:-1;;;23477:14;;;13713:32;13764:12;;;21192:245;21444:222;13861:37;;;21571:2;21556:18;;21542:124;21673:256;21735:2;21729:9;21761:17;;;21836:18;21821:34;;21857:22;;;21818:62;21815:2;;;21893:1;;21883:12;21815:2;21735;21902:22;21713:216;;-1:-1;21713:216;21936:304;;22095:18;22087:6;22084:30;22081:2;;;-1:-1;;22117:12;22081:2;-1:-1;22162:4;22150:17;;;22215:15;;22018:222;22878:321;;23021:18;23013:6;23010:30;23007:2;;;-1:-1;;23043:12;23007:2;-1:-1;25227:7;23097:17;-1:-1;;23093:33;23184:4;23174:15;;22944:255;24867:268;24932:1;24939:101;24953:6;24950:1;24947:13;24939:101;;;25020:11;;;25014:18;25001:11;;;24994:39;24975:2;24968:10;24939:101;;;25055:6;25052:1;25049:13;25046:2;;;-1:-1;;24932:1;25102:16;;25095:27;24916:219;25248:117;-1:-1;;;;;24188:54;;25307:35;;25297:2;;25356:1;;25346:12;25297:2;25291:74;
Swarm Source
ipfs://dbbd9888adbcc1054e6920d6da5017b9335680caa7689de59140cc96322b51dc
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.