ETH Price: $2,980.14 (+1.67%)
Gas: 2 Gwei

Token

ERC20 ***
 

Overview

Max Total Supply

11,811.031904 ERC20 ***

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
0.425781 ERC20 ***

Value
$0.00
0xfcd987b0d6656c1c84ef73da18c6596d42a73c5e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
YFVault

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-20
*/

pragma solidity ^0.5.16;

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

contract Context {
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () internal {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
    }
}

contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }
    function name() public view returns (string memory) {
        return _name;
    }
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

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) {
        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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;

        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 Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

    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 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 {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface IVault {
    function token() external view returns (address);
    function deposit(uint) external;
    function withdraw(uint) external;
    function balanceOf(address) external view returns (uint);
}

contract YFVault is ERC20, ERC20Detailed, Ownable {
    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint256;

    string private constant NAME = "yfBETA Tether USD";
    string private constant SYMBOL = "yfUSDT";
    uint8 private constant DECIMALS = 6;
    address private constant ADDRESS_TOKEN = 0xdAC17F958D2ee523a2206206994597C13D831ec7;    // USDT
    address private constant ADDRESS_VAULT = 0x2f08119C6f07c006695E079AAFc638b8789FAf18;    // yearn USDT vault

    IERC20 public token;
    IVault public vault;

    mapping(address => uint256) public balancesToken;
    mapping(address => uint256) public balancesVault;

    address public governance;
    address public pool;
    bool public lockedDeposit = true;

    modifier onlyGovernance() {
        require(msg.sender == governance, "!governance");
        _;
    }

    constructor () public
    ERC20Detailed(NAME, SYMBOL, DECIMALS) {
        token = IERC20(ADDRESS_TOKEN);
        vault = IVault(ADDRESS_VAULT);
        governance = msg.sender;
    }



    function balanceToken() public view returns (uint) {
        return token.balanceOf(address(this));
    }
    function balanceVault() public view returns (uint) {
        return vault.balanceOf(address(this));
    }



    function depositAll() external {
        deposit(token.balanceOf(msg.sender));
    }

    function deposit(uint _amount) public {
        require(lockedDeposit == false, 'Deposits are locked');

        uint256 _totalVaultBalanceBefore = vault.balanceOf(address(this));
        token.safeTransferFrom(msg.sender, address(this), _amount);
        token.safeApprove(address(vault), _amount);
        vault.deposit(_amount);
        uint256 _totalVaultBalanceAfter = vault.balanceOf(address(this));

        uint256 _amountInVaultShares = _totalVaultBalanceAfter.sub(_totalVaultBalanceBefore);

        balancesToken[msg.sender] = balancesToken[msg.sender].add(_amount);
        balancesVault[msg.sender] = balancesVault[msg.sender].add(_amountInVaultShares);

        _mint(msg.sender, _amountInVaultShares);
    }

    function withdrawAll() external {
        withdraw(balanceOf(msg.sender));
    }

    function withdraw(uint _shares) public {
        _burn(msg.sender, _shares);

        uint256 _totalTokenBalanceBefore = token.balanceOf(address(this));
        vault.withdraw(_shares);
        uint256 _totalTokenBalanceAfter = token.balanceOf(address(this));

        uint256 _tokensTransfered = _totalTokenBalanceAfter.sub(_totalTokenBalanceBefore);

        uint256 _tokensToUser = _shares.mul(balancesToken[msg.sender]).div(balancesVault[msg.sender]);

        if(_tokensToUser > _tokensTransfered) {
            _tokensToUser = _tokensTransfered;
        }
        if(_tokensToUser > balancesToken[msg.sender]) {
            _tokensToUser = balancesToken[msg.sender];
        }

        balancesToken[msg.sender] = balancesToken[msg.sender].sub(_tokensToUser);
        balancesVault[msg.sender] = balancesVault[msg.sender].sub(_shares);

        token.safeTransfer(msg.sender, _tokensToUser);
    }



    function transfer(address _recipient, uint256 _amount) public returns (bool) {
        address _sender = _msgSender();

        _transfer(_msgSender(), _recipient, _amount);
        if(msg.sender != pool) {
            uint256 _amountInToken = _amount.mul(balancesToken[_sender]).div(balancesVault[_sender]);

            balancesVault[_sender] = balancesVault[_sender].sub(_amount, "Vault: transfer amount exceeds balance");
            balancesVault[_recipient] = balancesVault[_recipient].add(_amount);

            balancesToken[_sender] = balancesToken[_sender].sub(_amountInToken, "Vault: transfer amount exceeds balance");
            balancesToken[_recipient] = balancesToken[_recipient].add(_amountInToken);
        }

        return true;
    }



    function setPool(address _pool) public onlyGovernance {
        pool = _pool;
    }

    function setGovernance(address _governance) public onlyGovernance {
        governance = _governance;
    }

    function withdrawProfits() public onlyGovernance {
        token.safeTransfer(governance, balanceToken());
    }

    function withdrawTokenProfits(address _token) public onlyGovernance {
        require(_token != address(token), 'You can only withdraw reward token.');
        IERC20 _rewardToken = IERC20(_token);
        _rewardToken.safeTransfer(governance, _rewardToken.balanceOf(address(this)));
    }

    function lockDeposits() public onlyGovernance {
        require(lockedDeposit == false, 'Deposits are already locked');
        lockedDeposit = true;
    }
    function unlockDeposits() public onlyGovernance {
        require(lockedDeposit == true, 'Deposits are already unlocked');
        lockedDeposit = false;
    }
    function depositIsLocked() public view returns (bool) {
        return lockedDeposit;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balancesToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balancesVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"depositAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"depositIsLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"lockDeposits","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockedDeposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"setPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unlockDeposits","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawProfits","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawTokenProfits","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052600b805460ff60a01b1916600160a01b1790553480156200002457600080fd5b50604051806040016040528060118152602001701e59909155104815195d1a195c881554d1607a1b815250604051806040016040528060068152602001651e599554d11560d21b815250600682600390805190602001906200008892919062000175565b5081516200009e90600490602085019062000175565b506005805460ff191660ff9290921691909117905550620000c0905062000170565b60058054610100600160a81b0319166101006001600160a01b03938416810291909117918290556040519104909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600680546001600160a01b031990811673dac17f958d2ee523a2206206994597c13d831ec717909155600780548216732f08119c6f07c006695e079aafc638b8789faf18179055600a80549091163317905562000217565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001b857805160ff1916838001178555620001e8565b82800160010185558215620001e8579182015b82811115620001e8578251825591602001919060010190620001cb565b50620001f6929150620001fa565b5090565b6200017291905b80821115620001f6576000815560010162000201565b61236080620002276000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c8063853828b611610125578063b6b55f25116100ad578063de5f62681161007c578063de5f626814610579578063f2fde38b14610581578063fbfa77cf146105a7578063fc0c546a146105af578063fc996038146105b757610211565b8063b6b55f251461051e578063babe00611461053b578063d088a23114610543578063dd62ed3e1461054b57610211565b80639998e038116100f45780639998e03814610490578063a30955af14610498578063a457c2d7146104a0578063a9059cbb146104cc578063ab033ea9146104f857610211565b8063853828b6146104705780638da5cb5b146104785780638f32d59b1461048057806395d89b411461048857610211565b8063313ce567116101a85780635aa6e675116101775780635aa6e6751461040c57806370a0823114610414578063715018a61461043a5780637cbc0ba7146104425780637d6babb41461046857610211565b8063313ce5671461039457806339509351146103b257806339913e09146103de5780634437152a146103e657610211565b806318160ddd116101e457806318160ddd1461031157806323b872dd1461031957806323b8f6291461034f5780632e1a7d4d1461037757610211565b806306fdde0314610216578063095ea7b3146102935780630d1e027d146102d357806316f0115b146102ed575b600080fd5b61021e6105dd565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610258578181015183820152602001610240565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102bf600480360360408110156102a957600080fd5b506001600160a01b038135169060200135610673565b604080519115158252519081900360200190f35b6102db610691565b60408051918252519081900360200190f35b6102f561070d565b604080516001600160a01b039092168252519081900360200190f35b6102db61071c565b6102bf6004803603606081101561032f57600080fd5b506001600160a01b03813581169160208101359091169060400135610722565b6103756004803603602081101561036557600080fd5b50356001600160a01b03166107af565b005b6103756004803603602081101561038d57600080fd5b50356108e5565b61039c610b52565b6040805160ff9092168252519081900360200190f35b6102bf600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610b5b565b610375610baf565b610375600480360360208110156103fc57600080fd5b50356001600160a01b0316610c2f565b6102f5610c9e565b6102db6004803603602081101561042a57600080fd5b50356001600160a01b0316610cad565b610375610cc8565b6102db6004803603602081101561045857600080fd5b50356001600160a01b0316610d71565b610375610d83565b610375610e42565b6102f5610e53565b6102bf610e67565b61021e610e92565b6102bf610ef3565b6102db610f03565b6102bf600480360360408110156104b657600080fd5b506001600160a01b038135169060200135610f4e565b6102bf600480360360408110156104e257600080fd5b506001600160a01b038135169060200135610fbc565b6103756004803603602081101561050e57600080fd5b50356001600160a01b0316611166565b6103756004803603602081101561053457600080fd5b50356111d5565b6102bf611449565b610375611459565b6102db6004803603604081101561056157600080fd5b506001600160a01b038135811691602001351661151a565b610375611545565b6103756004803603602081101561059757600080fd5b50356001600160a01b03166115c2565b6102f5611627565b6102f5611636565b6102db600480360360208110156105cd57600080fd5b50356001600160a01b0316611645565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106695780601f1061063e57610100808354040283529160200191610669565b820191906000526020600020905b81548152906001019060200180831161064c57829003601f168201915b5050505050905090565b6000610687610680611657565b848461165b565b5060015b92915050565b600754604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156106dc57600080fd5b505afa1580156106f0573d6000803e3d6000fd5b505050506040513d602081101561070657600080fd5b5051905090565b600b546001600160a01b031681565b60025490565b600061072f848484611747565b6107a58461073b611657565b6107a085604051806060016040528060288152602001612215602891396001600160a01b038a16600090815260016020526040812090610779611657565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6118a316565b61165b565b5060019392505050565b600a546001600160a01b031633146107fc576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b6006546001600160a01b03828116911614156108495760405162461bcd60e51b81526004018080602001828103825260238152602001806121ab6023913960400191505060405180910390fd5b600a54604080516370a0823160e01b8152306004820152905183926108e1926001600160a01b0391821692918516916370a0823191602480820192602092909190829003018186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b50516001600160a01b038416919063ffffffff61193a16565b5050565b6108ef3382611991565b600654604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561093a57600080fd5b505afa15801561094e573d6000803e3d6000fd5b505050506040513d602081101561096457600080fd5b505160075460408051632e1a7d4d60e01b81526004810186905290519293506001600160a01b0390911691632e1a7d4d9160248082019260009290919082900301818387803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b5050600654604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b158015610a1b57600080fd5b505afa158015610a2f573d6000803e3d6000fd5b505050506040513d6020811015610a4557600080fd5b505190506000610a5b828463ffffffff611a8d16565b3360009081526009602090815260408083205460089092528220549293509091610a9d9190610a9190889063ffffffff611ad616565b9063ffffffff611b2f16565b905081811115610aaa5750805b33600090815260086020526040902054811115610ad35750336000908152600860205260409020545b33600090815260086020526040902054610af3908263ffffffff611a8d16565b33600090815260086020908152604080832093909355600990522054610b1f908663ffffffff611a8d16565b33600081815260096020526040902091909155600654610b4b916001600160a01b03909116908361193a565b5050505050565b60055460ff1690565b6000610687610b68611657565b846107a08560016000610b79611657565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611b7116565b600a546001600160a01b03163314610bfc576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600a54610c2d906001600160a01b0316610c14610f03565b6006546001600160a01b0316919063ffffffff61193a16565b565b600a546001600160a01b03163314610c7c576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031681565b6001600160a01b031660009081526020819052604090205490565b610cd0610e67565b610d21576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b60096020526000908152604090205481565b600a546001600160a01b03163314610dd0576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600b54600160a01b900460ff161515600114610e33576040805162461bcd60e51b815260206004820152601d60248201527f4465706f736974732061726520616c726561647920756e6c6f636b6564000000604482015290519081900360640190fd5b600b805460ff60a01b19169055565b610c2d610e4e33610cad565b6108e5565b60055461010090046001600160a01b031690565b60055460009061010090046001600160a01b0316610e83611657565b6001600160a01b031614905090565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106695780601f1061063e57610100808354040283529160200191610669565b600b54600160a01b900460ff1681565b600654604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156106dc57600080fd5b6000610687610f5b611657565b846107a0856040518060600160405280602581526020016123076025913960016000610f85611657565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6118a316565b600080610fc7611657565b9050610fdb610fd4611657565b8585611747565b600b546001600160a01b031633146107a5576001600160a01b03811660009081526009602090815260408083205460089092528220546110279190610a9190879063ffffffff611ad616565b905061106c846040518060600160405280602681526020016120f8602691396001600160a01b038516600090815260096020526040902054919063ffffffff6118a316565b6001600160a01b0380841660009081526009602052604080822093909355908716815220546110a1908563ffffffff611b7116565b60096000876001600160a01b03166001600160a01b031681526020019081526020016000208190555061110d816040518060600160405280602681526020016120f8602691396001600160a01b038516600090815260086020526040902054919063ffffffff6118a316565b6001600160a01b038084166000908152600860205260408082209390935590871681522054611142908263ffffffff611b7116565b6001600160a01b038616600090815260086020526040902055505060019392505050565b600a546001600160a01b031633146111b3576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600b54600160a01b900460ff161561122a576040805162461bcd60e51b815260206004820152601360248201527211195c1bdcda5d1cc8185c99481b1bd8dad959606a1b604482015290519081900360640190fd5b600754604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561127557600080fd5b505afa158015611289573d6000803e3d6000fd5b505050506040513d602081101561129f57600080fd5b50516006549091506112c2906001600160a01b031633308563ffffffff611bcb16565b6007546006546112e5916001600160a01b0391821691168463ffffffff611c2516565b6007546040805163b6b55f2560e01b81526004810185905290516001600160a01b039092169163b6b55f259160248082019260009290919082900301818387803b15801561133257600080fd5b505af1158015611346573d6000803e3d6000fd5b5050600754604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b15801561139757600080fd5b505afa1580156113ab573d6000803e3d6000fd5b505050506040513d60208110156113c157600080fd5b5051905060006113d7828463ffffffff611a8d16565b336000908152600860205260409020549091506113fa908563ffffffff611b7116565b33600090815260086020908152604080832093909355600990522054611426908263ffffffff611b7116565b336000818152600960205260409020919091556114439082611d38565b50505050565b600b54600160a01b900460ff1690565b600a546001600160a01b031633146114a6576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600b54600160a01b900460ff1615611505576040805162461bcd60e51b815260206004820152601b60248201527f4465706f736974732061726520616c7265616479206c6f636b65640000000000604482015290519081900360640190fd5b600b805460ff60a01b1916600160a01b179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600654604080516370a0823160e01b81523360048201529051610c2d926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561159157600080fd5b505afa1580156115a5573d6000803e3d6000fd5b505050506040513d60208110156115bb57600080fd5b50516111d5565b6115ca610e67565b61161b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61162481611e28565b50565b6007546001600160a01b031681565b6006546001600160a01b031681565b60086020526000908152604090205481565b3390565b6001600160a01b0383166116a05760405162461bcd60e51b81526004018080602001828103825260248152602001806122836024913960400191505060405180910390fd5b6001600160a01b0382166116e55760405162461bcd60e51b81526004018080602001828103825260228152602001806121896022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661178c5760405162461bcd60e51b815260040180806020018281038252602581526020018061225e6025913960400191505060405180910390fd5b6001600160a01b0382166117d15760405162461bcd60e51b815260040180806020018281038252602381526020018061211e6023913960400191505060405180910390fd5b611814816040518060600160405280602681526020016121ce602691396001600160a01b038616600090815260208190526040902054919063ffffffff6118a316565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611849908263ffffffff611b7116565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156119325760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118f75781810151838201526020016118df565b50505050905090810190601f1680156119245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261198c908490611ed4565b505050565b6001600160a01b0382166119d65760405162461bcd60e51b815260040180806020018281038252602181526020018061223d6021913960400191505060405180910390fd5b611a1981604051806060016040528060228152602001612141602291396001600160a01b038516600090815260208190526040902054919063ffffffff6118a316565b6001600160a01b038316600090815260208190526040902055600254611a45908263ffffffff611a8d16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000611acf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118a3565b9392505050565b600082611ae55750600061068b565b82820282848281611af257fe5b0414611acf5760405162461bcd60e51b81526004018080602001828103825260218152602001806121f46021913960400191505060405180910390fd5b6000611acf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061208c565b600082820183811015611acf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611443908590611ed4565b801580611cab575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d6020811015611ca757600080fd5b5051155b611ce65760405162461bcd60e51b81526004018080602001828103825260368152602001806122d16036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261198c908490611ed4565b6001600160a01b038216611d93576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254611da6908263ffffffff611b7116565b6002556001600160a01b038216600090815260208190526040902054611dd2908263ffffffff611b7116565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116611e6d5760405162461bcd60e51b81526004018080602001828103825260268152602001806121636026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b611ee6826001600160a01b03166120f1565b611f37576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f755780518252601f199092019160209182019101611f56565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fd7576040519150601f19603f3d011682016040523d82523d6000602084013e611fdc565b606091505b509150915081612033576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156114435780806020019051602081101561204f57600080fd5b50516114435760405162461bcd60e51b815260040180806020018281038252602a8152602001806122a7602a913960400191505060405180910390fd5b600081836120db5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156118f75781810151838201526020016118df565b5060008385816120e757fe5b0495945050505050565b3b15159056fe5661756c743a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373596f752063616e206f6e6c792077697468647261772072657761726420746f6b656e2e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158201d5c1be3d263866e85ea2416e7c8ea787acf08696fdfe2751f69da0503a7f9ba64736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102115760003560e01c8063853828b611610125578063b6b55f25116100ad578063de5f62681161007c578063de5f626814610579578063f2fde38b14610581578063fbfa77cf146105a7578063fc0c546a146105af578063fc996038146105b757610211565b8063b6b55f251461051e578063babe00611461053b578063d088a23114610543578063dd62ed3e1461054b57610211565b80639998e038116100f45780639998e03814610490578063a30955af14610498578063a457c2d7146104a0578063a9059cbb146104cc578063ab033ea9146104f857610211565b8063853828b6146104705780638da5cb5b146104785780638f32d59b1461048057806395d89b411461048857610211565b8063313ce567116101a85780635aa6e675116101775780635aa6e6751461040c57806370a0823114610414578063715018a61461043a5780637cbc0ba7146104425780637d6babb41461046857610211565b8063313ce5671461039457806339509351146103b257806339913e09146103de5780634437152a146103e657610211565b806318160ddd116101e457806318160ddd1461031157806323b872dd1461031957806323b8f6291461034f5780632e1a7d4d1461037757610211565b806306fdde0314610216578063095ea7b3146102935780630d1e027d146102d357806316f0115b146102ed575b600080fd5b61021e6105dd565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610258578181015183820152602001610240565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102bf600480360360408110156102a957600080fd5b506001600160a01b038135169060200135610673565b604080519115158252519081900360200190f35b6102db610691565b60408051918252519081900360200190f35b6102f561070d565b604080516001600160a01b039092168252519081900360200190f35b6102db61071c565b6102bf6004803603606081101561032f57600080fd5b506001600160a01b03813581169160208101359091169060400135610722565b6103756004803603602081101561036557600080fd5b50356001600160a01b03166107af565b005b6103756004803603602081101561038d57600080fd5b50356108e5565b61039c610b52565b6040805160ff9092168252519081900360200190f35b6102bf600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610b5b565b610375610baf565b610375600480360360208110156103fc57600080fd5b50356001600160a01b0316610c2f565b6102f5610c9e565b6102db6004803603602081101561042a57600080fd5b50356001600160a01b0316610cad565b610375610cc8565b6102db6004803603602081101561045857600080fd5b50356001600160a01b0316610d71565b610375610d83565b610375610e42565b6102f5610e53565b6102bf610e67565b61021e610e92565b6102bf610ef3565b6102db610f03565b6102bf600480360360408110156104b657600080fd5b506001600160a01b038135169060200135610f4e565b6102bf600480360360408110156104e257600080fd5b506001600160a01b038135169060200135610fbc565b6103756004803603602081101561050e57600080fd5b50356001600160a01b0316611166565b6103756004803603602081101561053457600080fd5b50356111d5565b6102bf611449565b610375611459565b6102db6004803603604081101561056157600080fd5b506001600160a01b038135811691602001351661151a565b610375611545565b6103756004803603602081101561059757600080fd5b50356001600160a01b03166115c2565b6102f5611627565b6102f5611636565b6102db600480360360208110156105cd57600080fd5b50356001600160a01b0316611645565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106695780601f1061063e57610100808354040283529160200191610669565b820191906000526020600020905b81548152906001019060200180831161064c57829003601f168201915b5050505050905090565b6000610687610680611657565b848461165b565b5060015b92915050565b600754604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156106dc57600080fd5b505afa1580156106f0573d6000803e3d6000fd5b505050506040513d602081101561070657600080fd5b5051905090565b600b546001600160a01b031681565b60025490565b600061072f848484611747565b6107a58461073b611657565b6107a085604051806060016040528060288152602001612215602891396001600160a01b038a16600090815260016020526040812090610779611657565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6118a316565b61165b565b5060019392505050565b600a546001600160a01b031633146107fc576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b6006546001600160a01b03828116911614156108495760405162461bcd60e51b81526004018080602001828103825260238152602001806121ab6023913960400191505060405180910390fd5b600a54604080516370a0823160e01b8152306004820152905183926108e1926001600160a01b0391821692918516916370a0823191602480820192602092909190829003018186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b50516001600160a01b038416919063ffffffff61193a16565b5050565b6108ef3382611991565b600654604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561093a57600080fd5b505afa15801561094e573d6000803e3d6000fd5b505050506040513d602081101561096457600080fd5b505160075460408051632e1a7d4d60e01b81526004810186905290519293506001600160a01b0390911691632e1a7d4d9160248082019260009290919082900301818387803b1580156109b657600080fd5b505af11580156109ca573d6000803e3d6000fd5b5050600654604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b158015610a1b57600080fd5b505afa158015610a2f573d6000803e3d6000fd5b505050506040513d6020811015610a4557600080fd5b505190506000610a5b828463ffffffff611a8d16565b3360009081526009602090815260408083205460089092528220549293509091610a9d9190610a9190889063ffffffff611ad616565b9063ffffffff611b2f16565b905081811115610aaa5750805b33600090815260086020526040902054811115610ad35750336000908152600860205260409020545b33600090815260086020526040902054610af3908263ffffffff611a8d16565b33600090815260086020908152604080832093909355600990522054610b1f908663ffffffff611a8d16565b33600081815260096020526040902091909155600654610b4b916001600160a01b03909116908361193a565b5050505050565b60055460ff1690565b6000610687610b68611657565b846107a08560016000610b79611657565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611b7116565b600a546001600160a01b03163314610bfc576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600a54610c2d906001600160a01b0316610c14610f03565b6006546001600160a01b0316919063ffffffff61193a16565b565b600a546001600160a01b03163314610c7c576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031681565b6001600160a01b031660009081526020819052604090205490565b610cd0610e67565b610d21576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b60096020526000908152604090205481565b600a546001600160a01b03163314610dd0576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600b54600160a01b900460ff161515600114610e33576040805162461bcd60e51b815260206004820152601d60248201527f4465706f736974732061726520616c726561647920756e6c6f636b6564000000604482015290519081900360640190fd5b600b805460ff60a01b19169055565b610c2d610e4e33610cad565b6108e5565b60055461010090046001600160a01b031690565b60055460009061010090046001600160a01b0316610e83611657565b6001600160a01b031614905090565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106695780601f1061063e57610100808354040283529160200191610669565b600b54600160a01b900460ff1681565b600654604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156106dc57600080fd5b6000610687610f5b611657565b846107a0856040518060600160405280602581526020016123076025913960016000610f85611657565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6118a316565b600080610fc7611657565b9050610fdb610fd4611657565b8585611747565b600b546001600160a01b031633146107a5576001600160a01b03811660009081526009602090815260408083205460089092528220546110279190610a9190879063ffffffff611ad616565b905061106c846040518060600160405280602681526020016120f8602691396001600160a01b038516600090815260096020526040902054919063ffffffff6118a316565b6001600160a01b0380841660009081526009602052604080822093909355908716815220546110a1908563ffffffff611b7116565b60096000876001600160a01b03166001600160a01b031681526020019081526020016000208190555061110d816040518060600160405280602681526020016120f8602691396001600160a01b038516600090815260086020526040902054919063ffffffff6118a316565b6001600160a01b038084166000908152600860205260408082209390935590871681522054611142908263ffffffff611b7116565b6001600160a01b038616600090815260086020526040902055505060019392505050565b600a546001600160a01b031633146111b3576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600b54600160a01b900460ff161561122a576040805162461bcd60e51b815260206004820152601360248201527211195c1bdcda5d1cc8185c99481b1bd8dad959606a1b604482015290519081900360640190fd5b600754604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561127557600080fd5b505afa158015611289573d6000803e3d6000fd5b505050506040513d602081101561129f57600080fd5b50516006549091506112c2906001600160a01b031633308563ffffffff611bcb16565b6007546006546112e5916001600160a01b0391821691168463ffffffff611c2516565b6007546040805163b6b55f2560e01b81526004810185905290516001600160a01b039092169163b6b55f259160248082019260009290919082900301818387803b15801561133257600080fd5b505af1158015611346573d6000803e3d6000fd5b5050600754604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b15801561139757600080fd5b505afa1580156113ab573d6000803e3d6000fd5b505050506040513d60208110156113c157600080fd5b5051905060006113d7828463ffffffff611a8d16565b336000908152600860205260409020549091506113fa908563ffffffff611b7116565b33600090815260086020908152604080832093909355600990522054611426908263ffffffff611b7116565b336000818152600960205260409020919091556114439082611d38565b50505050565b600b54600160a01b900460ff1690565b600a546001600160a01b031633146114a6576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600b54600160a01b900460ff1615611505576040805162461bcd60e51b815260206004820152601b60248201527f4465706f736974732061726520616c7265616479206c6f636b65640000000000604482015290519081900360640190fd5b600b805460ff60a01b1916600160a01b179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600654604080516370a0823160e01b81523360048201529051610c2d926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561159157600080fd5b505afa1580156115a5573d6000803e3d6000fd5b505050506040513d60208110156115bb57600080fd5b50516111d5565b6115ca610e67565b61161b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61162481611e28565b50565b6007546001600160a01b031681565b6006546001600160a01b031681565b60086020526000908152604090205481565b3390565b6001600160a01b0383166116a05760405162461bcd60e51b81526004018080602001828103825260248152602001806122836024913960400191505060405180910390fd5b6001600160a01b0382166116e55760405162461bcd60e51b81526004018080602001828103825260228152602001806121896022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661178c5760405162461bcd60e51b815260040180806020018281038252602581526020018061225e6025913960400191505060405180910390fd5b6001600160a01b0382166117d15760405162461bcd60e51b815260040180806020018281038252602381526020018061211e6023913960400191505060405180910390fd5b611814816040518060600160405280602681526020016121ce602691396001600160a01b038616600090815260208190526040902054919063ffffffff6118a316565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611849908263ffffffff611b7116565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156119325760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118f75781810151838201526020016118df565b50505050905090810190601f1680156119245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261198c908490611ed4565b505050565b6001600160a01b0382166119d65760405162461bcd60e51b815260040180806020018281038252602181526020018061223d6021913960400191505060405180910390fd5b611a1981604051806060016040528060228152602001612141602291396001600160a01b038516600090815260208190526040902054919063ffffffff6118a316565b6001600160a01b038316600090815260208190526040902055600254611a45908263ffffffff611a8d16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000611acf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118a3565b9392505050565b600082611ae55750600061068b565b82820282848281611af257fe5b0414611acf5760405162461bcd60e51b81526004018080602001828103825260218152602001806121f46021913960400191505060405180910390fd5b6000611acf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061208c565b600082820183811015611acf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611443908590611ed4565b801580611cab575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d6020811015611ca757600080fd5b5051155b611ce65760405162461bcd60e51b81526004018080602001828103825260368152602001806122d16036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261198c908490611ed4565b6001600160a01b038216611d93576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254611da6908263ffffffff611b7116565b6002556001600160a01b038216600090815260208190526040902054611dd2908263ffffffff611b7116565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116611e6d5760405162461bcd60e51b81526004018080602001828103825260268152602001806121636026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b611ee6826001600160a01b03166120f1565b611f37576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f755780518252601f199092019160209182019101611f56565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fd7576040519150601f19603f3d011682016040523d82523d6000602084013e611fdc565b606091505b509150915081612033576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156114435780806020019051602081101561204f57600080fd5b50516114435760405162461bcd60e51b815260040180806020018281038252602a8152602001806122a7602a913960400191505060405180910390fd5b600081836120db5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156118f75781810151838201526020016118df565b5060008385816120e757fe5b0495945050505050565b3b15159056fe5661756c743a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373596f752063616e206f6e6c792077697468647261772072657761726420746f6b656e2e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158201d5c1be3d263866e85ea2416e7c8ea787acf08696fdfe2751f69da0503a7f9ba64736f6c63430005110032

Deployed Bytecode Sourcemap

10831:5037:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10831:5037:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5973:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5973:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2993:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2993:152:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12041:107;;;:::i;:::-;;;;;;;;;;;;;;;;11549:19;;;:::i;:::-;;;;-1:-1:-1;;;;;11549:19:0;;;;;;;;;;;;;;2476:91;;;:::i;3151:304::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3151:304:0;;;;;;;;;;;;;;;;;:::i;15139:293::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15139:293:0;-1:-1:-1;;;;;15139:293:0;;:::i;:::-;;13089:925;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13089:925:0;;:::i;6155:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3461:210;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3461:210:0;;;;;;;;:::i;15017:114::-;;;:::i;14807:85::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14807:85:0;-1:-1:-1;;;;;14807:85:0;;:::i;11517:25::-;;;:::i;2573:110::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2573:110:0;-1:-1:-1;;;;;2573:110:0;;:::i;1735:140::-;;;:::i;11460:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11460:48:0;-1:-1:-1;;;;;11460:48:0;;:::i;15604:162::-;;;:::i;12999:82::-;;;:::i;1438:79::-;;;:::i;1635:94::-;;;:::i;6062:87::-;;;:::i;11575:32::-;;;:::i;11928:107::-;;;:::i;3677:261::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3677:261:0;;;;;;;;:::i;14026:769::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14026:769:0;;;;;;;;:::i;14900:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14900:109:0;-1:-1:-1;;;;;14900:109:0;;:::i;12254:737::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12254:737:0;;:::i;15772:93::-;;;:::i;15440:158::-;;;:::i;2853:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2853:134:0;;;;;;;;;;:::i;12160:86::-;;;:::i;1881:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1881:109:0;-1:-1:-1;;;;;1881:109:0;;:::i;11377:19::-;;;:::i;11351:::-;;;:::i;11405:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11405:48:0;-1:-1:-1;;;;;11405:48:0;;:::i;5973:83::-;6043:5;6036:12;;;;;;;;-1:-1:-1;;6036:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6010:13;;6036:12;;6043:5;;6036:12;;6043:5;6036:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5973:83;:::o;2993:152::-;3059:4;3076:39;3085:12;:10;:12::i;:::-;3099:7;3108:6;3076:8;:39::i;:::-;-1:-1:-1;3133:4:0;2993:152;;;;;:::o;12041:107::-;12110:5;;:30;;;-1:-1:-1;;;12110:30:0;;12134:4;12110:30;;;;;;12086:4;;-1:-1:-1;;;;;12110:5:0;;:15;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;12110:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12110:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12110:30:0;;-1:-1:-1;12041:107:0;:::o;11549:19::-;;;-1:-1:-1;;;;;11549:19:0;;:::o;2476:91::-;2547:12;;2476:91;:::o;3151:304::-;3240:4;3257:36;3267:6;3275:9;3286:6;3257:9;:36::i;:::-;3304:121;3313:6;3321:12;:10;:12::i;:::-;3335:89;3373:6;3335:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3335:19:0;;;;;;:11;:19;;;;;;3355:12;:10;:12::i;:::-;-1:-1:-1;;;;;3335:33:0;;;;;;;;;;;;-1:-1:-1;3335:33:0;;;:89;;:37;:89;:::i;:::-;3304:8;:121::i;:::-;-1:-1:-1;3443:4:0;3151:304;;;;;:::o;15139:293::-;11675:10;;-1:-1:-1;;;;;11675:10:0;11661;:24;11653:48;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;;;;15244:5;;-1:-1:-1;;;;;15226:24:0;;;15244:5;;15226:24;;15218:72;;;;-1:-1:-1;;;15218:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15374:10;;15386:37;;;-1:-1:-1;;;15386:37:0;;15417:4;15386:37;;;;;;15330:6;;15348:76;;-1:-1:-1;;;;;15374:10:0;;;;15386:22;;;;;;:37;;;;;;;;;;;;;;;:22;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;15386:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15386:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15386:37:0;-1:-1:-1;;;;;15348:25:0;;;:76;;:25;:76;:::i;:::-;11712:1;15139:293;:::o;13089:925::-;13139:26;13145:10;13157:7;13139:5;:26::i;:::-;13213:5;;:30;;;-1:-1:-1;;;13213:30:0;;13237:4;13213:30;;;;;;13178:32;;-1:-1:-1;;;;;13213:5:0;;:15;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;13213:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13213:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13213:30:0;13254:5;;:23;;;-1:-1:-1;;;13254:23:0;;;;;;;;;;13213:30;;-1:-1:-1;;;;;;13254:5:0;;;;:14;;:23;;;;;:5;;:23;;;;;;;;:5;;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;13254:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13322:5:0;;:30;;;-1:-1:-1;;;13322:30:0;;13346:4;13322:30;;;;;;13288:31;;-1:-1:-1;;;;;;13322:5:0;;;;-1:-1:-1;13322:15:0;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;13322:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13322:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13322:30:0;;-1:-1:-1;13365:25:0;13393:53;13322:30;13421:24;13393:53;:27;:53;:::i;:::-;13540:10;13459:21;13526:25;;;:13;:25;;;;;;;;;13495:13;:25;;;;;;13365:81;;-1:-1:-1;13459:21:0;;13483:69;;13526:25;13483:38;;:7;;:38;:11;:38;:::i;:::-;:42;:69;:42;:69;:::i;:::-;13459:93;;13584:17;13568:13;:33;13565:98;;;-1:-1:-1;13634:17:0;13565:98;13706:10;13692:25;;;;:13;:25;;;;;;13676:41;;13673:114;;;-1:-1:-1;13764:10:0;13750:25;;;;:13;:25;;;;;;13673:114;13841:10;13827:25;;;;:13;:25;;;;;;:44;;13857:13;13827:44;:29;:44;:::i;:::-;13813:10;13799:25;;;;:13;:25;;;;;;;;:72;;;;13910:13;:25;;;;:38;;13940:7;13910:38;:29;:38;:::i;:::-;13896:10;13882:25;;;;:13;:25;;;;;:66;;;;13961:5;;:45;;-1:-1:-1;;;;;13961:5:0;;;;13992:13;13961:18;:45::i;:::-;13089:925;;;;;:::o;6155:83::-;6221:9;;;;6155:83;:::o;3461:210::-;3541:4;3558:83;3567:12;:10;:12::i;:::-;3581:7;3590:50;3629:10;3590:11;:25;3602:12;:10;:12::i;:::-;-1:-1:-1;;;;;3590:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;3590:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;15017:114::-;11675:10;;-1:-1:-1;;;;;11675:10:0;11661;:24;11653:48;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;;;;15096:10;;15077:46;;-1:-1:-1;;;;;15096:10:0;15108:14;:12;:14::i;:::-;15077:5;;-1:-1:-1;;;;;15077:5:0;;:46;;:18;:46;:::i;:::-;15017:114::o;14807:85::-;11675:10;;-1:-1:-1;;;;;11675:10:0;11661;:24;11653:48;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;;;;14872:4;:12;;-1:-1:-1;;;;;;14872:12:0;-1:-1:-1;;;;;14872:12:0;;;;;;;;;;14807:85::o;11517:25::-;;;-1:-1:-1;;;;;11517:25:0;;:::o;2573:110::-;-1:-1:-1;;;;;2657:18:0;2630:7;2657:18;;;;;;;;;;;;2573:110::o;1735:140::-;1563:9;:7;:9::i;:::-;1555:54;;;;;-1:-1:-1;;;1555:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1818:6;;1797:40;;1834:1;;1818:6;;;-1:-1:-1;;;;;1818:6:0;;1797:40;;1834:1;;1797:40;1848:6;:19;;-1:-1:-1;;;;;;1848:19:0;;;1735:140::o;11460:48::-;;;;;;;;;;;;;:::o;15604:162::-;11675:10;;-1:-1:-1;;;;;11675:10:0;11661;:24;11653:48;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;;;;15671:13;;-1:-1:-1;;;15671:13:0;;;;:21;;15688:4;15671:21;15663:63;;;;;-1:-1:-1;;;15663:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15737:13;:21;;-1:-1:-1;;;;15737:21:0;;;15604:162::o;12999:82::-;13042:31;13051:21;13061:10;13051:9;:21::i;:::-;13042:8;:31::i;1438:79::-;1503:6;;;;;-1:-1:-1;;;;;1503:6:0;;1438:79::o;1635:94::-;1715:6;;1675:4;;1715:6;;;-1:-1:-1;;;;;1715:6:0;1699:12;:10;:12::i;:::-;-1:-1:-1;;;;;1699:22:0;;1692:29;;1635:94;:::o;6062:87::-;6134:7;6127:14;;;;;;;;-1:-1:-1;;6127:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6101:13;;6127:14;;6134:7;;6127:14;;6134:7;6127:14;;;;;;;;;;;;;;;;;;;;;;;;11575:32;;;-1:-1:-1;;;11575:32:0;;;;;:::o;11928:107::-;11997:5;;:30;;;-1:-1:-1;;;11997:30:0;;12021:4;11997:30;;;;;;11973:4;;-1:-1:-1;;;;;11997:5:0;;:15;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;3677:261:0;3762:4;3779:129;3788:12;:10;:12::i;:::-;3802:7;3811:96;3850:15;3811:96;;;;;;;;;;;;;;;;;:11;:25;3823:12;:10;:12::i;:::-;-1:-1:-1;;;;;3811:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;3811:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;14026:769::-;14097:4;14114:15;14132:12;:10;:12::i;:::-;14114:30;;14157:44;14167:12;:10;:12::i;:::-;14181:10;14193:7;14157:9;:44::i;:::-;14229:4;;-1:-1:-1;;;;;14229:4:0;14215:10;:18;14212:552;;-1:-1:-1;;;;;14315:22:0;;14250;14315;;;:13;:22;;;;;;;;;14287:13;:22;;;;;;14275:63;;14315:22;14275:35;;:7;;:35;:11;:35;:::i;:63::-;14250:88;;14380:77;14407:7;14380:77;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14380:22:0;;;;;;:13;:22;;;;;;;:77;;:26;:77;:::i;:::-;-1:-1:-1;;;;;14355:22:0;;;;;;;:13;:22;;;;;;:102;;;;14500:25;;;;;;;:38;;14530:7;14500:38;:29;:38;:::i;:::-;14472:13;:25;14486:10;-1:-1:-1;;;;;14472:25:0;-1:-1:-1;;;;;14472:25:0;;;;;;;;;;;;:66;;;;14580:84;14607:14;14580:84;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14580:22:0;;;;;;:13;:22;;;;;;;:84;;:26;:84;:::i;:::-;-1:-1:-1;;;;;14555:22:0;;;;;;;:13;:22;;;;;;:109;;;;14707:25;;;;;;;:45;;14737:14;14707:45;:29;:45;:::i;:::-;-1:-1:-1;;;;;14679:25:0;;;;;;:13;:25;;;;;:73;-1:-1:-1;;14783:4:0;;14026:769;-1:-1:-1;;;14026:769:0:o;14900:109::-;11675:10;;-1:-1:-1;;;;;11675:10:0;11661;:24;11653:48;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;;;;14977:10;:24;;-1:-1:-1;;;;;;14977:24:0;-1:-1:-1;;;;;14977:24:0;;;;;;;;;;14900:109::o;12254:737::-;12311:13;;-1:-1:-1;;;12311:13:0;;;;:22;12303:54;;;;;-1:-1:-1;;;12303:54:0;;;;;;;;;;;;-1:-1:-1;;;12303:54:0;;;;;;;;;;;;;;;12405:5;;:30;;;-1:-1:-1;;;12405:30:0;;12429:4;12405:30;;;;;;12370:32;;-1:-1:-1;;;;;12405:5:0;;:15;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;12405:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12405:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12405:30:0;12446:5;;12405:30;;-1:-1:-1;12446:58:0;;-1:-1:-1;;;;;12446:5:0;12469:10;12489:4;12496:7;12446:58;:22;:58;:::i;:::-;12541:5;;12515;;:42;;-1:-1:-1;;;;;12515:5:0;;;;12541;12549:7;12515:42;:17;:42;:::i;:::-;12568:5;;:22;;;-1:-1:-1;;;12568:22:0;;;;;;;;;;-1:-1:-1;;;;;12568:5:0;;;;:13;;:22;;;;;:5;;:22;;;;;;;;:5;;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;12568:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12635:5:0;;:30;;;-1:-1:-1;;;12635:30:0;;12659:4;12635:30;;;;;;12601:31;;-1:-1:-1;;;;;;12635:5:0;;;;-1:-1:-1;12635:15:0;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;12635:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12635:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12635:30:0;;-1:-1:-1;12678:28:0;12709:53;12635:30;12737:24;12709:53;:27;:53;:::i;:::-;12817:10;12803:25;;;;:13;:25;;;;;;12678:84;;-1:-1:-1;12803:38:0;;12833:7;12803:38;:29;:38;:::i;:::-;12789:10;12775:25;;;;:13;:25;;;;;;;;:66;;;;12880:13;:25;;;;:51;;12910:20;12880:51;:29;:51;:::i;:::-;12866:10;12852:25;;;;:13;:25;;;;;:79;;;;12944:39;;12962:20;12944:5;:39::i;:::-;12254:737;;;;:::o;15772:93::-;15844:13;;-1:-1:-1;;;15844:13:0;;;;;15772:93::o;15440:158::-;11675:10;;-1:-1:-1;;;;;11675:10:0;11661;:24;11653:48;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;-1:-1:-1;;;11653:48:0;;;;;;;;;;;;;;;15505:13;;-1:-1:-1;;;15505:13:0;;;;:22;15497:62;;;;;-1:-1:-1;;;15497:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15570:13;:20;;-1:-1:-1;;;;15570:20:0;-1:-1:-1;;;15570:20:0;;;15440:158::o;2853:134::-;-1:-1:-1;;;;;2952:18:0;;;2925:7;2952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2853:134::o;12160:86::-;12210:5;;:27;;;-1:-1:-1;;;12210:27:0;;12226:10;12210:27;;;;;;12202:36;;-1:-1:-1;;;;;12210:5:0;;:15;;:27;;;;;;;;;;;;;;:5;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;12210:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12210:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12210:27:0;12202:7;:36::i;1881:109::-;1563:9;:7;:9::i;:::-;1555:54;;;;;-1:-1:-1;;;1555:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:28;1973:8;1954:18;:28::i;:::-;1881:109;:::o;11377:19::-;;;-1:-1:-1;;;;;11377:19:0;;:::o;11351:::-;;;-1:-1:-1;;;;;11351:19:0;;:::o;11405:48::-;;;;;;;;;;;;;:::o;818:98::-;898:10;818:98;:::o;5089:338::-;-1:-1:-1;;;;;5183:19:0;;5175:68;;;;-1:-1:-1;;;5175:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5262:21:0;;5254:68;;;;-1:-1:-1;;;5254:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5335:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5387:32;;;;;;;;;;;;;;;;;5089:338;;;:::o;3944:471::-;-1:-1:-1;;;;;4042:20:0;;4034:70;;;;-1:-1:-1;;;4034:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4123:23:0;;4115:71;;;;-1:-1:-1;;;4115:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4219;4241:6;4219:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4219:17:0;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;4199:17:0;;;:9;:17;;;;;;;;;;;:91;;;;4324:20;;;;;;;:32;;4349:6;4324:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;4301:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;4372:35;;;;;;;4301:20;;4372:35;;;;;;;;;;;;;3944:471;;;:::o;6598:192::-;6684:7;6720:12;6712:6;;;;6704:29;;;;-1:-1:-1;;;6704:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6704:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6756:5:0;;;6598:192::o;8626:176::-;8735:58;;;-1:-1:-1;;;;;8735:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8735:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8709:85:0;;8728:5;;8709:18;:85::i;:::-;8626:176;;;:::o;4735:348::-;-1:-1:-1;;;;;4811:21:0;;4803:67;;;;-1:-1:-1;;;4803:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4904:68;4927:6;4904:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4904:18:0;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;4883:18:0;;:9;:18;;;;;;;;;;:89;4998:12;;:24;;5015:6;4998:24;:16;:24;:::i;:::-;4983:12;:39;5038:37;;;;;;;;5064:1;;-1:-1:-1;;;;;5038:37:0;;;;;;;;;;;;4735:348;;:::o;6456:136::-;6514:7;6541:43;6545:1;6548;6541:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;6534:50;6456:136;-1:-1:-1;;;6456:136:0:o;6796:250::-;6854:7;6878:6;6874:47;;-1:-1:-1;6908:1:0;6901:8;;6874:47;6945:5;;;6949:1;6945;:5;:1;6969:5;;;;;:10;6961:56;;;;-1:-1:-1;;;6961:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7052:132;7110:7;7137:39;7141:1;7144;7137:39;;;;;;;;;;;;;;;;;:3;:39::i;6269:181::-;6327:7;6359:5;;;6383:6;;;;6375:46;;;;;-1:-1:-1;;;6375:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8810:204;8937:68;;;-1:-1:-1;;;;;8937:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8937:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8911:95:0;;8930:5;;8911:18;:95::i;9022:347::-;9118:10;;;9117:62;;-1:-1:-1;9134:39:0;;;-1:-1:-1;;;9134:39:0;;9158:4;9134:39;;;;-1:-1:-1;;;;;9134:39:0;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;9134:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9134:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9134:39:0;:44;9117:62;9109:152;;;;-1:-1:-1;;;9109:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9298:62;;;-1:-1:-1;;;;;9298:62:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;9298:62:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;9272:89:0;;9291:5;;9272:18;:89::i;4421:308::-;-1:-1:-1;;;;;4497:21:0;;4489:65;;;;;-1:-1:-1;;;4489:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4582:12;;:24;;4599:6;4582:24;:16;:24;:::i;:::-;4567:12;:39;-1:-1:-1;;;;;4638:18:0;;:9;:18;;;;;;;;;;;:30;;4661:6;4638:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;4617:18:0;;:9;:18;;;;;;;;;;;:51;;;;4684:37;;;;;;;4617:18;;:9;;4684:37;;;;;;;;;;4421:308;;:::o;1996:229::-;-1:-1:-1;;;;;2070:22:0;;2062:73;;;;-1:-1:-1;;;2062:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2172:6;;2151:38;;-1:-1:-1;;;;;2151:38:0;;;;2172:6;;;;;2151:38;;;;;2200:6;:17;;-1:-1:-1;;;;;2200:17:0;;;;;-1:-1:-1;;;;;;2200:17:0;;;;;;;;;1996:229::o;10006:598::-;10094:27;10102:5;-1:-1:-1;;;;;10094:25:0;;:27::i;:::-;10086:71;;;;;-1:-1:-1;;;10086:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10231:12;10245:23;10280:5;-1:-1:-1;;;;;10272:19:0;10292:4;10272:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10272:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10230:67:0;;;;10316:7;10308:52;;;;;-1:-1:-1;;;10308:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10377:17;;:21;10373:224;;10519:10;10508:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10508:30:0;10500:85;;;;-1:-1:-1;;;10500:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7190:258;7276:7;7378:12;7371:5;7363:28;;;;-1:-1:-1;;;7363:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;7363:28:0;;7402:9;7418:1;7414;:5;;;;;;;7190:258;-1:-1:-1;;;;;7190:258:0:o;7786:231::-;7962:20;8001:8;;;7786:231::o

Swarm Source

bzzr://1d5c1be3d263866e85ea2416e7c8ea787acf08696fdfe2751f69da0503a7f9ba
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.