ETH Price: $2,637.16 (+2.00%)

Token

Annular Network (ANUL)
 

Overview

Max Total Supply

19,136,357.518017363011953215 ANUL

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,603.449581780329924803 ANUL

Value
$0.00
0x28363b60567c18f3ff4528f665e970c654725cc1
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:
ANULNetwork

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-04
*/

pragma solidity ^0.5.13;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

}

interface Callable {
	function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool);
}

contract ANULNetwork {
    
    using SafeMath for uint256;
	uint256 constant private FLOAT_SCALAR = 2**64;
	uint256 constant private INITIAL_SUPPLY = 21000000e18;
	uint256 constant private MIN_STAKE_AMOUNT = 1e21; // 1,000 Tokens Needed

	uint256 private XFER_FEE = 5; // 5% per tx
	uint256 private POOL_FEE = 3; // 3% to pool
	uint256 private DESTRUCTION = 2;  // 2% to Destruction
	uint256 private SHARE_DIVIDENDS = 6;  // 25% every collect
	uint256 private BASE_PROFIT = 5; // 1% Base Prifit

	uint256 private MAX_UNSTAKE_LIMIT = 2592000;

	string constant public name = "Annular Network";
	string constant public symbol = "ANUL";
	uint8 constant public decimals = 18;

	struct User {
		
		uint256 balance;
		uint256 staked;
		mapping(address => uint256) allowance;
		uint collectTime;
		uint stakeTime;
		int256 scaledPayout;
	}

	struct Info {
		uint256 totalSupply;
		uint256 totalStaked;
		uint256 totalStake;
		mapping(address => User) users;
		uint256 scaledPayoutPerToken;
		address admin;
	}
	
	Info private info;


	event Transfer(address indexed from, address indexed to, uint256 tokens);
	event Approval(address indexed owner, address indexed spender, uint256 tokens);
	
	event Stake(address indexed owner, uint256 tokens);
	event Unstake(address indexed owner, uint256 tokens);
	event Collect(address indexed owner, uint256 tokens);
	event Tax(uint256 tokens);


	constructor() public {
		info.admin = msg.sender;
		info.totalSupply = INITIAL_SUPPLY;
		info.users[msg.sender].balance = INITIAL_SUPPLY;
		emit Transfer(address(0x0), msg.sender, INITIAL_SUPPLY);
	}
	
	function SetXferFee(uint256 newXferFee) public {
        require(msg.sender == info.admin);
        require(newXferFee <= 10);
        XFER_FEE = newXferFee;
    }
    
    function SetPoolFee(uint256 newPoolFee) public {
        require(msg.sender == info.admin);
        require(XFER_FEE >= newPoolFee);
        POOL_FEE = newPoolFee;
    }
    
    function SetDestruction(uint256 newDestruction) public {
        require(msg.sender == info.admin);
        require(XFER_FEE >= newDestruction);
        DESTRUCTION = newDestruction;
    }
    
    
    function SetShareDividends(uint256 newShareDividends) public {
        require(msg.sender == info.admin);
        require(newShareDividends < 100);
        SHARE_DIVIDENDS = newShareDividends;
    }
    
    function SetBaseProfit(uint256 newBaseProfit) public {
        require(msg.sender == info.admin);
        require(newBaseProfit < 10);
        BASE_PROFIT = newBaseProfit;
    }
    
     function SetMaxUnStakeLimit(uint256 newMaxUnStakeLimit) public {
        require(msg.sender == info.admin);
        require(newMaxUnStakeLimit < 8640000);
        MAX_UNSTAKE_LIMIT = newMaxUnStakeLimit;
    }
    

	function stake(uint256 _tokens) external {
		_stake(_tokens);
	}

	function unstake(uint256 _tokens) external {
		_unstake(_tokens);
	}

	function collect() external returns (uint256) {
		uint256 _dividends = dividendsOf(msg.sender);
		require(_dividends > 0);
		require(info.users[msg.sender].collectTime < now);
		uint256 profit = _dividends.mul(SHARE_DIVIDENDS).div(100);
		uint256 base = info.users[msg.sender].staked.mul(BASE_PROFIT).div(100);
		info.users[msg.sender].scaledPayout += int256(_dividends.mul(FLOAT_SCALAR).mul(SHARE_DIVIDENDS).div(100));
		info.users[msg.sender].balance += profit + base;
		info.users[msg.sender].collectTime = now + 86400;

		info.totalSupply += base;
		
		emit Transfer(address(this), msg.sender, profit + base);
		emit Collect(msg.sender, _dividends);
		return _dividends;
	}
	function reinvest() external returns (uint256) {
	    uint256 _dividends = dividendsOf(msg.sender);
		require(_dividends > 0);
		require(info.users[msg.sender].collectTime < now);
		uint256 profit = _dividends.mul(SHARE_DIVIDENDS).div(100);
		uint256 base = info.users[msg.sender].staked.mul(BASE_PROFIT).div(100);
		uint256 _amount = profit + base;
		
		require(balanceOf(msg.sender) >= _amount);
		require(stakedOf(msg.sender) + _amount >= MIN_STAKE_AMOUNT);
		
		info.users[msg.sender].scaledPayout += int256(_dividends.mul(FLOAT_SCALAR).mul(SHARE_DIVIDENDS).div(100));
		info.users[msg.sender].collectTime = now + 86400;

		info.totalSupply += base;
		info.totalStaked += _amount;
		info.users[msg.sender].staked += _amount;
		info.users[msg.sender].scaledPayout += int256(_amount.mul(info.scaledPayoutPerToken));
		
		return _dividends;
    }
	function distribute(uint256 _tokens) external {
		require(info.totalStaked > 0);
		require(balanceOf(msg.sender) >= _tokens);
		info.users[msg.sender].balance -= _tokens;
		info.scaledPayoutPerToken += _tokens.mul(FLOAT_SCALAR).div(info.totalStaked);
		emit Transfer(msg.sender, address(this), _tokens);
	}

	function transfer(address _to, uint256 _tokens) external returns (bool) {
		_transfer(msg.sender, _to, _tokens);
		return true;
	}

	function approve(address _spender, uint256 _tokens) external returns (bool) {
		info.users[msg.sender].allowance[_spender] = _tokens;
		emit Approval(msg.sender, _spender, _tokens);
		return true;
	}

	function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) {
		require(info.users[_from].allowance[msg.sender] >= _tokens);
		info.users[_from].allowance[msg.sender] -= _tokens;
		_transfer(_from, _to, _tokens);
		return true;
	}

	function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) {
		uint256 _transferred = _transfer(msg.sender, _to, _tokens);
		uint32 _size;
		assembly {
			_size := extcodesize(_to)
		}
		if (_size > 0) {
			require(Callable(_to).tokenCallback(msg.sender, _transferred, _data));
		}
		return true;
	}

	function bulkTransfer(address[] calldata _receivers, uint256[] calldata _amounts) external {
		require(_receivers.length == _amounts.length);
		for (uint256 i = 0; i < _receivers.length; i++) {
			_transfer(msg.sender, _receivers[i], _amounts[i]);
		}
	}


	function totalSupply() public view returns (uint256) {
		return info.totalSupply;
	}

	function totalStaked() public view returns (uint256) {
		return info.totalStaked;
	}

	function balanceOf(address _user) public view returns (uint256) {
		return info.users[_user].balance - stakedOf(_user);
	}

	function stakedOf(address _user) public view returns (uint256) {
		return info.users[_user].staked;
	}
	
	function unstakeTimeOf(address _user) public view returns (uint256) {
	    return uint256(int256(info.users[_user].stakeTime + (info.totalSupply - info.totalStaked) * MAX_UNSTAKE_LIMIT / info.totalSupply ));
	}
	
	function collectTimeOf(address _user) public view returns (uint256) {
		return info.users[_user].collectTime;
	}
	
	function stakeTimeOf(address _user) public view returns (uint256) {
		return info.users[_user].stakeTime;
	}

	function dividendsOf(address _user) public view returns (uint256) {
		return uint256(int256(info.scaledPayoutPerToken * info.users[_user].staked) - info.users[_user].scaledPayout) / FLOAT_SCALAR;
	}

	function allowance(address _user, address _spender) public view returns (uint256) {
		return info.users[_user].allowance[_spender];
	}

	function allDataFor(address _user) public view returns (uint256 totalTokenSupply, uint256 totalTokensStaked, uint256 userBalance, uint256 userStaked, uint256 userDividends, uint256 userCollectTime, uint256 userUnstakeTime) {
		return (totalSupply(), totalStaked(), balanceOf(_user), stakedOf(_user), dividendsOf(_user), collectTimeOf(_user), unstakeTimeOf(_user));
	}


	function _transfer(address _from, address _to, uint256 _tokens) internal returns (uint256) {
		require(balanceOf(_from) >= _tokens);
		info.users[_from].balance -= _tokens;
		
		uint256 _taxAmount = _tokens.mul(XFER_FEE).div(100);
		uint256 _poolAmount = _tokens.mul(POOL_FEE).div(100);
		uint256 _destructionAmount = _tokens.mul(DESTRUCTION).div(100);
		
		uint256 _transferred = _tokens - _taxAmount;
		
        if (info.totalStaked > 0) {
            info.users[_to].balance += _transferred;
            info.totalSupply = info.totalSupply.sub(_destructionAmount);
            emit Transfer(_from, _to, _transferred);
            info.scaledPayoutPerToken += _poolAmount.mul(FLOAT_SCALAR).div(info.totalStaked);
            emit Transfer(_from, address(this), _poolAmount);
            emit Transfer(_from, address(0), _destructionAmount);
            emit Tax(_taxAmount);
            return _transferred;
        } else {
            info.users[_to].balance += _tokens;
            emit Transfer(_from, _to, _tokens);
            return _tokens;
        }
    }

	function _stake(uint256 _amount) internal {
		require(balanceOf(msg.sender) >= _amount);
		require(stakedOf(msg.sender) + _amount >= MIN_STAKE_AMOUNT);
		info.users[msg.sender].stakeTime = now;
		info.totalStaked += _amount;
		info.users[msg.sender].staked += _amount;
		info.users[msg.sender].scaledPayout += int256(_amount.mul(info.scaledPayoutPerToken));
		emit Transfer(msg.sender, address(this), _amount);
		emit Stake(msg.sender, _amount);
	}

	function _unstake(uint256 _amount) internal {
	    require(now > info.users[msg.sender].stakeTime.add(info.totalSupply.sub(info.totalStaked).mul(MAX_UNSTAKE_LIMIT).div(info.totalSupply)));
		require(stakedOf(msg.sender) >= _amount);
		uint256 _taxAmount = _amount.mul(XFER_FEE).div(100);
		info.scaledPayoutPerToken += _taxAmount.mul(FLOAT_SCALAR).div(info.totalStaked);
		info.totalStaked -= _amount;
		info.users[msg.sender].balance -= _taxAmount;
		info.users[msg.sender].staked -= _amount;
		info.users[msg.sender].scaledPayout -= int256(_amount.mul(info.scaledPayoutPerToken));
		emit Transfer(address(this), msg.sender, _amount.sub(_taxAmount));
		emit Unstake(msg.sender, _amount);
	}
}

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":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Tax","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Unstake","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newBaseProfit","type":"uint256"}],"name":"SetBaseProfit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newDestruction","type":"uint256"}],"name":"SetDestruction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newMaxUnStakeLimit","type":"uint256"}],"name":"SetMaxUnStakeLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newPoolFee","type":"uint256"}],"name":"SetPoolFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newShareDividends","type":"uint256"}],"name":"SetShareDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newXferFee","type":"uint256"}],"name":"SetXferFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"allDataFor","outputs":[{"internalType":"uint256","name":"totalTokenSupply","type":"uint256"},{"internalType":"uint256","name":"totalTokensStaked","type":"uint256"},{"internalType":"uint256","name":"userBalance","type":"uint256"},{"internalType":"uint256","name":"userStaked","type":"uint256"},{"internalType":"uint256","name":"userDividends","type":"uint256"},{"internalType":"uint256","name":"userCollectTime","type":"uint256"},{"internalType":"uint256","name":"userUnstakeTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","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":"_tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_receivers","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"bulkTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"collect","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"collectTimeOf","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":"uint256","name":"_tokens","type":"uint256"}],"name":"distribute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"dividendsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"stakeTimeOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"stakedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"unstake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"unstakeTimeOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405260056000556003600155600280556006600355600560045562278d0060055534801561002f57600080fd5b5033600660050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506a115eec47f6cf7e350000006006600001819055506a115eec47f6cf7e35000000600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a115eec47f6cf7e350000006040518082815260200191505060405180910390a361298f8061015e6000396000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80638d90cb1f11610104578063af500ba3116100a2578063e59c11e511610071578063e59c11e5146109fc578063f884353714610a7e578063fdb5a03e14610aac578063fe3efef214610aca576101ce565b8063af500ba3146108b6578063b932095f1461090e578063dd62ed3e14610966578063e5225381146109de576101ce565b8063999376a5116100de578063999376a51461079c578063a694fc3a146107f4578063a9059cbb14610822578063aa767a3614610888576101ce565b80638d90cb1f146106bd57806391c05b0b146106eb57806395d89b4114610719576101ce565b80632e17de78116101715780634000aea01161014b5780634000aea01461055e57806370a0823114610619578063817b1cd21461067157806389679ae91461068f576101ce565b80632e17de78146104b4578063313ce567146104e257806337b7efef14610506576101ce565b8063095ea7b3116101ad578063095ea7b3146102dc578063153a1f3e1461034257806318160ddd1461041057806323b872dd1461042e576101ce565b806265318b146101d357806303b8ce4e1461022b57806306fdde0314610259575b600080fd5b610215600480360360208110156101e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610af8565b6040518082815260200191505060405180910390f35b6102576004803603602081101561024157600080fd5b8101908080359060200190929190505050610ba7565b005b610261610c1d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a1578082015181840152602081019050610286565b50505050905090810190601f1680156102ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610328600480360360408110156102f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c56565b604051808215151515815260200191505060405180910390f35b61040e6004803603604081101561035857600080fd5b810190808035906020019064010000000081111561037557600080fd5b82018360208201111561038757600080fd5b803590602001918460208302840111640100000000831117156103a957600080fd5b9091929391929390803590602001906401000000008111156103ca57600080fd5b8201836020820111156103dc57600080fd5b803590602001918460208302840111640100000000831117156103fe57600080fd5b9091929391929390505050610d4e565b005b610418610dcb565b6040518082815260200191505060405180910390f35b61049a6004803603606081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dd8565b604051808215151515815260200191505060405180910390f35b6104e0600480360360208110156104ca57600080fd5b8101908080359060200190929190505050610f10565b005b6104ea610f1c565b604051808260ff1660ff16815260200191505060405180910390f35b6105486004803603602081101561051c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f21565b6040518082815260200191505060405180910390f35b6105ff6004803603606081101561057457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105bb57600080fd5b8201836020820111156105cd57600080fd5b803590602001918460018302840111640100000000831117156105ef57600080fd5b9091929391929390505050610f70565b604051808215151515815260200191505060405180910390f35b61065b6004803603602081101561062f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a3565b6040518082815260200191505060405180910390f35b6106796110fc565b6040518082815260200191505060405180910390f35b6106bb600480360360208110156106a557600080fd5b8101908080359060200190929190505050611109565b005b6106e9600480360360208110156106d357600080fd5b810190808035906020019092919050505061117d565b005b6107176004803603602081101561070157600080fd5b81019080803590602001909291905050506111f2565b005b610721611319565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610761578082015181840152602081019050610746565b50505050905090810190601f16801561078e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107de600480360360208110156107b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611352565b6040518082815260200191505060405180910390f35b6108206004803603602081101561080a57600080fd5b81019080803590602001909291905050506113a1565b005b61086e6004803603604081101561083857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113ad565b604051808215151515815260200191505060405180910390f35b6108b46004803603602081101561089e57600080fd5b81019080803590602001909291905050506113c5565b005b6108f8600480360360208110156108cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061143b565b6040518082815260200191505060405180910390f35b6109506004803603602081101561092457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061148a565b6040518082815260200191505060405180910390f35b6109c86004803603604081101561097c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f9565b6040518082815260200191505060405180910390f35b6109e6611586565b6040518082815260200191505060405180910390f35b610a3e60048036036020811015610a1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611899565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b610aaa60048036036020811015610a9457600080fd5b81019080803590602001909291905050506118fa565b005b610ab461196e565b6040518082815260200191505060405180910390f35b610af660048036036020811015610ae057600080fd5b8101908080359060200190929190505050611c84565b005b600068010000000000000000600660030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154600660030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600660040154020381610b9f57fe5b049050919050565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0457600080fd5b6283d6008110610c1357600080fd5b8060058190555050565b6040518060400160405280600f81526020017f416e6e756c6172204e6574776f726b000000000000000000000000000000000081525081565b600081600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b818190508484905014610d6057600080fd5b60008090505b84849050811015610dc457610db633868684818110610d8157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16858585818110610daa57fe5b90506020020135611cfa565b508080600101915050610d66565b5050505050565b6000600660000154905090565b600081600660030160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e6957600080fd5b81600660030160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550610f04848484611cfa565b50600190509392505050565b610f19816120f0565b50565b601281565b6000600660030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549050919050565b600080610f7e338787611cfa565b90506000863b905060008163ffffffff161115611095578673ffffffffffffffffffffffffffffffffffffffff16636be32e73338488886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b15801561105057600080fd5b505af1158015611064573d6000803e3d6000fd5b505050506040513d602081101561107a57600080fd5b810190808051906020019092919050505061109457600080fd5b5b600192505050949350505050565b60006110ae8261143b565b600660030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154039050919050565b6000600660010154905090565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461116657600080fd5b6064811061117357600080fd5b8060038190555050565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111da57600080fd5b600a8111156111e857600080fd5b8060008190555050565b60006006600101541161120457600080fd5b8061120e336110a3565b101561121957600080fd5b80600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254039250508190555061129f600660010154611291680100000000000000008461240c90919063ffffffff16565b61249290919063ffffffff16565b6006600401600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6040518060400160405280600481526020017f414e554c0000000000000000000000000000000000000000000000000000000081525081565b6000600660030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b6113aa816124dc565b50565b60006113ba338484611cfa565b506001905092915050565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461142257600080fd5b80600054101561143157600080fd5b8060028190555050565b6000600660030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60006006600001546005546006600101546006600001540302816114aa57fe5b04600660030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154019050919050565b6000600660030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008061159233610af8565b9050600081116115a157600080fd5b42600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154106115f257600080fd5b600061161c606461160e6003548561240c90919063ffffffff16565b61249290919063ffffffff16565b9050600061168d606461167f600454600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461240c90919063ffffffff16565b61249290919063ffffffff16565b90506116d260646116c46003546116b6680100000000000000008861240c90919063ffffffff16565b61240c90919063ffffffff16565b61249290919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008282540192505081905550808201600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550620151804201600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550806006600001600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8385016040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999846040518082815260200191505060405180910390a282935050505090565b60008060008060008060006118ac610dcb565b6118b46110fc565b6118bd8a6110a3565b6118c68b61143b565b6118cf8c610af8565b6118d88d611352565b6118e18e61148a565b9650965096509650965096509650919395979092949650565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461195757600080fd5b600a811061196457600080fd5b8060048190555050565b60008061197a33610af8565b90506000811161198957600080fd5b42600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154106119da57600080fd5b6000611a0460646119f66003548561240c90919063ffffffff16565b61249290919063ffffffff16565b90506000611a756064611a67600454600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461240c90919063ffffffff16565b61249290919063ffffffff16565b90506000818301905080611a88336110a3565b1015611a9357600080fd5b683635c9adc5dea0000081611aa73361143b565b011015611ab357600080fd5b611af66064611ae8600354611ada680100000000000000008961240c90919063ffffffff16565b61240c90919063ffffffff16565b61249290919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008282540192505081905550620151804201600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550816006600001600082825401925050819055508060066001016000828254019250508190555080600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550611c286006600401548261240c90919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600082825401925050819055508394505050505090565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ce157600080fd5b806000541015611cf057600080fd5b8060018190555050565b600081611d06856110a3565b1015611d1157600080fd5b81600660030160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825403925050819055506000611d8e6064611d806000548661240c90919063ffffffff16565b61249290919063ffffffff16565b90506000611dba6064611dac6001548761240c90919063ffffffff16565b61249290919063ffffffff16565b90506000611de66064611dd86002548861240c90919063ffffffff16565b61249290919063ffffffff16565b905060008386039050600060066001015411156120295780600660030160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550611e68826006600001546126e190919063ffffffff16565b6006600001819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3611f09600660010154611efb680100000000000000008661240c90919063ffffffff16565b61249290919063ffffffff16565b6006600401600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37f1da9a0060303acd94a78d52073d1a4429cf474a9a26cee91c84e7d28abb2baaa846040518082815260200191505060405180910390a1809450505050506120e9565b85600660030160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a3859450505050505b9392505050565b61218f61213b60066000015461212d60055461211f6006600101546006600001546126e190919063ffffffff16565b61240c90919063ffffffff16565b61249290919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015461272b90919063ffffffff16565b421161219a57600080fd5b806121a43361143b565b10156121af57600080fd5b60006121d960646121cb6000548561240c90919063ffffffff16565b61249290919063ffffffff16565b905061220e600660010154612200680100000000000000008461240c90919063ffffffff16565b61249290919063ffffffff16565b6006600401600082825401925050819055508160066001016000828254039250508190555080600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254039250508190555081600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825403925050819055506122f16006600401548361240c90919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123a584866126e190919063ffffffff16565b6040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd836040518082815260200191505060405180910390a25050565b60008083141561241f576000905061248c565b600082840290508284828161243057fe5b0414612487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061293a6021913960400191505060405180910390fd5b809150505b92915050565b60006124d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127b3565b905092915050565b806124e6336110a3565b10156124f157600080fd5b683635c9adc5dea00000816125053361143b565b01101561251157600080fd5b42600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508060066001016000828254019250508190555080600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825401925050819055506125d96006600401548261240c90919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a826040518082815260200191505060405180910390a250565b600061272383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612879565b905092915050565b6000808284019050838110156127a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808311829061285f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612824578082015181840152602081019050612809565b50505050905090810190601f1680156128515780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161286b57fe5b049050809150509392505050565b6000838311158290612926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128eb5780820151818401526020810190506128d0565b50505050905090810190601f1680156129185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820b30fa93b54acdf18da17826c341d31d015330663f40bf44dc119ab9d9dc4d48964736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101ce5760003560e01c80638d90cb1f11610104578063af500ba3116100a2578063e59c11e511610071578063e59c11e5146109fc578063f884353714610a7e578063fdb5a03e14610aac578063fe3efef214610aca576101ce565b8063af500ba3146108b6578063b932095f1461090e578063dd62ed3e14610966578063e5225381146109de576101ce565b8063999376a5116100de578063999376a51461079c578063a694fc3a146107f4578063a9059cbb14610822578063aa767a3614610888576101ce565b80638d90cb1f146106bd57806391c05b0b146106eb57806395d89b4114610719576101ce565b80632e17de78116101715780634000aea01161014b5780634000aea01461055e57806370a0823114610619578063817b1cd21461067157806389679ae91461068f576101ce565b80632e17de78146104b4578063313ce567146104e257806337b7efef14610506576101ce565b8063095ea7b3116101ad578063095ea7b3146102dc578063153a1f3e1461034257806318160ddd1461041057806323b872dd1461042e576101ce565b806265318b146101d357806303b8ce4e1461022b57806306fdde0314610259575b600080fd5b610215600480360360208110156101e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610af8565b6040518082815260200191505060405180910390f35b6102576004803603602081101561024157600080fd5b8101908080359060200190929190505050610ba7565b005b610261610c1d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a1578082015181840152602081019050610286565b50505050905090810190601f1680156102ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610328600480360360408110156102f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c56565b604051808215151515815260200191505060405180910390f35b61040e6004803603604081101561035857600080fd5b810190808035906020019064010000000081111561037557600080fd5b82018360208201111561038757600080fd5b803590602001918460208302840111640100000000831117156103a957600080fd5b9091929391929390803590602001906401000000008111156103ca57600080fd5b8201836020820111156103dc57600080fd5b803590602001918460208302840111640100000000831117156103fe57600080fd5b9091929391929390505050610d4e565b005b610418610dcb565b6040518082815260200191505060405180910390f35b61049a6004803603606081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dd8565b604051808215151515815260200191505060405180910390f35b6104e0600480360360208110156104ca57600080fd5b8101908080359060200190929190505050610f10565b005b6104ea610f1c565b604051808260ff1660ff16815260200191505060405180910390f35b6105486004803603602081101561051c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f21565b6040518082815260200191505060405180910390f35b6105ff6004803603606081101561057457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105bb57600080fd5b8201836020820111156105cd57600080fd5b803590602001918460018302840111640100000000831117156105ef57600080fd5b9091929391929390505050610f70565b604051808215151515815260200191505060405180910390f35b61065b6004803603602081101561062f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a3565b6040518082815260200191505060405180910390f35b6106796110fc565b6040518082815260200191505060405180910390f35b6106bb600480360360208110156106a557600080fd5b8101908080359060200190929190505050611109565b005b6106e9600480360360208110156106d357600080fd5b810190808035906020019092919050505061117d565b005b6107176004803603602081101561070157600080fd5b81019080803590602001909291905050506111f2565b005b610721611319565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610761578082015181840152602081019050610746565b50505050905090810190601f16801561078e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107de600480360360208110156107b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611352565b6040518082815260200191505060405180910390f35b6108206004803603602081101561080a57600080fd5b81019080803590602001909291905050506113a1565b005b61086e6004803603604081101561083857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113ad565b604051808215151515815260200191505060405180910390f35b6108b46004803603602081101561089e57600080fd5b81019080803590602001909291905050506113c5565b005b6108f8600480360360208110156108cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061143b565b6040518082815260200191505060405180910390f35b6109506004803603602081101561092457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061148a565b6040518082815260200191505060405180910390f35b6109c86004803603604081101561097c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f9565b6040518082815260200191505060405180910390f35b6109e6611586565b6040518082815260200191505060405180910390f35b610a3e60048036036020811015610a1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611899565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b610aaa60048036036020811015610a9457600080fd5b81019080803590602001909291905050506118fa565b005b610ab461196e565b6040518082815260200191505060405180910390f35b610af660048036036020811015610ae057600080fd5b8101908080359060200190929190505050611c84565b005b600068010000000000000000600660030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154600660030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600660040154020381610b9f57fe5b049050919050565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0457600080fd5b6283d6008110610c1357600080fd5b8060058190555050565b6040518060400160405280600f81526020017f416e6e756c6172204e6574776f726b000000000000000000000000000000000081525081565b600081600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b818190508484905014610d6057600080fd5b60008090505b84849050811015610dc457610db633868684818110610d8157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16858585818110610daa57fe5b90506020020135611cfa565b508080600101915050610d66565b5050505050565b6000600660000154905090565b600081600660030160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e6957600080fd5b81600660030160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550610f04848484611cfa565b50600190509392505050565b610f19816120f0565b50565b601281565b6000600660030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549050919050565b600080610f7e338787611cfa565b90506000863b905060008163ffffffff161115611095578673ffffffffffffffffffffffffffffffffffffffff16636be32e73338488886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b15801561105057600080fd5b505af1158015611064573d6000803e3d6000fd5b505050506040513d602081101561107a57600080fd5b810190808051906020019092919050505061109457600080fd5b5b600192505050949350505050565b60006110ae8261143b565b600660030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154039050919050565b6000600660010154905090565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461116657600080fd5b6064811061117357600080fd5b8060038190555050565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111da57600080fd5b600a8111156111e857600080fd5b8060008190555050565b60006006600101541161120457600080fd5b8061120e336110a3565b101561121957600080fd5b80600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254039250508190555061129f600660010154611291680100000000000000008461240c90919063ffffffff16565b61249290919063ffffffff16565b6006600401600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6040518060400160405280600481526020017f414e554c0000000000000000000000000000000000000000000000000000000081525081565b6000600660030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b6113aa816124dc565b50565b60006113ba338484611cfa565b506001905092915050565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461142257600080fd5b80600054101561143157600080fd5b8060028190555050565b6000600660030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60006006600001546005546006600101546006600001540302816114aa57fe5b04600660030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154019050919050565b6000600660030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008061159233610af8565b9050600081116115a157600080fd5b42600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154106115f257600080fd5b600061161c606461160e6003548561240c90919063ffffffff16565b61249290919063ffffffff16565b9050600061168d606461167f600454600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461240c90919063ffffffff16565b61249290919063ffffffff16565b90506116d260646116c46003546116b6680100000000000000008861240c90919063ffffffff16565b61240c90919063ffffffff16565b61249290919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008282540192505081905550808201600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550620151804201600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550806006600001600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8385016040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999846040518082815260200191505060405180910390a282935050505090565b60008060008060008060006118ac610dcb565b6118b46110fc565b6118bd8a6110a3565b6118c68b61143b565b6118cf8c610af8565b6118d88d611352565b6118e18e61148a565b9650965096509650965096509650919395979092949650565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461195757600080fd5b600a811061196457600080fd5b8060048190555050565b60008061197a33610af8565b90506000811161198957600080fd5b42600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154106119da57600080fd5b6000611a0460646119f66003548561240c90919063ffffffff16565b61249290919063ffffffff16565b90506000611a756064611a67600454600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461240c90919063ffffffff16565b61249290919063ffffffff16565b90506000818301905080611a88336110a3565b1015611a9357600080fd5b683635c9adc5dea0000081611aa73361143b565b011015611ab357600080fd5b611af66064611ae8600354611ada680100000000000000008961240c90919063ffffffff16565b61240c90919063ffffffff16565b61249290919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008282540192505081905550620151804201600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550816006600001600082825401925050819055508060066001016000828254019250508190555080600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550611c286006600401548261240c90919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600082825401925050819055508394505050505090565b600660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ce157600080fd5b806000541015611cf057600080fd5b8060018190555050565b600081611d06856110a3565b1015611d1157600080fd5b81600660030160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825403925050819055506000611d8e6064611d806000548661240c90919063ffffffff16565b61249290919063ffffffff16565b90506000611dba6064611dac6001548761240c90919063ffffffff16565b61249290919063ffffffff16565b90506000611de66064611dd86002548861240c90919063ffffffff16565b61249290919063ffffffff16565b905060008386039050600060066001015411156120295780600660030160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550611e68826006600001546126e190919063ffffffff16565b6006600001819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3611f09600660010154611efb680100000000000000008661240c90919063ffffffff16565b61249290919063ffffffff16565b6006600401600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37f1da9a0060303acd94a78d52073d1a4429cf474a9a26cee91c84e7d28abb2baaa846040518082815260200191505060405180910390a1809450505050506120e9565b85600660030160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a3859450505050505b9392505050565b61218f61213b60066000015461212d60055461211f6006600101546006600001546126e190919063ffffffff16565b61240c90919063ffffffff16565b61249290919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015461272b90919063ffffffff16565b421161219a57600080fd5b806121a43361143b565b10156121af57600080fd5b60006121d960646121cb6000548561240c90919063ffffffff16565b61249290919063ffffffff16565b905061220e600660010154612200680100000000000000008461240c90919063ffffffff16565b61249290919063ffffffff16565b6006600401600082825401925050819055508160066001016000828254039250508190555080600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254039250508190555081600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825403925050819055506122f16006600401548361240c90919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123a584866126e190919063ffffffff16565b6040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd836040518082815260200191505060405180910390a25050565b60008083141561241f576000905061248c565b600082840290508284828161243057fe5b0414612487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061293a6021913960400191505060405180910390fd5b809150505b92915050565b60006124d483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127b3565b905092915050565b806124e6336110a3565b10156124f157600080fd5b683635c9adc5dea00000816125053361143b565b01101561251157600080fd5b42600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508060066001016000828254019250508190555080600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825401925050819055506125d96006600401548261240c90919063ffffffff16565b600660030160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a826040518082815260200191505060405180910390a250565b600061272383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612879565b905092915050565b6000808284019050838110156127a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808311829061285f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612824578082015181840152602081019050612809565b50505050905090810190601f1680156128515780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161286b57fe5b049050809150509392505050565b6000838311158290612926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128eb5780820151818401526020810190506128d0565b50505050905090810190601f1680156129185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820b30fa93b54acdf18da17826c341d31d015330663f40bf44dc119ab9d9dc4d48964736f6c63430005110032

