ERC-20
Decentralized Web
Overview
Max Total Supply
6,999,594.12535363 COVAL
Holders
1,516
Total Transfers
-
Market
Price
$0.00 @ 0.000000 MATIC
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
ConfigurableERC20
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-06-30 */ // SPDX-License-Identifier: MIT /* _____ __ _ _ _ / ____| / _(_) | | | | v2 -> Matic Compatible | | ___ _ __ | |_ _ __ _ _ _ _ __ __ _| |__ | | ___ | | / _ \| '_ \| _| |/ _` | | | | '__/ _` | '_ \| |/ _ \ | |___| (_) | | | | | | | (_| | |_| | | | (_| | |_) | | __/ \_____\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|_.__/|_|\___| __/ | ______ _____ _____ ___|___/_ | ____| __ \ / ____|__ \ / _ \ | |__ | |__) | | ) | | | | | __| | _ /| | / /| | | | | |____| | \ \| |____ / /_| |_| | |______|_| \_\\_____|____|\___/ By the team that brought you: --- > Circuits of Value (http://circuitsofvalue.com) --- > Emblem Vault (https://emblem.finance) Documentation: --- > Github (https://github.com/EmblemLabs/ConfigurableERC20) UI: --- > (https://emblemlabs.github.io/ConfigurableERC20/) */ pragma solidity ^0.6.12; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract ERC20Detailed is IERC20 { string public name; string public symbol; uint8 public decimals; constructor( string memory _name, string memory _symbol, uint8 _decimals ) public { name = _name; symbol = _symbol; decimals = _decimals; } } contract Context { constructor() internal {} // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } } contract Configurable is Context { using SafeMath for uint256; address private governance; bool private _transferable = true; bool private _burnable = true; bool private _visible = true; bool private _allowPrivateTransactions = false; bool private _locked = false; bool private _forever = false; uint256 private _lockBlock = 0; mapping(address => bool) public minters; mapping(address => bool) public viewers; mapping(address => bool) public depositers; function _isGoverner() internal view returns (bool) { return _msgSender() == governance; } function _isViewer() internal view returns (bool) { return viewers[_msgSender()]; } function _isMinter() internal view returns (bool) { return minters[_msgSender()]; } function _isDepositer() internal view returns (bool) { return depositers[_msgSender()]; } function transferable() public view returns (bool) { return _transferable; } function burnable() public view returns (bool) { return _burnable; } function visible() public view returns (bool) { return _visible; } function visibleOrAdmin() public view returns (bool) { return _visible || _isGoverner(); } function allowPrivateTransactions() public view returns (bool) { return _allowPrivateTransactions; } function blockNumberLocked() public view returns (bool) { return _lockBlock != 0 && block.number < _lockBlock; } function locked() public view returns (bool) { return _locked || blockNumberLocked(); } function lockedPermenantly() public view returns (bool) { return locked() && _forever; } function blocksTillUnlock() public view returns (uint256) { if (_lockBlock > block.number) { return _lockBlock.sub(block.number); } else { return 0; } } modifier isTransferable() { require(_transferable, "Contract does not allow transfering"); _; } modifier isBurnable() { require(_burnable, "Contract does not allow burning"); _; } modifier isVisibleOrCanView() { require( _visible || _isViewer() || _isGoverner(), "Contract is private and you are not Governer or on viewers list" ); _; } modifier canSendPrivateOrGoverner() { require( _allowPrivateTransactions || _isGoverner(), "Contract cannot send private transactions" ); _; } modifier onlyOwner() { require(_isGoverner(), "Sender is not Governer"); _; } modifier notLocked() { require(!locked(), "Contract is locked to governance changes"); _; } modifier canMint() { require(_isMinter(), "No Minting Privilages"); _; } modifier canDeposit() { require(_isDepositer(), "No Depositing Privilages"); _; } function unLock() public onlyOwner { require( !lockedPermenantly(), "Contract locked forever to governance changes" ); require( !blockNumberLocked(), "Contract has been locked until a blocknumber" ); require(locked(), "Contract not locked"); _locked = false; } function lockForever() public onlyOwner { require( !lockedPermenantly(), "Contract locked forever to governance changes" ); require( !blockNumberLocked(), "Contract has been locked until a blocknumber" ); _locked = true; _forever = true; } function lockTemporarily() public onlyOwner notLocked { _locked = true; } function lockTemporarilyTillBlock(uint256 blockNumber) public onlyOwner notLocked { require( block.number < blockNumber, "Provided Block numbner is in the past" ); _lockBlock = blockNumber; } function toggleBurnable() public onlyOwner notLocked { _burnable = !_burnable; } function toggleTransferable() public onlyOwner notLocked { _transferable = !_transferable; } function toggleVisibility() public onlyOwner notLocked { _visible = !_visible; } function togglePrivateTransferability() public onlyOwner notLocked { _allowPrivateTransactions = !_allowPrivateTransactions; } function setGovernance(address _governance) public onlyOwner notLocked { _setGovernance(_governance); } /* For compatibility with Ownable */ function transferOwnership(address _governance) public onlyOwner notLocked { _setGovernance(_governance); } function _setGovernance(address _governance) internal { minters[governance] = false; // Remove old owner from minters list viewers[governance] = false; // Remove old owner from viewers list depositers[governance] = false; //Remove old owner from depositer list minters[_governance] = true; // Add new owner to minters list viewers[_governance] = true; // Add new owner to viewers list depositers[_governance] = true; //Add new owner from depositer list governance = _governance; // Set new owner } } contract ERC20 is IERC20, Configurable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; function totalSupply() public override view isVisibleOrCanView returns (uint256) { return _totalSupply; } function balanceOf(address account) public override view isVisibleOrCanView returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public override view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override isTransferable returns (bool) { _transferFromPrivate(sender, recipient, amount, visible()); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function withdraw(uint256 amount) external { _burn(_msgSender(), amount); } function deposit(address user, bytes calldata depositData) external canDeposit { uint256 amount = abi.decode(depositData, (uint256)); _mint(user, amount); } function _transferFromPrivate( address sender, address recipient, uint256 amount, bool _private ) internal isTransferable returns (bool) { _transferPrivate(sender, recipient, amount, _private); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function transfer(address recipient, uint256 amount) public override isTransferable returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal isTransferable { _transferPrivate(sender, recipient, amount, !visible()); } function _transferPrivate( address sender, address recipient, uint256 amount, bool _private ) internal isTransferable { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); if (!_private) { emit Transfer(sender, recipient, amount); } } function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); if (visible()) { emit Transfer(address(0), account, amount); } } function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); if (visible()) { emit Transfer(account, address(0), amount); } } function _approve( address owner, address spender, uint256 amount ) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; if (visible()) { emit Approval(owner, spender, amount); } } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; return c; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } contract ConfigurableERC20 is ERC20, ERC20Detailed { using SafeERC20 for IERC20; using Address for address; using SafeMath for uint256; constructor() public ERC20Detailed("Change Me", "CHANGE", 18) { _setGovernance(_msgSender()); } function transfer( address to, uint256 amount, bool _private ) public isTransferable canSendPrivateOrGoverner { _transferPrivate(_msgSender(), to, amount, _private); } function transferFrom( address from, address to, uint256 amount, bool _private ) public isTransferable canSendPrivateOrGoverner { _transferPrivate(from, to, amount, _private); } function mint(address account, uint256 amount) public canMint notLocked { _mint(account, amount); } function burn(uint256 amount) public isBurnable { _burn(_msgSender(), amount); } function changeContractDetails( string memory _name, string memory _symbol, uint8 _decimals ) public onlyOwner notLocked { name = _name; symbol = _symbol; decimals = _decimals; } function addMinter(address _minter) public onlyOwner notLocked { minters[_minter] = true; } function removeMinter(address _minter) public onlyOwner notLocked { minters[_minter] = false; } function addViewer(address _viewer) public onlyOwner notLocked { viewers[_viewer] = true; } function removeViewer(address _viewer) public onlyOwner notLocked { viewers[_viewer] = false; } function addDepositer(address _depositer) public onlyOwner notLocked { depositers[_depositer] = true; } function removeDepositer(address _depositer) public onlyOwner notLocked { depositers[_depositer] = false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_depositer","type":"address"}],"name":"addDepositer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_viewer","type":"address"}],"name":"addViewer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowPrivateTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockNumberLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blocksTillUnlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"name":"changeContractDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes","name":"depositData","type":"bytes"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockForever","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockTemporarily","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"lockTemporarilyTillBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockedPermenantly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_depositer","type":"address"}],"name":"removeDepositer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_viewer","type":"address"}],"name":"removeViewer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleBurnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"togglePrivateTransferability","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleTransferable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleVisibility","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"_private","type":"bool"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"_private","type":"bool"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"viewers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"visible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"visibleOrAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526001600060146101000a81548160ff0219169083151502179055506001600060156101000a81548160ff0219169083151502179055506001600060166101000a81548160ff02191690831515021790555060008060176101000a81548160ff02191690831515021790555060008060186101000a81548160ff02191690831515021790555060008060196101000a81548160ff0219169083151502179055506000600155348015620000b557600080fd5b506040518060400160405280600981526020017f4368616e6765204d6500000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4348414e47450000000000000000000000000000000000000000000000000000815250601282600890805190602001906200013c92919062000458565b5081600990805190602001906200015592919062000458565b5080600a60006101000a81548160ff021916908360ff16021790555050505062000194620001886200019a60201b60201c565b620001a260201b60201c565b620004fe565b600033905090565b6000600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200049b57805160ff1916838001178555620004cc565b82800160010185558215620004cc579182015b82811115620004cb578251825591602001919060010190620004ae565b5b509050620004db9190620004df565b5090565b5b80821115620004fa576000816000905550600101620004e0565b5090565b61422a806200050e6000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c806395d89b411161015c578063c08c9f9a116100ce578063da424e6f11610087578063da424e6f14610d6a578063dd62ed3e14610d74578063e1ad116214610dec578063ed10e33c14610e46578063f2fde38b14610e50578063f46eccc414610e945761028a565b8063c08c9f9a14610bff578063cf2c52cb14610c1f578063cf30901214610cb8578063d1d9891414610cd8578063d47356a314610d1c578063d6bfc22f14610d605761028a565b8063a457c2d711610120578063a457c2d714610a6f578063a69439aa14610ad3578063a9059cbb14610b2d578063ab033ea914610b91578063af6a6d7914610bd5578063b3cc59db14610bf55761028a565b806395d89b411461093a578063983b2d56146109bd578063a0065b5b14610a01578063a07c7ce414610a21578063a2f0d95714610a415761028a565b8063425a71c011610200578063601f8cf5116101b9578063601f8cf5146107a05780636384c045146107e45780636f2293ab1461083e57806370a08231146108b857806390f3173b1461091057806392ff0d311461091a5761028a565b8063425a71c0146105c157806342966c6814610720578063432d6c671461074e57806343918ad81461076e578063439ec2ee146107785780634437d99e146107825761028a565b80632e1a7d4d116102525780632e1a7d4d1461045c5780633092afd51461048a578063313ce567146104ce57806339509351146104ef5780633bce1d481461055357806340c10f19146105735761028a565b806306fdde031461028f578063095ea7b31461031257806317ac10db1461037657806318160ddd146103ba57806323b872dd146103d8575b600080fd5b610297610eee565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61035e6004803603604081101561032857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f8c565b60405180821515815260200191505060405180910390f35b6103b86004803603602081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610faa565b005b6103c26110dd565b6040518082815260200191505060405180910390f35b610444600480360360608110156103ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611169565b60405180821515815260200191505060405180910390f35b6104886004803603602081101561047257600080fd5b81019080803590602001909291905050506112af565b005b6104cc600480360360208110156104a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112c3565b005b6104d66113f6565b604051808260ff16815260200191505060405180910390f35b61053b6004803603604081101561050557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611409565b60405180821515815260200191505060405180910390f35b61055b6114bc565b60405180821515815260200191505060405180910390f35b6105bf6004803603604081101561058957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114d2565b005b61071e600480360360608110156105d757600080fd5b81019080803590602001906401000000008111156105f457600080fd5b82018360208201111561060657600080fd5b8035906020019184600183028401116401000000008311171561062857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561068b57600080fd5b82018360208201111561069d57600080fd5b803590602001918460018302840111640100000000831117156106bf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff1690602001909291905050506115b8565b005b61074c6004803603602081101561073657600080fd5b81019080803590602001909291905050506116de565b005b610756611774565b60405180821515815260200191505060405180910390f35b610776611799565b005b61078061189d565b005b61078a611992565b6040518082815260200191505060405180910390f35b6107e2600480360360208110156107b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c2565b005b610826600480360360208110156107fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af5565b60405180821515815260200191505060405180910390f35b6108b66004803603608081101561085457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050611b15565b005b6108fa600480360360208110156108ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c00565b6040518082815260200191505060405180910390f35b610918611ccb565b005b610922611e39565b60405180821515815260200191505060405180910390f35b610942611e4f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610982578082015181840152602081019050610967565b50505050905090810190601f1680156109af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109ff600480360360208110156109d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eed565b005b610a09612020565b60405180821515815260200191505060405180910390f35b610a2961203a565b60405180821515815260200191505060405180910390f35b610a6d60048036036020811015610a5757600080fd5b8101908080359060200190929190505050612050565b005b610abb60048036036040811015610a8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061218a565b60405180821515815260200191505060405180910390f35b610b1560048036036020811015610ae957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612257565b60405180821515815260200191505060405180910390f35b610b7960048036036040811015610b4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612277565b60405180821515815260200191505060405180910390f35b610bd360048036036020811015610ba757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122f9565b005b610bdd6123dd565b60405180821515815260200191505060405180910390f35b610bfd6123f3565b005b610c076124f7565b60405180821515815260200191505060405180910390f35b610cb660048036036040811015610c3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610c7257600080fd5b820183602082011115610c8457600080fd5b80359060200191846001830284011164010000000083111715610ca657600080fd5b909192939192939050505061251e565b005b610cc06125cd565b60405180821515815260200191505060405180910390f35b610d1a60048036036020811015610cee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125f2565b005b610d5e60048036036020811015610d3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612725565b005b610d68612858565b005b610d7261295c565b005b610dd660048036036040811015610d8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a60565b6040518082815260200191505060405180910390f35b610e4460048036036060811015610e0257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050612ae7565b005b610e4e612bd8565b005b610e9260048036036020811015610e6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612da4565b005b610ed660048036036020811015610eaa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e88565b60405180821515815260200191505060405180910390f35b60088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f845780601f10610f5957610100808354040283529160200191610f84565b820191906000526020600020905b815481529060010190602001808311610f6757829003601f168201915b505050505081565b6000610fa0610f99612ea8565b8484612eb0565b6001905092915050565b610fb26130b5565b611024576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b61102c6125cd565b15611082576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060169054906101000a900460ff16806110fd57506110fc613113565b5b8061110c575061110b6130b5565b5b611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614120603f913960400191505060405180910390fd5b600754905090565b60008060149054906101000a900460ff166111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b6111e28484846111dd6123dd565b61316e565b506112a4846111ef612ea8565b61129f856040518060600160405280602881526020016140d760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611255612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ad9092919063ffffffff16565b612eb0565b600190509392505050565b6112c06112ba612ea8565b8261336d565b50565b6112cb6130b5565b61133d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6113456125cd565b1561139b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900460ff1681565b60006114b2611416612ea8565b846114ad8560066000611427612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461353590919063ffffffff16565b612eb0565b6001905092915050565b60008060179054906101000a900460ff16905090565b6114da6135bd565b61154c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f204d696e74696e672050726976696c61676573000000000000000000000081525060200191505060405180910390fd5b6115546125cd565b156115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6115b48282613618565b5050565b6115c06130b5565b611632576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b61163a6125cd565b15611690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b82600890805190602001906116a6929190613ee2565b5081600990805190602001906116bd929190613ee2565b5080600a60006101000a81548160ff021916908360ff160217905550505050565b600060159054906101000a900460ff16611760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e747261637420646f6573206e6f7420616c6c6f77206275726e696e670081525060200191505060405180910390fd5b61177161176b612ea8565b8261336d565b50565b60008060169054906101000a900460ff168061179457506117936130b5565b5b905090565b6117a16130b5565b611813576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b61181b6125cd565b15611871576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b600060169054906101000a900460ff1615600060166101000a81548160ff021916908315150217905550565b6118a56130b5565b611917576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b61191f6125cd565b15611975576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6001600060186101000a81548160ff021916908315150217905550565b60004360015411156119ba576119b3436001546137e390919063ffffffff16565b90506119bf565b600090505b90565b6119ca6130b5565b611a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b611a446125cd565b15611a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff16611b7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b600060179054906101000a900460ff1680611b995750611b986130b5565b5b611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613fc56029913960400191505060405180910390fd5b611bfa8484848461382d565b50505050565b60008060169054906101000a900460ff1680611c205750611c1f613113565b5b80611c2f5750611c2e6130b5565b5b611c84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614120603f913960400191505060405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611cd36130b5565b611d45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b611d4d6124f7565b15611da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061405b602d913960400191505060405180910390fd5b611dab612020565b15611e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806140ab602c913960400191505060405180910390fd5b6001600060186101000a81548160ff0219169083151502179055506001600060196101000a81548160ff021916908315150217905550565b60008060149054906101000a900460ff16905090565b60098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ee55780601f10611eba57610100808354040283529160200191611ee5565b820191906000526020600020905b815481529060010190602001808311611ec857829003601f168201915b505050505081565b611ef56130b5565b611f67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b611f6f6125cd565b15611fc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060015414158015612035575060015443105b905090565b60008060159054906101000a900460ff16905090565b6120586130b5565b6120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6120d26125cd565b15612128576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b804310612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806140106025913960400191505060405180910390fd5b8060018190555050565b600061224d612197612ea8565b84612248856040518060600160405280602581526020016141d060259139600660006121c1612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ad9092919063ffffffff16565b612eb0565b6001905092915050565b60036020528060005260406000206000915054906101000a900460ff1681565b60008060149054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b6122ef6122e8612ea8565b8484613b53565b6001905092915050565b6123016130b5565b612373576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b61237b6125cd565b156123d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6123da81613bd1565b50565b60008060169054906101000a900460ff16905090565b6123fb6130b5565b61246d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6124756125cd565b156124cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b600060159054906101000a900460ff1615600060156101000a81548160ff021916908315150217905550565b60006125016125cd565b80156125195750600060199054906101000a900460ff165b905090565b612526613e87565b612598576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f204465706f736974696e672050726976696c61676573000000000000000081525060200191505060405180910390fd5b6000828260208110156125aa57600080fd5b810190808035906020019092919050505090506125c78482613618565b50505050565b60008060189054906101000a900460ff16806125ed57506125ec612020565b5b905090565b6125fa6130b5565b61266c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6126746125cd565b156126ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61272d6130b5565b61279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6127a76125cd565b156127fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6128606130b5565b6128d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6128da6125cd565b15612930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b600060149054906101000a900460ff1615600060146101000a81548160ff021916908315150217905550565b6129646130b5565b6129d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6129de6125cd565b15612a34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b600060179054906101000a900460ff1615600060176101000a81548160ff021916908315150217905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060149054906101000a900460ff16612b4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b600060179054906101000a900460ff1680612b6b5750612b6a6130b5565b5b612bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613fc56029913960400191505060405180910390fd5b612bd3612bcb612ea8565b84848461382d565b505050565b612be06130b5565b612c52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b612c5a6124f7565b15612cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061405b602d913960400191505060405180910390fd5b612cb8612020565b15612d0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806140ab602c913960400191505060405180910390fd5b612d166125cd565b612d88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f436f6e7472616374206e6f74206c6f636b65640000000000000000000000000081525060200191505060405180910390fd5b60008060186101000a81548160ff021916908315150217905550565b612dac6130b5565b612e1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b612e266125cd565b15612e7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b612e8581613bd1565b50565b60026020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806141846024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613fee6022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130456123dd565b156130b0578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166130f7612ea8565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600060036000613121612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b60008060149054906101000a900460ff166131d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b6131e08585858561382d565b6132a1856131ec612ea8565b61329c866040518060600160405280602881526020016140d760289139600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000613252612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ad9092919063ffffffff16565b612eb0565b60019050949350505050565b600083831115829061335a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561331f578082015181840152602081019050613304565b50505050905090810190601f16801561334c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806140ff6021913960400191505060405180910390fd5b61345f81604051806060016040528060228152602001613fa360229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ad9092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b7816007546137e390919063ffffffff16565b6007819055506134c56123dd565b1561353157600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b6000808284019050838110156135b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600260006135cb612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6136d08160075461353590919063ffffffff16565b60078190555061372881600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461353590919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137736123dd565b156137df578173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b600061382583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132ad565b905092915050565b600060149054906101000a900460ff16613892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061415f6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561399e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613f806023913960400191505060405180910390fd5b613a0a8260405180606001604052806026815260200161403560269139600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ad9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a9f82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461353590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080613b4d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b50505050565b600060149054906101000a900460ff16613bb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b613bcc838383613bc66123dd565b1561382d565b505050565b6000600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060046000613e95612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613f2357805160ff1916838001178555613f51565b82800160010185558215613f51579182015b82811115613f50578251825591602001919060010190613f35565b5b509050613f5e9190613f62565b5090565b5b80821115613f7b576000816000905550600101613f63565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e74726163742063616e6e6f742073656e642070726976617465207472616e73616374696f6e7345524332303a20617070726f766520746f20746865207a65726f206164647265737350726f766964656420426c6f636b206e756d626e657220697320696e20746865207061737445524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f6e7472616374206c6f636b656420666f726576657220746f20676f7665726e616e6365206368616e676573436f6e747261637420646f6573206e6f7420616c6c6f77207472616e73666572696e67436f6e747261637420686173206265656e206c6f636b656420756e74696c206120626c6f636b6e756d62657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f2061646472657373436f6e7472616374206973207072697661746520616e6420796f7520617265206e6f7420476f7665726e6572206f72206f6e2076696577657273206c69737445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373436f6e7472616374206973206c6f636b656420746f20676f7665726e616e6365206368616e67657345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aa4a9f677a85af1e331718d8468e752a4ab9b7d094bbb26ef2ce2362cd1f8ec164736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061028a5760003560e01c806395d89b411161015c578063c08c9f9a116100ce578063da424e6f11610087578063da424e6f14610d6a578063dd62ed3e14610d74578063e1ad116214610dec578063ed10e33c14610e46578063f2fde38b14610e50578063f46eccc414610e945761028a565b8063c08c9f9a14610bff578063cf2c52cb14610c1f578063cf30901214610cb8578063d1d9891414610cd8578063d47356a314610d1c578063d6bfc22f14610d605761028a565b8063a457c2d711610120578063a457c2d714610a6f578063a69439aa14610ad3578063a9059cbb14610b2d578063ab033ea914610b91578063af6a6d7914610bd5578063b3cc59db14610bf55761028a565b806395d89b411461093a578063983b2d56146109bd578063a0065b5b14610a01578063a07c7ce414610a21578063a2f0d95714610a415761028a565b8063425a71c011610200578063601f8cf5116101b9578063601f8cf5146107a05780636384c045146107e45780636f2293ab1461083e57806370a08231146108b857806390f3173b1461091057806392ff0d311461091a5761028a565b8063425a71c0146105c157806342966c6814610720578063432d6c671461074e57806343918ad81461076e578063439ec2ee146107785780634437d99e146107825761028a565b80632e1a7d4d116102525780632e1a7d4d1461045c5780633092afd51461048a578063313ce567146104ce57806339509351146104ef5780633bce1d481461055357806340c10f19146105735761028a565b806306fdde031461028f578063095ea7b31461031257806317ac10db1461037657806318160ddd146103ba57806323b872dd146103d8575b600080fd5b610297610eee565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61035e6004803603604081101561032857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f8c565b60405180821515815260200191505060405180910390f35b6103b86004803603602081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610faa565b005b6103c26110dd565b6040518082815260200191505060405180910390f35b610444600480360360608110156103ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611169565b60405180821515815260200191505060405180910390f35b6104886004803603602081101561047257600080fd5b81019080803590602001909291905050506112af565b005b6104cc600480360360208110156104a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112c3565b005b6104d66113f6565b604051808260ff16815260200191505060405180910390f35b61053b6004803603604081101561050557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611409565b60405180821515815260200191505060405180910390f35b61055b6114bc565b60405180821515815260200191505060405180910390f35b6105bf6004803603604081101561058957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114d2565b005b61071e600480360360608110156105d757600080fd5b81019080803590602001906401000000008111156105f457600080fd5b82018360208201111561060657600080fd5b8035906020019184600183028401116401000000008311171561062857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561068b57600080fd5b82018360208201111561069d57600080fd5b803590602001918460018302840111640100000000831117156106bf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff1690602001909291905050506115b8565b005b61074c6004803603602081101561073657600080fd5b81019080803590602001909291905050506116de565b005b610756611774565b60405180821515815260200191505060405180910390f35b610776611799565b005b61078061189d565b005b61078a611992565b6040518082815260200191505060405180910390f35b6107e2600480360360208110156107b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c2565b005b610826600480360360208110156107fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af5565b60405180821515815260200191505060405180910390f35b6108b66004803603608081101561085457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050611b15565b005b6108fa600480360360208110156108ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c00565b6040518082815260200191505060405180910390f35b610918611ccb565b005b610922611e39565b60405180821515815260200191505060405180910390f35b610942611e4f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610982578082015181840152602081019050610967565b50505050905090810190601f1680156109af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109ff600480360360208110156109d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eed565b005b610a09612020565b60405180821515815260200191505060405180910390f35b610a2961203a565b60405180821515815260200191505060405180910390f35b610a6d60048036036020811015610a5757600080fd5b8101908080359060200190929190505050612050565b005b610abb60048036036040811015610a8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061218a565b60405180821515815260200191505060405180910390f35b610b1560048036036020811015610ae957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612257565b60405180821515815260200191505060405180910390f35b610b7960048036036040811015610b4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612277565b60405180821515815260200191505060405180910390f35b610bd360048036036020811015610ba757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122f9565b005b610bdd6123dd565b60405180821515815260200191505060405180910390f35b610bfd6123f3565b005b610c076124f7565b60405180821515815260200191505060405180910390f35b610cb660048036036040811015610c3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610c7257600080fd5b820183602082011115610c8457600080fd5b80359060200191846001830284011164010000000083111715610ca657600080fd5b909192939192939050505061251e565b005b610cc06125cd565b60405180821515815260200191505060405180910390f35b610d1a60048036036020811015610cee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125f2565b005b610d5e60048036036020811015610d3257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612725565b005b610d68612858565b005b610d7261295c565b005b610dd660048036036040811015610d8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a60565b6040518082815260200191505060405180910390f35b610e4460048036036060811015610e0257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050612ae7565b005b610e4e612bd8565b005b610e9260048036036020811015610e6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612da4565b005b610ed660048036036020811015610eaa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e88565b60405180821515815260200191505060405180910390f35b60088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f845780601f10610f5957610100808354040283529160200191610f84565b820191906000526020600020905b815481529060010190602001808311610f6757829003601f168201915b505050505081565b6000610fa0610f99612ea8565b8484612eb0565b6001905092915050565b610fb26130b5565b611024576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b61102c6125cd565b15611082576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060169054906101000a900460ff16806110fd57506110fc613113565b5b8061110c575061110b6130b5565b5b611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614120603f913960400191505060405180910390fd5b600754905090565b60008060149054906101000a900460ff166111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b6111e28484846111dd6123dd565b61316e565b506112a4846111ef612ea8565b61129f856040518060600160405280602881526020016140d760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611255612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ad9092919063ffffffff16565b612eb0565b600190509392505050565b6112c06112ba612ea8565b8261336d565b50565b6112cb6130b5565b61133d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6113456125cd565b1561139b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900460ff1681565b60006114b2611416612ea8565b846114ad8560066000611427612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461353590919063ffffffff16565b612eb0565b6001905092915050565b60008060179054906101000a900460ff16905090565b6114da6135bd565b61154c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f204d696e74696e672050726976696c61676573000000000000000000000081525060200191505060405180910390fd5b6115546125cd565b156115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6115b48282613618565b5050565b6115c06130b5565b611632576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b61163a6125cd565b15611690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b82600890805190602001906116a6929190613ee2565b5081600990805190602001906116bd929190613ee2565b5080600a60006101000a81548160ff021916908360ff160217905550505050565b600060159054906101000a900460ff16611760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e747261637420646f6573206e6f7420616c6c6f77206275726e696e670081525060200191505060405180910390fd5b61177161176b612ea8565b8261336d565b50565b60008060169054906101000a900460ff168061179457506117936130b5565b5b905090565b6117a16130b5565b611813576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b61181b6125cd565b15611871576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b600060169054906101000a900460ff1615600060166101000a81548160ff021916908315150217905550565b6118a56130b5565b611917576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b61191f6125cd565b15611975576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6001600060186101000a81548160ff021916908315150217905550565b60004360015411156119ba576119b3436001546137e390919063ffffffff16565b90506119bf565b600090505b90565b6119ca6130b5565b611a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b611a446125cd565b15611a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff16611b7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b600060179054906101000a900460ff1680611b995750611b986130b5565b5b611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613fc56029913960400191505060405180910390fd5b611bfa8484848461382d565b50505050565b60008060169054906101000a900460ff1680611c205750611c1f613113565b5b80611c2f5750611c2e6130b5565b5b611c84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614120603f913960400191505060405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611cd36130b5565b611d45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b611d4d6124f7565b15611da3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061405b602d913960400191505060405180910390fd5b611dab612020565b15611e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806140ab602c913960400191505060405180910390fd5b6001600060186101000a81548160ff0219169083151502179055506001600060196101000a81548160ff021916908315150217905550565b60008060149054906101000a900460ff16905090565b60098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ee55780601f10611eba57610100808354040283529160200191611ee5565b820191906000526020600020905b815481529060010190602001808311611ec857829003601f168201915b505050505081565b611ef56130b5565b611f67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b611f6f6125cd565b15611fc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060015414158015612035575060015443105b905090565b60008060159054906101000a900460ff16905090565b6120586130b5565b6120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6120d26125cd565b15612128576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b804310612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806140106025913960400191505060405180910390fd5b8060018190555050565b600061224d612197612ea8565b84612248856040518060600160405280602581526020016141d060259139600660006121c1612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ad9092919063ffffffff16565b612eb0565b6001905092915050565b60036020528060005260406000206000915054906101000a900460ff1681565b60008060149054906101000a900460ff166122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b6122ef6122e8612ea8565b8484613b53565b6001905092915050565b6123016130b5565b612373576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b61237b6125cd565b156123d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6123da81613bd1565b50565b60008060169054906101000a900460ff16905090565b6123fb6130b5565b61246d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6124756125cd565b156124cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b600060159054906101000a900460ff1615600060156101000a81548160ff021916908315150217905550565b60006125016125cd565b80156125195750600060199054906101000a900460ff165b905090565b612526613e87565b612598576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f204465706f736974696e672050726976696c61676573000000000000000081525060200191505060405180910390fd5b6000828260208110156125aa57600080fd5b810190808035906020019092919050505090506125c78482613618565b50505050565b60008060189054906101000a900460ff16806125ed57506125ec612020565b5b905090565b6125fa6130b5565b61266c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6126746125cd565b156126ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61272d6130b5565b61279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6127a76125cd565b156127fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6128606130b5565b6128d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6128da6125cd565b15612930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b600060149054906101000a900460ff1615600060146101000a81548160ff021916908315150217905550565b6129646130b5565b6129d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b6129de6125cd565b15612a34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b600060179054906101000a900460ff1615600060176101000a81548160ff021916908315150217905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060149054906101000a900460ff16612b4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b600060179054906101000a900460ff1680612b6b5750612b6a6130b5565b5b612bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613fc56029913960400191505060405180910390fd5b612bd3612bcb612ea8565b84848461382d565b505050565b612be06130b5565b612c52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b612c5a6124f7565b15612cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061405b602d913960400191505060405180910390fd5b612cb8612020565b15612d0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806140ab602c913960400191505060405180910390fd5b612d166125cd565b612d88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f436f6e7472616374206e6f74206c6f636b65640000000000000000000000000081525060200191505060405180910390fd5b60008060186101000a81548160ff021916908315150217905550565b612dac6130b5565b612e1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420476f7665726e65720000000000000000000081525060200191505060405180910390fd5b612e266125cd565b15612e7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141a86028913960400191505060405180910390fd5b612e8581613bd1565b50565b60026020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806141846024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613fee6022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130456123dd565b156130b0578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166130f7612ea8565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600060036000613121612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b60008060149054906101000a900460ff166131d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b6131e08585858561382d565b6132a1856131ec612ea8565b61329c866040518060600160405280602881526020016140d760289139600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000613252612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ad9092919063ffffffff16565b612eb0565b60019050949350505050565b600083831115829061335a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561331f578082015181840152602081019050613304565b50505050905090810190601f16801561334c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806140ff6021913960400191505060405180910390fd5b61345f81604051806060016040528060228152602001613fa360229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ad9092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134b7816007546137e390919063ffffffff16565b6007819055506134c56123dd565b1561353157600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b6000808284019050838110156135b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600260006135cb612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6136d08160075461353590919063ffffffff16565b60078190555061372881600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461353590919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137736123dd565b156137df578173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b600061382583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132ad565b905092915050565b600060149054906101000a900460ff16613892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061415f6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561399e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613f806023913960400191505060405180910390fd5b613a0a8260405180606001604052806026815260200161403560269139600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ad9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a9f82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461353590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080613b4d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b50505050565b600060149054906101000a900460ff16613bb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140886023913960400191505060405180910390fd5b613bcc838383613bc66123dd565b1561382d565b505050565b6000600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060046000613e95612ea8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613f2357805160ff1916838001178555613f51565b82800160010185558215613f51579182015b82811115613f50578251825591602001919060010190613f35565b5b509050613f5e9190613f62565b5090565b5b80821115613f7b576000816000905550600101613f63565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e74726163742063616e6e6f742073656e642070726976617465207472616e73616374696f6e7345524332303a20617070726f766520746f20746865207a65726f206164647265737350726f766964656420426c6f636b206e756d626e657220697320696e20746865207061737445524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f6e7472616374206c6f636b656420666f726576657220746f20676f7665726e616e6365206368616e676573436f6e747261637420646f6573206e6f7420616c6c6f77207472616e73666572696e67436f6e747261637420686173206265656e206c6f636b656420756e74696c206120626c6f636b6e756d62657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f2061646472657373436f6e7472616374206973207072697661746520616e6420796f7520617265206e6f7420476f7665726e6572206f72206f6e2076696577657273206c69737445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373436f6e7472616374206973206c6f636b656420746f20676f7665726e616e6365206368616e67657345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aa4a9f677a85af1e331718d8468e752a4ab9b7d094bbb26ef2ce2362cd1f8ec164736f6c634300060c0033
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.