Contract 0xab1e4b72bc2f3890f052df111ee626c1c7229f26

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x6f0f14d3f41508635e2db8ef4a719abd6c6a406de5010c8d0ccf3b9457e0c427Add Wrapper233806552022-09-07 13:34:29146 days 7 hrs ago0x322d58b9e75a6918f7e7849aee0ff09369977e08 IN  0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH0.00002372
0xac00296ea90b39e3dbedd4fb8f4dc9b09b6b5e0f77a5784375b72e9a9791f79fRemove Wrapper187959902022-07-28 16:01:53187 days 5 hrs ago0x322d58b9e75a6918f7e7849aee0ff09369977e08 IN  0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH0.000084711116 ETH
0x35060fa08ead56337e21192dd4ecf67e550b95fa67e71870e76ea39106ae2a5cAdd Wrapper187959012022-07-28 16:01:33187 days 5 hrs ago0x322d58b9e75a6918f7e7849aee0ff09369977e08 IN  0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH0.00009394897 ETH
0xe1b76085bda415653d1f6ae0fdf3788ebd36751c6faed445af2642bba144305cAdd Wrapper180971662022-07-20 10:18:27195 days 11 hrs ago0x322d58b9e75a6918f7e7849aee0ff09369977e08 IN  0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH0.00011323481 ETH
0xc63cb8989811768c0c29eaa7065ab06bde750d9b14315f69d56a865fe173ad86Add Wrapper123084872022-05-17 11:24:34259 days 9 hrs ago0x322d58b9e75a6918f7e7849aee0ff09369977e08 IN  0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH0.000131245072 ETH
0x11ee72bee9d32cd6ee578e3d87154e50ad16324ed873d0df625f70ab36bbc7700x60806040123046762022-05-17 10:22:42259 days 10 hrs ago0x8f8c780dbc3ef64e86352a1198b58f98c8fa51a6 IN  Create: SaverExchangeRegistry0 ETH0.001971570869 ETH
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x7c7e702bf0c08e0e6f4aecea261bf9db4860773d888472b11bd1e52871c9509f569831562023-01-31 21:16:303 mins ago 0x4f903c80007aae62cd713c1e6a7f389dcc6df6c1 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0xd0962ac44472e0e6b73f1d5e6f0d55b1114c3e0139ecd04c181fd02b797bb080569738862023-01-31 20:24:4555 mins ago 0x230f543a72fe431dce7c793c2c9eba5aeee1ce90 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x112cb5545dec85f2aba98d6e11d096f52187404b8ac6517825bc74e844cd0264569721422023-01-31 20:14:561 hr 5 mins ago 0x66bff300d2b840ba2f1639d15acac61b50723d0f 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x9528a39a1b530a14f414a918f492232c07c2c3155c34019c7d0fc03dd5ad2659569644842023-01-31 19:34:251 hr 45 mins ago 0x6f930423ac46060cd9f22ea371379ec8f4c8e0f5 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x507428968c0bb796ea0bde59102dacf6a1b3783c51d7ab7dab7487b56184d3ea569641072023-01-31 19:32:181 hr 47 mins ago 0x1b73add2a6ad27e712039ff4fb8bcc858bb9f483 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x082d1a9b7ef0e81ce65bdcfba15b39c77c0824d4f0f26f440e0a0dc3604b13ae569639692023-01-31 19:31:381 hr 48 mins ago 0x1b73add2a6ad27e712039ff4fb8bcc858bb9f483 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0xe97f7766d0ec4d27919e4dacaa3e06bb716e03cf7170f5d2bb982c5610643d90569637642023-01-31 19:30:341 hr 49 mins ago 0x1b73add2a6ad27e712039ff4fb8bcc858bb9f483 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0xe4e08d501917c44739a4eb9eeeb1c0ca036dc366d7b233a5f5e32444db41f013569635582023-01-31 19:29:361 hr 50 mins ago 0x1b73add2a6ad27e712039ff4fb8bcc858bb9f483 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0xcaddf24a6ecae13e5e55b0685b76945545e6dbdddb0ab38e71d5f386e607bb70569560042023-01-31 18:52:002 hrs 28 mins ago 0xc9ee06602502ee1fd498dbcf0e5df330db7c08bf 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0xca89614e1d4e673b101d6a5fdba2a65d5cbed9f3940f5a1e1e87c67fca78d3bb569510032023-01-31 18:28:102 hrs 51 mins ago 0x1439e793bba150dc309c90c10ec97a12de14813f 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x25ffc5f4af94ec591143843a86c034cb1d86d27fa8b2a3c1d1423b5e9d4fd72e569507282023-01-31 18:26:482 hrs 53 mins ago 0x1439e793bba150dc309c90c10ec97a12de14813f 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0xb15da5ce441d9cfc16bf125ee64780ccd6447157c684fe82b0024690bf2d39c1569454842023-01-31 18:00:493 hrs 19 mins ago 0xcb29dd0a13c5353934613bd50b0baaafcba538a6 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x64cf5cf7382a145413d63b40af6a96264ab83b65025bf1b0399d821d03e00874569453542023-01-31 18:00:113 hrs 19 mins ago 0xcb29dd0a13c5353934613bd50b0baaafcba538a6 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x59ecdc27fe25b77784adebafaf20cdbb151eff5884eebb45da6335e1846ef826569449422023-01-31 17:58:093 hrs 21 mins ago 0xa8e96569294e0bafe7307336f622619f1040a74a 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0xecf48e317744926152c295b5b8756afa13a83e2a652dbaeb519fb3819737d903569445382023-01-31 17:56:093 hrs 23 mins ago 0xa8e96569294e0bafe7307336f622619f1040a74a 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x2f3d1ae784a9f99714920e0a76182a73c6f483baf4ffbe7836063c99210dd7c0569436992023-01-31 17:51:553 hrs 28 mins ago 0x70c22d849164ba72873459715c440b7fb9a95d2f 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x184d81015ba700bfe3a8c28465ef8316806b423549ceed2149c1a61e5367078f569350472023-01-31 17:07:524 hrs 12 mins ago 0x9ec1e5937b320f7fb136f0a5cf3eef0f5d7f67be 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0xcade0ec7ef4d2ad10b19a6010267843727f444ba5554f326cf75d8a9d892dd32569337672023-01-31 17:01:054 hrs 19 mins ago 0xfc82eee942d5b9c01879a1d086844fe8e65a55cc 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x778d6dd6a0aabd7a86e122c61a5faae7d000a70138fe33f4217f96e2e6f76790569307482023-01-31 16:46:094 hrs 33 mins ago 0xa8e96569294e0bafe7307336f622619f1040a74a 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0xf24aee387b60be4455e0d8f1286683d93a5fe8017f99905cbb45fee5d0d2e828569303092023-01-31 16:44:094 hrs 35 mins ago 0xa8e96569294e0bafe7307336f622619f1040a74a 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x9fab5f03427e45029f357a5eab5c25a10e9384645f197012724dec6eef19aa09569291002023-01-31 16:38:444 hrs 41 mins ago 0xa8e96569294e0bafe7307336f622619f1040a74a 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x3845d065cc77c85e89be82ff40c795903f88256c44722597cf3d7b914e379fed569232152023-01-31 16:09:585 hrs 10 mins ago 0xbd0491391e0220c984878468757f11514c399e08 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x5300156a1f4a467d411e165361ec14efc71255b46ecd837b8b454f7f340531fd569181462023-01-31 15:45:115 hrs 34 mins ago 0xf129c6e535952c6018617d5dd4b80609d7fc4a95 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0xf3e65954c70b3470abe0f5f674e9cbd24f500a129d1b8b1f3d31e7818c03f05b569175282023-01-31 15:41:515 hrs 38 mins ago 0x70a003a1c8276d432d8f8ec64607b44f3bb0e786 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
0x5f51b4cb04d6a143bfdf5210d04f4252b805efc621188b4d2424a49597257652569174892023-01-31 15:41:405 hrs 38 mins ago 0xbf3b5f3cf746828c5d8424409b23b3e9cb140c0f 0xab1e4b72bc2f3890f052df111ee626c1c7229f260 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SaverExchangeRegistry

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan on 2022-05-17
*/

