// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
* Mama Duck (MDUCK)
* Total Supply : 1,000,000,000 (1B)
* Max Wallet : 0.5% (5M) — all wallets at launch, until changed
* Dev Max : 10% (100M) — dev wallet special allowance
* Limits : removable by owner via removeLimits()
* Ownership : renounceable after limits removed
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) { return msg.sender; }
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
_owner = _msgSender();
emit OwnershipTransferred(address(0), _owner);
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function owner() public view returns (address) { return _owner; }
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract MamaDuck is Ownable {
string public constant name = "Mama Duck";
string public constant symbol = "MDUCK";
uint8 public constant decimals = 18;
uint256 public constant TOTAL_SUPPLY = 1_000_000_000 * 10 ** 18;
uint256 public constant INITIAL_MAX_WALLET_BPS = 50;
uint256 public constant DEV_MAX_BPS = 1_000;
uint256 private constant BPS_DENOM = 10_000;
uint256 public constant MAX_WALLET_CAP_BPS = 1_000;
uint256 public maxWalletAmount;
uint256 public devMaxAmount;
bool public limitsActive = true;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) public isExempt;
address public devWallet;
address private constant UNISWAP_UNIVERSAL_ROUTER = 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD;
address private constant UNISWAP_V2_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event ExemptUpdated(address indexed account, bool exempt);
event LimitsRemoved();
event DevWalletUpdated(address indexed previous, address indexed next);
constructor(address _devWallet) {
require(_devWallet != address(0), "MDUCK: dev wallet is zero");
maxWalletAmount = (TOTAL_SUPPLY * INITIAL_MAX_WALLET_BPS) / BPS_DENOM;
devMaxAmount = (TOTAL_SUPPLY * DEV_MAX_BPS) / BPS_DENOM;
devWallet = _devWallet;
isExempt[msg.sender] = true;
isExempt[_devWallet] = false;
isExempt[UNISWAP_UNIVERSAL_ROUTER] = true;
isExempt[UNISWAP_V2_ROUTER] = true;
_balances[msg.sender] = TOTAL_SUPPLY;
emit Transfer(address(0), msg.sender, TOTAL_SUPPLY);
}
function totalSupply() public pure returns (uint256) { return TOTAL_SUPPLY; }
function balanceOf(address account) public view returns (uint256) { return _balances[account]; }
function allowance(address o, address spender) public view returns (uint256) { return _allowances[o][spender]; }
function approve(address spender, uint256 amount) public returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transfer(address to, uint256 amount) public returns (bool) {
_transfer(_msgSender(), to, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) public returns (bool) {
uint256 currentAllowance = _allowances[from][_msgSender()];
require(currentAllowance >= amount, "MDUCK: insufficient allowance");
unchecked { _allowances[from][_msgSender()] = currentAllowance - amount; }
_transfer(from, to, amount);
return true;
}
function _transfer(address from, address to, uint256 amount) internal {
require(from != address(0) && to != address(0), "MDUCK: zero address");
require(_balances[from] >= amount, "MDUCK: insufficient balance");
// Skip limit check if either sender OR receiver is exempt
if (limitsActive && !isExempt[from] && !isExempt[to]) {
if (to == devWallet) {
require(
_balances[to] + amount <= devMaxAmount,
"MDUCK: dev wallet would exceed 10% cap"
);
} else {
require(
_balances[to] + amount <= maxWalletAmount,
"MDUCK: recipient would exceed 0.5% max wallet"
);
}
}
unchecked { _balances[from] -= amount; }
unchecked { _balances[to] += amount; }
emit Transfer(from, to, amount);
}
function _approve(address o, address spender, uint256 amount) internal {
require(o != address(0) && spender != address(0), "MDUCK: zero address");
_allowances[o][spender] = amount;
emit Approval(o, spender, amount);
}
function setMaxWallet(uint256 newBps) external onlyOwner {
require(newBps > 0 && newBps <= MAX_WALLET_CAP_BPS, "MDUCK: bps out of range");
maxWalletAmount = (TOTAL_SUPPLY * newBps) / BPS_DENOM;
}
function removeLimits() external onlyOwner {
limitsActive = false;
emit LimitsRemoved();
}
function setExempt(address account, bool exempt) external onlyOwner {
isExempt[account] = exempt;
emit ExemptUpdated(account, exempt);
}
function setExemptBatch(address[] calldata accounts, bool exempt) external onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
isExempt[accounts[i]] = exempt;
emit ExemptUpdated(accounts[i], exempt);
}
}
function setDevWallet(address newDevWallet) external onlyOwner {
require(newDevWallet != address(0), "MDUCK: zero address");
emit DevWalletUpdated(devWallet, newDevWallet);
devWallet = newDevWallet;
}
function transferOwnership(address newOwner) public override onlyOwner {
isExempt[newOwner] = true;
emit ExemptUpdated(newOwner, true);
super.transferOwnership(newOwner);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_devWallet",
"type": "address",
"internalType": "address"
}
],
"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": "DevWalletUpdated",
"type": "event",
"inputs": [
{
"name": "previous",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "next",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ExemptUpdated",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "exempt",
"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": "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": "DEV_MAX_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "INITIAL_MAX_WALLET_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_WALLET_CAP_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "TOTAL_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "o",
"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": "balanceOf",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "devMaxAmount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "devWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "isExempt",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "limitsActive",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "maxWalletAmount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"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": "removeLimits",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setDevWallet",
"type": "function",
"inputs": [
{
"name": "newDevWallet",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setExempt",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "exempt",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setExemptBatch",
"type": "function",
"inputs": [
{
"name": "accounts",
"type": "address[]",
"internalType": "address[]"
},
{
"name": "exempt",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMaxWallet",
"type": "function",
"inputs": [
{
"name": "newBps",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "pure"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"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"
}
]0x6080604052600160035f6101000a81548160ff0219169083151502179055503480156200002a575f80fd5b5060405162002973380380620029738339818101604052810190620000509190620004d8565b620000606200046c60201b60201c565b5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000188576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017f9062000566565b60405180910390fd5b61271060326b033b2e3c9fd0803ce8000000620001a69190620005bc565b620001b2919062000633565b6001819055506127106103e86b033b2e3c9fd0803ce8000000620001d79190620005bc565b620001e3919062000633565b6002819055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce800000060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce80000006040516200045d91906200067b565b60405180910390a35062000696565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620004a28262000477565b9050919050565b620004b48162000496565b8114620004bf575f80fd5b50565b5f81519050620004d281620004a9565b92915050565b5f60208284031215620004f057620004ef62000473565b5b5f620004ff84828501620004c2565b91505092915050565b5f82825260208201905092915050565b7f4d4455434b3a206465762077616c6c6574206973207a65726f000000000000005f82015250565b5f6200054e60198362000508565b91506200055b8262000518565b602082019050919050565b5f6020820190508181035f8301526200057f8162000540565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620005c88262000586565b9150620005d58362000586565b9250828202620005e58162000586565b91508282048414831517620005ff57620005fe6200058f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200063f8262000586565b91506200064c8362000586565b9250826200065f576200065e62000606565b5b828204905092915050565b620006758162000586565b82525050565b5f602082019050620006905f8301846200066a565b92915050565b6122cf80620006a45f395ff3fe608060405234801561000f575f80fd5b506004361061018c575f3560e01c8063715018a6116100dc5780639fde54f511610095578063ad5dff731161006f578063ad5dff731461043c578063dd62ed3e1461046c578063e1b3c80c1461049c578063f2fde38b146104ba5761018c565b80639fde54f5146103d2578063a9059cbb146103ee578063aa4bde281461041e5761018c565b8063715018a614610346578063751039fc146103505780638da5cb5b1461035a5780638ea5220f14610378578063902d55a51461039657806395d89b41146103b45761018c565b8063313ce567116101495780635d0044ca116101235780635d0044ca146102be5780635e3ce362146102da57806360b7b6bb146102f857806370a08231146103165761018c565b8063313ce5671461026657806337e371ee146102845780633856ee5c146102a05761018c565b806306fdde0314610190578063095ea7b3146101ae57806318160ddd146101de5780631cce34ee146101fc5780631f53ac021461021a57806323b872dd14610236575b5f80fd5b6101986104d6565b6040516101a591906119c1565b60405180910390f35b6101c860048036038101906101c39190611a76565b61050f565b6040516101d59190611ace565b60405180910390f35b6101e661052c565b6040516101f39190611af6565b60405180910390f35b61020461053f565b6040516102119190611ace565b60405180910390f35b610234600480360381019061022f9190611b0f565b610551565b005b610250600480360381019061024b9190611b3a565b610711565b60405161025d9190611ace565b60405180910390f35b61026e610875565b60405161027b9190611ba5565b60405180910390f35b61029e60048036038101906102999190611c49565b61087a565b005b6102a8610a24565b6040516102b59190611af6565b60405180910390f35b6102d860048036038101906102d39190611ca6565b610a29565b005b6102e2610b3b565b6040516102ef9190611af6565b60405180910390f35b610300610b41565b60405161030d9190611af6565b60405180910390f35b610330600480360381019061032b9190611b0f565b610b47565b60405161033d9190611af6565b60405180910390f35b61034e610b8d565b005b610358610cdb565b005b610362610db6565b60405161036f9190611ce0565b60405180910390f35b610380610ddd565b60405161038d9190611ce0565b60405180910390f35b61039e610e02565b6040516103ab9190611af6565b60405180910390f35b6103bc610e12565b6040516103c991906119c1565b60405180910390f35b6103ec60048036038101906103e79190611cf9565b610e4b565b005b61040860048036038101906104039190611a76565b610f85565b6040516104159190611ace565b60405180910390f35b610426610fa2565b6040516104339190611af6565b60405180910390f35b61045660048036038101906104519190611b0f565b610fa8565b6040516104639190611ace565b60405180910390f35b61048660048036038101906104819190611d37565b610fc5565b6040516104939190611af6565b60405180910390f35b6104a4611047565b6040516104b19190611af6565b60405180910390f35b6104d460048036038101906104cf9190611b0f565b61104d565b005b6040518060400160405280600981526020017f4d616d61204475636b000000000000000000000000000000000000000000000081525081565b5f61052261051b611191565b8484611198565b6001905092915050565b5f6b033b2e3c9fd0803ce8000000905090565b60035f9054906101000a900460ff1681565b610559611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105dc90611dbf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a90611e27565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87160405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610759611191565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156107d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cf90611e8f565b60405180910390fd5b82810360055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610821611191565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610869858585611326565b60019150509392505050565b601281565b610882611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090590611dbf565b60405180910390fd5b5f5b83839050811015610a1e578160065f86868581811061093257610931611ead565b5b90506020020160208101906109479190611b0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508383828181106109a9576109a8611ead565b5b90506020020160208101906109be9190611b0f565b73ffffffffffffffffffffffffffffffffffffffff167f1a4e65b5f8cbcaf438d3211a0ce9c99ba3c826628362671bf77215c0c2aaed2483604051610a039190611ace565b60405180910390a28080610a1690611f07565b915050610910565b50505050565b603281565b610a31611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab490611dbf565b60405180910390fd5b5f81118015610ace57506103e88111155b610b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0490611f98565b60405180910390fd5b612710816b033b2e3c9fd0803ce8000000610b289190611fb6565b610b329190612024565b60018190555050565b6103e881565b6103e881565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b95611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890611dbf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ce3611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6690611dbf565b60405180910390fd5b5f60035f6101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6b033b2e3c9fd0803ce800000081565b6040518060400160405280600581526020017f4d4455434b00000000000000000000000000000000000000000000000000000081525081565b610e53611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690611dbf565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1a4e65b5f8cbcaf438d3211a0ce9c99ba3c826628362671bf77215c0c2aaed2482604051610f799190611ace565b60405180910390a25050565b5f610f98610f91611191565b8484611326565b6001905092915050565b60015481565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60025481565b611055611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d890611dbf565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f1a4e65b5f8cbcaf438d3211a0ce9c99ba3c826628362671bf77215c0c2aaed24600160405161117d9190611ace565b60405180910390a261118e8161177a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561120057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690611e27565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113199190611af6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561138e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490611e27565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561144d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114449061209e565b60405180910390fd5b60035f9054906101000a900460ff1680156114af575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611502575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561167c5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ed576002548160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115a791906120bc565b11156115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df9061215f565b60405180910390fd5b61167b565b6001548160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461163991906120bc565b111561167a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611671906121ed565b60405180910390fd5b5b5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161176d9190611af6565b60405180910390a3505050565b611782611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180590611dbf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361187c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118739061227b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561196e578082015181840152602081019050611953565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61199382611937565b61199d8185611941565b93506119ad818560208601611951565b6119b681611979565b840191505092915050565b5f6020820190508181035f8301526119d98184611989565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a12826119e9565b9050919050565b611a2281611a08565b8114611a2c575f80fd5b50565b5f81359050611a3d81611a19565b92915050565b5f819050919050565b611a5581611a43565b8114611a5f575f80fd5b50565b5f81359050611a7081611a4c565b92915050565b5f8060408385031215611a8c57611a8b6119e1565b5b5f611a9985828601611a2f565b9250506020611aaa85828601611a62565b9150509250929050565b5f8115159050919050565b611ac881611ab4565b82525050565b5f602082019050611ae15f830184611abf565b92915050565b611af081611a43565b82525050565b5f602082019050611b095f830184611ae7565b92915050565b5f60208284031215611b2457611b236119e1565b5b5f611b3184828501611a2f565b91505092915050565b5f805f60608486031215611b5157611b506119e1565b5b5f611b5e86828701611a2f565b9350506020611b6f86828701611a2f565b9250506040611b8086828701611a62565b9150509250925092565b5f60ff82169050919050565b611b9f81611b8a565b82525050565b5f602082019050611bb85f830184611b96565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611bdf57611bde611bbe565b5b8235905067ffffffffffffffff811115611bfc57611bfb611bc2565b5b602083019150836020820283011115611c1857611c17611bc6565b5b9250929050565b611c2881611ab4565b8114611c32575f80fd5b50565b5f81359050611c4381611c1f565b92915050565b5f805f60408486031215611c6057611c5f6119e1565b5b5f84013567ffffffffffffffff811115611c7d57611c7c6119e5565b5b611c8986828701611bca565b93509350506020611c9c86828701611c35565b9150509250925092565b5f60208284031215611cbb57611cba6119e1565b5b5f611cc884828501611a62565b91505092915050565b611cda81611a08565b82525050565b5f602082019050611cf35f830184611cd1565b92915050565b5f8060408385031215611d0f57611d0e6119e1565b5b5f611d1c85828601611a2f565b9250506020611d2d85828601611c35565b9150509250929050565b5f8060408385031215611d4d57611d4c6119e1565b5b5f611d5a85828601611a2f565b9250506020611d6b85828601611a2f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611da9602083611941565b9150611db482611d75565b602082019050919050565b5f6020820190508181035f830152611dd681611d9d565b9050919050565b7f4d4455434b3a207a65726f2061646472657373000000000000000000000000005f82015250565b5f611e11601383611941565b9150611e1c82611ddd565b602082019050919050565b5f6020820190508181035f830152611e3e81611e05565b9050919050565b7f4d4455434b3a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611e79601d83611941565b9150611e8482611e45565b602082019050919050565b5f6020820190508181035f830152611ea681611e6d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611f1182611a43565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f4357611f42611eda565b5b600182019050919050565b7f4d4455434b3a20627073206f7574206f662072616e67650000000000000000005f82015250565b5f611f82601783611941565b9150611f8d82611f4e565b602082019050919050565b5f6020820190508181035f830152611faf81611f76565b9050919050565b5f611fc082611a43565b9150611fcb83611a43565b9250828202611fd981611a43565b91508282048414831517611ff057611fef611eda565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61202e82611a43565b915061203983611a43565b92508261204957612048611ff7565b5b828204905092915050565b7f4d4455434b3a20696e73756666696369656e742062616c616e636500000000005f82015250565b5f612088601b83611941565b915061209382612054565b602082019050919050565b5f6020820190508181035f8301526120b58161207c565b9050919050565b5f6120c682611a43565b91506120d183611a43565b92508282019050808211156120e9576120e8611eda565b5b92915050565b7f4d4455434b3a206465762077616c6c657420776f756c642065786365656420315f8201527f3025206361700000000000000000000000000000000000000000000000000000602082015250565b5f612149602683611941565b9150612154826120ef565b604082019050919050565b5f6020820190508181035f8301526121768161213d565b9050919050565b7f4d4455434b3a20726563697069656e7420776f756c642065786365656420302e5f8201527f3525206d61782077616c6c657400000000000000000000000000000000000000602082015250565b5f6121d7602d83611941565b91506121e28261217d565b604082019050919050565b5f6020820190508181035f830152612204816121cb565b9050919050565b7f4f776e61626c653a206e6577206f776e6572206973207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612265602283611941565b91506122708261220b565b604082019050919050565b5f6020820190508181035f83015261229281612259565b905091905056fea2646970667358221220895e988fe30449a0e063c707c283addd84ea13f6e67fc5934a2e543fdc6f912464736f6c63430008140033000000000000000000000000c3381d92f7059ccd239526dfe37e7ec710c9546a
0x608060405234801561000f575f80fd5b506004361061018c575f3560e01c8063715018a6116100dc5780639fde54f511610095578063ad5dff731161006f578063ad5dff731461043c578063dd62ed3e1461046c578063e1b3c80c1461049c578063f2fde38b146104ba5761018c565b80639fde54f5146103d2578063a9059cbb146103ee578063aa4bde281461041e5761018c565b8063715018a614610346578063751039fc146103505780638da5cb5b1461035a5780638ea5220f14610378578063902d55a51461039657806395d89b41146103b45761018c565b8063313ce567116101495780635d0044ca116101235780635d0044ca146102be5780635e3ce362146102da57806360b7b6bb146102f857806370a08231146103165761018c565b8063313ce5671461026657806337e371ee146102845780633856ee5c146102a05761018c565b806306fdde0314610190578063095ea7b3146101ae57806318160ddd146101de5780631cce34ee146101fc5780631f53ac021461021a57806323b872dd14610236575b5f80fd5b6101986104d6565b6040516101a591906119c1565b60405180910390f35b6101c860048036038101906101c39190611a76565b61050f565b6040516101d59190611ace565b60405180910390f35b6101e661052c565b6040516101f39190611af6565b60405180910390f35b61020461053f565b6040516102119190611ace565b60405180910390f35b610234600480360381019061022f9190611b0f565b610551565b005b610250600480360381019061024b9190611b3a565b610711565b60405161025d9190611ace565b60405180910390f35b61026e610875565b60405161027b9190611ba5565b60405180910390f35b61029e60048036038101906102999190611c49565b61087a565b005b6102a8610a24565b6040516102b59190611af6565b60405180910390f35b6102d860048036038101906102d39190611ca6565b610a29565b005b6102e2610b3b565b6040516102ef9190611af6565b60405180910390f35b610300610b41565b60405161030d9190611af6565b60405180910390f35b610330600480360381019061032b9190611b0f565b610b47565b60405161033d9190611af6565b60405180910390f35b61034e610b8d565b005b610358610cdb565b005b610362610db6565b60405161036f9190611ce0565b60405180910390f35b610380610ddd565b60405161038d9190611ce0565b60405180910390f35b61039e610e02565b6040516103ab9190611af6565b60405180910390f35b6103bc610e12565b6040516103c991906119c1565b60405180910390f35b6103ec60048036038101906103e79190611cf9565b610e4b565b005b61040860048036038101906104039190611a76565b610f85565b6040516104159190611ace565b60405180910390f35b610426610fa2565b6040516104339190611af6565b60405180910390f35b61045660048036038101906104519190611b0f565b610fa8565b6040516104639190611ace565b60405180910390f35b61048660048036038101906104819190611d37565b610fc5565b6040516104939190611af6565b60405180910390f35b6104a4611047565b6040516104b19190611af6565b60405180910390f35b6104d460048036038101906104cf9190611b0f565b61104d565b005b6040518060400160405280600981526020017f4d616d61204475636b000000000000000000000000000000000000000000000081525081565b5f61052261051b611191565b8484611198565b6001905092915050565b5f6b033b2e3c9fd0803ce8000000905090565b60035f9054906101000a900460ff1681565b610559611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105dc90611dbf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a90611e27565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87160405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610759611191565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156107d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cf90611e8f565b60405180910390fd5b82810360055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610821611191565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610869858585611326565b60019150509392505050565b601281565b610882611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090590611dbf565b60405180910390fd5b5f5b83839050811015610a1e578160065f86868581811061093257610931611ead565b5b90506020020160208101906109479190611b0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508383828181106109a9576109a8611ead565b5b90506020020160208101906109be9190611b0f565b73ffffffffffffffffffffffffffffffffffffffff167f1a4e65b5f8cbcaf438d3211a0ce9c99ba3c826628362671bf77215c0c2aaed2483604051610a039190611ace565b60405180910390a28080610a1690611f07565b915050610910565b50505050565b603281565b610a31611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab490611dbf565b60405180910390fd5b5f81118015610ace57506103e88111155b610b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0490611f98565b60405180910390fd5b612710816b033b2e3c9fd0803ce8000000610b289190611fb6565b610b329190612024565b60018190555050565b6103e881565b6103e881565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b95611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890611dbf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ce3611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6690611dbf565b60405180910390fd5b5f60035f6101000a81548160ff0219169083151502179055507f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef60405160405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6b033b2e3c9fd0803ce800000081565b6040518060400160405280600581526020017f4d4455434b00000000000000000000000000000000000000000000000000000081525081565b610e53611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed690611dbf565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1a4e65b5f8cbcaf438d3211a0ce9c99ba3c826628362671bf77215c0c2aaed2482604051610f799190611ace565b60405180910390a25050565b5f610f98610f91611191565b8484611326565b6001905092915050565b60015481565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60025481565b611055611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d890611dbf565b60405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f1a4e65b5f8cbcaf438d3211a0ce9c99ba3c826628362671bf77215c0c2aaed24600160405161117d9190611ace565b60405180910390a261118e8161177a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561120057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690611e27565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113199190611af6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561138e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490611e27565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561144d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114449061209e565b60405180910390fd5b60035f9054906101000a900460ff1680156114af575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611502575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561167c5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ed576002548160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115a791906120bc565b11156115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df9061215f565b60405180910390fd5b61167b565b6001548160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461163991906120bc565b111561167a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611671906121ed565b60405180910390fd5b5b5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161176d9190611af6565b60405180910390a3505050565b611782611191565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180590611dbf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361187c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118739061227b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561196e578082015181840152602081019050611953565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61199382611937565b61199d8185611941565b93506119ad818560208601611951565b6119b681611979565b840191505092915050565b5f6020820190508181035f8301526119d98184611989565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a12826119e9565b9050919050565b611a2281611a08565b8114611a2c575f80fd5b50565b5f81359050611a3d81611a19565b92915050565b5f819050919050565b611a5581611a43565b8114611a5f575f80fd5b50565b5f81359050611a7081611a4c565b92915050565b5f8060408385031215611a8c57611a8b6119e1565b5b5f611a9985828601611a2f565b9250506020611aaa85828601611a62565b9150509250929050565b5f8115159050919050565b611ac881611ab4565b82525050565b5f602082019050611ae15f830184611abf565b92915050565b611af081611a43565b82525050565b5f602082019050611b095f830184611ae7565b92915050565b5f60208284031215611b2457611b236119e1565b5b5f611b3184828501611a2f565b91505092915050565b5f805f60608486031215611b5157611b506119e1565b5b5f611b5e86828701611a2f565b9350506020611b6f86828701611a2f565b9250506040611b8086828701611a62565b9150509250925092565b5f60ff82169050919050565b611b9f81611b8a565b82525050565b5f602082019050611bb85f830184611b96565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611bdf57611bde611bbe565b5b8235905067ffffffffffffffff811115611bfc57611bfb611bc2565b5b602083019150836020820283011115611c1857611c17611bc6565b5b9250929050565b611c2881611ab4565b8114611c32575f80fd5b50565b5f81359050611c4381611c1f565b92915050565b5f805f60408486031215611c6057611c5f6119e1565b5b5f84013567ffffffffffffffff811115611c7d57611c7c6119e5565b5b611c8986828701611bca565b93509350506020611c9c86828701611c35565b9150509250925092565b5f60208284031215611cbb57611cba6119e1565b5b5f611cc884828501611a62565b91505092915050565b611cda81611a08565b82525050565b5f602082019050611cf35f830184611cd1565b92915050565b5f8060408385031215611d0f57611d0e6119e1565b5b5f611d1c85828601611a2f565b9250506020611d2d85828601611c35565b9150509250929050565b5f8060408385031215611d4d57611d4c6119e1565b5b5f611d5a85828601611a2f565b9250506020611d6b85828601611a2f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611da9602083611941565b9150611db482611d75565b602082019050919050565b5f6020820190508181035f830152611dd681611d9d565b9050919050565b7f4d4455434b3a207a65726f2061646472657373000000000000000000000000005f82015250565b5f611e11601383611941565b9150611e1c82611ddd565b602082019050919050565b5f6020820190508181035f830152611e3e81611e05565b9050919050565b7f4d4455434b3a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611e79601d83611941565b9150611e8482611e45565b602082019050919050565b5f6020820190508181035f830152611ea681611e6d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611f1182611a43565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f4357611f42611eda565b5b600182019050919050565b7f4d4455434b3a20627073206f7574206f662072616e67650000000000000000005f82015250565b5f611f82601783611941565b9150611f8d82611f4e565b602082019050919050565b5f6020820190508181035f830152611faf81611f76565b9050919050565b5f611fc082611a43565b9150611fcb83611a43565b9250828202611fd981611a43565b91508282048414831517611ff057611fef611eda565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61202e82611a43565b915061203983611a43565b92508261204957612048611ff7565b5b828204905092915050565b7f4d4455434b3a20696e73756666696369656e742062616c616e636500000000005f82015250565b5f612088601b83611941565b915061209382612054565b602082019050919050565b5f6020820190508181035f8301526120b58161207c565b9050919050565b5f6120c682611a43565b91506120d183611a43565b92508282019050808211156120e9576120e8611eda565b5b92915050565b7f4d4455434b3a206465762077616c6c657420776f756c642065786365656420315f8201527f3025206361700000000000000000000000000000000000000000000000000000602082015250565b5f612149602683611941565b9150612154826120ef565b604082019050919050565b5f6020820190508181035f8301526121768161213d565b9050919050565b7f4d4455434b3a20726563697069656e7420776f756c642065786365656420302e5f8201527f3525206d61782077616c6c657400000000000000000000000000000000000000602082015250565b5f6121d7602d83611941565b91506121e28261217d565b604082019050919050565b5f6020820190508181035f830152612204816121cb565b9050919050565b7f4f776e61626c653a206e6577206f776e6572206973207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612265602283611941565b91506122708261220b565b604082019050919050565b5f6020820190508181035f83015261229281612259565b905091905056fea2646970667358221220895e988fe30449a0e063c707c283addd84ea13f6e67fc5934a2e543fdc6f912464736f6c63430008140033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| 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 | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xb47809…2d8341 | 31 days agoFri, 17 Jul 2026 16:39:59 UTC | Transfer | [0] 0x000000000000…10c9546a [1] 0x000000000000…3253bd44 data: 0x000000000000000000…04330304 |
| 0x16f020…8c2140 | 31 days agoFri, 17 Jul 2026 16:36:39 UTC | Transfer | [0] 0x000000000000…4b4da2dd [1] 0x000000000000…10c9546a data: 0x000000000000000000…1b413985 |
| 0x08a8c9…6ebeff | 31 days agoFri, 17 Jul 2026 16:36:10 UTC | Transfer | [0] 0x000000000000…a378878f [1] 0x000000000000…10c9546a data: 0x000000000000000000…561dc29e |
| 0x701d4a…71b090 | 31 days agoFri, 17 Jul 2026 16:35:39 UTC | Transfer | [0] 0x000000000000…df07729b [1] 0x000000000000…10c9546a data: 0x000000000000000000…f654e81d |
| 0x75c640…96c769 | 31 days agoFri, 17 Jul 2026 16:34:37 UTC | Transfer | [0] 0x000000000000…0d2be964 [1] 0x000000000000…10c9546a data: 0x000000000000000000…78512f6d |
| 0x7e1f81…9ca20b | 31 days agoFri, 17 Jul 2026 16:28:57 UTC | Transfer | [0] 0x000000000000…d271b6bc [1] 0x000000000000…10c9546a data: 0x000000000000000000…99657432 |
| 0x702a21…4ffa1e | 31 days agoFri, 17 Jul 2026 16:28:04 UTC | Transfer | [0] 0x000000000000…0eea85d2 [1] 0x000000000000…10c9546a data: 0x000000000000000000…dc393e6d |
| 0xd98b15…091c1b | 31 days agoFri, 17 Jul 2026 16:26:54 UTC | Transfer | [0] 0x000000000000…d433261e [1] 0x000000000000…10c9546a data: 0x000000000000000000…d00b3211 |
| 0x635c08…38c400 | 31 days agoFri, 17 Jul 2026 16:25:45 UTC | Transfer | [0] 0x000000000000…8cf51162 [1] 0x000000000000…10c9546a data: 0x000000000000000000…ac2ec3f5 |
| 0x39f245…a8d6b2 | 31 days agoFri, 17 Jul 2026 16:07:43 UTC | Transfer | [0] 0x000000000000…ce7d3768 [1] 0x000000000000…10c9546a data: 0x000000000000000000…8b2daace |
| 0xa1733d…0116eb | 31 days agoFri, 17 Jul 2026 16:06:54 UTC | Transfer | [0] 0x000000000000…d18d034e [1] 0x000000000000…10c9546a data: 0x000000000000000000…0ae9ca8d |
| 0x5dd739…7346ac | 31 days agoFri, 17 Jul 2026 16:06:05 UTC | Transfer | [0] 0x000000000000…a8007df4 [1] 0x000000000000…10c9546a data: 0x000000000000000000…9501e798 |
| 0x33d2e4…79aa6b | 31 days agoFri, 17 Jul 2026 16:04:28 UTC | Transfer | [0] 0x000000000000…fbb97a7d [1] 0x000000000000…10c9546a data: 0x000000000000000000…efbac9bf |
| 0x94328c…380bb9 | 31 days agoFri, 17 Jul 2026 16:03:47 UTC | Transfer | [0] 0x000000000000…db53900c [1] 0x000000000000…10c9546a data: 0x000000000000000000…7c32ec1e |
| 0x431896…5991a7 | 31 days agoFri, 17 Jul 2026 16:00:20 UTC | Transfer | [0] 0x000000000000…84ef9c7c [1] 0x000000000000…10c9546a data: 0x000000000000000000…93d9c5f4 |
| 0x89106d…968bdf | 31 days agoFri, 17 Jul 2026 15:58:18 UTC | Transfer | [0] 0x000000000000…f7774407 [1] 0x000000000000…10c9546a data: 0x000000000000000000…d0d94cd9 |
| 0x782a0f…fdb4a8 | 31 days agoFri, 17 Jul 2026 15:55:11 UTC | Transfer | [0] 0x000000000000…5f1fce84 [1] 0x000000000000…10c9546a data: 0x000000000000000000…e057c82d |
| 0x729392…8aa9e0 | 31 days agoFri, 17 Jul 2026 15:53:52 UTC | Transfer | [0] 0x000000000000…d2010fcb [1] 0x000000000000…10c9546a data: 0x000000000000000000…44798506 |
| 0xa568c4…1b32ec | 31 days agoFri, 17 Jul 2026 15:52:19 UTC | Transfer | [0] 0x000000000000…ca8bff1f [1] 0x000000000000…10c9546a data: 0x000000000000000000…11c9d3e2 |
| 0xe61a8a…58da4a | 33 days agoWed, 15 Jul 2026 03:39:07 UTC | Transfer | [0] 0x000000000000…9dcadb9b [1] 0x000000000000…85779c87 data: 0x000000000000000000…8bb05705 |
| 0xeb3884…b0c2c0 | 33 days agoTue, 14 Jul 2026 23:10:56 UTC | Transfer | [0] 0x000000000000…3253bd44 [1] 0x000000000000…290f0187 data: 0x000000000000000000…2bd8e0b7 |
| 0x183d40…5ac18f | 33 days agoTue, 14 Jul 2026 22:59:45 UTC | Transfer | [0] 0x000000000000…10c9546a [1] 0x000000000000…3253bd44 data: 0x000000000000000000…20b7c782 |
| 0x183d40…5ac18f | 33 days agoTue, 14 Jul 2026 22:59:45 UTC | Approval | [0] 0x000000000000…10c9546a [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x200ebe…2ff43f | 34 days agoTue, 14 Jul 2026 22:20:06 UTC | 0x8be007…57e0 | [0] 0x000000000000…290f0187 [1] 0x000000000000…00000000 |
| 0x3ed4ec…988ae4 | 34 days agoTue, 14 Jul 2026 22:18:07 UTC | Approval | [0] 0x000000000000…d4863fe4 [1] 0x000000000000…7a9592a7 data: 0xffffffffffffffffff…ffffffff |
| 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 ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x16f020…8c2140 | Transfer | 12,267,757 | 31 days agoFri, 17 Jul 2026 16:36:39 UTC | 0x6f5f…a2dd | IN | Mama Duck | $0.000 ETH | 0.00000272 | |
| 0x08a8c9…6ebeff | Transfer | 12,267,474 | 31 days agoFri, 17 Jul 2026 16:36:10 UTC | 0x9534…878f | IN | Mama Duck | $0.000 ETH | 0.00000274 | |
| 0x701d4a…71b090 | Transfer | 12,267,146 | 31 days agoFri, 17 Jul 2026 16:35:39 UTC | 0xed4e…729b | IN | Mama Duck | $0.000 ETH | 0.00000272 | |
| 0x75c640…96c769 | Transfer | 12,266,536 | 31 days agoFri, 17 Jul 2026 16:34:37 UTC | 0x74f4…e964 | IN | Mama Duck | $0.000 ETH | 0.00000273 | |
| 0x7e1f81…9ca20b | Transfer | 12,263,141 | 31 days agoFri, 17 Jul 2026 16:28:57 UTC | 0x655c…b6bc | IN | Mama Duck | $0.000 ETH | 0.00000273 | |
| 0x702a21…4ffa1e | Transfer | 12,262,609 | 31 days agoFri, 17 Jul 2026 16:28:04 UTC | 0x2db8…85d2 | IN | Mama Duck | $0.000 ETH | 0.00000272 | |
| 0xd98b15…091c1b | Transfer | 12,261,915 | 31 days agoFri, 17 Jul 2026 16:26:54 UTC | 0x8b10…261e | IN | Mama Duck | $0.000 ETH | 0.00000273 | |
| 0x635c08…38c400 | Transfer | 12,261,233 | 31 days agoFri, 17 Jul 2026 16:25:45 UTC | 0x1fe5…1162 | IN | Mama Duck | $0.000 ETH | 0.00000277 | |
| 0x39f245…a8d6b2 | Transfer | 12,250,437 | 31 days agoFri, 17 Jul 2026 16:07:43 UTC | 0x8e4c…3768 | IN | Mama Duck | $0.000 ETH | 0.00000272 | |
| 0xa1733d…0116eb | Transfer | 12,249,947 | 31 days agoFri, 17 Jul 2026 16:06:54 UTC | 0x7c85…034e | IN | Mama Duck | $0.000 ETH | 0.00000271 | |
| 0x5dd739…7346ac | Transfer | 12,249,463 | 31 days agoFri, 17 Jul 2026 16:06:05 UTC | 0xfbcc…7df4 | IN | Mama Duck | $0.000 ETH | 0.00000273 | |
| 0x33d2e4…79aa6b | Transfer | 12,248,500 | 31 days agoFri, 17 Jul 2026 16:04:28 UTC | 0x2f15…7a7d | IN | Mama Duck | $0.000 ETH | 0.00000274 | |
| 0x94328c…380bb9 | Transfer | 12,248,071 | 31 days agoFri, 17 Jul 2026 16:03:47 UTC | 0x8232…900c | IN | Mama Duck | $0.000 ETH | 0.00000278 | |
| 0x431896…5991a7 | Transfer | 12,246,014 | 31 days agoFri, 17 Jul 2026 16:00:20 UTC | 0xd5e5…9c7c | IN | Mama Duck | $0.000 ETH | 0.00000271 | |
| 0x89106d…968bdf | Transfer | 12,244,806 | 31 days agoFri, 17 Jul 2026 15:58:18 UTC | 0x0149…4407 | IN | Mama Duck | $0.000 ETH | 0.00000272 | |
| 0x782a0f…fdb4a8 | Transfer | 12,242,930 | 31 days agoFri, 17 Jul 2026 15:55:11 UTC | 0x86b7…ce84 | IN | Mama Duck | $0.000 ETH | 0.00000275 | |
| 0x729392…8aa9e0 | Transfer | 12,242,143 | 31 days agoFri, 17 Jul 2026 15:53:52 UTC | 0xdfe6…0fcb | IN | Mama Duck | $0.000 ETH | 0.00000272 | |
| 0xa568c4…1b32ec | Transfer | 12,241,222 | 31 days agoFri, 17 Jul 2026 15:52:19 UTC | 0xa114…ff1f | IN | Mama Duck | $0.000 ETH | 0.00000399 | |
| 0xe61a8a…58da4a | Transfer | 10,075,019 | 33 days agoWed, 15 Jul 2026 03:39:07 UTC | 0xf387…db9b | IN | Mama Duck | $0.000 ETH | 0.00000299 | |
| 0x200ebe…2ff43f | renounceOwnership | 9,884,146 | 34 days agoTue, 14 Jul 2026 22:20:06 UTC | 0xecbc…0187 | IN | Mama Duck | $0.000 ETH | 0.00000124 | |
| 0x3ed4ec…988ae4 | Approve | 9,882,966 | 34 days agoTue, 14 Jul 2026 22:18:07 UTC | 0xf131…3fe4 | IN | Mama Duck | $0.000 ETH | 0.00000251 | |
| 0xb778e4…57236b | setMaxWallet | 9,868,101 | 34 days agoTue, 14 Jul 2026 21:53:18 UTC | 0xecbc…0187 | IN | Mama Duck | $0.000 ETH | 0.00000157 | |
| 0xd03e53…56ac2b | Approve | 9,849,101 | 34 days agoTue, 14 Jul 2026 21:21:34 UTC | 0x111d…f711 | IN | Mama Duck | $0.000 ETH | 0.00000251 | |
| 0x699c45…b910d4 | setExempt | 9,825,360 | 34 days agoTue, 14 Jul 2026 20:41:57 UTC | 0xecbc…0187 | IN | Mama Duck | $0.000 ETH | 0.00000149 | |
| 0xd4518b…bda819 | setExempt | 9,821,622 | 34 days agoTue, 14 Jul 2026 20:35:42 UTC | 0xecbc…0187 | IN | Mama Duck | $0.000 ETH | 0.00000255 |