ERC-20
Source Code
Overview
Max Total Supply
100,000,000,000,000 BankrPenguin
Holders
235
Transfers
-
1,795
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BankrPenguin
Compiler Version
v0.8.33+commit.64118f21
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSE
pragma solidity 0.8.33;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
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);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
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 BankrPenguin is Context, IERC20, Ownable {
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private _blockedAddresses;
mapping (address => bool) private _earlyBuyers;
address payable private _taxWallet;
uint256 private _initialBuyTax=5;
uint256 private _initialSellTax=0;
uint256 private _finalBuyTax=0;
uint256 private _finalSellTax=0;
uint256 private _reduceBuyTaxAt=22;
uint256 private _reduceSellTaxAt=0;
uint256 private _preventSwapBefore=20;
uint256 private _transferTax=0;
uint256 private _buyCount=0;
bool private _earlyBuyingPhase = true;
uint8 private constant _decimals = 9;
uint256 private constant _tTotal = 100000000000000 * 10**_decimals;
string private constant _name = unicode"Bankr Penguin";
string private constant _symbol = unicode"BankrPenguin";
uint256 public _maxTxAmount = 2000000000000 * 10**_decimals;
uint256 public _maxWalletSize = 2000000000000 * 10**_decimals;
uint256 public _taxSwapThreshold= 0 * 10**_decimals;
uint256 public _maxTaxSwap= 1000000000000 * 10**_decimals;
IUniswapV2Router02 private uniswapV2Router;
address private uniswapV2Pair;
bool private tradingOpen = false;
bool private inSwap = false;
bool private swapEnabled = false;
uint256 private sellCount = 0;
uint256 private lastSellBlock = 0;
event MaxTxAmountUpdated(uint _maxTxAmount);
event TransferTaxUpdated(uint _tax);
event EarlyBuyerAdded(address indexed wallet);
event EarlyBuyingPhaseEnded();
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor () payable {
_taxWallet = payable(_msgSender());
uint256 ownerAmount = _tTotal.mul(2).div(100);
uint256 contractAmount = _tTotal.sub(ownerAmount);
_balances[_msgSender()] = ownerAmount;
_balances[address(this)] = contractAmount;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_taxWallet] = true;
emit Transfer(address(0), _msgSender(), ownerAmount);
emit Transfer(address(0), address(this), contractAmount);
}
function name() public pure returns (string memory) {
return _name;
}
function symbol() public pure returns (string memory) {
return _symbol;
}
function decimals() public pure returns (uint8) {
return _decimals;
}
function totalSupply() public pure override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
require(!_blockedAddresses[_msgSender()], "Sender address is blocked");
require(!_blockedAddresses[recipient], "Recipient address is blocked");
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
require(!_blockedAddresses[_msgSender()], "Approver address is blocked");
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
require(!_blockedAddresses[sender], "Sender address is blocked");
require(!_blockedAddresses[recipient], "Recipient address is blocked");
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].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);
}
function _transfer(address from, address to, uint256 amount) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
uint256 taxAmount=0;
if (from != owner() && to != owner()) {
// Restrict buying to early buyers only during early phase
if (_earlyBuyingPhase && from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
require(_earlyBuyers[to], "Only early buyers can purchase during early phase");
}
if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
_buyCount++;
}
if(to == uniswapV2Pair && from!= address(this) ){
taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
}
uint256 contractTokenBalance = balanceOf(address(this));
if (!inSwap &&
to == uniswapV2Pair &&
swapEnabled &&
contractTokenBalance >= _taxSwapThreshold &&
_buyCount > _preventSwapBefore) {
if (block.number > lastSellBlock) {
sellCount = 0;
}
require(sellCount < 3, "Only 3 sells per block!");
swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > 0 || contractTokenBalance >= _taxSwapThreshold) {
sendETHToFee(contractETHBalance);
}
sellCount++;
lastSellBlock = block.number;
}
}
if(taxAmount>0){
_balances[address(this)]=_balances[address(this)].add(taxAmount);
emit Transfer(from, address(this),taxAmount);
}
require(!_blockedAddresses[from], "Sender address is blocked");
require(!_blockedAddresses[to], "Recipient address is blocked");
_balances[from]=_balances[from].sub(amount);
_balances[to]=_balances[to].add(amount.sub(taxAmount));
emit Transfer(from, to, amount.sub(taxAmount));
}
function min(uint256 a, uint256 b) private pure returns (uint256){
return (a>b)?b:a;
}
function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
if(tokenAmount == 0) return;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function removeLimits() external onlyOwner{
_maxTxAmount = _tTotal;
_maxWalletSize=_tTotal;
emit MaxTxAmountUpdated(_tTotal);
}
function removeTransferTax() external onlyOwner{
_transferTax = 0;
emit TransferTaxUpdated(0);
}
function sendETHToFee(uint256 amount) private {
_taxWallet.transfer(amount);
}
function addLimits(address[] memory wallets) external onlyOwner {
require(!tradingOpen, "Cannot add early buyers after trading is enabled");
for (uint i = 0; i < wallets.length; i++) {
require(wallets[i] != address(0), "Invalid wallet address");
_earlyBuyers[wallets[i]] = true;
emit EarlyBuyerAdded(wallets[i]);
}
}
function endLimits() external onlyOwner {
require(_earlyBuyingPhase, "Early buying phase already ended");
_earlyBuyingPhase = false;
emit EarlyBuyingPhaseEnded();
}
function enableTrading() external onlyOwner() {
require(!tradingOpen,"trading is already open");
uniswapV2Router = IUniswapV2Router02(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);
_approve(address(this), address(uniswapV2Router), _tTotal);
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);
swapEnabled = true;
tradingOpen = true;
}
receive() external payable {}
function manualSwap() external {
require(_msgSender()==_taxWallet);
uint256 tokenBalance=balanceOf(address(this));
if(tokenBalance>0){
swapTokensForEth(tokenBalance);
}
uint256 ethBalance=address(this).balance;
if(ethBalance>0){
sendETHToFee(ethBalance);
}
}
function manualSend() external {
require(_msgSender()==_taxWallet);
uint256 contractETHBalance = address(this).balance;
sendETHToFee(contractETHBalance);
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"payable","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":"wallet","type":"address"}],"name":"EarlyBuyerAdded","type":"event"},{"anonymous":false,"inputs":[],"name":"EarlyBuyingPhaseEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","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":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"addLimits","outputs":[],"stateMutability":"nonpayable","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":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405260056007555f6008555f6009555f600a556016600b555f600c556014600d555f600e555f600f55600160105f6101000a81548160ff0219169083151502179055506009600a61005391906108a2565b6501d1a94a200061006491906108ec565b6011556009600a61007591906108a2565b6501d1a94a200061008691906108ec565b6012556009600a61009791906108a2565b5f6100a291906108ec565b6013556009600a6100b391906108a2565b64e8d4a510006100c391906108ec565b6014555f601660146101000a81548160ff0219169083151502179055505f601660156101000a81548160ff0219169083151502179055505f6016806101000a81548160ff0219169083151502179055505f6017555f6018555f61012a61052b60201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101d461052b60201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f610259606461024b60026009600a61022c91906108a2565b655af3107a400061023d91906108ec565b61053260201b90919060201c565b6105a960201b90919060201c565b90505f61028d826009600a61026e91906108a2565b655af3107a400061027f91906108ec565b6105f860201b90919060201c565b90508160015f6102a161052b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61033361064760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061045b61052b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104b7919061093c565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051c919061093c565b60405180910390a35050610b03565b5f33905090565b5f5f8303610542575f90506105a3565b5f828461054f91906108ec565b905082848261055e9190610982565b1461059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059590610a32565b60405180910390fd5b809150505b92915050565b5f6105f083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061066e60201b60201c565b905092915050565b5f61063f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506106cf60201b60201c565b905092915050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f5f831182906106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ab9190610ab0565b60405180910390fd5b505f83856106c29190610982565b9050809150509392505050565b5f838311158290610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d9190610ab0565b60405180910390fd5b505f83856107249190610ad0565b9050809150509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156107b35780860481111561078f5761078e610731565b5b600185161561079e5780820291505b80810290506107ac8561075e565b9450610773565b94509492505050565b5f826107cb5760019050610886565b816107d8575f9050610886565b81600181146107ee57600281146107f857610827565b6001915050610886565b60ff84111561080a57610809610731565b5b8360020a91508482111561082157610820610731565b5b50610886565b5060208310610133831016604e8410600b841016171561085c5782820a90508381111561085757610856610731565b5b610886565b610869848484600161076a565b925090508184048111156108805761087f610731565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6108ac8261088d565b91506108b783610896565b92506108e47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846107bc565b905092915050565b5f6108f68261088d565b91506109018361088d565b925082820261090f8161088d565b9150828204841483151761092657610925610731565b5b5092915050565b6109368161088d565b82525050565b5f60208201905061094f5f83018461092d565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61098c8261088d565b91506109978361088d565b9250826109a7576109a6610955565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f610a1c6021836109b2565b9150610a27826109c2565b604082019050919050565b5f6020820190508181035f830152610a4981610a10565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610a8282610a50565b610a8c81856109b2565b9350610a9c818560208601610a5a565b610aa581610a68565b840191505092915050565b5f6020820190508181035f830152610ac88184610a78565b905092915050565b5f610ada8261088d565b9150610ae58361088d565b9250828203905081811115610afd57610afc610731565b5b92915050565b613ba780610b105f395ff3fe608060405260043610610138575f3560e01c80637d1db4a5116100aa578063a9059cbb1161006e578063a9059cbb146103b5578063bf474bed146103f1578063bf7695bf1461041b578063dd62ed3e14610443578063eadd92631461047f578063f4293890146104955761013f565b80637d1db4a5146102f75780638a8c523c146103215780638da5cb5b146103375780638f9a55c01461036157806395d89b411461038b5761013f565b806323b872dd116100fc57806323b872dd14610213578063313ce5671461024f57806351bc3c851461027957806370a082311461028f578063715018a6146102cb578063751039fc146102e15761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a9578063109daa99146101d357806318160ddd146101e95761013f565b3661013f57005b5f5ffd5b34801561014e575f5ffd5b506101576104ab565b6040516101649190612911565b60405180910390f35b348015610178575f5ffd5b50610193600480360381019061018e91906129cf565b6104e8565b6040516101a09190612a27565b60405180910390f35b3480156101b4575f5ffd5b506101bd610596565b6040516101ca9190612a4f565b60405180910390f35b3480156101de575f5ffd5b506101e761059c565b005b3480156101f4575f5ffd5b506101fd610671565b60405161020a9190612a4f565b60405180910390f35b34801561021e575f5ffd5b5061023960048036038101906102349190612a68565b610696565b6040516102469190612a27565b60405180910390f35b34801561025a575f5ffd5b5061026361087e565b6040516102709190612ad3565b60405180910390f35b348015610284575f5ffd5b5061028d610886565b005b34801561029a575f5ffd5b506102b560048036038101906102b09190612aec565b61091d565b6040516102c29190612a4f565b60405180910390f35b3480156102d6575f5ffd5b506102df610963565b005b3480156102ec575f5ffd5b506102f5610ab3565b005b348015610302575f5ffd5b5061030b610be9565b6040516103189190612a4f565b60405180910390f35b34801561032c575f5ffd5b50610335610bef565b005b348015610342575f5ffd5b5061034b611113565b6040516103589190612b26565b60405180910390f35b34801561036c575f5ffd5b5061037561113a565b6040516103829190612a4f565b60405180910390f35b348015610396575f5ffd5b5061039f611140565b6040516103ac9190612911565b60405180910390f35b3480156103c0575f5ffd5b506103db60048036038101906103d691906129cf565b61117d565b6040516103e89190612a27565b60405180910390f35b3480156103fc575f5ffd5b506104056112b5565b6040516104129190612a4f565b60405180910390f35b348015610426575f5ffd5b50610441600480360381019061043c9190612c7f565b6112bb565b005b34801561044e575f5ffd5b5061046960048036038101906104649190612cc6565b611513565b6040516104769190612a4f565b60405180910390f35b34801561048a575f5ffd5b50610493611595565b005b3480156104a0575f5ffd5b506104a96116bf565b005b60606040518060400160405280600d81526020017f42616e6b722050656e6775696e00000000000000000000000000000000000000815250905090565b5f60045f6104f461172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057190612d4e565b60405180910390fd5b61058c61058561172e565b8484611735565b6001905092915050565b60145481565b6105a461172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890612db6565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106679190612e16565b60405180910390a1565b5f6009600a6106809190612f8b565b655af3107a40006106919190612fd5565b905090565b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071890613060565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a2906130c8565b60405180910390fd5b6107b68484846118f8565b610873846107c261172e565b61086e85604051806060016040528060288152602001613b4a6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61082561172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123849092919063ffffffff16565b611735565b600190509392505050565b5f6009905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108c661172e565b73ffffffffffffffffffffffffffffffffffffffff16146108e5575f5ffd5b5f6108ef3061091d565b90505f81111561090357610902816123e6565b5b5f4790505f811115610919576109188161265a565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61096b61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90612db6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610abb61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90612db6565b60405180910390fd5b6009600a610b569190612f8b565b655af3107a4000610b679190612fd5565b6011819055506009600a610b7b9190612f8b565b655af3107a4000610b8c9190612fd5565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610bc19190612f8b565b655af3107a4000610bd29190612fd5565b604051610bdf9190612a4f565b60405180910390a1565b60115481565b610bf761172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7b90612db6565b60405180910390fd5b601660149054906101000a900460ff1615610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90613130565b60405180910390fd5b734752ba5dbc23f44d87826276bf6fd6b1c372ad2460155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d723060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d5c9190612f8b565b655af3107a4000610d6d9190612fd5565b611735565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e009190613162565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e86573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eaa9190613162565b6040518363ffffffff1660e01b8152600401610ec792919061318d565b6020604051808303815f875af1158015610ee3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f079190613162565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f8e3061091d565b5f5f610f98611113565b426040518863ffffffff1660e01b8152600401610fba969594939291906131b4565b60606040518083038185885af1158015610fd6573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ffb9190613227565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161109b929190613277565b6020604051808303815f875af11580156110b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110db91906132c8565b5060016016806101000a81548160ff0219169083151502179055506001601660146101000a81548160ff021916908315150217905550565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600c81526020017f42616e6b7250656e6775696e0000000000000000000000000000000000000000815250905090565b5f60045f61118961172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120690613060565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906130c8565b60405180910390fd5b6112ab6112a461172e565b84846118f8565b6001905092915050565b60135481565b6112c361172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790612db6565b60405180910390fd5b601660149054906101000a900460ff16156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790613363565b60405180910390fd5b5f5f90505b815181101561150f575f73ffffffffffffffffffffffffffffffffffffffff168282815181106113d8576113d7613381565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d906133f8565b60405180910390fd5b600160055f84848151811061144e5761144d613381565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508181815181106114b8576114b7613381565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fa4d858c941b40b3b35e06f007c32b16a2b9e03e32319c913b86243cc396cb90d60405160405180910390a280806001019150506113a5565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61159d61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190612db6565b60405180910390fd5b60105f9054906101000a900460ff16611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90613460565b60405180910390fd5b5f60105f6101000a81548160ff0219169083151502179055507f9301d805eb0ea45199f9a0527be1708a5bd8cb9746cc1bf03ad58027e71127bd60405160405180910390a1565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116ff61172e565b73ffffffffffffffffffffffffffffffffffffffff161461171e575f5ffd5b5f47905061172b8161265a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a906134ee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118089061357c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118eb9190612a4f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d9061360a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb90613698565b60405180910390fd5b5f8111611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90613726565b60405180910390fd5b5f5f9050611a22611113565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a905750611a60611113565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fc05760105f9054906101000a900460ff168015611afc575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b55575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c375760055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d906137b4565b60405180910390fd5b5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ce0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d33575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d8e57611d746064611d66600b54600f5411611d5357600754611d57565b6009545b856126c290919063ffffffff16565b61273990919063ffffffff16565b9050600f5f815480929190611d88906137d2565b91905055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e5a57611e576064611e49600c54600f5411611e3657600854611e3a565b600a545b856126c290919063ffffffff16565b61273990919063ffffffff16565b90505b5f611e643061091d565b9050601660159054906101000a900460ff16158015611ecf575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ee5575060168054906101000a900460ff165b8015611ef357506013548110155b8015611f025750600d54600f54115b15611fbe57601854431115611f19575f6017819055505b600360175410611f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5590613863565b60405180910390fd5b611f7b611f7684611f7184601454612782565b612782565b6123e6565b5f4790505f811180611f8f57506013548210155b15611f9e57611f9d8161265a565b5b60175f815480929190611fb0906137d2565b919050555043601881905550505b505b5f8111156120bf576120188160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461279a90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b69190612a4f565b60405180910390a35b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214090613060565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156121d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ca906130c8565b60405180910390fd5b6122238260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127f790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122c661227a82846127f790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461279a90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61236984866127f790919063ffffffff16565b6040516123769190612a4f565b60405180910390a350505050565b5f8383111582906123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c29190612911565b60405180910390fd5b505f83856123d99190613881565b9050809150509392505050565b6001601660156101000a81548160ff0219169083151502179055505f81031561263d575f600267ffffffffffffffff81111561242557612424612b43565b5b6040519080825280602002602001820160405280156124535781602001602082028036833780820191505090505b50905030815f8151811061246a57612469613381565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561250e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125329190613162565b8160018151811061254657612545613381565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125ac3060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611735565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161260e95949392919061396b565b5f604051808303815f87803b158015612625575f5ffd5b505af1158015612637573d5f5f3e3d5ffd5b50505050505b5f601660156101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126be573d5f5f3e3d5ffd5b5050565b5f5f83036126d2575f9050612733565b5f82846126df9190612fd5565b90508284826126ee91906139f0565b1461272e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272590613a90565b60405180910390fd5b809150505b92915050565b5f61277a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612840565b905092915050565b5f8183116127905782612792565b815b905092915050565b5f5f82846127a89190613aae565b9050838110156127ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e490613b2b565b60405180910390fd5b8091505092915050565b5f61283883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612384565b905092915050565b5f5f83118290612886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287d9190612911565b60405180910390fd5b505f838561289491906139f0565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6128e3826128a1565b6128ed81856128ab565b93506128fd8185602086016128bb565b612906816128c9565b840191505092915050565b5f6020820190508181035f83015261292981846128d9565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61296b82612942565b9050919050565b61297b81612961565b8114612985575f5ffd5b50565b5f8135905061299681612972565b92915050565b5f819050919050565b6129ae8161299c565b81146129b8575f5ffd5b50565b5f813590506129c9816129a5565b92915050565b5f5f604083850312156129e5576129e461293a565b5b5f6129f285828601612988565b9250506020612a03858286016129bb565b9150509250929050565b5f8115159050919050565b612a2181612a0d565b82525050565b5f602082019050612a3a5f830184612a18565b92915050565b612a498161299c565b82525050565b5f602082019050612a625f830184612a40565b92915050565b5f5f5f60608486031215612a7f57612a7e61293a565b5b5f612a8c86828701612988565b9350506020612a9d86828701612988565b9250506040612aae868287016129bb565b9150509250925092565b5f60ff82169050919050565b612acd81612ab8565b82525050565b5f602082019050612ae65f830184612ac4565b92915050565b5f60208284031215612b0157612b0061293a565b5b5f612b0e84828501612988565b91505092915050565b612b2081612961565b82525050565b5f602082019050612b395f830184612b17565b92915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b79826128c9565b810181811067ffffffffffffffff82111715612b9857612b97612b43565b5b80604052505050565b5f612baa612931565b9050612bb68282612b70565b919050565b5f67ffffffffffffffff821115612bd557612bd4612b43565b5b602082029050602081019050919050565b5f5ffd5b5f612bfc612bf784612bbb565b612ba1565b90508083825260208201905060208402830185811115612c1f57612c1e612be6565b5b835b81811015612c485780612c348882612988565b845260208401935050602081019050612c21565b5050509392505050565b5f82601f830112612c6657612c65612b3f565b5b8135612c76848260208601612bea565b91505092915050565b5f60208284031215612c9457612c9361293a565b5b5f82013567ffffffffffffffff811115612cb157612cb061293e565b5b612cbd84828501612c52565b91505092915050565b5f5f60408385031215612cdc57612cdb61293a565b5b5f612ce985828601612988565b9250506020612cfa85828601612988565b9150509250929050565b7f417070726f766572206164647265737320697320626c6f636b656400000000005f82015250565b5f612d38601b836128ab565b9150612d4382612d04565b602082019050919050565b5f6020820190508181035f830152612d6581612d2c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612da06020836128ab565b9150612dab82612d6c565b602082019050919050565b5f6020820190508181035f830152612dcd81612d94565b9050919050565b5f819050919050565b5f819050919050565b5f612e00612dfb612df684612dd4565b612ddd565b61299c565b9050919050565b612e1081612de6565b82525050565b5f602082019050612e295f830184612e07565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612eb157808604811115612e8d57612e8c612e2f565b5b6001851615612e9c5780820291505b8081029050612eaa85612e5c565b9450612e71565b94509492505050565b5f82612ec95760019050612f84565b81612ed6575f9050612f84565b8160018114612eec5760028114612ef657612f25565b6001915050612f84565b60ff841115612f0857612f07612e2f565b5b8360020a915084821115612f1f57612f1e612e2f565b5b50612f84565b5060208310610133831016604e8410600b8410161715612f5a5782820a905083811115612f5557612f54612e2f565b5b612f84565b612f678484846001612e68565b92509050818404811115612f7e57612f7d612e2f565b5b81810290505b9392505050565b5f612f958261299c565b9150612fa083612ab8565b9250612fcd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612eba565b905092915050565b5f612fdf8261299c565b9150612fea8361299c565b9250828202612ff88161299c565b9150828204841483151761300f5761300e612e2f565b5b5092915050565b7f53656e646572206164647265737320697320626c6f636b6564000000000000005f82015250565b5f61304a6019836128ab565b915061305582613016565b602082019050919050565b5f6020820190508181035f8301526130778161303e565b9050919050565b7f526563697069656e74206164647265737320697320626c6f636b6564000000005f82015250565b5f6130b2601c836128ab565b91506130bd8261307e565b602082019050919050565b5f6020820190508181035f8301526130df816130a6565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61311a6017836128ab565b9150613125826130e6565b602082019050919050565b5f6020820190508181035f8301526131478161310e565b9050919050565b5f8151905061315c81612972565b92915050565b5f602082840312156131775761317661293a565b5b5f6131848482850161314e565b91505092915050565b5f6040820190506131a05f830185612b17565b6131ad6020830184612b17565b9392505050565b5f60c0820190506131c75f830189612b17565b6131d46020830188612a40565b6131e16040830187612e07565b6131ee6060830186612e07565b6131fb6080830185612b17565b61320860a0830184612a40565b979650505050505050565b5f81519050613221816129a5565b92915050565b5f5f5f6060848603121561323e5761323d61293a565b5b5f61324b86828701613213565b935050602061325c86828701613213565b925050604061326d86828701613213565b9150509250925092565b5f60408201905061328a5f830185612b17565b6132976020830184612a40565b9392505050565b6132a781612a0d565b81146132b1575f5ffd5b50565b5f815190506132c28161329e565b92915050565b5f602082840312156132dd576132dc61293a565b5b5f6132ea848285016132b4565b91505092915050565b7f43616e6e6f7420616464206561726c79206275796572732061667465722074725f8201527f6164696e6720697320656e61626c656400000000000000000000000000000000602082015250565b5f61334d6030836128ab565b9150613358826132f3565b604082019050919050565b5f6020820190508181035f83015261337a81613341565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c69642077616c6c65742061646472657373000000000000000000005f82015250565b5f6133e26016836128ab565b91506133ed826133ae565b602082019050919050565b5f6020820190508181035f83015261340f816133d6565b9050919050565b7f4561726c7920627579696e6720706861736520616c726561647920656e6465645f82015250565b5f61344a6020836128ab565b915061345582613416565b602082019050919050565b5f6020820190508181035f8301526134778161343e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134d86024836128ab565b91506134e38261347e565b604082019050919050565b5f6020820190508181035f830152613505816134cc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135666022836128ab565b91506135718261350c565b604082019050919050565b5f6020820190508181035f8301526135938161355a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135f46025836128ab565b91506135ff8261359a565b604082019050919050565b5f6020820190508181035f830152613621816135e8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136826023836128ab565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137106029836128ab565b915061371b826136b6565b604082019050919050565b5f6020820190508181035f83015261373d81613704565b9050919050565b7f4f6e6c79206561726c79206275796572732063616e20707572636861736520645f8201527f7572696e67206561726c79207068617365000000000000000000000000000000602082015250565b5f61379e6031836128ab565b91506137a982613744565b604082019050919050565b5f6020820190508181035f8301526137cb81613792565b9050919050565b5f6137dc8261299c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361380e5761380d612e2f565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61384d6017836128ab565b915061385882613819565b602082019050919050565b5f6020820190508181035f83015261387a81613841565b9050919050565b5f61388b8261299c565b91506138968361299c565b92508282039050818111156138ae576138ad612e2f565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138e681612961565b82525050565b5f6138f783836138dd565b60208301905092915050565b5f602082019050919050565b5f613919826138b4565b61392381856138be565b935061392e836138ce565b805f5b8381101561395e57815161394588826138ec565b975061395083613903565b925050600181019050613931565b5085935050505092915050565b5f60a08201905061397e5f830188612a40565b61398b6020830187612e07565b818103604083015261399d818661390f565b90506139ac6060830185612b17565b6139b96080830184612a40565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139fa8261299c565b9150613a058361299c565b925082613a1557613a146139c3565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a7a6021836128ab565b9150613a8582613a20565b604082019050919050565b5f6020820190508181035f830152613aa781613a6e565b9050919050565b5f613ab88261299c565b9150613ac38361299c565b9250828201905080821115613adb57613ada612e2f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b15601b836128ab565b9150613b2082613ae1565b602082019050919050565b5f6020820190508181035f830152613b4281613b09565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122001c68211ab9380fcc271d220e6ad0e6631055d525d7b82fbb9a43603897577ba64736f6c63430008210033
Deployed Bytecode
0x608060405260043610610138575f3560e01c80637d1db4a5116100aa578063a9059cbb1161006e578063a9059cbb146103b5578063bf474bed146103f1578063bf7695bf1461041b578063dd62ed3e14610443578063eadd92631461047f578063f4293890146104955761013f565b80637d1db4a5146102f75780638a8c523c146103215780638da5cb5b146103375780638f9a55c01461036157806395d89b411461038b5761013f565b806323b872dd116100fc57806323b872dd14610213578063313ce5671461024f57806351bc3c851461027957806370a082311461028f578063715018a6146102cb578063751039fc146102e15761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a9578063109daa99146101d357806318160ddd146101e95761013f565b3661013f57005b5f5ffd5b34801561014e575f5ffd5b506101576104ab565b6040516101649190612911565b60405180910390f35b348015610178575f5ffd5b50610193600480360381019061018e91906129cf565b6104e8565b6040516101a09190612a27565b60405180910390f35b3480156101b4575f5ffd5b506101bd610596565b6040516101ca9190612a4f565b60405180910390f35b3480156101de575f5ffd5b506101e761059c565b005b3480156101f4575f5ffd5b506101fd610671565b60405161020a9190612a4f565b60405180910390f35b34801561021e575f5ffd5b5061023960048036038101906102349190612a68565b610696565b6040516102469190612a27565b60405180910390f35b34801561025a575f5ffd5b5061026361087e565b6040516102709190612ad3565b60405180910390f35b348015610284575f5ffd5b5061028d610886565b005b34801561029a575f5ffd5b506102b560048036038101906102b09190612aec565b61091d565b6040516102c29190612a4f565b60405180910390f35b3480156102d6575f5ffd5b506102df610963565b005b3480156102ec575f5ffd5b506102f5610ab3565b005b348015610302575f5ffd5b5061030b610be9565b6040516103189190612a4f565b60405180910390f35b34801561032c575f5ffd5b50610335610bef565b005b348015610342575f5ffd5b5061034b611113565b6040516103589190612b26565b60405180910390f35b34801561036c575f5ffd5b5061037561113a565b6040516103829190612a4f565b60405180910390f35b348015610396575f5ffd5b5061039f611140565b6040516103ac9190612911565b60405180910390f35b3480156103c0575f5ffd5b506103db60048036038101906103d691906129cf565b61117d565b6040516103e89190612a27565b60405180910390f35b3480156103fc575f5ffd5b506104056112b5565b6040516104129190612a4f565b60405180910390f35b348015610426575f5ffd5b50610441600480360381019061043c9190612c7f565b6112bb565b005b34801561044e575f5ffd5b5061046960048036038101906104649190612cc6565b611513565b6040516104769190612a4f565b60405180910390f35b34801561048a575f5ffd5b50610493611595565b005b3480156104a0575f5ffd5b506104a96116bf565b005b60606040518060400160405280600d81526020017f42616e6b722050656e6775696e00000000000000000000000000000000000000815250905090565b5f60045f6104f461172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057190612d4e565b60405180910390fd5b61058c61058561172e565b8484611735565b6001905092915050565b60145481565b6105a461172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890612db6565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106679190612e16565b60405180910390a1565b5f6009600a6106809190612f8b565b655af3107a40006106919190612fd5565b905090565b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071890613060565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a2906130c8565b60405180910390fd5b6107b68484846118f8565b610873846107c261172e565b61086e85604051806060016040528060288152602001613b4a6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61082561172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123849092919063ffffffff16565b611735565b600190509392505050565b5f6009905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108c661172e565b73ffffffffffffffffffffffffffffffffffffffff16146108e5575f5ffd5b5f6108ef3061091d565b90505f81111561090357610902816123e6565b5b5f4790505f811115610919576109188161265a565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61096b61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90612db6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610abb61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90612db6565b60405180910390fd5b6009600a610b569190612f8b565b655af3107a4000610b679190612fd5565b6011819055506009600a610b7b9190612f8b565b655af3107a4000610b8c9190612fd5565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610bc19190612f8b565b655af3107a4000610bd29190612fd5565b604051610bdf9190612a4f565b60405180910390a1565b60115481565b610bf761172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7b90612db6565b60405180910390fd5b601660149054906101000a900460ff1615610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90613130565b60405180910390fd5b734752ba5dbc23f44d87826276bf6fd6b1c372ad2460155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d723060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d5c9190612f8b565b655af3107a4000610d6d9190612fd5565b611735565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e009190613162565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e86573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eaa9190613162565b6040518363ffffffff1660e01b8152600401610ec792919061318d565b6020604051808303815f875af1158015610ee3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f079190613162565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f8e3061091d565b5f5f610f98611113565b426040518863ffffffff1660e01b8152600401610fba969594939291906131b4565b60606040518083038185885af1158015610fd6573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ffb9190613227565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161109b929190613277565b6020604051808303815f875af11580156110b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110db91906132c8565b5060016016806101000a81548160ff0219169083151502179055506001601660146101000a81548160ff021916908315150217905550565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600c81526020017f42616e6b7250656e6775696e0000000000000000000000000000000000000000815250905090565b5f60045f61118961172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120690613060565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906130c8565b60405180910390fd5b6112ab6112a461172e565b84846118f8565b6001905092915050565b60135481565b6112c361172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790612db6565b60405180910390fd5b601660149054906101000a900460ff16156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790613363565b60405180910390fd5b5f5f90505b815181101561150f575f73ffffffffffffffffffffffffffffffffffffffff168282815181106113d8576113d7613381565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d906133f8565b60405180910390fd5b600160055f84848151811061144e5761144d613381565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508181815181106114b8576114b7613381565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fa4d858c941b40b3b35e06f007c32b16a2b9e03e32319c913b86243cc396cb90d60405160405180910390a280806001019150506113a5565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61159d61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190612db6565b60405180910390fd5b60105f9054906101000a900460ff16611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90613460565b60405180910390fd5b5f60105f6101000a81548160ff0219169083151502179055507f9301d805eb0ea45199f9a0527be1708a5bd8cb9746cc1bf03ad58027e71127bd60405160405180910390a1565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116ff61172e565b73ffffffffffffffffffffffffffffffffffffffff161461171e575f5ffd5b5f47905061172b8161265a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a906134ee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118089061357c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118eb9190612a4f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d9061360a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb90613698565b60405180910390fd5b5f8111611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90613726565b60405180910390fd5b5f5f9050611a22611113565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a905750611a60611113565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fc05760105f9054906101000a900460ff168015611afc575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b55575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c375760055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2d906137b4565b60405180910390fd5b5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ce0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d33575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d8e57611d746064611d66600b54600f5411611d5357600754611d57565b6009545b856126c290919063ffffffff16565b61273990919063ffffffff16565b9050600f5f815480929190611d88906137d2565b91905055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e5a57611e576064611e49600c54600f5411611e3657600854611e3a565b600a545b856126c290919063ffffffff16565b61273990919063ffffffff16565b90505b5f611e643061091d565b9050601660159054906101000a900460ff16158015611ecf575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611ee5575060168054906101000a900460ff165b8015611ef357506013548110155b8015611f025750600d54600f54115b15611fbe57601854431115611f19575f6017819055505b600360175410611f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5590613863565b60405180910390fd5b611f7b611f7684611f7184601454612782565b612782565b6123e6565b5f4790505f811180611f8f57506013548210155b15611f9e57611f9d8161265a565b5b60175f815480929190611fb0906137d2565b919050555043601881905550505b505b5f8111156120bf576120188160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461279a90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b69190612a4f565b60405180910390a35b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214090613060565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156121d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ca906130c8565b60405180910390fd5b6122238260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127f790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122c661227a82846127f790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461279a90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61236984866127f790919063ffffffff16565b6040516123769190612a4f565b60405180910390a350505050565b5f8383111582906123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c29190612911565b60405180910390fd5b505f83856123d99190613881565b9050809150509392505050565b6001601660156101000a81548160ff0219169083151502179055505f81031561263d575f600267ffffffffffffffff81111561242557612424612b43565b5b6040519080825280602002602001820160405280156124535781602001602082028036833780820191505090505b50905030815f8151811061246a57612469613381565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561250e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125329190613162565b8160018151811061254657612545613381565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125ac3060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611735565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161260e95949392919061396b565b5f604051808303815f87803b158015612625575f5ffd5b505af1158015612637573d5f5f3e3d5ffd5b50505050505b5f601660156101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126be573d5f5f3e3d5ffd5b5050565b5f5f83036126d2575f9050612733565b5f82846126df9190612fd5565b90508284826126ee91906139f0565b1461272e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272590613a90565b60405180910390fd5b809150505b92915050565b5f61277a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612840565b905092915050565b5f8183116127905782612792565b815b905092915050565b5f5f82846127a89190613aae565b9050838110156127ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e490613b2b565b60405180910390fd5b8091505092915050565b5f61283883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612384565b905092915050565b5f5f83118290612886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287d9190612911565b60405180910390fd5b505f838561289491906139f0565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6128e3826128a1565b6128ed81856128ab565b93506128fd8185602086016128bb565b612906816128c9565b840191505092915050565b5f6020820190508181035f83015261292981846128d9565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61296b82612942565b9050919050565b61297b81612961565b8114612985575f5ffd5b50565b5f8135905061299681612972565b92915050565b5f819050919050565b6129ae8161299c565b81146129b8575f5ffd5b50565b5f813590506129c9816129a5565b92915050565b5f5f604083850312156129e5576129e461293a565b5b5f6129f285828601612988565b9250506020612a03858286016129bb565b9150509250929050565b5f8115159050919050565b612a2181612a0d565b82525050565b5f602082019050612a3a5f830184612a18565b92915050565b612a498161299c565b82525050565b5f602082019050612a625f830184612a40565b92915050565b5f5f5f60608486031215612a7f57612a7e61293a565b5b5f612a8c86828701612988565b9350506020612a9d86828701612988565b9250506040612aae868287016129bb565b9150509250925092565b5f60ff82169050919050565b612acd81612ab8565b82525050565b5f602082019050612ae65f830184612ac4565b92915050565b5f60208284031215612b0157612b0061293a565b5b5f612b0e84828501612988565b91505092915050565b612b2081612961565b82525050565b5f602082019050612b395f830184612b17565b92915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b79826128c9565b810181811067ffffffffffffffff82111715612b9857612b97612b43565b5b80604052505050565b5f612baa612931565b9050612bb68282612b70565b919050565b5f67ffffffffffffffff821115612bd557612bd4612b43565b5b602082029050602081019050919050565b5f5ffd5b5f612bfc612bf784612bbb565b612ba1565b90508083825260208201905060208402830185811115612c1f57612c1e612be6565b5b835b81811015612c485780612c348882612988565b845260208401935050602081019050612c21565b5050509392505050565b5f82601f830112612c6657612c65612b3f565b5b8135612c76848260208601612bea565b91505092915050565b5f60208284031215612c9457612c9361293a565b5b5f82013567ffffffffffffffff811115612cb157612cb061293e565b5b612cbd84828501612c52565b91505092915050565b5f5f60408385031215612cdc57612cdb61293a565b5b5f612ce985828601612988565b9250506020612cfa85828601612988565b9150509250929050565b7f417070726f766572206164647265737320697320626c6f636b656400000000005f82015250565b5f612d38601b836128ab565b9150612d4382612d04565b602082019050919050565b5f6020820190508181035f830152612d6581612d2c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612da06020836128ab565b9150612dab82612d6c565b602082019050919050565b5f6020820190508181035f830152612dcd81612d94565b9050919050565b5f819050919050565b5f819050919050565b5f612e00612dfb612df684612dd4565b612ddd565b61299c565b9050919050565b612e1081612de6565b82525050565b5f602082019050612e295f830184612e07565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612eb157808604811115612e8d57612e8c612e2f565b5b6001851615612e9c5780820291505b8081029050612eaa85612e5c565b9450612e71565b94509492505050565b5f82612ec95760019050612f84565b81612ed6575f9050612f84565b8160018114612eec5760028114612ef657612f25565b6001915050612f84565b60ff841115612f0857612f07612e2f565b5b8360020a915084821115612f1f57612f1e612e2f565b5b50612f84565b5060208310610133831016604e8410600b8410161715612f5a5782820a905083811115612f5557612f54612e2f565b5b612f84565b612f678484846001612e68565b92509050818404811115612f7e57612f7d612e2f565b5b81810290505b9392505050565b5f612f958261299c565b9150612fa083612ab8565b9250612fcd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612eba565b905092915050565b5f612fdf8261299c565b9150612fea8361299c565b9250828202612ff88161299c565b9150828204841483151761300f5761300e612e2f565b5b5092915050565b7f53656e646572206164647265737320697320626c6f636b6564000000000000005f82015250565b5f61304a6019836128ab565b915061305582613016565b602082019050919050565b5f6020820190508181035f8301526130778161303e565b9050919050565b7f526563697069656e74206164647265737320697320626c6f636b6564000000005f82015250565b5f6130b2601c836128ab565b91506130bd8261307e565b602082019050919050565b5f6020820190508181035f8301526130df816130a6565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61311a6017836128ab565b9150613125826130e6565b602082019050919050565b5f6020820190508181035f8301526131478161310e565b9050919050565b5f8151905061315c81612972565b92915050565b5f602082840312156131775761317661293a565b5b5f6131848482850161314e565b91505092915050565b5f6040820190506131a05f830185612b17565b6131ad6020830184612b17565b9392505050565b5f60c0820190506131c75f830189612b17565b6131d46020830188612a40565b6131e16040830187612e07565b6131ee6060830186612e07565b6131fb6080830185612b17565b61320860a0830184612a40565b979650505050505050565b5f81519050613221816129a5565b92915050565b5f5f5f6060848603121561323e5761323d61293a565b5b5f61324b86828701613213565b935050602061325c86828701613213565b925050604061326d86828701613213565b9150509250925092565b5f60408201905061328a5f830185612b17565b6132976020830184612a40565b9392505050565b6132a781612a0d565b81146132b1575f5ffd5b50565b5f815190506132c28161329e565b92915050565b5f602082840312156132dd576132dc61293a565b5b5f6132ea848285016132b4565b91505092915050565b7f43616e6e6f7420616464206561726c79206275796572732061667465722074725f8201527f6164696e6720697320656e61626c656400000000000000000000000000000000602082015250565b5f61334d6030836128ab565b9150613358826132f3565b604082019050919050565b5f6020820190508181035f83015261337a81613341565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c69642077616c6c65742061646472657373000000000000000000005f82015250565b5f6133e26016836128ab565b91506133ed826133ae565b602082019050919050565b5f6020820190508181035f83015261340f816133d6565b9050919050565b7f4561726c7920627579696e6720706861736520616c726561647920656e6465645f82015250565b5f61344a6020836128ab565b915061345582613416565b602082019050919050565b5f6020820190508181035f8301526134778161343e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134d86024836128ab565b91506134e38261347e565b604082019050919050565b5f6020820190508181035f830152613505816134cc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135666022836128ab565b91506135718261350c565b604082019050919050565b5f6020820190508181035f8301526135938161355a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135f46025836128ab565b91506135ff8261359a565b604082019050919050565b5f6020820190508181035f830152613621816135e8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136826023836128ab565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137106029836128ab565b915061371b826136b6565b604082019050919050565b5f6020820190508181035f83015261373d81613704565b9050919050565b7f4f6e6c79206561726c79206275796572732063616e20707572636861736520645f8201527f7572696e67206561726c79207068617365000000000000000000000000000000602082015250565b5f61379e6031836128ab565b91506137a982613744565b604082019050919050565b5f6020820190508181035f8301526137cb81613792565b9050919050565b5f6137dc8261299c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361380e5761380d612e2f565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61384d6017836128ab565b915061385882613819565b602082019050919050565b5f6020820190508181035f83015261387a81613841565b9050919050565b5f61388b8261299c565b91506138968361299c565b92508282039050818111156138ae576138ad612e2f565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138e681612961565b82525050565b5f6138f783836138dd565b60208301905092915050565b5f602082019050919050565b5f613919826138b4565b61392381856138be565b935061392e836138ce565b805f5b8381101561395e57815161394588826138ec565b975061395083613903565b925050600181019050613931565b5085935050505092915050565b5f60a08201905061397e5f830188612a40565b61398b6020830187612e07565b818103604083015261399d818661390f565b90506139ac6060830185612b17565b6139b96080830184612a40565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139fa8261299c565b9150613a058361299c565b925082613a1557613a146139c3565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a7a6021836128ab565b9150613a8582613a20565b604082019050919050565b5f6020820190508181035f830152613aa781613a6e565b9050919050565b5f613ab88261299c565b9150613ac38361299c565b9250828201905080821115613adb57613ada612e2f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b15601b836128ab565b9150613b2082613ae1565b602082019050919050565b5f6020820190508181035f830152613b4281613b09565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122001c68211ab9380fcc271d220e6ad0e6631055d525d7b82fbb9a43603897577ba64736f6c63430008210033
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)