ETH Price: $3,201.51 (+2.26%)

Token

MirrorBase Protocol (MiBASE)
 

Overview

Max Total Supply

578,107.661777206 MiBASE

Holders

78 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
114.159467864 MiBASE

Value
$0.00
0xbd0ded378dbb29f84f561c7be642bbaa3bfa43e8
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Mirror BASE token aims to work in the opposite way to $BASE to help holders reduce their loss from rebases.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MIBASE

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-17
*/

pragma solidity 0.4.24;

//Social Media Links
//Website : http://mirrorbase.finance
//Telegram : t.me/mibaseprotocol
//Twitter :https://twitter.com/mibaseprotocol
//Medium : https://medium.com/@mibaseprotocol
 
contract Initializable {

  bool private initialized;
  bool private initializing;

  modifier initializer() {
    require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized");

    bool wasInitializing = initializing;
    initializing = true;
    initialized = true;

    _;

    initializing = wasInitializing;
  }

  function isConstructor() private view returns (bool) {
    uint256 cs;
    assembly { cs := extcodesize(address) }
    return cs == 0;
  }

  uint256[50] private ______gap;
}

contract Ownable is Initializable {

  address private _owner;
  uint256 private _ownershipLocked;

  event OwnershipLocked(address lockedOwner);
  event OwnershipRenounced(address indexed previousOwner);
  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );


  function initialize(address sender) internal initializer {
    _owner = sender;
	_ownershipLocked = 0;
  }

  function owner() public view returns(address) {
    return _owner;
  }

  modifier onlyOwner() {
    require(isOwner());
    _;
  }

  function isOwner() public view returns(bool) {
    return msg.sender == _owner;
  }

  function transferOwnership(address newOwner) public onlyOwner {
    _transferOwnership(newOwner);
  }

  function _transferOwnership(address newOwner) internal {
    require(_ownershipLocked == 0);
    require(newOwner != address(0));
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
  
  // Set _ownershipLocked flag to lock contract owner forever
  function lockOwnership() public onlyOwner {
	require(_ownershipLocked == 0);
	emit OwnershipLocked(_owner);
    _ownershipLocked = 1;
  }

  uint256[50] private ______gap;
}

interface IERC20 {
  function totalSupply() external view returns (uint256);

  function balanceOf(address who) external view returns (uint256);

  function allowance(address owner, address spender)
    external view returns (uint256);

  function transfer(address to, uint256 value) external returns (bool);

  function approve(address spender, uint256 value)
    external returns (bool);

  function transferFrom(address from, address to, uint256 value)
    external returns (bool);

  event Transfer(
    address indexed from,
    address indexed to,
    uint256 value
  );

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

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

  function initialize(string name, string symbol, uint8 decimals) internal initializer {
    _name = name;
    _symbol = symbol;
    _decimals = decimals;
  }

  function name() public view returns(string) {
    return _name;
  }

  function symbol() public view returns(string) {
    return _symbol;
  }

  function decimals() public view returns(uint8) {
    return _decimals;
  }

  uint256[50] private ______gap;
}

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

