// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.12;
//
// ██╗ ██╗██╗██╗ ██╗
// ██║ ██║██║██║ ██║
// ██║ █╗ ██║██║██║ ██║
// ██║███╗██║██║██║ ██║
// ╚███╔███╔╝██║███████╗███████╗
// ╚══╝╚══╝ ╚═╝╚══════╝╚══════╝
//
// Will Scarcat — $WILL
// ─────────────────────────────────────────
// Will Scarlett left Sherwood.
// Found Robinhood Chain.
// Now he's a cat. 🐱🗡️
//
// Hold $WILL → Pick Your Cat → Earn automatically.
// Switch anytime. No penalty. 6 cats available.
//
// CashCat · meow · gmeow · SHIBCAT · BUFFCAT · APPLCAT
//
// 5/5 tax → 0/0 after launch · LP to be burned · Renouncing on launch
//
// ─────────────────────────────────────────
// Supply: 420,690,000,000 $WILL
// Decimals: 9
// Chain: Robinhood Chain (4663)
// ─────────────────────────────────────────
//
// 🌐 willdapp.com
// 💬 t.me/WillScarcat
// 🐦 x.com/WillScarcat
// 📜 github.com/WillScarcat/will-scarcat-dapp
//
// "The most stylish outlaw in Sherwood.
// Now earning cat tokens on Robinhood Chain."
//
// 🐱🏹 Pick Your Cat.
//
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;
}
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this;
return msg.data;
}
}
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);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}
/// @dev Minimal surface WillToken needs from WillDividendTracker. Kept as an
/// interface (instead of importing the concrete contract) so the two
/// files don't need a circular import — WillDividendTracker.sol is the
/// one that imports WillToken.sol, not the other way around.
interface IWillDividendTracker {
function setTokenBalance(address account) external;
function process(uint256 gas) external returns (uint256, uint256, uint256);
}
/// @title Will Scarcat ($WILL)
/// @notice Every buy/sell is taxed in WILL. Once the contract's accumulated tax
/// tokens are worth `ethPriceToSwap`, they're swapped for ETH and
/// forwarded to WillDividendTracker, which converts that ETH to
/// CashCat and streams it to holders pro-rata. There is no marketing
/// cut — 100% of collected tax becomes CashCat reflections.
contract WillToken is Context, IERC20, Ownable {
using SafeMath for uint256;
event AutoDistributeEnabledUpdated(bool enabled);
event ProcessedDividendTracker(uint256 iterations, uint256 claims, uint256 lastProcessedIndex, bool indexed automatic, uint256 gas, address indexed processor);
event SendDividends(uint256 ethAmount);
event LimitsRemoved();
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
// ── fixed deployment addresses ───────────────────────────────────────────
address public constant ROUTER_ADDRESS = 0x89e5DB8B5aA49aA85AC63f691524311AEB649eba;
address public constant FACTORY_ADDRESS = 0x8bcEaA40B9AcdfAedF85AdF4FF01F5Ad6517937f;
address public constant WETH_ADDRESS = 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73;
address public constant TAX_WALLET = 0xc20c77548260d7161a764cb89b26D96b8De9328d;
address public constant DEAD_WALLET = 0x000000000000000000000000000000000000dEaD;
IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(ROUTER_ADDRESS);
address public uniswapV2Pair = address(0);
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private botWallets;
mapping(address => bool) private _isExcludedFromFee;
mapping(address => bool) private _isExcludedFromRewards;
string private _name = "Will Scarcat";
string private _symbol = "WILL";
uint8 private _decimals = 9;
uint256 private _tTotal = 420_690_000_000 * 10 ** _decimals;
bool private inSwap;
bool public autoDistributeEnabled = true;
uint256 public ethPriceToSwap = 200000000000000000; // .2 ETH worth of WILL triggers a distribution
uint256 public _maxWalletAmount = _tTotal * 2 / 100; // 2%
uint256 public _maxTxAmount = _tTotal * 2 / 100; // 2%
bool public limitsRemoved;
uint256 public gasForProcessing = 50000;
struct TaxFees {
uint256 buyFee;
uint256 sellFee;
}
TaxFees public taxFees;
IWillDividendTracker public dividendTracker;
constructor () {
require(uniswapV2Router.factory() == FACTORY_ADDRESS, "factory mismatch");
require(uniswapV2Router.WETH() == WETH_ADDRESS, "weth mismatch");
_balances[TAX_WALLET] = _tTotal;
emit Transfer(address(0), TAX_WALLET, _tTotal);
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[TAX_WALLET] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromRewards[owner()] = true;
_isExcludedFromRewards[TAX_WALLET] = true;
_isExcludedFromRewards[address(this)] = true;
_isExcludedFromRewards[DEAD_WALLET] = true;
uniswapV2Pair = IUniswapV2Factory(FACTORY_ADDRESS).createPair(address(this), WETH_ADDRESS);
_isExcludedFromRewards[uniswapV2Pair] = true;
taxFees = TaxFees(5, 5);
}
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 view 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) {
_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) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner() {
_maxWalletAmount = maxWalletAmount * 10 ** _decimals;
}
function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
_maxTxAmount = maxTxAmount * 10 ** _decimals;
}
/// @notice Permanently lifts max-wallet and max-tx limits. Owner-only, one shot.
function removeLimits() external onlyOwner {
require(!limitsRemoved, "Limits already removed");
limitsRemoved = true;
_maxWalletAmount = _tTotal;
_maxTxAmount = _tTotal;
emit LimitsRemoved();
}
function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
addRemoveFee(addresses, isExcludeFromFee);
}
function excludeIncludeFromRewards(address[] calldata addresses, bool isExcluded) public onlyOwner {
addRemoveRewards(addresses, isExcluded);
}
function isExcludedFromRewards(address addr) public view returns (bool) {
return _isExcludedFromRewards[addr];
}
function addRemoveRewards(address[] calldata addresses, bool flag) private {
for (uint256 i = 0; i < addresses.length; i++) {
address addr = addresses[i];
_isExcludedFromRewards[addr] = flag;
}
}
function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner {
ethPriceToSwap = ethPriceToSwap_;
}
function addRemoveFee(address[] calldata addresses, bool flag) private {
for (uint256 i = 0; i < addresses.length; i++) {
address addr = addresses[i];
_isExcludedFromFee[addr] = flag;
}
}
function setTaxFees(uint256 buyFee, uint256 sellFee) external onlyOwner {
taxFees.buyFee = buyFee;
taxFees.sellFee = sellFee;
}
function isAddressBlocked(address addr) public view returns (bool) {
return botWallets[addr];
}
function blockAddresses(address[] memory addresses) external onlyOwner() {
blockUnblockAddress(addresses, true);
}
function unblockAddresses(address[] memory addresses) external onlyOwner() {
blockUnblockAddress(addresses, false);
}
function blockUnblockAddress(address[] memory addresses, bool doBlock) private {
for (uint256 i = 0; i < addresses.length; i++) {
address addr = addresses[i];
if (doBlock) {
botWallets[addr] = true;
} else {
delete botWallets[addr];
}
}
}
function setAutoDistributeEnabled(bool _enabled) public onlyOwner {
autoDistributeEnabled = _enabled;
emit AutoDistributeEnabledUpdated(_enabled);
}
receive() external payable {}
function getTokenAmountByEthPrice() public view returns (uint256) {
address[] memory path = new address[](2);
path[0] = WETH_ADDRESS;
path[1] = address(this);
return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
}
function isExcludedFromFee(address account) public view returns (bool) {
return _isExcludedFromFee[account];
}
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");
bool isSell = false;
bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
uint256 holderBalance = balanceOf(to).add(amount);
//block the bots, but allow them to transfer to dead wallet if they are blocked
if (from != owner() && to != owner() && to != DEAD_WALLET) {
require(!botWallets[from] && !botWallets[to], "bots are not allowed to sell or transfer tokens");
}
if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount");
}
if (from == uniswapV2Pair) {
require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
}
if (from != uniswapV2Pair && to == uniswapV2Pair) {//if sell
//only tax if tokens are going back to the pool
isSell = true;
sellTaxTokens();
}
if (from != uniswapV2Pair && to != uniswapV2Pair) {
require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
}
_tokenTransfer(from, to, amount, takeFees, isSell, true);
}
function sellTaxTokens() private {
uint256 contractTokenBalance = balanceOf(address(this));
if (contractTokenBalance > 0) {
uint256 tokenAmount = getTokenAmountByEthPrice();
if (contractTokenBalance >= tokenAmount && !inSwap && autoDistributeEnabled) {
distributeShares(tokenAmount);
}
}
}
function updateGasForProcessing(uint256 newValue) public onlyOwner {
require(newValue != gasForProcessing, "Cannot update gasForProcessing to same value");
gasForProcessing = newValue;
}
function distributeShares(uint256 balanceToShareTokens) private lockTheSwap {
swapTokensForEth(balanceToShareTokens);
uint256 ethBalance = address(this).balance;
sendEthDividends(ethBalance);
}
function claimTokens() external {
sellTaxTokens();
}
function setDividendTracker(address dividendContractAddress) external onlyOwner {
dividendTracker = IWillDividendTracker(dividendContractAddress);
}
function sendEthDividends(uint256 dividends) private {
(bool success,) = address(dividendTracker).call{value: dividends}("");
if (success) {
emit SendDividends(dividends);
}
}
function removeEthFromContract() external onlyOwner {
uint256 ethBalance = address(this).balance;
payable(owner()).transfer(ethBalance);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH_ADDRESS;
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
//this method is responsible for taking all fee, if takeFee is true
function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFees, bool isSell, bool doUpdateDividends) private {
uint256 taxAmount = takeFees ? amount.mul(taxFees.buyFee).div(100) : 0;
if (takeFees && isSell) {
taxAmount = amount.mul(taxFees.sellFee).div(100);
}
uint256 transferAmount = amount.sub(taxAmount);
_balances[sender] = _balances[sender].sub(amount);
_balances[recipient] = _balances[recipient].add(transferAmount);
_balances[address(this)] = _balances[address(this)].add(taxAmount);
emit Transfer(sender, recipient, amount);
if (doUpdateDividends) {
try dividendTracker.setTokenBalance(sender) {} catch {}
try dividendTracker.setTokenBalance(recipient) {} catch {}
try dividendTracker.process(gasForProcessing) returns (uint256 iterations, uint256 claims, uint256 lastProcessedIndex) {
emit ProcessedDividendTracker(iterations, claims, lastProcessedIndex, true, gasForProcessing, tx.origin);
} catch {}
}
}
}[
{
"type": "constructor",
"inputs": [],
"stateMutability": "nonpayable"
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "AutoDistributeEnabledUpdated",
"type": "event",
"inputs": [
{
"name": "enabled",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "LimitsRemoved",
"type": "event",
"inputs": [],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ProcessedDividendTracker",
"type": "event",
"inputs": [
{
"name": "iterations",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "claims",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "lastProcessedIndex",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "automatic",
"type": "bool",
"indexed": true,
"internalType": "bool"
},
{
"name": "gas",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "processor",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "SendDividends",
"type": "event",
"inputs": [
{
"name": "ethAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "DEAD_WALLET",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "FACTORY_ADDRESS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "ROUTER_ADDRESS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "TAX_WALLET",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "WETH_ADDRESS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "_maxTxAmount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "_maxWalletAmount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "autoDistributeEnabled",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "blockAddresses",
"type": "function",
"inputs": [
{
"name": "addresses",
"type": "address[]",
"internalType": "address[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "claimTokens",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "decreaseAllowance",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "subtractedValue",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "dividendTracker",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IWillDividendTracker"
}
],
"stateMutability": "view"
},
{
"name": "ethPriceToSwap",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "excludeIncludeFromFee",
"type": "function",
"inputs": [
{
"name": "addresses",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "isExcludeFromFee",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "excludeIncludeFromRewards",
"type": "function",
"inputs": [
{
"name": "addresses",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "isExcluded",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "gasForProcessing",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getTokenAmountByEthPrice",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "increaseAllowance",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "addedValue",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "isAddressBlocked",
"type": "function",
"inputs": [
{
"name": "addr",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isExcludedFromFee",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isExcludedFromRewards",
"type": "function",
"inputs": [
{
"name": "addr",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "limitsRemoved",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "removeEthFromContract",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "removeLimits",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setAutoDistributeEnabled",
"type": "function",
"inputs": [
{
"name": "_enabled",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setDividendTracker",
"type": "function",
"inputs": [
{
"name": "dividendContractAddress",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setEthPriceToSwap",
"type": "function",
"inputs": [
{
"name": "ethPriceToSwap_",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMaxTxAmount",
"type": "function",
"inputs": [
{
"name": "maxTxAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMaxWalletAmount",
"type": "function",
"inputs": [
{
"name": "maxWalletAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTaxFees",
"type": "function",
"inputs": [
{
"name": "buyFee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sellFee",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "taxFees",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "buyFee",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sellFee",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "recipient",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "unblockAddresses",
"type": "function",
"inputs": [
{
"name": "addresses",
"type": "address[]",
"internalType": "address[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "uniswapV2Pair",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "uniswapV2Router",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IUniswapV2Router02"
}
],
"stateMutability": "view"
},
{
"name": "updateGasForProcessing",
"type": "function",
"inputs": [
{
"name": "newValue",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x600180546001600160a01b03199081167389e5db8b5aa49aa85ac63f691524311aeb649eba1790915560028054909116905560c0604052600c60809081526b15da5b1b0814d8d85c98d85d60a21b60a05260089061005d9082610619565b5060408051808201909152600481526315d2531360e21b60208201526009906100869082610619565b50600a805460ff19166009908117825561009f916107cc565b6100ae906461f313f8806107e1565b600b819055600c805461ff0019166101001790556702c68af0bb140000600d556064906100dc9060026107e1565b6100e691906107f8565b600e556064600b5460026100fa91906107e1565b61010491906107f8565b600f5561c350601155348015610118575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001546040805163c45a015560e01b81529051738bceaa40b9acdfaedf85adf4ff01f5ad6517937f926001600160a01b03169163c45a01559160048083019260209291908290030181865afa1580156101b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d89190610817565b6001600160a01b0316146102265760405162461bcd60e51b815260206004820152601060248201526f0ccc2c6e8dee4f240dad2e6dac2e8c6d60831b60448201526064015b60405180910390fd5b600154604080516315ab88c960e31b81529051730bd7d308f8e1639fab988df18a8011f41eacad73926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015610281573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a59190610817565b6001600160a01b0316146102eb5760405162461bcd60e51b815260206004820152600d60248201526c0eecae8d040dad2e6dac2e8c6d609b1b604482015260640161021d565b600b5473c20c77548260d7161a764cb89b26d96b8de9328d5f818152600360209081527f9c239aebb03a3dcc4313016de96eeacb5b197aeb7df733dad791ef374b340d22849055604051938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600160065f61037d5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff1995861617905560069092527f217712193daed074444c5e9ec2330f80a0f3d13a979c5afcdbfacc3f41314bff805484166001908117909155308352908220805490931681179092556007906103fe5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff1995861617905560079092527f9574b35ac25bb49ce4f21d981b012fbb6414b2a86e6d6d4ea6c49f1de37392b380548416600190811790915530808452828420805486168317905561dead9093527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80549094161790925590516364e329cb60e11b81526004810191909152730bd7d308f8e1639fab988df18a8011f41eacad736024820152738bceaa40b9acdfaedf85adf4ff01f5ad6517937f9063c9c65396906044016020604051808303815f875af1158015610503573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105279190610817565b600280546001600160a01b0319166001600160a01b039290921691821790555f90815260076020908152604091829020805460ff19166001179055815180830190925260058083529101819052601281905560135561083d565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105a957607f821691505b6020821081036105c757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561061457805f5260205f20601f840160051c810160208510156105f25750805b601f840160051c820191505b81811015610611575f81556001016105fe565b50505b505050565b81516001600160401b0381111561063257610632610581565b610646816106408454610595565b846105cd565b6020601f821160018114610678575f83156106615750848201515b5f19600385901b1c1916600184901b178455610611565b5f84815260208120601f198516915b828110156106a75787850151825560209485019460019092019101610687565b50848210156106c457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561072257808504811115610706576107066106d3565b600184161561071457908102905b60019390931c9280026106eb565b935093915050565b5f82610738575060016107c6565b8161074457505f6107c6565b816001811461075a576002811461076457610780565b60019150506107c6565b60ff841115610775576107756106d3565b50506001821b6107c6565b5060208310610133831016604e8410600b84101617156107a3575081810a6107c6565b6107af5f1984846106e7565b805f19048211156107c2576107c26106d3565b0290505b92915050565b5f6107da60ff84168361072a565b9392505050565b80820281158282048414176107c6576107c66106d3565b5f8261081257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610827575f80fd5b81516001600160a01b03811681146107da575f80fd5b61254c8061084a5f395ff3fe608060405260043610610283575f3560e01c8063715018a6116101555780639b0e2e86116100be578063b3b64bcb11610078578063b3b64bcb146107a6578063b94a6dfe146107c5578063dd62ed3e146107ec578063e7dad4f914610830578063ec28438a14610867578063f2fde38b14610886575f80fd5b80639b0e2e86146107005780639c1b8af51461071f578063a01c348314610734578063a457c2d714610749578063a9059cbb14610768578063b2abbbc414610787575f80fd5b8063871c128d1161010f578063871c128d146106575780638823151b146106765780638da5cb5b1461069d57806395d89b41146106b957806397995706146106cd57806398acb5d8146106e1575f80fd5b8063715018a6146105bd57806371cd56af146105d1578063751039fc146105f05780637d1db4a51461060457806381230a831461061957806385d4787b14610638575f80fd5b8063280d3821116101f757806349bd5a5e116101b157806349bd5a5e146104e25780635342acb41461050157806354a5df1f14610538578063625e63001461054d5780636c0a24eb1461057457806370a0823114610589575f80fd5b8063280d38211461043c5780632c1f521614610450578063313ce5671461046f5780633950935114610490578063441d801f146104af57806348c54b9d146104ce575f80fd5b80630e832273116102485780630e8322731461036f5780631694505e146103a657806318160ddd146103c55780631d6f9655146103e357806323b872dd146103fc57806327a14fc21461041b575f80fd5b8063040141e51461028e5780630647a94d146102d257806306fdde0314610300578063095ea7b3146103215780630ddc097614610340575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102b5730bd7d308f8e1639fab988df18a8011f41eacad7381565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102dd575f80fd5b50600c546102f090610100900460ff1681565b60405190151581526020016102c9565b34801561030b575f80fd5b506103146108a5565b6040516102c99190611e73565b34801561032c575f80fd5b506102f061033b366004611ec3565b610935565b34801561034b575f80fd5b5060125460135461035a919082565b604080519283526020830191909152016102c9565b34801561037a575f80fd5b506102f0610389366004611eeb565b6001600160a01b03165f9081526007602052604090205460ff1690565b3480156103b1575f80fd5b506001546102b5906001600160a01b031681565b3480156103d0575f80fd5b50600b545b6040519081526020016102c9565b3480156103ee575f80fd5b506010546102f09060ff1681565b348015610407575f80fd5b506102f0610416366004611f04565b61094b565b348015610426575f80fd5b5061043a610435366004611f3e565b6109b2565b005b348015610447575f80fd5b5061043a610a07565b34801561045b575f80fd5b506014546102b5906001600160a01b031681565b34801561047a575f80fd5b50600a5460405160ff90911681526020016102c9565b34801561049b575f80fd5b506102f06104aa366004611ec3565b610a7b565b3480156104ba575f80fd5b5061043a6104c9366004611f64565b610ab0565b3480156104d9575f80fd5b5061043a610ae9565b3480156104ed575f80fd5b506002546102b5906001600160a01b031681565b34801561050c575f80fd5b506102f061051b366004611eeb565b6001600160a01b03165f9081526006602052604090205460ff1690565b348015610543575f80fd5b506103d5600d5481565b348015610558575f80fd5b506102b573c20c77548260d7161a764cb89b26d96b8de9328d81565b34801561057f575f80fd5b506103d5600e5481565b348015610594575f80fd5b506103d56105a3366004611eeb565b6001600160a01b03165f9081526003602052604090205490565b3480156105c8575f80fd5b5061043a610af3565b3480156105dc575f80fd5b5061043a6105eb366004611f64565b610b64565b3480156105fb575f80fd5b5061043a610b98565b34801561060f575f80fd5b506103d5600f5481565b348015610624575f80fd5b5061043a610633366004611fe3565b610c4f565b348015610643575f80fd5b5061043a61065236600461206b565b610c83565b348015610662575f80fd5b5061043a610671366004611f3e565b610cba565b348015610681575f80fd5b506102b5738bceaa40b9acdfaedf85adf4ff01f5ad6517937f81565b3480156106a8575f80fd5b505f546001600160a01b03166102b5565b3480156106c4575f80fd5b50610314610d4e565b3480156106d8575f80fd5b506103d5610d5d565b3480156106ec575f80fd5b5061043a6106fb366004611eeb565b610e80565b34801561070b575f80fd5b5061043a61071a36600461206b565b610ecb565b34801561072a575f80fd5b506103d560115481565b34801561073f575f80fd5b506102b561dead81565b348015610754575f80fd5b506102f0610763366004611ec3565b610efe565b348015610773575f80fd5b506102f0610782366004611ec3565b610f4b565b348015610792575f80fd5b5061043a6107a1366004611f3e565b610f57565b3480156107b1575f80fd5b5061043a6107c0366004612108565b610f85565b3480156107d0575f80fd5b506102b57389e5db8b5aa49aa85ac63f691524311aeb649eba81565b3480156107f7575f80fd5b506103d5610806366004612121565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561083b575f80fd5b506102f061084a366004611eeb565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610872575f80fd5b5061043a610881366004611f3e565b611002565b348015610891575f80fd5b5061043a6108a0366004611eeb565b61104e565b6060600880546108b490612152565b80601f01602080910402602001604051908101604052809291908181526020018280546108e090612152565b801561092b5780601f106109025761010080835404028352916020019161092b565b820191905f5260205f20905b81548152906001019060200180831161090e57829003601f168201915b5050505050905090565b5f610941338484611135565b5060015b92915050565b5f610957848484611258565b6109a884336109a3856040518060600160405280602881526020016124ca602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906116a4565b611135565b5060019392505050565b5f546001600160a01b031633146109e45760405162461bcd60e51b81526004016109db9061218a565b60405180910390fd5b600a80546109f79160ff909116906122b6565b610a0190826122c4565b600e5550565b5f546001600160a01b03163314610a305760405162461bcd60e51b81526004016109db9061218a565b47610a425f546001600160a01b031690565b6001600160a01b03166108fc8290811502906040515f60405180830381858888f19350505050158015610a77573d5f803e3d5ffd5b5050565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916109419185906109a390866116dc565b5f546001600160a01b03163314610ad95760405162461bcd60e51b81526004016109db9061218a565b610ae4838383611741565b505050565b610af16117a4565b565b5f546001600160a01b03163314610b1c5760405162461bcd60e51b81526004016109db9061218a565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610b8d5760405162461bcd60e51b81526004016109db9061218a565b610ae48383836117f8565b5f546001600160a01b03163314610bc15760405162461bcd60e51b81526004016109db9061218a565b60105460ff1615610c0d5760405162461bcd60e51b8152602060048201526016602482015275131a5b5a5d1cc8185b1c9958591e481c995b5bdd995960521b60448201526064016109db565b6010805460ff19166001179055600b54600e819055600f556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a1565b5f546001600160a01b03163314610c785760405162461bcd60e51b81526004016109db9061218a565b601291909155601355565b5f546001600160a01b03163314610cac5760405162461bcd60e51b81526004016109db9061218a565b610cb7816001611855565b50565b5f546001600160a01b03163314610ce35760405162461bcd60e51b81526004016109db9061218a565b6011548103610d495760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460448201526b6f2073616d652076616c756560a01b60648201526084016109db565b601155565b6060600980546108b490612152565b6040805160028082526060820183525f9283929190602083019080368337019050509050730bd7d308f8e1639fab988df18a8011f41eacad73815f81518110610da857610da86122db565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610ddc57610ddc6122db565b6001600160a01b039283166020918202929092010152600154600d5460405163d06ca61f60e01b8152919092169163d06ca61f91610e1f91908590600401612332565b5f60405180830381865afa158015610e39573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e609190810190612352565b600181518110610e7257610e726122db565b602002602001015191505090565b5f546001600160a01b03163314610ea95760405162461bcd60e51b81526004016109db9061218a565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610ef45760405162461bcd60e51b81526004016109db9061218a565b610cb7815f611855565b5f61094133846109a3856040518060600160405280602581526020016124f260259139335f9081526004602090815260408083206001600160a01b038d16845290915290205491906116a4565b5f610941338484611258565b5f546001600160a01b03163314610f805760405162461bcd60e51b81526004016109db9061218a565b600d55565b5f546001600160a01b03163314610fae5760405162461bcd60e51b81526004016109db9061218a565b600c80548215156101000261ff00199091161790556040517fea8071ecae19c79f19f68cc3d2a4e7a556c7ab4ec713f0aa8180c26d41c6665590610ff790831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461102b5760405162461bcd60e51b81526004016109db9061218a565b600a805461103e9160ff909116906122b6565b61104890826122c4565b600f5550565b5f546001600160a01b031633146110775760405162461bcd60e51b81526004016109db9061218a565b6001600160a01b0381166110dc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109db565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109db565b6001600160a01b0382166111f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109db565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109db565b6001600160a01b03821661131e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109db565b5f811161137f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109db565b6001600160a01b0383165f90815260066020526040812054819060ff161580156113c157506001600160a01b0384165f9081526006602052604090205460ff16155b80156113da57505f546001600160a01b03868116911614155b80156113f357505f546001600160a01b03858116911614155b90505f61141e84611418876001600160a01b03165f9081526003602052604090205490565b906116dc565b90506114315f546001600160a01b031690565b6001600160a01b0316866001600160a01b03161415801561145f57505f546001600160a01b03868116911614155b801561147657506001600160a01b03851661dead14155b1561151f576001600160a01b0386165f9081526005602052604090205460ff161580156114bb57506001600160a01b0385165f9081526005602052604090205460ff16155b61151f5760405162461bcd60e51b815260206004820152602f60248201527f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c206f722060448201526e7472616e7366657220746f6b656e7360881b60648201526084016109db565b6001600160a01b0386165f9081526006602052604090205460ff1615801561155f57506001600160a01b0385165f9081526006602052604090205460ff16155b156115c657600f548411156115c65760405162461bcd60e51b815260206004820152602760248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152661e105b5bdd5b9d60ca1b60648201526084016109db565b6002546001600160a01b03908116908716036115fe57600e548111156115fe5760405162461bcd60e51b81526004016109db906123d9565b6002546001600160a01b0387811691161480159061162957506002546001600160a01b038681169116145b1561163a576001925061163a6117a4565b6002546001600160a01b0387811691161480159061166657506002546001600160a01b03868116911614155b1561168d57600e5481111561168d5760405162461bcd60e51b81526004016109db906123d9565b61169c868686858760016118d3565b505050505050565b5f81848411156116c75760405162461bcd60e51b81526004016109db9190611e73565b505f6116d3848661241e565b95945050505050565b5f806116e88385612431565b90508381101561173a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109db565b9392505050565b5f5b8281101561179e575f84848381811061175e5761175e6122db565b90506020020160208101906117739190611eeb565b6001600160a01b03165f908152600660205260409020805460ff191684151517905550600101611743565b50505050565b305f908152600360205260409020548015610cb7575f6117c2610d5d565b90508082101580156117d75750600c5460ff16155b80156117ea5750600c54610100900460ff165b15610a7757610a7781611b87565b5f5b8281101561179e575f848483818110611815576118156122db565b905060200201602081019061182a9190611eeb565b6001600160a01b03165f908152600760205260409020805460ff1916841515179055506001016117fa565b5f5b8251811015610ae4575f838281518110611873576118736122db565b6020026020010151905082156118aa576001600160a01b0381165f908152600560205260409020805460ff191660011790556118ca565b6001600160a01b0381165f908152600560205260409020805460ff191690555b50600101611857565b5f836118df575f6118fa565b6012546118fa906064906118f4908890611bb5565b90611c33565b90508380156119065750825b1561192357601354611920906064906118f4908890611bb5565b90505b5f61192e8683611c74565b6001600160a01b0389165f908152600360205260409020549091506119539087611c74565b6001600160a01b03808a165f90815260036020526040808220939093559089168152205461198190826116dc565b6001600160a01b0388165f908152600360205260408082209290925530815220546119ac90836116dc565b305f9081526003602090815260409182902092909255518781526001600160a01b0389811692908b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a38215611b7d57601454604051633974d3b160e01b81526001600160a01b038a8116600483015290911690633974d3b1906024015f604051808303815f87803b158015611a4b575f80fd5b505af1925050508015611a5c575060015b50601454604051633974d3b160e01b81526001600160a01b03898116600483015290911690633974d3b1906024015f604051808303815f87803b158015611aa1575f80fd5b505af1925050508015611ab2575060015b506014546011546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611aeb9160040190815260200190565b6060604051808303815f875af1925050508015611b25575060408051601f3d908101601f19168201909252611b2291810190612444565b60015b15611b7d57601154604080518581526020810185905280820184905260608101929092525132916001917fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989181900360800190a35050505b5050505050505050565b600c805460ff19166001179055611b9d81611cb5565b47611ba781611db7565b5050600c805460ff19169055565b5f825f03611bc457505f610945565b5f611bcf83856122c4565b905082611bdc858361246f565b1461173a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109db565b5f61173a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e47565b5f61173a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116a4565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ce857611ce86122db565b60200260200101906001600160a01b031690816001600160a01b031681525050730bd7d308f8e1639fab988df18a8011f41eacad7381600181518110611d3057611d306122db565b6001600160a01b039283166020918202929092010152600154611d569130911684611135565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d8e9085905f9086903090429060040161248e565b5f604051808303815f87803b158015611da5575f80fd5b505af115801561169c573d5f803e3d5ffd5b6014546040515f916001600160a01b03169083908381818185875af1925050503d805f8114611e01576040519150601f19603f3d011682016040523d82523d5f602084013e611e06565b606091505b505090508015610a77576040518281527fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19060200160405180910390a15050565b5f8183611e675760405162461bcd60e51b81526004016109db9190611e73565b505f6116d3848661246f565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114611ebe575f80fd5b919050565b5f8060408385031215611ed4575f80fd5b611edd83611ea8565b946020939093013593505050565b5f60208284031215611efb575f80fd5b61173a82611ea8565b5f805f60608486031215611f16575f80fd5b611f1f84611ea8565b9250611f2d60208501611ea8565b929592945050506040919091013590565b5f60208284031215611f4e575f80fd5b5035919050565b80358015158114611ebe575f80fd5b5f805f60408486031215611f76575f80fd5b833567ffffffffffffffff811115611f8c575f80fd5b8401601f81018613611f9c575f80fd5b803567ffffffffffffffff811115611fb2575f80fd5b8660208260051b8401011115611fc6575f80fd5b602091820194509250611fda908501611f55565b90509250925092565b5f8060408385031215611ff4575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561204057612040612003565b604052919050565b5f67ffffffffffffffff82111561206157612061612003565b5060051b60200190565b5f6020828403121561207b575f80fd5b813567ffffffffffffffff811115612091575f80fd5b8201601f810184136120a1575f80fd5b80356120b46120af82612048565b612017565b8082825260208201915060208360051b8501019250868311156120d5575f80fd5b6020840193505b828410156120fe576120ed84611ea8565b8252602093840193909101906120dc565b9695505050505050565b5f60208284031215612118575f80fd5b61173a82611f55565b5f8060408385031215612132575f80fd5b61213b83611ea8565b915061214960208401611ea8565b90509250929050565b600181811c9082168061216657607f821691505b60208210810361218457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561220e578085048111156121f2576121f26121bf565b600184161561220057908102905b60019390931c9280026121d7565b935093915050565b5f8261222457506001610945565b8161223057505f610945565b816001811461224657600281146122505761226c565b6001915050610945565b60ff841115612261576122616121bf565b50506001821b610945565b5060208310610133831016604e8410600b841016171561228f575081810a610945565b61229b5f1984846121d3565b805f19048211156122ae576122ae6121bf565b029392505050565b5f61173a60ff841683612216565b8082028115828204841417610945576109456121bf565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602084019350602083015f5b828110156123285781516001600160a01b0316865260209586019590910190600101612301565b5093949350505050565b828152604060208201525f61234a60408301846122ef565b949350505050565b5f60208284031215612362575f80fd5b815167ffffffffffffffff811115612378575f80fd5b8201601f81018413612388575f80fd5b80516123966120af82612048565b8082825260208201915060208360051b8501019250868311156123b7575f80fd5b6020840193505b828410156120fe5783518252602093840193909101906123be565b60208082526025908201527f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c6574206040820152641b1a5b5a5d60da1b606082015260800190565b81810381811115610945576109456121bf565b80820180821115610945576109456121bf565b5f805f60608486031215612456575f80fd5b5050815160208301516040909301519094929350919050565b5f8261248957634e487b7160e01b5f52601260045260245ffd5b500490565b85815284602082015260a060408201525f6124ac60a08301866122ef565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f022098a41d48064c617b1c0b8108c2b0367925f25a183fca084e01016355abf64736f6c634300081a0033
0x608060405260043610610283575f3560e01c8063715018a6116101555780639b0e2e86116100be578063b3b64bcb11610078578063b3b64bcb146107a6578063b94a6dfe146107c5578063dd62ed3e146107ec578063e7dad4f914610830578063ec28438a14610867578063f2fde38b14610886575f80fd5b80639b0e2e86146107005780639c1b8af51461071f578063a01c348314610734578063a457c2d714610749578063a9059cbb14610768578063b2abbbc414610787575f80fd5b8063871c128d1161010f578063871c128d146106575780638823151b146106765780638da5cb5b1461069d57806395d89b41146106b957806397995706146106cd57806398acb5d8146106e1575f80fd5b8063715018a6146105bd57806371cd56af146105d1578063751039fc146105f05780637d1db4a51461060457806381230a831461061957806385d4787b14610638575f80fd5b8063280d3821116101f757806349bd5a5e116101b157806349bd5a5e146104e25780635342acb41461050157806354a5df1f14610538578063625e63001461054d5780636c0a24eb1461057457806370a0823114610589575f80fd5b8063280d38211461043c5780632c1f521614610450578063313ce5671461046f5780633950935114610490578063441d801f146104af57806348c54b9d146104ce575f80fd5b80630e832273116102485780630e8322731461036f5780631694505e146103a657806318160ddd146103c55780631d6f9655146103e357806323b872dd146103fc57806327a14fc21461041b575f80fd5b8063040141e51461028e5780630647a94d146102d257806306fdde0314610300578063095ea7b3146103215780630ddc097614610340575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102b5730bd7d308f8e1639fab988df18a8011f41eacad7381565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102dd575f80fd5b50600c546102f090610100900460ff1681565b60405190151581526020016102c9565b34801561030b575f80fd5b506103146108a5565b6040516102c99190611e73565b34801561032c575f80fd5b506102f061033b366004611ec3565b610935565b34801561034b575f80fd5b5060125460135461035a919082565b604080519283526020830191909152016102c9565b34801561037a575f80fd5b506102f0610389366004611eeb565b6001600160a01b03165f9081526007602052604090205460ff1690565b3480156103b1575f80fd5b506001546102b5906001600160a01b031681565b3480156103d0575f80fd5b50600b545b6040519081526020016102c9565b3480156103ee575f80fd5b506010546102f09060ff1681565b348015610407575f80fd5b506102f0610416366004611f04565b61094b565b348015610426575f80fd5b5061043a610435366004611f3e565b6109b2565b005b348015610447575f80fd5b5061043a610a07565b34801561045b575f80fd5b506014546102b5906001600160a01b031681565b34801561047a575f80fd5b50600a5460405160ff90911681526020016102c9565b34801561049b575f80fd5b506102f06104aa366004611ec3565b610a7b565b3480156104ba575f80fd5b5061043a6104c9366004611f64565b610ab0565b3480156104d9575f80fd5b5061043a610ae9565b3480156104ed575f80fd5b506002546102b5906001600160a01b031681565b34801561050c575f80fd5b506102f061051b366004611eeb565b6001600160a01b03165f9081526006602052604090205460ff1690565b348015610543575f80fd5b506103d5600d5481565b348015610558575f80fd5b506102b573c20c77548260d7161a764cb89b26d96b8de9328d81565b34801561057f575f80fd5b506103d5600e5481565b348015610594575f80fd5b506103d56105a3366004611eeb565b6001600160a01b03165f9081526003602052604090205490565b3480156105c8575f80fd5b5061043a610af3565b3480156105dc575f80fd5b5061043a6105eb366004611f64565b610b64565b3480156105fb575f80fd5b5061043a610b98565b34801561060f575f80fd5b506103d5600f5481565b348015610624575f80fd5b5061043a610633366004611fe3565b610c4f565b348015610643575f80fd5b5061043a61065236600461206b565b610c83565b348015610662575f80fd5b5061043a610671366004611f3e565b610cba565b348015610681575f80fd5b506102b5738bceaa40b9acdfaedf85adf4ff01f5ad6517937f81565b3480156106a8575f80fd5b505f546001600160a01b03166102b5565b3480156106c4575f80fd5b50610314610d4e565b3480156106d8575f80fd5b506103d5610d5d565b3480156106ec575f80fd5b5061043a6106fb366004611eeb565b610e80565b34801561070b575f80fd5b5061043a61071a36600461206b565b610ecb565b34801561072a575f80fd5b506103d560115481565b34801561073f575f80fd5b506102b561dead81565b348015610754575f80fd5b506102f0610763366004611ec3565b610efe565b348015610773575f80fd5b506102f0610782366004611ec3565b610f4b565b348015610792575f80fd5b5061043a6107a1366004611f3e565b610f57565b3480156107b1575f80fd5b5061043a6107c0366004612108565b610f85565b3480156107d0575f80fd5b506102b57389e5db8b5aa49aa85ac63f691524311aeb649eba81565b3480156107f7575f80fd5b506103d5610806366004612121565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561083b575f80fd5b506102f061084a366004611eeb565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610872575f80fd5b5061043a610881366004611f3e565b611002565b348015610891575f80fd5b5061043a6108a0366004611eeb565b61104e565b6060600880546108b490612152565b80601f01602080910402602001604051908101604052809291908181526020018280546108e090612152565b801561092b5780601f106109025761010080835404028352916020019161092b565b820191905f5260205f20905b81548152906001019060200180831161090e57829003601f168201915b5050505050905090565b5f610941338484611135565b5060015b92915050565b5f610957848484611258565b6109a884336109a3856040518060600160405280602881526020016124ca602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906116a4565b611135565b5060019392505050565b5f546001600160a01b031633146109e45760405162461bcd60e51b81526004016109db9061218a565b60405180910390fd5b600a80546109f79160ff909116906122b6565b610a0190826122c4565b600e5550565b5f546001600160a01b03163314610a305760405162461bcd60e51b81526004016109db9061218a565b47610a425f546001600160a01b031690565b6001600160a01b03166108fc8290811502906040515f60405180830381858888f19350505050158015610a77573d5f803e3d5ffd5b5050565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916109419185906109a390866116dc565b5f546001600160a01b03163314610ad95760405162461bcd60e51b81526004016109db9061218a565b610ae4838383611741565b505050565b610af16117a4565b565b5f546001600160a01b03163314610b1c5760405162461bcd60e51b81526004016109db9061218a565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610b8d5760405162461bcd60e51b81526004016109db9061218a565b610ae48383836117f8565b5f546001600160a01b03163314610bc15760405162461bcd60e51b81526004016109db9061218a565b60105460ff1615610c0d5760405162461bcd60e51b8152602060048201526016602482015275131a5b5a5d1cc8185b1c9958591e481c995b5bdd995960521b60448201526064016109db565b6010805460ff19166001179055600b54600e819055600f556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a1565b5f546001600160a01b03163314610c785760405162461bcd60e51b81526004016109db9061218a565b601291909155601355565b5f546001600160a01b03163314610cac5760405162461bcd60e51b81526004016109db9061218a565b610cb7816001611855565b50565b5f546001600160a01b03163314610ce35760405162461bcd60e51b81526004016109db9061218a565b6011548103610d495760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460448201526b6f2073616d652076616c756560a01b60648201526084016109db565b601155565b6060600980546108b490612152565b6040805160028082526060820183525f9283929190602083019080368337019050509050730bd7d308f8e1639fab988df18a8011f41eacad73815f81518110610da857610da86122db565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610ddc57610ddc6122db565b6001600160a01b039283166020918202929092010152600154600d5460405163d06ca61f60e01b8152919092169163d06ca61f91610e1f91908590600401612332565b5f60405180830381865afa158015610e39573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e609190810190612352565b600181518110610e7257610e726122db565b602002602001015191505090565b5f546001600160a01b03163314610ea95760405162461bcd60e51b81526004016109db9061218a565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610ef45760405162461bcd60e51b81526004016109db9061218a565b610cb7815f611855565b5f61094133846109a3856040518060600160405280602581526020016124f260259139335f9081526004602090815260408083206001600160a01b038d16845290915290205491906116a4565b5f610941338484611258565b5f546001600160a01b03163314610f805760405162461bcd60e51b81526004016109db9061218a565b600d55565b5f546001600160a01b03163314610fae5760405162461bcd60e51b81526004016109db9061218a565b600c80548215156101000261ff00199091161790556040517fea8071ecae19c79f19f68cc3d2a4e7a556c7ab4ec713f0aa8180c26d41c6665590610ff790831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461102b5760405162461bcd60e51b81526004016109db9061218a565b600a805461103e9160ff909116906122b6565b61104890826122c4565b600f5550565b5f546001600160a01b031633146110775760405162461bcd60e51b81526004016109db9061218a565b6001600160a01b0381166110dc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109db565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109db565b6001600160a01b0382166111f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109db565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109db565b6001600160a01b03821661131e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109db565b5f811161137f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109db565b6001600160a01b0383165f90815260066020526040812054819060ff161580156113c157506001600160a01b0384165f9081526006602052604090205460ff16155b80156113da57505f546001600160a01b03868116911614155b80156113f357505f546001600160a01b03858116911614155b90505f61141e84611418876001600160a01b03165f9081526003602052604090205490565b906116dc565b90506114315f546001600160a01b031690565b6001600160a01b0316866001600160a01b03161415801561145f57505f546001600160a01b03868116911614155b801561147657506001600160a01b03851661dead14155b1561151f576001600160a01b0386165f9081526005602052604090205460ff161580156114bb57506001600160a01b0385165f9081526005602052604090205460ff16155b61151f5760405162461bcd60e51b815260206004820152602f60248201527f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c206f722060448201526e7472616e7366657220746f6b656e7360881b60648201526084016109db565b6001600160a01b0386165f9081526006602052604090205460ff1615801561155f57506001600160a01b0385165f9081526006602052604090205460ff16155b156115c657600f548411156115c65760405162461bcd60e51b815260206004820152602760248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152661e105b5bdd5b9d60ca1b60648201526084016109db565b6002546001600160a01b03908116908716036115fe57600e548111156115fe5760405162461bcd60e51b81526004016109db906123d9565b6002546001600160a01b0387811691161480159061162957506002546001600160a01b038681169116145b1561163a576001925061163a6117a4565b6002546001600160a01b0387811691161480159061166657506002546001600160a01b03868116911614155b1561168d57600e5481111561168d5760405162461bcd60e51b81526004016109db906123d9565b61169c868686858760016118d3565b505050505050565b5f81848411156116c75760405162461bcd60e51b81526004016109db9190611e73565b505f6116d3848661241e565b95945050505050565b5f806116e88385612431565b90508381101561173a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109db565b9392505050565b5f5b8281101561179e575f84848381811061175e5761175e6122db565b90506020020160208101906117739190611eeb565b6001600160a01b03165f908152600660205260409020805460ff191684151517905550600101611743565b50505050565b305f908152600360205260409020548015610cb7575f6117c2610d5d565b90508082101580156117d75750600c5460ff16155b80156117ea5750600c54610100900460ff165b15610a7757610a7781611b87565b5f5b8281101561179e575f848483818110611815576118156122db565b905060200201602081019061182a9190611eeb565b6001600160a01b03165f908152600760205260409020805460ff1916841515179055506001016117fa565b5f5b8251811015610ae4575f838281518110611873576118736122db565b6020026020010151905082156118aa576001600160a01b0381165f908152600560205260409020805460ff191660011790556118ca565b6001600160a01b0381165f908152600560205260409020805460ff191690555b50600101611857565b5f836118df575f6118fa565b6012546118fa906064906118f4908890611bb5565b90611c33565b90508380156119065750825b1561192357601354611920906064906118f4908890611bb5565b90505b5f61192e8683611c74565b6001600160a01b0389165f908152600360205260409020549091506119539087611c74565b6001600160a01b03808a165f90815260036020526040808220939093559089168152205461198190826116dc565b6001600160a01b0388165f908152600360205260408082209290925530815220546119ac90836116dc565b305f9081526003602090815260409182902092909255518781526001600160a01b0389811692908b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a38215611b7d57601454604051633974d3b160e01b81526001600160a01b038a8116600483015290911690633974d3b1906024015f604051808303815f87803b158015611a4b575f80fd5b505af1925050508015611a5c575060015b50601454604051633974d3b160e01b81526001600160a01b03898116600483015290911690633974d3b1906024015f604051808303815f87803b158015611aa1575f80fd5b505af1925050508015611ab2575060015b506014546011546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611aeb9160040190815260200190565b6060604051808303815f875af1925050508015611b25575060408051601f3d908101601f19168201909252611b2291810190612444565b60015b15611b7d57601154604080518581526020810185905280820184905260608101929092525132916001917fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989181900360800190a35050505b5050505050505050565b600c805460ff19166001179055611b9d81611cb5565b47611ba781611db7565b5050600c805460ff19169055565b5f825f03611bc457505f610945565b5f611bcf83856122c4565b905082611bdc858361246f565b1461173a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109db565b5f61173a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e47565b5f61173a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116a4565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ce857611ce86122db565b60200260200101906001600160a01b031690816001600160a01b031681525050730bd7d308f8e1639fab988df18a8011f41eacad7381600181518110611d3057611d306122db565b6001600160a01b039283166020918202929092010152600154611d569130911684611135565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d8e9085905f9086903090429060040161248e565b5f604051808303815f87803b158015611da5575f80fd5b505af115801561169c573d5f803e3d5ffd5b6014546040515f916001600160a01b03169083908381818185875af1925050503d805f8114611e01576040519150601f19603f3d011682016040523d82523d5f602084013e611e06565b606091505b505090508015610a77576040518281527fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19060200160405180910390a15050565b5f8183611e675760405162461bcd60e51b81526004016109db9190611e73565b505f6116d3848661246f565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114611ebe575f80fd5b919050565b5f8060408385031215611ed4575f80fd5b611edd83611ea8565b946020939093013593505050565b5f60208284031215611efb575f80fd5b61173a82611ea8565b5f805f60608486031215611f16575f80fd5b611f1f84611ea8565b9250611f2d60208501611ea8565b929592945050506040919091013590565b5f60208284031215611f4e575f80fd5b5035919050565b80358015158114611ebe575f80fd5b5f805f60408486031215611f76575f80fd5b833567ffffffffffffffff811115611f8c575f80fd5b8401601f81018613611f9c575f80fd5b803567ffffffffffffffff811115611fb2575f80fd5b8660208260051b8401011115611fc6575f80fd5b602091820194509250611fda908501611f55565b90509250925092565b5f8060408385031215611ff4575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561204057612040612003565b604052919050565b5f67ffffffffffffffff82111561206157612061612003565b5060051b60200190565b5f6020828403121561207b575f80fd5b813567ffffffffffffffff811115612091575f80fd5b8201601f810184136120a1575f80fd5b80356120b46120af82612048565b612017565b8082825260208201915060208360051b8501019250868311156120d5575f80fd5b6020840193505b828410156120fe576120ed84611ea8565b8252602093840193909101906120dc565b9695505050505050565b5f60208284031215612118575f80fd5b61173a82611f55565b5f8060408385031215612132575f80fd5b61213b83611ea8565b915061214960208401611ea8565b90509250929050565b600181811c9082168061216657607f821691505b60208210810361218457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561220e578085048111156121f2576121f26121bf565b600184161561220057908102905b60019390931c9280026121d7565b935093915050565b5f8261222457506001610945565b8161223057505f610945565b816001811461224657600281146122505761226c565b6001915050610945565b60ff841115612261576122616121bf565b50506001821b610945565b5060208310610133831016604e8410600b841016171561228f575081810a610945565b61229b5f1984846121d3565b805f19048211156122ae576122ae6121bf565b029392505050565b5f61173a60ff841683612216565b8082028115828204841417610945576109456121bf565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602084019350602083015f5b828110156123285781516001600160a01b0316865260209586019590910190600101612301565b5093949350505050565b828152604060208201525f61234a60408301846122ef565b949350505050565b5f60208284031215612362575f80fd5b815167ffffffffffffffff811115612378575f80fd5b8201601f81018413612388575f80fd5b80516123966120af82612048565b8082825260208201915060208360051b8501019250868311156123b7575f80fd5b6020840193505b828410156120fe5783518252602093840193909101906123be565b60208082526025908201527f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c6574206040820152641b1a5b5a5d60da1b606082015260800190565b81810381811115610945576109456121bf565b80820180821115610945576109456121bf565b5f805f60608486031215612456575f80fd5b5050815160208301516040909301519094929350919050565b5f8261248957634e487b7160e01b5f52601260045260245ffd5b500490565b85815284602082015260a060408201525f6124ac60a08301866122ef565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f022098a41d48064c617b1c0b8108c2b0367925f25a183fca084e01016355abf64736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xc2b0d9…f033b1 | 26 days agoWed, 22 Jul 2026 21:17:18 UTC | 0xc86433…8a98 | [0] 0x000000000000…00000001 [1] 0x000000000000…8de9328d data: 0x000000000000000000…0000c350 |
| 0xc2b0d9…f033b1 | 26 days agoWed, 22 Jul 2026 21:17:18 UTC | Transfer | [0] 0x000000000000…0e8bf098 [1] 0x000000000000…8de9328d data: 0x000000000000000000…a7ef1240 |
| 0x9b50d9…fc48b8 | 26 days agoWed, 22 Jul 2026 21:04:57 UTC | Approval | [0] 0x000000000000…9e0557f8 [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x94ddd1…dd2906 | 26 days agoWed, 22 Jul 2026 21:04:57 UTC | Approval | [0] 0x000000000000…5bfc66cf [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0xd24162…e8d30c | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | Approval | [0] 0x000000000000…bb513790 [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x13494b…d3209e | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | Approval | [0] 0x000000000000…6313d220 [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x7a95e1…980423 | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | 0xc86433…8a98 | [0] 0x000000000000…00000001 [1] 0x000000000000…9e0557f8 data: 0x000000000000000000…0000c350 |
| 0x7a95e1…980423 | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | Transfer | [0] 0x000000000000…0e8bf098 [1] 0x000000000000…9e0557f8 data: 0x000000000000000000…73593aba |
| 0x51d4a7…9f5890 | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | 0xc86433…8a98 | [0] 0x000000000000…00000001 [1] 0x000000000000…5bfc66cf data: 0x000000000000000000…0000c350 |
| 0x51d4a7…9f5890 | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | Transfer | [0] 0x000000000000…0e8bf098 [1] 0x000000000000…5bfc66cf data: 0x000000000000000000…7d17a74d |
| 0xe04fb4…8acff3 | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | 0xc86433…8a98 | [0] 0x000000000000…00000001 [1] 0x000000000000…bb513790 data: 0x000000000000000000…0000c350 |
| 0xe04fb4…8acff3 | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | Transfer | [0] 0x000000000000…0e8bf098 [1] 0x000000000000…bb513790 data: 0x000000000000000000…a8b3e62a |
| 0x5dd4a9…bddff9 | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | 0xc86433…8a98 | [0] 0x000000000000…00000001 [1] 0x000000000000…6313d220 data: 0x000000000000000000…0000c350 |
| 0x5dd4a9…bddff9 | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | Transfer | [0] 0x000000000000…0e8bf098 [1] 0x000000000000…6313d220 data: 0x000000000000000000…d28ce563 |
| 0x0c61fa…c6ea09 | 26 days agoWed, 22 Jul 2026 21:04:48 UTC | Approval | [0] 0x000000000000…b8136cfc [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x4327df…32d750 | 26 days agoWed, 22 Jul 2026 21:04:48 UTC | 0xc86433…8a98 | [0] 0x000000000000…00000001 [1] 0x000000000000…b8136cfc data: 0x000000000000000000…0000c350 |
| 0x4327df…32d750 | 26 days agoWed, 22 Jul 2026 21:04:48 UTC | Transfer | [0] 0x000000000000…0e8bf098 [1] 0x000000000000…b8136cfc data: 0x000000000000000000…62549f54 |
| 0xda9943…2e2291 | 26 days agoWed, 22 Jul 2026 21:04:34 UTC | Approval | [0] 0x000000000000…d4863fe4 [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x6c1193…46910f | 26 days agoWed, 22 Jul 2026 21:04:34 UTC | 0xc86433…8a98 | [0] 0x000000000000…00000001 [1] 0x000000000000…d4863fe4 data: 0x000000000000000000…0000c350 |
| 0x6c1193…46910f | 26 days agoWed, 22 Jul 2026 21:04:34 UTC | Transfer | [0] 0x000000000000…0e8bf098 [1] 0x000000000000…d4863fe4 data: 0x000000000000000000…491fa0d0 |
| 0x9a2d94…0f6311 | 26 days agoWed, 22 Jul 2026 21:04:30 UTC | Approval | [0] 0x000000000000…8de9328d [1] 0x000000000000…638de0d3 data: 0x000000000000000000…00000005 |
| 0x9a2d94…0f6311 | 26 days agoWed, 22 Jul 2026 21:04:30 UTC | 0xc86433…8a98 | [0] 0x000000000000…00000001 [1] 0x000000000000…8de9328d data: 0x000000000000000000…0000c350 |
| 0x9a2d94…0f6311 | 26 days agoWed, 22 Jul 2026 21:04:30 UTC | Transfer | [0] 0x000000000000…8de9328d [1] 0x000000000000…0e8bf098 data: 0x000000000000000000…bf14fffb |
| 0xab42c9…37ef62 | 26 days agoWed, 22 Jul 2026 21:02:30 UTC | Approval | [0] 0x000000000000…8de9328d [1] 0x000000000000…638de0d3 data: 0x000000000000000000…bf150000 |
| 0xee6b7f…5f2d7c | 26 days agoWed, 22 Jul 2026 21:01:59 UTC | 0x7bfa7b…47ef |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xe6cc1c…21eef4 | blockAddresses | 16,736,741 | 26 days agoWed, 22 Jul 2026 21:08:09 UTC | 0xc20c…328d | IN | Will Scarcat | $0.000 ETH | 0.00000426 | |
| 0x9b50d9…fc48b8 | Approve | 16,734,834 | 26 days agoWed, 22 Jul 2026 21:04:57 UTC | 0xf82a…57f8 | IN | Will Scarcat | $0.000 ETH | 0.00000420 | |
| 0x94ddd1…dd2906 | Approve | 16,734,833 | 26 days agoWed, 22 Jul 2026 21:04:57 UTC | 0xf317…66cf | IN | Will Scarcat | $0.000 ETH | 0.00000428 | |
| 0xd24162…e8d30c | Approve | 16,734,832 | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | 0xe145…3790 | IN | Will Scarcat | $0.000 ETH | 0.00000428 | |
| 0x13494b…d3209e | Approve | 16,734,830 | 26 days agoWed, 22 Jul 2026 21:04:56 UTC | 0xcd02…d220 | IN | Will Scarcat | $0.000 ETH | 0.00000426 | |
| 0x0c61fa…c6ea09 | Approve | 16,734,747 | 26 days agoWed, 22 Jul 2026 21:04:48 UTC | 0x0ec7…6cfc | IN | Will Scarcat | $0.000 ETH | 0.00000421 | |
| 0xda9943…2e2291 | Approve | 16,734,590 | 26 days agoWed, 22 Jul 2026 21:04:34 UTC | 0xf131…3fe4 | IN | Will Scarcat | $0.000 ETH | 0.00000419 | |
| 0xab42c9…37ef62 | Approve | 16,733,355 | 26 days agoWed, 22 Jul 2026 21:02:30 UTC | 0xc20c…328d | IN | Will Scarcat | $0.000 ETH | 0.00000415 | |
| 0xee6b7f…5f2d7c | removeLimits | 16,733,052 | 26 days agoWed, 22 Jul 2026 21:01:59 UTC | 0xc20c…328d | IN | Will Scarcat | $0.000 ETH | 0.00000538 | |
| 0x6a972a…817dac | setDividendTracker | 16,725,036 | 26 days agoWed, 22 Jul 2026 20:48:36 UTC | 0xc20c…328d | IN | Will Scarcat | $0.000 ETH | 0.00000419 |