Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 705 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 21043099 | 80 days ago | IN | 0 ETH | 0.00031372 | ||||
Transfer | 21041862 | 81 days ago | IN | 0 ETH | 0.0004801 | ||||
Transfer | 21028450 | 82 days ago | IN | 0 ETH | 0.00051321 | ||||
Transfer | 21012433 | 85 days ago | IN | 0 ETH | 0.00061497 | ||||
Transfer | 20733692 | 124 days ago | IN | 0 ETH | 0.00014536 | ||||
Transfer | 20661197 | 134 days ago | IN | 0 ETH | 0.00007557 | ||||
Transfer | 20633623 | 138 days ago | IN | 0 ETH | 0.00017443 | ||||
Transfer | 20589062 | 144 days ago | IN | 0 ETH | 0.00017439 | ||||
Transfer | 20539382 | 151 days ago | IN | 0 ETH | 0.00029072 | ||||
Transfer | 20339745 | 179 days ago | IN | 0 ETH | 0.00058133 | ||||
Transfer | 20331756 | 180 days ago | IN | 0 ETH | 0.00058145 | ||||
Transfer | 20281372 | 187 days ago | IN | 0 ETH | 0.00023258 | ||||
Transfer | 20221427 | 195 days ago | IN | 0 ETH | 0.00069774 | ||||
Transfer | 20112673 | 210 days ago | IN | 0 ETH | 0.00108026 | ||||
Transfer | 20112628 | 210 days ago | IN | 0 ETH | 0.00070158 | ||||
Transfer | 19530586 | 292 days ago | IN | 0 ETH | 0.00122721 | ||||
Transfer | 15011715 | 936 days ago | IN | 0 ETH | 0.00069891 | ||||
Transfer | 13364559 | 1196 days ago | IN | 0 ETH | 0.00613116 | ||||
Transfer | 13055413 | 1244 days ago | IN | 0 ETH | 0.00290665 | ||||
Transfer | 13014821 | 1250 days ago | IN | 0 ETH | 0.00290665 | ||||
Transfer | 12979087 | 1255 days ago | IN | 0 ETH | 0.00290665 | ||||
Transfer | 12974960 | 1256 days ago | IN | 0 ETH | 0.00290605 | ||||
Transfer | 12766903 | 1289 days ago | IN | 0 ETH | 0.00290665 | ||||
Transfer | 12760301 | 1290 days ago | IN | 0 ETH | 0.00290605 | ||||
Transfer | 12721141 | 1296 days ago | IN | 0 ETH | 0.00290665 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
FPT
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-03-31 */ /** *Submitted for verification at Etherscan.io on 2019-12-12 */ pragma solidity ^0.5.0; library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev give an account access to this role */ function add(Role storage role, address account) internal { require(account != address(0)); require(!has(role, account)); role.bearer[account] = true; } /** * @dev remove an account's access to this role */ function remove(Role storage role, address account) internal { require(account != address(0)); require(has(role, account)); role.bearer[account] = false; } /** * @dev check if an account has this role * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0)); return role.bearer[account]; } } contract Ownable { address public owner; address public newOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() public { owner = msg.sender; newOwner = address(0); } modifier onlyOwner() { require(msg.sender == owner); _; } modifier onlyNewOwner() { require(msg.sender != address(0)); require(msg.sender == newOwner); _; } function isOwner(address account) public view returns (bool) { if( account == owner ){ return true; } else { return false; } } function transferOwnership(address _newOwner) public onlyOwner { require(_newOwner != address(0)); newOwner = _newOwner; } function acceptOwnership() public onlyNewOwner returns(bool) { emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } contract PauserRole is Ownable{ 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)|| isOwner(msg.sender)); _; } function isPauser(address account) public view returns (bool) { return _pausers.has(account); } function addPauser(address account) public onlyPauser { _addPauser(account); } function removePauser(address account) public onlyOwner { _removePauser(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); } } contract Pausable is PauserRole { event Paused(address account); event Unpaused(address account); bool private _paused; constructor () internal { _paused = false; } /** * @return true if the contract is paused, false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!_paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(_paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() public onlyPauser whenNotPaused { _paused = true; emit Paused(msg.sender); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() public onlyPauser whenPaused { _paused = false; emit Unpaused(msg.sender); } } interface IERC20 { function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract ERC20 is IERC20 { using SafeMath for uint256; mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) internal _allowed; uint256 private _totalSupply; /** * @dev Total number of tokens in existence */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev Gets the balance of the specified address. * @param owner The address to query the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address owner) public view returns (uint256) { return _balances[owner]; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param owner address The address which owns the funds. * @param spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowed[owner][spender]; } /** * @dev Transfer token for a specified address * @param to The address to transfer to. * @param value The amount to be transferred. */ function transfer(address to, uint256 value) public returns (bool) { _transfer(msg.sender, to, value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) public returns (bool) { require(spender != address(0)); _allowed[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /** * @dev Transfer tokens from one address to another. * Note that while this function emits an Approval event, this is not required as per the specification, * and other compliant implementations may not emit the event. * @param from address The address which you want to send tokens from * @param to address The address which you want to transfer to * @param value uint256 the amount of tokens to be transferred */ function transferFrom(address from, address to, uint256 value) public returns (bool) { _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value); _transfer(from, to, value); emit Approval(from, msg.sender, _allowed[from][msg.sender]); return true; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * approve should be called when allowed_[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * Emits an Approval event. * @param spender The address which will spend the funds. * @param addedValue The amount of tokens to increase the allowance by. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { require(spender != address(0)); _allowed[msg.sender][spender] = _allowed[msg.sender][spender].add(addedValue); emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when allowed_[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * Emits an Approval event. * @param spender The address which will spend the funds. * @param subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { require(spender != address(0)); _allowed[msg.sender][spender] = _allowed[msg.sender][spender].sub(subtractedValue); emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); return true; } /** * @dev Transfer token for a specified addresses * @param from The address to transfer from. * @param to The address to transfer to. * @param value The amount to be transferred. */ function _transfer(address from, address to, uint256 value) internal { require(to != address(0)); _balances[from] = _balances[from].sub(value); _balances[to] = _balances[to].add(value); emit Transfer(from, to, value); } /** * @dev Internal function that mints an amount of the token and assigns it to * an account. This encapsulates the modification of balances such that the * proper events are emitted. * @param account The account that will receive the created tokens. * @param value The amount that will be created. */ function _mint(address account, uint256 value) internal { require(account != address(0)); _totalSupply = _totalSupply.add(value); _balances[account] = _balances[account].add(value); emit Transfer(address(0), account, value); } /** * @dev Internal function that burns an amount of the token of a given * account. * @param account The account whose tokens will be burnt. * @param value The amount that will be burnt. */ function _burn(address account, uint256 value) internal { require(account != address(0)); _totalSupply = _totalSupply.sub(value); _balances[account] = _balances[account].sub(value); emit Transfer(account, address(0), value); } /** * @dev Internal function that burns an amount of the token of a given * account, deducting from the sender's allowance for said account. Uses the * internal burn function. * Emits an Approval event (reflecting the reduced allowance). * @param account The account whose tokens will be burnt. * @param value The amount that will be burnt. */ function _burnFrom(address account, uint256 value) internal { _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value); _burn(account, value); emit Approval(account, msg.sender, _allowed[account][msg.sender]); } } contract ERC20Pausable is ERC20, Pausable { 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) { return super.transferFrom(from, to, value); } /* * approve/increaseApprove/decreaseApprove can be set when Paused state */ /* * function approve(address spender, uint256 value) public whenNotPaused returns (bool) { * return super.approve(spender, value); * } * * function increaseAllowance(address spender, uint addedValue) public whenNotPaused returns (bool success) { * return super.increaseAllowance(spender, addedValue); * } * * function decreaseAllowance(address spender, uint subtractedValue) public whenNotPaused returns (bool success) { * return super.decreaseAllowance(spender, subtractedValue); * } */ } contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } /** * @return the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @return the symbol of the token. */ function symbol() public view returns (string memory) { return _symbol; } /** * @return the number of decimals of the token. */ function decimals() public view returns (uint8) { return _decimals; } } contract FPT is ERC20Detailed, ERC20Pausable { struct LockInfo { uint256 _releaseTime; uint256 _amount; } address public implementation; mapping (address => LockInfo[]) public timelockList; mapping (address => bool) public frozenAccount; event Freeze(address indexed holder); event Unfreeze(address indexed holder); event Lock(address indexed holder, uint256 value, uint256 releaseTime); event Unlock(address indexed holder, uint256 value); modifier notFrozen(address _holder) { require(!frozenAccount[_holder]); _; } constructor() ERC20Detailed("FUUPAY", "FPT", 18) public { _mint(msg.sender, 1000000000 * (10 ** 18)); } function balanceOf(address owner) public view returns (uint256) { uint256 totalBalance = super.balanceOf(owner); if( timelockList[owner].length >0 ){ for(uint i=0; i<timelockList[owner].length;i++){ totalBalance = totalBalance.add(timelockList[owner][i]._amount); } } return totalBalance; } function transfer(address to, uint256 value) public notFrozen(msg.sender) returns (bool) { if (timelockList[msg.sender].length > 0 ) { _autoUnlock(msg.sender); } return super.transfer(to, value); } function transferFrom(address from, address to, uint256 value) public notFrozen(from) returns (bool) { if (timelockList[from].length > 0) { _autoUnlock(from); } return super.transferFrom(from, to, value); } function freezeAccount(address holder) public onlyPauser returns (bool) { require(!frozenAccount[holder]); require(timelockList[holder].length == 0); frozenAccount[holder] = true; emit Freeze(holder); return true; } function unfreezeAccount(address holder) public onlyPauser returns (bool) { require(frozenAccount[holder]); frozenAccount[holder] = false; emit Unfreeze(holder); return true; } function transferWithLock(address holder, uint256 value, uint256 releaseTime) public onlyPauser returns (bool) { _transfer(msg.sender, holder, value); _lock(holder,value,releaseTime); return true; } function unlock(address holder, uint256 idx) public onlyPauser returns (bool) { require( timelockList[holder].length > idx, "There is not lock info."); _unlock(holder,idx); return true; } function _lock(address holder, uint256 value, uint256 releaseTime) internal returns(bool) { _balances[holder] = _balances[holder].sub(value); timelockList[holder].push( LockInfo(releaseTime, value) ); emit Lock(holder, value, releaseTime); return true; } function _unlock(address holder, uint256 idx) internal returns(bool) { LockInfo storage lockinfo = timelockList[holder][idx]; uint256 releaseAmount = lockinfo._amount; delete timelockList[holder][idx]; timelockList[holder][idx] = timelockList[holder][timelockList[holder].length.sub(1)]; timelockList[holder].length -=1; emit Unlock(holder, releaseAmount); _balances[holder] = _balances[holder].add(releaseAmount); return true; } function _autoUnlock(address holder) internal returns(bool) { for(uint256 idx =0; idx < timelockList[holder].length ; idx++ ) { if (timelockList[holder][idx]._releaseTime <= now) { // If lockupinfo was deleted, loop restart at same position. if( _unlock(holder, idx) ) { idx -=1; } } } return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unfreezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"unlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frozenAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"timelockList","outputs":[{"internalType":"uint256","name":"_releaseTime","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"freezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"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"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604080518082018252600681527f465555504159000000000000000000000000000000000000000000000000000060208083019182528351808501909452600384527f4650540000000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160009190620002d0565b508151620000a6906001906020850190620002d0565b506002805460ff191660ff92909216919091179055505060068054336001600160a01b03199182168117909255600780549091169055620000e79062000118565b6009805460ff1916905562000112336b033b2e3c9fd0803ce80000006001600160e01b036200016a16565b62000375565b620001338160086200022760201b620015731790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6001600160a01b0382166200017e57600080fd5b6200019a816005546200028060201b62000fdc1790919060201c565b6005556001600160a01b038216600090815260036020908152604090912054620001cf91839062000fdc62000280821b17901c565b6001600160a01b03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0381166200023b57600080fd5b6200025082826001600160e01b036200029a16565b156200025b57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200029357600080fd5b9392505050565b60006001600160a01b038216620002b057600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200031357805160ff191683800117855562000343565b8280016001018555821562000343579182015b828111156200034357825182559160200191906001019062000326565b506200035192915062000355565b5090565b6200037291905b808211156200035157600081556001016200035c565b90565b61165680620003856000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806379ba509711610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461056f578063de6baccb1461059d578063f26c159f146105cf578063f2fde38b146105f5576101da565b8063a9059cbb146104d0578063b414d4b6146104fc578063d26c4a7614610522578063d4ee1d9014610567576101da565b80638456cb59116100de5780638456cb591461048c5780638da5cb5b1461049457806395d89b411461049c578063a457c2d7146104a4576101da565b806379ba5097146104325780637eee288d1461043a57806382dc1ec414610466576101da565b80633f4ba83a1161017c5780636b2c0f551161014b5780636b2c0f55146103b85780636ef8d66d146103de57806370a08231146103e6578063788649ea1461040c576101da565b80633f4ba83a1461035c57806346fbf68e146103665780635c60da1b1461038c5780635c975abb146103b0576101da565b806323b872dd116101b857806323b872dd146102b65780632f54bf6e146102ec578063313ce567146103125780633950935114610330576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd1461029c575b600080fd5b6101e761061b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b0381351690602001356106b2565b604080519115158252519081900360200190f35b6102a461072e565b60408051918252519081900360200190f35b610288600480360360608110156102cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610734565b6102886004803603602081101561030257600080fd5b50356001600160a01b0316610799565b61031a6107c3565b6040805160ff9092168252519081900360200190f35b6102886004803603604081101561034657600080fd5b506001600160a01b0381351690602001356107cc565b61036461087a565b005b6102886004803603602081101561037c57600080fd5b50356001600160a01b03166108e9565b610394610902565b604080516001600160a01b039092168252519081900360200190f35b610288610916565b610364600480360360208110156103ce57600080fd5b50356001600160a01b031661091f565b610364610942565b6102a4600480360360208110156103fc57600080fd5b50356001600160a01b031661094d565b6102886004803603602081101561042257600080fd5b50356001600160a01b03166109f8565b610288610a8e565b6102886004803603604081101561045057600080fd5b506001600160a01b038135169060200135610b18565b6103646004803603602081101561047c57600080fd5b50356001600160a01b0316610bbb565b610364610be5565b610394610c58565b6101e7610c67565b610288600480360360408110156104ba57600080fd5b506001600160a01b038135169060200135610cc7565b610288600480360360408110156104e657600080fd5b506001600160a01b038135169060200135610d10565b6102886004803603602081101561051257600080fd5b50356001600160a01b0316610d62565b61054e6004803603604081101561053857600080fd5b506001600160a01b038135169060200135610d77565b6040805192835260208301919091528051918290030190f35b610394610db0565b6102a46004803603604081101561058557600080fd5b506001600160a01b0381358116916020013516610dbf565b610288600480360360608110156105b357600080fd5b506001600160a01b038135169060208101359060400135610dea565b610288600480360360208110156105e557600080fd5b50356001600160a01b0316610e2e565b6103646004803603602081101561060b57600080fd5b50356001600160a01b0316610eeb565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b505050505090505b90565b60006001600160a01b0383166106c757600080fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60055490565b6001600160a01b0383166000908152600b6020526040812054849060ff161561075c57600080fd5b6001600160a01b0385166000908152600a6020526040902054156107855761078385610f37565b505b610790858585610fbe565b95945050505050565b6006546000906001600160a01b03838116911614156107ba575060016107be565b5060005b919050565b60025460ff1690565b60006001600160a01b0383166107e157600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610815908363ffffffff610fdc16565b3360008181526004602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b610883336108e9565b80610892575061089233610799565b61089b57600080fd5b60095460ff166108aa57600080fd5b6009805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60006108fc60088363ffffffff610ff516565b92915050565b60095461010090046001600160a01b031681565b60095460ff1690565b6006546001600160a01b0316331461093657600080fd5b61093f8161102a565b50565b61094b3361102a565b565b60008061095983611072565b6001600160a01b0384166000908152600a6020526040902054909150156108fc5760005b6001600160a01b0384166000908152600a60205260409020548110156109f1576001600160a01b0384166000908152600a6020526040902080546109e79190839081106109c657fe5b90600052602060002090600202016001015483610fdc90919063ffffffff16565b915060010161097d565b5092915050565b6000610a03336108e9565b80610a125750610a1233610799565b610a1b57600080fd5b6001600160a01b0382166000908152600b602052604090205460ff16610a4057600080fd5b6001600160a01b0382166000818152600b6020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b600033610a9a57600080fd5b6007546001600160a01b03163314610ab157600080fd5b6007546006546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600680546001600160a01b03199081166001600160a01b0384161790915516905590565b6000610b23336108e9565b80610b325750610b3233610799565b610b3b57600080fd5b6001600160a01b0383166000908152600a60205260409020548210610ba7576040805162461bcd60e51b815260206004820152601760248201527f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000604482015290519081900360640190fd5b610bb1838361108d565b5060019392505050565b610bc4336108e9565b80610bd35750610bd333610799565b610bdc57600080fd5b61093f81611256565b610bee336108e9565b80610bfd5750610bfd33610799565b610c0657600080fd5b60095460ff1615610c1657600080fd5b6009805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6006546001600160a01b031681565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b60006001600160a01b038316610cdc57600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610815908363ffffffff61129e16565b336000818152600b602052604081205490919060ff1615610d3057600080fd5b336000908152600a602052604090205415610d5057610d4e33610f37565b505b610d5a84846112b3565b949350505050565b600b6020526000908152604090205460ff1681565b600a6020528160005260406000208181548110610d9057fe5b600091825260209091206002909102018054600190910154909250905082565b6007546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6000610df5336108e9565b80610e045750610e0433610799565b610e0d57600080fd5b610e183385856112d0565b610e2384848461139d565b506001949350505050565b6000610e39336108e9565b80610e485750610e4833610799565b610e5157600080fd5b6001600160a01b0382166000908152600b602052604090205460ff1615610e7757600080fd5b6001600160a01b0382166000908152600a602052604090205415610e9a57600080fd5b6001600160a01b0382166000818152600b6020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b6006546001600160a01b03163314610f0257600080fd5b6001600160a01b038116610f1557600080fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000805b6001600160a01b0383166000908152600a6020526040902054811015610fb5576001600160a01b0383166000908152600a60205260409020805442919083908110610f8257fe5b90600052602060002090600202016000015411610fad57610fa3838261108d565b15610fad57600019015b600101610f3b565b50600192915050565b60095460009060ff1615610fd157600080fd5b610d5a848484611462565b600082820183811015610fee57600080fd5b9392505050565b60006001600160a01b03821661100a57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61103b60088263ffffffff61152b16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600a602052604081208054829190849081106110b457fe5b600091825260208083206001600290930201918201546001600160a01b0388168452600a9091526040909220805491935090859081106110f057fe5b60009182526020808320600290920290910182815560019081018390556001600160a01b0388168352600a909152604090912080549091611137919063ffffffff61129e16565b8154811061114157fe5b9060005260206000209060020201600a6000876001600160a01b03166001600160a01b03168152602001908152602001600020858154811061117f57fe5b60009182526020808320845460029093020191825560019384015493909101929092556001600160a01b0387168152600a90915260409020805460001901906111c890826115cc565b506040805182815290516001600160a01b038716917f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1919081900360200190a26001600160a01b038516600090815260036020526040902054611231908263ffffffff610fdc16565b6001600160a01b03861660009081526003602052604090205550600191505092915050565b61126760088263ffffffff61157316565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000828211156112ad57600080fd5b50900390565b60095460009060ff16156112c657600080fd5b610fee83836115bf565b6001600160a01b0382166112e357600080fd5b6001600160a01b03831660009081526003602052604090205461130c908263ffffffff61129e16565b6001600160a01b038085166000908152600360205260408082209390935590841681522054611341908263ffffffff610fdc16565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b0383166000908152600360205260408120546113c6908463ffffffff61129e16565b6001600160a01b038516600081815260036020908152604080832094909455600a8152838220845180860186528781528083018981528254600181810185559386529484902091516002909502909101938455519201919091558251868152908101859052825191927f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b92918290030190a25060019392505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054611496908363ffffffff61129e16565b6001600160a01b03851660009081526004602090815260408083203384529091529020556114c58484846112d0565b6001600160a01b0384166000818152600460209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6001600160a01b03811661153e57600080fd5b6115488282610ff5565b61155157600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03811661158657600080fd5b6115908282610ff5565b1561159a57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000610fb53384846112d0565b8154818355818111156115f8576002028160020283600052602060002091820191016115f891906115fd565b505050565b6106af91905b8082111561161d5760008082556001820155600201611603565b509056fea265627a7a723158203a082ac4b1a5f1d1025d5315c1a32a4f6e8ab189cd85854b33f3d3511330d8ea64736f6c634300050b0032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c806379ba509711610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461056f578063de6baccb1461059d578063f26c159f146105cf578063f2fde38b146105f5576101da565b8063a9059cbb146104d0578063b414d4b6146104fc578063d26c4a7614610522578063d4ee1d9014610567576101da565b80638456cb59116100de5780638456cb591461048c5780638da5cb5b1461049457806395d89b411461049c578063a457c2d7146104a4576101da565b806379ba5097146104325780637eee288d1461043a57806382dc1ec414610466576101da565b80633f4ba83a1161017c5780636b2c0f551161014b5780636b2c0f55146103b85780636ef8d66d146103de57806370a08231146103e6578063788649ea1461040c576101da565b80633f4ba83a1461035c57806346fbf68e146103665780635c60da1b1461038c5780635c975abb146103b0576101da565b806323b872dd116101b857806323b872dd146102b65780632f54bf6e146102ec578063313ce567146103125780633950935114610330576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd1461029c575b600080fd5b6101e761061b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b0381351690602001356106b2565b604080519115158252519081900360200190f35b6102a461072e565b60408051918252519081900360200190f35b610288600480360360608110156102cc57600080fd5b506001600160a01b03813581169160208101359091169060400135610734565b6102886004803603602081101561030257600080fd5b50356001600160a01b0316610799565b61031a6107c3565b6040805160ff9092168252519081900360200190f35b6102886004803603604081101561034657600080fd5b506001600160a01b0381351690602001356107cc565b61036461087a565b005b6102886004803603602081101561037c57600080fd5b50356001600160a01b03166108e9565b610394610902565b604080516001600160a01b039092168252519081900360200190f35b610288610916565b610364600480360360208110156103ce57600080fd5b50356001600160a01b031661091f565b610364610942565b6102a4600480360360208110156103fc57600080fd5b50356001600160a01b031661094d565b6102886004803603602081101561042257600080fd5b50356001600160a01b03166109f8565b610288610a8e565b6102886004803603604081101561045057600080fd5b506001600160a01b038135169060200135610b18565b6103646004803603602081101561047c57600080fd5b50356001600160a01b0316610bbb565b610364610be5565b610394610c58565b6101e7610c67565b610288600480360360408110156104ba57600080fd5b506001600160a01b038135169060200135610cc7565b610288600480360360408110156104e657600080fd5b506001600160a01b038135169060200135610d10565b6102886004803603602081101561051257600080fd5b50356001600160a01b0316610d62565b61054e6004803603604081101561053857600080fd5b506001600160a01b038135169060200135610d77565b6040805192835260208301919091528051918290030190f35b610394610db0565b6102a46004803603604081101561058557600080fd5b506001600160a01b0381358116916020013516610dbf565b610288600480360360608110156105b357600080fd5b506001600160a01b038135169060208101359060400135610dea565b610288600480360360208110156105e557600080fd5b50356001600160a01b0316610e2e565b6103646004803603602081101561060b57600080fd5b50356001600160a01b0316610eeb565b60008054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b505050505090505b90565b60006001600160a01b0383166106c757600080fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60055490565b6001600160a01b0383166000908152600b6020526040812054849060ff161561075c57600080fd5b6001600160a01b0385166000908152600a6020526040902054156107855761078385610f37565b505b610790858585610fbe565b95945050505050565b6006546000906001600160a01b03838116911614156107ba575060016107be565b5060005b919050565b60025460ff1690565b60006001600160a01b0383166107e157600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610815908363ffffffff610fdc16565b3360008181526004602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b610883336108e9565b80610892575061089233610799565b61089b57600080fd5b60095460ff166108aa57600080fd5b6009805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60006108fc60088363ffffffff610ff516565b92915050565b60095461010090046001600160a01b031681565b60095460ff1690565b6006546001600160a01b0316331461093657600080fd5b61093f8161102a565b50565b61094b3361102a565b565b60008061095983611072565b6001600160a01b0384166000908152600a6020526040902054909150156108fc5760005b6001600160a01b0384166000908152600a60205260409020548110156109f1576001600160a01b0384166000908152600a6020526040902080546109e79190839081106109c657fe5b90600052602060002090600202016001015483610fdc90919063ffffffff16565b915060010161097d565b5092915050565b6000610a03336108e9565b80610a125750610a1233610799565b610a1b57600080fd5b6001600160a01b0382166000908152600b602052604090205460ff16610a4057600080fd5b6001600160a01b0382166000818152600b6020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b600033610a9a57600080fd5b6007546001600160a01b03163314610ab157600080fd5b6007546006546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600680546001600160a01b03199081166001600160a01b0384161790915516905590565b6000610b23336108e9565b80610b325750610b3233610799565b610b3b57600080fd5b6001600160a01b0383166000908152600a60205260409020548210610ba7576040805162461bcd60e51b815260206004820152601760248201527f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000604482015290519081900360640190fd5b610bb1838361108d565b5060019392505050565b610bc4336108e9565b80610bd35750610bd333610799565b610bdc57600080fd5b61093f81611256565b610bee336108e9565b80610bfd5750610bfd33610799565b610c0657600080fd5b60095460ff1615610c1657600080fd5b6009805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6006546001600160a01b031681565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b60006001600160a01b038316610cdc57600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610815908363ffffffff61129e16565b336000818152600b602052604081205490919060ff1615610d3057600080fd5b336000908152600a602052604090205415610d5057610d4e33610f37565b505b610d5a84846112b3565b949350505050565b600b6020526000908152604090205460ff1681565b600a6020528160005260406000208181548110610d9057fe5b600091825260209091206002909102018054600190910154909250905082565b6007546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6000610df5336108e9565b80610e045750610e0433610799565b610e0d57600080fd5b610e183385856112d0565b610e2384848461139d565b506001949350505050565b6000610e39336108e9565b80610e485750610e4833610799565b610e5157600080fd5b6001600160a01b0382166000908152600b602052604090205460ff1615610e7757600080fd5b6001600160a01b0382166000908152600a602052604090205415610e9a57600080fd5b6001600160a01b0382166000818152600b6020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b6006546001600160a01b03163314610f0257600080fd5b6001600160a01b038116610f1557600080fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000805b6001600160a01b0383166000908152600a6020526040902054811015610fb5576001600160a01b0383166000908152600a60205260409020805442919083908110610f8257fe5b90600052602060002090600202016000015411610fad57610fa3838261108d565b15610fad57600019015b600101610f3b565b50600192915050565b60095460009060ff1615610fd157600080fd5b610d5a848484611462565b600082820183811015610fee57600080fd5b9392505050565b60006001600160a01b03821661100a57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61103b60088263ffffffff61152b16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600a602052604081208054829190849081106110b457fe5b600091825260208083206001600290930201918201546001600160a01b0388168452600a9091526040909220805491935090859081106110f057fe5b60009182526020808320600290920290910182815560019081018390556001600160a01b0388168352600a909152604090912080549091611137919063ffffffff61129e16565b8154811061114157fe5b9060005260206000209060020201600a6000876001600160a01b03166001600160a01b03168152602001908152602001600020858154811061117f57fe5b60009182526020808320845460029093020191825560019384015493909101929092556001600160a01b0387168152600a90915260409020805460001901906111c890826115cc565b506040805182815290516001600160a01b038716917f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1919081900360200190a26001600160a01b038516600090815260036020526040902054611231908263ffffffff610fdc16565b6001600160a01b03861660009081526003602052604090205550600191505092915050565b61126760088263ffffffff61157316565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6000828211156112ad57600080fd5b50900390565b60095460009060ff16156112c657600080fd5b610fee83836115bf565b6001600160a01b0382166112e357600080fd5b6001600160a01b03831660009081526003602052604090205461130c908263ffffffff61129e16565b6001600160a01b038085166000908152600360205260408082209390935590841681522054611341908263ffffffff610fdc16565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b0383166000908152600360205260408120546113c6908463ffffffff61129e16565b6001600160a01b038516600081815260036020908152604080832094909455600a8152838220845180860186528781528083018981528254600181810185559386529484902091516002909502909101938455519201919091558251868152908101859052825191927f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b92918290030190a25060019392505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054611496908363ffffffff61129e16565b6001600160a01b03851660009081526004602090815260408083203384529091529020556114c58484846112d0565b6001600160a01b0384166000818152600460209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6001600160a01b03811661153e57600080fd5b6115488282610ff5565b61155157600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03811661158657600080fd5b6115908282610ff5565b1561159a57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000610fb53384846112d0565b8154818355818111156115f8576002028160020283600052602060002091820191016115f891906115fd565b505050565b6106af91905b8082111561161d5760008082556001820155600201611603565b509056fea265627a7a723158203a082ac4b1a5f1d1025d5315c1a32a4f6e8ab189cd85854b33f3d3511330d8ea64736f6c634300050b0032
Deployed Bytecode Sourcemap
15655:3999:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15655:3999:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15249:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15249:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8864:244;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8864:244:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7023:91;;;:::i;:::-;;;;;;;;;;;;;;;;17102:263;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17102:263:0;;;;;;;;;;;;;;;;;:::i;3266:193::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3266:193:0;-1:-1:-1;;;;;3266:193:0;;:::i;15565:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10395:323;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10395:323:0;;;;;;;;:::i;5929:118::-;;;:::i;:::-;;4211:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4211:109:0;-1:-1:-1;;;;;4211:109:0;;:::i;15806:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;15806:29:0;;;;;;;;;;;;;;5182:78;;;:::i;4432:97::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4432:97:0;-1:-1:-1;;;;;4432:97:0;;:::i;4537:77::-;;;:::i;16434:394::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16434:394:0;-1:-1:-1;;;;;16434:394:0;;:::i;17650:217::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17650:217:0;-1:-1:-1;;;;;17650:217:0;;:::i;3620:189::-;;;:::i;18121:219::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18121:219:0;;;;;;;;:::i;4328:92::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4328:92:0;-1:-1:-1;;;;;4328:92:0;;:::i;5718:116::-;;;:::i;2789:20::-;;;:::i;15399:87::-;;;:::i;11238:333::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11238:333:0;;;;;;;;:::i;16840:254::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16840:254:0;;;;;;;;:::i;15899:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15899:46:0;-1:-1:-1;;;;;15899:46:0;;:::i;15844:51::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15844:51:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2816:23;;;:::i;7775:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7775:131:0;;;;;;;;;;:::i;17879:230::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17879:230:0;;;;;;;;;;;;;:::i;17377:265::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17377:265:0;-1:-1:-1;;;;;17377:265:0;;:::i;3467:145::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3467:145:0;-1:-1:-1;;;;;3467:145:0;;:::i;15249:83::-;15319:5;15312:12;;;;;;;;-1:-1:-1;;15312:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15286:13;;15312:12;;15319:5;;15312:12;;15319:5;15312:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15249:83;;:::o;8864:244::-;8929:4;-1:-1:-1;;;;;8954:21:0;;8946:30;;;;;;8998:10;8989:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;8989:29:0;;;;;;;;;;;;:37;;;9042:36;;;;;;;8989:29;;8998:10;9042:36;;;;;;;;;;;-1:-1:-1;9096:4:0;8864:244;;;;:::o;7023:91::-;7094:12;;7023:91;:::o;17102:263::-;-1:-1:-1;;;;;16239:22:0;;17197:4;16239:22;;;:13;:22;;;;;;17182:4;;16239:22;;16238:23;16230:32;;;;;;-1:-1:-1;;;;;17218:18:0;;17246:1;17218:18;;;:12;:18;;;;;:25;:29;17214:91;;17264:17;17276:4;17264:11;:17::i;:::-;;17214:91;17322:35;17341:4;17347:2;17351:5;17322:18;:35::i;:::-;17315:42;17102:263;-1:-1:-1;;;;;17102:263:0:o;3266:193::-;3353:5;;3321:4;;-1:-1:-1;;;;;3342:16:0;;;3353:5;;3342:16;3338:114;;;-1:-1:-1;3382:4:0;3375:11;;3338:114;-1:-1:-1;3435:5:0;3338:114;3266:193;;;:::o;15565:83::-;15631:9;;;;15565:83;:::o;10395:323::-;10475:4;-1:-1:-1;;;;;10500:21:0;;10492:30;;;;;;10576:10;10567:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;10567:29:0;;;;;;;;;;:45;;10601:10;10567:45;:33;:45;:::i;:::-;10544:10;10535:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;10535:29:0;;;;;;;;;;;;:77;;;10628:60;;;;;;10535:29;;10628:60;;;;;;;;;;;-1:-1:-1;10706:4:0;10395:323;;;;:::o;5929:118::-;4140:20;4149:10;4140:8;:20::i;:::-;:42;;;;4163:19;4171:10;4163:7;:19::i;:::-;4132:51;;;;;;5598:7;;;;5590:16;;;;;;5988:7;:15;;-1:-1:-1;;5988:15:0;;;6019:20;;;6028:10;6019:20;;;;;;;;;;;;;5929:118::o;4211:109::-;4267:4;4291:21;:8;4304:7;4291:21;:12;:21;:::i;:::-;4284:28;4211:109;-1:-1:-1;;4211:109:0:o;15806:29::-;;;;;;-1:-1:-1;;;;;15806:29:0;;:::o;5182:78::-;5245:7;;;;5182:78;:::o;4432:97::-;3092:5;;-1:-1:-1;;;;;3092:5:0;3078:10;:19;3070:28;;;;;;4499:22;4513:7;4499:13;:22::i;:::-;4432:97;:::o;4537:77::-;4581:25;4595:10;4581:13;:25::i;:::-;4537:77::o;16434:394::-;16489:7;16519:20;16542:22;16558:5;16542:15;:22::i;:::-;-1:-1:-1;;;;;16579:19:0;;16607:1;16579:19;;;:12;:19;;;;;:26;16519:45;;-1:-1:-1;16579:29:0;16575:206;;16629:6;16625:145;-1:-1:-1;;;;;16641:19:0;;;;;;:12;:19;;;;;:26;16639:28;;16625:145;;;-1:-1:-1;;;;;16723:19:0;;;;;;:12;:19;;;;;:22;;16706:48;;16723:19;16743:1;;16723:22;;;;;;;;;;;;;;;;:30;;;16706:12;:16;;:48;;;;:::i;:::-;16691:63;-1:-1:-1;16668:3:0;;16625:145;;;;16808:12;16434:394;-1:-1:-1;;16434:394:0:o;17650:217::-;17718:4;4140:20;4149:10;4140:8;:20::i;:::-;:42;;;;4163:19;4171:10;4163:7;:19::i;:::-;4132:51;;;;;;-1:-1:-1;;;;;17743:21:0;;;;;;:13;:21;;;;;;;;17735:30;;;;;;-1:-1:-1;;;;;17776:21:0;;17800:5;17776:21;;;:13;:21;;;;;;:29;;-1:-1:-1;;17776:29:0;;;17821:16;;;17800:5;17821:16;-1:-1:-1;17855:4:0;17650:217;;;:::o;3620:189::-;3675:4;3167:10;3159:33;;;;;;3225:8;;-1:-1:-1;;;;;3225:8:0;3211:10;:22;3203:31;;;;;;3725:8;;3718:5;;3697:37;;-1:-1:-1;;;;;3725:8:0;;;;3718:5;;;;3697:37;;3725:8;;3697:37;3761:8;;;3753:5;:16;;-1:-1:-1;;;;;;3753:16:0;;;-1:-1:-1;;;;;3761:8:0;;3753:16;;;;3780:21;;;3620:189;:::o;18121:219::-;18193:4;4140:20;4149:10;4140:8;:20::i;:::-;:42;;;;4163:19;4171:10;4163:7;:19::i;:::-;4132:51;;;;;;-1:-1:-1;;;;;18219:20:0;;;;;;:12;:20;;;;;:27;:33;-1:-1:-1;18210:70:0;;;;;-1:-1:-1;;;18210:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18291:19;18299:6;18306:3;18291:7;:19::i;:::-;-1:-1:-1;18328:4:0;;18121:219;-1:-1:-1;;;18121:219:0:o;4328:92::-;4140:20;4149:10;4140:8;:20::i;:::-;:42;;;;4163:19;4171:10;4163:7;:19::i;:::-;4132:51;;;;;;4393:19;4404:7;4393:10;:19::i;5718:116::-;4140:20;4149:10;4140:8;:20::i;:::-;:42;;;;4163:19;4171:10;4163:7;:19::i;:::-;4132:51;;;;;;5419:7;;;;5418:8;5410:17;;;;;;5778:7;:14;;-1:-1:-1;;5778:14:0;5788:4;5778:14;;;5808:18;;;5815:10;5808:18;;;;;;;;;;;;;5718:116::o;2789:20::-;;;-1:-1:-1;;;;;2789:20:0;;:::o;15399:87::-;15471:7;15464:14;;;;;;;;-1:-1:-1;;15464:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15438:13;;15464:14;;15471:7;;15464:14;;15471:7;15464:14;;;;;;;;;;;;;;;;;;;;;;;;11238:333;11323:4;-1:-1:-1;;;;;11348:21:0;;11340:30;;;;;;11424:10;11415:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;11415:29:0;;;;;;;;;;:50;;11449:15;11415:50;:33;:50;:::i;16840:254::-;16902:10;16923:4;16239:22;;;:13;:22;;;;;;16923:4;;16902:10;16239:22;;16238:23;16230:32;;;;;;16957:10;16978:1;16944:24;;;:12;:24;;;;;:31;:35;16940:104;;16997:23;17009:10;16997:11;:23::i;:::-;;16940:104;17061:25;17076:2;17080:5;17061:14;:25::i;:::-;17054:32;16840:254;-1:-1:-1;;;;16840:254:0:o;15899:46::-;;;;;;;;;;;;;;;:::o;15844:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15844:51:0;-1:-1:-1;15844:51:0;:::o;2816:23::-;;;-1:-1:-1;;;;;2816:23:0;;:::o;7775:131::-;-1:-1:-1;;;;;7874:15:0;;;7847:7;7874:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;7775:131::o;17879:230::-;17984:4;4140:20;4149:10;4140:8;:20::i;:::-;:42;;;;4163:19;4171:10;4163:7;:19::i;:::-;4132:51;;;;;;18001:36;18011:10;18023:6;18031:5;18001:9;:36::i;:::-;18048:31;18054:6;18061:5;18067:11;18048:5;:31::i;:::-;-1:-1:-1;18097:4:0;;17879:230;-1:-1:-1;;;;17879:230:0:o;17377:265::-;17443:4;4140:20;4149:10;4140:8;:20::i;:::-;:42;;;;4163:19;4171:10;4163:7;:19::i;:::-;4132:51;;;;;;-1:-1:-1;;;;;17469:21:0;;;;;;:13;:21;;;;;;;;17468:22;17460:31;;;;;;-1:-1:-1;;;;;17510:20:0;;;;;;:12;:20;;;;;:27;:32;17502:41;;;;;;-1:-1:-1;;;;;17554:21:0;;;;;;:13;:21;;;;;;:28;;-1:-1:-1;;17554:28:0;17578:4;17554:28;;;17598:14;;;17554:21;17598:14;-1:-1:-1;17630:4:0;17377:265;;;:::o;3467:145::-;3092:5;;-1:-1:-1;;;;;3092:5:0;3078:10;:19;3070:28;;;;;;-1:-1:-1;;;;;3549:23:0;;3541:32;;;;;;3584:8;:20;;-1:-1:-1;;;;;;3584:20:0;-1:-1:-1;;;;;3584:20:0;;;;;;;;;;3467:145::o;19215:430::-;19269:4;;19286:330;-1:-1:-1;;;;;19312:20:0;;;;;;:12;:20;;;;;:27;19306:33;;19286:330;;;-1:-1:-1;;;;;19369:20:0;;;;;;:12;:20;;;;;:25;;19411:3;;19369:20;19390:3;;19369:25;;;;;;;;;;;;;;;;:38;;;:45;19365:240;;19517:20;19525:6;19533:3;19517:7;:20::i;:::-;19513:77;;;-1:-1:-1;;19563:7:0;19513:77;19342:5;;19286:330;;;-1:-1:-1;19633:4:0;;19215:430;-1:-1:-1;;19215:430:0:o;14037:160::-;5419:7;;14130:4;;5419:7;;5418:8;5410:17;;;;;;14154:35;14173:4;14179:2;14183:5;14154:18;:35::i;1447:150::-;1505:7;1537:5;;;1561:6;;;;1553:15;;;;;;1588:1;1447:150;-1:-1:-1;;;1447:150:0:o;2593:165::-;2665:4;-1:-1:-1;;;;;2690:21:0;;2682:30;;;;;;-1:-1:-1;;;;;;2730:20:0;:11;:20;;;;;;;;;;;;;;;2593:165::o;4752:130::-;4812:24;:8;4828:7;4812:24;:15;:24;:::i;:::-;4852:22;;-1:-1:-1;;;;;4852:22:0;;;;;;;;4752:130;:::o;7330:106::-;-1:-1:-1;;;;;7412:16:0;7385:7;7412:16;;;:9;:16;;;;;;;7330:106::o;18675:528::-;-1:-1:-1;;;;;18783:20:0;;18738:4;18783:20;;;:12;:20;;;;;:25;;18738:4;;18783:20;18804:3;;18783:25;;;;;;;;;;;;;;18843:16;18783:25;;;;;18843:16;;;;-1:-1:-1;;;;;18879:20:0;;;;:12;:20;;;;;;;:25;;18783;;-1:-1:-1;18879:20:0;18900:3;;18879:25;;;;;;;;;;;;;;;;;;;;;18872:32;;;;;;;;;;-1:-1:-1;;;;;18943:20:0;;;;:12;:20;;;;;;;18964:27;;18943:20;;18964:34;;:27;:34;:31;:34;:::i;:::-;18943:56;;;;;;;;;;;;;;;;;;18915:12;:20;18928:6;-1:-1:-1;;;;;18915:20:0;-1:-1:-1;;;;;18915:20:0;;;;;;;;;;;;18936:3;18915:25;;;;;;;;;;;;;;;;:84;;:25;;;;;:84;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19010:20:0;;;;:12;:20;;;;;;:31;;-1:-1:-1;;19010:31:0;;;;;;:::i;:::-;-1:-1:-1;19067:29:0;;;;;;;;-1:-1:-1;;;;;19067:29:0;;;;;;;;;;;;;-1:-1:-1;;;;;19127:17:0;;;;;;:9;:17;;;;;;:36;;19149:13;19127:36;:21;:36;:::i;:::-;-1:-1:-1;;;;;19107:17:0;;;;;;:9;:17;;;;;:56;-1:-1:-1;19191:4:0;;-1:-1:-1;;18675:528:0;;;;:::o;4622:122::-;4679:21;:8;4692:7;4679:21;:12;:21;:::i;:::-;4716:20;;-1:-1:-1;;;;;4716:20:0;;;;;;;;4622:122;:::o;1211:150::-;1269:7;1302:1;1297;:6;;1289:15;;;;;;-1:-1:-1;1327:5:0;;;1211:150::o;13897:132::-;5419:7;;13972:4;;5419:7;;5418:8;5410:17;;;;;;13996:25;14011:2;14015:5;13996:14;:25::i;11793:262::-;-1:-1:-1;;;;;11881:16:0;;11873:25;;;;;;-1:-1:-1;;;;;11929:15:0;;;;;;:9;:15;;;;;;:26;;11949:5;11929:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;11911:15:0;;;;;;;:9;:15;;;;;;:44;;;;11982:13;;;;;;;:24;;12000:5;11982:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;11966:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;12022:25;;;;;;;11966:13;;12022:25;;;;;;;;;;;;;11793:262;;;:::o;18358:305::-;-1:-1:-1;;;;;18479:17:0;;18442:4;18479:17;;;:9;:17;;;;;;:28;;18501:5;18479:28;:21;:28;:::i;:::-;-1:-1:-1;;;;;18459:17:0;;;;;;:9;:17;;;;;;;;:48;;;;18518:12;:20;;;;;18545:28;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;18518:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;18601:32;;;;;;;;;;;;;18459:17;;18601:32;;;;;;;;;-1:-1:-1;18651:4:0;18358:305;;;;;:::o;9581:299::-;-1:-1:-1;;;;;9706:14:0;;9660:4;9706:14;;;:8;:14;;;;;;;;9721:10;9706:26;;;;;;;;:37;;9737:5;9706:37;:30;:37;:::i;:::-;-1:-1:-1;;;;;9677:14:0;;;;;;:8;:14;;;;;;;;9692:10;9677:26;;;;;;;:66;9754:26;9686:4;9770:2;9774:5;9754:9;:26::i;:::-;-1:-1:-1;;;;;9796:54:0;;9823:14;;;;:8;:14;;;;;;;;9811:10;9823:26;;;;;;;;;;;9796:54;;;;;;;9811:10;;9796:54;;;;;;;;;;;;-1:-1:-1;9868:4:0;9581:299;;;;;:::o;2310:189::-;-1:-1:-1;;;;;2390:21:0;;2382:30;;;;;;2431:18;2435:4;2441:7;2431:3;:18::i;:::-;2423:27;;;;;;-1:-1:-1;;;;;2463:20:0;2486:5;2463:20;;;;;;;;;;;:28;;-1:-1:-1;;2463:28:0;;;2310:189::o;2045:186::-;-1:-1:-1;;;;;2122:21:0;;2114:30;;;;;;2164:18;2168:4;2174:7;2164:3;:18::i;:::-;2163:19;2155:28;;;;;;-1:-1:-1;;;;;2196:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;2196:27:0;2219:4;2196:27;;;2045:186::o;8077:140::-;8138:4;8155:32;8165:10;8177:2;8181:5;8155:9;:32::i;15655:3999::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://3a082ac4b1a5f1d1025d5315c1a32a4f6e8ab189cd85854b33f3d3511330d8ea
Loading...
Loading
Loading...
Loading
OVERVIEW
The FUUPAY project focuses on the payment settlement market to promote feasibility, profitability and sustainable growth.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.