ERC-20
Source Code
Overview
Max Total Supply
1,000,000,000 CNY
Holders
1
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
CanaryCoin
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
/*
Because sometimes 'Production' is just another phrase for 'Our Largest Beta Test!' - Canary
Welcome to Canary - where a splash of humor meets a surge of innovation!
Designed with a twinkle in our eyes and a robust roadmap in our hands, Canary is not your everyday meme Coin.
It's a hilariously serious, technology-driven mechanism to pre-test our next big product.
Canary Coin embodies our philosophy that there's nothing quite as thrilling - or informative - as testing in live production.
Backed by a myriad of robust features, our Coin doesn't just chirp; it sings tunes of progress, foresight, and unorthodox strategy.
After all, if you're going to fail, why not fail fast, iterate faster, and have a hearty laugh along the way?
The biggest production stage in the world is waiting for us - let's embrace the chaos with Canary!
Telegram: https://t.me/CanaryCoin
Features:
- Launch protection
- Base Buy/Sell tax: 5%
- MaxTx: 1%
- MaxWallet: 2%
- Trade tax: 0% (Between wallets)
- Enable/Disable Base tax (For marketing and promotions)
- RenounceOwnership
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@
@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@
@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@
@@@@@@@,,,,,,,,,,,,,,,,@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@
@@@@@,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,@@@@
@@@@,,,,,,,,,,,,@@@@@@@@@@@@,,,@@@@@#,,,,,,,,,,,,,,,,,,,,,,,,@@@
@@@,,,,,,,,,,,@@@@@@@@@@@@@@,,,@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,@@
@@,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,@
@,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@/,,,,,,,,,,,,,,,,,,,,,,,,,,
@,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,
@,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,
@,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,
@,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,@
@@,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,@
@@@,,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,@@
@@@@#,,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,@@@@
@@@@@@,,,,,,,,,,,,,,(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@,,,,,,,,,,,,,,,,,(@@@@@@@@@@@@@,,,,,,@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@
*/
pragma solidity 0.8.19;
//CAUTION
//This version of SafeMath should only be used with Solidity 0.8 or later,
//because it relies on the compiler's built in overflow checks.
//https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/SafeMath.sol
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
//https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
//https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
_transferOwnership(_msgSender());
}
modifier onlyOwner() {
_checkOwner();
_;
}
function owner() public view virtual returns (address) {
return _owner;
}
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
//https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount)external returns (bool);
function allowance(address owner, address spender)external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender,address recipient,uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner,address indexed spender,uint256 value);
}
//https://github.com/Uniswap/v2-core/blob/master/contracts/interfaces/IUniswapV2Factory.sol
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
//https://github.com/Uniswap/v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router02.sol
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
contract CanaryCoin is IERC20, Ownable {
using SafeMath for uint256;
string private _name = "Canary";
string private _symbol = "CNY";
uint8 private _decimals = 18;
mapping(address => uint256) internal _balances;
mapping(address => mapping(address => uint256)) internal _allowances;
uint256 internal _totalSupply = 1000000000*10**18;
uint256 public _maxTxAmount = 10000000*10**18; //1%
uint256 public _maxWalletSize = 20000000*10**18; //2%
mapping(address => bool) private isExcludedFromTax;
uint256 public _buyTax = 500; // 5%
uint256 public _sellTax = 500; // 5%
address public taxWallet = 0xa0e230B8E6A2E0b8a0D4C57a78C3D7e9D7dAA2e3; //Tax wallet
uint256 public tradingStartTime;
address private uniswapV2Pair;
bool private tradingOpen;
IUniswapV2Router02 private uniswapV2Router;
bool private swapEnabled = false;
bool private taxEnabled = true;
uint256 public _inbetweenTax_ = 0; // 0%
uint256 public _buyTaxTotal;
uint256 public _sellTaxTotal;
uint256 public _inbetweenTaxTotal;
constructor() {
isExcludedFromTax[msg.sender] = true;
isExcludedFromTax[address(this)] = true;
isExcludedFromTax[taxWallet] = true; //Add multiple times with different wallets that need to be excluded.
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public override view returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public override view returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public override virtual returns (bool) {
_transfer(msg.sender,recipient,amount);
return true;
}
function allowance(address owner, address spender) public override view returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override virtual returns (bool) {
_transfer(sender,recipient,amount);
_approve(sender,msg.sender,_allowances[sender][msg.sender].sub( amount,"ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
//Transfer transactions
function _transfer(address sender, address recipient, uint256 amount) private {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
require(balanceOf(recipient) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
uint256 transferAmount = amount;
if(taxEnabled){
updateTaxRate();
if(isExcludedFromTax[sender] && isExcludedFromTax[recipient]){
transferAmount = amount;
}
if(!isExcludedFromTax[sender] && !isExcludedFromTax[recipient]){
transferAmount = betweenTax(sender,amount);
}
if(isExcludedFromTax[sender] && !isExcludedFromTax[recipient]){
transferAmount = BuyTax(sender,amount);
}
if(!isExcludedFromTax[sender] && isExcludedFromTax[recipient]){
transferAmount = SellTax(sender,amount);
}
}
_balances[sender] = _balances[sender].sub(amount);
_balances[recipient] = _balances[recipient].add(transferAmount);
emit Transfer(sender, recipient, transferAmount);
}
//Buy tax on transactions
function BuyTax(address account, uint256 amount) private returns (uint256) {
uint256 transferAmount = amount;
uint256 buyTax = amount.mul(_buyTax).div(10000); //amount * 500 / 10000 = 5% base tax
if(buyTax > 0){
transferAmount = transferAmount.sub(buyTax);
_balances[address(taxWallet)] = _balances[address(taxWallet)].add(buyTax);
_buyTaxTotal = _buyTaxTotal.add(buyTax);
emit Transfer(account,address(taxWallet),buyTax);
}
return transferAmount;
}
//Sell tax on transactions
function SellTax(address account, uint256 amount) private returns (uint256) {
uint256 transferAmount = amount;
uint256 sellTax = amount.mul(_sellTax).div(10000); //amount * 500 / 10000 = 5% base tax
if (sellTax > 0){
transferAmount = transferAmount.sub(sellTax);
_balances[address(taxWallet)] = _balances[address(taxWallet)].add(sellTax);
_sellTaxTotal = _sellTaxTotal.add(sellTax);
emit Transfer(account,address(taxWallet),sellTax);
}
return transferAmount;
}
//Tax on transactions between traders/ wallets
function betweenTax(address account, uint256 amount) private returns (uint256) {
uint256 transferAmount = amount;
uint256 _inbetweenTax = amount.mul(_inbetweenTax_).div(10000); // amount * 0 / 10000 = 0% base tax
if (_inbetweenTax > 0){
transferAmount = transferAmount.sub(_inbetweenTax);
_balances[address(taxWallet)] = _balances[address(taxWallet)].add(_inbetweenTax);
_inbetweenTaxTotal = _inbetweenTaxTotal.add(_inbetweenTax);
emit Transfer(account,address(taxWallet),_inbetweenTax);
}
return transferAmount;
}
/*
Launch Taxes:
- First 10 minutes tax is 45%
- After 10 minutes tax is 25%
- After 20 minutes tax is 5% = Base tax
*/
function updateTaxRate() internal {
if (block.timestamp <= tradingStartTime + 10 minutes ) { // 1st 10 minutes tax will be 45%
if (_buyTax != 4500) { //45%
_buyTax = 4500;
}
if (_sellTax != 4500) {
_sellTax = 4500;
}
}
else if (block.timestamp >= tradingStartTime + 10 minutes && block.timestamp <= tradingStartTime + 20 minutes ) { // after 10 minutes tax will be 25%
if (_buyTax != 2500) {//25%
_buyTax = 2500;
}
if (_sellTax != 2500) {
_sellTax = 2500;
}
}
else if (block.timestamp >= tradingStartTime + 20 minutes) { // after 20 minutes tax will be 5% = base tax
if (_buyTax != 500) {//5%
_buyTax = 500;
}
if (_sellTax != 500) {
_sellTax = 500;
}
}
}
//Will open the trading, create pair and fill LP
function openTrading() external onlyOwner() {
require(!tradingOpen,"trading is already open");
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
_approve(address(this), address(uniswapV2Router), _totalSupply);
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
isExcludedFromTax[address(uniswapV2Router)] = true;
swapEnabled = true;
tradingOpen = true;
tradingStartTime = block.timestamp;
}
//Enables base tax on transactions
function taxEnable() public onlyOwner {
taxEnabled = true;
}
//Disables base tax on transactions, used for marketing and promotions.
function taxDisable() public onlyOwner {
taxEnabled = false;
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTaxTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_inbetweenTaxTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_inbetweenTax_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526040518060400160405280600681526020017f43616e6172790000000000000000000000000000000000000000000000000000815250600190816200004a9190620006cc565b506040518060400160405280600381526020017f434e59000000000000000000000000000000000000000000000000000000000081525060029081620000919190620006cc565b506012600360006101000a81548160ff021916908360ff1602179055506b033b2e3c9fd0803ce80000006006556a084595161401484a0000006007556a108b2a2c280290940000006008556101f4600a556101f4600b5573a0e230b8e6a2e0b8a0d4c57a78c3d7e9d7daa2e3600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60146101000a81548160ff0219169083151502179055506001600f60156101000a81548160ff02191690831515021790555060006010553480156200018557600080fd5b50620001a66200019a6200038660201b60201c565b6200038e60201b60201c565b6001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600654600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620003789190620007c4565b60405180910390a3620007e1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004d457607f821691505b602082108103620004ea57620004e96200048c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000515565b62000560868362000515565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005ad620005a7620005a18462000578565b62000582565b62000578565b9050919050565b6000819050919050565b620005c9836200058c565b620005e1620005d882620005b4565b84845462000522565b825550505050565b600090565b620005f8620005e9565b62000605818484620005be565b505050565b5b818110156200062d5762000621600082620005ee565b6001810190506200060b565b5050565b601f8211156200067c576200064681620004f0565b620006518462000505565b8101602085101562000661578190505b62000679620006708562000505565b8301826200060a565b50505b505050565b600082821c905092915050565b6000620006a16000198460080262000681565b1980831691505092915050565b6000620006bc83836200068e565b9150826002028217905092915050565b620006d78262000452565b67ffffffffffffffff811115620006f357620006f26200045d565b5b620006ff8254620004bb565b6200070c82828562000631565b600060209050601f8311600181146200074457600084156200072f578287015190505b6200073b8582620006ae565b865550620007ab565b601f1984166200075486620004f0565b60005b828110156200077e5784890151825560018201915060208501945060208101905062000757565b868310156200079e57848901516200079a601f8916826200068e565b8355505b6001600288020188555050505b505050505050565b620007be8162000578565b82525050565b6000602082019050620007db6000830184620007b3565b92915050565b6129ae80620007f16000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637d1db4a5116100de57806394951ae711610097578063c9567bf911610071578063c9567bf9146103fa578063ca9ec19914610404578063dd62ed3e14610422578063f2fde38b1461045257610173565b806394951ae71461038e57806395d89b41146103ac578063a9059cbb146103ca57610173565b80637d1db4a514610302578063810aa0e614610320578063821944161461032a5780638da5cb5b146103345780638dc16e54146103525780638f9a55c01461037057610173565b806342a110951161013057806342a110951461025057806352498a5f1461026e57806370a082311461028c57806370b7b80c146102bc578063715018a6146102da57806373dda92c146102e457610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e45780632dc0562d14610214578063313ce56714610232575b600080fd5b61018061046e565b60405161018d9190611eb6565b60405180910390f35b6101b060048036038101906101ab9190611f71565b610500565b6040516101bd9190611fcc565b60405180910390f35b6101ce610517565b6040516101db9190611ff6565b60405180910390f35b6101fe60048036038101906101f99190612011565b610521565b60405161020b9190611fcc565b60405180910390f35b61021c6105ec565b6040516102299190612073565b60405180910390f35b61023a610612565b60405161024791906120aa565b60405180910390f35b610258610629565b6040516102659190611ff6565b60405180910390f35b61027661062f565b6040516102839190611ff6565b60405180910390f35b6102a660048036038101906102a191906120c5565b610635565b6040516102b39190611ff6565b60405180910390f35b6102c461067e565b6040516102d19190611ff6565b60405180910390f35b6102e2610684565b005b6102ec610698565b6040516102f99190611ff6565b60405180910390f35b61030a61069e565b6040516103179190611ff6565b60405180910390f35b6103286106a4565b005b6103326106c9565b005b61033c6106ee565b6040516103499190612073565b60405180910390f35b61035a610717565b6040516103679190611ff6565b60405180910390f35b61037861071d565b6040516103859190611ff6565b60405180910390f35b610396610723565b6040516103a39190611ff6565b60405180910390f35b6103b4610729565b6040516103c19190611eb6565b60405180910390f35b6103e460048036038101906103df9190611f71565b6107bb565b6040516103f19190611fcc565b60405180910390f35b6104026107d2565b005b61040c610ce4565b6040516104199190611ff6565b60405180910390f35b61043c600480360381019061043791906120f2565b610cea565b6040516104499190611ff6565b60405180910390f35b61046c600480360381019061046791906120c5565b610d71565b005b60606001805461047d90612161565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990612161565b80156104f65780601f106104cb576101008083540402835291602001916104f6565b820191906000526020600020905b8154815290600101906020018083116104d957829003601f168201915b5050505050905090565b600061050d338484610df4565b6001905092915050565b6000600654905090565b600061052e848484610fbd565b6105e184336105dc8560405180606001604052806028815260200161295160289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115bb9092919063ffffffff16565b610df4565b600190509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900460ff16905090565b600a5481565b60135481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600d5481565b61068c611610565b610696600061168e565b565b60115481565b60075481565b6106ac611610565b6000600f60156101000a81548160ff021916908315150217905550565b6106d1611610565b6001600f60156101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60085481565b60105481565b60606002805461073890612161565b80601f016020809104026020016040519081016040528092919081815260200182805461076490612161565b80156107b15780601f10610786576101008083540402835291602001916107b1565b820191906000526020600020905b81548152906001019060200180831161079457829003601f168201915b5050505050905090565b60006107c8338484610fbd565b6001905092915050565b6107da611610565b600e60149054906101000a900460ff161561082a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610821906121de565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108ae30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654610df4565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f9190612213565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190612213565b6040518363ffffffff1660e01b8152600401610a09929190612240565b6020604051808303816000875af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c9190612213565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610ad530610635565b600080610ae06106ee565b426040518863ffffffff1660e01b8152600401610b02969594939291906122ae565b60606040518083038185885af1158015610b20573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b459190612324565b505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610be7929190612377565b6020604051808303816000875af1158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a91906123cc565b50600160096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff02191690831515021790555042600d81905550565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d79611610565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf9061246b565b60405180910390fd5b610df18161168e565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a906124fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec99061258f565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fb09190611ff6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361102c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102390612621565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906126b3565b60405180910390fd5b6007548111156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d79061271f565b60405180910390fd5b600854816110ed84610635565b6110f7919061276e565b1115611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f906127ee565b60405180910390fd5b6000819050600f60159054906101000a900460ff16156114265761115a611752565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156111fc5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611205578190505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112a95750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156112bb576112b8848361183e565b90505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561135e5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113705761136d8483611a16565b90505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114135750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611425576114228483611bee565b90505b5b61147882600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dc690919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061150d81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115ad9190611ff6565b60405180910390a350505050565b6000838311158290611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa9190611eb6565b60405180910390fd5b5082840390509392505050565b611618611df2565b73ffffffffffffffffffffffffffffffffffffffff166116366106ee565b73ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116839061285a565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610258600d54611762919061276e565b421161179757611194600a541461177d57611194600a819055505b611194600b541461179257611194600b819055505b61183c565b610258600d546117a7919061276e565b42101580156117c557506104b0600d546117c1919061276e565b4211155b156117f9576109c4600a54146117df576109c4600a819055505b6109c4600b54146117f4576109c4600b819055505b61183b565b6104b0600d54611809919061276e565b421061183a576101f4600a5414611824576101f4600a819055505b6101f4600b5414611839576101f4600b819055505b5b5b5b565b600080829050600061186f61271061186160105487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611a0b5761188d8183611dc690919063ffffffff16565b91506119038160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061197d81601354611ddc90919063ffffffff16565b601381905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a029190611ff6565b60405180910390a35b819250505092915050565b6000808290506000611a47612710611a39600a5487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611be357611a658183611dc690919063ffffffff16565b9150611adb8160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5581601154611ddc90919063ffffffff16565b601181905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bda9190611ff6565b60405180910390a35b819250505092915050565b6000808290506000611c1f612710611c11600b5487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611dbb57611c3d8183611dc690919063ffffffff16565b9150611cb38160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d2d81601254611ddc90919063ffffffff16565b601281905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db29190611ff6565b60405180910390a35b819250505092915050565b60008183611dd4919061287a565b905092915050565b60008183611dea919061276e565b905092915050565b600033905090565b60008183611e0891906128ae565b905092915050565b60008183611e1e919061291f565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e60578082015181840152602081019050611e45565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e8882611e26565b611e928185611e31565b9350611ea2818560208601611e42565b611eab81611e6c565b840191505092915050565b60006020820190508181036000830152611ed08184611e7d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f0882611edd565b9050919050565b611f1881611efd565b8114611f2357600080fd5b50565b600081359050611f3581611f0f565b92915050565b6000819050919050565b611f4e81611f3b565b8114611f5957600080fd5b50565b600081359050611f6b81611f45565b92915050565b60008060408385031215611f8857611f87611ed8565b5b6000611f9685828601611f26565b9250506020611fa785828601611f5c565b9150509250929050565b60008115159050919050565b611fc681611fb1565b82525050565b6000602082019050611fe16000830184611fbd565b92915050565b611ff081611f3b565b82525050565b600060208201905061200b6000830184611fe7565b92915050565b60008060006060848603121561202a57612029611ed8565b5b600061203886828701611f26565b935050602061204986828701611f26565b925050604061205a86828701611f5c565b9150509250925092565b61206d81611efd565b82525050565b60006020820190506120886000830184612064565b92915050565b600060ff82169050919050565b6120a48161208e565b82525050565b60006020820190506120bf600083018461209b565b92915050565b6000602082840312156120db576120da611ed8565b5b60006120e984828501611f26565b91505092915050565b6000806040838503121561210957612108611ed8565b5b600061211785828601611f26565b925050602061212885828601611f26565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061217957607f821691505b60208210810361218c5761218b612132565b5b50919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006121c8601783611e31565b91506121d382612192565b602082019050919050565b600060208201905081810360008301526121f7816121bb565b9050919050565b60008151905061220d81611f0f565b92915050565b60006020828403121561222957612228611ed8565b5b6000612237848285016121fe565b91505092915050565b60006040820190506122556000830185612064565b6122626020830184612064565b9392505050565b6000819050919050565b6000819050919050565b600061229861229361228e84612269565b612273565b611f3b565b9050919050565b6122a88161227d565b82525050565b600060c0820190506122c36000830189612064565b6122d06020830188611fe7565b6122dd604083018761229f565b6122ea606083018661229f565b6122f76080830185612064565b61230460a0830184611fe7565b979650505050505050565b60008151905061231e81611f45565b92915050565b60008060006060848603121561233d5761233c611ed8565b5b600061234b8682870161230f565b935050602061235c8682870161230f565b925050604061236d8682870161230f565b9150509250925092565b600060408201905061238c6000830185612064565b6123996020830184611fe7565b9392505050565b6123a981611fb1565b81146123b457600080fd5b50565b6000815190506123c6816123a0565b92915050565b6000602082840312156123e2576123e1611ed8565b5b60006123f0848285016123b7565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612455602683611e31565b9150612460826123f9565b604082019050919050565b6000602082019050818103600083015261248481612448565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006124e7602483611e31565b91506124f28261248b565b604082019050919050565b60006020820190508181036000830152612516816124da565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612579602283611e31565b91506125848261251d565b604082019050919050565b600060208201905081810360008301526125a88161256c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061260b602583611e31565b9150612616826125af565b604082019050919050565b6000602082019050818103600083015261263a816125fe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061269d602383611e31565b91506126a882612641565b604082019050919050565b600060208201905081810360008301526126cc81612690565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000612709601883611e31565b9150612714826126d3565b602082019050919050565b60006020820190508181036000830152612738816126fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061277982611f3b565b915061278483611f3b565b925082820190508082111561279c5761279b61273f565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006127d8601a83611e31565b91506127e3826127a2565b602082019050919050565b60006020820190508181036000830152612807816127cb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612844602083611e31565b915061284f8261280e565b602082019050919050565b6000602082019050818103600083015261287381612837565b9050919050565b600061288582611f3b565b915061289083611f3b565b92508282039050818111156128a8576128a761273f565b5b92915050565b60006128b982611f3b565b91506128c483611f3b565b92508282026128d281611f3b565b915082820484148315176128e9576128e861273f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061292a82611f3b565b915061293583611f3b565b925082612945576129446128f0565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122062c9e26f022b9b8ecc697df2104778aff800b34ef1a330a53addc728df023b8d64736f6c63430008130033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80637d1db4a5116100de57806394951ae711610097578063c9567bf911610071578063c9567bf9146103fa578063ca9ec19914610404578063dd62ed3e14610422578063f2fde38b1461045257610173565b806394951ae71461038e57806395d89b41146103ac578063a9059cbb146103ca57610173565b80637d1db4a514610302578063810aa0e614610320578063821944161461032a5780638da5cb5b146103345780638dc16e54146103525780638f9a55c01461037057610173565b806342a110951161013057806342a110951461025057806352498a5f1461026e57806370a082311461028c57806370b7b80c146102bc578063715018a6146102da57806373dda92c146102e457610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e45780632dc0562d14610214578063313ce56714610232575b600080fd5b61018061046e565b60405161018d9190611eb6565b60405180910390f35b6101b060048036038101906101ab9190611f71565b610500565b6040516101bd9190611fcc565b60405180910390f35b6101ce610517565b6040516101db9190611ff6565b60405180910390f35b6101fe60048036038101906101f99190612011565b610521565b60405161020b9190611fcc565b60405180910390f35b61021c6105ec565b6040516102299190612073565b60405180910390f35b61023a610612565b60405161024791906120aa565b60405180910390f35b610258610629565b6040516102659190611ff6565b60405180910390f35b61027661062f565b6040516102839190611ff6565b60405180910390f35b6102a660048036038101906102a191906120c5565b610635565b6040516102b39190611ff6565b60405180910390f35b6102c461067e565b6040516102d19190611ff6565b60405180910390f35b6102e2610684565b005b6102ec610698565b6040516102f99190611ff6565b60405180910390f35b61030a61069e565b6040516103179190611ff6565b60405180910390f35b6103286106a4565b005b6103326106c9565b005b61033c6106ee565b6040516103499190612073565b60405180910390f35b61035a610717565b6040516103679190611ff6565b60405180910390f35b61037861071d565b6040516103859190611ff6565b60405180910390f35b610396610723565b6040516103a39190611ff6565b60405180910390f35b6103b4610729565b6040516103c19190611eb6565b60405180910390f35b6103e460048036038101906103df9190611f71565b6107bb565b6040516103f19190611fcc565b60405180910390f35b6104026107d2565b005b61040c610ce4565b6040516104199190611ff6565b60405180910390f35b61043c600480360381019061043791906120f2565b610cea565b6040516104499190611ff6565b60405180910390f35b61046c600480360381019061046791906120c5565b610d71565b005b60606001805461047d90612161565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990612161565b80156104f65780601f106104cb576101008083540402835291602001916104f6565b820191906000526020600020905b8154815290600101906020018083116104d957829003601f168201915b5050505050905090565b600061050d338484610df4565b6001905092915050565b6000600654905090565b600061052e848484610fbd565b6105e184336105dc8560405180606001604052806028815260200161295160289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115bb9092919063ffffffff16565b610df4565b600190509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900460ff16905090565b600a5481565b60135481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600d5481565b61068c611610565b610696600061168e565b565b60115481565b60075481565b6106ac611610565b6000600f60156101000a81548160ff021916908315150217905550565b6106d1611610565b6001600f60156101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60085481565b60105481565b60606002805461073890612161565b80601f016020809104026020016040519081016040528092919081815260200182805461076490612161565b80156107b15780601f10610786576101008083540402835291602001916107b1565b820191906000526020600020905b81548152906001019060200180831161079457829003601f168201915b5050505050905090565b60006107c8338484610fbd565b6001905092915050565b6107da611610565b600e60149054906101000a900460ff161561082a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610821906121de565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108ae30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654610df4565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f9190612213565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190612213565b6040518363ffffffff1660e01b8152600401610a09929190612240565b6020604051808303816000875af1158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c9190612213565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610ad530610635565b600080610ae06106ee565b426040518863ffffffff1660e01b8152600401610b02969594939291906122ae565b60606040518083038185885af1158015610b20573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b459190612324565b505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610be7929190612377565b6020604051808303816000875af1158015610c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2a91906123cc565b50600160096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff02191690831515021790555042600d81905550565b600b5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d79611610565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf9061246b565b60405180910390fd5b610df18161168e565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a906124fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec99061258f565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fb09190611ff6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361102c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102390612621565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906126b3565b60405180910390fd5b6007548111156110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d79061271f565b60405180910390fd5b600854816110ed84610635565b6110f7919061276e565b1115611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f906127ee565b60405180910390fd5b6000819050600f60159054906101000a900460ff16156114265761115a611752565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156111fc5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611205578190505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112a95750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156112bb576112b8848361183e565b90505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561135e5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113705761136d8483611a16565b90505b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114135750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611425576114228483611bee565b90505b5b61147882600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dc690919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061150d81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115ad9190611ff6565b60405180910390a350505050565b6000838311158290611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa9190611eb6565b60405180910390fd5b5082840390509392505050565b611618611df2565b73ffffffffffffffffffffffffffffffffffffffff166116366106ee565b73ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116839061285a565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610258600d54611762919061276e565b421161179757611194600a541461177d57611194600a819055505b611194600b541461179257611194600b819055505b61183c565b610258600d546117a7919061276e565b42101580156117c557506104b0600d546117c1919061276e565b4211155b156117f9576109c4600a54146117df576109c4600a819055505b6109c4600b54146117f4576109c4600b819055505b61183b565b6104b0600d54611809919061276e565b421061183a576101f4600a5414611824576101f4600a819055505b6101f4600b5414611839576101f4600b819055505b5b5b5b565b600080829050600061186f61271061186160105487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611a0b5761188d8183611dc690919063ffffffff16565b91506119038160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061197d81601354611ddc90919063ffffffff16565b601381905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a029190611ff6565b60405180910390a35b819250505092915050565b6000808290506000611a47612710611a39600a5487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611be357611a658183611dc690919063ffffffff16565b9150611adb8160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5581601154611ddc90919063ffffffff16565b601181905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bda9190611ff6565b60405180910390a35b819250505092915050565b6000808290506000611c1f612710611c11600b5487611dfa90919063ffffffff16565b611e1090919063ffffffff16565b90506000811115611dbb57611c3d8183611dc690919063ffffffff16565b9150611cb38160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ddc90919063ffffffff16565b60046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d2d81601254611ddc90919063ffffffff16565b601281905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db29190611ff6565b60405180910390a35b819250505092915050565b60008183611dd4919061287a565b905092915050565b60008183611dea919061276e565b905092915050565b600033905090565b60008183611e0891906128ae565b905092915050565b60008183611e1e919061291f565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e60578082015181840152602081019050611e45565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e8882611e26565b611e928185611e31565b9350611ea2818560208601611e42565b611eab81611e6c565b840191505092915050565b60006020820190508181036000830152611ed08184611e7d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f0882611edd565b9050919050565b611f1881611efd565b8114611f2357600080fd5b50565b600081359050611f3581611f0f565b92915050565b6000819050919050565b611f4e81611f3b565b8114611f5957600080fd5b50565b600081359050611f6b81611f45565b92915050565b60008060408385031215611f8857611f87611ed8565b5b6000611f9685828601611f26565b9250506020611fa785828601611f5c565b9150509250929050565b60008115159050919050565b611fc681611fb1565b82525050565b6000602082019050611fe16000830184611fbd565b92915050565b611ff081611f3b565b82525050565b600060208201905061200b6000830184611fe7565b92915050565b60008060006060848603121561202a57612029611ed8565b5b600061203886828701611f26565b935050602061204986828701611f26565b925050604061205a86828701611f5c565b9150509250925092565b61206d81611efd565b82525050565b60006020820190506120886000830184612064565b92915050565b600060ff82169050919050565b6120a48161208e565b82525050565b60006020820190506120bf600083018461209b565b92915050565b6000602082840312156120db576120da611ed8565b5b60006120e984828501611f26565b91505092915050565b6000806040838503121561210957612108611ed8565b5b600061211785828601611f26565b925050602061212885828601611f26565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061217957607f821691505b60208210810361218c5761218b612132565b5b50919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006121c8601783611e31565b91506121d382612192565b602082019050919050565b600060208201905081810360008301526121f7816121bb565b9050919050565b60008151905061220d81611f0f565b92915050565b60006020828403121561222957612228611ed8565b5b6000612237848285016121fe565b91505092915050565b60006040820190506122556000830185612064565b6122626020830184612064565b9392505050565b6000819050919050565b6000819050919050565b600061229861229361228e84612269565b612273565b611f3b565b9050919050565b6122a88161227d565b82525050565b600060c0820190506122c36000830189612064565b6122d06020830188611fe7565b6122dd604083018761229f565b6122ea606083018661229f565b6122f76080830185612064565b61230460a0830184611fe7565b979650505050505050565b60008151905061231e81611f45565b92915050565b60008060006060848603121561233d5761233c611ed8565b5b600061234b8682870161230f565b935050602061235c8682870161230f565b925050604061236d8682870161230f565b9150509250925092565b600060408201905061238c6000830185612064565b6123996020830184611fe7565b9392505050565b6123a981611fb1565b81146123b457600080fd5b50565b6000815190506123c6816123a0565b92915050565b6000602082840312156123e2576123e1611ed8565b5b60006123f0848285016123b7565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612455602683611e31565b9150612460826123f9565b604082019050919050565b6000602082019050818103600083015261248481612448565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006124e7602483611e31565b91506124f28261248b565b604082019050919050565b60006020820190508181036000830152612516816124da565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612579602283611e31565b91506125848261251d565b604082019050919050565b600060208201905081810360008301526125a88161256c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061260b602583611e31565b9150612616826125af565b604082019050919050565b6000602082019050818103600083015261263a816125fe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061269d602383611e31565b91506126a882612641565b604082019050919050565b600060208201905081810360008301526126cc81612690565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000612709601883611e31565b9150612714826126d3565b602082019050919050565b60006020820190508181036000830152612738816126fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061277982611f3b565b915061278483611f3b565b925082820190508082111561279c5761279b61273f565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006127d8601a83611e31565b91506127e3826127a2565b602082019050919050565b60006020820190508181036000830152612807816127cb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612844602083611e31565b915061284f8261280e565b602082019050919050565b6000602082019050818103600083015261287381612837565b9050919050565b600061288582611f3b565b915061289083611f3b565b92508282039050818111156128a8576128a761273f565b5b92915050565b60006128b982611f3b565b91506128c483611f3b565b92508282026128d281611f3b565b915082820484148315176128e9576128e861273f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061292a82611f3b565b915061293583611f3b565b925082612945576129446128f0565b5b82820490509291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122062c9e26f022b9b8ecc697df2104778aff800b34ef1a330a53addc728df023b8d64736f6c63430008130033
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.
Add Token to MetaMask (Web3)