// SPDX-License-Identifier: MIT

pragma solidity =0.8.10;





abstract contract IDFSRegistry {
 
    function getAddr(bytes4 _id) public view virtual returns (address);

    function addNewContract(
        bytes32 _id,
        address _contractAddr,
        uint256 _waitPeriod
    ) public virtual;

    function startContractChange(bytes32 _id, address _newContractAddr) public virtual;

    function approveContractChange(bytes32 _id) public virtual;

    function cancelContractChange(bytes32 _id) public virtual;

    function changeWaitPeriod(bytes32 _id, uint256 _newWaitPeriod) public virtual;
}





interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint256 digits);
    function totalSupply() external view returns (uint256 supply);

    function balanceOf(address _owner) external view returns (uint256 balance);

    function transfer(address _to, uint256 _value) external returns (bool success);

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    ) external returns (bool success);

    function approve(address _spender, uint256 _value) external returns (bool success);

    function allowance(address _owner, address _spender) external view returns (uint256 remaining);

    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}





library Address {
    //insufficient balance
    error InsufficientBalance(uint256 available, uint256 required);
    //unable to send value, recipient may have reverted
    error SendingValueFail();
    //insufficient balance for call
    error InsufficientBalanceForCall(uint256 available, uint256 required);
    //call to non-contract
    error NonContractCall();
    
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        uint256 balance = address(this).balance;
        if (balance < amount){
            revert InsufficientBalance(balance, amount);
        }

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        if (!(success)){
            revert SendingValueFail();
        }
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        uint256 balance = address(this).balance;
        if (balance < value){
            revert InsufficientBalanceForCall(balance, value);
        }
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        if (!(isContract(target))){
            revert NonContractCall();
        }

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}




