Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
300,000,000 STS
Holders
352
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
28,224.2 STSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
STARS
Compiler Version
v0.4.25+commit.59dbf8f1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-06-14 */ pragma solidity 0.4.25; contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } contract DetailedERC20 is ERC20 { string public name; string public symbol; uint8 public decimals; constructor(string _name, string _symbol, uint8 _decimals) public { name = _name; symbol = _symbol; decimals = _decimals; } } contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; uint256 _totalSupply; function totalSupply() public view returns (uint256) { return _totalSupply; } function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0), "ERC20: transfer to the zero address"); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } } contract ERC20Token is BasicToken, ERC20 { using SafeMath for uint256; mapping (address => mapping (address => uint256)) public allowed; function approve(address _spender, uint256 _value) public returns (bool) { require(_value == 0 || allowed[msg.sender][_spender] == 0, "ERC20: value=0 or allowance=0"); allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) public view returns (uint256) { require(_owner != address(0), "ERC20: transfer _owner the zero address"); return allowed[_owner][_spender]; } function increaseAllowance(address _spender, uint256 _addedValue) public returns (bool) { require(_spender != address(0), "ERC20: transfer to the zero address"); allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseAllowance(address _spender, uint256 _subtractedValue) public returns (bool) { require(_spender != address(0), "ERC20: transfer to the zero address"); allowed[msg.sender][_spender] = allowed[msg.sender][_spender].sub(_subtractedValue); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } contract Ownable { address public owner; mapping (address => bool) admin; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() public { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner, "ERC20: It must be the owner wallet."); _; } modifier onlyOwnerOrAdmin() { require(msg.sender == owner || admin[msg.sender] == true, "ERC20: It must be the owner's wallet or the ADMIN's wallet."); _; } function transferOwnership(address newOwner) onlyOwner public { require(newOwner != address(0) && newOwner != owner && admin[newOwner] == true, "ERC20: It must be an admin wallet, not the owner, and not the first wallet."); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } function setAdmin(address newAdmin) onlyOwner public { require(newAdmin != address(0), "ERC20: It should not be the first wallet.."); require(admin[newAdmin] != true && owner != newAdmin, "ERC20: It should not be the owner wallet, not the admin wallet."); admin[newAdmin] = true; } function unsetAdmin(address Admin) onlyOwner public { require(admin[Admin] != false && owner != Admin, "ERC20: It should not be the owner wallet, the admin wallet."); admin[Admin] = false; } } contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; modifier whenNotPaused() { require(!paused); _; } modifier whenPaused() { require(paused); _; } function pause() onlyOwner whenNotPaused public { paused = true; emit Pause(); } function unpause() onlyOwner whenPaused public { paused = false; emit Unpause(); } } contract PauserRole { using Roles for Roles.Role; event PauserAdded(address indexed account); event PauserRemoved(address indexed account); Roles.Role private pausers; constructor() internal { _addPauser(msg.sender); } modifier onlyPauser() { require(isPauser(msg.sender)); _; } function isPauser(address account) public view returns (bool) { return pausers.has(account); } function addPauser(address account) public onlyPauser { _addPauser(account); } function renouncePauser() public { _removePauser(msg.sender); } function _addPauser(address account) internal { pausers.add(account); emit PauserAdded(account); } function _removePauser(address account) internal { pausers.remove(account); emit PauserRemoved(account); } } library SafeMath { 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) { require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b < a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } } library Roles { struct Role { mapping (address => bool) bearer; } function add(Role storage role, address account) internal { require(account != address(0), "ERC20: It should not be the first wallet.."); require(!has(role, account)); role.bearer[account] = true; } function remove(Role storage role, address account) internal { require(account != address(0), "ERC20: It should not be the first wallet.."); require(has(role, account)); role.bearer[account] = false; } function has(Role storage role, address account) internal view returns (bool){ require(account != address(0), "ERC20: It should not be the first wallet.."); return role.bearer[account]; } } contract BurnableToken is BasicToken, Ownable { function burn(uint256 _value) onlyOwner public { balances[msg.sender] = balances[msg.sender].sub(_value); _totalSupply = _totalSupply.sub(_value); emit Transfer(msg.sender, address(0), _value); } } contract STARS is BurnableToken, DetailedERC20, ERC20Token,Pausable{ using SafeMath for uint256; event Approval(address indexed owner, address indexed spender, uint256 value); event LockerChanged(address indexed _address, uint256 amount); event Recall(address indexed from, uint256 amount); mapping(address => uint) public locker; string public constant symbol = "STS"; string public constant name = "STARS"; uint8 public constant decimals = 18; uint256 public constant TOTAL_SUPPLY = 3*(10**8)*(10**uint256(decimals)); constructor() DetailedERC20(name, symbol, decimals) public { _totalSupply = TOTAL_SUPPLY; balances[owner] = _totalSupply; emit Transfer(address(0x0), msg.sender, _totalSupply); } function transfer(address _to, uint256 _value) public whenNotPaused returns (bool){ return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool){ require( _from != address(0) && _to != address(0), "ERC20: It should not be the first wallet.."); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } function lockOf(address _address) public view returns (uint256 _locker) { return locker[_address]; } function setLock(address _address, uint256 _value) public onlyOwnerOrAdmin { require(_value <= _totalSupply,"ERC20: The amount to be locked must be less than the total issuance amount."); require(_address != address(0),"ERC20: It should not be the first wallet.."); locker[_address] = _value; emit LockerChanged(_address, _value); } function recall(address _from, uint256 _amount) public onlyOwnerOrAdmin { require(_amount <= _totalSupply,"ERC20: The amount to be locked must be less than the total issuance amount."); require(_from != address(0),"ERC20: It should not be the first wallet.."); uint256 currentLocker = locker[_from]; uint256 currentBalance = balances[_from]; require(currentLocker >= _amount && currentBalance >= _amount,"ERC20: The amount to be locked must be less than the total issuance amount."); uint256 newLock = currentLocker - _amount; locker[_from] = newLock; emit LockerChanged(_from, newLock); balances[_from] = balances[_from].sub(_amount); balances[owner] = balances[owner].add(_amount); emit Transfer(_from, owner, _amount); emit Recall(_from, _amount); } function mint(address _address, uint256 _value) public onlyOwnerOrAdmin returns (bool){ require( _address != address(0) , "ERC20: It should not be the first wallet.."); balances[_address] = balances[_address].add(_value); emit Transfer(address(0x0), _address, _value); return true; } function() public payable { revert(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_amount","type":"uint256"}],"name":"recall","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"Admin","type":"address"}],"name":"unsetAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"lockOf","outputs":[{"name":"_locker","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_value","type":"uint256"}],"name":"setLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"locker","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_address","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LockerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Recall","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
60806040526000600860006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040805190810160405280600581526020017f53544152530000000000000000000000000000000000000000000000000000008152506040805190810160405280600381526020017f5354530000000000000000000000000000000000000000000000000000000000815250601233600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260049080519060200190620000f492919062000215565b5081600590805190602001906200010d92919062000215565b5080600660006101000a81548160ff021916908360ff160217905550505050601260ff16600a0a6311e1a30002600181905550600154600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040518082815260200191505060405180910390a3620002c4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025857805160ff191683800117855562000289565b8280016001018555821562000289579182015b82811115620002885782518255916020019190600101906200026b565b5b5090506200029891906200029c565b5090565b620002c191905b80821115620002bd576000816000905550600101620002a3565b5090565b90565b61371d80620002d46000396000f300608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610159578063095ea7b3146101e957806318160ddd1461024e5780631f035c7a1461027957806323b872dd146102c6578063313ce5671461034b578063395093511461037c5780633f4ba83a146103e157806340c10f19146103f857806342966c681461045d5780634d253b501461048a5780635a46d3b5146104cd5780635c658165146105245780635c975abb1461059b578063704b6c02146105ca57806370a082311461060d5780638456cb59146106645780638da5cb5b1461067b578063902d55a5146106d257806395d89b41146106fd578063a457c2d71461078d578063a9059cbb146107f2578063b0fc29e614610857578063d71c9c12146108a4578063dd62ed3e146108fb578063f2fde38b14610972575b600080fd5b34801561016557600080fd5b5061016e6109b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ae578082015181840152602081019050610193565b50505050905090810190601f1680156101db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f557600080fd5b50610234600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109ee565b604051808215151515815260200191505060405180910390f35b34801561025a57600080fd5b50610263610bde565b6040518082815260200191505060405180910390f35b34801561028557600080fd5b506102c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610be8565b005b3480156102d257600080fd5b50610331600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112f4565b604051808215151515815260200191505060405180910390f35b34801561035757600080fd5b506103606116bb565b604051808260ff1660ff16815260200191505060405180910390f35b34801561038857600080fd5b506103c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116c0565b604051808215151515815260200191505060405180910390f35b3480156103ed57600080fd5b506103f6611986565b005b34801561040457600080fd5b50610443600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ad5565b604051808215151515815260200191505060405180910390f35b34801561046957600080fd5b5061048860048036038101908080359060200190929190505050611deb565b005b34801561049657600080fd5b506104cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fed565b005b3480156104d957600080fd5b5061050e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061227c565b6040518082815260200191505060405180910390f35b34801561053057600080fd5b50610585600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c5565b6040518082815260200191505060405180910390f35b3480156105a757600080fd5b506105b06122ea565b604051808215151515815260200191505060405180910390f35b3480156105d657600080fd5b5061060b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122fd565b005b34801561061957600080fd5b5061064e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612657565b6040518082815260200191505060405180910390f35b34801561067057600080fd5b5061067961269f565b005b34801561068757600080fd5b506106906127ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106de57600080fd5b506106e7612815565b6040518082815260200191505060405180910390f35b34801561070957600080fd5b50610712612826565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610752578082015181840152602081019050610737565b50505050905090810190601f16801561077f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561079957600080fd5b506107d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061285f565b604051808215151515815260200191505060405180910390f35b3480156107fe57600080fd5b5061083d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b25565b604051808215151515815260200191505060405180910390f35b34801561086357600080fd5b506108a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b55565b005b3480156108b057600080fd5b506108e5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ec2565b6040518082815260200191505060405180910390f35b34801561090757600080fd5b5061095c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612eda565b6040518082815260200191505060405180910390f35b34801561097e57600080fd5b506109b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061302b565b005b6040805190810160405280600581526020017f535441525300000000000000000000000000000000000000000000000000000081525081565b600080821480610a7a57506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f45524332303a2076616c75653d30206f7220616c6c6f77616e63653d3000000081525060200191505060405180910390fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c99575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515610d33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f45524332303a204974206d75737420626520746865206f776e6572277320776181526020017f6c6c6574206f72207468652041444d494e27732077616c6c65742e000000000081525060400191505060405180910390fd5b6001548411151515610df9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b8152602001807f45524332303a2054686520616d6f756e7420746f206265206c6f636b6564206d81526020017f757374206265206c657373207468616e2074686520746f74616c20697373756181526020017f6e636520616d6f756e742e00000000000000000000000000000000000000000081525060600191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515610ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206669727381526020017f742077616c6c65742e2e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150838310158015610f575750838210155b1515611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b8152602001807f45524332303a2054686520616d6f756e7420746f206265206c6f636b6564206d81526020017f757374206265206c657373207468616e2074686520746f74616c20697373756181526020017f6e636520616d6f756e742e00000000000000000000000000000000000000000081525060600191505060405180910390fd5b838303905080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff167f173c6954f6574ae8ea8afd3eed2fc6ddd6f1aac55aab5e2c3a10edc59ba2dfd3826040518082815260200191505060405180910390a26110ff846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b484600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340690919063ffffffff16565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff167f292f6683f4c6c70f710d3458e1113ffc895a78fd70fb44e8f8ad0e18f06fd87d856040518082815260200191505060405180910390a25050505050565b6000600860009054906101000a900460ff1615151561131257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561137c5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1515611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206669727381526020017f742077616c6c65742e2e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611467826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114fa826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340690919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115cb82600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561178c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61181b82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340690919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600860009054906101000a900460ff161515611a8c57600080fd5b6000600860006101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b83575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515611c1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f45524332303a204974206d75737420626520746865206f776e6572277320776181526020017f6c6c6574206f72207468652041444d494e27732077616c6c65742e000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206669727381526020017f742077616c6c65742e2e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611d39826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340690919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ed6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611f27816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f7e8160015461337d90919063ffffffff16565b600181905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415801561218757508073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1515612221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206f776e6581526020017f722077616c6c65742c207468652061646d696e2077616c6c65742e000000000081525060400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600860009054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156124b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206669727381526020017f742077616c6c65742e2e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415801561256257508073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15156125fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206f776e6581526020017f722077616c6c65742c206e6f74207468652061646d696e2077616c6c65742e0081525060400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561278a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600860009054906101000a900460ff161515156127a657600080fd5b6001600860006101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260ff16600a0a6311e1a3000281565b6040805190810160405280600381526020017f535453000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561292b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6129ba82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600860009054906101000a900460ff16151515612b4357600080fd5b612b4d8383613490565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612c01575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515612c9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f45524332303a204974206d75737420626520746865206f776e6572277320776181526020017f6c6c6574206f72207468652041444d494e27732077616c6c65742e000000000081525060400191505060405180910390fd5b6001548111151515612d61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b8152602001807f45524332303a2054686520616d6f756e7420746f206265206c6f636b6564206d81526020017f757374206265206c657373207468616e2074686520746f74616c20697373756181526020017f6e636520616d6f756e742e00000000000000000000000000000000000000000081525060600191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612e2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206669727381526020017f742077616c6c65742e2e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f173c6954f6574ae8ea8afd3eed2fc6ddd6f1aac55aab5e2c3a10edc59ba2dfd3826040518082815260200191505060405180910390a25050565b60096020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612fa6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f45524332303a207472616e73666572205f6f776e657220746865207a65726f2081526020017f616464726573730000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156131a15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156131fd575060011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15156132bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b8152602001807f45524332303a204974206d75737420626520616e2061646d696e2077616c6c6581526020017f742c206e6f7420746865206f776e65722c20616e64206e6f742074686520666981526020017f7273742077616c6c65742e00000000000000000000000000000000000000000081525060600191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083831015156133f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b82840390508091505092915050565b6000808284019050838110151515613486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561355c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6135ad826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613640826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340690919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820b9a5bf78011339bd4090bce19cd8f8490c21166b83d3ffc6a9e3d98d9cdcfa4c0029
Deployed Bytecode
0x608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610159578063095ea7b3146101e957806318160ddd1461024e5780631f035c7a1461027957806323b872dd146102c6578063313ce5671461034b578063395093511461037c5780633f4ba83a146103e157806340c10f19146103f857806342966c681461045d5780634d253b501461048a5780635a46d3b5146104cd5780635c658165146105245780635c975abb1461059b578063704b6c02146105ca57806370a082311461060d5780638456cb59146106645780638da5cb5b1461067b578063902d55a5146106d257806395d89b41146106fd578063a457c2d71461078d578063a9059cbb146107f2578063b0fc29e614610857578063d71c9c12146108a4578063dd62ed3e146108fb578063f2fde38b14610972575b600080fd5b34801561016557600080fd5b5061016e6109b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ae578082015181840152602081019050610193565b50505050905090810190601f1680156101db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f557600080fd5b50610234600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109ee565b604051808215151515815260200191505060405180910390f35b34801561025a57600080fd5b50610263610bde565b6040518082815260200191505060405180910390f35b34801561028557600080fd5b506102c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610be8565b005b3480156102d257600080fd5b50610331600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112f4565b604051808215151515815260200191505060405180910390f35b34801561035757600080fd5b506103606116bb565b604051808260ff1660ff16815260200191505060405180910390f35b34801561038857600080fd5b506103c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116c0565b604051808215151515815260200191505060405180910390f35b3480156103ed57600080fd5b506103f6611986565b005b34801561040457600080fd5b50610443600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ad5565b604051808215151515815260200191505060405180910390f35b34801561046957600080fd5b5061048860048036038101908080359060200190929190505050611deb565b005b34801561049657600080fd5b506104cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fed565b005b3480156104d957600080fd5b5061050e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061227c565b6040518082815260200191505060405180910390f35b34801561053057600080fd5b50610585600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c5565b6040518082815260200191505060405180910390f35b3480156105a757600080fd5b506105b06122ea565b604051808215151515815260200191505060405180910390f35b3480156105d657600080fd5b5061060b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122fd565b005b34801561061957600080fd5b5061064e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612657565b6040518082815260200191505060405180910390f35b34801561067057600080fd5b5061067961269f565b005b34801561068757600080fd5b506106906127ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106de57600080fd5b506106e7612815565b6040518082815260200191505060405180910390f35b34801561070957600080fd5b50610712612826565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610752578082015181840152602081019050610737565b50505050905090810190601f16801561077f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561079957600080fd5b506107d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061285f565b604051808215151515815260200191505060405180910390f35b3480156107fe57600080fd5b5061083d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b25565b604051808215151515815260200191505060405180910390f35b34801561086357600080fd5b506108a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b55565b005b3480156108b057600080fd5b506108e5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ec2565b6040518082815260200191505060405180910390f35b34801561090757600080fd5b5061095c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612eda565b6040518082815260200191505060405180910390f35b34801561097e57600080fd5b506109b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061302b565b005b6040805190810160405280600581526020017f535441525300000000000000000000000000000000000000000000000000000081525081565b600080821480610a7a57506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f45524332303a2076616c75653d30206f7220616c6c6f77616e63653d3000000081525060200191505060405180910390fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c99575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515610d33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f45524332303a204974206d75737420626520746865206f776e6572277320776181526020017f6c6c6574206f72207468652041444d494e27732077616c6c65742e000000000081525060400191505060405180910390fd5b6001548411151515610df9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b8152602001807f45524332303a2054686520616d6f756e7420746f206265206c6f636b6564206d81526020017f757374206265206c657373207468616e2074686520746f74616c20697373756181526020017f6e636520616d6f756e742e00000000000000000000000000000000000000000081525060600191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515610ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206669727381526020017f742077616c6c65742e2e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150838310158015610f575750838210155b1515611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b8152602001807f45524332303a2054686520616d6f756e7420746f206265206c6f636b6564206d81526020017f757374206265206c657373207468616e2074686520746f74616c20697373756181526020017f6e636520616d6f756e742e00000000000000000000000000000000000000000081525060600191505060405180910390fd5b838303905080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff167f173c6954f6574ae8ea8afd3eed2fc6ddd6f1aac55aab5e2c3a10edc59ba2dfd3826040518082815260200191505060405180910390a26110ff846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b484600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340690919063ffffffff16565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff167f292f6683f4c6c70f710d3458e1113ffc895a78fd70fb44e8f8ad0e18f06fd87d856040518082815260200191505060405180910390a25050505050565b6000600860009054906101000a900460ff1615151561131257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561137c5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1515611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206669727381526020017f742077616c6c65742e2e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611467826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114fa826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340690919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115cb82600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561178c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61181b82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340690919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600860009054906101000a900460ff161515611a8c57600080fd5b6000600860006101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b83575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515611c1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f45524332303a204974206d75737420626520746865206f776e6572277320776181526020017f6c6c6574206f72207468652041444d494e27732077616c6c65742e000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206669727381526020017f742077616c6c65742e2e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611d39826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340690919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ed6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611f27816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f7e8160015461337d90919063ffffffff16565b600181905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415801561218757508073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1515612221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206f776e6581526020017f722077616c6c65742c207468652061646d696e2077616c6c65742e000000000081525060400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600860009054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156124b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206669727381526020017f742077616c6c65742e2e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415801561256257508073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15156125fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206f776e6581526020017f722077616c6c65742c206e6f74207468652061646d696e2077616c6c65742e0081525060400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561278a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600860009054906101000a900460ff161515156127a657600080fd5b6001600860006101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260ff16600a0a6311e1a3000281565b6040805190810160405280600381526020017f535453000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561292b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6129ba82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600860009054906101000a900460ff16151515612b4357600080fd5b612b4d8383613490565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612c01575060011515600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515612c9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001807f45524332303a204974206d75737420626520746865206f776e6572277320776181526020017f6c6c6574206f72207468652041444d494e27732077616c6c65742e000000000081525060400191505060405180910390fd5b6001548111151515612d61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b8152602001807f45524332303a2054686520616d6f756e7420746f206265206c6f636b6564206d81526020017f757374206265206c657373207468616e2074686520746f74616c20697373756181526020017f6e636520616d6f756e742e00000000000000000000000000000000000000000081525060600191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612e2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f45524332303a2049742073686f756c64206e6f7420626520746865206669727381526020017f742077616c6c65742e2e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f173c6954f6574ae8ea8afd3eed2fc6ddd6f1aac55aab5e2c3a10edc59ba2dfd3826040518082815260200191505060405180910390a25050565b60096020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612fa6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001807f45524332303a207472616e73666572205f6f776e657220746865207a65726f2081526020017f616464726573730000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a204974206d75737420626520746865206f776e65722077616c6c81526020017f65742e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156131a15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156131fd575060011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15156132bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b8152602001807f45524332303a204974206d75737420626520616e2061646d696e2077616c6c6581526020017f742c206e6f7420746865206f776e65722c20616e64206e6f742074686520666981526020017f7273742077616c6c65742e00000000000000000000000000000000000000000081525060600191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083831015156133f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b82840390508091505092915050565b6000808284019050838110151515613486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561355c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6135ad826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461337d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613640826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340690919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a72305820b9a5bf78011339bd4090bce19cd8f8490c21166b83d3ffc6a9e3d98d9cdcfa4c0029
Deployed Bytecode Sourcemap
7272:2982:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10238:8;;;7664:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7664:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7664:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:285;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:285:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1068:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1068:82:0;;;;;;;;;;;;;;;;;;;;;;;9067:815;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9067:815:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8155:442;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8155:442:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7705:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7705:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:342;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2235:342:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4589:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4589:90:0;;;;;;9890:312;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9890:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7055:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7055:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;4064:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4064:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8606:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8606:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1666:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4344:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4344:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3759:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3759:299:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1480:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1480:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4496:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4496:88:0;;;;;;2968:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2968:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7747:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7747:72:0;;;;;;;;;;;;;;;;;;;;;;;7622:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7622:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7622:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2583:352;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2583:352:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8023:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8023:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8716:346;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8716:346:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7578:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7578:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2028:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2028:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3456:298;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3456:298:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7664:37;;;;;;;;;;;;;;;;;;;;:::o;1737:285::-;1804:4;1833:1;1823:6;:11;:49;;;;1871:1;1838:7;:19;1846:10;1838:19;;;;;;;;;;;;;;;:29;1858:8;1838:29;;;;;;;;;;;;;;;;:34;1823:49;1815:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1943:6;1911:7;:19;1919:10;1911:19;;;;;;;;;;;;;;;:29;1931:8;1911:29;;;;;;;;;;;;;;;:38;;;;1980:8;1959:38;;1968:10;1959:38;;;1990:6;1959:38;;;;;;;;;;;;;;;;;;2013:4;2006:11;;1737:285;;;;:::o;1068:82::-;1112:7;1133:12;;1126:19;;1068:82;:::o;9067:815::-;9342:21;9384:22;9581:15;3341:5;;;;;;;;;;;3327:19;;:10;:19;;;:48;;;;3371:4;3350:25;;:5;:17;3356:10;3350:17;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;3327:48;3319:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9166:12;;9155:7;:23;;9147:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9287:1;9270:19;;:5;:19;;;;9262:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9366:6;:13;9373:5;9366:13;;;;;;;;;;;;;;;;9342:37;;9409:8;:15;9418:5;9409:15;;;;;;;;;;;;;;;;9384:40;;9456:7;9439:13;:24;;:54;;;;;9486:7;9468:14;:25;;9439:54;9431:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9615:7;9599:13;:23;9581:41;;9643:7;9627:6;:13;9634:5;9627:13;;;;;;;;;;;;;;;:23;;;;9674:5;9660:29;;;9681:7;9660:29;;;;;;;;;;;;;;;;;;9718:28;9738:7;9718:8;:15;9727:5;9718:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;9700:8;:15;9709:5;9700:15;;;;;;;;;;;;;;;:46;;;;9769:28;9789:7;9769:8;:15;9778:5;;;;;;;;;;;9769:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;9751:8;:15;9760:5;;;;;;;;;;;9751:15;;;;;;;;;;;;;;;:46;;;;9823:5;;;;;;;;;;;9807:31;;9816:5;9807:31;;;9830:7;9807:31;;;;;;;;;;;;;;;;;;9855:5;9848:22;;;9862:7;9848:22;;;;;;;;;;;;;;;;;;9067:815;;;;;:::o;8155:442::-;8251:4;4415:6;;;;;;;;;;;4414:7;4406:16;;;;;;;;8290:1;8273:19;;:5;:19;;;;:40;;;;;8311:1;8296:17;;:3;:17;;;;8273:40;8264:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8385:27;8405:6;8385:8;:15;8394:5;8385:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;8367:8;:15;8376:5;8367:15;;;;;;;;;;;;;;;:45;;;;8433:25;8451:6;8433:8;:13;8442:3;8433:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;8417:8;:13;8426:3;8417:13;;;;;;;;;;;;;;;:41;;;;8492:38;8523:6;8492:7;:14;8500:5;8492:14;;;;;;;;;;;;;;;:26;8507:10;8492:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;8463:7;:14;8471:5;8463:14;;;;;;;;;;;;;;;:26;8478:10;8463:26;;;;;;;;;;;;;;;:67;;;;8558:3;8542:28;;8551:5;8542:28;;;8563:6;8542:28;;;;;;;;;;;;;;;;;;8584:4;8577:11;;8155:442;;;;;:::o;7705:35::-;7738:2;7705:35;:::o;2235:342::-;2317:4;2356:1;2336:22;;:8;:22;;;;2328:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2435:46;2469:11;2435:7;:19;2443:10;2435:19;;;;;;;;;;;;;;;:29;2455:8;2435:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;2403:7;:19;2411:10;2403:19;;;;;;;;;;;;;;;:29;2423:8;2403:29;;;;;;;;;;;;;;;:78;;;;2512:8;2491:61;;2500:10;2491:61;;;2522:7;:19;2530:10;2522:19;;;;;;;;;;;;;;;:29;2542:8;2522:29;;;;;;;;;;;;;;;;2491:61;;;;;;;;;;;;;;;;;;2568:4;2561:11;;2235:342;;;;:::o;4589:90::-;3224:5;;;;;;;;;;;3210:19;;:10;:19;;;3202:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4473:6;;;;;;;;;;;4465:15;;;;;;;;4650:5;4641:6;;:14;;;;;;;;;;;;;;;;;;4665:9;;;;;;;;;;4589:90::o;9890:312::-;9971:4;3341:5;;;;;;;;;;;3327:19;;:10;:19;;;:48;;;;3371:4;3350:25;;:5;:17;3356:10;3350:17;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;3327:48;3319:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10013:1;9993:22;;:8;:22;;;;9984:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10091:30;10114:6;10091:8;:18;10100:8;10091:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;10070:8;:18;10079:8;10070:18;;;;;;;;;;;;;;;:51;;;;10158:8;10135:40;;10152:3;10135:40;;;10168:6;10135:40;;;;;;;;;;;;;;;;;;10189:4;10182:11;;9890:312;;;;:::o;7055:206::-;3224:5;;;;;;;;;;;3210:19;;:10;:19;;;3202:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7130:32;7155:6;7130:8;:20;7139:10;7130:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7107:8;:20;7116:10;7107:20;;;;;;;;;;;;;;;:55;;;;7182:24;7199:6;7182:12;;:16;;:24;;;;:::i;:::-;7167:12;:39;;;;7245:1;7216:40;;7225:10;7216:40;;;7249:6;7216:40;;;;;;;;;;;;;;;;;;7055:206;:::o;4064:198::-;3224:5;;;;;;;;;;;3210:19;;:10;:19;;;3202:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4145:5;4129:21;;:5;:12;4135:5;4129:12;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;;:39;;;;;4163:5;4154:14;;:5;;;;;;;;;;;:14;;;;4129:39;4121:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4252:5;4237;:12;4243:5;4237:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4064:198;:::o;8606:105::-;8661:15;8690:6;:16;8697:8;8690:16;;;;;;;;;;;;;;;;8683:23;;8606:105;;;:::o;1666:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4344:26::-;;;;;;;;;;;;;:::o;3759:299::-;3224:5;;;;;;;;;;;3210:19;;:10;:19;;;3202:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3848:1;3828:22;;:8;:22;;;;3820:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3929:4;3910:23;;:5;:15;3916:8;3910:15;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:44;;;;;3946:8;3937:17;;:5;;;;;;;;;;;:17;;;;3910:44;3902:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4049:4;4031:5;:15;4037:8;4031:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;3759:299;:::o;1480:106::-;1536:15;1565:8;:16;1574:6;1565:16;;;;;;;;;;;;;;;;1558:23;;1480:106;;;:::o;4496:88::-;3224:5;;;;;;;;;;;3210:19;;:10;:19;;;3202:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4415:6;;;;;;;;;;;4414:7;4406:16;;;;;;;;4558:4;4549:6;;:13;;;;;;;;;;;;;;;;;;4572:7;;;;;;;;;;4496:88::o;2968:20::-;;;;;;;;;;;;;:::o;7747:72::-;7738:2;7801:17;;7797:2;:21;7786:9;:33;7747:72;:::o;7622:37::-;;;;;;;;;;;;;;;;;;;;:::o;2583:352::-;2670:4;2709:1;2689:22;;:8;:22;;;;2681:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2788:51;2822:16;2788:7;:19;2796:10;2788:19;;;;;;;;;;;;;;;:29;2808:8;2788:29;;;;;;;;;;;;;;;;:33;;:51;;;;:::i;:::-;2756:7;:19;2764:10;2756:19;;;;;;;;;;;;;;;:29;2776:8;2756:29;;;;;;;;;;;;;;;:83;;;;2870:8;2849:61;;2858:10;2849:61;;;2880:7;:19;2888:10;2880:19;;;;;;;;;;;;;;;:29;2900:8;2880:29;;;;;;;;;;;;;;;;2849:61;;;;;;;;;;;;;;;;;;2926:4;2919:11;;2583:352;;;;:::o;8023:127::-;8101:4;4415:6;;;;;;;;;;;4414:7;4406:16;;;;;;;;8118:27;8133:3;8138:6;8118:14;:27::i;:::-;8111:34;;8023:127;;;;:::o;8716:346::-;3341:5;;;;;;;;;;;3327:19;;:10;:19;;;:48;;;;3371:4;3350:25;;:5;:17;3356:10;3350:17;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;3327:48;3319:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8814:12;;8804:6;:22;;8796:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8938:1;8918:22;;:8;:22;;;;8910:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9010:6;8991;:16;8998:8;8991:16;;;;;;;;;;;;;;;:25;;;;9040:8;9026:31;;;9050:6;9026:31;;;;;;;;;;;;;;;;;;8716:346;;:::o;7578:38::-;;;;;;;;;;;;;;;;;:::o;2028:202::-;2102:7;2142:1;2124:20;;:6;:20;;;;2116:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:7;:15;2208:6;2200:15;;;;;;;;;;;;;;;:25;2216:8;2200:25;;;;;;;;;;;;;;;;2193:32;;2028:202;;;;:::o;3456:298::-;3224:5;;;;;;;;;;;3210:19;;:10;:19;;;3202:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3551:1;3531:22;;:8;:22;;;;:43;;;;;3569:5;;;;;;;;;;;3557:17;;:8;:17;;;;3531:43;:70;;;;;3597:4;3578:23;;:5;:15;3584:8;3578:15;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;3531:70;3523:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3719:8;3691:37;;3712:5;;;;;;;;;;;3691:37;;;;;;;;;;;;3741:8;3733:5;;:16;;;;;;;;;;;;;;;;;;3456:298;:::o;5935:174::-;5993:7;6066:9;6019:1;6015;:5;6007:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6082:1;6078;:5;6066:17;;6103:1;6096:8;;5935:174;;;;;:::o;6114:158::-;6172:7;6186:9;6202:1;6198;:5;6186:17;;6221:1;6216;:6;;6208:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6266:1;6259:8;;6114:158;;;;;:::o;1155:319::-;1218:4;1252:1;1237:17;;:3;:17;;;;1229:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1328:32;1353:6;1328:8;:20;1337:10;1328:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;1305:8;:20;1314:10;1305:20;;;;;;;;;;;;;;;:55;;;;1381:25;1399:6;1381:8;:13;1390:3;1381:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;1365:8;:13;1374:3;1365:13;;;;;;;;;;;;;;;:41;;;;1437:3;1416:33;;1425:10;1416:33;;;1442:6;1416:33;;;;;;;;;;;;;;;;;;1465:4;1458:11;;1155:319;;;;:::o
Swarm Source
bzzr://b9a5bf78011339bd4090bce19cd8f8490c21166b83d3ffc6a9e3d98d9cdcfa4c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.