Contract

0xF619bb6330e14Ab34013948ce68bc96eC7C0aCb9

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StakingWithOptionalReferral

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at SonicScan.org on 2024-12-22
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// Address library from OpenZeppelin
library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    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) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// SafeERC20 from OpenZeppelin
library SafeERC20 {
    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));
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        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));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// Context from OpenZeppelin
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// ReentrancyGuard from OpenZeppelin
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

interface IERC20 {
    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 sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/// @title StakingWithOptionalReferral - A staking contract for SANIC tokens with optional referrals and robust security.
contract StakingWithOptionalReferral is ReentrancyGuard {
    using SafeERC20 for IERC20;

    IERC20 public sanicToken; // Token to be staked
    address public feeRecipient; // Address to receive fees
    address public owner; // Contract owner

    uint256 public dailyRewardRate = 8; // 8% daily rewards
    uint256 public depositFee = 5; // 5% deposit fee
    uint256 public referralFee = 12; // 12% referral bonus
    uint256 public claimCooldown = 1 minutes; // Cooldown period for claiming rewards
    uint256 public penaltyCooldown = 24 hours; // Time window for penalty enforcement
    uint256 public penaltyRate = 50; // 50% penalty on rewards for early claims

    struct User {
        uint256 depositedAmount;
        uint256 lastClaimTime;
        uint256 lastWithdrawalTime;
    }

    mapping(address => User) public users;
    mapping(address => address) public referrers;
    mapping(address => bool) public hasBeenReferred;

    uint256 public totalDeposits;

    event Deposit(address indexed user, uint256 amount, uint256 netAmount, address indexed referrer);
    event ClaimRewards(address indexed user, uint256 reward, uint256 penalty);
    event Compound(address indexed user, uint256 compoundedAmount);
    event ReferralBonusPaid(address indexed referrer, uint256 bonus);
    event TokenUpdated(address indexed oldToken, address indexed newToken);
    event FeeRecipientUpdated(address indexed oldRecipient, address indexed newRecipient);

    modifier onlyOwner() {
        require(msg.sender == owner, "Not authorized");
        _;
    }

    constructor(address _sanicToken, address _feeRecipient) {
        require(_sanicToken != address(0), "Invalid token address");
        require(_feeRecipient != address(0), "Invalid fee recipient address");

        sanicToken = IERC20(_sanicToken);
        feeRecipient = _feeRecipient;
        owner = msg.sender;
    }

    function deposit(uint256 _amount, address _referrer) external nonReentrant {
        require(_amount > 0, "Deposit amount must be greater than zero");

        uint256 allowance = sanicToken.allowance(msg.sender, address(this));
        require(allowance >= _amount, "Token allowance too low");

        sanicToken.safeTransferFrom(msg.sender, address(this), _amount);

        uint256 fee = (_amount * depositFee) / 100;
        uint256 netAmount = _amount - fee;

        sanicToken.safeTransfer(feeRecipient, fee);

        if (_referrer != address(0) && _referrer != msg.sender) {
            require(!hasBeenReferred[msg.sender], "User has already been referred");
            uint256 referralBonus = (_amount * referralFee) / 100;
            sanicToken.safeTransfer(_referrer, referralBonus);
            referrers[msg.sender] = _referrer;
            hasBeenReferred[msg.sender] = true;

            emit ReferralBonusPaid(_referrer, referralBonus);
        }

        User storage user = users[msg.sender];
        user.depositedAmount += netAmount;
        user.lastClaimTime = block.timestamp;
        user.lastWithdrawalTime = 0; // Reset withdrawal time on deposit
        totalDeposits += netAmount;

        emit Deposit(msg.sender, _amount, netAmount, _referrer);
    }

    function claimRewards() external nonReentrant {
        User storage user = users[msg.sender];
        require(user.depositedAmount > 0, "No deposits found");
        require(block.timestamp >= user.lastClaimTime + claimCooldown, "Claim cooldown active");

        uint256 rewards = calculateRewards(msg.sender);
        require(rewards > 0, "No rewards available");

        uint256 penalty = 0;
        if (block.timestamp < user.lastWithdrawalTime + penaltyCooldown) {
            penalty = (rewards * penaltyRate) / 100;
        }

        uint256 netRewards = rewards - penalty;
        user.lastClaimTime = block.timestamp;
        user.lastWithdrawalTime = block.timestamp;

        user.depositedAmount -= netRewards; // Deduct claimed rewards from deposit
        sanicToken.safeTransfer(msg.sender, netRewards);

        if (penalty > 0) {
            sanicToken.safeTransfer(feeRecipient, penalty);
        }

        emit ClaimRewards(msg.sender, netRewards, penalty);
    }

    function calculateRewards(address _user) public view returns (uint256) {
        User memory user = users[_user];
        uint256 elapsedTime = block.timestamp - user.lastClaimTime;
        uint256 dailyRewards = (user.depositedAmount * dailyRewardRate) / 100;
        return (dailyRewards * elapsedTime) / 1 days;
    }

    function compound() external nonReentrant {
        User storage user = users[msg.sender];
        require(user.depositedAmount > 0, "No deposits found");
        require(block.timestamp >= user.lastClaimTime + claimCooldown, "Claim cooldown active");

        uint256 rewards = calculateRewards(msg.sender);
        require(rewards > 0, "No rewards available");

        user.depositedAmount += rewards; // Add rewards to deposit
        user.lastClaimTime = block.timestamp;

        emit Compound(msg.sender, rewards);
    }

    function getTotalDeposited() external view returns (uint256) {
        return totalDeposits;
    }

    function updateToken(address _newToken) external onlyOwner {
        require(_newToken != address(0), "Invalid token address");
        address oldToken = address(sanicToken);
        sanicToken = IERC20(_newToken);
        emit TokenUpdated(oldToken, _newToken);
    }

    function updateFeeRecipient(address _newRecipient) external onlyOwner {
        require(_newRecipient != address(0), "Invalid fee recipient address");
        address oldRecipient = feeRecipient;
        feeRecipient = _newRecipient;
        emit FeeRecipientUpdated(oldRecipient, _newRecipient);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_sanicToken","type":"address"},{"internalType":"address","name":"_feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"penalty","type":"uint256"}],"name":"ClaimRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"compoundedAmount","type":"uint256"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"netAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"newRecipient","type":"address"}],"name":"FeeRecipientUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"bonus","type":"uint256"}],"name":"ReferralBonusPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldToken","type":"address"},{"indexed":true,"internalType":"address","name":"newToken","type":"address"}],"name":"TokenUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"calculateRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dailyRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDeposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasBeenReferred","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"penaltyCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"penaltyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sanicToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newRecipient","type":"address"}],"name":"updateFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newToken","type":"address"}],"name":"updateToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"lastWithdrawalTime","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600860045560058055600c600655603c60075562015180600855603260095534801561002e575f80fd5b5060405161253138038061253183398181016040528101906100509190610258565b60015f819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036100c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100bc906102f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610358565b60405180910390fd5b8160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610376565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610227826101fe565b9050919050565b6102378161021d565b8114610241575f80fd5b50565b5f815190506102528161022e565b92915050565b5f806040838503121561026e5761026d6101fa565b5b5f61027b85828601610244565b925050602061028c85828601610244565b9150509250929050565b5f82825260208201905092915050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f6102da601583610296565b91506102e5826102a6565b602082019050919050565b5f6020820190508181035f830152610307816102ce565b9050919050565b7f496e76616c69642066656520726563697069656e7420616464726573730000005f82015250565b5f610342601d83610296565b915061034d8261030e565b602082019050919050565b5f6020820190508181035f83015261036f81610336565b9050919050565b6121ae806103835f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c8063a48b3a52116100ab578063d6b7494f1161006f578063d6b7494f14610322578063f160d36914610340578063f69e20461461035c578063f712802414610366578063fdea3657146103845761012a565b8063a48b3a5214610266578063a87430ba14610284578063b68ef559146102b6578063c1e3d2dd146102d4578063d62c1164146102f25761012a565b80636e553f65116100f25780636e553f65146101d45780637ad3def2146101f05780637d8820971461020c57806384ae2bc61461022a5780638da5cb5b146102485761012a565b8063372500ab1461012e57806346904840146101385780634a3b68cc1461015657806364ab86751461018657806367a52793146101b6575b5f80fd5b6101366103a2565b005b6101406106a4565b60405161014d919061170c565b60405180910390f35b610170600480360381019061016b9190611753565b6106c9565b60405161017d919061170c565b60405180910390f35b6101a0600480360381019061019b9190611753565b6106f9565b6040516101ad9190611796565b60405180910390f35b6101be6107b9565b6040516101cb9190611796565b60405180910390f35b6101ee60048036038101906101e991906117d9565b6107bf565b005b61020a60048036038101906102059190611753565b610d8d565b005b610214610f4d565b6040516102219190611796565b60405180910390f35b610232610f53565b60405161023f9190611796565b60405180910390f35b610250610f59565b60405161025d919061170c565b60405180910390f35b61026e610f7e565b60405161027b9190611796565b60405180910390f35b61029e60048036038101906102999190611753565b610f84565b6040516102ad93929190611817565b60405180910390f35b6102be610faa565b6040516102cb9190611796565b60405180910390f35b6102dc610fb3565b6040516102e99190611796565b60405180910390f35b61030c60048036038101906103079190611753565b610fb9565b6040516103199190611866565b60405180910390f35b61032a610fd6565b6040516103379190611796565b60405180910390f35b61035a60048036038101906103559190611753565b610fdc565b005b61036461119c565b005b61036e611389565b60405161037b91906118da565b60405180910390f35b61038c6113ae565b6040516103999190611796565b60405180910390f35b60025f54036103e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103dd9061194d565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f015411610472576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610469906119b5565b60405180910390fd5b60075481600101546104849190611a00565b4210156104c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bd90611a7d565b60405180910390fd5b5f6104d0336106f9565b90505f8111610514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050b90611ae5565b60405180910390fd5b5f60085483600201546105279190611a00565b42101561054b5760646009548361053e9190611b03565b6105489190611b71565b90505b5f81836105589190611ba1565b905042846001018190555042846002018190555080845f015f82825461057e9190611ba1565b925050819055506105d1338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b49092919063ffffffff16565b5f8211156106475761064660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b49092919063ffffffff16565b5b3373ffffffffffffffffffffffffffffffffffffffff167f674a8930d4166ce2352c3dc1e9ff633595db479f71f3741270a0a73a52cb7b0f828460405161068f929190611bd4565b60405180910390a25050505060015f81905550565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015481526020016001820154815260200160028201548152505090505f8160200151426107739190611ba1565b90505f6064600454845f01516107899190611b03565b6107939190611b71565b90506201518082826107a59190611b03565b6107af9190611b71565b9350505050919050565b60055481565b60025f5403610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa9061194d565b60405180910390fd5b60025f819055505f821161084c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084390611c6b565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016108a9929190611c89565b602060405180830381865afa1580156108c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e89190611cc4565b90508281101561092d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092490611d39565b60405180910390fd5b61097b33308560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661143a909392919063ffffffff16565b5f60646005548561098c9190611b03565b6109969190611b71565b90505f81856109a59190611ba1565b9050610a1460025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b49092919063ffffffff16565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610a7c57503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610c9457600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290611da1565b60405180910390fd5b5f606460065487610b1c9190611b03565b610b269190611b71565b9050610b74858260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b49092919063ffffffff16565b84600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f050bae3eeefac62a4ee36c766f4f426f09edf96ae8fb3034ebbf961e4acc78e282604051610c8a9190611796565b60405180910390a2505b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f828254610ce69190611a00565b925050819055504281600101819055505f816002018190555081600d5f828254610d109190611a00565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b478885604051610d76929190611bd4565b60405180910390a35050505060015f819055505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390611e09565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190611e71565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0b1186973f810894b87ab0bfbee422fddcaad21b46dc705a561451bbb6bac11760405160405180910390a35050565b600d5481565b60065481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600a602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f600d54905090565b60045481565b600c602052805f5260405f205f915054906101000a900460ff1681565b60095481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106290611e09565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090611ed9565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d360405160405180910390a35050565b60025f54036111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d79061194d565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f01541161126c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611263906119b5565b60405180910390fd5b600754816001015461127e9190611a00565b4210156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b790611a7d565b60405180910390fd5b5f6112ca336106f9565b90505f811161130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590611ae5565b60405180910390fd5b80825f015f8282546113209190611a00565b925050819055504282600101819055503373ffffffffffffffffffffffffffffffffffffffff167f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a14556826040516113769190611796565b60405180910390a2505060015f81905550565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6114358363a9059cbb60e01b84846040516024016113d3929190611ef7565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506114c3565b505050565b6114bd846323b872dd60e01b85858560405160240161145b93929190611f1e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506114c3565b50505050565b5f611524826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166115889092919063ffffffff16565b90505f8151111561158357808060200190518101906115439190611f7d565b611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157990612018565b60405180910390fd5b5b505050565b606061159684845f8561159f565b90509392505050565b60606115aa856116bc565b6115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090612080565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff16858760405161161191906120f0565b5f6040518083038185875af1925050503d805f811461164b576040519150601f19603f3d011682016040523d82523d5f602084013e611650565b606091505b509150915081156116655780925050506116b4565b5f815111156116775780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9190612158565b60405180910390fd5b949350505050565b5f80823b90505f8111915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116f6826116cd565b9050919050565b611706816116ec565b82525050565b5f60208201905061171f5f8301846116fd565b92915050565b5f80fd5b611732816116ec565b811461173c575f80fd5b50565b5f8135905061174d81611729565b92915050565b5f6020828403121561176857611767611725565b5b5f6117758482850161173f565b91505092915050565b5f819050919050565b6117908161177e565b82525050565b5f6020820190506117a95f830184611787565b92915050565b6117b88161177e565b81146117c2575f80fd5b50565b5f813590506117d3816117af565b92915050565b5f80604083850312156117ef576117ee611725565b5b5f6117fc858286016117c5565b925050602061180d8582860161173f565b9150509250929050565b5f60608201905061182a5f830186611787565b6118376020830185611787565b6118446040830184611787565b949350505050565b5f8115159050919050565b6118608161184c565b82525050565b5f6020820190506118795f830184611857565b92915050565b5f819050919050565b5f6118a261189d611898846116cd565b61187f565b6116cd565b9050919050565b5f6118b382611888565b9050919050565b5f6118c4826118a9565b9050919050565b6118d4816118ba565b82525050565b5f6020820190506118ed5f8301846118cb565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f611937601f836118f3565b915061194282611903565b602082019050919050565b5f6020820190508181035f8301526119648161192b565b9050919050565b7f4e6f206465706f7369747320666f756e640000000000000000000000000000005f82015250565b5f61199f6011836118f3565b91506119aa8261196b565b602082019050919050565b5f6020820190508181035f8301526119cc81611993565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a0a8261177e565b9150611a158361177e565b9250828201905080821115611a2d57611a2c6119d3565b5b92915050565b7f436c61696d20636f6f6c646f776e2061637469766500000000000000000000005f82015250565b5f611a676015836118f3565b9150611a7282611a33565b602082019050919050565b5f6020820190508181035f830152611a9481611a5b565b9050919050565b7f4e6f207265776172647320617661696c61626c650000000000000000000000005f82015250565b5f611acf6014836118f3565b9150611ada82611a9b565b602082019050919050565b5f6020820190508181035f830152611afc81611ac3565b9050919050565b5f611b0d8261177e565b9150611b188361177e565b9250828202611b268161177e565b91508282048414831517611b3d57611b3c6119d3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611b7b8261177e565b9150611b868361177e565b925082611b9657611b95611b44565b5b828204905092915050565b5f611bab8261177e565b9150611bb68361177e565b9250828203905081811115611bce57611bcd6119d3565b5b92915050565b5f604082019050611be75f830185611787565b611bf46020830184611787565b9392505050565b7f4465706f73697420616d6f756e74206d757374206265206772656174657220745f8201527f68616e207a65726f000000000000000000000000000000000000000000000000602082015250565b5f611c556028836118f3565b9150611c6082611bfb565b604082019050919050565b5f6020820190508181035f830152611c8281611c49565b9050919050565b5f604082019050611c9c5f8301856116fd565b611ca960208301846116fd565b9392505050565b5f81519050611cbe816117af565b92915050565b5f60208284031215611cd957611cd8611725565b5b5f611ce684828501611cb0565b91505092915050565b7f546f6b656e20616c6c6f77616e636520746f6f206c6f770000000000000000005f82015250565b5f611d236017836118f3565b9150611d2e82611cef565b602082019050919050565b5f6020820190508181035f830152611d5081611d17565b9050919050565b7f557365722068617320616c7265616479206265656e20726566657272656400005f82015250565b5f611d8b601e836118f3565b9150611d9682611d57565b602082019050919050565b5f6020820190508181035f830152611db881611d7f565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f611df3600e836118f3565b9150611dfe82611dbf565b602082019050919050565b5f6020820190508181035f830152611e2081611de7565b9050919050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f611e5b6015836118f3565b9150611e6682611e27565b602082019050919050565b5f6020820190508181035f830152611e8881611e4f565b9050919050565b7f496e76616c69642066656520726563697069656e7420616464726573730000005f82015250565b5f611ec3601d836118f3565b9150611ece82611e8f565b602082019050919050565b5f6020820190508181035f830152611ef081611eb7565b9050919050565b5f604082019050611f0a5f8301856116fd565b611f176020830184611787565b9392505050565b5f606082019050611f315f8301866116fd565b611f3e60208301856116fd565b611f4b6040830184611787565b949350505050565b611f5c8161184c565b8114611f66575f80fd5b50565b5f81519050611f7781611f53565b92915050565b5f60208284031215611f9257611f91611725565b5b5f611f9f84828501611f69565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f612002602a836118f3565b915061200d82611fa8565b604082019050919050565b5f6020820190508181035f83015261202f81611ff6565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f61206a601d836118f3565b915061207582612036565b602082019050919050565b5f6020820190508181035f8301526120978161205e565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f6120ca8261209e565b6120d481856120a8565b93506120e48185602086016120b2565b80840191505092915050565b5f6120fb82846120c0565b915081905092915050565b5f81519050919050565b5f601f19601f8301169050919050565b5f61212a82612106565b61213481856118f3565b93506121448185602086016120b2565b61214d81612110565b840191505092915050565b5f6020820190508181035f8301526121708184612120565b90509291505056fea2646970667358221220fb5609f38a648b90e5d5428bc719a04ea63fe984a0911a3d9bfeb33c8facb70864736f6c634300081a0033000000000000000000000000a989d83fb60d1a14846ca137c478e6b42d23620a0000000000000000000000003740ba5cec4158044c629e5e70860bca449dd7ce

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061012a575f3560e01c8063a48b3a52116100ab578063d6b7494f1161006f578063d6b7494f14610322578063f160d36914610340578063f69e20461461035c578063f712802414610366578063fdea3657146103845761012a565b8063a48b3a5214610266578063a87430ba14610284578063b68ef559146102b6578063c1e3d2dd146102d4578063d62c1164146102f25761012a565b80636e553f65116100f25780636e553f65146101d45780637ad3def2146101f05780637d8820971461020c57806384ae2bc61461022a5780638da5cb5b146102485761012a565b8063372500ab1461012e57806346904840146101385780634a3b68cc1461015657806364ab86751461018657806367a52793146101b6575b5f80fd5b6101366103a2565b005b6101406106a4565b60405161014d919061170c565b60405180910390f35b610170600480360381019061016b9190611753565b6106c9565b60405161017d919061170c565b60405180910390f35b6101a0600480360381019061019b9190611753565b6106f9565b6040516101ad9190611796565b60405180910390f35b6101be6107b9565b6040516101cb9190611796565b60405180910390f35b6101ee60048036038101906101e991906117d9565b6107bf565b005b61020a60048036038101906102059190611753565b610d8d565b005b610214610f4d565b6040516102219190611796565b60405180910390f35b610232610f53565b60405161023f9190611796565b60405180910390f35b610250610f59565b60405161025d919061170c565b60405180910390f35b61026e610f7e565b60405161027b9190611796565b60405180910390f35b61029e60048036038101906102999190611753565b610f84565b6040516102ad93929190611817565b60405180910390f35b6102be610faa565b6040516102cb9190611796565b60405180910390f35b6102dc610fb3565b6040516102e99190611796565b60405180910390f35b61030c60048036038101906103079190611753565b610fb9565b6040516103199190611866565b60405180910390f35b61032a610fd6565b6040516103379190611796565b60405180910390f35b61035a60048036038101906103559190611753565b610fdc565b005b61036461119c565b005b61036e611389565b60405161037b91906118da565b60405180910390f35b61038c6113ae565b6040516103999190611796565b60405180910390f35b60025f54036103e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103dd9061194d565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f015411610472576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610469906119b5565b60405180910390fd5b60075481600101546104849190611a00565b4210156104c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bd90611a7d565b60405180910390fd5b5f6104d0336106f9565b90505f8111610514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050b90611ae5565b60405180910390fd5b5f60085483600201546105279190611a00565b42101561054b5760646009548361053e9190611b03565b6105489190611b71565b90505b5f81836105589190611ba1565b905042846001018190555042846002018190555080845f015f82825461057e9190611ba1565b925050819055506105d1338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b49092919063ffffffff16565b5f8211156106475761064660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b49092919063ffffffff16565b5b3373ffffffffffffffffffffffffffffffffffffffff167f674a8930d4166ce2352c3dc1e9ff633595db479f71f3741270a0a73a52cb7b0f828460405161068f929190611bd4565b60405180910390a25050505060015f81905550565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015481526020016001820154815260200160028201548152505090505f8160200151426107739190611ba1565b90505f6064600454845f01516107899190611b03565b6107939190611b71565b90506201518082826107a59190611b03565b6107af9190611b71565b9350505050919050565b60055481565b60025f5403610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa9061194d565b60405180910390fd5b60025f819055505f821161084c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084390611c6b565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016108a9929190611c89565b602060405180830381865afa1580156108c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e89190611cc4565b90508281101561092d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092490611d39565b60405180910390fd5b61097b33308560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661143a909392919063ffffffff16565b5f60646005548561098c9190611b03565b6109969190611b71565b90505f81856109a59190611ba1565b9050610a1460025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b49092919063ffffffff16565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610a7c57503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610c9457600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290611da1565b60405180910390fd5b5f606460065487610b1c9190611b03565b610b269190611b71565b9050610b74858260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b49092919063ffffffff16565b84600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f050bae3eeefac62a4ee36c766f4f426f09edf96ae8fb3034ebbf961e4acc78e282604051610c8a9190611796565b60405180910390a2505b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f828254610ce69190611a00565b925050819055504281600101819055505f816002018190555081600d5f828254610d109190611a00565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b478885604051610d76929190611bd4565b60405180910390a35050505060015f819055505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1390611e09565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190611e71565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0b1186973f810894b87ab0bfbee422fddcaad21b46dc705a561451bbb6bac11760405160405180910390a35050565b600d5481565b60065481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600a602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f600d54905090565b60045481565b600c602052805f5260405f205f915054906101000a900460ff1681565b60095481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106290611e09565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090611ed9565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d360405160405180910390a35050565b60025f54036111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d79061194d565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f01541161126c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611263906119b5565b60405180910390fd5b600754816001015461127e9190611a00565b4210156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b790611a7d565b60405180910390fd5b5f6112ca336106f9565b90505f811161130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590611ae5565b60405180910390fd5b80825f015f8282546113209190611a00565b925050819055504282600101819055503373ffffffffffffffffffffffffffffffffffffffff167f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a14556826040516113769190611796565b60405180910390a2505060015f81905550565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6114358363a9059cbb60e01b84846040516024016113d3929190611ef7565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506114c3565b505050565b6114bd846323b872dd60e01b85858560405160240161145b93929190611f1e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506114c3565b50505050565b5f611524826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166115889092919063ffffffff16565b90505f8151111561158357808060200190518101906115439190611f7d565b611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157990612018565b60405180910390fd5b5b505050565b606061159684845f8561159f565b90509392505050565b60606115aa856116bc565b6115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090612080565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff16858760405161161191906120f0565b5f6040518083038185875af1925050503d805f811461164b576040519150601f19603f3d011682016040523d82523d5f602084013e611650565b606091505b509150915081156116655780925050506116b4565b5f815111156116775780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab9190612158565b60405180910390fd5b949350505050565b5f80823b90505f8111915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116f6826116cd565b9050919050565b611706816116ec565b82525050565b5f60208201905061171f5f8301846116fd565b92915050565b5f80fd5b611732816116ec565b811461173c575f80fd5b50565b5f8135905061174d81611729565b92915050565b5f6020828403121561176857611767611725565b5b5f6117758482850161173f565b91505092915050565b5f819050919050565b6117908161177e565b82525050565b5f6020820190506117a95f830184611787565b92915050565b6117b88161177e565b81146117c2575f80fd5b50565b5f813590506117d3816117af565b92915050565b5f80604083850312156117ef576117ee611725565b5b5f6117fc858286016117c5565b925050602061180d8582860161173f565b9150509250929050565b5f60608201905061182a5f830186611787565b6118376020830185611787565b6118446040830184611787565b949350505050565b5f8115159050919050565b6118608161184c565b82525050565b5f6020820190506118795f830184611857565b92915050565b5f819050919050565b5f6118a261189d611898846116cd565b61187f565b6116cd565b9050919050565b5f6118b382611888565b9050919050565b5f6118c4826118a9565b9050919050565b6118d4816118ba565b82525050565b5f6020820190506118ed5f8301846118cb565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f611937601f836118f3565b915061194282611903565b602082019050919050565b5f6020820190508181035f8301526119648161192b565b9050919050565b7f4e6f206465706f7369747320666f756e640000000000000000000000000000005f82015250565b5f61199f6011836118f3565b91506119aa8261196b565b602082019050919050565b5f6020820190508181035f8301526119cc81611993565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a0a8261177e565b9150611a158361177e565b9250828201905080821115611a2d57611a2c6119d3565b5b92915050565b7f436c61696d20636f6f6c646f776e2061637469766500000000000000000000005f82015250565b5f611a676015836118f3565b9150611a7282611a33565b602082019050919050565b5f6020820190508181035f830152611a9481611a5b565b9050919050565b7f4e6f207265776172647320617661696c61626c650000000000000000000000005f82015250565b5f611acf6014836118f3565b9150611ada82611a9b565b602082019050919050565b5f6020820190508181035f830152611afc81611ac3565b9050919050565b5f611b0d8261177e565b9150611b188361177e565b9250828202611b268161177e565b91508282048414831517611b3d57611b3c6119d3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611b7b8261177e565b9150611b868361177e565b925082611b9657611b95611b44565b5b828204905092915050565b5f611bab8261177e565b9150611bb68361177e565b9250828203905081811115611bce57611bcd6119d3565b5b92915050565b5f604082019050611be75f830185611787565b611bf46020830184611787565b9392505050565b7f4465706f73697420616d6f756e74206d757374206265206772656174657220745f8201527f68616e207a65726f000000000000000000000000000000000000000000000000602082015250565b5f611c556028836118f3565b9150611c6082611bfb565b604082019050919050565b5f6020820190508181035f830152611c8281611c49565b9050919050565b5f604082019050611c9c5f8301856116fd565b611ca960208301846116fd565b9392505050565b5f81519050611cbe816117af565b92915050565b5f60208284031215611cd957611cd8611725565b5b5f611ce684828501611cb0565b91505092915050565b7f546f6b656e20616c6c6f77616e636520746f6f206c6f770000000000000000005f82015250565b5f611d236017836118f3565b9150611d2e82611cef565b602082019050919050565b5f6020820190508181035f830152611d5081611d17565b9050919050565b7f557365722068617320616c7265616479206265656e20726566657272656400005f82015250565b5f611d8b601e836118f3565b9150611d9682611d57565b602082019050919050565b5f6020820190508181035f830152611db881611d7f565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f611df3600e836118f3565b9150611dfe82611dbf565b602082019050919050565b5f6020820190508181035f830152611e2081611de7565b9050919050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f611e5b6015836118f3565b9150611e6682611e27565b602082019050919050565b5f6020820190508181035f830152611e8881611e4f565b9050919050565b7f496e76616c69642066656520726563697069656e7420616464726573730000005f82015250565b5f611ec3601d836118f3565b9150611ece82611e8f565b602082019050919050565b5f6020820190508181035f830152611ef081611eb7565b9050919050565b5f604082019050611f0a5f8301856116fd565b611f176020830184611787565b9392505050565b5f606082019050611f315f8301866116fd565b611f3e60208301856116fd565b611f4b6040830184611787565b949350505050565b611f5c8161184c565b8114611f66575f80fd5b50565b5f81519050611f7781611f53565b92915050565b5f60208284031215611f9257611f91611725565b5b5f611f9f84828501611f69565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f612002602a836118f3565b915061200d82611fa8565b604082019050919050565b5f6020820190508181035f83015261202f81611ff6565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f61206a601d836118f3565b915061207582612036565b602082019050919050565b5f6020820190508181035f8301526120978161205e565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f6120ca8261209e565b6120d481856120a8565b93506120e48185602086016120b2565b80840191505092915050565b5f6120fb82846120c0565b915081905092915050565b5f81519050919050565b5f601f19601f8301169050919050565b5f61212a82612106565b61213481856118f3565b93506121448185602086016120b2565b61214d81612110565b840191505092915050565b5f6020820190508181035f8301526121708184612120565b90509291505056fea2646970667358221220fb5609f38a648b90e5d5428bc719a04ea63fe984a0911a3d9bfeb33c8facb70864736f6c634300081a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a989d83fb60d1a14846ca137c478e6b42d23620a0000000000000000000000003740ba5cec4158044c629e5e70860bca449dd7ce

