Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
200,000,000 BSB
Holders
1,286
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BSBEXToken
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-08-31 */ pragma solidity ^0.4.24; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { // Gas optimization: this is cheaper than asserting 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 // uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title ERC20 interface */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval( address indexed owner, address indexed spender, uint256 value ); } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; uint256 totalSupply_; /** * @dev Total number of tokens in existence */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev Transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom( address _from, address _to, uint256 _value ) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards, * i.e. clients SHOULD make sure to create user interfaces in such a way * that they set the allowance first to 0 before setting it to another value for the same spender. * @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) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance( address _owner, address _spender ) public view returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval( address _spender, uint256 _addedValue ) public returns (bool) { allowed[msg.sender][_spender] = ( allowed[msg.sender][_spender].add(_addedValue)); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval( address _spender, uint256 _subtractedValue ) public returns (bool) { uint256 oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } contract BSBEXToken is StandardToken { string public constant name = "BSBEXToken"; string public constant symbol = "BSB"; uint8 public constant decimals = 18; uint256 constant MONTH = 3600*24*30; struct TimeLock { // total amount of tokens that is granted to the user uint256 amount; // total amount of tokens that have been vested uint256 vestedAmount; // total amount of vested months (tokens are vested on a monthly basis) uint16 vestedMonths; // token timestamp start uint256 start; // token timestamp release start (when user can start receive vested tokens) uint256 cliff; // token timestamp release end (when all the tokens can be vested) uint256 vesting; address from; } mapping(address => TimeLock) timeLocks; event NewTokenGrant(address indexed _from, address indexed _to, uint256 _amount, uint256 _start, uint256 _cliff, uint256 _vesting); event VestedTokenRedeemed(address indexed _to, uint256 _amount, uint256 _vestedMonths); event GrantedTokenReturned(address indexed _from, address indexed _to, uint256 _amount); /** * @dev Constructor that gives msg.sender all of existing tokens. */ constructor() public { totalSupply_ = 200000000 * (10 ** uint256(decimals)); balances[msg.sender] = totalSupply_; emit Transfer(address(0), msg.sender, totalSupply_); } function vestBalanceOf(address who) public view returns (uint256 amount, uint256 vestedAmount, uint256 start, uint256 cliff, uint256 vesting) { require(who != address(0)); amount = timeLocks[who].amount; vestedAmount = timeLocks[who].vestedAmount; start = timeLocks[who].start; cliff = timeLocks[who].cliff; vesting = timeLocks[who].vesting; } /** * @dev Function to grant the amount of tokens that will be vested later. * @param _to The address which will own the tokens. * @param _amount The amount of tokens that will be vested later. * @param _start Token timestamp start. * @param _cliff Token timestamp release start. * @param _vesting Token timestamp release end. */ function grantToken( address _to, uint256 _amount, uint256 _start, uint256 _cliff, uint256 _vesting ) public returns (bool success) { require(_to != address(0)); require(_amount <= balances[msg.sender], "Not enough balance to grant token."); require(_amount > 0, "Nothing to transfer."); require((timeLocks[_to].amount.sub(timeLocks[_to].vestedAmount) == 0), "The previous vesting should be completed."); require(_cliff >= _start, "_cliff must be >= _start"); require(_vesting > _start, "_vesting must be bigger than _start"); require(_vesting > _cliff, "_vesting must be bigger than _cliff"); balances[msg.sender] = balances[msg.sender].sub(_amount); timeLocks[_to] = TimeLock(_amount, 0, 0, _start, _cliff, _vesting, msg.sender); emit NewTokenGrant(msg.sender, _to, _amount, _start, _cliff, _vesting); return true; } /** * @dev Function to grant the amount of tokens that will be vested later. * @param _to The address which will own the tokens. * @param _amount The amount of tokens that will be vested later. * @param _cliffMonths Token release start in months from now. * @param _vestingMonths Token release end in months from now. */ function grantTokenStartNow( address _to, uint256 _amount, uint256 _cliffMonths, uint256 _vestingMonths ) public returns (bool success) { return grantToken( _to, _amount, now, now.add(_cliffMonths.mul(MONTH)), now.add(_vestingMonths.mul(MONTH)) ); } /** * @dev Function to calculate the amount of tokens that can be vested at this moment. * @param _to The address which will own the tokens. * @return amount - A uint256 specifying the amount of tokens available to be vested at this moment. * @return vestedMonths - A uint256 specifying the number of the vested months since the last vesting. * @return curTime - A uint256 specifying the current timestamp. */ function calcVestableToken(address _to) internal view returns (uint256 amount, uint256 vestedMonths, uint256 curTime) { uint256 vestTotalMonths; uint256 vestedAmount; uint256 vestPart; amount = 0; vestedMonths = 0; curTime = now; require(timeLocks[_to].amount > 0, "Nothing was granted to this address."); if (curTime <= timeLocks[_to].cliff) { return (0, 0, curTime); } vestedMonths = curTime.sub(timeLocks[_to].start) / MONTH; vestedMonths = vestedMonths.sub(timeLocks[_to].vestedMonths); if (curTime >= timeLocks[_to].vesting) { return (timeLocks[_to].amount.sub(timeLocks[_to].vestedAmount), vestedMonths, curTime); } if (vestedMonths > 0) { vestTotalMonths = timeLocks[_to].vesting.sub(timeLocks[_to].start) / MONTH; vestPart = timeLocks[_to].amount.div(vestTotalMonths); amount = vestedMonths.mul(vestPart); vestedAmount = timeLocks[_to].vestedAmount.add(amount); if (vestedAmount > timeLocks[_to].amount) { amount = timeLocks[_to].amount.sub(timeLocks[_to].vestedAmount); } } return (amount, vestedMonths, curTime); } /** * @dev Function to redeem tokens that can be vested at this moment. * @param _to The address which will own the tokens. */ function redeemVestableToken(address _to) public returns (bool success) { require(_to != address(0)); require(timeLocks[_to].amount > 0, "Nothing was granted to this address!"); require(timeLocks[_to].vestedAmount < timeLocks[_to].amount, "All tokens were vested!"); (uint256 amount, uint256 vestedMonths, uint256 curTime) = calcVestableToken(_to); require(amount > 0, "Nothing to redeem now."); TimeLock storage t = timeLocks[_to]; balances[_to] = balances[_to].add(amount); t.vestedAmount = t.vestedAmount.add(amount); t.vestedMonths = t.vestedMonths + uint16(vestedMonths); t.cliff = curTime; emit VestedTokenRedeemed(_to, amount, vestedMonths); return true; } /** * @dev Function to return granted token to the initial sender. * @param _amount - A uint256 specifying the amount of tokens to be returned. */ function returnGrantedToken(uint256 _amount) public returns (bool success) { address to = timeLocks[msg.sender].from; require(to != address(0)); require(_amount > 0, "Nothing to transfer."); require(timeLocks[msg.sender].amount > 0, "Nothing to return."); require(_amount <= timeLocks[msg.sender].amount.sub(timeLocks[msg.sender].vestedAmount), "Not enough granted token to return."); timeLocks[msg.sender].amount = timeLocks[msg.sender].amount.sub(_amount); balances[to] = balances[to].add(_amount); emit GrantedTokenReturned(msg.sender, to, _amount); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_cliffMonths","type":"uint256"},{"name":"_vestingMonths","type":"uint256"}],"name":"grantTokenStartNow","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"returnGrantedToken","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_start","type":"uint256"},{"name":"_cliff","type":"uint256"},{"name":"_vesting","type":"uint256"}],"name":"grantToken","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","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":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"redeemVestableToken","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[{"name":"who","type":"address"}],"name":"vestBalanceOf","outputs":[{"name":"amount","type":"uint256"},{"name":"vestedAmount","type":"uint256"},{"name":"start","type":"uint256"},{"name":"cliff","type":"uint256"},{"name":"vesting","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_start","type":"uint256"},{"indexed":false,"name":"_cliff","type":"uint256"},{"indexed":false,"name":"_vesting","type":"uint256"}],"name":"NewTokenGrant","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_vestedMonths","type":"uint256"}],"name":"VestedTokenRedeemed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"GrantedTokenReturned","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"},{"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"}]
Contract Creation Code
608060405234801561001057600080fd5b50601260ff16600a0a630bebc200026001819055506001546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040518082815260200191505060405180910390a3612bdd806100e16000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100eb578063095ea7b31461017b57806318160ddd146101e057806323b872dd1461020b5780632f3423b814610290578063313ce567146103095780633252b8fb1461033a578063661884631461037f5780636631ff1d146103e457806370a082311461046757806395d89b41146104be578063a9059cbb1461054e578063ce8d096d146105b3578063d73dd6231461060e578063dd62ed3e14610673578063e33d28d7146106ea575b600080fd5b3480156100f757600080fd5b5061010061075d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610140578082015181840152602081019050610125565b50505050905090810190601f16801561016d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561018757600080fd5b506101c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610796565b604051808215151515815260200191505060405180910390f35b3480156101ec57600080fd5b506101f5610888565b6040518082815260200191505060405180910390f35b34801561021757600080fd5b50610276600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610892565b604051808215151515815260200191505060405180910390f35b34801561029c57600080fd5b506102ef600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050610c4c565b604051808215151515815260200191505060405180910390f35b34801561031557600080fd5b5061031e610cb3565b604051808260ff1660ff16815260200191505060405180910390f35b34801561034657600080fd5b5061036560048036038101908080359060200190929190505050610cb8565b604051808215151515815260200191505060405180910390f35b34801561038b57600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061115f565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b5061044d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506113f0565b604051808215151515815260200191505060405180910390f35b34801561047357600080fd5b506104a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ab2565b6040518082815260200191505060405180910390f35b3480156104ca57600080fd5b506104d3611afa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105135780820151818401526020810190506104f8565b50505050905090810190601f1680156105405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561055a57600080fd5b50610599600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b33565b604051808215151515815260200191505060405180910390f35b3480156105bf57600080fd5b506105f4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d52565b604051808215151515815260200191505060405180910390f35b34801561061a57600080fd5b50610659600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612189565b604051808215151515815260200191505060405180910390f35b34801561067f57600080fd5b506106d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612385565b6040518082815260200191505060405180910390f35b3480156106f657600080fd5b5061072b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061240c565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b6040805190810160405280600a81526020017f4253424558546f6b656e0000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156108cf57600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561091c57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156109a757600080fd5b6109f8826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b190919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a8b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b5c82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000610ca9858542610c7c610c6d62278d00896125e690919063ffffffff16565b426125ca90919063ffffffff16565b610ca4610c9562278d00896125e690919063ffffffff16565b426125ca90919063ffffffff16565b6113f0565b9050949350505050565b601281565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610d5c57600080fd5b600083111515610dd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f7468696e6720746f207472616e736665722e00000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111515610e8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7468696e6720746f2072657475726e2e000000000000000000000000000081525060200191505060405180910390fd5b610f25600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546125b190919063ffffffff16565b8311151515610fc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4e6f7420656e6f756768206772616e74656420746f6b656e20746f207265747581526020017f726e2e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61101783600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546125b190919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506110ae836000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6a362f3f77c5bc6d1c9cd0e3d3c0f1d03c5d9e504b573c5bbb65550af73e56ec856040518082815260200191505060405180910390a36001915050919050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115611270576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611304565b61128383826125b190919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415151561142d57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548511151515611509576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4e6f7420656e6f7567682062616c616e636520746f206772616e7420746f6b6581526020017f6e2e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600085111515611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f7468696e6720746f207472616e736665722e00000000000000000000000081525060200191505060405180910390fd5b600061161a600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546125b190919063ffffffff16565b1415156116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f5468652070726576696f75732076657374696e672073686f756c64206265206381526020017f6f6d706c657465642e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b83831015151561172d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5f636c696666206d757374206265203e3d205f7374617274000000000000000081525060200191505060405180910390fd5b83821115156117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5f76657374696e67206d75737420626520626967676572207468616e205f737481526020017f617274000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8282111515611867576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5f76657374696e67206d75737420626520626967676572207468616e205f636c81526020017f696666000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6118b8856000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b190919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060e06040519081016040528086815260200160008152602001600061ffff1681526020018581526020018481526020018381526020013373ffffffffffffffffffffffffffffffffffffffff16815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548161ffff021916908361ffff160217905550606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f721b00c5c94c01f0922a764275cb3532e917776ada3541cc78e867acbda3192e878787876040518085815260200184815260200183815260200182815260200194505050505060405180910390a36001905095945050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f425342000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611b7057600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611bbd57600080fd5b611c0e826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b190919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ca1826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151515611d9557600080fd5b6000600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111515611e75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4e6f7468696e6720776173206772616e74656420746f2074686973206164647281526020017f657373210000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154101515611f70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f416c6c20746f6b656e732077657265207665737465642100000000000000000081525060200191505060405180910390fd5b611f798661261e565b935093509350600084111515611ff7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4e6f7468696e6720746f2072656465656d206e6f772e0000000000000000000081525060200191505060405180910390fd5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050612089846000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e28482600101546125ca90919063ffffffff16565b8160010181905550828160020160009054906101000a900461ffff16018160020160006101000a81548161ffff021916908361ffff1602179055508181600401819055508573ffffffffffffffffffffffffffffffffffffffff167f77a2f91dda02d8ce9c2419cb7839699d295719a638421b588a95f884c5377b228585604051808381526020018281526020019250505060405180910390a26001945050505050919050565b600061221a82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415151561244f57600080fd5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549450600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549350600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549250600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549150600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154905091939590929450565b60008282111515156125bf57fe5b818303905092915050565b600081830190508281101515156125dd57fe5b80905092915050565b6000808314156125f95760009050612618565b818302905081838281151561260a57fe5b0414151561261457fe5b8090505b92915050565b60008060008060008060009550600094504293506000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111515612712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4e6f7468696e6720776173206772616e74656420746f2074686973206164647281526020017f6573732e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154841115156127725760008085829250819150955095509550612b91565b62278d006127cb600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154866125b190919063ffffffff16565b8115156127d457fe5b04945061283e600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900461ffff1661ffff16866125b190919063ffffffff16565b9450600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501548410151561292f57612922600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546125b190919063ffffffff16565b8585955095509550612b91565b6000851115612b875762278d006129d3600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501546125b190919063ffffffff16565b8115156129dc57fe5b049250612a3483600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612b9b90919063ffffffff16565b9050612a4981866125e690919063ffffffff16565b9550612aa086600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546125ca90919063ffffffff16565b9150600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154821115612b8657612b83600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546125b190919063ffffffff16565b95505b5b8585859550955095505b5050509193909250565b60008183811515612ba857fe5b049050929150505600a165627a7a72305820696f045594654d2201db36271c5c3a8b84611b345fc98e763a946e926222296a0029
Deployed Bytecode
0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100eb578063095ea7b31461017b57806318160ddd146101e057806323b872dd1461020b5780632f3423b814610290578063313ce567146103095780633252b8fb1461033a578063661884631461037f5780636631ff1d146103e457806370a082311461046757806395d89b41146104be578063a9059cbb1461054e578063ce8d096d146105b3578063d73dd6231461060e578063dd62ed3e14610673578063e33d28d7146106ea575b600080fd5b3480156100f757600080fd5b5061010061075d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610140578082015181840152602081019050610125565b50505050905090810190601f16801561016d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561018757600080fd5b506101c6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610796565b604051808215151515815260200191505060405180910390f35b3480156101ec57600080fd5b506101f5610888565b6040518082815260200191505060405180910390f35b34801561021757600080fd5b50610276600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610892565b604051808215151515815260200191505060405180910390f35b34801561029c57600080fd5b506102ef600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050610c4c565b604051808215151515815260200191505060405180910390f35b34801561031557600080fd5b5061031e610cb3565b604051808260ff1660ff16815260200191505060405180910390f35b34801561034657600080fd5b5061036560048036038101908080359060200190929190505050610cb8565b604051808215151515815260200191505060405180910390f35b34801561038b57600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061115f565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b5061044d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506113f0565b604051808215151515815260200191505060405180910390f35b34801561047357600080fd5b506104a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ab2565b6040518082815260200191505060405180910390f35b3480156104ca57600080fd5b506104d3611afa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105135780820151818401526020810190506104f8565b50505050905090810190601f1680156105405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561055a57600080fd5b50610599600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b33565b604051808215151515815260200191505060405180910390f35b3480156105bf57600080fd5b506105f4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d52565b604051808215151515815260200191505060405180910390f35b34801561061a57600080fd5b50610659600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612189565b604051808215151515815260200191505060405180910390f35b34801561067f57600080fd5b506106d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612385565b6040518082815260200191505060405180910390f35b3480156106f657600080fd5b5061072b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061240c565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b6040805190810160405280600a81526020017f4253424558546f6b656e0000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156108cf57600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561091c57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156109a757600080fd5b6109f8826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b190919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a8b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b5c82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000610ca9858542610c7c610c6d62278d00896125e690919063ffffffff16565b426125ca90919063ffffffff16565b610ca4610c9562278d00896125e690919063ffffffff16565b426125ca90919063ffffffff16565b6113f0565b9050949350505050565b601281565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610d5c57600080fd5b600083111515610dd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f7468696e6720746f207472616e736665722e00000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111515610e8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7468696e6720746f2072657475726e2e000000000000000000000000000081525060200191505060405180910390fd5b610f25600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546125b190919063ffffffff16565b8311151515610fc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4e6f7420656e6f756768206772616e74656420746f6b656e20746f207265747581526020017f726e2e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61101783600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546125b190919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506110ae836000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6a362f3f77c5bc6d1c9cd0e3d3c0f1d03c5d9e504b573c5bbb65550af73e56ec856040518082815260200191505060405180910390a36001915050919050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115611270576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611304565b61128383826125b190919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415151561142d57600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548511151515611509576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4e6f7420656e6f7567682062616c616e636520746f206772616e7420746f6b6581526020017f6e2e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600085111515611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f7468696e6720746f207472616e736665722e00000000000000000000000081525060200191505060405180910390fd5b600061161a600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546125b190919063ffffffff16565b1415156116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f5468652070726576696f75732076657374696e672073686f756c64206265206381526020017f6f6d706c657465642e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b83831015151561172d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5f636c696666206d757374206265203e3d205f7374617274000000000000000081525060200191505060405180910390fd5b83821115156117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5f76657374696e67206d75737420626520626967676572207468616e205f737481526020017f617274000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8282111515611867576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5f76657374696e67206d75737420626520626967676572207468616e205f636c81526020017f696666000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6118b8856000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b190919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060e06040519081016040528086815260200160008152602001600061ffff1681526020018581526020018481526020018381526020013373ffffffffffffffffffffffffffffffffffffffff16815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548161ffff021916908361ffff160217905550606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f721b00c5c94c01f0922a764275cb3532e917776ada3541cc78e867acbda3192e878787876040518085815260200184815260200183815260200182815260200194505050505060405180910390a36001905095945050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f425342000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611b7057600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611bbd57600080fd5b611c0e826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b190919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ca1826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151515611d9557600080fd5b6000600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111515611e75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4e6f7468696e6720776173206772616e74656420746f2074686973206164647281526020017f657373210000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154101515611f70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f416c6c20746f6b656e732077657265207665737465642100000000000000000081525060200191505060405180910390fd5b611f798661261e565b935093509350600084111515611ff7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4e6f7468696e6720746f2072656465656d206e6f772e0000000000000000000081525060200191505060405180910390fd5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050612089846000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e28482600101546125ca90919063ffffffff16565b8160010181905550828160020160009054906101000a900461ffff16018160020160006101000a81548161ffff021916908361ffff1602179055508181600401819055508573ffffffffffffffffffffffffffffffffffffffff167f77a2f91dda02d8ce9c2419cb7839699d295719a638421b588a95f884c5377b228585604051808381526020018281526020019250505060405180910390a26001945050505050919050565b600061221a82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ca90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415151561244f57600080fd5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549450600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549350600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549250600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549150600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154905091939590929450565b60008282111515156125bf57fe5b818303905092915050565b600081830190508281101515156125dd57fe5b80905092915050565b6000808314156125f95760009050612618565b818302905081838281151561260a57fe5b0414151561261457fe5b8090505b92915050565b60008060008060008060009550600094504293506000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111515612712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4e6f7468696e6720776173206772616e74656420746f2074686973206164647281526020017f6573732e0000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154841115156127725760008085829250819150955095509550612b91565b62278d006127cb600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154866125b190919063ffffffff16565b8115156127d457fe5b04945061283e600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900461ffff1661ffff16866125b190919063ffffffff16565b9450600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501548410151561292f57612922600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546125b190919063ffffffff16565b8585955095509550612b91565b6000851115612b875762278d006129d3600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501546125b190919063ffffffff16565b8115156129dc57fe5b049250612a3483600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612b9b90919063ffffffff16565b9050612a4981866125e690919063ffffffff16565b9550612aa086600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546125ca90919063ffffffff16565b9150600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154821115612b8657612b83600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546125b190919063ffffffff16565b95505b5b8585859550955095505b5050509193909250565b60008183811515612ba857fe5b049050929150505600a165627a7a72305820696f045594654d2201db36271c5c3a8b84611b345fc98e763a946e926222296a0029
Deployed Bytecode Sourcemap
7908:7708:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7954:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7954:42: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;7954:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5427:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5427:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2667:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2667:91:0;;;;;;;;;;;;;;;;;;;;;;;4132:545;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4132:545:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11593:405;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11593:405:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8047:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8047:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14931:680;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14931:680:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7393:504;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7393:504:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10230:999;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10230:999:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3507:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3507:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8003:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8003:37: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;8003:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2931:355;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2931:355:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13951:805;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13951:805:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6600:347;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6600:347:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5969:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5969:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9427:425;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9427:425:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7954:42;;;;;;;;;;;;;;;;;;;;:::o;5427:206::-;5494:4;5543:6;5511:7;:19;5519:10;5511:19;;;;;;;;;;;;;;;:29;5531:8;5511:29;;;;;;;;;;;;;;;:38;;;;5586:8;5565:38;;5574:10;5565:38;;;5596:6;5565:38;;;;;;;;;;;;;;;;;;5621:4;5614:11;;5427:206;;;;:::o;2667:91::-;2711:7;2738:12;;2731:19;;2667:91;:::o;4132:545::-;4266:4;4311:1;4296:17;;:3;:17;;;;4288:26;;;;;;;;4343:8;:15;4352:5;4343:15;;;;;;;;;;;;;;;;4333:6;:25;;4325:34;;;;;;;;4388:7;:14;4396:5;4388:14;;;;;;;;;;;;;;;:26;4403:10;4388:26;;;;;;;;;;;;;;;;4378:6;:36;;4370:45;;;;;;;;4446:27;4466:6;4446:8;:15;4455:5;4446:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;4428:8;:15;4437:5;4428:15;;;;;;;;;;;;;;;:45;;;;4500:25;4518:6;4500:8;:13;4509:3;4500:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;4484:8;:13;4493:3;4484:13;;;;;;;;;;;;;;;:41;;;;4565:38;4596:6;4565:7;:14;4573:5;4565:14;;;;;;;;;;;;;;;:26;4580:10;4565:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;4536:7;:14;4544:5;4536:14;;;;;;;;;;;;;;;:26;4551:10;4536:26;;;;;;;;;;;;;;;:67;;;;4635:3;4619:28;;4628:5;4619:28;;;4640:6;4619:28;;;;;;;;;;;;;;;;;;4665:4;4658:11;;4132:545;;;;;:::o;11593:405::-;11774:12;11811:179;11836:3;11854:7;11876:3;11894:32;11902:23;8116:10;11902:12;:16;;:23;;;;:::i;:::-;11894:3;:7;;:32;;;;:::i;:::-;11941:34;11949:25;8116:10;11949:14;:18;;:25;;;;:::i;:::-;11941:3;:7;;:34;;;;:::i;:::-;11811:10;:179::i;:::-;11804:186;;11593:405;;;;;;:::o;8047:35::-;8080:2;8047:35;:::o;14931:680::-;15010:12;15040:10;15053:9;:21;15063:10;15053:21;;;;;;;;;;;;;;;:26;;;;;;;;;;;;15040:39;;15112:1;15098:16;;:2;:16;;;;15090:25;;;;;;;;15144:1;15134:7;:11;15126:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15220:1;15189:9;:21;15199:10;15189:21;;;;;;;;;;;;;;;:28;;;:32;15181:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15274:68;15307:9;:21;15317:10;15307:21;;;;;;;;;;;;;;;:34;;;15274:9;:21;15284:10;15274:21;;;;;;;;;;;;;;;:28;;;:32;;:68;;;;:::i;:::-;15263:7;:79;;15255:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15426:41;15459:7;15426:9;:21;15436:10;15426:21;;;;;;;;;;;;;;;:28;;;:32;;:41;;;;:::i;:::-;15395:9;:21;15405:10;15395:21;;;;;;;;;;;;;;;:28;;:72;;;;15493:25;15510:7;15493:8;:12;15502:2;15493:12;;;;;;;;;;;;;;;;:16;;:25;;;;:::i;:::-;15478:8;:12;15487:2;15478:12;;;;;;;;;;;;;;;:40;;;;15569:2;15536:45;;15557:10;15536:45;;;15573:7;15536:45;;;;;;;;;;;;;;;;;;15599:4;15592:11;;14931:680;;;;:::o;7393:504::-;7522:4;7544:16;7563:7;:19;7571:10;7563:19;;;;;;;;;;;;;;;:29;7583:8;7563:29;;;;;;;;;;;;;;;;7544:48;;7626:8;7607:16;:27;7603:188;;;7683:1;7651:7;:19;7659:10;7651:19;;;;;;;;;;;;;;;:29;7671:8;7651:29;;;;;;;;;;;;;;;:33;;;;7603:188;;;7749:30;7762:16;7749:8;:12;;:30;;;;:::i;:::-;7717:7;:19;7725:10;7717:19;;;;;;;;;;;;;;;:29;7737:8;7717:29;;;;;;;;;;;;;;;:62;;;;7603:188;7827:8;7806:61;;7815:10;7806:61;;;7837:7;:19;7845:10;7837:19;;;;;;;;;;;;;;;:29;7857:8;7837:29;;;;;;;;;;;;;;;;7806:61;;;;;;;;;;;;;;;;;;7885:4;7878:11;;7393:504;;;;;:::o;10230:999::-;10416:12;10469:1;10454:17;;:3;:17;;;;10446:26;;;;;;;;10502:8;:20;10511:10;10502:20;;;;;;;;;;;;;;;;10491:7;:31;;10483:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10590:1;10580:7;:11;10572:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10694:1;10636:54;10662:9;:14;10672:3;10662:14;;;;;;;;;;;;;;;:27;;;10636:9;:14;10646:3;10636:14;;;;;;;;;;;;;;;:21;;;:25;;:54;;;;:::i;:::-;:59;10627:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10771:6;10761;:16;;10753:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10836:6;10825:8;:17;10817:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10912:6;10901:8;:17;10893:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10994:33;11019:7;10994:8;:20;11003:10;10994:20;;;;;;;;;;;;;;;;:24;;:33;;;;:::i;:::-;10971:8;:20;10980:10;10971:20;;;;;;;;;;;;;;;:56;;;;11055:61;;;;;;;;;11064:7;11055:61;;;;11073:1;11055:61;;;;11076:1;11055:61;;;;;;11079:6;11055:61;;;;11087:6;11055:61;;;;11095:8;11055:61;;;;11105:10;11055:61;;;;;11038:9;:14;11048:3;11038:14;;;;;;;;;;;;;;;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11160:3;11134:65;;11148:10;11134:65;;;11165:7;11174:6;11182;11190:8;11134:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11217:4;11210:11;;10230:999;;;;;;;:::o;3507:107::-;3563:7;3590:8;:16;3599:6;3590:16;;;;;;;;;;;;;;;;3583:23;;3507:107;;;:::o;8003:37::-;;;;;;;;;;;;;;;;;;;;:::o;2931:355::-;2994:4;3034:1;3019:17;;:3;:17;;;;3011:26;;;;;;;;3066:8;:20;3075:10;3066:20;;;;;;;;;;;;;;;;3056:6;:30;;3048:39;;;;;;;;3123:32;3148:6;3123:8;:20;3132:10;3123:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;3100:8;:20;3109:10;3100:20;;;;;;;;;;;;;;;:55;;;;3182:25;3200:6;3182:8;:13;3191:3;3182:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;3166:8;:13;3175:3;3166:13;;;;;;;;;;;;;;;:41;;;;3244:3;3223:33;;3232:10;3223:33;;;3249:6;3223:33;;;;;;;;;;;;;;;;;;3274:4;3267:11;;2931:355;;;;:::o;13951:805::-;14027:12;14280:14;14296:20;14318:15;14428:18;14080:1;14065:17;;:3;:17;;;;14057:26;;;;;;;;14126:1;14102:9;:14;14112:3;14102:14;;;;;;;;;;;;;;;:21;;;:25;14094:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14217:9;:14;14227:3;14217:14;;;;;;;;;;;;;;;:21;;;14187:9;:14;14197:3;14187:14;;;;;;;;;;;;;;;:27;;;:51;14179:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14337:22;14355:3;14337:17;:22::i;:::-;14279:80;;;;;;14387:1;14378:6;:10;14370:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14449:9;:14;14459:3;14449:14;;;;;;;;;;;;;;;14428:35;;14490:25;14508:6;14490:8;:13;14499:3;14490:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;14474:8;:13;14483:3;14474:13;;;;;;;;;;;;;;;:41;;;;14543:26;14562:6;14543:1;:14;;;:18;;:26;;;;:::i;:::-;14526:1;:14;;:43;;;;14621:12;14597:1;:14;;;;;;;;;;;;:37;14580:1;:14;;;:54;;;;;;;;;;;;;;;;;;14655:7;14645:1;:7;;:17;;;;14700:3;14680:46;;;14705:6;14713:12;14680:46;;;;;;;;;;;;;;;;;;;;;;;;14744:4;14737:11;;13951:805;;;;;;;:::o;6600:347::-;6724:4;6793:46;6827:11;6793:7;:19;6801:10;6793:19;;;;;;;;;;;;;;;:29;6813:8;6793:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;6746:7;:19;6754:10;6746:19;;;;;;;;;;;;;;;:29;6766:8;6746:29;;;;;;;;;;;;;;;:94;;;;6877:8;6856:61;;6865:10;6856:61;;;6887:7;:19;6895:10;6887:19;;;;;;;;;;;;;;;:29;6907:8;6887:29;;;;;;;;;;;;;;;;6856:61;;;;;;;;;;;;;;;;;;6935:4;6928:11;;6600:347;;;;:::o;5969:190::-;6094:7;6126;:15;6134:6;6126:15;;;;;;;;;;;;;;;:25;6142:8;6126:25;;;;;;;;;;;;;;;;6119:32;;5969:190;;;;:::o;9427:425::-;9502:14;9518:20;9540:13;9555;9570:15;9626:1;9611:17;;:3;:17;;;;9603:26;;;;;;;;9649:9;:14;9659:3;9649:14;;;;;;;;;;;;;;;:21;;;9640:30;;9696:9;:14;9706:3;9696:14;;;;;;;;;;;;;;;:27;;;9681:42;;9742:9;:14;9752:3;9742:14;;;;;;;;;;;;;;;:20;;;9734:28;;9781:9;:14;9791:3;9781:14;;;;;;;;;;;;;;;:20;;;9773:28;;9822:9;:14;9832:3;9822:14;;;;;;;;;;;;;;;:22;;;9812:32;;9427:425;;;;;;;:::o;1163:123::-;1221:7;1253:1;1248;:6;;1241:14;;;;;;1277:1;1273;:5;1266:12;;1163:123;;;;:::o;1361:141::-;1419:9;1449:1;1445;:5;1441:9;;1473:1;1468;:6;;1461:14;;;;;;1493:1;1486:8;;1361:141;;;;:::o;224:424::-;282:9;533:1;528;:6;524:47;;;558:1;551:8;;;;524:47;591:1;587;:5;583:9;;619:1;614;610;:5;;;;;;;;:10;603:18;;;;;;639:1;632:8;;224:424;;;;;:::o;12451:1345::-;12532:14;12548:20;12570:15;12603:23;12637:20;12668:16;12704:1;12695:10;;12731:1;12716:16;;12753:3;12743:13;;12809:1;12785:9;:14;12795:3;12785:14;;;;;;;;;;;;;;;:21;;;:25;12777:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12887:9;:14;12897:3;12887:14;;;;;;;;;;;;;;;:20;;;12876:7;:31;;12872:86;;;12932:1;12935;12938:7;12924:22;;;;;;;;;;;;;;12872:86;8116:10;12985:33;12997:9;:14;13007:3;12997:14;;;;;;;;;;;;;;;:20;;;12985:7;:11;;:33;;;;:::i;:::-;:41;;;;;;;;12970:56;;13052:45;13069:9;:14;13079:3;13069:14;;;;;;;;;;;;;;;:27;;;;;;;;;;;;13052:45;;:12;:16;;:45;;;;:::i;:::-;13037:60;;13125:9;:14;13135:3;13125:14;;;;;;;;;;;;;;;:22;;;13114:7;:33;;13110:152;;;13172:54;13198:9;:14;13208:3;13198:14;;;;;;;;;;;;;;;:27;;;13172:9;:14;13182:3;13172:14;;;;;;;;;;;;;;;:21;;;:25;;:54;;;;:::i;:::-;13228:12;13242:7;13164:86;;;;;;;;13110:152;13293:1;13278:12;:16;13274:464;;;8116:10;13329:48;13356:9;:14;13366:3;13356:14;;;;;;;;;;;;;;;:20;;;13329:9;:14;13339:3;13329:14;;;;;;;;;;;;;;;:22;;;:26;;:48;;;;:::i;:::-;:56;;;;;;;;13311:74;;13411:42;13437:15;13411:9;:14;13421:3;13411:14;;;;;;;;;;;;;;;:21;;;:25;;:42;;;;:::i;:::-;13400:53;;13477:26;13494:8;13477:12;:16;;:26;;;;:::i;:::-;13468:35;;13533:39;13565:6;13533:9;:14;13543:3;13533:14;;;;;;;;;;;;;;;:27;;;:31;;:39;;;;:::i;:::-;13518:54;;13606:9;:14;13616:3;13606:14;;;;;;;;;;;;;;;:21;;;13591:12;:36;13587:140;;;13657:54;13683:9;:14;13693:3;13683:14;;;;;;;;;;;;;;;:27;;;13657:9;:14;13667:3;13657:14;;;;;;;;;;;;;;;:21;;;:25;;:54;;;;:::i;:::-;13648:63;;13587:140;13274:464;13758:6;13766:12;13780:7;13750:38;;;;;;12451:1345;;;;;;;;;:::o;743:295::-;801:7;1029:1;1025;:5;;;;;;;;1018:12;;743:295;;;;:::o
Swarm Source
bzzr://696f045594654d2201db36271c5c3a8b84611b345fc98e763a946e926222296a
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.