contract MIBASE is ERC20Detailed, Ownable {
    // PLEASE READ BEFORE CHANGING ANY ACCOUNTING OR MATH
    // Anytime there is division, there is a risk of numerical instability from rounding errors. In
    // order to minimize this risk, we adhere to the following guidelines:
    // 1) The conversion rate adopted is the number of gons that equals 1 fragment.
    //    The inverse rate must not be used--TOTAL_GONS is always the numerator and _totalSupply is
    //    always the denominator. (i.e. If you want to convert gons to fragments instead of
    //    multiplying by the inverse rate, you should divide by the normal rate)
    // 2) Gon balances converted into Fragments are always rounded down (truncated).
    //
    // We make the following guarantees:
    // - If address 'A' transfers x Fragments to address 'B'. A's resulting external balance will
    //   be decreased by precisely x Fragments, and B's external balance will be precisely
    //   increased by x Fragments.
    //
    // We do not guarantee that the sum of all balances equals the result of calling totalSupply().
    // This is because, for any conversion function 'f()' that has non-zero rounding error,
    // f(x0) + f(x1) + ... + f(xn) is not always equal to f(x0 + x1 + ... xn).
    using SafeMath for uint256;

    modifier validRecipient(address to) {
        require(to != address(0x0));
        require(to != address(this));
        _;
    }

    uint256 private constant DECIMALS = 9;
    uint256 private constant MAX_UINT256 = ~uint256(0);
    uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 55000 * 10**DECIMALS;

    // TOTAL_GONS is a multiple of INITIAL_FRAGMENTS_SUPPLY so that _gonsPerFragment is an integer.
    // Use the highest value that fits in a uint256 for max granularity.
    uint256 private constant TOTAL_GONS = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY);

    // MAX_SUPPLY = maximum integer < (sqrt(4*TOTAL_GONS + 1) - 1) / 2
    uint256 private constant MAX_SUPPLY = ~uint128(0);  // (2^128) - 1

    uint256 private _totalSupply;
    uint256 private _gonsPerFragment;
    mapping(address => uint256) private _gonBalances;
    
    IERC20 BASETOKEN;
    uint256 public lastTrackedBaseSupply;
    bool public baseSupplyHasBeenInitilized = false;

    // This is denominated in Fragments, because the gons-fragments conversion might change before
    // it's fully paid.
    mapping (address => mapping (address => uint256)) private _allowedFragments;
    
    event LogRebase(uint256 indexed epoch, uint256 totalSupply);
    
    function setREBASEcontract (IERC20 _basetoken) onlyOwner public {
        BASETOKEN = _basetoken;
    }
    
    // only callable once
    function initBaseTotalSupply (uint256 _ts) onlyOwner public {
      //  require(!baseSupplyHasBeenInitilized, 'DONE');
        lastTrackedBaseSupply = _ts;
        baseSupplyHasBeenInitilized = true;
    }
    
    function nextRebaseInfo()
        external view
        returns (uint256, bool)
    {
        uint256 baseTotalSupply = BASETOKEN.totalSupply();
        uint256 multiplier;
        uint256 maxDebase =9000;
        
        
        bool rebaseIsPositive = false;
        if (baseTotalSupply > lastTrackedBaseSupply) {
            
           multiplier = (baseTotalSupply.sub(lastTrackedBaseSupply)).mul(10000).div(lastTrackedBaseSupply);
           if(multiplier >= 10000){
               multiplier= maxDebase;
           }
            
        } else if (lastTrackedBaseSupply > baseTotalSupply) {
        
         multiplier = (lastTrackedBaseSupply.sub(baseTotalSupply)).mul(10000).div(lastTrackedBaseSupply).mul(2);
           
            rebaseIsPositive = true;
        }

        return (multiplier, rebaseIsPositive);
    }

    /**
     * @dev Notifies Fragments contract about a new rebase cycle.
     * @return The total number of fragments after the supply adjustment.
     */
    function rebase()
        external
        returns (uint256)
    {
        
        uint256 baseTotalSupply = BASETOKEN.totalSupply();
        uint256 multiplier;
        uint256 maxDebase =9000;
        require(baseTotalSupply != lastTrackedBaseSupply, 'NOT YET PLEASE WAIT');
        if (baseTotalSupply > lastTrackedBaseSupply) {
            
              multiplier = (baseTotalSupply.sub(lastTrackedBaseSupply)).mul(10000).div(lastTrackedBaseSupply);
              
               if(multiplier >= 10000){
               multiplier= maxDebase;
           }
            
        } else if (lastTrackedBaseSupply > baseTotalSupply) {
            
            multiplier = (lastTrackedBaseSupply.sub(baseTotalSupply)).mul(10000).div(lastTrackedBaseSupply).mul(2);
        }
        
        uint256 modification;
        modification = _totalSupply.mul(multiplier).div(10000);
        if (baseTotalSupply > lastTrackedBaseSupply) {
            _totalSupply = _totalSupply.sub(modification);
           
        } else {
            _totalSupply = _totalSupply.add(modification);
        }

        if (_totalSupply > MAX_SUPPLY) {
            _totalSupply = MAX_SUPPLY;
        }

        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);
        
        lastTrackedBaseSupply = baseTotalSupply;

       

        emit LogRebase(block.timestamp, _totalSupply);
        return _totalSupply;
    }
    
    constructor() public {
		Ownable.initialize(msg.sender);
		ERC20Detailed.initialize("MirrorBase Protocol", "MiBASE", uint8(DECIMALS));
        
        _totalSupply = INITIAL_FRAGMENTS_SUPPLY;
        _gonBalances[msg.sender] = TOTAL_GONS;
        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);

        emit Transfer(address(0x0), msg.sender, _totalSupply);
    }

    /**
     * @return The total number of fragments.
     */
    function totalSupply()
        public
        view
        returns (uint256)
    {
        return _totalSupply;
    }

    /**
     * @param who The address to query.
     * @return The balance of the specified address.
     */
    function balanceOf(address who)
        public
        view
        returns (uint256)
    {
        return _gonBalances[who].div(_gonsPerFragment);
    }

    /**
     * @dev Transfer tokens to a specified address.
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     * @return True on success, false otherwise.
     */
    function transfer(address to, uint256 value)
        public
        validRecipient(to)
        returns (bool)
    {
        uint256 gonValue = value.mul(_gonsPerFragment);
        _gonBalances[msg.sender] = _gonBalances[msg.sender].sub(gonValue);
        _gonBalances[to] = _gonBalances[to].add(gonValue);
        emit Transfer(msg.sender, to, value);
        return true;
    }

    /**
     * @dev Function to check the amount of tokens that an owner has allowed to a spender.
     * @param owner_ The address which owns the funds.
     * @param spender The address which will spend the funds.
     * @return The number of tokens still available for the spender.
     */
    function allowance(address owner_, address spender)
        public
        view
        returns (uint256)
    {
        return _allowedFragments[owner_][spender];
    }

    /**
     * @dev Transfer tokens from one address to another.
     * @param from The address you want to send tokens from.
     * @param to The address you want to transfer to.
     * @param value The amount of tokens to be transferred.
     */
    function transferFrom(address from, address to, uint256 value)
        public
        validRecipient(to)
        returns (bool)
    {
        _allowedFragments[from][msg.sender] = _allowedFragments[from][msg.sender].sub(value);

        uint256 gonValue = value.mul(_gonsPerFragment);
        _gonBalances[from] = _gonBalances[from].sub(gonValue);
        _gonBalances[to] = _gonBalances[to].add(gonValue);
        emit Transfer(from, to, value);

        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of
     * msg.sender. This method is included for ERC20 compatibility.
     * increaseAllowance and decreaseAllowance should be used instead.
     * Changing an allowance with this method brings the risk that someone may transfer both
     * the old and the new allowance - if they are both greater than zero - if a transfer
     * transaction is mined before the later approve() call is mined.
     *
     * @param spender The address which will spend the funds.
     * @param value The amount of tokens to be spent.
     */
    function approve(address spender, uint256 value)
        public
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner has allowed to a spender.
     * This method should be used instead of approve() to avoid the double approval vulnerability
     * described above.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] =
            _allowedFragments[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner has allowed to a spender.
     *
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        returns (bool)
    {
        uint256 oldValue = _allowedFragments[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedFragments[msg.sender][spender] = 0;
        } else {
            _allowedFragments[msg.sender][spender] = oldValue.sub(subtractedValue);
        }
        emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"lockOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ts","type":"uint256"}],"name":"initBaseTotalSupply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextRebaseInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_basetoken","type":"address"}],"name":"setREBASEcontract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTrackedBaseSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"rebase","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"baseSupplyHasBeenInitilized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner_","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"epoch","type":"uint256"},{"indexed":false,"name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"lockedOwner","type":"address"}],"name":"OwnershipLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