library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}







library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    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)
        );
    }

    /// @dev Edited so it always first approves 0 and then the value, because of non standard tokens
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, newAllowance)
        );
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(
            value,
            "SafeERC20: decreased allowance below zero"
        );
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, newAllowance)
        );
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(
            data,
            "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");
        }
    }
}





contract ArbitrumAuthAddresses {
    address internal constant ADMIN_VAULT_ADDR = 0xd47D8D97cAd12A866900eEc6Cde1962529F25351;
    address internal constant FACTORY_ADDRESS = 0x5261abC3a94a6475D0A1171daE94A5f84fbaEcD2;
    address internal constant ADMIN_ADDR = 0x6AFEA85cFAB61e3a55Ad2e4537252Ec05796BEfa;
}





contract AuthHelper is ArbitrumAuthAddresses {
}





contract AdminVault is AuthHelper {
    address public owner;
    address public admin;

    error SenderNotAdmin();

    constructor() {
        owner = msg.sender;
        admin = ADMIN_ADDR;
    }

    /// @notice Admin is able to change owner
    /// @param _owner Address of new owner
    function changeOwner(address _owner) public {
        if (admin != msg.sender){
            revert SenderNotAdmin();
        }
        owner = _owner;
    }

    /// @notice Admin is able to set new admin
    /// @param _admin Address of multisig that becomes new admin
    function changeAdmin(address _admin) public {
        if (admin != msg.sender){
            revert SenderNotAdmin();
        }
        admin = _admin;
    }

}