-----Decoded View---------------
Arg [0] : _sanicToken (address): 0xA989d83fb60d1a14846CA137c478e6b42D23620A
Arg [1] : _feeRecipient (address): 0x3740BA5CEC4158044C629E5e70860BcA449DD7Ce

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a989d83fb60d1a14846ca137c478e6b42d23620a
Arg [1] : 0000000000000000000000003740ba5cec4158044c629e5e70860bca449dd7ce


Deployed Bytecode Sourcemap

5306:5867:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8574:1011;;;:::i;:::-;;5457:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6172:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9593:325;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5626:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7251:1315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10581:274;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6279:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5680:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5518:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5827:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6128:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;10473:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5565:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6223:47;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5914:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10863:307;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9926:539;;;:::i;:::-;;5404:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5740:40;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8574:1011;4196:1;4344:7;;:19;4336:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:1;4412:7;:18;;;;8631:17:::1;8651:5;:17;8657:10;8651:17;;;;;;;;;;;;;;;8631:37;;8710:1;8687:4;:20;;;:24;8679:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8792:13;;8771:4;:18;;;:34;;;;:::i;:::-;8752:15;:53;;8744:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;8844:15;8862:28;8879:10;8862:16;:28::i;:::-;8844:46;;8919:1;8909:7;:11;8901:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;8958:15;9036;;9010:4;:23;;;:41;;;;:::i;:::-;8992:15;:59;8988:131;;;9104:3;9089:11;;9079:7;:21;;;;:::i;:::-;9078:29;;;;:::i;:::-;9068:39;;8988:131;9131:18;9162:7;9152;:17;;;;:::i;:::-;9131:38;;9201:15;9180:4;:18;;:36;;;;9253:15;9227:4;:23;;:41;;;;9305:10;9281:4;:20;;;:34;;;;;;;:::i;:::-;;;;;;;;9365:47;9389:10;9401;9365;;;;;;;;;;;:23;;;;:47;;;;;:::i;:::-;9439:1;9429:7;:11;9425:90;;;9457:46;9481:12;;;;;;;;;;;9495:7;9457:10;;;;;;;;;;;:23;;;;:46;;;;;:::i;:::-;9425:90;9545:10;9532:45;;;9557:10;9569:7;9532:45;;;;;;;:::i;:::-;;;;;;;;8620:965;;;;4152:1:::0;4457:7;:22;;;;8574:1011::o;5457:27::-;;;;;;;;;;;;;:::o;6172:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;9593:325::-;9655:7;9675:16;9694:5;:12;9700:5;9694:12;;;;;;;;;;;;;;;9675:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9717:19;9757:4;:18;;;9739:15;:36;;;;:::i;:::-;9717:58;;9786:20;9852:3;9833:15;;9810:4;:20;;;:38;;;;:::i;:::-;9809:46;;;;:::i;:::-;9786:69;;9904:6;9889:11;9874:12;:26;;;;:::i;:::-;9873:37;;;;:::i;:::-;9866:44;;;;;9593:325;;;:::o;5626:29::-;;;;:::o;7251:1315::-;4196:1;4344:7;;:19;4336:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:1;4412:7;:18;;;;7355:1:::1;7345:7;:11;7337:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7414:17;7434:10;;;;;;;;;;;:20;;;7455:10;7475:4;7434:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7414:67;;7513:7;7500:9;:20;;7492:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;7561:63;7589:10;7609:4;7616:7;7561:10;;;;;;;;;;;:27;;;;:63;;;;;;:::i;:::-;7637:11;7676:3;7662:10;;7652:7;:20;;;;:::i;:::-;7651:28;;;;:::i;:::-;7637:42;;7690:17;7720:3;7710:7;:13;;;;:::i;:::-;7690:33;;7736:42;7760:12;;;;;;;;;;;7774:3;7736:10;;;;;;;;;;;:23;;;;:42;;;;;:::i;:::-;7816:1;7795:23;;:9;:23;;;;:50;;;;;7835:10;7822:23;;:9;:23;;;;7795:50;7791:448;;;7871:15;:27;7887:10;7871:27;;;;;;;;;;;;;;;;;;;;;;;;;7870:28;7862:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7948:21;7998:3;7983:11;;7973:7;:21;;;;:::i;:::-;7972:29;;;;:::i;:::-;7948:53;;8016:49;8040:9;8051:13;8016:10;;;;;;;;;;;:23;;;;:49;;;;;:::i;:::-;8104:9;8080;:21;8090:10;8080:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;8158:4;8128:15;:27;8144:10;8128:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8202:9;8184:43;;;8213:13;8184:43;;;;;;:::i;:::-;;;;;;;;7847:392;7791:448;8251:17;8271:5;:17;8277:10;8271:17;;;;;;;;;;;;;;;8251:37;;8323:9;8299:4;:20;;;:33;;;;;;;:::i;:::-;;;;;;;;8364:15;8343:4;:18;;:36;;;;8416:1;8390:4;:23;;:27;;;;8481:9;8464:13;;:26;;;;;;;:::i;:::-;;;;;;;;8548:9;8508:50;;8516:10;8508:50;;;8528:7;8537:9;8508:50;;;;;;;:::i;:::-;;;;;;;;7326:1240;;;;4152:1:::0;4457:7;:22;;;;7251:1315;;:::o;10581:274::-;6864:5;;;;;;;;;;;6850:19;;:10;:19;;;6842:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10680:1:::1;10659:23;;:9;:23;;::::0;10651:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10719:16;10746:10;;;;;;;;;;;10719:38;;10788:9;10768:10;;:30;;;;;;;;;;;;;;;;;;10837:9;10814:33;;10827:8;10814:33;;;;;;;;;;;;10640:215;10581:274:::0;:::o;6279:28::-;;;;:::o;5680:31::-;;;;:::o;5518:20::-;;;;;;;;;;;;;:::o;5827:41::-;;;;:::o;6128:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10473:100::-;10525:7;10552:13;;10545:20;;10473:100;:::o;5565:34::-;;;;:::o;6223:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;5914:31::-;;;;:::o;10863:307::-;6864:5;;;;;;;;;;;6850:19;;:10;:19;;;6842:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10977:1:::1;10952:27;;:13;:27;;::::0;10944:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11024:20;11047:12;;;;;;;;;;;11024:35;;11085:13;11070:12;;:28;;;;;;;;;;;;;;;;;;11148:13;11114:48;;11134:12;11114:48;;;;;;;;;;;;10933:237;10863:307:::0;:::o;9926:539::-;4196:1;4344:7;;:19;4336:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:1;4412:7;:18;;;;9979:17:::1;9999:5;:17;10005:10;9999:17;;;;;;;;;;;;;;;9979:37;;10058:1;10035:4;:20;;;:24;10027:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10140:13;;10119:4;:18;;;:34;;;;:::i;:::-;10100:15;:53;;10092:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10192:15;10210:28;10227:10;10210:16;:28::i;:::-;10192:46;;10267:1;10257:7;:11;10249:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;10330:7;10306:4;:20;;;:31;;;;;;;:::i;:::-;;;;;;;;10395:15;10374:4;:18;;:36;;;;10437:10;10428:29;;;10449:7;10428:29;;;;;;:::i;:::-;;;;;;;;9968:497;;4152:1:::0;4457:7;:22;;;;9926:539::o;5404:24::-;;;;;;;;;;;;;:::o;5740:40::-;;;;:::o;2537:211::-;2654:86;2674:5;2704:23;;;2729:2;2733:5;2681:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:19;:86::i;:::-;2537:211;;;:::o;2756:248::-;2900:96;2920:5;2950:27;;;2979:4;2985:2;2989:5;2927:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2900:19;:96::i;:::-;2756:248;;;;:::o;3416:333::-;3497:23;3523:69;3551:4;3523:69;;;;;;;;;;;;;;;;;3531:5;3523:27;;;;:69;;;;;:::i;:::-;3497:95;;3627:1;3607:10;:17;:21;3603:139;;;3664:10;3653:30;;;;;;;;;;;;:::i;:::-;3645:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3603:139;3486:263;3416:333;;:::o;833:230::-;970:12;1002:53;1025:6;1033:4;1039:1;1042:12;1002:22;:53::i;:::-;995:60;;833:230;;;;;:::o;1706:733::-;1879:12;1912:18;1923:6;1912:10;:18::i;:::-;1904:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;1978:12;1992:23;2019:6;:11;;2038:8;2048:4;2019:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1977:76;;;;2068:7;2064:368;;;2099:10;2092:17;;;;;;2064:368;2166:1;2146:10;:17;:21;2142:279;;;2249:10;2243:17;2310:15;2297:10;2293:2;2289:19;2282:44;2142:279;2392:12;2385:20;;;;;;;;;;;:::i;:::-;;;;;;;;1706:733;;;;;;;:::o;121:196::-;181:4;198:12;265:7;253:20;245:28;;308:1;301:4;:8;294:15;;;121:196;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;674:117::-;783:1;780;773:12;920:122;993:24;1011:5;993:24;:::i;:::-;986:5;983:35;973:63;;1032:1;1029;1022:12;973:63;920:122;:::o;1048:139::-;1094:5;1132:6;1119:20;1110:29;;1148:33;1175:5;1148:33;:::i;:::-;1048:139;;;;:::o;1193:329::-;1252:6;1301:2;1289:9;1280:7;1276:23;1272:32;1269:119;;;1307:79;;:::i;:::-;1269:119;1427:1;1452:53;1497:7;1488:6;1477:9;1473:22;1452:53;:::i;:::-;1442:63;;1398:117;1193:329;;;;:::o;1528:77::-;1565:7;1594:5;1583:16;;1528:77;;;:::o;1611:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:222::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1735:222;;;;:::o;1963:122::-;2036:24;2054:5;2036:24;:::i;:::-;2029:5;2026:35;2016:63;;2075:1;2072;2065:12;2016:63;1963:122;:::o;2091:139::-;2137:5;2175:6;2162:20;2153:29;;2191:33;2218:5;2191:33;:::i;:::-;2091:139;;;;:::o;2236:474::-;2304:6;2312;2361:2;2349:9;2340:7;2336:23;2332:32;2329:119;;;2367:79;;:::i;:::-;2329:119;2487:1;2512:53;2557:7;2548:6;2537:9;2533:22;2512:53;:::i;:::-;2502:63;;2458:117;2614:2;2640:53;2685:7;2676:6;2665:9;2661:22;2640:53;:::i;:::-;2630:63;;2585:118;2236:474;;;;;:::o;2716:442::-;2865:4;2903:2;2892:9;2888:18;2880:26;;2916:71;2984:1;2973:9;2969:17;2960:6;2916:71;:::i;:::-;2997:72;3065:2;3054:9;3050:18;3041:6;2997:72;:::i;:::-;3079;3147:2;3136:9;3132:18;3123:6;3079:72;:::i;:::-;2716:442;;;;;;:::o;3164:90::-;3198:7;3241:5;3234:13;3227:21;3216:32;;3164:90;;;:::o;3260:109::-;3341:21;3356:5;3341:21;:::i;:::-;3336:3;3329:34;3260:109;;:::o;3375:210::-;3462:4;3500:2;3489:9;3485:18;3477:26;;3513:65;3575:1;3564:9;3560:17;3551:6;3513:65;:::i;:::-;3375:210;;;;:::o;3591:60::-;3619:3;3640:5;3633:12;;3591:60;;;:::o;3657:142::-;3707:9;3740:53;3758:34;3767:24;3785:5;3767:24;:::i;:::-;3758:34;:::i;:::-;3740:53;:::i;:::-;3727:66;;3657:142;;;:::o;3805:126::-;3855:9;3888:37;3919:5;3888:37;:::i;:::-;3875:50;;3805:126;;;:::o;3937:140::-;4001:9;4034:37;4065:5;4034:37;:::i;:::-;4021:50;;3937:140;;;:::o;4083:159::-;4184:51;4229:5;4184:51;:::i;:::-;4179:3;4172:64;4083:159;;:::o;4248:250::-;4355:4;4393:2;4382:9;4378:18;4370:26;;4406:85;4488:1;4477:9;4473:17;4464:6;4406:85;:::i;:::-;4248:250;;;;:::o;4504:169::-;4588:11;4622:6;4617:3;4610:19;4662:4;4657:3;4653:14;4638:29;;4504:169;;;;:::o;4679:181::-;4819:33;4815:1;4807:6;4803:14;4796:57;4679:181;:::o;4866:366::-;5008:3;5029:67;5093:2;5088:3;5029:67;:::i;:::-;5022:74;;5105:93;5194:3;5105:93;:::i;:::-;5223:2;5218:3;5214:12;5207:19;;4866:366;;;:::o;5238:419::-;5404:4;5442:2;5431:9;5427:18;5419:26;;5491:9;5485:4;5481:20;5477:1;5466:9;5462:17;5455:47;5519:131;5645:4;5519:131;:::i;:::-;5511:139;;5238:419;;;:::o;5663:167::-;5803:19;5799:1;5791:6;5787:14;5780:43;5663:167;:::o;5836:366::-;5978:3;5999:67;6063:2;6058:3;5999:67;:::i;:::-;5992:74;;6075:93;6164:3;6075:93;:::i;:::-;6193:2;6188:3;6184:12;6177:19;;5836:366;;;:::o;6208:419::-;6374:4;6412:2;6401:9;6397:18;6389:26;;6461:9;6455:4;6451:20;6447:1;6436:9;6432:17;6425:47;6489:131;6615:4;6489:131;:::i;:::-;6481:139;;6208:419;;;:::o;6633:180::-;6681:77;6678:1;6671:88;6778:4;6775:1;6768:15;6802:4;6799:1;6792:15;6819:191;6859:3;6878:20;6896:1;6878:20;:::i;:::-;6873:25;;6912:20;6930:1;6912:20;:::i;:::-;6907:25;;6955:1;6952;6948:9;6941:16;;6976:3;6973:1;6970:10;6967:36;;;6983:18;;:::i;:::-;6967:36;6819:191;;;;:::o;7016:171::-;7156:23;7152:1;7144:6;7140:14;7133:47;7016:171;:::o;7193:366::-;7335:3;7356:67;7420:2;7415:3;7356:67;:::i;:::-;7349:74;;7432:93;7521:3;7432:93;:::i;:::-;7550:2;7545:3;7541:12;7534:19;;7193:366;;;:::o;7565:419::-;7731:4;7769:2;7758:9;7754:18;7746:26;;7818:9;7812:4;7808:20;7804:1;7793:9;7789:17;7782:47;7846:131;7972:4;7846:131;:::i;:::-;7838:139;;7565:419;;;:::o;7990:170::-;8130:22;8126:1;8118:6;8114:14;8107:46;7990:170;:::o;8166:366::-;8308:3;8329:67;8393:2;8388:3;8329:67;:::i;:::-;8322:74;;8405:93;8494:3;8405:93;:::i;:::-;8523:2;8518:3;8514:12;8507:19;;8166:366;;;:::o;8538:419::-;8704:4;8742:2;8731:9;8727:18;8719:26;;8791:9;8785:4;8781:20;8777:1;8766:9;8762:17;8755:47;8819:131;8945:4;8819:131;:::i;:::-;8811:139;;8538:419;;;:::o;8963:410::-;9003:7;9026:20;9044:1;9026:20;:::i;:::-;9021:25;;9060:20;9078:1;9060:20;:::i;:::-;9055:25;;9115:1;9112;9108:9;9137:30;9155:11;9137:30;:::i;:::-;9126:41;;9316:1;9307:7;9303:15;9300:1;9297:22;9277:1;9270:9;9250:83;9227:139;;9346:18;;:::i;:::-;9227:139;9011:362;8963:410;;;;:::o;9379:180::-;9427:77;9424:1;9417:88;9524:4;9521:1;9514:15;9548:4;9545:1;9538:15;9565:185;9605:1;9622:20;9640:1;9622:20;:::i;:::-;9617:25;;9656:20;9674:1;9656:20;:::i;:::-;9651:25;;9695:1;9685:35;;9700:18;;:::i;:::-;9685:35;9742:1;9739;9735:9;9730:14;;9565:185;;;;:::o;9756:194::-;9796:4;9816:20;9834:1;9816:20;:::i;:::-;9811:25;;9850:20;9868:1;9850:20;:::i;:::-;9845:25;;9894:1;9891;9887:9;9879:17;;9918:1;9912:4;9909:11;9906:37;;;9923:18;;:::i;:::-;9906:37;9756:194;;;;:::o;9956:332::-;10077:4;10115:2;10104:9;10100:18;10092:26;;10128:71;10196:1;10185:9;10181:17;10172:6;10128:71;:::i;:::-;10209:72;10277:2;10266:9;10262:18;10253:6;10209:72;:::i;:::-;9956:332;;;;;:::o;10294:227::-;10434:34;10430:1;10422:6;10418:14;10411:58;10503:10;10498:2;10490:6;10486:15;10479:35;10294:227;:::o;10527:366::-;10669:3;10690:67;10754:2;10749:3;10690:67;:::i;:::-;10683:74;;10766:93;10855:3;10766:93;:::i;:::-;10884:2;10879:3;10875:12;10868:19;;10527:366;;;:::o;10899:419::-;11065:4;11103:2;11092:9;11088:18;11080:26;;11152:9;11146:4;11142:20;11138:1;11127:9;11123:17;11116:47;11180:131;11306:4;11180:131;:::i;:::-;11172:139;;10899:419;;;:::o;11324:332::-;11445:4;11483:2;11472:9;11468:18;11460:26;;11496:71;11564:1;11553:9;11549:17;11540:6;11496:71;:::i;:::-;11577:72;11645:2;11634:9;11630:18;11621:6;11577:72;:::i;:::-;11324:332;;;;;:::o;11662:143::-;11719:5;11750:6;11744:13;11735:22;;11766:33;11793:5;11766:33;:::i;:::-;11662:143;;;;:::o;11811:351::-;11881:6;11930:2;11918:9;11909:7;11905:23;11901:32;11898:119;;;11936:79;;:::i;:::-;11898:119;12056:1;12081:64;12137:7;12128:6;12117:9;12113:22;12081:64;:::i;:::-;12071:74;;12027:128;11811:351;;;;:::o;12168:173::-;12308:25;12304:1;12296:6;12292:14;12285:49;12168:173;:::o;12347:366::-;12489:3;12510:67;12574:2;12569:3;12510:67;:::i;:::-;12503:74;;12586:93;12675:3;12586:93;:::i;:::-;12704:2;12699:3;12695:12;12688:19;;12347:366;;;:::o;12719:419::-;12885:4;12923:2;12912:9;12908:18;12900:26;;12972:9;12966:4;12962:20;12958:1;12947:9;12943:17;12936:47;13000:131;13126:4;13000:131;:::i;:::-;12992:139;;12719:419;;;:::o;13144:180::-;13284:32;13280:1;13272:6;13268:14;13261:56;13144:180;:::o;13330:366::-;13472:3;13493:67;13557:2;13552:3;13493:67;:::i;:::-;13486:74;;13569:93;13658:3;13569:93;:::i;:::-;13687:2;13682:3;13678:12;13671:19;;13330:366;;;:::o;13702:419::-;13868:4;13906:2;13895:9;13891:18;13883:26;;13955:9;13949:4;13945:20;13941:1;13930:9;13926:17;13919:47;13983:131;14109:4;13983:131;:::i;:::-;13975:139;;13702:419;;;:::o;14127:164::-;14267:16;14263:1;14255:6;14251:14;14244:40;14127:164;:::o;14297:366::-;14439:3;14460:67;14524:2;14519:3;14460:67;:::i;:::-;14453:74;;14536:93;14625:3;14536:93;:::i;:::-;14654:2;14649:3;14645:12;14638:19;;14297:366;;;:::o;14669:419::-;14835:4;14873:2;14862:9;14858:18;14850:26;;14922:9;14916:4;14912:20;14908:1;14897:9;14893:17;14886:47;14950:131;15076:4;14950:131;:::i;:::-;14942:139;;14669:419;;;:::o;15094:171::-;15234:23;15230:1;15222:6;15218:14;15211:47;15094:171;:::o;15271:366::-;15413:3;15434:67;15498:2;15493:3;15434:67;:::i;:::-;15427:74;;15510:93;15599:3;15510:93;:::i;:::-;15628:2;15623:3;15619:12;15612:19;;15271:366;;;:::o;15643:419::-;15809:4;15847:2;15836:9;15832:18;15824:26;;15896:9;15890:4;15886:20;15882:1;15871:9;15867:17;15860:47;15924:131;16050:4;15924:131;:::i;:::-;15916:139;;15643:419;;;:::o;16068:179::-;16208:31;16204:1;16196:6;16192:14;16185:55;16068:179;:::o;16253:366::-;16395:3;16416:67;16480:2;16475:3;16416:67;:::i;:::-;16409:74;;16492:93;16581:3;16492:93;:::i;:::-;16610:2;16605:3;16601:12;16594:19;;16253:366;;;:::o;16625:419::-;16791:4;16829:2;16818:9;16814:18;16806:26;;16878:9;16872:4;16868:20;16864:1;16853:9;16849:17;16842:47;16906:131;17032:4;16906:131;:::i;:::-;16898:139;;16625:419;;;:::o;17050:332::-;17171:4;17209:2;17198:9;17194:18;17186:26;;17222:71;17290:1;17279:9;17275:17;17266:6;17222:71;:::i;:::-;17303:72;17371:2;17360:9;17356:18;17347:6;17303:72;:::i;:::-;17050:332;;;;;:::o;17388:442::-;17537:4;17575:2;17564:9;17560:18;17552:26;;17588:71;17656:1;17645:9;17641:17;17632:6;17588:71;:::i;:::-;17669:72;17737:2;17726:9;17722:18;17713:6;17669:72;:::i;:::-;17751;17819:2;17808:9;17804:18;17795:6;17751:72;:::i;:::-;17388:442;;;;;;:::o;17836:116::-;17906:21;17921:5;17906:21;:::i;:::-;17899:5;17896:32;17886:60;;17942:1;17939;17932:12;17886:60;17836:116;:::o;17958:137::-;18012:5;18043:6;18037:13;18028:22;;18059:30;18083:5;18059:30;:::i;:::-;17958:137;;;;:::o;18101:345::-;18168:6;18217:2;18205:9;18196:7;18192:23;18188:32;18185:119;;;18223:79;;:::i;:::-;18185:119;18343:1;18368:61;18421:7;18412:6;18401:9;18397:22;18368:61;:::i;:::-;18358:71;;18314:125;18101:345;;;;:::o;18452:229::-;18592:34;18588:1;18580:6;18576:14;18569:58;18661:12;18656:2;18648:6;18644:15;18637:37;18452:229;:::o;18687:366::-;18829:3;18850:67;18914:2;18909:3;18850:67;:::i;:::-;18843:74;;18926:93;19015:3;18926:93;:::i;:::-;19044:2;19039:3;19035:12;19028:19;;18687:366;;;:::o;19059:419::-;19225:4;19263:2;19252:9;19248:18;19240:26;;19312:9;19306:4;19302:20;19298:1;19287:9;19283:17;19276:47;19340:131;19466:4;19340:131;:::i;:::-;19332:139;;19059:419;;;:::o;19484:179::-;19624:31;19620:1;19612:6;19608:14;19601:55;19484:179;:::o;19669:366::-;19811:3;19832:67;19896:2;19891:3;19832:67;:::i;:::-;19825:74;;19908:93;19997:3;19908:93;:::i;:::-;20026:2;20021:3;20017:12;20010:19;;19669:366;;;:::o;20041:419::-;20207:4;20245:2;20234:9;20230:18;20222:26;;20294:9;20288:4;20284:20;20280:1;20269:9;20265:17;20258:47;20322:131;20448:4;20322:131;:::i;:::-;20314:139;;20041:419;;;:::o;20466:98::-;20517:6;20551:5;20545:12;20535:22;;20466:98;;;:::o;20570:147::-;20671:11;20708:3;20693:18;;20570:147;;;;:::o;20723:139::-;20812:6;20807:3;20802;20796:23;20853:1;20844:6;20839:3;20835:16;20828:27;20723:139;;;:::o;20868:386::-;20972:3;21000:38;21032:5;21000:38;:::i;:::-;21054:88;21135:6;21130:3;21054:88;:::i;:::-;21047:95;;21151:65;21209:6;21204:3;21197:4;21190:5;21186:16;21151:65;:::i;:::-;21241:6;21236:3;21232:16;21225:23;;20976:278;20868:386;;;;:::o;21260:271::-;21390:3;21412:93;21501:3;21492:6;21412:93;:::i;:::-;21405:100;;21522:3;21515:10;;21260:271;;;;:::o;21537:99::-;21589:6;21623:5;21617:12;21607:22;;21537:99;;;:::o;21642:102::-;21683:6;21734:2;21730:7;21725:2;21718:5;21714:14;21710:28;21700:38;;21642:102;;;:::o;21750:377::-;21838:3;21866:39;21899:5;21866:39;:::i;:::-;21921:71;21985:6;21980:3;21921:71;:::i;:::-;21914:78;;22001:65;22059:6;22054:3;22047:4;22040:5;22036:16;22001:65;:::i;:::-;22091:29;22113:6;22091:29;:::i;:::-;22086:3;22082:39;22075:46;;21842:285;21750:377;;;;:::o;22133:313::-;22246:4;22284:2;22273:9;22269:18;22261:26;;22333:9;22327:4;22323:20;22319:1;22308:9;22304:17;22297:47;22361:78;22434:4;22425:6;22361:78;:::i;:::-;22353:86;;22133:313;;;;:::o

Swarm Source

ipfs://fb5609f38a648b90e5d5428bc719a04ea63fe984a0911a3d9bfeb33c8facb708

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

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.