6080604052600060a160006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506200004c33620001f86401000000000262002015176401000000009004565b620000d86040805190810160405280601381526020017f4d6972726f72426173652050726f746f636f6c000000000000000000000000008152506040805190810160405280600681526020017f4d6942415345000000000000000000000000000000000000000000000000000081525060096200038b6401000000000262002194176401000000009004565b6009600a0a61d6d802609c819055506009600a0a61d6d802600019811515620000fd57fe5b0660001903609e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000184609c546009600a0a61d6d8026000198115156200016257fe5b0660001903620005246401000000000262001d33179091906401000000009004565b609d819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef609c546040518082815260200191505060405180910390a36200070e565b60008060019054906101000a900460ff16806200022a5750620002296200057f640100000000026401000000009004565b5b806200024257506000809054906101000a900460ff16155b1515620002dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060698190555080600060016101000a81548160ff0219169083151502179055505050565b60008060019054906101000a900460ff1680620003bd5750620003bc6200057f640100000000026401000000009004565b5b80620003d557506000809054906101000a900460ff16155b151562000470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055508360339080519060200190620004cf9291906200065f565b508260349080519060200190620004e89291906200065f565b5081603560006101000a81548160ff021916908360ff16021790555080600060016101000a81548160ff02191690831515021790555050505050565b60006200057783836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000590640100000000026401000000009004565b905092915050565b600080303b90506000811491505090565b600080600084118390151562000644576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000608578082015181840152602081019050620005eb565b50505050905090810190601f168015620006365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5083858115156200065157fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006a257805160ff1916838001178555620006d3565b82800160010185558215620006d3579182015b82811115620006d2578251825591602001919060010190620006b5565b5b509050620006e29190620006e6565b5090565b6200070b91905b8082111562000707576000816000905550600101620006ed565b5090565b90565b6123f7806200071e6000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630577c02b1461012257806306fdde0314610139578063095ea7b3146101c957806318160ddd1461022e57806323b872dd1461025957806328559e4a146102de578063313ce5671461030b5780633167f78b1461033c578063395093511461037257806344894cd7146103d757806370a082311461041a5780638da5cb5b146104715780638f32d59b146104c857806394a3e7be146104f757806395d89b4114610522578063a457c2d7146105b2578063a9059cbb14610617578063af14052c1461067c578063ce554f6d146106a7578063dd62ed3e146106d6578063f2fde38b1461074d575b600080fd5b34801561012e57600080fd5b50610137610790565b005b34801561014557600080fd5b5061014e610843565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018e578082015181840152602081019050610173565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d557600080fd5b50610214600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e5565b604051808215151515815260200191505060405180910390f35b34801561023a57600080fd5b506102436109d7565b6040518082815260200191505060405180910390f35b34801561026557600080fd5b506102c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e1565b604051808215151515815260200191505060405180910390f35b3480156102ea57600080fd5b5061030960048036038101908080359060200190929190505050610d1e565b005b34801561031757600080fd5b50610320610d56565b604051808260ff1660ff16815260200191505060405180910390f35b34801561034857600080fd5b50610351610d6d565b60405180838152602001821515151581526020019250505060405180910390f35b34801561037e57600080fd5b506103bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f0f565b604051808215151515815260200191505060405180910390f35b3480156103e357600080fd5b50610418600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110b565b005b34801561042657600080fd5b5061045b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611162565b6040518082815260200191505060405180910390f35b34801561047d57600080fd5b506104866111bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104d457600080fd5b506104dd6111e9565b604051808215151515815260200191505060405180910390f35b34801561050357600080fd5b5061050c611241565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b50610537611247565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561057757808201518184015260208101905061055c565b50505050905090810190601f1680156105a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105be57600080fd5b506105fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112e9565b604051808215151515815260200191505060405180910390f35b34801561062357600080fd5b50610662600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061157b565b604051808215151515815260200191505060405180910390f35b34801561068857600080fd5b506106916117a8565b6040518082815260200191505060405180910390f35b3480156106b357600080fd5b506106bc611ad9565b604051808215151515815260200191505060405180910390f35b3480156106e257600080fd5b50610737600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aec565b6040518082815260200191505060405180910390f35b34801561075957600080fd5b5061078e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b73565b005b6107986111e9565b15156107a357600080fd5b60006069541415156107b457600080fd5b7f88edfb4ea96673000ad101b18d1c7dbd727c5d92217c8d0b9966f2aaf77e93f4606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001606981905550565b606060338054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108db5780601f106108b0576101008083540402835291602001916108db565b820191906000526020600020905b8154815290600101906020018083116108be57829003601f168201915b5050505050905090565b60008160a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000609c54905090565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a2157600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a5c57600080fd5b610aeb8460a260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b9290919063ffffffff16565b60a260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b80609d5485611bdc90919063ffffffff16565b9150610bd482609e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b9290919063ffffffff16565b609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c6982609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca990919063ffffffff16565b609e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001925050509392505050565b610d266111e9565b1515610d3157600080fd5b8060a081905550600160a160006101000a81548160ff02191690831515021790555050565b6000603560009054906101000a900460ff16905090565b600080600080600080609f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610dfc57600080fd5b505af1158015610e10573d6000803e3d6000fd5b505050506040513d6020811015610e2657600080fd5b8101908080519060200190929190505050935061232891506000905060a054841115610e9f57610e8960a054610e7b612710610e6d60a05489611b9290919063ffffffff16565b611bdc90919063ffffffff16565b611d3390919063ffffffff16565b925061271083101515610e9a578192505b610f01565b8360a0541115610f0057610ef96002610eeb60a054610edd612710610ecf8a60a054611b9290919063ffffffff16565b611bdc90919063ffffffff16565b611d3390919063ffffffff16565b611bdc90919063ffffffff16565b9250600190505b5b828195509550505050509091565b6000610fa08260a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca990919063ffffffff16565b60a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6111136111e9565b151561111e57600080fd5b80609f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111b8609d54609e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3390919063ffffffff16565b9050919050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60a05481565b606060348054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112df5780601f106112b4576101008083540402835291602001916112df565b820191906000526020600020905b8154815290600101906020018083116112c257829003601f168201915b5050505050905090565b60008060a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831015156113fb57600060a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061148f565b61140e8382611b9290919063ffffffff16565b60a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115bb57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115f657600080fd5b61160b609d5485611bdc90919063ffffffff16565b915061165f82609e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b9290919063ffffffff16565b609e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f482609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca990919063ffffffff16565b609e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b6000806000806000609f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b505050506040513d602081101561186057600080fd5b81019080805190602001909291905050509350612328915060a05484141515156118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e4f542059455420504c4541534520574149540000000000000000000000000081525060200191505060405180910390fd5b60a05484111561194f5761193960a05461192b61271061191d60a05489611b9290919063ffffffff16565b611bdc90919063ffffffff16565b611d3390919063ffffffff16565b92506127108310151561194a578192505b6119ad565b8360a05411156119ac576119a9600261199b60a05461198d61271061197f8a60a054611b9290919063ffffffff16565b611bdc90919063ffffffff16565b611d3390919063ffffffff16565b611bdc90919063ffffffff16565b92505b5b6119d66127106119c885609c54611bdc90919063ffffffff16565b611d3390919063ffffffff16565b905060a054841115611a02576119f781609c54611b9290919063ffffffff16565b609c81905550611a1e565b611a1781609c54611ca990919063ffffffff16565b609c819055505b6000196fffffffffffffffffffffffffffffffff16609c541115611a58576000196fffffffffffffffffffffffffffffffff16609c819055505b611a86609c546009600a0a61d6d802600019811515611a7357fe5b0660001903611d3390919063ffffffff16565b609d819055508360a081905550427f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2609c546040518082815260200191505060405180910390a2609c5494505050505090565b60a160009054906101000a900460ff1681565b600060a260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b7b6111e9565b1515611b8657600080fd5b611b8f81611d7d565b50565b6000611bd483836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e8a565b905092915050565b6000806000841415611bf15760009150611ca2565b8284029050828482811515611c0257fe5b04141515611c9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8091505b5092915050565b6000808284019050838110151515611d29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611d7583836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f4b565b905092915050565b6000606954141515611d8e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611dca57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808484111583901515611f3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611eff578082015181840152602081019050611ee4565b50505050905090810190601f168015611f2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508385039050809150509392505050565b6000806000841183901515611ffb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611fc0578082015181840152602081019050611fa5565b50505050905090810190601f168015611fed5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50838581151561200757fe5b049050809150509392505050565b60008060019054906101000a900460ff16806120355750612034612315565b5b8061204c57506000809054906101000a900460ff16155b15156120e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060698190555080600060016101000a81548160ff0219169083151502179055505050565b60008060019054906101000a900460ff16806121b457506121b3612315565b5b806121cb57506000809054906101000a900460ff16155b1515612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555083603390805190602001906122c2929190612326565b5082603490805190602001906122d9929190612326565b5081603560006101000a81548160ff021916908360ff16021790555080600060016101000a81548160ff02191690831515021790555050505050565b600080303b90506000811491505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061236757805160ff1916838001178555612395565b82800160010185558215612395579182015b82811115612394578251825591602001919060010190612379565b5b5090506123a291906123a6565b5090565b6123c891905b808211156123c45760008160009055506001016123ac565b5090565b905600a165627a7a72305820ba8f5007b8ac9b9923c6169e5e2197fa02d8ef3b4c7fb099908cc197e83083530029