contract AdminAuth is AuthHelper {
    using SafeERC20 for IERC20;

    AdminVault public constant adminVault = AdminVault(ADMIN_VAULT_ADDR);

    error SenderNotOwner();
    error SenderNotAdmin();

    modifier onlyOwner() {
        if (adminVault.owner() != msg.sender){
            revert SenderNotOwner();
        }
        _;
    }

    modifier onlyAdmin() {
        if (adminVault.admin() != msg.sender){
            revert SenderNotAdmin();
        }
        _;
    }

    /// @notice withdraw stuck funds
    function withdrawStuckFunds(address _token, address _receiver, uint256 _amount) public onlyOwner {
        if (_token == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) {
            payable(_receiver).transfer(_amount);
        } else {
            IERC20(_token).safeTransfer(_receiver, _amount);
        }
    }

    /// @notice Destroy the contract
    function kill() public onlyAdmin {
        selfdestruct(payable(msg.sender));
    }
}




contract SaverExchangeRegistry is AdminAuth {

	mapping(address => bool) private wrappers;

	function addWrapper(address _wrapper) public onlyOwner {
		wrappers[_wrapper] = true;
	}

	function removeWrapper(address _wrapper) public onlyOwner {
		wrappers[_wrapper] = false;
	}

	function isWrapper(address _wrapper) public view returns(bool) {
		return wrappers[_wrapper];
	}
}

Contract ABI

[{"inputs":[],"name":"NonContractCall","type":"error"},{"inputs":[],"name":"SenderNotAdmin","type":"error"},{"inputs":[],"name":"SenderNotOwner","type":"error"},{"inputs":[{"internalType":"address","name":"_wrapper","type":"address"}],"name":"addWrapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adminVault","outputs":[{"internalType":"contract AdminVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wrapper","type":"address"}],"name":"isWrapper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wrapper","type":"address"}],"name":"removeWrapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawStuckFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5061080f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806326b09c291461006757806341c0e1b51461007c5780638cedca7114610084578063c579d490146100bc578063e0aa2797146100cf578063e914d4941461010b575b600080fd5b61007a6100753660046106ba565b61011e565b005b61007a6101e9565b61009f73d47d8d97cad12a866900eec6cde1962529f2535181565b6040516001600160a01b0390911681526020015b60405180910390f35b61007a6100ca3660046106de565b610293565b6100fb6100dd3660046106ba565b6001600160a01b031660009081526020819052604090205460ff1690565b60405190151581526020016100b3565b61007a6101193660046106ba565b6103b4565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019e919061071f565b6001600160a01b0316146101c557604051630ca4a64560e11b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff19166001179055565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610245573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610269919061071f565b6001600160a01b0316146102905760405163a6c827a960e01b815260040160405180910390fd5b33ff5b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610313919061071f565b6001600160a01b03161461033a57604051630ca4a64560e11b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038416141561039b576040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610395573d6000803e3d6000fd5b50505050565b6103af6001600160a01b038416838361047c565b505050565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610410573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610434919061071f565b6001600160a01b03161461045b57604051630ca4a64560e11b815260040160405180910390fd5b6001600160a01b03166000908152602081905260409020805460ff19169055565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526103af9286929160009161050c91851690849061058e565b8051909150156103af578080602001905181019061052a919061073c565b6103af5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084015b60405180910390fd5b606061059d84846000856105a5565b949350505050565b60606105b085610669565b6105cd5760405163304619b560e01b815260040160405180910390fd5b600080866001600160a01b031685876040516105e9919061078a565b60006040518083038185875af1925050503d8060008114610626576040519150601f19603f3d011682016040523d82523d6000602084013e61062b565b606091505b5091509150811561063f57915061059d9050565b80511561064f5780518082602001fd5b8360405162461bcd60e51b815260040161058591906107a6565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061059d575050151592915050565b6001600160a01b03811681146106b757600080fd5b50565b6000602082840312156106cc57600080fd5b81356106d7816106a2565b9392505050565b6000806000606084860312156106f357600080fd5b83356106fe816106a2565b9250602084013561070e816106a2565b929592945050506040919091013590565b60006020828403121561073157600080fd5b81516106d7816106a2565b60006020828403121561074e57600080fd5b815180151581146106d757600080fd5b60005b83811015610779578181015183820152602001610761565b838111156103955750506000910152565b6000825161079c81846020870161075e565b9190910192915050565b60208152600082518060208401526107c581604085016020870161075e565b601f01601f1916919091016040019291505056fea2646970667358221220d1ffe5521c5200cdf222ba79603fe488655b665eb36f26612bd9026a44173c2764736f6c634300080a0033

