// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
interface IUniswapV2Router {
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline
) external;
function addLiquidity(
address tokenA, address tokenB, uint amountADesired, uint amountBDesired,
uint amountAMin, uint amountBMin, address to, uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
}
contract RanchToken is ERC20, Ownable {
// Limits are now fully adjustable
uint256 public maxTxAmount = 5_000_000 * 10**18; // 0.5% starting max tx
uint256 public maxWalletAmount = 10_000_000 * 10**18; // 1.0% starting max wallet
uint256 public swapThreshold = 500_000 * 10**18; // 0.05%
bool public tradingEnabled = false;
bool private inSwap;
bool public autoLiquidityEnabled = true;
// Anti-bot variables
uint256 public tradingActiveBlock;
uint256 public deadBlocks;
address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
address public constant TENDIES_ADDRESS = 0x45242320DBB855EeA8Fd36804C6487E10E97FCF9;
address public constant ROUTER_ADDRESS = 0x89e5DB8B5aA49aA85AC63f691524311AEB649eba;
address public pairAddress;
IUniswapV2Router public router;
mapping(address => bool) public isExcludedFromLimits;
constructor() ERC20("Ranch", "RANCH") Ownable(msg.sender) {
router = IUniswapV2Router(ROUTER_ADDRESS);
isExcludedFromLimits[msg.sender] = true;
isExcludedFromLimits[address(this)] = true;
isExcludedFromLimits[DEAD] = true;
isExcludedFromLimits[ROUTER_ADDRESS] = true;
// Mint 1 Billion tokens
_mint(msg.sender, 1_000_000_000 * 10**18);
}
function setPair(address _pairAddress) external onlyOwner {
require(pairAddress == address(0), "Pair already set"); // Prevent accidental resets
pairAddress = _pairAddress;
isExcludedFromLimits[_pairAddress] = true;
}
// Function to whitelist airdrop tools or other addresses
function excludeFromLimits(address account, bool excluded) external onlyOwner {
isExcludedFromLimits[account] = excluded;
}
// Function to update limits incrementally using raw numbers of tokens.
// Example: To raise the max wallet limit to 20 million tokens (2%), type 20000000.
// To completely remove limits, type 1000000000 (1 Billion - your total supply).
function updateLimits(uint256 newMaxTxTokens, uint256 newMaxWalletTokens) external onlyOwner {
maxTxAmount = newMaxTxTokens * 10**18;
maxWalletAmount = newMaxWalletTokens * 10**18;
}
// Pass in the number of blocks you want snipers heavily restricted (e.g., 2)
function enableTrading(uint256 _deadBlocks) external onlyOwner {
require(!tradingEnabled, "Already enabled");
tradingEnabled = true;
tradingActiveBlock = block.number;
deadBlocks = _deadBlocks;
}
function _update(address from, address to, uint256 amount) internal override {
// 1. Enforce Max Limits & Anti-Bot
if (!isExcludedFromLimits[from] && !isExcludedFromLimits[to]) {
require(tradingEnabled, "Trading not active");
require(amount <= maxTxAmount, "Exceeds max transaction");
if (to != pairAddress) {
require(balanceOf(to) + amount <= maxWalletAmount, "Exceeds max wallet");
}
// Anti-Sniper Block Protection
if (block.number <= tradingActiveBlock + deadBlocks) {
// Prevent smart contract snipers in the first few blocks
require(tx.origin == msg.sender, "No bot contracts during launch");
}
}
uint256 taxAmount = 0;
// 2. Tax Logic (Taxes BOTH Buys and Sells)
if (tradingEnabled && !inSwap && !isExcludedFromLimits[from] && !isExcludedFromLimits[to]) {
// If tokens are going TO the pair (Sell) or FROM the pair (Buy)
if (to == pairAddress || from == pairAddress) {
taxAmount = (amount * 2) / 100; // 2% Tax
}
// Trigger automation on SALES only to prevent gas issues on buys
if (to == pairAddress && balanceOf(address(this)) >= swapThreshold) {
swapAndLiquify();
}
}
// 3. Process Tax and Transfer
if (taxAmount > 0) {
super._update(from, address(this), taxAmount);
amount -= taxAmount;
}
super._update(from, to, amount);
}
function swapAndLiquify() private {
inSwap = true;
uint256 totalTax = balanceOf(address(this));
// 1. Burn 0.5% RANCH (25% of total tax)
uint256 forBurnRanch = totalTax / 4;
_transfer(address(this), DEAD, forBurnRanch);
// 2. Prepare 50% of the tax for Swap to TENDIES (for TENDIES Burn + LP)
uint256 forSwap = totalTax / 2;
// 3. The remaining 25% stays as RANCH to pair for Auto-LP
uint256 ranchForLP = totalTax - forBurnRanch - forSwap;
_approve(address(this), address(router), forSwap);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = TENDIES_ADDRESS;
uint256 initialTendies = IERC20(TENDIES_ADDRESS).balanceOf(address(this));
try router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
forSwap, 0, path, address(this), block.timestamp
) {
uint256 newTendies = IERC20(TENDIES_ADDRESS).balanceOf(address(this)) - initialTendies;
// 4. Burn TENDIES (50% of what was just swapped)
uint256 tendiesForBurn = newTendies / 2;
IERC20(TENDIES_ADDRESS).transfer(DEAD, tendiesForBurn);
// 5. Add Auto-LP
if (autoLiquidityEnabled && pairAddress != address(0)) {
uint256 tendiesForLP = newTendies - tendiesForBurn;
IERC20(TENDIES_ADDRESS).approve(address(router), tendiesForLP);
_approve(address(this), address(router), ranchForLP);
try router.addLiquidity(
address(this), TENDIES_ADDRESS, ranchForLP, tendiesForLP, 0, 0, DEAD, block.timestamp
) {} catch {}
}
} catch {}
inSwap = false;
}
}[
{
"type": "constructor",
"inputs": [],
"stateMutability": "nonpayable"
},
{
"name": "ERC20InsufficientAllowance",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "allowance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InsufficientBalance",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "balance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InvalidApprover",
"type": "error",
"inputs": [
{
"name": "approver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidReceiver",
"type": "error",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSender",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSpender",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"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": "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": "DEAD",
"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": "TENDIES_ADDRESS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"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": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "autoLiquidityEnabled",
"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": "deadBlocks",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "enableTrading",
"type": "function",
"inputs": [
{
"name": "_deadBlocks",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "excludeFromLimits",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "excluded",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "isExcludedFromLimits",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"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": "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": "pairAddress",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "router",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IUniswapV2Router"
}
],
"stateMutability": "view"
},
{
"name": "setPair",
"type": "function",
"inputs": [
{
"name": "_pairAddress",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "swapThreshold",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"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": "view"
},
{
"name": "tradingActiveBlock",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "tradingEnabled",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"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": "value",
"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": "updateLimits",
"type": "function",
"inputs": [
{
"name": "newMaxTxTokens",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "newMaxWalletTokens",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x60806040526a0422ca8b0a00a4250000006006556a084595161401484a0000006007556969e10de76676d08000006008555f60095f6101000a81548160ff0219169083151502179055506001600960026101000a81548160ff02191690831515021790555034801561006f575f5ffd5b50336040518060400160405280600581526020017f52616e63680000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f52414e434800000000000000000000000000000000000000000000000000000081525081600390816100ec919061174a565b5080600490816100fc919061174a565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361016f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101669190611858565b60405180910390fd5b61017e8161035e60201b60201c565b507389e5db8b5aa49aa85ac63f691524311aeb649eba600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f7389e5db8b5aa49aa85ac63f691524311aeb649eba73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610359336b033b2e3c9fd0803ce800000061042160201b60201c565b611ed0565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610491575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104889190611858565b60405180910390fd5b6104a25f83836104a660201b60201c565b5050565b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156105445750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156107155760095f9054906101000a900460ff16610597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058e906118cb565b60405180910390fd5b6006548111156105dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d390611933565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461068f57600754816106438461097460201b60201c565b61064d919061197e565b111561068e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610685906119fb565b60405180910390fd5b5b600b54600a5461069f919061197e565b4311610714573373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a90611a63565b60405180910390fd5b5b5b5f5f905060095f9054906101000a900460ff1680156107415750600960019054906101000a900460ff16155b80156107945750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156107e75750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561093557600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806108935750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156108b45760646002836108a79190611a81565b6108b19190611aef565b90505b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015610920575060085461091d3061097460201b60201c565b10155b15610934576109336109b960201b60201c565b5b5b5f81111561095d5761094e84308361100660201b60201c565b808261095a9190611b1f565b91505b61096e84848461100660201b60201c565b50505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6001600960016101000a81548160ff0219169083151502179055505f6109e43061097460201b60201c565b90505f6004826109f49190611aef565b9050610a093061dead8361121f60201b60201c565b5f600283610a179190611aef565b90505f818385610a279190611b1f565b610a319190611b1f565b9050610a6530600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461131560201b60201c565b5f600267ffffffffffffffff811115610a8157610a80611506565b5b604051908082528060200260200182016040528015610aaf5781602001602082028036833780820191505090505b50905030815f81518110610ac657610ac5611b52565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507345242320dbb855eea8fd36804c6487e10e97fcf981600181518110610b2957610b28611b52565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f7345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bb19190611858565b602060405180830381865afa158015610bcc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf09190611bad565b9050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795855f8530426040518663ffffffff1660e01b8152600401610c54959493929190611cd7565b5f604051808303815f87803b158015610c6b575f5ffd5b505af1925050508015610c7c575060015b15610fe4575f817345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cd09190611858565b602060405180830381865afa158015610ceb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0f9190611bad565b610d199190611b1f565b90505f600282610d299190611aef565b90507345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead836040518363ffffffff1660e01b8152600401610d7c929190611d2f565b6020604051808303815f875af1158015610d98573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dbc9190611d8b565b50600960029054906101000a900460ff168015610e2657505f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610fe1575f8183610e389190611b1f565b90507345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610eaa929190611d2f565b6020604051808303815f875af1158015610ec6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eea9190611d8b565b50610f1d30600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168861131560201b60201c565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307345242320dbb855eea8fd36804c6487e10e97fcf989855f5f61dead426040518963ffffffff1660e01b8152600401610f9b989796959493929190611db6565b6060604051808303815f875af1925050508015610fd657506040513d601f19601f82011682018060405250810190610fd39190611e32565b60015b15610fdf575050505b505b50505b5f600960016101000a81548160ff021916908315150217905550505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611056578060025f82825461104a919061197e565b92505081905550611124565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156110df578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016110d693929190611e82565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361116b578060025f82825403925050819055506111b5565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112129190611eb7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361128f575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016112869190611858565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ff575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016112f69190611858565b60405180910390fd5b6113108383836104a660201b60201c565b505050565b611328838383600161132d60201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361139d575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016113949190611858565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361140d575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016114049190611858565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156114f6578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114ed9190611eb7565b60405180910390a35b50505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061157757607f821691505b60208210810361158a57611589611533565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026115ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826115b1565b6115f686836115b1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61163a6116356116308461160e565b611617565b61160e565b9050919050565b5f819050919050565b61165383611620565b61166761165f82611641565b8484546115bd565b825550505050565b5f5f905090565b61167e61166f565b61168981848461164a565b505050565b5f5b828110156116af576116a45f828401611676565b600181019050611690565b505050565b601f8211156117025782821115611701576116ce81611590565b6116d7836115a2565b6116e0856115a2565b60208610156116ed575f90505b8083016116fc8284038261168e565b505050505b5b505050565b5f82821c905092915050565b5f6117225f1984600802611707565b1980831691505092915050565b5f61173a8383611713565b9150826002028217905092915050565b611753826114fc565b67ffffffffffffffff81111561176c5761176b611506565b5b6117768254611560565b6117818282856116b4565b5f60209050601f8311600181146117b2575f84156117a0578287015190505b6117aa858261172f565b865550611811565b601f1984166117c086611590565b5f5b828110156117e7578489015182556001820191506020850194506020810190506117c2565b868310156118045784890151611800601f891682611713565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61184282611819565b9050919050565b61185281611838565b82525050565b5f60208201905061186b5f830184611849565b92915050565b5f82825260208201905092915050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6118b5601283611871565b91506118c082611881565b602082019050919050565b5f6020820190508181035f8301526118e2816118a9565b9050919050565b7f45786365656473206d6178207472616e73616374696f6e0000000000000000005f82015250565b5f61191d601783611871565b9150611928826118e9565b602082019050919050565b5f6020820190508181035f83015261194a81611911565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6119888261160e565b91506119938361160e565b92508282019050808211156119ab576119aa611951565b5b92915050565b7f45786365656473206d61782077616c6c657400000000000000000000000000005f82015250565b5f6119e5601283611871565b91506119f0826119b1565b602082019050919050565b5f6020820190508181035f830152611a12816119d9565b9050919050565b7f4e6f20626f7420636f6e74726163747320647572696e67206c61756e636800005f82015250565b5f611a4d601e83611871565b9150611a5882611a19565b602082019050919050565b5f6020820190508181035f830152611a7a81611a41565b9050919050565b5f611a8b8261160e565b9150611a968361160e565b9250828202611aa48161160e565b91508282048414831517611abb57611aba611951565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611af98261160e565b9150611b048361160e565b925082611b1457611b13611ac2565b5b828204905092915050565b5f611b298261160e565b9150611b348361160e565b9250828203905081811115611b4c57611b4b611951565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5ffd5b611b8c8161160e565b8114611b96575f5ffd5b50565b5f81519050611ba781611b83565b92915050565b5f60208284031215611bc257611bc1611b7f565b5b5f611bcf84828501611b99565b91505092915050565b611be18161160e565b82525050565b5f819050919050565b5f611c0a611c05611c0084611be7565b611617565b61160e565b9050919050565b611c1a81611bf0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611c5281611838565b82525050565b5f611c638383611c49565b60208301905092915050565b5f602082019050919050565b5f611c8582611c20565b611c8f8185611c2a565b9350611c9a83611c3a565b805f5b83811015611cca578151611cb18882611c58565b9750611cbc83611c6f565b925050600181019050611c9d565b5085935050505092915050565b5f60a082019050611cea5f830188611bd8565b611cf76020830187611c11565b8181036040830152611d098186611c7b565b9050611d186060830185611849565b611d256080830184611bd8565b9695505050505050565b5f604082019050611d425f830185611849565b611d4f6020830184611bd8565b9392505050565b5f8115159050919050565b611d6a81611d56565b8114611d74575f5ffd5b50565b5f81519050611d8581611d61565b92915050565b5f60208284031215611da057611d9f611b7f565b5b5f611dad84828501611d77565b91505092915050565b5f61010082019050611dca5f83018b611849565b611dd7602083018a611849565b611de46040830189611bd8565b611df16060830188611bd8565b611dfe6080830187611c11565b611e0b60a0830186611c11565b611e1860c0830185611849565b611e2560e0830184611bd8565b9998505050505050505050565b5f5f5f60608486031215611e4957611e48611b7f565b5b5f611e5686828701611b99565b9350506020611e6786828701611b99565b9250506040611e7886828701611b99565b9150509250925092565b5f606082019050611e955f830186611849565b611ea26020830185611bd8565b611eaf6040830184611bd8565b949350505050565b5f602082019050611eca5f830184611bd8565b92915050565b61292280611edd5f395ff3fe608060405234801561000f575f5ffd5b50600436106101cd575f3560e01c806382aa7c6811610102578063aa4bde28116100a0578063ee40166e1161006f578063ee40166e1461050f578063f2fde38b1461052d578063f887ea4014610549578063fabb0b4f14610567576101cd565b8063aa4bde2814610487578063b94a6dfe146104a5578063c0a904a2146104c3578063dd62ed3e146104df576101cd565b806395d89b41116100dc57806395d89b41146103ff578063a2240e191461041d578063a8b0898214610439578063a9059cbb14610457576101cd565b806382aa7c68146103a75780638c0b5e22146103c35780638da5cb5b146103e1576101cd565b806337d916111161016f57806370a082311161014957806370a0823114610333578063715018a6146103635780637899680e1461036d5780638187f5161461038b576101cd565b806337d91611146102c75780634ada218b146102e55780635cce86cd14610303576101cd565b8063095ea7b3116101ab578063095ea7b31461022b57806318160ddd1461025b57806323b872dd14610279578063313ce567146102a9576101cd565b806303fd2a45146101d15780630445b667146101ef57806306fdde031461020d575b5f5ffd5b6101d9610585565b6040516101e69190611dd1565b60405180910390f35b6101f761058b565b6040516102049190611e02565b60405180910390f35b610215610591565b6040516102229190611e8b565b60405180910390f35b61024560048036038101906102409190611f03565b610621565b6040516102529190611f5b565b60405180910390f35b610263610643565b6040516102709190611e02565b60405180910390f35b610293600480360381019061028e9190611f74565b61064c565b6040516102a09190611f5b565b60405180910390f35b6102b161067a565b6040516102be9190611fdf565b60405180910390f35b6102cf610682565b6040516102dc9190611dd1565b60405180910390f35b6102ed61069a565b6040516102fa9190611f5b565b60405180910390f35b61031d60048036038101906103189190611ff8565b6106ac565b60405161032a9190611f5b565b60405180910390f35b61034d60048036038101906103489190611ff8565b6106c9565b60405161035a9190611e02565b60405180910390f35b61036b61070e565b005b610375610721565b6040516103829190611f5b565b60405180910390f35b6103a560048036038101906103a09190611ff8565b610734565b005b6103c160048036038101906103bc9190612023565b610863565b005b6103cb6108e5565b6040516103d89190611e02565b60405180910390f35b6103e96108eb565b6040516103f69190611dd1565b60405180910390f35b610407610913565b6040516104149190611e8b565b60405180910390f35b6104376004803603810190610432919061204e565b6109a3565b005b6104416109e3565b60405161044e9190611dd1565b60405180910390f35b610471600480360381019061046c9190611f03565b610a08565b60405161047e9190611f5b565b60405180910390f35b61048f610a2a565b60405161049c9190611e02565b60405180910390f35b6104ad610a30565b6040516104ba9190611dd1565b60405180910390f35b6104dd60048036038101906104d891906120b6565b610a48565b005b6104f960048036038101906104f491906120f4565b610aa8565b6040516105069190611e02565b60405180910390f35b610517610b2a565b6040516105249190611e02565b60405180910390f35b61054760048036038101906105429190611ff8565b610b30565b005b610551610bb4565b60405161055e919061218d565b60405180910390f35b61056f610bd9565b60405161057c9190611e02565b60405180910390f35b61dead81565b60085481565b6060600380546105a0906121d3565b80601f01602080910402602001604051908101604052809291908181526020018280546105cc906121d3565b80156106175780601f106105ee57610100808354040283529160200191610617565b820191905f5260205f20905b8154815290600101906020018083116105fa57829003601f168201915b5050505050905090565b5f5f61062b610bdf565b9050610638818585610be6565b600191505092915050565b5f600254905090565b5f5f610656610bdf565b9050610663858285610bf8565b61066e858585610c8b565b60019150509392505050565b5f6012905090565b7345242320dbb855eea8fd36804c6487e10e97fcf981565b60095f9054906101000a900460ff1681565b600e602052805f5260405f205f915054906101000a900460ff1681565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610716610d7b565b61071f5f610e02565b565b600960029054906101000a900460ff1681565b61073c610d7b565b5f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c29061224d565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b61086b610d7b565b60095f9054906101000a900460ff16156108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b1906122b5565b60405180910390fd5b600160095f6101000a81548160ff02191690831515021790555043600a8190555080600b8190555050565b60065481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610922906121d3565b80601f016020809104026020016040519081016040528092919081815260200182805461094e906121d3565b80156109995780601f1061097057610100808354040283529160200191610999565b820191905f5260205f20905b81548152906001019060200180831161097c57829003601f168201915b5050505050905090565b6109ab610d7b565b670de0b6b3a7640000826109bf9190612300565b600681905550670de0b6b3a7640000816109d99190612300565b6007819055505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f610a12610bdf565b9050610a1f818585610c8b565b600191505092915050565b60075481565b7389e5db8b5aa49aa85ac63f691524311aeb649eba81565b610a50610d7b565b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b610b38610d7b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ba8575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b9f9190611dd1565b60405180910390fd5b610bb181610e02565b50565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b5f33905090565b610bf38383836001610ec5565b505050565b5f610c038484610aa8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610c855781811015610c76578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610c6d93929190612341565b60405180910390fd5b610c8484848484035f610ec5565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cfb575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610cf29190611dd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d6b575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610d629190611dd1565b60405180910390fd5b610d76838383611094565b505050565b610d83610bdf565b73ffffffffffffffffffffffffffffffffffffffff16610da16108eb565b73ffffffffffffffffffffffffffffffffffffffff1614610e0057610dc4610bdf565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610df79190611dd1565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f35575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f2c9190611dd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fa5575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f9c9190611dd1565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561108e578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110859190611e02565b60405180910390a35b50505050565b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156111325750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156112fd5760095f9054906101000a900460ff16611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c906123c0565b60405180910390fd5b6006548111156111ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c190612428565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611277576007548161122b846106c9565b6112359190612446565b1115611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126d906124c3565b60405180910390fd5b5b600b54600a546112879190612446565b43116112fc573373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f29061252b565b60405180910390fd5b5b5b5f5f905060095f9054906101000a900460ff1680156113295750600960019054906101000a900460ff16155b801561137c5750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113cf5750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561151157600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061147b5750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561149c57606460028361148f9190612300565b6114999190612576565b90505b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561150257506008546114ff306106c9565b10155b156115105761150f611544565b5b5b5f81111561153357611524843083611b79565b808261153091906125a6565b91505b61153e848484611b79565b50505050565b6001600960016101000a81548160ff0219169083151502179055505f611569306106c9565b90505f6004826115799190612576565b90506115883061dead83610c8b565b5f6002836115969190612576565b90505f8183856115a691906125a6565b6115b091906125a6565b90506115de30600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610be6565b5f600267ffffffffffffffff8111156115fa576115f96125d9565b5b6040519080825280602002602001820160405280156116285781602001602082028036833780820191505090505b50905030815f8151811061163f5761163e612606565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507345242320dbb855eea8fd36804c6487e10e97fcf9816001815181106116a2576116a1612606565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f7345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161172a9190611dd1565b602060405180830381865afa158015611745573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117699190612647565b9050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795855f8530426040518663ffffffff1660e01b81526004016117cd959493929190612762565b5f604051808303815f87803b1580156117e4575f5ffd5b505af19250505080156117f5575060015b15611b57575f817345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118499190611dd1565b602060405180830381865afa158015611864573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118889190612647565b61189291906125a6565b90505f6002826118a29190612576565b90507345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead836040518363ffffffff1660e01b81526004016118f59291906127ba565b6020604051808303815f875af1158015611911573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061193591906127f5565b50600960029054906101000a900460ff16801561199f57505f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611b54575f81836119b191906125a6565b90507345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611a239291906127ba565b6020604051808303815f875af1158015611a3f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6391906127f5565b50611a9030600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688610be6565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307345242320dbb855eea8fd36804c6487e10e97fcf989855f5f61dead426040518963ffffffff1660e01b8152600401611b0e989796959493929190612820565b6060604051808303815f875af1925050508015611b4957506040513d601f19601f82011682018060405250810190611b46919061289c565b60015b15611b52575050505b505b50505b5f600960016101000a81548160ff021916908315150217905550505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bc9578060025f828254611bbd9190612446565b92505081905550611c97565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611c52578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611c4993929190612341565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cde578060025f8282540392505081905550611d28565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d859190611e02565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611dbb82611d92565b9050919050565b611dcb81611db1565b82525050565b5f602082019050611de45f830184611dc2565b92915050565b5f819050919050565b611dfc81611dea565b82525050565b5f602082019050611e155f830184611df3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e5d82611e1b565b611e678185611e25565b9350611e77818560208601611e35565b611e8081611e43565b840191505092915050565b5f6020820190508181035f830152611ea38184611e53565b905092915050565b5f5ffd5b611eb881611db1565b8114611ec2575f5ffd5b50565b5f81359050611ed381611eaf565b92915050565b611ee281611dea565b8114611eec575f5ffd5b50565b5f81359050611efd81611ed9565b92915050565b5f5f60408385031215611f1957611f18611eab565b5b5f611f2685828601611ec5565b9250506020611f3785828601611eef565b9150509250929050565b5f8115159050919050565b611f5581611f41565b82525050565b5f602082019050611f6e5f830184611f4c565b92915050565b5f5f5f60608486031215611f8b57611f8a611eab565b5b5f611f9886828701611ec5565b9350506020611fa986828701611ec5565b9250506040611fba86828701611eef565b9150509250925092565b5f60ff82169050919050565b611fd981611fc4565b82525050565b5f602082019050611ff25f830184611fd0565b92915050565b5f6020828403121561200d5761200c611eab565b5b5f61201a84828501611ec5565b91505092915050565b5f6020828403121561203857612037611eab565b5b5f61204584828501611eef565b91505092915050565b5f5f6040838503121561206457612063611eab565b5b5f61207185828601611eef565b925050602061208285828601611eef565b9150509250929050565b61209581611f41565b811461209f575f5ffd5b50565b5f813590506120b08161208c565b92915050565b5f5f604083850312156120cc576120cb611eab565b5b5f6120d985828601611ec5565b92505060206120ea858286016120a2565b9150509250929050565b5f5f6040838503121561210a57612109611eab565b5b5f61211785828601611ec5565b925050602061212885828601611ec5565b9150509250929050565b5f819050919050565b5f61215561215061214b84611d92565b612132565b611d92565b9050919050565b5f6121668261213b565b9050919050565b5f6121778261215c565b9050919050565b6121878161216d565b82525050565b5f6020820190506121a05f83018461217e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806121ea57607f821691505b6020821081036121fd576121fc6121a6565b5b50919050565b7f5061697220616c726561647920736574000000000000000000000000000000005f82015250565b5f612237601083611e25565b915061224282612203565b602082019050919050565b5f6020820190508181035f8301526122648161222b565b9050919050565b7f416c726561647920656e61626c656400000000000000000000000000000000005f82015250565b5f61229f600f83611e25565b91506122aa8261226b565b602082019050919050565b5f6020820190508181035f8301526122cc81612293565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61230a82611dea565b915061231583611dea565b925082820261232381611dea565b9150828204841483151761233a576123396122d3565b5b5092915050565b5f6060820190506123545f830186611dc2565b6123616020830185611df3565b61236e6040830184611df3565b949350505050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6123aa601283611e25565b91506123b582612376565b602082019050919050565b5f6020820190508181035f8301526123d78161239e565b9050919050565b7f45786365656473206d6178207472616e73616374696f6e0000000000000000005f82015250565b5f612412601783611e25565b915061241d826123de565b602082019050919050565b5f6020820190508181035f83015261243f81612406565b9050919050565b5f61245082611dea565b915061245b83611dea565b9250828201905080821115612473576124726122d3565b5b92915050565b7f45786365656473206d61782077616c6c657400000000000000000000000000005f82015250565b5f6124ad601283611e25565b91506124b882612479565b602082019050919050565b5f6020820190508181035f8301526124da816124a1565b9050919050565b7f4e6f20626f7420636f6e74726163747320647572696e67206c61756e636800005f82015250565b5f612515601e83611e25565b9150612520826124e1565b602082019050919050565b5f6020820190508181035f83015261254281612509565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61258082611dea565b915061258b83611dea565b92508261259b5761259a612549565b5b828204905092915050565b5f6125b082611dea565b91506125bb83611dea565b92508282039050818111156125d3576125d26122d3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061264181611ed9565b92915050565b5f6020828403121561265c5761265b611eab565b5b5f61266984828501612633565b91505092915050565b5f819050919050565b5f61269561269061268b84612672565b612132565b611dea565b9050919050565b6126a58161267b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6126dd81611db1565b82525050565b5f6126ee83836126d4565b60208301905092915050565b5f602082019050919050565b5f612710826126ab565b61271a81856126b5565b9350612725836126c5565b805f5b8381101561275557815161273c88826126e3565b9750612747836126fa565b925050600181019050612728565b5085935050505092915050565b5f60a0820190506127755f830188611df3565b612782602083018761269c565b81810360408301526127948186612706565b90506127a36060830185611dc2565b6127b06080830184611df3565b9695505050505050565b5f6040820190506127cd5f830185611dc2565b6127da6020830184611df3565b9392505050565b5f815190506127ef8161208c565b92915050565b5f6020828403121561280a57612809611eab565b5b5f612817848285016127e1565b91505092915050565b5f610100820190506128345f83018b611dc2565b612841602083018a611dc2565b61284e6040830189611df3565b61285b6060830188611df3565b612868608083018761269c565b61287560a083018661269c565b61288260c0830185611dc2565b61288f60e0830184611df3565b9998505050505050505050565b5f5f5f606084860312156128b3576128b2611eab565b5b5f6128c086828701612633565b93505060206128d186828701612633565b92505060406128e286828701612633565b915050925092509256fea2646970667358221220bcd08e6507dd3e1a9df08a5a3a08e494092db10eb9c0572ddd42c1340e944ce064736f6c63430008220033
0x608060405234801561000f575f5ffd5b50600436106101cd575f3560e01c806382aa7c6811610102578063aa4bde28116100a0578063ee40166e1161006f578063ee40166e1461050f578063f2fde38b1461052d578063f887ea4014610549578063fabb0b4f14610567576101cd565b8063aa4bde2814610487578063b94a6dfe146104a5578063c0a904a2146104c3578063dd62ed3e146104df576101cd565b806395d89b41116100dc57806395d89b41146103ff578063a2240e191461041d578063a8b0898214610439578063a9059cbb14610457576101cd565b806382aa7c68146103a75780638c0b5e22146103c35780638da5cb5b146103e1576101cd565b806337d916111161016f57806370a082311161014957806370a0823114610333578063715018a6146103635780637899680e1461036d5780638187f5161461038b576101cd565b806337d91611146102c75780634ada218b146102e55780635cce86cd14610303576101cd565b8063095ea7b3116101ab578063095ea7b31461022b57806318160ddd1461025b57806323b872dd14610279578063313ce567146102a9576101cd565b806303fd2a45146101d15780630445b667146101ef57806306fdde031461020d575b5f5ffd5b6101d9610585565b6040516101e69190611dd1565b60405180910390f35b6101f761058b565b6040516102049190611e02565b60405180910390f35b610215610591565b6040516102229190611e8b565b60405180910390f35b61024560048036038101906102409190611f03565b610621565b6040516102529190611f5b565b60405180910390f35b610263610643565b6040516102709190611e02565b60405180910390f35b610293600480360381019061028e9190611f74565b61064c565b6040516102a09190611f5b565b60405180910390f35b6102b161067a565b6040516102be9190611fdf565b60405180910390f35b6102cf610682565b6040516102dc9190611dd1565b60405180910390f35b6102ed61069a565b6040516102fa9190611f5b565b60405180910390f35b61031d60048036038101906103189190611ff8565b6106ac565b60405161032a9190611f5b565b60405180910390f35b61034d60048036038101906103489190611ff8565b6106c9565b60405161035a9190611e02565b60405180910390f35b61036b61070e565b005b610375610721565b6040516103829190611f5b565b60405180910390f35b6103a560048036038101906103a09190611ff8565b610734565b005b6103c160048036038101906103bc9190612023565b610863565b005b6103cb6108e5565b6040516103d89190611e02565b60405180910390f35b6103e96108eb565b6040516103f69190611dd1565b60405180910390f35b610407610913565b6040516104149190611e8b565b60405180910390f35b6104376004803603810190610432919061204e565b6109a3565b005b6104416109e3565b60405161044e9190611dd1565b60405180910390f35b610471600480360381019061046c9190611f03565b610a08565b60405161047e9190611f5b565b60405180910390f35b61048f610a2a565b60405161049c9190611e02565b60405180910390f35b6104ad610a30565b6040516104ba9190611dd1565b60405180910390f35b6104dd60048036038101906104d891906120b6565b610a48565b005b6104f960048036038101906104f491906120f4565b610aa8565b6040516105069190611e02565b60405180910390f35b610517610b2a565b6040516105249190611e02565b60405180910390f35b61054760048036038101906105429190611ff8565b610b30565b005b610551610bb4565b60405161055e919061218d565b60405180910390f35b61056f610bd9565b60405161057c9190611e02565b60405180910390f35b61dead81565b60085481565b6060600380546105a0906121d3565b80601f01602080910402602001604051908101604052809291908181526020018280546105cc906121d3565b80156106175780601f106105ee57610100808354040283529160200191610617565b820191905f5260205f20905b8154815290600101906020018083116105fa57829003601f168201915b5050505050905090565b5f5f61062b610bdf565b9050610638818585610be6565b600191505092915050565b5f600254905090565b5f5f610656610bdf565b9050610663858285610bf8565b61066e858585610c8b565b60019150509392505050565b5f6012905090565b7345242320dbb855eea8fd36804c6487e10e97fcf981565b60095f9054906101000a900460ff1681565b600e602052805f5260405f205f915054906101000a900460ff1681565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610716610d7b565b61071f5f610e02565b565b600960029054906101000a900460ff1681565b61073c610d7b565b5f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c29061224d565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b61086b610d7b565b60095f9054906101000a900460ff16156108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b1906122b5565b60405180910390fd5b600160095f6101000a81548160ff02191690831515021790555043600a8190555080600b8190555050565b60065481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610922906121d3565b80601f016020809104026020016040519081016040528092919081815260200182805461094e906121d3565b80156109995780601f1061097057610100808354040283529160200191610999565b820191905f5260205f20905b81548152906001019060200180831161097c57829003601f168201915b5050505050905090565b6109ab610d7b565b670de0b6b3a7640000826109bf9190612300565b600681905550670de0b6b3a7640000816109d99190612300565b6007819055505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f610a12610bdf565b9050610a1f818585610c8b565b600191505092915050565b60075481565b7389e5db8b5aa49aa85ac63f691524311aeb649eba81565b610a50610d7b565b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b610b38610d7b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ba8575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b9f9190611dd1565b60405180910390fd5b610bb181610e02565b50565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b5f33905090565b610bf38383836001610ec5565b505050565b5f610c038484610aa8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610c855781811015610c76578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610c6d93929190612341565b60405180910390fd5b610c8484848484035f610ec5565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cfb575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610cf29190611dd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d6b575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610d629190611dd1565b60405180910390fd5b610d76838383611094565b505050565b610d83610bdf565b73ffffffffffffffffffffffffffffffffffffffff16610da16108eb565b73ffffffffffffffffffffffffffffffffffffffff1614610e0057610dc4610bdf565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610df79190611dd1565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f35575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f2c9190611dd1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fa5575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f9c9190611dd1565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561108e578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110859190611e02565b60405180910390a35b50505050565b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156111325750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156112fd5760095f9054906101000a900460ff16611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c906123c0565b60405180910390fd5b6006548111156111ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c190612428565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611277576007548161122b846106c9565b6112359190612446565b1115611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126d906124c3565b60405180910390fd5b5b600b54600a546112879190612446565b43116112fc573373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f29061252b565b60405180910390fd5b5b5b5f5f905060095f9054906101000a900460ff1680156113295750600960019054906101000a900460ff16155b801561137c5750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113cf5750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561151157600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061147b5750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561149c57606460028361148f9190612300565b6114999190612576565b90505b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561150257506008546114ff306106c9565b10155b156115105761150f611544565b5b5b5f81111561153357611524843083611b79565b808261153091906125a6565b91505b61153e848484611b79565b50505050565b6001600960016101000a81548160ff0219169083151502179055505f611569306106c9565b90505f6004826115799190612576565b90506115883061dead83610c8b565b5f6002836115969190612576565b90505f8183856115a691906125a6565b6115b091906125a6565b90506115de30600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610be6565b5f600267ffffffffffffffff8111156115fa576115f96125d9565b5b6040519080825280602002602001820160405280156116285781602001602082028036833780820191505090505b50905030815f8151811061163f5761163e612606565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507345242320dbb855eea8fd36804c6487e10e97fcf9816001815181106116a2576116a1612606565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f7345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161172a9190611dd1565b602060405180830381865afa158015611745573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117699190612647565b9050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795855f8530426040518663ffffffff1660e01b81526004016117cd959493929190612762565b5f604051808303815f87803b1580156117e4575f5ffd5b505af19250505080156117f5575060015b15611b57575f817345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118499190611dd1565b602060405180830381865afa158015611864573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118889190612647565b61189291906125a6565b90505f6002826118a29190612576565b90507345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead836040518363ffffffff1660e01b81526004016118f59291906127ba565b6020604051808303815f875af1158015611911573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061193591906127f5565b50600960029054906101000a900460ff16801561199f57505f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611b54575f81836119b191906125a6565b90507345242320dbb855eea8fd36804c6487e10e97fcf973ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611a239291906127ba565b6020604051808303815f875af1158015611a3f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a6391906127f5565b50611a9030600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688610be6565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307345242320dbb855eea8fd36804c6487e10e97fcf989855f5f61dead426040518963ffffffff1660e01b8152600401611b0e989796959493929190612820565b6060604051808303815f875af1925050508015611b4957506040513d601f19601f82011682018060405250810190611b46919061289c565b60015b15611b52575050505b505b50505b5f600960016101000a81548160ff021916908315150217905550505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bc9578060025f828254611bbd9190612446565b92505081905550611c97565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611c52578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611c4993929190612341565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cde578060025f8282540392505081905550611d28565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d859190611e02565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611dbb82611d92565b9050919050565b611dcb81611db1565b82525050565b5f602082019050611de45f830184611dc2565b92915050565b5f819050919050565b611dfc81611dea565b82525050565b5f602082019050611e155f830184611df3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e5d82611e1b565b611e678185611e25565b9350611e77818560208601611e35565b611e8081611e43565b840191505092915050565b5f6020820190508181035f830152611ea38184611e53565b905092915050565b5f5ffd5b611eb881611db1565b8114611ec2575f5ffd5b50565b5f81359050611ed381611eaf565b92915050565b611ee281611dea565b8114611eec575f5ffd5b50565b5f81359050611efd81611ed9565b92915050565b5f5f60408385031215611f1957611f18611eab565b5b5f611f2685828601611ec5565b9250506020611f3785828601611eef565b9150509250929050565b5f8115159050919050565b611f5581611f41565b82525050565b5f602082019050611f6e5f830184611f4c565b92915050565b5f5f5f60608486031215611f8b57611f8a611eab565b5b5f611f9886828701611ec5565b9350506020611fa986828701611ec5565b9250506040611fba86828701611eef565b9150509250925092565b5f60ff82169050919050565b611fd981611fc4565b82525050565b5f602082019050611ff25f830184611fd0565b92915050565b5f6020828403121561200d5761200c611eab565b5b5f61201a84828501611ec5565b91505092915050565b5f6020828403121561203857612037611eab565b5b5f61204584828501611eef565b91505092915050565b5f5f6040838503121561206457612063611eab565b5b5f61207185828601611eef565b925050602061208285828601611eef565b9150509250929050565b61209581611f41565b811461209f575f5ffd5b50565b5f813590506120b08161208c565b92915050565b5f5f604083850312156120cc576120cb611eab565b5b5f6120d985828601611ec5565b92505060206120ea858286016120a2565b9150509250929050565b5f5f6040838503121561210a57612109611eab565b5b5f61211785828601611ec5565b925050602061212885828601611ec5565b9150509250929050565b5f819050919050565b5f61215561215061214b84611d92565b612132565b611d92565b9050919050565b5f6121668261213b565b9050919050565b5f6121778261215c565b9050919050565b6121878161216d565b82525050565b5f6020820190506121a05f83018461217e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806121ea57607f821691505b6020821081036121fd576121fc6121a6565b5b50919050565b7f5061697220616c726561647920736574000000000000000000000000000000005f82015250565b5f612237601083611e25565b915061224282612203565b602082019050919050565b5f6020820190508181035f8301526122648161222b565b9050919050565b7f416c726561647920656e61626c656400000000000000000000000000000000005f82015250565b5f61229f600f83611e25565b91506122aa8261226b565b602082019050919050565b5f6020820190508181035f8301526122cc81612293565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61230a82611dea565b915061231583611dea565b925082820261232381611dea565b9150828204841483151761233a576123396122d3565b5b5092915050565b5f6060820190506123545f830186611dc2565b6123616020830185611df3565b61236e6040830184611df3565b949350505050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f6123aa601283611e25565b91506123b582612376565b602082019050919050565b5f6020820190508181035f8301526123d78161239e565b9050919050565b7f45786365656473206d6178207472616e73616374696f6e0000000000000000005f82015250565b5f612412601783611e25565b915061241d826123de565b602082019050919050565b5f6020820190508181035f83015261243f81612406565b9050919050565b5f61245082611dea565b915061245b83611dea565b9250828201905080821115612473576124726122d3565b5b92915050565b7f45786365656473206d61782077616c6c657400000000000000000000000000005f82015250565b5f6124ad601283611e25565b91506124b882612479565b602082019050919050565b5f6020820190508181035f8301526124da816124a1565b9050919050565b7f4e6f20626f7420636f6e74726163747320647572696e67206c61756e636800005f82015250565b5f612515601e83611e25565b9150612520826124e1565b602082019050919050565b5f6020820190508181035f83015261254281612509565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61258082611dea565b915061258b83611dea565b92508261259b5761259a612549565b5b828204905092915050565b5f6125b082611dea565b91506125bb83611dea565b92508282039050818111156125d3576125d26122d3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061264181611ed9565b92915050565b5f6020828403121561265c5761265b611eab565b5b5f61266984828501612633565b91505092915050565b5f819050919050565b5f61269561269061268b84612672565b612132565b611dea565b9050919050565b6126a58161267b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6126dd81611db1565b82525050565b5f6126ee83836126d4565b60208301905092915050565b5f602082019050919050565b5f612710826126ab565b61271a81856126b5565b9350612725836126c5565b805f5b8381101561275557815161273c88826126e3565b9750612747836126fa565b925050600181019050612728565b5085935050505092915050565b5f60a0820190506127755f830188611df3565b612782602083018761269c565b81810360408301526127948186612706565b90506127a36060830185611dc2565b6127b06080830184611df3565b9695505050505050565b5f6040820190506127cd5f830185611dc2565b6127da6020830184611df3565b9392505050565b5f815190506127ef8161208c565b92915050565b5f6020828403121561280a57612809611eab565b5b5f612817848285016127e1565b91505092915050565b5f610100820190506128345f83018b611dc2565b612841602083018a611dc2565b61284e6040830189611df3565b61285b6060830188611df3565b612868608083018761269c565b61287560a083018661269c565b61288260c0830185611dc2565b61288f60e0830184611df3565b9998505050505050505050565b5f5f5f606084860312156128b3576128b2611eab565b5b5f6128c086828701612633565b93505060206128d186828701612633565b92505060406128e286828701612633565b915050925092509256fea2646970667358221220bcd08e6507dd3e1a9df08a5a3a08e494092db10eb9c0572ddd42c1340e944ce064736f6c63430008220033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000123 | $0 | |
| United States Energy Reserve (USER) | USER | 57 | — | — |
| Imagine (IMAGINE) | IMAGINE | 40 | — | — |
| HOODers (HOODers) | HOODers | 12 | — | — |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xc2b090…b7e8ad | 2 days agoThu, 13 Aug 2026 02:46:28 UTC | Approval | [0] 0x000000000000…217f4062 [1] 0x000000000000…b7e16d97 data: 0x000000000000000000…a31be599 |
| 0x682abf…6c2b5b | 2 days agoThu, 13 Aug 2026 02:46:24 UTC | Approval | [0] 0x000000000000…217f4062 [1] 0x000000000000…b7e16d97 data: 0x000000000000000000…a31be599 |
| 0xf78f45…4cd28f | 2 days agoThu, 13 Aug 2026 02:45:55 UTC | Approval | [0] 0x000000000000…217f4062 [1] 0x000000000000…b7e16d97 data: 0x000000000000000000…a31be599 |
| 0x83fc8b…d71470 | 2 days agoThu, 13 Aug 2026 02:45:51 UTC | Approval | [0] 0x000000000000…217f4062 [1] 0x000000000000…b7e16d97 data: 0x000000000000000000…a31be599 |
| 0xdc754a…f5d540 | 19 days agoTue, 28 Jul 2026 00:32:54 UTC | Approval | [0] 0x000000000000…56c1b3ec [1] 0x000000000000…3ac78ba3 data: 0x000000000000000000…00000000 |
| 0x9fca57…bdfd56 | 24 days agoWed, 22 Jul 2026 19:14:53 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…ec0b415f data: 0x000000000000000000…7a1149c0 |
| 0xc498bd…4484ea | 24 days agoWed, 22 Jul 2026 13:34:18 UTC | Transfer | [0] 0x000000000000…1b024afa [1] 0x000000000000…43e40951 data: 0x000000000000000000…ad847900 |
| 0xc498bd…4484ea | 24 days agoWed, 22 Jul 2026 13:34:18 UTC | Approval | [0] 0x000000000000…1b024afa [1] 0x000000000000…3ac78ba3 data: 0x000000000000000000…ad847900 |
| 0xc498bd…4484ea | 24 days agoWed, 22 Jul 2026 13:34:18 UTC | Transfer | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…1b024afa data: 0x000000000000000000…ad847900 |
| 0xc498bd…4484ea | 24 days agoWed, 22 Jul 2026 13:34:18 UTC | Approval | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…f3dc860c data: 0x000000000000000000…ad847900 |
| 0xc498bd…4484ea | 24 days agoWed, 22 Jul 2026 13:34:18 UTC | Transfer | [0] 0x000000000000…89915843 [1] 0x000000000000…ec4fff4f data: 0x000000000000000000…ad847900 |
| 0xc498bd…4484ea | 24 days agoWed, 22 Jul 2026 13:34:18 UTC | Approval | [0] 0x000000000000…89915843 [1] 0x000000000000…f1c315be data: 0x000000000000000000…ad847900 |
| 0x3def70…359be9 | 24 days agoWed, 22 Jul 2026 12:46:29 UTC | Transfer | [0] 0x000000000000…1b024afa [1] 0x000000000000…43e40951 data: 0x000000000000000000…1b04c130 |
| 0x3def70…359be9 | 24 days agoWed, 22 Jul 2026 12:46:29 UTC | Approval | [0] 0x000000000000…1b024afa [1] 0x000000000000…3ac78ba3 data: 0x000000000000000000…1b04c130 |
| 0x3def70…359be9 | 24 days agoWed, 22 Jul 2026 12:46:29 UTC | Transfer | [0] 0x000000000000…72414af3 [1] 0x000000000000…1b024afa data: 0x000000000000000000…1b04c130 |
| 0x3def70…359be9 | 24 days agoWed, 22 Jul 2026 12:46:29 UTC | Transfer | [0] 0x000000000000…72414af3 [1] 0x000000000000…f46c6c29 data: 0x000000000000000000…98f0ad00 |
| 0x3def70…359be9 | 24 days agoWed, 22 Jul 2026 12:46:29 UTC | Transfer | [0] 0x000000000000…72414af3 [1] 0x000000000000…efae264b data: 0x000000000000000000…f98f0ad0 |
| 0x3def70…359be9 | 24 days agoWed, 22 Jul 2026 12:46:29 UTC | Transfer | [0] 0x000000000000…414a91b0 [1] 0x000000000000…72414af3 data: 0x000000000000000000…ad847900 |
| 0x3def70…359be9 | 24 days agoWed, 22 Jul 2026 12:46:29 UTC | Approval | [0] 0x000000000000…414a91b0 [1] 0x000000000000…72414af3 data: 0x000000000000000000…ad847900 |
| 0xca2445…47d2eb | 25 days agoTue, 21 Jul 2026 23:48:08 UTC | Transfer | [0] 0x000000000000…1b024afa [1] 0x000000000000…43e40951 data: 0x000000000000000000…0cfaee17 |
| 0xca2445…47d2eb | 25 days agoTue, 21 Jul 2026 23:48:08 UTC | Approval | [0] 0x000000000000…1b024afa [1] 0x000000000000…3ac78ba3 data: 0x000000000000000000…0cfaee17 |
| 0xca2445…47d2eb | 25 days agoTue, 21 Jul 2026 23:48:08 UTC | Transfer | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…1b024afa data: 0x000000000000000000…0cfaee17 |
| 0xca2445…47d2eb | 25 days agoTue, 21 Jul 2026 23:48:08 UTC | Approval | [0] 0x000000000000…ec4fff4f [1] 0x000000000000…f3dc860c data: 0x000000000000000000…0cfaee17 |
| 0xca2445…47d2eb | 25 days agoTue, 21 Jul 2026 23:48:08 UTC | Transfer | [0] 0x000000000000…db6363bc [1] 0x000000000000…ec4fff4f data: 0x000000000000000000…0cfaee17 |
| 0xca2445…47d2eb | 25 days agoTue, 21 Jul 2026 23:48:08 UTC | Approval | [0] 0x000000000000…db6363bc [1] 0x000000000000…f1c315be data: 0x000000000000000000…0cfaee17 |
| 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 | |||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xc2b090…b7e8ad | Approve | 35,042,546 | 2 days agoThu, 13 Aug 2026 02:46:28 UTC | 0x1cd6…4062 | IN | Ranch | $0.000 ETH | 0.00000146 | |
| 0x682abf…6c2b5b | Approve | 35,042,503 | 2 days agoThu, 13 Aug 2026 02:46:24 UTC | 0x1cd6…4062 | IN | Ranch | $0.000 ETH | 0.00000145 | |
| 0xf78f45…4cd28f | Approve | 35,042,217 | 2 days agoThu, 13 Aug 2026 02:45:55 UTC | 0x1cd6…4062 | IN | Ranch | $0.000 ETH | 0.00000147 | |
| 0x83fc8b…d71470 | Approve | 35,042,174 | 2 days agoThu, 13 Aug 2026 02:45:51 UTC | 0x1cd6…4062 | IN | Ranch | $0.000 ETH | 0.00000252 | |
| 0xdc754a…f5d540 | Approve | 21,164,377 | 19 days agoTue, 28 Jul 2026 00:32:54 UTC | 0x60bd…b3ec | IN | Ranch | $0.000 ETH | 0.00000090 | |
| 0xddf763…7322e4 | Approve | 14,467,248 | 26 days agoMon, 20 Jul 2026 05:57:10 UTC | 0xce71…bece | IN | Ranch | $0.000 ETH | 0.00000248 | |
| 0x29bcbe…66ac15 | Approve | 14,461,717 | 26 days agoMon, 20 Jul 2026 05:47:55 UTC | 0x0333…7b7e | IN | Ranch | $0.000 ETH | 0.00000247 | |
| 0x791943…701065 | Approve | 14,170,800 | 27 days agoSun, 19 Jul 2026 21:40:50 UTC | 0x1b27…0d32 | IN | Ranch | $0.000 ETH | 0.00000263 | |
| 0x29b63f…df180a | Approve | 14,164,350 | 27 days agoSun, 19 Jul 2026 21:30:02 UTC | 0x09e0…43eb | IN | Ranch | $0.000 ETH | 0.00000268 | |
| 0xf2cd04…4c624e | Approve | 14,094,219 | 27 days agoSun, 19 Jul 2026 19:32:37 UTC | 0x1cef…4325 | IN | Ranch | $0.000 ETH | 0.00000266 | |
| 0xf343a3…f0ee7c | Approve | 14,002,604 | 27 days agoSun, 19 Jul 2026 16:59:25 UTC | 0xeed0…8786 | IN | Ranch | $0.000 ETH | 0.00000268 | |
| 0xa8036d…f53d9a | Transfer | 13,976,205 | 27 days agoSun, 19 Jul 2026 16:15:15 UTC | 0x1647…bc52 | IN | Ranch | $0.000 ETH | 0.00000370 | |
| 0x140e09…79e14d | Approve | 13,884,455 | 27 days agoSun, 19 Jul 2026 13:41:49 UTC | 0xa1c8…c9a9 | IN | Ranch | $0.000 ETH | 0.00000258 | |
| 0xb35bbe…f50fd1 | Approve | 13,645,579 | 27 days agoSun, 19 Jul 2026 07:01:31 UTC | 0xb0d4…084d | IN | Ranch | $0.000 ETH | 0.00000284 | |
| 0x99e279…720948 | Approve | 13,510,626 | 27 days agoSun, 19 Jul 2026 03:15:32 UTC | 0xa924…4dea | IN | Ranch | $0.000 ETH | 0.00000297 | |
| 0x03a844…73f9d1 | Approve | 13,449,060 | 27 days agoSun, 19 Jul 2026 01:32:31 UTC | 0x0de5…a8c9 | IN | Ranch | $0.000 ETH | 0.00000304 | |
| 0xe00cf5…fe2824 | Approve | 13,424,191 | 28 days agoSun, 19 Jul 2026 00:50:53 UTC | 0xa17a…0c5e | IN | Ranch | $0.000 ETH | 0.00000304 | |
| 0x5f9d31…3baa8d | Approve | 13,423,682 | 28 days agoSun, 19 Jul 2026 00:50:02 UTC | 0x8fd4…4237 | IN | Ranch | $0.000 ETH | 0.00000301 | |
| 0x49c53c…470252 | Approve | 13,420,493 | 28 days agoSun, 19 Jul 2026 00:44:42 UTC | 0xbd1b…0f8a | IN | Ranch | $0.000 ETH | 0.00000301 | |
| 0xcc433a…e121d6 | Approve | 13,310,406 | 28 days agoSat, 18 Jul 2026 21:40:31 UTC | 0xa95c…61f9 | IN | Ranch | $0.000 ETH | 0.00000305 | |
| 0xfcedb0…e92979 | Transfer | 13,194,567 | 28 days agoSat, 18 Jul 2026 18:26:50 UTC | 0xd418…415f | IN | Ranch | $0.000 ETH | 0.00000232 | |
| 0x2d9dc4…687f8d | Transfer | 13,194,317 | 28 days agoSat, 18 Jul 2026 18:26:24 UTC | 0x3927…8946 | IN | Ranch | $0.000 ETH | 0.00000379 | |
| 0xe00944…045b2c | Approve | 13,152,817 | 28 days agoSat, 18 Jul 2026 17:17:01 UTC | 0xb129…029f | IN | Ranch | $0.000 ETH | 0.00000307 | |
| 0xc9b9a4…884623 | Approve | 12,945,487 | 28 days agoSat, 18 Jul 2026 11:30:15 UTC | 0xa95c…61f9 | IN | Ranch | $0.000 ETH | 0.00000320 | |
| 0x336822…fa92c1 | Transfer | 12,555,577 | 29 days agoSat, 18 Jul 2026 00:37:26 UTC | 0xd418…415f | IN | Ranch | $0.000 ETH | 0.00000405 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xcb86a2db…2fddce | Transfer | 18,559,496 | 22 days agoFri, 24 Jul 2026 23:54:20 UTC | 0xcaf7…5d11 | IN | 0xcded…7720 | $0.001 DIH | ||
| 0x2d8f51a9…b78721 | Transfer | 16,639,826 | 24 days agoWed, 22 Jul 2026 18:26:17 UTC | 0xcc05…efe3 | IN | 0xcded…7720 | 40 IMAGINE | Imagine (IMAGINE) | |
| 0x4bd5296d…4405ea | Transfer | 14,822,510 | 26 days agoMon, 20 Jul 2026 15:51:13 UTC | 0xaa7f…ddf9 | IN | 0xcded…7720 | 12 HOODers | HOODers (HOODers) | |
| 0x68a859f2…1eb923 | Transfer | 13,191,211 | 28 days agoSat, 18 Jul 2026 18:21:13 UTC | 0xa7e0…34ac | IN | 0xcded…7720 | 25 USER | United States Energy Reserve (USER) | |
| 0xdf6e3303…00227f | Transfer | 13,168,808 | 28 days agoSat, 18 Jul 2026 17:43:46 UTC | 0xa7e0…34ac | IN | 0xcded…7720 | 32 USER | United States Energy Reserve (USER) |