Deployed Bytecode

0x60806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630577c02b1461012257806306fdde0314610139578063095ea7b3146101c957806318160ddd1461022e57806323b872dd1461025957806328559e4a146102de578063313ce5671461030b5780633167f78b1461033c578063395093511461037257806344894cd7146103d757806370a082311461041a5780638da5cb5b146104715780638f32d59b146104c857806394a3e7be146104f757806395d89b4114610522578063a457c2d7146105b2578063a9059cbb14610617578063af14052c1461067c578063ce554f6d146106a7578063dd62ed3e146106d6578063f2fde38b1461074d575b600080fd5b34801561012e57600080fd5b50610137610790565b005b34801561014557600080fd5b5061014e610843565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018e578082015181840152602081019050610173565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d557600080fd5b50610214600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e5565b604051808215151515815260200191505060405180910390f35b34801561023a57600080fd5b506102436109d7565b6040518082815260200191505060405180910390f35b34801561026557600080fd5b506102c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e1565b604051808215151515815260200191505060405180910390f35b3480156102ea57600080fd5b5061030960048036038101908080359060200190929190505050610d1e565b005b34801561031757600080fd5b50610320610d56565b604051808260ff1660ff16815260200191505060405180910390f35b34801561034857600080fd5b50610351610d6d565b60405180838152602001821515151581526020019250505060405180910390f35b34801561037e57600080fd5b506103bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f0f565b604051808215151515815260200191505060405180910390f35b3480156103e357600080fd5b50610418600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110b565b005b34801561042657600080fd5b5061045b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611162565b6040518082815260200191505060405180910390f35b34801561047d57600080fd5b506104866111bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104d457600080fd5b506104dd6111e9565b604051808215151515815260200191505060405180910390f35b34801561050357600080fd5b5061050c611241565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b50610537611247565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561057757808201518184015260208101905061055c565b50505050905090810190601f1680156105a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105be57600080fd5b506105fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112e9565b604051808215151515815260200191505060405180910390f35b34801561062357600080fd5b50610662600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061157b565b604051808215151515815260200191505060405180910390f35b34801561068857600080fd5b506106916117a8565b6040518082815260200191505060405180910390f35b3480156106b357600080fd5b506106bc611ad9565b604051808215151515815260200191505060405180910390f35b3480156106e257600080fd5b50610737600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aec565b6040518082815260200191505060405180910390f35b34801561075957600080fd5b5061078e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b73565b005b6107986111e9565b15156107a357600080fd5b60006069541415156107b457600080fd5b7f88edfb4ea96673000ad101b18d1c7dbd727c5d92217c8d0b9966f2aaf77e93f4606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001606981905550565b606060338054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108db5780601f106108b0576101008083540402835291602001916108db565b820191906000526020600020905b8154815290600101906020018083116108be57829003601f168201915b5050505050905090565b60008160a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000609c54905090565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a2157600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a5c57600080fd5b610aeb8460a260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b9290919063ffffffff16565b60a260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b80609d5485611bdc90919063ffffffff16565b9150610bd482609e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b9290919063ffffffff16565b609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c6982609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca990919063ffffffff16565b609e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001925050509392505050565b610d266111e9565b1515610d3157600080fd5b8060a081905550600160a160006101000a81548160ff02191690831515021790555050565b6000603560009054906101000a900460ff16905090565b600080600080600080609f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610dfc57600080fd5b505af1158015610e10573d6000803e3d6000fd5b505050506040513d6020811015610e2657600080fd5b8101908080519060200190929190505050935061232891506000905060a054841115610e9f57610e8960a054610e7b612710610e6d60a05489611b9290919063ffffffff16565b611bdc90919063ffffffff16565b611d3390919063ffffffff16565b925061271083101515610e9a578192505b610f01565b8360a0541115610f0057610ef96002610eeb60a054610edd612710610ecf8a60a054611b9290919063ffffffff16565b611bdc90919063ffffffff16565b611d3390919063ffffffff16565b611bdc90919063ffffffff16565b9250600190505b5b828195509550505050509091565b6000610fa08260a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca990919063ffffffff16565b60a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6111136111e9565b151561111e57600080fd5b80609f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111b8609d54609e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3390919063ffffffff16565b9050919050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60a05481565b606060348054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112df5780601f106112b4576101008083540402835291602001916112df565b820191906000526020600020905b8154815290600101906020018083116112c257829003601f168201915b5050505050905090565b60008060a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831015156113fb57600060a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061148f565b61140e8382611b9290919063ffffffff16565b60a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115bb57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115f657600080fd5b61160b609d5485611bdc90919063ffffffff16565b915061165f82609e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b9290919063ffffffff16565b609e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f482609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ca990919063ffffffff16565b609e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b6000806000806000609f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561183657600080fd5b505af115801561184a573d6000803e3d6000fd5b505050506040513d602081101561186057600080fd5b81019080805190602001909291905050509350612328915060a05484141515156118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e4f542059455420504c4541534520574149540000000000000000000000000081525060200191505060405180910390fd5b60a05484111561194f5761193960a05461192b61271061191d60a05489611b9290919063ffffffff16565b611bdc90919063ffffffff16565b611d3390919063ffffffff16565b92506127108310151561194a578192505b6119ad565b8360a05411156119ac576119a9600261199b60a05461198d61271061197f8a60a054611b9290919063ffffffff16565b611bdc90919063ffffffff16565b611d3390919063ffffffff16565b611bdc90919063ffffffff16565b92505b5b6119d66127106119c885609c54611bdc90919063ffffffff16565b611d3390919063ffffffff16565b905060a054841115611a02576119f781609c54611b9290919063ffffffff16565b609c81905550611a1e565b611a1781609c54611ca990919063ffffffff16565b609c819055505b6000196fffffffffffffffffffffffffffffffff16609c541115611a58576000196fffffffffffffffffffffffffffffffff16609c819055505b611a86609c546009600a0a61d6d802600019811515611a7357fe5b0660001903611d3390919063ffffffff16565b609d819055508360a081905550427f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2609c546040518082815260200191505060405180910390a2609c5494505050505090565b60a160009054906101000a900460ff1681565b600060a260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b7b6111e9565b1515611b8657600080fd5b611b8f81611d7d565b50565b6000611bd483836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e8a565b905092915050565b6000806000841415611bf15760009150611ca2565b8284029050828482811515611c0257fe5b04141515611c9e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8091505b5092915050565b6000808284019050838110151515611d29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611d7583836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f4b565b905092915050565b6000606954141515611d8e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611dca57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808484111583901515611f3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611eff578082015181840152602081019050611ee4565b50505050905090810190601f168015611f2c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508385039050809150509392505050565b6000806000841183901515611ffb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611fc0578082015181840152602081019050611fa5565b50505050905090810190601f168015611fed5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50838581151561200757fe5b049050809150509392505050565b60008060019054906101000a900460ff16806120355750612034612315565b5b8061204c57506000809054906101000a900460ff16155b15156120e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060698190555080600060016101000a81548160ff0219169083151502179055505050565b60008060019054906101000a900460ff16806121b457506121b3612315565b5b806121cb57506000809054906101000a900460ff16155b1515612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555083603390805190602001906122c2929190612326565b5082603490805190602001906122d9929190612326565b5081603560006101000a81548160ff021916908360ff16021790555080600060016101000a81548160ff02191690831515021790555050505050565b600080303b90506000811491505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061236757805160ff1916838001178555612395565b82800160010185558215612395579182015b82811115612394578251825591602001919060010190612379565b5b5090506123a291906123a6565b5090565b6123c891905b808211156123c45760008160009055506001016123ac565b5090565b905600a165627a7a72305820ba8f5007b8ac9b9923c6169e5e2197fa02d8ef3b4c7fb099908cc197e83083530029

