ERC-20
Overview
Max Total Supply
5,000,000,000 FIT
Holders
369
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
343,065,149.49506 FITValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FACITE
Compiler Version
v0.5.7+commit.6da8b019
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-05-23 */ // File: zeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol // pragma solidity ^0.4.24; pragma solidity ^0.5.0; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * See https://github.com/ethereum/EIPs/issues/179 */ 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); } // File: zeppelin-solidity/contracts/math/SafeMath.sol // pragma solidity ^0.4.24; pragma solidity ^0.5.0; /** * @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; } } // File: zeppelin-solidity/contracts/token/ERC20/BasicToken.sol // pragma solidity >=0.4.24; pragma solidity ^0.5.0; /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) internal balances; uint256 internal 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(_value <= balances[msg.sender]); require(_to != address(0)); 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]; } } // File: zeppelin-solidity/contracts/token/ERC20/ERC20.sol // pragma solidity ^0.4.24; pragma solidity ^0.5.0; /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ 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 ); } // File: zeppelin-solidity/contracts/token/ERC20/StandardToken.sol // pragma solidity >=0.4.24; pragma solidity ^0.5.0; /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * https://github.com/ethereum/EIPs/issues/20 * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ 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(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); require(_to != address(0)); 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: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @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) * From MonolithDAO Token.sol * @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) * From MonolithDAO Token.sol * @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; } } // File: zeppelin-solidity/contracts/ownership/Ownable.sol // pragma solidity >=0.4.24; pragma solidity ^0.5.0; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } // File: contracts/ERC1132.sol pragma solidity ^0.5.0; // pragma solidity >=0.4.24; /** * @title ERC1132 interface * @dev see https://github.com/ethereum/EIPs/issues/1132 */ contract ERC1132 { /** * @dev Reasons why a user's tokens have been locked */ mapping(address => bytes32[]) public lockReason; /** * @dev locked token structure */ struct lockToken { uint256 amount; uint256 validity; bool claimed; } /** * @dev Holds number & validity of tokens locked for a given reason for * a specified address */ mapping(address => mapping(bytes32 => lockToken)) public locked; /** * @dev Records data of all the tokens Locked */ event Locked( address indexed _of, bytes32 indexed _reason, uint256 _amount, uint256 _validity ); /** * @dev Records data of all the tokens unlocked */ event Unlocked( address indexed _of, bytes32 indexed _reason, uint256 _amount ); /** * @dev Locks a specified amount of tokens against an address, * for a specified reason and time * @param _reason The reason to lock tokens * @param _amount Number of tokens to be locked * @param _time Lock time in seconds */ function lock(bytes32 _reason, uint256 _amount, uint256 _time, address _of) public returns (bool); /** * @dev Returns tokens locked for a specified address for a * specified reason * * @param _of The address whose tokens are locked * @param _reason The reason to query the lock tokens for */ function tokensLocked(address _of, bytes32 _reason) public view returns (uint256 amount); /** * @dev Returns tokens locked for a specified address for a * specified reason at a specific time * * @param _of The address whose tokens are locked * @param _reason The reason to query the lock tokens for * @param _time The timestamp to query the lock tokens for */ function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time) public view returns (uint256 amount); /** * @dev Returns total tokens held by an address (locked + transferable) * @param _of The address to query the total balance of */ function totalBalanceOf(address _of) public view returns (uint256 amount); /** * @dev Extends lock for a specified reason and time * @param _reason The reason to lock tokens * @param _time Lock extension time in seconds */ function extendLock(bytes32 _reason, uint256 _time) public returns (bool); /** * @dev Increase number of tokens locked for a specified reason * @param _reason The reason to lock tokens * @param _amount Number of tokens to be increased */ function increaseLockAmount(bytes32 _reason, uint256 _amount) public returns (bool); /** * @dev Returns unlockable tokens for a specified address for a specified reason * @param _of The address to query the the unlockable token count of * @param _reason The reason to query the unlockable tokens for */ function tokensUnlockable(address _of, bytes32 _reason) public view returns (uint256 amount); /** * @dev Unlocks the unlockable tokens of a specified address * @param _of Address of user, claiming back unlockable tokens */ function unlock(address _of) public returns (uint256 unlockableTokens); /** * @dev Gets the unlockable tokens of a specified address * @param _of The address to query the the unlockable token count of */ function getUnlockableTokens(address _of) public view returns (uint256 unlockableTokens); } // File: contracts/FACITE.sol pragma solidity ^0.5.0; // pragma solidity >= 0.4.24; contract FACITE is StandardToken, Ownable, ERC1132 { string public constant name = "FACITE"; string public constant symbol = "FIT"; uint256 public constant decimals = 18; uint256 public constant INITIAL_SUPPLY = 5000000000 * (10 ** decimals); constructor() public { totalSupply_ = INITIAL_SUPPLY; balances[msg.sender] = INITIAL_SUPPLY; } event Mint(address minter, uint256 value); event Burn(address burner, uint256 value); string internal constant INVALID_TOKEN_VALUES = 'Invalid token values'; string internal constant NOT_ENOUGH_TOKENS = 'Not enough tokens'; string internal constant ALREADY_LOCKED = 'Tokens already locked'; string internal constant NOT_LOCKED = 'No tokens locked'; string internal constant AMOUNT_ZERO = 'Amount can not be 0'; // locks function lock(bytes32 _reason, uint256 _amount, uint256 _time, address _of) public onlyOwner returns (bool) { uint256 validUntil = now.add(_time); //solhint-disable-line // If tokens are already locked, then functions extendLock or // increaseLockAmount should be used to make any changes require(_amount <= balances[_of], NOT_ENOUGH_TOKENS); // 추가 require(tokensLocked(_of, _reason) == 0, ALREADY_LOCKED); require(_amount != 0, AMOUNT_ZERO); if (locked[_of][_reason].amount == 0) lockReason[_of].push(_reason); // transfer(address(this), _amount); // 수정 balances[address(this)] = balances[address(this)].add(_amount); balances[_of] = balances[_of].sub(_amount); locked[_of][_reason] = lockToken(_amount, validUntil, false); // 수정 emit Transfer(_of, address(this), _amount); emit Locked(_of, _reason, _amount, validUntil); return true; } function transferWithLock(address _to, bytes32 _reason, uint256 _amount, uint256 _time) public onlyOwner returns (bool) { uint256 validUntil = now.add(_time); //solhint-disable-line require(tokensLocked(_to, _reason) == 0, ALREADY_LOCKED); require(_amount != 0, AMOUNT_ZERO); if (locked[_to][_reason].amount == 0) lockReason[_to].push(_reason); transfer(address(this), _amount); locked[_to][_reason] = lockToken(_amount, validUntil, false); emit Locked(_to, _reason, _amount, validUntil); return true; } function tokensLocked(address _of, bytes32 _reason) public view returns (uint256 amount) { if (!locked[_of][_reason].claimed) amount = locked[_of][_reason].amount; } function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time) public view returns (uint256 amount) { if (locked[_of][_reason].validity > _time) amount = locked[_of][_reason].amount; } function totalBalanceOf(address _of) public view returns (uint256 amount) { amount = balanceOf(_of); for (uint256 i = 0; i < lockReason[_of].length; i++) { amount = amount.add(tokensLocked(_of, lockReason[_of][i])); } } function extendLock(bytes32 _reason, uint256 _time) public onlyOwner returns (bool) { require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED); locked[msg.sender][_reason].validity = locked[msg.sender][_reason].validity.add(_time); emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity); return true; } function increaseLockAmount(bytes32 _reason, uint256 _amount) public onlyOwner returns (bool) { require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED); transfer(address(this), _amount); locked[msg.sender][_reason].amount = locked[msg.sender][_reason].amount.add(_amount); emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity); return true; } function tokensUnlockable(address _of, bytes32 _reason) public view returns (uint256 amount) { if (locked[_of][_reason].validity <= now && !locked[_of][_reason].claimed) //solhint-disable-line amount = locked[_of][_reason].amount; } function unlock(address _of) public onlyOwner returns (uint256 unlockableTokens) { uint256 lockedTokens; for (uint256 i = 0; i < lockReason[_of].length; i++) { lockedTokens = tokensUnlockable(_of, lockReason[_of][i]); if (lockedTokens > 0) { unlockableTokens = unlockableTokens.add(lockedTokens); locked[_of][lockReason[_of][i]].claimed = true; emit Unlocked(_of, lockReason[_of][i], lockedTokens); } } if (unlockableTokens > 0) this.transfer(_of, unlockableTokens); } function getUnlockableTokens(address _of) public view returns (uint256 unlockableTokens) { for (uint256 i = 0; i < lockReason[_of].length; i++) { unlockableTokens = unlockableTokens.add(tokensUnlockable(_of, lockReason[_of][i])); } } }
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":"_of","type":"address"},{"name":"_reason","type":"bytes32"},{"name":"_time","type":"uint256"}],"name":"tokensLockedAtTime","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"bytes32"},{"name":"_amount","type":"uint256"},{"name":"_time","type":"uint256"},{"name":"_of","type":"address"}],"name":"lock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"_of","type":"address"}],"name":"unlock","outputs":[{"name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"}],"name":"totalBalanceOf","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_reason","type":"bytes32"},{"name":"_amount","type":"uint256"},{"name":"_time","type":"uint256"}],"name":"transferWithLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"},{"name":"_reason","type":"bytes32"}],"name":"tokensUnlockable","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"},{"name":"_reason","type":"bytes32"}],"name":"tokensLocked","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","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":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"lockReason","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"bytes32"},{"name":"_amount","type":"uint256"}],"name":"increaseLockAmount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"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":"_reason","type":"bytes32"},{"name":"_time","type":"uint256"}],"name":"extendLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"}],"name":"getUnlockableTokens","outputs":[{"name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"locked","outputs":[{"name":"amount","type":"uint256"},{"name":"validity","type":"uint256"},{"name":"claimed","type":"bool"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minter","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_of","type":"address"},{"indexed":true,"name":"_reason","type":"bytes32"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_validity","type":"uint256"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_of","type":"address"},{"indexed":true,"name":"_reason","type":"bytes32"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Unlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"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
608060405234801561001057600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a64012a05f200026001819055506012600a0a64012a05f200026000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133fa806100c16000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806366188463116100f9578063a9059cbb11610097578063d71be8db11610071578063d71be8db146109a0578063d73dd62314610a14578063dd62ed3e14610a7a578063f2fde38b14610af2576101a9565b8063a9059cbb14610892578063a9dab167146108f8578063ab4a2eb314610948576101a9565b806371d66f00116100d357806371d66f001461071357806381fc4d90146107755780638da5cb5b146107c557806395d89b411461080f576101a9565b8063661884631461064b57806370a08231146106b1578063715018a614610709576101a9565b80632f6c493c116101665780634b0ee02a116101405780634b0ee02a146104b55780634cb5465f1461050d5780635294d0e8146105875780635ca48d8c146105e9576101a9565b80632f6c493c146104215780632ff2e9dc14610479578063313ce56714610497576101a9565b806306fdde03146101ae578063095ea7b314610231578063179e91f11461029757806318160ddd146103035780631a69dc5c1461032157806323b872dd1461039b575b600080fd5b6101b6610b36565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6f565b604051808215151515815260200191505060405180910390f35b6102ed600480360360608110156102ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610c61565b6040518082815260200191505060405180910390f35b61030b610d1c565b6040518082815260200191505060405180910390f35b6103816004803603608081101561033757600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d26565b604051808215151515815260200191505060405180910390f35b610407600480360360608110156103b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113de565b604051808215151515815260200191505060405180910390f35b6104636004803603602081101561043757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611793565b6040518082815260200191505060405180910390f35b610481611b04565b6040518082815260200191505060405180910390f35b61049f611b13565b6040518082815260200191505060405180910390f35b6104f7600480360360208110156104cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b18565b6040518082815260200191505060405180910390f35b61056d6004803603608081101561052357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050611bfa565b604051808215151515815260200191505060405180910390f35b6105d36004803603604081101561059d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612013565b6040518082815260200191505060405180910390f35b610635600480360360408110156105ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612138565b6040518082815260200191505060405180910390f35b6106976004803603604081101561066157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121fc565b604051808215151515815260200191505060405180910390f35b6106f3600480360360208110156106c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061248c565b6040518082815260200191505060405180910390f35b6107116124d4565b005b61075f6004803603604081101561072957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125d7565b6040518082815260200191505060405180910390f35b6107ab6004803603604081101561078b57600080fd5b810190808035906020019092919080359060200190929190505050612605565b604051808215151515815260200191505060405180910390f35b6107cd61291a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610817612940565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561085757808201518184015260208101905061083c565b50505050905090810190601f1680156108845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108de600480360360408110156108a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612979565b604051808215151515815260200191505060405180910390f35b61092e6004803603604081101561090e57600080fd5b810190808035906020019092919080359060200190929190505050612b95565b604051808215151515815260200191505060405180910390f35b61098a6004803603602081101561095e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e9f565b6040518082815260200191505060405180910390f35b6109ec600480360360408110156109b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612f76565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b610a6060048036036040811015610a2a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fba565b604051808215151515815260200191505060405180910390f35b610adc60048036036040811015610a9057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131b6565b6040518082815260200191505060405180910390f35b610b3460048036036020811015610b0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061323d565b005b6040518060400160405280600681526020017f464143495445000000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600101541115610d1557600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000015490505b9392505050565b6000600154905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d8257600080fd5b6000610d9784426132a390919063ffffffff16565b90506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548511156040518060400160405280601181526020017f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525090610eb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e7c578082015181840152602081019050610e61565b50505050905090810190601f168015610ea95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000610ec48488612138565b146040518060400160405280601581526020017f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000081525090610fa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f66578082015181840152602081019050610f4b565b50505050905090810190601f168015610f935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008514156040518060400160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090611083576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561104857808201518184015260208101905061102d565b50505050905090810190601f1680156110755780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060000154141561114a57600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208690806001815401808255809150509060018203906000526020600020016000909192909190915055505b61119b856000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061122e856000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051806060016040528086815260200182815260200160001515815250600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3858373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8784604051808381526020018281526020019250505060405180910390a36001915050949350505050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561142b57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156114b457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ee57600080fd5b61153f826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115d2826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116a382600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ef57600080fd5b600080600090505b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611a305761189f84600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061188f57fe5b9060005260206000200154612013565b91506000821115611a23576118bd82846132a390919063ffffffff16565b92506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061194c57fe5b9060005260206000200154815260200190815260200160002060020160006101000a81548160ff021916908315150217905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081815481106119c957fe5b90600052602060002001548473ffffffffffffffffffffffffffffffffffffffff167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b80806001019150506117f7565b506000821115611afe573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ac157600080fd5b505af1158015611ad5573d6000803e3d6000fd5b505050506040513d6020811015611aeb57600080fd5b8101908080519060200190929190505050505b50919050565b6012600a0a64012a05f2000281565b601281565b6000611b238261248c565b905060008090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611bf457611be5611bd684600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611bc657fe5b9060005260206000200154612138565b836132a390919063ffffffff16565b91508080600101915050611b2b565b50919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c5657600080fd5b6000611c6b83426132a390919063ffffffff16565b90506000611c798787612138565b146040518060400160405280601581526020017f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000081525090611d56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d1b578082015181840152602081019050611d00565b50505050905090810190601f168015611d485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008414156040518060400160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090611e38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dfd578082015181840152602081019050611de2565b50505050905090810190601f168015611e2a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001541415611eff57600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b611f093085612979565b50604051806060016040528085815260200182815260200160001515815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550905050848673ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8684604051808381526020018281526020019250505060405180910390a36001915050949350505050565b600042600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060010154111580156120d65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020160009054906101000a900460ff16155b1561213257600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000015490505b92915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020160009054906101000a900460ff166121f657600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000015490505b92915050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831061230c576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a0565b61231f83826132bd90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461252e57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600460205281600052604060002081815481106125f057fe5b90600052602060002001600091509150505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461266157600080fd5b600061266d3385612138565b116040518060400160405280601081526020017f4e6f20746f6b656e73206c6f636b6564000000000000000000000000000000008152509061274a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561270f5780820151818401526020810190506126f4565b50505050905090810190601f16801561273c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127553083612979565b506127bc82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001546132a390919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060000181905550823373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600381526020017f464954000000000000000000000000000000000000000000000000000000000081525081565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156129c657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a0057600080fd5b612a51826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ae4826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bf157600080fd5b6000612bfd3385612138565b116040518060400160405280601081526020017f4e6f20746f6b656e73206c6f636b65640000000000000000000000000000000081525090612cda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c9f578082015181840152602081019050612c84565b50505050905090810190601f168015612ccc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612d4182600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600101546132a390919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010181905550823373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015612f7057612f61612f5284600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110612f4257fe5b9060005260206000200154612013565b836132a390919063ffffffff16565b91508080600101915050612ea7565b50919050565b6005602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16905083565b600061304b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461329757600080fd5b6132a0816132d4565b50565b60008183019050828110156132b457fe5b80905092915050565b6000828211156132c957fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561330e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea165627a7a7230582024593da26bd31bdd9f731e3c41e683c3133ae5502e2f89016bd83199cb9bf26a0029
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806366188463116100f9578063a9059cbb11610097578063d71be8db11610071578063d71be8db146109a0578063d73dd62314610a14578063dd62ed3e14610a7a578063f2fde38b14610af2576101a9565b8063a9059cbb14610892578063a9dab167146108f8578063ab4a2eb314610948576101a9565b806371d66f00116100d357806371d66f001461071357806381fc4d90146107755780638da5cb5b146107c557806395d89b411461080f576101a9565b8063661884631461064b57806370a08231146106b1578063715018a614610709576101a9565b80632f6c493c116101665780634b0ee02a116101405780634b0ee02a146104b55780634cb5465f1461050d5780635294d0e8146105875780635ca48d8c146105e9576101a9565b80632f6c493c146104215780632ff2e9dc14610479578063313ce56714610497576101a9565b806306fdde03146101ae578063095ea7b314610231578063179e91f11461029757806318160ddd146103035780631a69dc5c1461032157806323b872dd1461039b575b600080fd5b6101b6610b36565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6f565b604051808215151515815260200191505060405180910390f35b6102ed600480360360608110156102ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610c61565b6040518082815260200191505060405180910390f35b61030b610d1c565b6040518082815260200191505060405180910390f35b6103816004803603608081101561033757600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d26565b604051808215151515815260200191505060405180910390f35b610407600480360360608110156103b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113de565b604051808215151515815260200191505060405180910390f35b6104636004803603602081101561043757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611793565b6040518082815260200191505060405180910390f35b610481611b04565b6040518082815260200191505060405180910390f35b61049f611b13565b6040518082815260200191505060405180910390f35b6104f7600480360360208110156104cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b18565b6040518082815260200191505060405180910390f35b61056d6004803603608081101561052357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050611bfa565b604051808215151515815260200191505060405180910390f35b6105d36004803603604081101561059d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612013565b6040518082815260200191505060405180910390f35b610635600480360360408110156105ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612138565b6040518082815260200191505060405180910390f35b6106976004803603604081101561066157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121fc565b604051808215151515815260200191505060405180910390f35b6106f3600480360360208110156106c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061248c565b6040518082815260200191505060405180910390f35b6107116124d4565b005b61075f6004803603604081101561072957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125d7565b6040518082815260200191505060405180910390f35b6107ab6004803603604081101561078b57600080fd5b810190808035906020019092919080359060200190929190505050612605565b604051808215151515815260200191505060405180910390f35b6107cd61291a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610817612940565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561085757808201518184015260208101905061083c565b50505050905090810190601f1680156108845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108de600480360360408110156108a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612979565b604051808215151515815260200191505060405180910390f35b61092e6004803603604081101561090e57600080fd5b810190808035906020019092919080359060200190929190505050612b95565b604051808215151515815260200191505060405180910390f35b61098a6004803603602081101561095e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e9f565b6040518082815260200191505060405180910390f35b6109ec600480360360408110156109b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612f76565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b610a6060048036036040811015610a2a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fba565b604051808215151515815260200191505060405180910390f35b610adc60048036036040811015610a9057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131b6565b6040518082815260200191505060405180910390f35b610b3460048036036020811015610b0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061323d565b005b6040518060400160405280600681526020017f464143495445000000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600101541115610d1557600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000015490505b9392505050565b6000600154905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d8257600080fd5b6000610d9784426132a390919063ffffffff16565b90506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548511156040518060400160405280601181526020017f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525090610eb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e7c578082015181840152602081019050610e61565b50505050905090810190601f168015610ea95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000610ec48488612138565b146040518060400160405280601581526020017f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000081525090610fa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f66578082015181840152602081019050610f4b565b50505050905090810190601f168015610f935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008514156040518060400160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090611083576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561104857808201518184015260208101905061102d565b50505050905090810190601f1680156110755780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060000154141561114a57600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208690806001815401808255809150509060018203906000526020600020016000909192909190915055505b61119b856000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061122e856000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051806060016040528086815260200182815260200160001515815250600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3858373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8784604051808381526020018281526020019250505060405180910390a36001915050949350505050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561142b57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156114b457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ee57600080fd5b61153f826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115d2826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116a382600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ef57600080fd5b600080600090505b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611a305761189f84600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061188f57fe5b9060005260206000200154612013565b91506000821115611a23576118bd82846132a390919063ffffffff16565b92506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061194c57fe5b9060005260206000200154815260200190815260200160002060020160006101000a81548160ff021916908315150217905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081815481106119c957fe5b90600052602060002001548473ffffffffffffffffffffffffffffffffffffffff167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b80806001019150506117f7565b506000821115611afe573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ac157600080fd5b505af1158015611ad5573d6000803e3d6000fd5b505050506040513d6020811015611aeb57600080fd5b8101908080519060200190929190505050505b50919050565b6012600a0a64012a05f2000281565b601281565b6000611b238261248c565b905060008090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611bf457611be5611bd684600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611bc657fe5b9060005260206000200154612138565b836132a390919063ffffffff16565b91508080600101915050611b2b565b50919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c5657600080fd5b6000611c6b83426132a390919063ffffffff16565b90506000611c798787612138565b146040518060400160405280601581526020017f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000081525090611d56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d1b578082015181840152602081019050611d00565b50505050905090810190601f168015611d485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008414156040518060400160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090611e38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dfd578082015181840152602081019050611de2565b50505050905090810190601f168015611e2a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001541415611eff57600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b611f093085612979565b50604051806060016040528085815260200182815260200160001515815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550905050848673ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8684604051808381526020018281526020019250505060405180910390a36001915050949350505050565b600042600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060010154111580156120d65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020160009054906101000a900460ff16155b1561213257600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000015490505b92915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020160009054906101000a900460ff166121f657600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000015490505b92915050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831061230c576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a0565b61231f83826132bd90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461252e57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600460205281600052604060002081815481106125f057fe5b90600052602060002001600091509150505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461266157600080fd5b600061266d3385612138565b116040518060400160405280601081526020017f4e6f20746f6b656e73206c6f636b6564000000000000000000000000000000008152509061274a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561270f5780820151818401526020810190506126f4565b50505050905090810190601f16801561273c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127553083612979565b506127bc82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001546132a390919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060000181905550823373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600381526020017f464954000000000000000000000000000000000000000000000000000000000081525081565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156129c657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a0057600080fd5b612a51826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ae4826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bf157600080fd5b6000612bfd3385612138565b116040518060400160405280601081526020017f4e6f20746f6b656e73206c6f636b65640000000000000000000000000000000081525090612cda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c9f578082015181840152602081019050612c84565b50505050905090810190601f168015612ccc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612d4182600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600101546132a390919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010181905550823373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015612f7057612f61612f5284600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110612f4257fe5b9060005260206000200154612013565b836132a390919063ffffffff16565b91508080600101915050612ea7565b50919050565b6005602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16905083565b600061304b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461329757600080fd5b6132a0816132d4565b50565b60008183019050828110156132b457fe5b80905092915050565b6000828211156132c957fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561330e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea165627a7a7230582024593da26bd31bdd9f731e3c41e683c3133ae5502e2f89016bd83199cb9bf26a0029
Deployed Bytecode Sourcemap
14241:5483:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14241:5483:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14299: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;14299:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5942:192;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5942:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16978:253;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16978:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2506:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15080:1012;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;15080:1012:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4826:487;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4826:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18769:641;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18769:641:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14432:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14388:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17239:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17239:301:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16100:634;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;16100:634:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18469:291;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18469:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16742:224;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16742:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7861:447;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7861:447:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3290:101;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3290:101:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9448:114;;;:::i;:::-;;10446:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10446:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17984:475;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17984:475:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8653:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14344:37;;;:::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;14344:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2752:329;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2752:329:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17552:424;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17552:424:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19418:303;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19418:303:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10792:63;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10792:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7086:307;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7086:307:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6461:162;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6461:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9730:105;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9730:105:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14299:38;;;;;;;;;;;;;;;;;;;:::o;5942:192::-;6009:4;6054:6;6022:7;:19;6030:10;6022:19;;;;;;;;;;;;;;;:29;6042:8;6022:29;;;;;;;;;;;;;;;:38;;;;6093:8;6072:38;;6081:10;6072:38;;;6103:6;6072:38;;;;;;;;;;;;;;;;;;6124:4;6117:11;;5942:192;;;;:::o;16978:253::-;17099:14;17167:5;17135:6;:11;17142:3;17135:11;;;;;;;;;;;;;;;:20;17147:7;17135:20;;;;;;;;;;;:29;;;:37;17131:92;;;17196:6;:11;17203:3;17196:11;;;;;;;;;;;;;;;:20;17208:7;17196:20;;;;;;;;;;;:27;;;17187:36;;17131:92;16978:253;;;;;:::o;2506:85::-;2550:7;2573:12;;2566:19;;2506:85;:::o;15080:1012::-;15182:4;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;15199:18;15220:14;15228:5;15220:3;:7;;:14;;;;:::i;:::-;15199:35;;15426:8;:13;15435:3;15426:13;;;;;;;;;;;;;;;;15415:7;:24;;15441:17;;;;;;;;;;;;;;;;;15407:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;15407:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15518:1;15488:26;15501:3;15506:7;15488:12;:26::i;:::-;:31;15521:14;;;;;;;;;;;;;;;;;15480:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;15480:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15566:1;15555:7;:12;;15569:11;;;;;;;;;;;;;;;;;15547:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;15547:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15629:1;15598:6;:11;15605:3;15598:11;;;;;;;;;;;;;;;:20;15610:7;15598:20;;;;;;;;;;;:27;;;:32;15594:80;;;15645:10;:15;15656:3;15645:15;;;;;;;;;;;;;;;15666:7;15645:29;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;15645:29:0;;;;;;;;;;;;;;;;;;;;;;15594:80;15769:36;15797:7;15769:8;:23;15786:4;15769:23;;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;15743:8;:23;15760:4;15743:23;;;;;;;;;;;;;;;:62;;;;15832:26;15850:7;15832:8;:13;15841:3;15832:13;;;;;;;;;;;;;;;;:17;;:26;;;;:::i;:::-;15816:8;:13;15825:3;15816:13;;;;;;;;;;;;;;;:42;;;;15894:37;;;;;;;;15904:7;15894:37;;;;15913:10;15894:37;;;;15925:5;15894:37;;;;;15871:6;:11;15878:3;15871:11;;;;;;;;;;;;;;;:20;15883:7;15871:20;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15990:4;15968:37;;15977:3;15968:37;;;15997:7;15968:37;;;;;;;;;;;;;;;;;;16033:7;16028:3;16021:41;;;16042:7;16051:10;16021:41;;;;;;;;;;;;;;;;;;;;;;;;16080:4;16073:11;;;15080:1012;;;;;;:::o;4826:487::-;4938:4;4972:8;:15;4981:5;4972:15;;;;;;;;;;;;;;;;4962:6;:25;;4954:34;;;;;;5013:7;:14;5021:5;5013:14;;;;;;;;;;;;;;;:26;5028:10;5013:26;;;;;;;;;;;;;;;;5003:6;:36;;4995:45;;;;;;5070:1;5055:17;;:3;:17;;;;5047:26;;;;;;5100:27;5120:6;5100:8;:15;5109:5;5100:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;5082:8;:15;5091:5;5082:15;;;;;;;;;;;;;;;:45;;;;5150:25;5168:6;5150:8;:13;5159:3;5150:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;5134:8;:13;5143:3;5134:13;;;;;;;;;;;;;;;:41;;;;5211:38;5242:6;5211:7;:14;5219:5;5211:14;;;;;;;;;;;;;;;:26;5226:10;5211:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;5182:7;:14;5190:5;5182:14;;;;;;;;;;;;;;;:26;5197:10;5182:26;;;;;;;;;;;;;;;:67;;;;5277:3;5261:28;;5270:5;5261:28;;;5282:6;5261:28;;;;;;;;;;;;;;;;;;5303:4;5296:11;;4826:487;;;;;:::o;18769:641::-;18842:24;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;18884:20;18922:9;18934:1;18922:13;;18917:396;18941:10;:15;18952:3;18941:15;;;;;;;;;;;;;;;:22;;;;18937:1;:26;18917:396;;;19000:41;19017:3;19022:10;:15;19033:3;19022:15;;;;;;;;;;;;;;;19038:1;19022:18;;;;;;;;;;;;;;;;19000:16;:41::i;:::-;18985:56;;19075:1;19060:12;:16;19056:246;;;19116:34;19137:12;19116:16;:20;;:34;;;;:::i;:::-;19097:53;;19211:4;19169:6;:11;19176:3;19169:11;;;;;;;;;;;;;;;:31;19181:10;:15;19192:3;19181:15;;;;;;;;;;;;;;;19197:1;19181:18;;;;;;;;;;;;;;;;19169:31;;;;;;;;;;;:39;;;:46;;;;;;;;;;;;;;;;;;19253:10;:15;19264:3;19253:15;;;;;;;;;;;;;;;19269:1;19253:18;;;;;;;;;;;;;;;;19248:3;19239:47;;;19273:12;19239:47;;;;;;;;;;;;;;;;;;19056:246;18965:3;;;;;;;18917:396;;;;19350:1;19331:16;:20;19327:75;;;19366:4;:13;;;19380:3;19385:16;19366:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19366:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19366:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19366:36:0;;;;;;;;;;;;;;;;;19327:75;9169:1;18769:641;;;:::o;14432:70::-;14423:2;14487;:14;14473:10;:29;14432:70;:::o;14388:37::-;14423:2;14388:37;:::o;17239:301::-;17324:14;17365;17375:3;17365:9;:14::i;:::-;17356:23;;17397:9;17409:1;17397:13;;17392:138;17416:10;:15;17427:3;17416:15;;;;;;;;;;;;;;;:22;;;;17412:1;:26;17392:138;;;17469:49;17480:37;17493:3;17498:10;:15;17509:3;17498:15;;;;;;;;;;;;;;;17514:1;17498:18;;;;;;;;;;;;;;;;17480:12;:37::i;:::-;17469:6;:10;;:49;;;;:::i;:::-;17460:58;;17440:3;;;;;;;17392:138;;;;17239:301;;;:::o;16100:634::-;16232:4;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;16254:18;16275:14;16283:5;16275:3;:7;;:14;;;;:::i;:::-;16254:35;;16363:1;16333:26;16346:3;16351:7;16333:12;:26::i;:::-;:31;16366:14;;;;;;;;;;;;;;;;;16325:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;16325:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16411:1;16400:7;:12;;16414:11;;;;;;;;;;;;;;;;;16392:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;16392:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16474:1;16443:6;:11;16450:3;16443:11;;;;;;;;;;;;;;;:20;16455:7;16443:20;;;;;;;;;;;:27;;;:32;16439:80;;;16490:10;:15;16501:3;16490:15;;;;;;;;;;;;;;;16511:7;16490:29;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;16490:29:0;;;;;;;;;;;;;;;;;;;;;;16439:80;16532:32;16549:4;16556:7;16532:8;:32::i;:::-;;16600:37;;;;;;;;16610:7;16600:37;;;;16619:10;16600:37;;;;16631:5;16600:37;;;;;16577:6;:11;16584:3;16577:11;;;;;;;;;;;;;;;:20;16589:7;16577:20;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16675:7;16670:3;16663:41;;;16684:7;16693:10;16663:41;;;;;;;;;;;;;;;;;;;;;;;;16722:4;16715:11;;;16100:634;;;;;;:::o;18469:291::-;18573:14;18642:3;18609:6;:11;18616:3;18609:11;;;;;;;;;;;;;;;:20;18621:7;18609:20;;;;;;;;;;;:29;;;:36;;:69;;;;;18650:6;:11;18657:3;18650:11;;;;;;;;;;;;;;;:20;18662:7;18650:20;;;;;;;;;;;:28;;;;;;;;;;;;18649:29;18609:69;18605:147;;;18725:6;:11;18732:3;18725:11;;;;;;;;;;;;;;;:20;18737:7;18725:20;;;;;;;;;;;:27;;;18716:36;;18605:147;18469:291;;;;:::o;16742:224::-;16842:14;16879:6;:11;16886:3;16879:11;;;;;;;;;;;;;;;:20;16891:7;16879:20;;;;;;;;;;;:28;;;;;;;;;;;;16874:84;;16931:6;:11;16938:3;16931:11;;;;;;;;;;;;;;;:20;16943:7;16931:20;;;;;;;;;;;:27;;;16922:36;;16874:84;16742:224;;;;:::o;7861:447::-;7972:4;7988:16;8007:7;:19;8015:10;8007:19;;;;;;;;;;;;;;;:29;8027:8;8007:29;;;;;;;;;;;;;;;;7988:48;;8067:8;8047:16;:28;8043:169;;8118:1;8086:7;:19;8094:10;8086:19;;;;;;;;;;;;;;;:29;8106:8;8086:29;;;;;;;;;;;;;;;:33;;;;8043:169;;;8174:30;8187:16;8174:8;:12;;:30;;;;:::i;:::-;8142:7;:19;8150:10;8142:19;;;;;;;;;;;;;;;:29;8162:8;8142:29;;;;;;;;;;;;;;;:62;;;;8043:169;8244:8;8223:61;;8232:10;8223:61;;;8254:7;:19;8262:10;8254:19;;;;;;;;;;;;;;;:29;8274:8;8254:29;;;;;;;;;;;;;;;;8223:61;;;;;;;;;;;;;;;;;;8298:4;8291:11;;;7861:447;;;;:::o;3290:101::-;3346:7;3369:8;:16;3378:6;3369:16;;;;;;;;;;;;;;;;3362:23;;3290:101;;;:::o;9448:114::-;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;9525:5;;;;;;;;;;;9506:25;;;;;;;;;;;;9554:1;9538:5;;:18;;;;;;;;;;;;;;;;;;9448:114::o;10446:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17984:475::-;18090:4;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;18156:1;18120:33;18133:10;18145:7;18120:12;:33::i;:::-;:37;18159:10;;;;;;;;;;;;;;;;;18112:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;18112:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18181:32;18198:4;18205:7;18181:8;:32::i;:::-;;18263:47;18302:7;18263:6;:18;18270:10;18263:18;;;;;;;;;;;;;;;:27;18282:7;18263:27;;;;;;;;;;;:34;;;:38;;:47;;;;:::i;:::-;18226:6;:18;18233:10;18226:18;;;;;;;;;;;;;;;:27;18245:7;18226:27;;;;;;;;;;;:34;;:84;;;;18347:7;18335:10;18328:101;;;18356:6;:18;18363:10;18356:18;;;;;;;;;;;;;;;:27;18375:7;18356:27;;;;;;;;;;;:34;;;18392:6;:18;18399:10;18392:18;;;;;;;;;;;;;;;:27;18411:7;18392:27;;;;;;;;;;;:36;;;18328:101;;;;;;;;;;;;;;;;;;;;;;;;18447:4;18440:11;;17984:475;;;;:::o;8653:20::-;;;;;;;;;;;;;:::o;14344:37::-;;;;;;;;;;;;;;;;;;;:::o;2752:329::-;2815:4;2846:8;:20;2855:10;2846:20;;;;;;;;;;;;;;;;2836:6;:30;;2828:39;;;;;;2897:1;2882:17;;:3;:17;;;;2874:26;;;;;;2932:32;2957:6;2932:8;:20;2941:10;2932:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;2909:8;:20;2918:10;2909:20;;;;;;;;;;;;;;;:55;;;;2987:25;3005:6;2987:8;:13;2996:3;2987:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;2971:8;:13;2980:3;2971:13;;;;;;;;;;;;;;;:41;;;;3045:3;3024:33;;3033:10;3024:33;;;3050:6;3024:33;;;;;;;;;;;;;;;;;;3071:4;3064:11;;2752:329;;;;:::o;17552:424::-;17648:4;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;17714:1;17678:33;17691:10;17703:7;17678:12;:33::i;:::-;:37;17717:10;;;;;;;;;;;;;;;;;17670:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;17670:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17780:47;17821:5;17780:6;:18;17787:10;17780:18;;;;;;;;;;;;;;;:27;17799:7;17780:27;;;;;;;;;;;:36;;;:40;;:47;;;;:::i;:::-;17741:6;:18;17748:10;17741:18;;;;;;;;;;;;;;;:27;17760:7;17741:27;;;;;;;;;;;:36;;:86;;;;17864:7;17852:10;17845:101;;;17873:6;:18;17880:10;17873:18;;;;;;;;;;;;;;;:27;17892:7;17873:27;;;;;;;;;;;:34;;;17909:6;:18;17916:10;17909:18;;;;;;;;;;;;;;;:27;17928:7;17909:27;;;;;;;;;;;:36;;;17845:101;;;;;;;;;;;;;;;;;;;;;;;;17964:4;17957:11;;17552:424;;;;:::o;19418:303::-;19508:24;19555:9;19567:1;19555:13;;19550:162;19574:10;:15;19585:3;19574:15;;;;;;;;;;;;;;;:22;;;;19570:1;:26;19550:162;;;19637:63;19658:41;19675:3;19680:10;:15;19691:3;19680:15;;;;;;;;;;;;;;;19696:1;19680:18;;;;;;;;;;;;;;;;19658:16;:41::i;:::-;19637:16;:20;;:63;;;;:::i;:::-;19618:82;;19598:3;;;;;;;19550:162;;;;19418:303;;;:::o;10792:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7086:307::-;7192:4;7249:46;7283:11;7249:7;:19;7257:10;7249:19;;;;;;;;;;;;;;;:29;7269:8;7249:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;7208:7;:19;7216:10;7208:19;;;;;;;;;;;;;;;:29;7228:8;7208:29;;;;;;;;;;;;;;;:88;;;;7329:8;7308:61;;7317:10;7308:61;;;7339:7;:19;7347:10;7339:19;;;;;;;;;;;;;;;:29;7359:8;7339:29;;;;;;;;;;;;;;;;7308:61;;;;;;;;;;;;;;;;;;7383:4;7376:11;;7086:307;;;;:::o;6461:162::-;6566:7;6592;:15;6600:6;6592:15;;;;;;;;;;;;;;;:25;6608:8;6592:25;;;;;;;;;;;;;;;;6585:32;;6461:162;;;;:::o;9730:105::-;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;9800:29;9819:9;9800:18;:29::i;:::-;9730:105;:::o;1924:132::-;1984:9;2011:2;2006;:7;2002:11;;2032:2;2027:1;:7;;2020:15;;;;2049:1;2042:8;;1924:132;;;;:::o;1738:119::-;1798:7;1827:2;1821;:8;;1814:16;;;;1849:2;1844;:7;1837:14;;1738:119;;;;:::o;9976:175::-;10068:1;10047:23;;:9;:23;;;;10039:32;;;;;;10111:9;10083:38;;10104:5;;;;;;;;;;;10083:38;;;;;;;;;;;;10136:9;10128:5;;:17;;;;;;;;;;;;;;;;;;9976:175;:::o
Swarm Source
bzzr://24593da26bd31bdd9f731e3c41e683c3133ae5502e2f89016bd83199cb9bf26a
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.