Deployed ByteCode Sourcemap

11568:392:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11665:90;;;;;;:::i;:::-;;:::i;:::-;;11470:85;;;:::i;10641:68::-;;9492:42;10641:68;;;;;-1:-1:-1;;;;;584:32:1;;;566:51;;554:2;539:18;10641:68:0;;;;;;;;11108:316;;;;;;:::i;:::-;;:::i;11859:98::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11934:18:0;11916:4;11934:18;;;;;;;;;;;;;;11859:98;;;;1254:14:1;;1247:22;1229:41;;1217:2;1202:18;11859:98:0;1089:187:1;11760:94:0;;;;;;:::i;:::-;;:::i;11665:90::-;10836:10;-1:-1:-1;;;;;10814:32:0;9492:42;-1:-1:-1;;;;;10814:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10814:32:0;;10810:87;;10869:16;;-1:-1:-1;;;10869:16:0;;;;;;;;;;;10810:87;-1:-1:-1;;;;;11725:18:0::1;:8;:18:::0;;;::::1;::::0;;;;;;:25;;-1:-1:-1;;11725:25:0::1;11746:4;11725:25;::::0;;11665:90::o;11470:85::-;10982:10;-1:-1:-1;;;;;10960:32:0;9492:42;-1:-1:-1;;;;;10960:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10960:32:0;;10956:87;;11015:16;;-1:-1:-1;;;11015:16:0;;;;;;;;;;;10956:87;11535:10:::1;11514:33;11108:316:::0;10836:10;-1:-1:-1;;;;;10814:32:0;9492:42;-1:-1:-1;;;;;10814:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10814:32:0;;10810:87;;10869:16;;-1:-1:-1;;;10869:16:0;;;;;;;;;;;10810:87;11230:42:::1;-1:-1:-1::0;;;;;11220:52:0;::::1;;11216:201;;;11289:36;::::0;-1:-1:-1;;;;;11289:27:0;::::1;::::0;:36;::::1;;;::::0;11317:7;;11289:36:::1;::::0;;;11317:7;11289:27;:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11108:316:::0;;;:::o;11216:201::-:1;11358:47;-1:-1:-1::0;;;;;11358:27:0;::::1;11386:9:::0;11397:7;11358:27:::1;:47::i;:::-;11108:316:::0;;;:::o;11760:94::-;10836:10;-1:-1:-1;;;;;10814:32:0;9492:42;-1:-1:-1;;;;;10814:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10814:32:0;;10810:87;;10869:16;;-1:-1:-1;;;10869:16:0;;;;;;;;;;;10810:87;-1:-1:-1;;;;;11823:18:0::1;11844:5;11823:18:::0;;;::::1;::::0;;;;;;:26;;-1:-1:-1;;11823:26:0::1;::::0;;11760:94::o;7176:211::-;7320:58;;;-1:-1:-1;;;;;1729:32:1;;;7320:58:0;;;1711:51:1;1778:18;;;;1771:34;;;7320:58:0;;;;;;;;;;1684:18:1;;;;7320:58:0;;;;;;;;-1:-1:-1;;;;;7320:58:0;-1:-1:-1;;;7320:58:0;;;9033:106;;;;;;;;;;;;;;;;7293:86;;7313:5;;7320:58;-1:-1:-1;;9033:106:0;;:27;;;7320:58;;9033:27;:106::i;:::-;9154:17;;9007:132;;-1:-1:-1;9154:21:0;9150:237;;9309:10;9298:30;;;;;;;;;;;;:::i;:::-;9290:85;;;;-1:-1:-1;;;9290:85:0;;2300:2:1;9290:85:0;;;2282:21:1;2339:2;2319:18;;;2312:30;2378:34;2358:18;;;2351:62;-1:-1:-1;;;2429:18:1;;;2422:40;2479:19;;9290:85:0;;;;;;;;3198:230;3335:12;3367:53;3390:6;3398:4;3404:1;3407:12;3367:22;:53::i;:::-;3360:60;3198:230;-1:-1:-1;;;;3198:230:0:o;4148:1036::-;4321:12;4352:18;4363:6;4352:10;:18::i;:::-;4346:77;;4394:17;;-1:-1:-1;;;4394:17:0;;;;;;;;;;;4346:77;4496:12;4510:23;4537:6;-1:-1:-1;;;;;4537:11:0;4556:8;4566:4;4537:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4495:76;;;;4586:7;4582:595;;;4617:10;-1:-1:-1;4610:17:0;;-1:-1:-1;4610:17:0;4582:595;4731:17;;:21;4727:439;;4994:10;4988:17;5055:15;5042:10;5038:2;5034:19;5027:44;4727:439;5137:12;5130:20;;-1:-1:-1;;;5130:20:0;;;;;;;;:::i;1908:641::-;1968:4;2449:20;;2279:66;2498:23;;;;;;:42;;-1:-1:-1;;2525:15:0;;;2490:51;-1:-1:-1;;1908:641:0:o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;628:456::-;705:6;713;721;774:2;762:9;753:7;749:23;745:32;742:52;;;790:1;787;780:12;742:52;829:9;816:23;848:31;873:5;848:31;:::i;:::-;898:5;-1:-1:-1;955:2:1;940:18;;927:32;968:33;927:32;968:33;:::i;:::-;628:456;;1020:7;;-1:-1:-1;;;1074:2:1;1059:18;;;;1046:32;;628:456::o;1281:251::-;1351:6;1404:2;1392:9;1383:7;1379:23;1375:32;1372:52;;;1420:1;1417;1410:12;1372:52;1452:9;1446:16;1471:31;1496:5;1471:31;:::i;1816:277::-;1883:6;1936:2;1924:9;1915:7;1911:23;1907:32;1904:52;;;1952:1;1949;1942:12;1904:52;1984:9;1978:16;2037:5;2030:13;2023:21;2016:5;2013:32;2003:60;;2059:1;2056;2049:12;2509:258;2581:1;2591:113;2605:6;2602:1;2599:13;2591:113;;;2681:11;;;2675:18;2662:11;;;2655:39;2627:2;2620:10;2591:113;;;2722:6;2719:1;2716:13;2713:48;;;-1:-1:-1;;2757:1:1;2739:16;;2732:27;2509:258::o;2772:274::-;2901:3;2939:6;2933:13;2955:53;3001:6;2996:3;2989:4;2981:6;2977:17;2955:53;:::i;:::-;3024:16;;;;;2772:274;-1:-1:-1;;2772:274:1:o;3051:383::-;3200:2;3189:9;3182:21;3163:4;3232:6;3226:13;3275:6;3270:2;3259:9;3255:18;3248:34;3291:66;3350:6;3345:2;3334:9;3330:18;3325:2;3317:6;3313:15;3291:66;:::i;:::-;3418:2;3397:15;-1:-1:-1;;3393:29:1;3378:45;;;;3425:2;3374:54;;3051:383;-1:-1:-1;;3051:383:1:o

Metadata Hash

d1ffe5521c5200cdf222ba79603fe488655b665eb36f26612bd9026a44173c27
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.