Deployed Bytecode Sourcemap

4780:10522:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1848:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1848:141:0;;;;;;3040:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3040:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3040:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13576:233;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13576:233:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10687:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10687:123:0;;;;;;;;;;;;;;;;;;;;;;;12447:487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12447:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7537:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7537:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;3194:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3194:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7758:860;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7758:860:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14182:343;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14182:343:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7393:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7393:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10931:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10931:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1223:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1223:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1367:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1367:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7009:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7009:36:0;;;;;;;;;;;;;;;;;;;;;;;3115:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3115:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3115:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14787:512;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14787:512:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11316:388;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11316:388:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8786:1441;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8786:1441:0;;;;;;;;;;;;;;;;;;;;;;;7052:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7052:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12011:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12011:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1458:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1458:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1848:141;1337:9;:7;:9::i;:::-;1329:18;;;;;;;;1922:1;1902:16;;:21;1894:30;;;;;;;;1933:23;1949:6;;;;;;;;;;;1933:23;;;;;;;;;;;;;;;;;;;;;;1982:1;1963:16;:20;;;;1848:141::o;3040:69::-;3076:6;3098:5;3091:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3040:69;:::o;13576:233::-;13659:4;13722:5;13681:17;:29;13699:10;13681:29;;;;;;;;;;;;;;;:38;13711:7;13681:38;;;;;;;;;;;;;;;:46;;;;13764:7;13743:36;;13752:10;13743:36;;;13773:5;13743:36;;;;;;;;;;;;;;;;;;13797:4;13790:11;;13576:233;;;;:::o;10687:123::-;10758:7;10790:12;;10783:19;;10687:123;:::o;12447:487::-;12572:4;12691:16;12550:2;6175:3;6161:18;;:2;:18;;;;6153:27;;;;;;;;6213:4;6199:19;;:2;:19;;;;6191:28;;;;;;;;12632:46;12672:5;12632:17;:23;12650:4;12632:23;;;;;;;;;;;;;;;:35;12656:10;12632:35;;;;;;;;;;;;;;;;:39;;:46;;;;:::i;:::-;12594:17;:23;12612:4;12594:23;;;;;;;;;;;;;;;:35;12618:10;12594:35;;;;;;;;;;;;;;;:84;;;;12710:27;12720:16;;12710:5;:9;;:27;;;;:::i;:::-;12691:46;;12769:32;12792:8;12769:12;:18;12782:4;12769:18;;;;;;;;;;;;;;;;:22;;:32;;;;:::i;:::-;12748:12;:18;12761:4;12748:18;;;;;;;;;;;;;;;:53;;;;12831:30;12852:8;12831:12;:16;12844:2;12831:16;;;;;;;;;;;;;;;;:20;;:30;;;;:::i;:::-;12812:12;:16;12825:2;12812:16;;;;;;;;;;;;;;;:49;;;;12892:2;12877:25;;12886:4;12877:25;;;12896:5;12877:25;;;;;;;;;;;;;;;;;;12922:4;12915:11;;12447:487;;;;;;;:::o;7537:209::-;1337:9;:7;:9::i;:::-;1329:18;;;;;;;;7690:3;7666:21;:27;;;;7734:4;7704:27;;:34;;;;;;;;;;;;;;;;;;7537:209;:::o;3194:76::-;3234:5;3255:9;;;;;;;;;;;3248:16;;3194:76;:::o;7758:860::-;7825:7;7834:4;7856:23;7916:18;7945:17;7999:21;7882:9;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7882:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7882:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7882:23:0;;;;;;;;;;;;;;;;7856:49;;7964:4;7945:23;;8023:5;7999:29;;8061:21;;8043:15;:39;8039:522;;;8125:82;8185:21;;8125:55;8174:5;8126:42;8146:21;;8126:15;:19;;:42;;;;:::i;:::-;8125:48;;:55;;;;:::i;:::-;:59;;:82;;;;:::i;:::-;8112:95;;8238:5;8224:10;:19;;8221:77;;;8274:9;8262:21;;8221:77;8039:522;;;8357:15;8333:21;;:39;8329:232;;;8409:89;8496:1;8409:82;8469:21;;8409:55;8458:5;8410:42;8436:15;8410:21;;:25;;:42;;;;:::i;:::-;8409:48;;:55;;;;:::i;:::-;:59;;:82;;;;:::i;:::-;:86;;:89;;;;:::i;:::-;8396:102;;8545:4;8526:23;;8329:232;8039:522;8581:10;8593:16;8573:37;;;;7758:860;;;;;;:::o;14182:343::-;14280:4;14356:54;14399:10;14356:17;:29;14374:10;14356:29;;;;;;;;;;;;;;;:38;14386:7;14356:38;;;;;;;;;;;;;;;;:42;;:54;;;;:::i;:::-;14302:17;:29;14320:10;14302:29;;;;;;;;;;;;;;;:38;14332:7;14302:38;;;;;;;;;;;;;;;:108;;;;14447:7;14426:69;;14435:10;14426:69;;;14456:17;:29;14474:10;14456:29;;;;;;;;;;;;;;;:38;14486:7;14456:38;;;;;;;;;;;;;;;;14426:69;;;;;;;;;;;;;;;;;;14513:4;14506:11;;14182:343;;;;:::o;7393:105::-;1337:9;:7;:9::i;:::-;1329:18;;;;;;;;7480:10;7468:9;;:22;;;;;;;;;;;;;;;;;;7393:105;:::o;10931:159::-;11011:7;11043:39;11065:16;;11043:12;:17;11056:3;11043:17;;;;;;;;;;;;;;;;:21;;:39;;;;:::i;:::-;11036:46;;10931:159;;;:::o;1223:72::-;1260:7;1283:6;;;;;;;;;;;1276:13;;1223:72;:::o;1367:85::-;1406:4;1440:6;;;;;;;;;;;1426:20;;:10;:20;;;1419:27;;1367:85;:::o;7009:36::-;;;;:::o;3115:73::-;3153:6;3175:7;3168:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3115:73;:::o;14787:512::-;14890:4;14912:16;14931:17;:29;14949:10;14931:29;;;;;;;;;;;;;;;:38;14961:7;14931:38;;;;;;;;;;;;;;;;14912:57;;15003:8;14984:15;:27;;14980:205;;;15069:1;15028:17;:29;15046:10;15028:29;;;;;;;;;;;;;;;:38;15058:7;15028:38;;;;;;;;;;;;;;;:42;;;;14980:205;;;15144:29;15157:15;15144:8;:12;;:29;;;;:::i;:::-;15103:17;:29;15121:10;15103:29;;;;;;;;;;;;;;;:38;15133:7;15103:38;;;;;;;;;;;;;;;:70;;;;14980:205;15221:7;15200:69;;15209:10;15200:69;;;15230:17;:29;15248:10;15230:29;;;;;;;;;;;;;;;:38;15260:7;15230:38;;;;;;;;;;;;;;;;15200:69;;;;;;;;;;;;;;;;;;15287:4;15280:11;;14787:512;;;;;:::o;11316:388::-;11423:4;11445:16;11401:2;6175:3;6161:18;;:2;:18;;;;6153:27;;;;;;;;6213:4;6199:19;;:2;:19;;;;6191:28;;;;;;;;11464:27;11474:16;;11464:5;:9;;:27;;;;:::i;:::-;11445:46;;11529:38;11558:8;11529:12;:24;11542:10;11529:24;;;;;;;;;;;;;;;;:28;;:38;;;;:::i;:::-;11502:12;:24;11515:10;11502:24;;;;;;;;;;;;;;;:65;;;;11597:30;11618:8;11597:12;:16;11610:2;11597:16;;;;;;;;;;;;;;;;:20;;:30;;;;:::i;:::-;11578:12;:16;11591:2;11578:16;;;;;;;;;;;;;;;:49;;;;11664:2;11643:31;;11652:10;11643:31;;;11668:5;11643:31;;;;;;;;;;;;;;;;;;11692:4;11685:11;;11316:388;;;;;;:::o;8786:1441::-;8840:7;8875:23;8935:18;8964:17;9602:20;8901:9;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8901:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8901:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8901:23:0;;;;;;;;;;;;;;;;8875:49;;8983:4;8964:23;;9025:21;;9006:15;:40;;8998:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9103:21;;9085:15;:39;9081:501;;;9170:82;9230:21;;9170:55;9219:5;9171:42;9191:21;;9171:15;:19;;:42;;;;:::i;:::-;9170:48;;:55;;;;:::i;:::-;:59;;:82;;;;:::i;:::-;9157:95;;9303:5;9289:10;:19;;9286:77;;;9339:9;9327:21;;9286:77;9081:501;;;9422:15;9398:21;;:39;9394:188;;;9481:89;9568:1;9481:82;9541:21;;9481:55;9530:5;9482:42;9508:15;9482:21;;:25;;:42;;;;:::i;:::-;9481:48;;:55;;;;:::i;:::-;:59;;:82;;;;:::i;:::-;:86;;:89;;;;:::i;:::-;9468:102;;9394:188;9081:501;9648:39;9681:5;9648:28;9665:10;9648:12;;:16;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;9633:54;;9720:21;;9702:15;:39;9698:208;;;9773:30;9790:12;9773;;:16;;:30;;;;:::i;:::-;9758:12;:45;;;;9698:208;;;9864:30;9881:12;9864;;:16;;:30;;;;:::i;:::-;9849:12;:45;;;;9698:208;6824:1;6815:11;9937:10;;9922:12;;:25;9918:83;;;6824:1;6815:11;9979:10;;9964:12;:25;;;;9918:83;10032:28;10047:12;;6283:1;6408:2;:12;6400:5;:20;6339:1;6330:11;6657:38;;;;;;;;6339:1;6330:11;6642:54;10032:14;;:28;;;;:::i;:::-;10013:16;:47;;;;10105:15;10081:21;:39;;;;10159:15;10149:40;10176:12;;10149:40;;;;;;;;;;;;;;;;;;10207:12;;10200:19;;8786:1441;;;;;:::o;7052:47::-;;;;;;;;;;;;;:::o;12011:174::-;12111:7;12143:17;:25;12161:6;12143:25;;;;;;;;;;;;;;;:34;12169:7;12143:34;;;;;;;;;;;;;;;;12136:41;;12011:174;;;;:::o;1458:103::-;1337:9;:7;:9::i;:::-;1329:18;;;;;;;;1527:28;1546:8;1527:18;:28::i;:::-;1458:103;:::o;3528:136::-;3586:7;3613:43;3617:1;3620;3613:43;;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3606:50;;3528:136;;;;:::o;3872:250::-;3930:7;4009:9;3959:1;3954;:6;3950:47;;;3984:1;3977:8;;;;3950:47;4025:1;4021;:5;4009:17;;4054:1;4049;4045;:5;;;;;;;;:10;4037:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4113:1;4106:8;;3872:250;;;;;;:::o;3339:181::-;3397:7;3417:9;3433:1;3429;:5;3417:17;;3458:1;3453;:6;;3445:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3511:1;3504:8;;3339:181;;;;;:::o;4130:132::-;4188:7;4215:39;4219:1;4222;4215:39;;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4208:46;;4130:132;;;;:::o;1567:210::-;1657:1;1637:16;;:21;1629:30;;;;;;;;1694:1;1674:22;;:8;:22;;;;1666:31;;;;;;;;1738:8;1709:38;;1730:6;;;;;;;;;;;1709:38;;;;;;;;;;;;1763:8;1754:6;;:17;;;;;;;;;;;;;;;;;;1567:210;:::o;3672:192::-;3758:7;3818:9;3791:1;3786;:6;;3794:12;3778:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3778:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:1;3830;:5;3818:17;;3855:1;3848:8;;3672:192;;;;;;:::o;4270:191::-;4356:7;4415:9;4388:1;4384;:5;4391:12;4376:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4376:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4431:1;4427;:5;;;;;;;;4415:17;;4452:1;4445:8;;4270:191;;;;;;:::o;1108:109::-;455:20;348:12;;;;;;;;;;;:31;;;;364:15;:13;:15::i;:::-;348:31;:47;;;;384:11;;;;;;;;;;;383:12;348:47;340:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;478:12;;;;;;;;;;;455:35;;512:4;497:12;;:19;;;;;;;;;;;;;;;;;;537:4;523:11;;:18;;;;;;;;;;;;;;;;;;1181:6;1172;;:15;;;;;;;;;;;;;;;;;;1210:1;1191:16;:20;;;;575:15;560:12;;:30;;;;;;;;;;;;;;;;;;1108:109;;:::o;2874:160::-;455:20;348:12;;;;;;;;;;;:31;;;;364:15;:13;:15::i;:::-;348:31;:47;;;;384:11;;;;;;;;;;;383:12;348:47;340:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;478:12;;;;;;;;;;;455:35;;512:4;497:12;;:19;;;;;;;;;;;;;;;;;;537:4;523:11;;:18;;;;;;;;;;;;;;;;;;2974:4;2966:5;:12;;;;;;;;;;;;:::i;:::-;;2995:6;2985:7;:16;;;;;;;;;;;;:::i;:::-;;3020:8;3008:9;;:20;;;;;;;;;;;;;;;;;;575:15;560:12;;:30;;;;;;;;;;;;;;;;;;2874:160;;;;:::o;602:142::-;649:4;662:10;708:7;696:20;690:26;;737:1;731:2;:7;724:14;;602:142;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://ba8f5007b8ac9b9923c6169e5e2197fa02d8ef3b4c7fb099908cc197e8308353
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.