// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import {INonfungiblePositionManager} from "@uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol";
import {IV3SwapRouter} from "./interfaces/IV3SwapRouter.sol";
import {Constants} from "./Constants.sol";
import {ISlingLocker, ISlingEvents, ISlingToken} from "./interfaces/ISling.sol";
import {TwapLib} from "./TwapLib.sol";
contract SlingLocker is ISlingLocker, ISlingEvents, IERC721Receiver, ReentrancyGuard {
using SafeERC20 for IERC20;
struct TokenInfo {
uint256 positionId;
address creator;
uint16 burnBoostBps;
bool tokenIsToken0;
bool registered;
}
address public immutable FACTORY;
INonfungiblePositionManager public immutable PM;
address public immutable WETH;
address public immutable SWAP_ROUTER;
address public protocolRecipient;
mapping(address => TokenInfo) public info; // token => info
mapping(address => mapping(address => uint256)) public creatorBal;// token => currency => amount
mapping(address => uint256) public protocolBal; // currency => amount
mapping(address => uint256) public recycleBucketWeth; // token => WETH awaiting recycle
mapping(address => address) public pendingCreator; // token => proposed next creator
address public pendingProtocolRecipient;
error NotFactory();
error NotCreator();
error Unknown(address token);
constructor(address factory, address positionManager, address weth, address swapRouter, address _protocolRecipient) {
FACTORY = factory;
PM = INonfungiblePositionManager(positionManager);
WETH = weth;
SWAP_ROUTER = swapRouter;
protocolRecipient = _protocolRecipient;
}
function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) {
return IERC721Receiver.onERC721Received.selector;
}
function register(address token, uint256 positionId, address creator, uint16 burnBoostBps, bool tokenIsToken0) external {
if (msg.sender != FACTORY) revert NotFactory();
require(!info[token].registered, "dup");
require(burnBoostBps <= Constants.MAX_BOOST_BPS, "boost");
info[token] = TokenInfo(positionId, creator, burnBoostBps, tokenIsToken0, true);
}
function collect(address token) external {
TokenInfo memory ti = info[token];
if (!ti.registered) revert Unknown(token);
(uint256 a0, uint256 a1) = PM.collect(INonfungiblePositionManager.CollectParams({
tokenId: ti.positionId,
recipient: address(this),
amount0Max: type(uint128).max,
amount1Max: type(uint128).max
}));
(uint256 wethAmt, uint256 tokenAmt) = ti.tokenIsToken0 ? (a1, a0) : (a0, a1);
uint16 burnBps = Constants.BURN_BPS + ti.burnBoostBps; // 4500..9000
uint16 creatorBps = Constants.CREATOR_BPS - ti.burnBoostBps; // 4500..0
// creator + burn shares are exact; protocol takes the remainder (dust to protocol, per spec 5.3).
// WETH side: creator is a pull balance; burn share waits in the recycle bucket; protocol pull.
uint256 wCreator = wethAmt * creatorBps / 10000;
uint256 wBurn = wethAmt * burnBps / 10000;
uint256 wProto = wethAmt - wCreator - wBurn; // remainder ⇒ dust to protocol, no loss
creatorBal[token][WETH] += wCreator;
recycleBucketWeth[token]+= wBurn;
protocolBal[WETH] += wProto;
// Token side: creator + protocol pull balances; burn share goes straight to dead now.
uint256 tCreator = tokenAmt * creatorBps / 10000;
uint256 tBurn = tokenAmt * burnBps / 10000;
uint256 tProto = tokenAmt - tCreator - tBurn;
creatorBal[token][token] += tCreator;
protocolBal[token] += tProto;
if (tBurn > 0) IERC20(token).safeTransfer(Constants.DEAD, tBurn);
emit Collected(token, wethAmt, tokenAmt, tBurn);
}
// views used by tests / indexer
function protocolBalance(address currency) external view returns (uint256) { return protocolBal[currency]; }
function creatorOf(address token) external view returns (address) { return info[token].creator; }
function claimable(address token, address currency, bool isCreator) external view returns (uint256) {
return isCreator ? creatorBal[token][currency] : protocolBal[currency];
}
function withdrawCreator(address token, address currency, uint256 amount) external {
if (msg.sender != info[token].creator) revert NotCreator();
creatorBal[token][currency] -= amount; // underflow reverts on over-withdraw
IERC20(currency).safeTransfer(msg.sender, amount);
emit Withdrawn(token, msg.sender, currency, amount);
}
function withdrawProtocol(address currency, uint256 amount) external {
require(msg.sender == protocolRecipient, "not-protocol");
protocolBal[currency] -= amount;
IERC20(currency).safeTransfer(msg.sender, amount);
emit Withdrawn(address(0), msg.sender, currency, amount);
}
error ImpactTooHigh(uint256 got, uint256 minOut);
/// @notice Permissionless buy-and-burn. Swaps up to `min(maxSpend, recycleBucketWeth[token])`
/// of the accumulated burn-bucket WETH for `token` via Uniswap and sends the output to
/// the dead address, paying the caller a 1% keeper tip of the recycled WETH. The swap's
/// minimum output is derived from the pool's TWAP (mean tick over TWAP_WINDOW) discounted
/// by MAX_IMPACT_BPS, so a single-block spot-price push cannot force a bad fill. This is
/// the only path in the system that executes a swap; it is `nonReentrant` and strictly
/// checks-effects-interactions ordered (bucket decremented before any external call).
function recycle(address token, uint128 maxSpend) external nonReentrant {
TokenInfo memory ti = info[token];
if (!ti.registered) revert Unknown(token);
uint256 bucket = recycleBucketWeth[token];
uint256 spend = maxSpend < bucket ? maxSpend : bucket;
require(spend > 0, "empty");
uint256 tip = spend * Constants.KEEPER_TIP_BPS / 10000;
uint256 swapIn = spend - tip;
// TWAP-implied minimum out (blocks sandwich/manipulation): quote swapIn at the mean tick.
address poolAddr = ISlingToken(token).pool();
uint256 twapOut = TwapLib.quote(poolAddr, WETH, token, swapIn, Constants.TWAP_WINDOW);
uint256 minOut = twapOut * (10000 - Constants.MAX_IMPACT_BPS) / 10000;
// ---- effects before interactions (CEI) ----
recycleBucketWeth[token] = bucket - spend;
// ---- interactions ----
IERC20(WETH).safeTransfer(msg.sender, tip); // keeper tip
IERC20(WETH).forceApprove(SWAP_ROUTER, swapIn);
uint256 out = IV3SwapRouter(SWAP_ROUTER).exactInputSingle(IV3SwapRouter.ExactInputSingleParams({
tokenIn: WETH,
tokenOut: token,
fee: Constants.FEE_TIER,
recipient: Constants.DEAD, // burn directly
amountIn: swapIn,
amountOutMinimum: minOut,
sqrtPriceLimitX96: 0
}));
if (out < minOut) revert ImpactTooHigh(out, minOut); // defense-in-depth vs router variants
emit Recycled(token, swapIn, out, tip, msg.sender);
}
error NotPendingCreator();
error NotPendingRecipient();
// Both role handovers are two-step (propose → accept), so a typo'd destination can never
// permanently strand the fee stream: rights only move once the key at `to` proves it is
// live by accepting. Proposing again overwrites; proposing address(0) cancels (address(0)
// can never be msg.sender, so a zero proposal is inert by construction).
/// @notice Step 1 of 2: the standing creator proposes the next rights holder.
function transferCreatorRights(address token, address to) external {
TokenInfo storage ti = info[token];
if (msg.sender != ti.creator) revert NotCreator();
pendingCreator[token] = to;
emit CreatorRightsProposed(token, ti.creator, to);
}
/// @notice Step 2 of 2: the proposee claims the rights; only now do they move.
function acceptCreatorRights(address token) external {
if (msg.sender != pendingCreator[token]) revert NotPendingCreator();
address from = info[token].creator;
info[token].creator = msg.sender;
delete pendingCreator[token];
emit CreatorRightsTransferred(token, from, msg.sender);
}
/// @notice One-way door: the creator permanently renounces all rights over `token`.
/// The full creator share is redirected into the burn path forever (burn share
/// becomes BURN_BPS + MAX_BOOST_BPS = 90%), the creator slot is zeroed — and since
/// address(0) can never be msg.sender, no future call can ever reclaim the role —
/// and any accrued-but-unclaimed creator balances are swept into the burn path too
/// (WETH joins the recycle bucket, tokens go straight to DEAD). Any pending rights
/// handover is cancelled. There is no undo.
function abolishOwnership(address token) external {
TokenInfo storage ti = info[token];
if (msg.sender != ti.creator) revert NotCreator();
ti.burnBoostBps = Constants.MAX_BOOST_BPS; // creatorBps -> 0, burnBps -> 9000 forever
ti.creator = address(0); // unreachable role: no owner, ever again
delete pendingCreator[token]; // a pending handover can no longer complete
// Sweep unclaimed creator balances into the burn path (never strand funds).
uint256 w = creatorBal[token][WETH];
if (w > 0) {
creatorBal[token][WETH] = 0;
recycleBucketWeth[token] += w;
}
uint256 t = creatorBal[token][token];
if (t > 0) {
creatorBal[token][token] = 0;
IERC20(token).safeTransfer(Constants.DEAD, t);
}
emit OwnershipAbolished(token, msg.sender, Constants.BURN_BPS + Constants.MAX_BOOST_BPS, w, t);
}
/// @return true once `token`'s creator role has been permanently abolished.
function isAbolished(address token) external view returns (bool) {
TokenInfo storage ti = info[token];
return ti.registered && ti.creator == address(0);
}
/// @notice Step 1 of 2: the standing recipient proposes its successor.
function setProtocolRecipient(address to) external {
require(msg.sender == protocolRecipient, "not-protocol");
pendingProtocolRecipient = to;
emit ProtocolRecipientProposed(protocolRecipient, to);
}
/// @notice Step 2 of 2: the proposed recipient claims the role; only now does it rotate.
function acceptProtocolRecipient() external {
if (msg.sender != pendingProtocolRecipient) revert NotPendingRecipient();
address from = protocolRecipient;
protocolRecipient = msg.sender;
delete pendingProtocolRecipient;
emit ProtocolRecipientRotated(from, msg.sender);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "factory",
"type": "address",
"internalType": "address"
},
{
"name": "positionManager",
"type": "address",
"internalType": "address"
},
{
"name": "weth",
"type": "address",
"internalType": "address"
},
{
"name": "swapRouter",
"type": "address",
"internalType": "address"
},
{
"name": "_protocolRecipient",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "ImpactTooHigh",
"type": "error",
"inputs": [
{
"name": "got",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "minOut",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "NotCreator",
"type": "error",
"inputs": []
},
{
"name": "NotFactory",
"type": "error",
"inputs": []
},
{
"name": "NotPendingCreator",
"type": "error",
"inputs": []
},
{
"name": "NotPendingRecipient",
"type": "error",
"inputs": []
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "T",
"type": "error",
"inputs": []
},
{
"name": "Unknown",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "Collected",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "wethCollected",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokenCollected",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokenBurned",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "CreatorRightsProposed",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "CreatorRightsTransferred",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Graduated",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tick",
"type": "int24",
"indexed": false,
"internalType": "int24"
},
{
"name": "timestamp",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "OwnershipAbolished",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "by",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "burnBps",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "sweptWeth",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "sweptToken",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ProtocolRecipientProposed",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ProtocolRecipientRotated",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Recycled",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "wethSpent",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokenBurned",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "keeperTip",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "keeper",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "TokenCreated",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "creator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "positionId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "name",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "metadataURI",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "imageHash",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
},
{
"name": "startTick",
"type": "int24",
"indexed": false,
"internalType": "int24"
},
{
"name": "graduationTick",
"type": "int24",
"indexed": false,
"internalType": "int24"
},
{
"name": "burnBoostBps",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
}
],
"anonymous": false
},
{
"name": "Withdrawn",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "currency",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FACTORY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "PM",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract INonfungiblePositionManager"
}
],
"stateMutability": "view"
},
{
"name": "SWAP_ROUTER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "WETH",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "abolishOwnership",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "acceptCreatorRights",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "acceptProtocolRecipient",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "claimable",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "currency",
"type": "address",
"internalType": "address"
},
{
"name": "isCreator",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "collect",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "creatorBal",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "creatorOf",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "info",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "positionId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creator",
"type": "address",
"internalType": "address"
},
{
"name": "burnBoostBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "tokenIsToken0",
"type": "bool",
"internalType": "bool"
},
{
"name": "registered",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isAbolished",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "onERC721Received",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "pure"
},
{
"name": "pendingCreator",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pendingProtocolRecipient",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "protocolBal",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "protocolBalance",
"type": "function",
"inputs": [
{
"name": "currency",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "protocolRecipient",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "recycle",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "maxSpend",
"type": "uint128",
"internalType": "uint128"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "recycleBucketWeth",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "register",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "positionId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creator",
"type": "address",
"internalType": "address"
},
{
"name": "burnBoostBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "tokenIsToken0",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setProtocolRecipient",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "transferCreatorRights",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "withdrawCreator",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "currency",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "withdrawProtocol",
"type": "function",
"inputs": [
{
"name": "currency",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x6101003461010e57601f612a4238819003918201601f19168301916001600160401b038311848410176101125780849260a09460405283398101031261010e5761004881610126565b9061005560208201610126565b61006160408301610126565b9061007a608061007360608601610126565b9401610126565b60015f8190556080959095526001600160a01b0391821660a05260c09290925260e09290925282546001600160a01b0319169116179055604051612907908161013b823960805181818161122f0152611c9a015260a05181818161117d01526121e2015260c0518181816107ee015281816114f4015281816118e201526122d1015260e05181818161042501526108750152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361010e5756fe6080806040526004361015610012575f80fd5b5f3560e01c90816306ec16f81461206c5750806307ba8a5414611fbd5780630aae7a6b14611f12578063150b7a0214611e6b57806324175e5414611da357806327d7bc8d14611cbe5780632dd3100014611c505780634987ad5914611bba5780634bd22a1b146116455780634dd9469514611b415780635823117014611ade578063698558ee146119e25780637700f6e1146117d65780637814b8fa146117855780637cd4fd22146116f9578063941f5d25146116a85780639772ce90146116455780639a5dfe6d14611518578063ad5c4648146114aa578063ba35cfea146111a1578063bf12fd1014611133578063c0094e3814610449578063c6005893146103db578063dea5c2e01461035f578063ea3f7110146102a25763ec9c62281461013a575f80fd5b3461029e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5761017161243a565b61017961245d565b9073ffffffffffffffffffffffffffffffffffffffff604435911690815f52600260205273ffffffffffffffffffffffffffffffffffffffff600160405f200154163303610276576102717fa4195c37c2947bbe89165f03e320b6903116f0b10d8cfdb522330f7ce6f9fa2491835f52600360205260405f2073ffffffffffffffffffffffffffffffffffffffff86165f5260205260405f2061021d8282546124f0565b9055610240813373ffffffffffffffffffffffffffffffffffffffff88166125c1565b6040519182913396836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a3005b7f93687c0b000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b3461029e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e576102d961243a565b5f7fa4195c37c2947bbe89165f03e320b6903116f0b10d8cfdb522330f7ce6f9fa2461027160243561032473ffffffffffffffffffffffffffffffffffffffff60015416331461250a565b6102408173ffffffffffffffffffffffffffffffffffffffff87168087526004602052604087206103568382546124f0565b905533906125c1565b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff6103ab61243a565b165f526002602052602073ffffffffffffffffffffffffffffffffffffffff600160405f20015416604051908152f35b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461029e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5761048061243a565b602435906fffffffffffffffffffffffffffffffff821680920361029e5760025f541461110b5773ffffffffffffffffffffffffffffffffffffffff9060025f5516805f52600260205260405f2060ff6001604051926104df84612480565b80548452015473ffffffffffffffffffffffffffffffffffffffff8116602084015261ffff8160a01c166040840152818160b01c161515606084015260b81c161590608082159101526110e057805f52600560205260405f2054918281105f146110d9575b801561107b5760648102818104606403610be05761271090049061056882826124f0565b936040517f16f0115b000000000000000000000000000000000000000000000000000000008152602081600481885afa908115610b19575f9161102c575b50604051906105b660608361249c565b6002825260208201916040368437603c6105cf826126c2565b525f6105da826126fc565b526040519283917f883bdbfd000000000000000000000000000000000000000000000000000000008352602483019060206004850152518091526044830191905f5b81811061100d57505050918173ffffffffffffffffffffffffffffffffffffffff815f950392165afa908115610b19575f91610ee6575b5061066a610660826126fc565b5160060b916126c2565b5160060b9003667fffffffffffff81137fffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000821217610be057603c9060060b0560020b5f81125f14610ee057805f03905b620d89e88211610eb8576001821615610e8f5770ffffffffffffffffffffffffffffffffff6ffffcb933bd6fad37aa2d162d1a5940015b169160028116610e73575b60048116610e57575b60088116610e3b575b60108116610e1f575b60208116610e03575b60408116610de7575b60808116610dcb575b6101008116610daf575b6102008116610d93575b6104008116610d77575b6108008116610d5b575b6110008116610d3f575b6120008116610d23575b6140008116610d07575b6180008116610ceb575b620100008116610ccf575b620200008116610cb4575b620400008116610c99575b6208000016610c80575b5f12610c26575b73ffffffffffffffffffffffffffffffffffffffff6107ec9163ffffffff8116155f14610c1d5760ff5f5b169060201c01168061270c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16929085841015610c0d57610837908761284b565b905b6125e491828102928184041490151715610be05761271061085b9204926124f0565b845f52600560205260405f20556108738333846125c1565b7f00000000000000000000000000000000000000000000000000000000000000009160405160205f8183017f095ea7b3000000000000000000000000000000000000000000000000000000008152610922846108f68c8a602484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810186528561249c565b83519082865af15f513d82610bc4575b505015610b51575b506040519060e0820182811067ffffffffffffffff821117610b245760405281526020810190858252604081019361271085526060820161dead81526080830189815260a084019086825260c08501925f845260405198899788977f04e45aaf0000000000000000000000000000000000000000000000000000000089525173ffffffffffffffffffffffffffffffffffffffff1660048901525173ffffffffffffffffffffffffffffffffffffffff1660248801525162ffffff1660448701525173ffffffffffffffffffffffffffffffffffffffff1660648601525160848501525160a48401525173ffffffffffffffffffffffffffffffffffffffff1660c483015273ffffffffffffffffffffffffffffffffffffffff165a925f60e492602095f1918215610b19575f92610ae5575b50808210610ab6575060408051948552602085019190915283015233917fe9ea8e60ccc8398f141563fb407f892377732b6c5d625513effdf89297a7707490606090a360015f55005b907f309d4536000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b9091506020813d602011610b11575b81610b016020938361249c565b8101031261029e57519085610a6d565b3d9150610af4565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610bbe90610bb86040517f095ea7b300000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff871660248201525f604482015260448152610bb260648261249c565b84612623565b82612623565b8661093a565b909150610bd85750813b15155b8880610932565b600114610bd1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610c179087612785565b90610839565b60ff60016107df565b8015610c53577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff046107b4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6b048a170391f7dc42444e8fa290910260801c906107ad565b6d2216e584f5fa1ea926041bedfe9890920260801c916107a3565b916e5d6af8dedb81196699c329225ee6040260801c91610798565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161078d565b916f31be135f97d08fd981231505542fcfa60260801c91610782565b916f70d869a156d2a1b890bb3df62baf32f70260801c91610778565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161076e565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91610764565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161075a565b916ff3392b0822b70005940c7a398e4b70f30260801c91610750565b916ff987a7253ac413176f2b074cf7815e540260801c91610746565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c9161073c565b916ffe5dee046a99a2a811c461f1969c30530260801c91610732565b916fff2ea16466c96a3843ec78b326b528610260801c91610729565b916fff973b41fa98c081472e6896dfb254c00260801c91610720565b916fffcb9843d60f6159c9db58835c9266440260801c91610717565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c9161070e565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91610705565b916ffff97272373d413259a46990580e213a0260801c916106fc565b70ffffffffffffffffffffffffffffffffff7001000000000000000000000000000000006106f1565b7f2bc80f3a000000000000000000000000000000000000000000000000000000005f5260045ffd5b806106ba565b90503d805f833e610ef7818361249c565b810160408282031261029e57815167ffffffffffffffff811161029e5782019181601f8401121561029e578251610f2d816126aa565b93610f3b604051958661249c565b81855260208086019260051b8201019084821161029e57602001915b818310610ff35750505060208101519067ffffffffffffffff821161029e57019080601f8301121561029e57815191602080610f92856126aa565b610f9f604051918261249c565b858152019360051b82010191821161029e57602001915b818310610fc65750505086610653565b825173ffffffffffffffffffffffffffffffffffffffff8116810361029e57815260209283019201610fb6565b82518060060b810361029e57815260209283019201610f57565b825163ffffffff1684528694506020938401939092019160010161061c565b90506020813d602011611073575b816110476020938361249c565b8101031261029e575173ffffffffffffffffffffffffffffffffffffffff8116810361029e57866105a6565b3d915061103a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f656d7074790000000000000000000000000000000000000000000000000000006044820152fd5b5081610544565b7f08def7d7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461029e5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e576111d861243a565b6044359073ffffffffffffffffffffffffffffffffffffffff821680920361029e576064359061ffff821680920361029e576084359081151580920361029e5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036114825773ffffffffffffffffffffffffffffffffffffffff1691825f52600260205260ff600160405f20015460b81c166114245761138881116113c65773ffffffffffffffffffffffffffffffffffffffff8060016040516112b381612480565b602435815260208101978852604081019485526060810195865260808101968288525f52600260205260405f209051815501955116167fffffffffffffffffffffffff0000000000000000000000000000000000000000855416178455517fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff00000000000000000000000000000000000000008086549360a01b16169116178355511515907fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff76ff0000000000000000000000000000000000000000000077ff000000000000000000000000000000000000000000000085549351151560b81b169360b01b169116171790555f80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f626f6f73740000000000000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f64757000000000000000000000000000000000000000000000000000000000006044820152fd5b7f32cc7236000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff61156461243a565b16805f52600660205273ffffffffffffffffffffffffffffffffffffffff60405f205416330361161d575f8181526002602090815260408083206001018054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217909355600690945291842080549091169055909273ffffffffffffffffffffffffffffffffffffffff909116917fd5fee137bb61afaaa1493a488b1599351627c281064b1e62447fdf05bd7640aa9080a4005b7fab184664000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff61169161243a565b165f526004602052602060405f2054604051908152f35b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461029e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5761173061243a565b73ffffffffffffffffffffffffffffffffffffffff61174d61245d565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602073ffffffffffffffffffffffffffffffffffffffff60075416604051908152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff61182261243a565b16805f526002602052600160405f200173ffffffffffffffffffffffffffffffffffffffff81541633036102765780547fffffffffffffffffffff000000000000000000000000000000000000000000001675138800000000000000000000000000000000000000001790555f81815260066020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003825280832073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000009081168552925290912054919082611995575b50805f52600360205260405f20815f5260205260405f20548061196e575b61232892604051938452602084015260408301527f94ec7a7d88e22c8e8dabb5a1982350a1c8dd270676fbdfb1580a7f08538fec7b60603393a3005b815f52600360205260405f20825f526020525f6040812055611990818361256f565b611932565b815f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f526020525f6040812055805f52600560205260405f206119da8382546124fd565b905582611914565b3461029e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57611a1961243a565b73ffffffffffffffffffffffffffffffffffffffff611a3661245d565b911690815f526002602052600160405f200173ffffffffffffffffffffffffffffffffffffffff81541633036102765773ffffffffffffffffffffffffffffffffffffffff8091845f52600660205260405f208285167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905554169116917f785fdf17ce90ac8dadf6785c303421471735b1eb46c5c49a1372cd0f4e424c575f80a4005b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff611b2a61243a565b165f526005602052602060405f2054604051908152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff611b8d61243a565b165f526006602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff611c0661243a565b165f5260026020526020600160405f20015460ff8160b81c169081611c31575b506040519015158152f35b73ffffffffffffffffffffffffffffffffffffffff9150161582611c26565b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5760075473ffffffffffffffffffffffffffffffffffffffff81163303611d7b577fffffffffffffffffffffffff00000000000000000000000000000000000000006001549133828416176001551660075573ffffffffffffffffffffffffffffffffffffffff3391167fa5e4ca45864754832a6854f6d0687d42c6709d263b9401b16658b1f1504ab6845f80a3005b7f343582a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461029e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57611dda61243a565b611de261245d565b90604435801515810361029e5715611e415773ffffffffffffffffffffffffffffffffffffffff165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f20545b604051908152f35b5073ffffffffffffffffffffffffffffffffffffffff165f526004602052602060405f2054611e39565b3461029e5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57611ea261243a565b50611eab61245d565b5060643567ffffffffffffffff811161029e573660238201121561029e57806004013567ffffffffffffffff811161029e573691016024011161029e5760206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff611f5e61243a565b165f52600260205260a060405f2060ff6001825492015460405192835273ffffffffffffffffffffffffffffffffffffffff8116602084015261ffff81851c166040840152818160b01c161515606084015260b81c1615156080820152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57611ff461243a565b73ffffffffffffffffffffffffffffffffffffffff80600154169161201a83331461250a565b1690817fffffffffffffffffffffffff000000000000000000000000000000000000000060075416176007557fbb1b5c77c40545a8fc9b88d8fc3c4b924bd648f65b1f4c8ebe6459cde58752145f80a3005b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff6120b861243a565b1690815f526002602052600160405f206120d183612480565b80548352015473ffffffffffffffffffffffffffffffffffffffff81166020830152604082019161ffff8260a01c16835260ff6060820192818160b01c161515845260b81c16158015608083015261240e575190604051916080830183811067ffffffffffffffff821117610b245760405282526fffffffffffffffffffffffffffffffff60208301308152816040850181815273ffffffffffffffffffffffffffffffffffffffff6060870193838552604051977ffc6f78650000000000000000000000000000000000000000000000000000000089525160048901525116602487015251166044850152511660648301526040826084815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610b19575f925f926123d3575b5051156123cd575b61ffff835116610fa0019261ffff8411610be05761ffff905116611388039261ffff8411610be0576122b3612710612349816123416123b9958a73ffffffffffffffffffffffffffffffffffffffff61ffff807ff9a79c1b6a462dd0a0474320e49600936f13081d632d215ad60022a209a1b5fb9d16936122c18c6122bc89806122a68a856124dd565b04958695169d8e846124dd565b049384926124f0565b6124f0565b93805f52600360205260405f20927f0000000000000000000000000000000000000000000000000000000000000000938585165f5260205261230860405f209182546124fd565b90555f52600560205261232060405f209182546124fd565b9055165f52600460205261233960405f209182546124fd565b9055886124dd565b0492866124dd565b0490612359826122bc83886124f0565b90875f52600360205260405f20885f5260205261237b60405f209182546124fd565b9055865f52600460205261239460405f209182546124fd565b9055806123be575b604051938493846040919493926060820195825260208201520152565b0390a2005b6123c8818761256f565b61239c565b9061221c565b925090506040823d604011612406575b816123f06040938361249c565b8101031261029e57602082519201519085612214565b3d91506123e3565b837f08def7d7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361029e57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361029e57565b60a0810190811067ffffffffffffffff821117610b2457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610b2457604052565b81810292918115918404141715610be057565b91908203918211610be057565b91908201809211610be057565b1561251157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f742d70726f746f636f6c00000000000000000000000000000000000000006044820152fd5b906125bf91604051917fa9059cbb00000000000000000000000000000000000000000000000000000000602084015261dead60248401526044830152604482526125ba60648361249c565b612623565b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9290921660248301526044808301939093529181526125bf916125ba60648361249c565b905f602091828151910182855af115610b19575f513d6126a1575073ffffffffffffffffffffffffffffffffffffffff81163b155b61265f5750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60011415612658565b67ffffffffffffffff8111610b245760051b60200190565b8051156126cf5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156126cf5760400190565b5f917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818309918181029384808510940393808503941461277b578368010000000000000000111561277857509068010000000000000000910990828211900360c01b910360401c1790565b80fd5b5050505060401c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7001000000000000000000000000000000008209918160801b9182808510940393808503941461283e578382111561029e5770010000000000000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b508092501561029e570490565b5f917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81830991818102938480851094039380850394146128c757837001000000000000000000000000000000001115612778575090700100000000000000000000000000000000910990828211900360801b910360801c1790565b5050505060801c9056fea2646970667358221220e36e584e0bdaff9ad115674226062dc1726a9a27761f61113fe36dfe5eff650864736f6c634300081a00330000000000000000000000007556ebfb9bdac6aafaeadfc35ffc768a38f0ebf800000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d30000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73000000000000000000000000caf681a66d020601342297493863e78c959e5cb20000000000000000000000006bdd76c992d3681ecfb829b4dbd7e9e1f3fe9cb6
0x6080806040526004361015610012575f80fd5b5f3560e01c90816306ec16f81461206c5750806307ba8a5414611fbd5780630aae7a6b14611f12578063150b7a0214611e6b57806324175e5414611da357806327d7bc8d14611cbe5780632dd3100014611c505780634987ad5914611bba5780634bd22a1b146116455780634dd9469514611b415780635823117014611ade578063698558ee146119e25780637700f6e1146117d65780637814b8fa146117855780637cd4fd22146116f9578063941f5d25146116a85780639772ce90146116455780639a5dfe6d14611518578063ad5c4648146114aa578063ba35cfea146111a1578063bf12fd1014611133578063c0094e3814610449578063c6005893146103db578063dea5c2e01461035f578063ea3f7110146102a25763ec9c62281461013a575f80fd5b3461029e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5761017161243a565b61017961245d565b9073ffffffffffffffffffffffffffffffffffffffff604435911690815f52600260205273ffffffffffffffffffffffffffffffffffffffff600160405f200154163303610276576102717fa4195c37c2947bbe89165f03e320b6903116f0b10d8cfdb522330f7ce6f9fa2491835f52600360205260405f2073ffffffffffffffffffffffffffffffffffffffff86165f5260205260405f2061021d8282546124f0565b9055610240813373ffffffffffffffffffffffffffffffffffffffff88166125c1565b6040519182913396836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a3005b7f93687c0b000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b3461029e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e576102d961243a565b5f7fa4195c37c2947bbe89165f03e320b6903116f0b10d8cfdb522330f7ce6f9fa2461027160243561032473ffffffffffffffffffffffffffffffffffffffff60015416331461250a565b6102408173ffffffffffffffffffffffffffffffffffffffff87168087526004602052604087206103568382546124f0565b905533906125c1565b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff6103ab61243a565b165f526002602052602073ffffffffffffffffffffffffffffffffffffffff600160405f20015416604051908152f35b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602060405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000caf681a66d020601342297493863e78c959e5cb2168152f35b3461029e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5761048061243a565b602435906fffffffffffffffffffffffffffffffff821680920361029e5760025f541461110b5773ffffffffffffffffffffffffffffffffffffffff9060025f5516805f52600260205260405f2060ff6001604051926104df84612480565b80548452015473ffffffffffffffffffffffffffffffffffffffff8116602084015261ffff8160a01c166040840152818160b01c161515606084015260b81c161590608082159101526110e057805f52600560205260405f2054918281105f146110d9575b801561107b5760648102818104606403610be05761271090049061056882826124f0565b936040517f16f0115b000000000000000000000000000000000000000000000000000000008152602081600481885afa908115610b19575f9161102c575b50604051906105b660608361249c565b6002825260208201916040368437603c6105cf826126c2565b525f6105da826126fc565b526040519283917f883bdbfd000000000000000000000000000000000000000000000000000000008352602483019060206004850152518091526044830191905f5b81811061100d57505050918173ffffffffffffffffffffffffffffffffffffffff815f950392165afa908115610b19575f91610ee6575b5061066a610660826126fc565b5160060b916126c2565b5160060b9003667fffffffffffff81137fffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000821217610be057603c9060060b0560020b5f81125f14610ee057805f03905b620d89e88211610eb8576001821615610e8f5770ffffffffffffffffffffffffffffffffff6ffffcb933bd6fad37aa2d162d1a5940015b169160028116610e73575b60048116610e57575b60088116610e3b575b60108116610e1f575b60208116610e03575b60408116610de7575b60808116610dcb575b6101008116610daf575b6102008116610d93575b6104008116610d77575b6108008116610d5b575b6110008116610d3f575b6120008116610d23575b6140008116610d07575b6180008116610ceb575b620100008116610ccf575b620200008116610cb4575b620400008116610c99575b6208000016610c80575b5f12610c26575b73ffffffffffffffffffffffffffffffffffffffff6107ec9163ffffffff8116155f14610c1d5760ff5f5b169060201c01168061270c565b7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7373ffffffffffffffffffffffffffffffffffffffff16929085841015610c0d57610837908761284b565b905b6125e491828102928184041490151715610be05761271061085b9204926124f0565b845f52600560205260405f20556108738333846125c1565b7f000000000000000000000000caf681a66d020601342297493863e78c959e5cb29160405160205f8183017f095ea7b3000000000000000000000000000000000000000000000000000000008152610922846108f68c8a602484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810186528561249c565b83519082865af15f513d82610bc4575b505015610b51575b506040519060e0820182811067ffffffffffffffff821117610b245760405281526020810190858252604081019361271085526060820161dead81526080830189815260a084019086825260c08501925f845260405198899788977f04e45aaf0000000000000000000000000000000000000000000000000000000089525173ffffffffffffffffffffffffffffffffffffffff1660048901525173ffffffffffffffffffffffffffffffffffffffff1660248801525162ffffff1660448701525173ffffffffffffffffffffffffffffffffffffffff1660648601525160848501525160a48401525173ffffffffffffffffffffffffffffffffffffffff1660c483015273ffffffffffffffffffffffffffffffffffffffff165a925f60e492602095f1918215610b19575f92610ae5575b50808210610ab6575060408051948552602085019190915283015233917fe9ea8e60ccc8398f141563fb407f892377732b6c5d625513effdf89297a7707490606090a360015f55005b907f309d4536000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b9091506020813d602011610b11575b81610b016020938361249c565b8101031261029e57519085610a6d565b3d9150610af4565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610bbe90610bb86040517f095ea7b300000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff871660248201525f604482015260448152610bb260648261249c565b84612623565b82612623565b8661093a565b909150610bd85750813b15155b8880610932565b600114610bd1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b610c179087612785565b90610839565b60ff60016107df565b8015610c53577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff046107b4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6b048a170391f7dc42444e8fa290910260801c906107ad565b6d2216e584f5fa1ea926041bedfe9890920260801c916107a3565b916e5d6af8dedb81196699c329225ee6040260801c91610798565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161078d565b916f31be135f97d08fd981231505542fcfa60260801c91610782565b916f70d869a156d2a1b890bb3df62baf32f70260801c91610778565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161076e565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91610764565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161075a565b916ff3392b0822b70005940c7a398e4b70f30260801c91610750565b916ff987a7253ac413176f2b074cf7815e540260801c91610746565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c9161073c565b916ffe5dee046a99a2a811c461f1969c30530260801c91610732565b916fff2ea16466c96a3843ec78b326b528610260801c91610729565b916fff973b41fa98c081472e6896dfb254c00260801c91610720565b916fffcb9843d60f6159c9db58835c9266440260801c91610717565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c9161070e565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91610705565b916ffff97272373d413259a46990580e213a0260801c916106fc565b70ffffffffffffffffffffffffffffffffff7001000000000000000000000000000000006106f1565b7f2bc80f3a000000000000000000000000000000000000000000000000000000005f5260045ffd5b806106ba565b90503d805f833e610ef7818361249c565b810160408282031261029e57815167ffffffffffffffff811161029e5782019181601f8401121561029e578251610f2d816126aa565b93610f3b604051958661249c565b81855260208086019260051b8201019084821161029e57602001915b818310610ff35750505060208101519067ffffffffffffffff821161029e57019080601f8301121561029e57815191602080610f92856126aa565b610f9f604051918261249c565b858152019360051b82010191821161029e57602001915b818310610fc65750505086610653565b825173ffffffffffffffffffffffffffffffffffffffff8116810361029e57815260209283019201610fb6565b82518060060b810361029e57815260209283019201610f57565b825163ffffffff1684528694506020938401939092019160010161061c565b90506020813d602011611073575b816110476020938361249c565b8101031261029e575173ffffffffffffffffffffffffffffffffffffffff8116810361029e57866105a6565b3d915061103a565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f656d7074790000000000000000000000000000000000000000000000000000006044820152fd5b5081610544565b7f08def7d7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602060405173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d3168152f35b3461029e5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e576111d861243a565b6044359073ffffffffffffffffffffffffffffffffffffffff821680920361029e576064359061ffff821680920361029e576084359081151580920361029e5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007556ebfb9bdac6aafaeadfc35ffc768a38f0ebf81633036114825773ffffffffffffffffffffffffffffffffffffffff1691825f52600260205260ff600160405f20015460b81c166114245761138881116113c65773ffffffffffffffffffffffffffffffffffffffff8060016040516112b381612480565b602435815260208101978852604081019485526060810195865260808101968288525f52600260205260405f209051815501955116167fffffffffffffffffffffffff0000000000000000000000000000000000000000855416178455517fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff75ffff00000000000000000000000000000000000000008086549360a01b16169116178355511515907fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff76ff0000000000000000000000000000000000000000000077ff000000000000000000000000000000000000000000000085549351151560b81b169360b01b169116171790555f80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f626f6f73740000000000000000000000000000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f64757000000000000000000000000000000000000000000000000000000000006044820152fd5b7f32cc7236000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73168152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff61156461243a565b16805f52600660205273ffffffffffffffffffffffffffffffffffffffff60405f205416330361161d575f8181526002602090815260408083206001018054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217909355600690945291842080549091169055909273ffffffffffffffffffffffffffffffffffffffff909116917fd5fee137bb61afaaa1493a488b1599351627c281064b1e62447fdf05bd7640aa9080a4005b7fab184664000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff61169161243a565b165f526004602052602060405f2054604051908152f35b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461029e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5761173061243a565b73ffffffffffffffffffffffffffffffffffffffff61174d61245d565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602073ffffffffffffffffffffffffffffffffffffffff60075416604051908152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff61182261243a565b16805f526002602052600160405f200173ffffffffffffffffffffffffffffffffffffffff81541633036102765780547fffffffffffffffffffff000000000000000000000000000000000000000000001675138800000000000000000000000000000000000000001790555f81815260066020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556003825280832073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad739081168552925290912054919082611995575b50805f52600360205260405f20815f5260205260405f20548061196e575b61232892604051938452602084015260408301527f94ec7a7d88e22c8e8dabb5a1982350a1c8dd270676fbdfb1580a7f08538fec7b60603393a3005b815f52600360205260405f20825f526020525f6040812055611990818361256f565b611932565b815f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f526020525f6040812055805f52600560205260405f206119da8382546124fd565b905582611914565b3461029e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57611a1961243a565b73ffffffffffffffffffffffffffffffffffffffff611a3661245d565b911690815f526002602052600160405f200173ffffffffffffffffffffffffffffffffffffffff81541633036102765773ffffffffffffffffffffffffffffffffffffffff8091845f52600660205260405f208285167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905554169116917f785fdf17ce90ac8dadf6785c303421471735b1eb46c5c49a1372cd0f4e424c575f80a4005b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff611b2a61243a565b165f526005602052602060405f2054604051908152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff611b8d61243a565b165f526006602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff611c0661243a565b165f5260026020526020600160405f20015460ff8160b81c169081611c31575b506040519015158152f35b73ffffffffffffffffffffffffffffffffffffffff9150161582611c26565b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007556ebfb9bdac6aafaeadfc35ffc768a38f0ebf8168152f35b3461029e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5760075473ffffffffffffffffffffffffffffffffffffffff81163303611d7b577fffffffffffffffffffffffff00000000000000000000000000000000000000006001549133828416176001551660075573ffffffffffffffffffffffffffffffffffffffff3391167fa5e4ca45864754832a6854f6d0687d42c6709d263b9401b16658b1f1504ab6845f80a3005b7f343582a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461029e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57611dda61243a565b611de261245d565b90604435801515810361029e5715611e415773ffffffffffffffffffffffffffffffffffffffff165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f20545b604051908152f35b5073ffffffffffffffffffffffffffffffffffffffff165f526004602052602060405f2054611e39565b3461029e5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57611ea261243a565b50611eab61245d565b5060643567ffffffffffffffff811161029e573660238201121561029e57806004013567ffffffffffffffff811161029e573691016024011161029e5760206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff611f5e61243a565b165f52600260205260a060405f2060ff6001825492015460405192835273ffffffffffffffffffffffffffffffffffffffff8116602084015261ffff81851c166040840152818160b01c161515606084015260b81c1615156080820152f35b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e57611ff461243a565b73ffffffffffffffffffffffffffffffffffffffff80600154169161201a83331461250a565b1690817fffffffffffffffffffffffff000000000000000000000000000000000000000060075416176007557fbb1b5c77c40545a8fc9b88d8fc3c4b924bd648f65b1f4c8ebe6459cde58752145f80a3005b3461029e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261029e5773ffffffffffffffffffffffffffffffffffffffff6120b861243a565b1690815f526002602052600160405f206120d183612480565b80548352015473ffffffffffffffffffffffffffffffffffffffff81166020830152604082019161ffff8260a01c16835260ff6060820192818160b01c161515845260b81c16158015608083015261240e575190604051916080830183811067ffffffffffffffff821117610b245760405282526fffffffffffffffffffffffffffffffff60208301308152816040850181815273ffffffffffffffffffffffffffffffffffffffff6060870193838552604051977ffc6f78650000000000000000000000000000000000000000000000000000000089525160048901525116602487015251166044850152511660648301526040826084815f73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d3165af1908115610b19575f925f926123d3575b5051156123cd575b61ffff835116610fa0019261ffff8411610be05761ffff905116611388039261ffff8411610be0576122b3612710612349816123416123b9958a73ffffffffffffffffffffffffffffffffffffffff61ffff807ff9a79c1b6a462dd0a0474320e49600936f13081d632d215ad60022a209a1b5fb9d16936122c18c6122bc89806122a68a856124dd565b04958695169d8e846124dd565b049384926124f0565b6124f0565b93805f52600360205260405f20927f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73938585165f5260205261230860405f209182546124fd565b90555f52600560205261232060405f209182546124fd565b9055165f52600460205261233960405f209182546124fd565b9055886124dd565b0492866124dd565b0490612359826122bc83886124f0565b90875f52600360205260405f20885f5260205261237b60405f209182546124fd565b9055865f52600460205261239460405f209182546124fd565b9055806123be575b604051938493846040919493926060820195825260208201520152565b0390a2005b6123c8818761256f565b61239c565b9061221c565b925090506040823d604011612406575b816123f06040938361249c565b8101031261029e57602082519201519085612214565b3d91506123e3565b837f08def7d7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361029e57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361029e57565b60a0810190811067ffffffffffffffff821117610b2457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610b2457604052565b81810292918115918404141715610be057565b91908203918211610be057565b91908201809211610be057565b1561251157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f742d70726f746f636f6c00000000000000000000000000000000000000006044820152fd5b906125bf91604051917fa9059cbb00000000000000000000000000000000000000000000000000000000602084015261dead60248401526044830152604482526125ba60648361249c565b612623565b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9290921660248301526044808301939093529181526125bf916125ba60648361249c565b905f602091828151910182855af115610b19575f513d6126a1575073ffffffffffffffffffffffffffffffffffffffff81163b155b61265f5750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60011415612658565b67ffffffffffffffff8111610b245760051b60200190565b8051156126cf5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156126cf5760400190565b5f917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818309918181029384808510940393808503941461277b578368010000000000000000111561277857509068010000000000000000910990828211900360c01b910360401c1790565b80fd5b5050505060401c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7001000000000000000000000000000000008209918160801b9182808510940393808503941461283e578382111561029e5770010000000000000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b508092501561029e570490565b5f917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81830991818102938480851094039380850394146128c757837001000000000000000000000000000000001115612778575090700100000000000000000000000000000000910990828211900360801b910360801c1790565b5050505060801c9056fea2646970667358221220e36e584e0bdaff9ad115674226062dc1726a9a27761f61113fe36dfe5eff650864736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
WETH (WETH) | WETH | 0.016485 | $1,873.95 | $30.89 |
| MoonDraw (MOOND) | MOOND | 11,955.136930 | $0.00000321 | $0.04 |
| DIH | 1 | $0.0000102 | $0 | |
| Moon Draw (MOON) | MOON | 19,694.458418 | — | — |
| CashBon (CASHBON) | CASHBON | 17 | — | — |
| Uniswap V3 Positions NFT-V1 (UNI-V3-POS) | UNI-V3-POS | 7 | — | — |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x957309…e18a8e | 22 days agoSat, 25 Jul 2026 01:22:12 UTC | 0xa4195c…fa24 | [0] 0x000000000000…00000000 [1] 0x000000000000…f3fe9cb6 data: 0x000000000000000000…41176ac1 |
| 0x79b1b0…c00540 | 23 days agoFri, 24 Jul 2026 20:09:32 UTC | 0xa4195c…fa24 | [0] 0x000000000000…20b896f5 [1] 0x000000000000…6285881d data: 0x000000000000000000…ddc7c3ff |
| 0x79b1b0…c00540 | 23 days agoFri, 24 Jul 2026 20:09:32 UTC | 0xf9a79c…b5fb | [0] 0x000000000000…20b896f5 data: 0x000000000000000000…e49fcfff |
| 0x9e3fe7…bd27d0 | 23 days agoFri, 24 Jul 2026 19:08:21 UTC | 0xa4195c…fa24 | [0] 0x000000000000…20b896f5 [1] 0x000000000000…6285881d data: 0x000000000000000000…457515bf |
| 0x9e3fe7…bd27d0 | 23 days agoFri, 24 Jul 2026 19:08:21 UTC | 0xf9a79c…b5fb | [0] 0x000000000000…20b896f5 data: 0x000000000000000000…00000000 |
| 0xb9970c…17950f | 23 days agoFri, 24 Jul 2026 00:01:18 UTC | 0xa4195c…fa24 | [0] 0x000000000000…82a7a4eb [1] 0x000000000000…2a0637b5 data: 0x000000000000000000…f3f7f1ba |
| 0xb9970c…17950f | 23 days agoFri, 24 Jul 2026 00:01:18 UTC | 0xf9a79c…b5fb | [0] 0x000000000000…82a7a4eb data: 0x000000000000000000…f65ff495 |
| 0x47c682…7a0e5b | 25 days agoWed, 22 Jul 2026 03:39:58 UTC | 0xa4195c…fa24 | [0] 0x000000000000…82a7a4eb [1] 0x000000000000…2a0637b5 data: 0x000000000000000000…424e01f0 |
| 0x47c682…7a0e5b | 25 days agoWed, 22 Jul 2026 03:39:58 UTC | 0xf9a79c…b5fb | [0] 0x000000000000…82a7a4eb data: 0x000000000000000000…683e67f3 |
| 0xcb244b…f4ad1d | 25 days agoWed, 22 Jul 2026 03:28:24 UTC | 0xa4195c…fa24 | [0] 0x000000000000…00000000 [1] 0x000000000000…f3fe9cb6 data: 0x000000000000000000…ccf183d2 |
| 0xa8ae72…a92a0b | 25 days agoWed, 22 Jul 2026 02:39:39 UTC | 0xa4195c…fa24 | [0] 0x000000000000…82a7a4eb [1] 0x000000000000…2a0637b5 data: 0x000000000000000000…d2d9a42d |
| 0xa8ae72…a92a0b | 25 days agoWed, 22 Jul 2026 02:39:39 UTC | 0xf9a79c…b5fb | [0] 0x000000000000…82a7a4eb data: 0x000000000000000000…a8ae1cf0 |
| 0x616369…bd857b | 25 days agoWed, 22 Jul 2026 02:29:32 UTC | 0xd5fee1…40aa | [0] 0x000000000000…20b896f5 [1] 0x000000000000…bb83f194 [2] 0x000000000000…6285881d |
| 0xd4a41b…e4becf | 25 days agoWed, 22 Jul 2026 02:29:27 UTC | 0x785fdf…4c57 | [0] 0x000000000000…20b896f5 [1] 0x000000000000…bb83f194 [2] 0x000000000000…6285881d |
| 0x92cdcd…c12fc0 | 25 days agoWed, 22 Jul 2026 00:00:55 UTC | 0xa4195c…fa24 | [0] 0x000000000000…82a7a4eb [1] 0x000000000000…2a0637b5 data: 0x000000000000000000…61cf6123 |
| 0x92cdcd…c12fc0 | 25 days agoWed, 22 Jul 2026 00:00:55 UTC | 0xf9a79c…b5fb | [0] 0x000000000000…82a7a4eb data: 0x000000000000000000…4e3f80e9 |
| 0xc841f3…702e71 | 25 days agoTue, 21 Jul 2026 23:42:29 UTC | 0xa4195c…fa24 | [0] 0x000000000000…00000000 [1] 0x000000000000…f3fe9cb6 data: 0x000000000000000000…3f1c1421 |
| 0x565911…485364 | 26 days agoTue, 21 Jul 2026 23:00:43 UTC | 0xa4195c…fa24 | [0] 0x000000000000…82a7a4eb [1] 0x000000000000…2a0637b5 data: 0x000000000000000000…78b75134 |
| 0x565911…485364 | 26 days agoTue, 21 Jul 2026 23:00:43 UTC | 0xa4195c…fa24 | [0] 0x000000000000…82a7a4eb [1] 0x000000000000…2a0637b5 data: 0x000000000000000000…afb058f3 |
| 0x565911…485364 | 26 days agoTue, 21 Jul 2026 23:00:43 UTC | 0xf9a79c…b5fb | [0] 0x000000000000…82a7a4eb data: 0x000000000000000000…fa2c40f6 |
| 0x990787…d8d09a | 26 days agoTue, 21 Jul 2026 22:00:17 UTC | 0xa4195c…fa24 | [0] 0x000000000000…82a7a4eb [1] 0x000000000000…2a0637b5 data: 0x000000000000000000…cc3a51c2 |
| 0x990787…d8d09a | 26 days agoTue, 21 Jul 2026 22:00:17 UTC | 0xf9a79c…b5fb | [0] 0x000000000000…82a7a4eb data: 0x000000000000000000…d6950e35 |
| 0x15bc2b…9a21a2 | 26 days agoTue, 21 Jul 2026 21:00:02 UTC | 0xa4195c…fa24 | [0] 0x000000000000…82a7a4eb [1] 0x000000000000…2a0637b5 data: 0x000000000000000000…448c3bd3 |
| 0x15bc2b…9a21a2 | 26 days agoTue, 21 Jul 2026 21:00:02 UTC | 0xa4195c…fa24 | [0] 0x000000000000…82a7a4eb [1] 0x000000000000…2a0637b5 data: 0x000000000000000000…b107c8e9 |
| 0x15bc2b…9a21a2 | 26 days agoTue, 21 Jul 2026 21:00:02 UTC | 0xf9a79c…b5fb | [0] 0x000000000000…82a7a4eb data: 0x000000000000000000…d0702fdc |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| 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 | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xf08cc6a9…7ef9de | Transfer | 16,066,895 | 25 days agoWed, 22 Jul 2026 02:29:22 UTC | 0x0000…0000 | IN | 0xe859…268a | Mint | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #298861 | |
| 0x9faf97b7…7bf726 | Transfer | 15,327,089 | 26 days agoTue, 21 Jul 2026 05:53:59 UTC | 0x0000…0000 | IN | 0xe859…268a | Mint | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #267527 | |
| 0xc2744bdb…ba5d8e | Transfer | 15,062,318 | 27 days agoMon, 20 Jul 2026 22:31:33 UTC | 0x0000…0000 | IN | 0xe859…268a | Mint | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #259960 | |
| 0x74bb8c46…24aa6e | Transfer | 14,916,711 | 27 days agoMon, 20 Jul 2026 18:28:30 UTC | 0x0000…0000 | IN | 0xe859…268a | Mint | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #253157 | |
| 0x6760e8a3…cdac85 | Transfer | 13,172,895 | 29 days agoSat, 18 Jul 2026 17:50:35 UTC | 0x0000…0000 | IN | 0xe859…268a | Mint | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #214526 | |
| 0xace77cc9…735d7f | Transfer | 12,527,966 | 29 days agoFri, 17 Jul 2026 23:51:17 UTC | 0x0000…0000 | IN | 0xe859…268a | Mint | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #203103 | |
| 0xf7dcc372…2142fa | Transfer | 12,445,047 | 30 days agoFri, 17 Jul 2026 21:32:52 UTC | 0x0000…0000 | IN | 0xe859…268a | Mint | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #200605 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x9b479c68…f9d17d | Transfer | 18,957,134 | 22 days agoSat, 25 Jul 2026 11:00:25 UTC | 0xcaf7…5d11 | IN | 0xe859…268a | $0.001 DIH | ||
| 0x957309c2…e18a8e | Transfer | 18,612,042 | 22 days agoSat, 25 Jul 2026 01:22:12 UTC | 0xe859…268a | OUT | 0x6bdd…9cb6 | 0.000031 WETH | WETH (WETH) | |
| 0x79b1b0ef…c00540 | Transfer | 18,424,952 | 23 days agoFri, 24 Jul 2026 20:09:32 UTC | 0xe859…268a | OUT | 0xb480…881d | 98,472.292092 MOON | Moon Draw (MOON) | |
| 0x79b1b0ef…c00540 | Transfer | 18,424,952 | 23 days agoFri, 24 Jul 2026 20:09:32 UTC | 0xe859…268a | OUT | 0x0000…dead | 78,777.833674 MOON | Moon Draw (MOON) | |
| 0x79b1b0ef…c00540 | Transfer | 18,424,952 | 23 days agoFri, 24 Jul 2026 20:09:32 UTC | 0xdac6…00ef | IN | 0xe859…268a | 196,944.584185 MOON | Moon Draw (MOON) | |
| 0x9e3fe765…bd27d0 | Transfer | 18,388,316 | 23 days agoFri, 24 Jul 2026 19:08:21 UTC | 0xe859…268a | OUT | 0xb480…881d | 0.000155 WETH | WETH (WETH) | |
| 0x9e3fe765…bd27d0 | Transfer | 18,388,316 | 23 days agoFri, 24 Jul 2026 19:08:21 UTC | 0xdac6…00ef | IN | 0xe859…268a | 0.000310 WETH | WETH (WETH) | |
| 0xb9970c63…17950f | Transfer | 17,702,222 | 23 days agoFri, 24 Jul 2026 00:01:18 UTC | 0xe859…268a | OUT | 0x6b36…37b5 | $NaN46,210.045865 MOOND | MoonDraw (MOOND) | |
| 0xb9970c63…17950f | Transfer | 17,702,222 | 23 days agoFri, 24 Jul 2026 00:01:18 UTC | 0xe859…268a | OUT | 0x0000…dead | $NaN36,968.036692 MOOND | MoonDraw (MOOND) | |
| 0xb9970c63…17950f | Transfer | 17,702,222 | 23 days agoFri, 24 Jul 2026 00:01:18 UTC | 0x7954…94d7 | IN | 0xe859…268a | $NaN92,420.091730 MOOND | MoonDraw (MOOND) | |
| 0x47c6821e…7a0e5b | Transfer | 16,109,140 | 25 days agoWed, 22 Jul 2026 03:39:58 UTC | 0xe859…268a | OUT | 0x6b36…37b5 | $NaN13,565.638788 MOOND | MoonDraw (MOOND) | |
| 0x47c6821e…7a0e5b | Transfer | 16,109,140 | 25 days agoWed, 22 Jul 2026 03:39:58 UTC | 0xe859…268a | OUT | 0x0000…dead | $NaN10,852.511030 MOOND | MoonDraw (MOOND) | |
| 0x47c6821e…7a0e5b | Transfer | 16,109,140 | 25 days agoWed, 22 Jul 2026 03:39:58 UTC | 0x7954…94d7 | IN | 0xe859…268a | $NaN27,131.277576 MOOND | MoonDraw (MOOND) | |
| 0xcb244bf1…f4ad1d | Transfer | 16,102,216 | 25 days agoWed, 22 Jul 2026 03:28:24 UTC | 0xe859…268a | OUT | 0x6bdd…9cb6 | $NaN2,713,127.757675 MOOND | MoonDraw (MOOND) | |
| 0xa8ae7258…a92a0b | Transfer | 16,073,066 | 25 days agoWed, 22 Jul 2026 02:39:39 UTC | 0xe859…268a | OUT | 0x6b36…37b5 | $NaN24,518.780243 MOOND | MoonDraw (MOOND) | |
| 0xa8ae7258…a92a0b | Transfer | 16,073,066 | 25 days agoWed, 22 Jul 2026 02:39:39 UTC | 0xe859…268a | OUT | 0x0000…dead | $NaN19,615.024194 MOOND | MoonDraw (MOOND) | |
| 0xa8ae7258…a92a0b | Transfer | 16,073,066 | 25 days agoWed, 22 Jul 2026 02:39:39 UTC | 0x7954…94d7 | IN | 0xe859…268a | $NaN49,037.560486 MOOND | MoonDraw (MOOND) | |
| 0x92cdcdec…c12fc0 | Transfer | 15,977,962 | 25 days agoWed, 22 Jul 2026 00:00:55 UTC | 0xe859…268a | OUT | 0x6b36…37b5 | $NaN87,879.686497 MOOND | MoonDraw (MOOND) | |
| 0x92cdcdec…c12fc0 | Transfer | 15,977,962 | 25 days agoWed, 22 Jul 2026 00:00:55 UTC | 0xe859…268a | OUT | 0x0000…dead | $NaN70,303.749197 MOOND | MoonDraw (MOOND) | |
| 0x92cdcdec…c12fc0 | Transfer | 15,977,962 | 25 days agoWed, 22 Jul 2026 00:00:55 UTC | 0x7954…94d7 | IN | 0xe859…268a | $NaN175,759.372994 MOOND | MoonDraw (MOOND) | |
| 0xc841f344…702e71 | Transfer | 15,966,912 | 25 days agoTue, 21 Jul 2026 23:42:29 UTC | 0xe859…268a | OUT | 0x6bdd…9cb6 | 0.013299 WETH | WETH (WETH) | |
| 0x565911b0…485364 | Transfer | 15,941,896 | 26 days agoTue, 21 Jul 2026 23:00:43 UTC | 0xe859…268a | OUT | 0x6b36…37b5 | $NaN505,125.435187 MOOND | MoonDraw (MOOND) | |
| 0x565911b0…485364 | Transfer | 15,941,896 | 26 days agoTue, 21 Jul 2026 23:00:43 UTC | 0xe859…268a | OUT | 0x6b36…37b5 | 0.000348 WETH | WETH (WETH) | |
| 0x565911b0…485364 | Transfer | 15,941,896 | 26 days agoTue, 21 Jul 2026 23:00:43 UTC | 0xe859…268a | OUT | 0x0000…dead | $NaN404,100.348149 MOOND | MoonDraw (MOOND) | |
| 0x565911b0…485364 | Transfer | 15,941,896 | 26 days agoTue, 21 Jul 2026 23:00:43 UTC | 0x7954…94d7 | IN | 0xe859…268a | $NaN1,010,250.870374 MOOND | MoonDraw (MOOND) |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x957309…e18a8e | withdrawProtocol | 18,612,042 | 22 days agoSat, 25 Jul 2026 01:22:12 UTC | 0x6bdd…9cb6 | IN | SlingLocker | $0.000 ETH | 0.00000692 | |
| 0xcb244b…f4ad1d | withdrawProtocol | 16,102,216 | 25 days agoWed, 22 Jul 2026 03:28:24 UTC | 0x6bdd…9cb6 | IN | SlingLocker | $0.000 ETH | 0.00000439 | |
| 0xd4a41b…e4becf | transferCreatorRights | 16,066,947 | 25 days agoWed, 22 Jul 2026 02:29:27 UTC | 0x41d2…f194 | IN | SlingLocker | $0.000 ETH | 0.00000372 | |
| 0xc841f3…702e71 | withdrawProtocol | 15,966,912 | 25 days agoTue, 21 Jul 2026 23:42:29 UTC | 0x6bdd…9cb6 | IN | SlingLocker | $0.000 ETH | 0.00000498 | |
| 0x7bf496…fd00c4 | transferCreatorRights | 15,328,347 | 26 days agoTue, 21 Jul 2026 05:56:04 UTC | 0xec26…ac52 | IN | SlingLocker | $0.000 ETH | 0.00000283 | |
| 0x4a5a93…96b0f3 | transferCreatorRights | 15,062,366 | 27 days agoMon, 20 Jul 2026 22:31:38 UTC | 0xe836…9e2a | IN | SlingLocker | $0.000 ETH | 0.00000279 | |
| 0x30b4c8…0511b1 | collect | 14,917,003 | 27 days agoMon, 20 Jul 2026 18:28:59 UTC | 0xe836…9e2a | IN | SlingLocker | $0.000 ETH | 0.00001173 | |
| 0xf55ee3…9bd427 | transferCreatorRights | 14,916,902 | 27 days agoMon, 20 Jul 2026 18:28:49 UTC | 0xe836…9e2a | IN | SlingLocker | $0.000 ETH | 0.00000264 | |
| 0xe69cce…4e9fd6 | transferCreatorRights | 13,173,315 | 29 days agoSat, 18 Jul 2026 17:51:18 UTC | 0xe836…9e2a | IN | SlingLocker | $0.000 ETH | 0.00000318 | |
| 0x1aecdb…8d6a73 | collect | 13,173,100 | 29 days agoSat, 18 Jul 2026 17:50:56 UTC | 0xe836…9e2a | IN | SlingLocker | $0.000 ETH | 0.00001667 |