Deployed Bytecode Sourcemap

3636:9970:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3636:9970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10622:200;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10622:200:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6258:212;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6258:212:0;;;;;;;;;;;;;;;;;:::i;:::-;;4196:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4196:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8647:203;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8647:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9482:259;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9482:259:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9482:259:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9482:259:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9482:259:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9482:259:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9482:259:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9482:259:0;;;;;;;;;;;;:::i;:::-;;9748:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8855:266;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8855:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6552:70;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6552:70:0;;;;;;;;;;;;;;;;;:::i;:::-;;4289:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10507:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10507:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9126:351;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9126:351:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9126:351:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9126:351:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9126:351:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9930:124;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9930:124:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9839:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5850:202;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5850:202:0;;;;;;;;;;;;;;;;;:::i;:::-;;5276:167;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5276:167:0;;;;;;;;;;;;;;;;;:::i;:::-;;8192:312;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8192:312:0;;;;;;;;;;;;;;;;;:::i;:::-;;4247:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4247:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10387:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10387:114:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6481:66;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6481:66:0;;;;;;;;;;;;;;;;;:::i;:::-;;8509:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8509:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5640:192;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5640:192:0;;;;;;;;;;;;;;;;;:::i;:::-;;10059:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10059:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10169:212;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10169:212:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10827:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10827:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6627:692;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10968:369;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10968:369:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6064:181;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6064:181:0;;;;;;;;;;;;;;;;;:::i;:::-;;7322:867;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5455:173;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5455:173:0;;;;;;;;;;;;;;;;;:::i;:::-;;10622:200;10679:7;3740:5;10771:4;:10;;:17;10782:5;10771:17;;;;;;;;;;;;;;;:30;;;10743:4;:10;;:17;10754:5;10743:17;;;;;;;;;;;;;;;:24;;;10715:4;:25;;;:52;10708:93;10700:117;;;;;;10693:124;;10622:200;;;:::o;6258:212::-;6354:4;:10;;;;;;;;;;;;6340:24;;:10;:24;;;6332:33;;;;;;6405:7;6384:18;:28;6376:37;;;;;;6444:18;6424:17;:38;;;;6258:212;:::o;4196:47::-;;;;;;;;;;;;;;;;;;;:::o;8647:203::-;8717:4;8773:7;8728:4;:10;;:22;8739:10;8728:22;;;;;;;;;;;;;;;:32;;:42;8761:8;8728:42;;;;;;;;;;;;;;;:52;;;;8811:8;8790:39;;8799:10;8790:39;;;8821:7;8790:39;;;;;;;;;;;;;;;;;;8841:4;8834:11;;8647:203;;;;:::o;9482:259::-;9607:8;;:15;;9586:10;;:17;;:36;9578:45;;;;;;9633:9;9645:1;9633:13;;9628:109;9652:10;;:17;;9648:1;:21;9628:109;;;9682:49;9692:10;9704;;9715:1;9704:13;;;;;;;;;;;;;;;9719:8;;9728:1;9719:11;;;;;;;;;;;;;9682:9;:49::i;:::-;;9671:3;;;;;;;9628:109;;;;9482:259;;;;:::o;9748:86::-;9792:7;9813:4;:16;;;9806:23;;9748:86;:::o;8855:266::-;8940:4;9002:7;8959:4;:10;;:17;8970:5;8959:17;;;;;;;;;;;;;;;:27;;:39;8987:10;8959:39;;;;;;;;;;;;;;;;:50;;8951:59;;;;;;9058:7;9015:4;:10;;:17;9026:5;9015:17;;;;;;;;;;;;;;;:27;;:39;9043:10;9015:39;;;;;;;;;;;;;;;;:50;;;;;;;;;;;9070:30;9080:5;9087:3;9092:7;9070:9;:30::i;:::-;;9112:4;9105:11;;8855:266;;;;;:::o;6552:70::-;6600:17;6609:7;6600:8;:17::i;:::-;6552:70;:::o;4289:35::-;4322:2;4289:35;:::o;10507:110::-;10564:7;10585:4;:10;;:17;10596:5;10585:17;;;;;;;;;;;;;;;:27;;;10578:34;;10507:110;;;:::o;9126:351::-;9221:4;9232:20;9255:35;9265:10;9277:3;9282:7;9255:9;:35::i;:::-;9232:58;;9295:12;9348:3;9336:16;9327:25;;9373:1;9365:5;:9;;;9361:96;;;9399:3;9390:27;;;9418:10;9430:12;9444:5;;9390:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9390:60:0;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9390:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9390:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9390:60:0;;;;;;;;;;;;;;;;9382:69;;;;;;9361:96;9468:4;9461:11;;;;9126:351;;;;;;:::o;9930:124::-;9985:7;10034:15;10043:5;10034:8;:15::i;:::-;10006:4;:10;;:17;10017:5;10006:17;;;;;;;;;;;;;;;:25;;;:43;9999:50;;9930:124;;;:::o;9839:86::-;9883:7;9904:4;:16;;;9897:23;;9839:86;:::o;5850:202::-;5944:4;:10;;;;;;;;;;;;5930:24;;:10;:24;;;5922:33;;;;;;5994:3;5974:17;:23;5966:32;;;;;;6027:17;6009:15;:35;;;;5850:202;:::o;5276:167::-;5356:4;:10;;;;;;;;;;;;5342:24;;:10;:24;;;5334:33;;;;;;5400:2;5386:10;:16;;5378:25;;;;;;5425:10;5414:8;:21;;;;5276:167;:::o;8192:312::-;8270:1;8251:4;:16;;;:20;8243:29;;;;;;8310:7;8285:21;8295:10;8285:9;:21::i;:::-;:32;;8277:41;;;;;;8357:7;8323:4;:10;;:22;8334:10;8323:22;;;;;;;;;;;;;;;:30;;;:41;;;;;;;;;;;8398:47;8428:4;:16;;;8398:25;3740:5;8398:7;:11;;:25;;;;:::i;:::-;:29;;:47;;;;:::i;:::-;8369:4;:25;;;:76;;;;;;;;;;;8484:4;8455:44;;8464:10;8455:44;;;8491:7;8455:44;;;;;;;;;;;;;;;;;;8192:312;:::o;4247:38::-;;;;;;;;;;;;;;;;;;;:::o;10387:114::-;10446:7;10467:4;:10;;:17;10478:5;10467:17;;;;;;;;;;;;;;;:29;;;10460:36;;10387:114;;;:::o;6481:66::-;6527:15;6534:7;6527:6;:15::i;:::-;6481:66;:::o;8509:133::-;8575:4;8586:35;8596:10;8608:3;8613:7;8586:9;:35::i;:::-;;8633:4;8626:11;;8509:133;;;;:::o;5640:192::-;5728:4;:10;;;;;;;;;;;;5714:24;;:10;:24;;;5706:33;;;;;;5770:14;5758:8;;:26;;5750:35;;;;;;5810:14;5796:11;:28;;;;5640:192;:::o;10059:104::-;10113:7;10134:4;:10;;:17;10145:5;10134:17;;;;;;;;;;;;;;;:24;;;10127:31;;10059:104;;;:::o;10169:212::-;10228:7;10357:4;:16;;;10337:17;;10317:4;:16;;;10298:4;:16;;;:35;10297:57;:76;;;;;;10267:4;:10;;:17;10278:5;10267:17;;;;;;;;;;;;;;;:27;;;:106;10245:131;;10169:212;;;:::o;10827:136::-;10900:7;10921:4;:10;;:17;10932:5;10921:17;;;;;;;;;;;;;;;:27;;:37;10949:8;10921:37;;;;;;;;;;;;;;;;10914:44;;10827:136;;;;:::o;6627:692::-;6664:7;6678:18;6699:23;6711:10;6699:11;:23::i;:::-;6678:44;;6748:1;6735:10;:14;6727:23;;;;;;6800:3;6763:4;:10;;:22;6774:10;6763:22;;;;;;;;;;;;;;;:34;;;:40;6755:49;;;;;;6809:14;6826:40;6862:3;6826:31;6841:15;;6826:10;:14;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;6809:57;;6871:12;6886:55;6937:3;6886:46;6920:11;;6886:4;:10;;:22;6897:10;6886:22;;;;;;;;;;;;;;;:29;;;:33;;:46;;;;:::i;:::-;:50;;:55;;;;:::i;:::-;6871:70;;6992:58;7046:3;6992:49;7025:15;;6992:28;3740:5;6992:10;:14;;:28;;;;:::i;:::-;:32;;:49;;;;:::i;:::-;:53;;:58;;;;:::i;:::-;6946:4;:10;;:22;6957:10;6946:22;;;;;;;;;;;;;;;:35;;;:105;;;;;;;;;;;7099:4;7090:6;:13;7056:4;:10;;:22;7067:10;7056:22;;;;;;;;;;;;;;;:30;;;:47;;;;;;;;;;;7151:5;7145:3;:11;7108:4;:10;;:22;7119:10;7108:22;;;;;;;;;;;;;;;:34;;:48;;;;7183:4;7163;:16;;;:24;;;;;;;;;;;7225:10;7201:50;;7218:4;7201:50;;;7246:4;7237:6;:13;7201:50;;;;;;;;;;;;;;;;;;7269:10;7261:31;;;7281:10;7261:31;;;;;;;;;;;;;;;;;;7304:10;7297:17;;;;;6627:692;:::o;10968:369::-;11024:24;11050:25;11077:19;11098:18;11118:21;11141:23;11166;11204:13;:11;:13::i;:::-;11219;:11;:13::i;:::-;11234:16;11244:5;11234:9;:16::i;:::-;11252:15;11261:5;11252:8;:15::i;:::-;11269:18;11281:5;11269:11;:18::i;:::-;11289:20;11303:5;11289:13;:20::i;:::-;11311;11325:5;11311:13;:20::i;:::-;11196:136;;;;;;;;;;;;;;10968:369;;;;;;;;;:::o;6064:181::-;6150:4;:10;;;;;;;;;;;;6136:24;;:10;:24;;;6128:33;;;;;;6196:2;6180:13;:18;6172:27;;;;;;6224:13;6210:11;:27;;;;6064:181;:::o;7322:867::-;7360:7;7377:18;7398:23;7410:10;7398:11;:23::i;:::-;7377:44;;7447:1;7434:10;:14;7426:23;;;;;;7499:3;7462:4;:10;;:22;7473:10;7462:22;;;;;;;;;;;;;;;:34;;;:40;7454:49;;;;;;7508:14;7525:40;7561:3;7525:31;7540:15;;7525:10;:14;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;7508:57;;7570:12;7585:55;7636:3;7585:46;7619:11;;7585:4;:10;;:22;7596:10;7585:22;;;;;;;;;;;;;;;:29;;;:33;;:46;;;;:::i;:::-;:50;;:55;;;;:::i;:::-;7570:70;;7645:15;7672:4;7663:6;:13;7645:31;;7718:7;7693:21;7703:10;7693:9;:21::i;:::-;:32;;7685:41;;;;;;3850:4;7762:7;7739:20;7748:10;7739:8;:20::i;:::-;:30;:50;;7731:59;;;;;;7845:58;7899:3;7845:49;7878:15;;7845:28;3740:5;7845:10;:14;;:28;;;;:::i;:::-;:32;;:49;;;;:::i;:::-;:53;;:58;;;;:::i;:::-;7799:4;:10;;:22;7810:10;7799:22;;;;;;;;;;;;;;;:35;;;:105;;;;;;;;;;;7952:5;7946:3;:11;7909:4;:10;;:22;7920:10;7909:22;;;;;;;;;;;;;;;:34;;:48;;;;7984:4;7964;:16;;;:24;;;;;;;;;;;8013:7;7993:4;:16;;;:27;;;;;;;;;;;8058:7;8025:4;:10;;:22;8036:10;8025:22;;;;;;;;;;;;;;;:29;;;:40;;;;;;;;;;;8116:38;8128:4;:25;;;8116:7;:11;;:38;;;;:::i;:::-;8070:4;:10;;:22;8081:10;8070:22;;;;;;;;;;;;;;;:35;;;:85;;;;;;;;;;;8171:10;8164:17;;;;;;7322:867;:::o;5455:173::-;5535:4;:10;;;;;;;;;;;;5521:24;;:10;:24;;;5513:33;;;;;;5577:10;5565:8;;:22;;5557:31;;;;;;5610:10;5599:8;:21;;;;5455:173;:::o;11344:1090::-;11426:7;11468;11448:16;11458:5;11448:9;:16::i;:::-;:27;;11440:36;;;;;;11510:7;11481:4;:10;;:17;11492:5;11481:17;;;;;;;;;;;;;;;:25;;;:36;;;;;;;;;;;11526:18;11547:30;11573:3;11547:21;11559:8;;11547:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;11526:51;;11582:19;11604:30;11630:3;11604:21;11616:8;;11604:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;11582:52;;11639:26;11668:33;11697:3;11668:24;11680:11;;11668:7;:11;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;11639:62;;11710:20;11743:10;11733:7;:20;11710:43;;11791:1;11772:4;:16;;;:20;11768:659;;;11836:12;11809:4;:10;;:15;11820:3;11809:15;;;;;;;;;;;;;;;:23;;;:39;;;;;;;;;;;11882:40;11903:18;11882:4;:16;;;:20;;:40;;;;:::i;:::-;11863:4;:16;;:59;;;;11958:3;11942:34;;11951:5;11942:34;;;11963:12;11942:34;;;;;;;;;;;;;;;;;;12020:51;12054:4;:16;;;12020:29;3740:5;12020:11;:15;;:29;;;;:::i;:::-;:33;;:51;;;;:::i;:::-;11991:4;:25;;;:80;;;;;;;;;;;12115:4;12091:43;;12100:5;12091:43;;;12122:11;12091:43;;;;;;;;;;;;;;;;;;12178:1;12154:47;;12163:5;12154:47;;;12182:18;12154:47;;;;;;;;;;;;;;;;;;12221:15;12225:10;12221:15;;;;;;;;;;;;;;;;;;12258:12;12251:19;;;;;;;;11768:659;12330:7;12303:4;:10;;:15;12314:3;12303:15;;;;;;;;;;;;;;;:23;;;:34;;;;;;;;;;;12373:3;12357:29;;12366:5;12357:29;;;12378:7;12357:29;;;;;;;;;;;;;;;;;;12408:7;12401:14;;;;;;11344:1090;;;;;;:::o;12901:702::-;12967:121;13004:83;13070:4;:16;;;13004:61;13047:17;;13004:38;13025:4;:16;;;13004:4;:16;;;:20;;:38;;;;:::i;:::-;:42;;:61;;;;:::i;:::-;:65;;:83;;;;:::i;:::-;12967:4;:10;;:22;12978:10;12967:22;;;;;;;;;;;;;;;:32;;;:36;;:121;;;;:::i;:::-;12961:3;:127;12953:136;;;;;;13126:7;13102:20;13111:10;13102:8;:20::i;:::-;:31;;13094:40;;;;;;13139:18;13160:30;13186:3;13160:21;13172:8;;13160:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;13139:51;;13224:50;13257:4;:16;;;13224:28;3740:5;13224:10;:14;;:28;;;;:::i;:::-;:32;;:50;;;;:::i;:::-;13195:4;:25;;;:79;;;;;;;;;;;13299:7;13279:4;:16;;;:27;;;;;;;;;;;13345:10;13311:4;:10;;:22;13322:10;13311:22;;;;;;;;;;;;;;;:30;;;:44;;;;;;;;;;;13393:7;13360:4;:10;;:22;13371:10;13360:22;;;;;;;;;;;;;;;:29;;;:40;;;;;;;;;;;13451:38;13463:4;:25;;;13451:7;:11;;:38;;;;:::i;:::-;13405:4;:10;;:22;13416:10;13405:22;;;;;;;;;;;;;;;:35;;;:85;;;;;;;;;;;13524:10;13500:60;;13517:4;13500:60;;;13536:23;13548:10;13536:7;:11;;:23;;;;:::i;:::-;13500:60;;;;;;;;;;;;;;;;;;13578:10;13570:28;;;13590:7;13570:28;;;;;;;;;;;;;;;;;;12901:702;;:::o;1643:471::-;1701:7;1951:1;1946;:6;1942:47;;;1976:1;1969:8;;;;1942:47;2001:9;2017:1;2013;:5;2001:17;;2046:1;2041;2037;:5;;;;;;:10;2029:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2105:1;2098:8;;;1643:471;;;;;:::o;2590:132::-;2648:7;2675:39;2679:1;2682;2675:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2668:46;;2590:132;;;;:::o;12439:457::-;12519:7;12494:21;12504:10;12494:9;:21::i;:::-;:32;;12486:41;;;;;;3850:4;12563:7;12540:20;12549:10;12540:8;:20::i;:::-;:30;:50;;12532:59;;;;;;12631:3;12596:4;:10;;:22;12607:10;12596:22;;;;;;;;;;;;;;;:32;;:38;;;;12659:7;12639:4;:16;;;:27;;;;;;;;;;;12704:7;12671:4;:10;;:22;12682:10;12671:22;;;;;;;;;;;;;;;:29;;;:40;;;;;;;;;;;12762:38;12774:4;:25;;;12762:7;:11;;:38;;;;:::i;:::-;12716:4;:10;;:22;12727:10;12716:22;;;;;;;;;;;;;;;:35;;;:85;;;;;;;;;;;12840:4;12811:44;;12820:10;12811:44;;;12847:7;12811:44;;;;;;;;;;;;;;;;;;12871:10;12865:26;;;12883:7;12865:26;;;;;;;;;;;;;;;;;;12439:457;:::o;755:136::-;813:7;840:43;844:1;847;840:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;833:50;;755:136;;;;:::o;291:181::-;349:7;369:9;385:1;381;:5;369:17;;410:1;405;:6;;397:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;463:1;456:8;;;291:181;;;;:::o;3218:278::-;3304:7;3336:1;3332;:5;3339:12;3324: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;3324:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3363:9;3379:1;3375;:5;;;;;;3363:17;;3487:1;3480:8;;;3218:278;;;;;:::o;1194:190::-;1280:7;1313:1;1308;:6;;1316:12;1300: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;1300:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1340:9;1356:1;1352;:5;1340:17;;1375:1;1368:8;;;1194:190;;;;;:::o

Swarm Source

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