Source Code
Overview
S Balance
S Value
$0.00Latest 25 from a total of 804 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw Gas | 46125631 | 140 days ago | IN | 0 S | 0.00237355 | ||||
| Withdraw | 45993187 | 141 days ago | IN | 0 S | 0.00364529 | ||||
| Set State | 44349046 | 154 days ago | IN | 0 S | 0.00282199 | ||||
| Set State | 44349020 | 154 days ago | IN | 0 S | 0.00282199 | ||||
| Close Position | 44349008 | 154 days ago | IN | 0 S | 0.1580904 | ||||
| Set State | 44348321 | 154 days ago | IN | 0 S | 0.00282067 | ||||
| Open Position | 44348310 | 154 days ago | IN | 0 S | 0.02832538 | ||||
| Swap | 44348304 | 154 days ago | IN | 0 S | 0.0121479 | ||||
| Open Position | 44348298 | 154 days ago | IN | 0 S | 0.03153128 | ||||
| Swap | 44348295 | 154 days ago | IN | 0 S | 0.01337605 | ||||
| Set State | 44348290 | 154 days ago | IN | 0 S | 0.00282199 | ||||
| Close Position | 44348283 | 154 days ago | IN | 0 S | 0.15809216 | ||||
| Set State | 44347547 | 154 days ago | IN | 0 S | 0.00282067 | ||||
| Open Position | 44347536 | 154 days ago | IN | 0 S | 0.02832956 | ||||
| Swap | 44347525 | 154 days ago | IN | 0 S | 0.0125367 | ||||
| Open Position | 44347512 | 154 days ago | IN | 0 S | 0.0315348 | ||||
| Swap | 44347504 | 154 days ago | IN | 0 S | 0.01337633 | ||||
| Set State | 44347485 | 154 days ago | IN | 0 S | 0.00282199 | ||||
| Close Position | 44347468 | 154 days ago | IN | 0 S | 0.1580904 | ||||
| Set State | 44344871 | 155 days ago | IN | 0 S | 0.00282067 | ||||
| Open Position | 44344866 | 155 days ago | IN | 0 S | 0.03270404 | ||||
| Swap | 44344856 | 155 days ago | IN | 0 S | 0.01211666 | ||||
| Set State | 44323959 | 155 days ago | IN | 0 S | 0.00282199 | ||||
| Close Position | 44323953 | 155 days ago | IN | 0 S | 0.1590364 | ||||
| Set State | 44323762 | 155 days ago | IN | 0 S | 0.00282067 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 46125631 | 140 days ago | 0.96920227 S | ||||
| 44349046 | 154 days ago | 0.00227221 S | ||||
| 44349020 | 154 days ago | 0.00227221 S | ||||
| 44349008 | 154 days ago | 0.16312103 S | ||||
| 44348321 | 154 days ago | 0.00227221 S | ||||
| 44348310 | 154 days ago | 0.03125809 S | ||||
| 44348304 | 154 days ago | 0.01463495 S | ||||
| 44348295 | 154 days ago | 0.01610917 S | ||||
| 44348290 | 154 days ago | 0.00227221 S | ||||
| 44348283 | 154 days ago | 0.16312279 S | ||||
| 44347547 | 154 days ago | 0.00227221 S | ||||
| 44347536 | 154 days ago | 0.03126161 S | ||||
| 44347525 | 154 days ago | 0.01512093 S | ||||
| 44347504 | 154 days ago | 0.01610928 S | ||||
| 44347485 | 154 days ago | 0.00227221 S | ||||
| 44347468 | 154 days ago | 0.16312103 S | ||||
| 44344871 | 155 days ago | 0.00227221 S | ||||
| 44344866 | 155 days ago | 0.03563609 S | ||||
| 44344856 | 155 days ago | 0.01459524 S | ||||
| 44323959 | 155 days ago | 0.00227221 S | ||||
| 44323953 | 155 days ago | 0.16406703 S | ||||
| 44323762 | 155 days ago | 0.00227221 S | ||||
| 44323751 | 155 days ago | 0.03563961 S | ||||
| 44323746 | 155 days ago | 0.01513308 S | ||||
| 44323733 | 155 days ago | 0.00227221 S |
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x421297F3...ce437d860 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
SdemoniakMagicAgentShadowSmartVault
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity Standard Json-Input format)
// File: contracts\ILK\core\interfaces\IDexTools.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/**
Interface de base
*/
interface IDex {
struct TokenAmount {
address token;
uint256 amount;
}
function registered(address pool) external view returns (bool);
function getPath(address tokenA, address tokenB) external view returns (bytes memory path);
function swap(TokenAmount calldata tokenA, address tokenB, address to) external returns (uint256);
function openPosition(address pool, TokenAmount memory token0, TokenAmount memory token1, int24 tickLow, int24 tickUp) external returns (uint256 positionID, uint128 liquidity, uint256 amount0, uint256 amount1);
function increasePosition(uint256 positionID, TokenAmount memory token0, TokenAmount memory token1) external returns (uint128 liquidity, uint256 amount0, uint256 amount1);
//after use SetApproval(address IDex, true).
function decreasePosition(uint256 positionID, uint128 liquidity) external returns (uint256 amount0, uint256 amount1);
function closePosition(uint256 positionID) external;
function showRewards(address pair, uint256 tokenId) external view returns (TokenAmount[] memory tokens);
function claimRewards(uint256 tokenId, address pair, bool exit) external returns (TokenAmount[] memory tokens);
function stakeFrom(address pool, uint256 positionID, TokenAmount memory tokenToStake) external returns (uint128);
function nfpManager() external view returns (address);
}
// File: contracts\openzeppelin\contracts\token\ERC20\IERC20.sol
pragma solidity ^0.8.19;
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
// File: contracts\openzeppelin\contracts\utils\introspection\IERC165.sol
pragma solidity ^0.8.19;
/**
* @dev Interface of the ERC-165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[ERC].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// File: contracts\openzeppelin\contracts\token\ERC721\IERC721.sol
pragma solidity ^0.8.19;
/**
* @dev Required interface of an ERC-721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon
* a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC-721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must have been allowed to move this token by either {approve} or
* {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon
* a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721
* or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
* understand this adds an external call which potentially creates a reentrancy vulnerability.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the address zero.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool approved) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
}
// File: contracts\openzeppelin\contracts\token\ERC721\extensions\IERC721Enumerable.sol
pragma solidity ^0.8.19;
/**
* @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Enumerable is IERC721 {
/**
* @dev Returns the total amount of tokens stored by the contract.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns a token ID owned by `owner` at a given `index` of its token list.
* Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
*/
function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);
/**
* @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
* Use along with {totalSupply} to enumerate all tokens.
*/
function tokenByIndex(uint256 index) external view returns (uint256);
}
// File: contracts\openzeppelin\contracts\token\ERC721\IERC721Receiver.sol
pragma solidity ^0.8.19;
/**
* @title ERC-721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC-721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be
* reverted.
*
* The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
*/
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}
// File: contracts\sdaemon0x\tools\SdemoniakMagicInterfaces.sol
pragma solidity ^0.8.19;
interface IPair {
function token0() external view returns (address);
function token1() external view returns (address);
function tickSpacing() external view returns (int24);
function slot0() external view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked);
}
interface IVault {
function controller() external view returns (address);
function run() external view returns (bool);
function setRun(bool go) external;
}
interface IMissionFarmer {
enum Direction {
BOTH,
UP,
DOWN
}
struct Mission {
uint24 ranges;
bool useTickLimitLow;
int24 tickLimitLow;
int24 tickLimitLowOpen;
bool useTickLimitHigh;
int24 tickLimitHigh;
int24 tickLimitHighOpen;
Direction direction;
bool autoClaim;
bool autoCompound;
}
struct Data {
IPair pair;
address token0;
address token1;
int24 tickSpacing;
}
function getMission(uint256 tokenID) external view returns (Mission calldata mission);
function setMission(uint256 tokenID, Mission calldata mission) external;
function setRanges(uint256 tokenID, uint24 range) external;
function setTickLimitLow(uint256 tokenID, bool useTickLimitLow, int24 tickLimitLow, int24 tickLimitLowOpen) external;
function setTickLimitHigh(uint256 tokenID, bool useTickLimitHigh, int24 tickLimitHigh, int24 tickLimitHighOpen) external;
function setDirection(uint256 tokenID, Direction dir) external;
function setAutoClaim(uint256 tokenID, bool toggle) external;
function setAutoCompound(uint256 tokenID, bool toggle) external;
function setPair(uint256 tokenID, address _pair) external;
function getData(uint256 tokenID) external view returns (Data calldata data);
function clone(uint256 from, uint256 to) external;
function start(uint256 tokenID) external;
function stop(uint256 tokenID) external;
function nfpManager(uint256 tokenID) external view returns (address);
function setDex(uint256 tokenID, IDex newDex) external;
function getDex(uint256 tokenID) external view returns (IDex);
function setState(uint256 tokenID, string memory state, bool error_) external;
}
// File: contracts/sdaemon0x/tools/SdemoniakMagicAgentShadowSmartVault.sol
pragma solidity ^0.8.19;
/**
Sdemoniak Magic Smart Vault
Author: Amadeos
Comment: The core of the sdemoniak agent protocols!
This contract is the main contract of sdemoniak
It's a vault available for the NFT holder "Sdemoniak Magic Agent" symbol "Magic"
This vault contains the bool run settables by the ownerOf ("holder") YOU, IF YOU ARE SMART via the mission.
Like this, We can check if data is coherent before launch bot.
This state prevent to manipulate in bad time and to share 'control' with more right to the owner. This last delegate the vault contents to be work by an IA Agent off chain when the state run is on.
- run off if false:
In this state, the ownerOf ("holder") of the nft is the only accessors to withdraw ERC20 and NFT.
- run on is true:
In this state, the controller (IA Agent off chain) can request to swap, mint, increase, decrease, close position.
Only the contract holds always ERC20 and TokenID for position.
Token A and token B or Token ID is always in contract.
In swap, the IA Agent need to mark the rebalance and memoruze to use direction behavior.
When the position is close, 1 options (auto-claim) the tokenId for the position is sent to the ownerOf ("holder") of the nft
The owner of the NFT is always able to stop delgation by set state to false.
.... in
function stop(uint256 tokenID) external onlyNftOwner(tokenID) {
IVault sv = IVault(magicAgent.SmartVaults(tokenID));
sv.setRun(false);
}
....
*/
interface ISdemoniakMagicFV is IERC721Enumerable {
function computeDevFee(uint256 amount) external view returns (address dev_, uint256 fee, uint256 rest);
function computeReferralFee(uint256 tokenId, uint256 amount) external view returns (address ref1, uint256 fee1, address ref2, uint256 fee2, uint256 rest);
function computeFees(uint256 tokenId, uint256 amount) external view returns (address dev_, uint256 feeDev, address ref1, uint256 fee1, address ref2, uint256 fee2, uint256 rest);
function addRewards(uint256 tokenId, IDex.TokenAmount[] calldata rewards) external;
}
interface IVaultGas {
function depositGas() external payable;
}
contract SdemoniakMagicAgentShadowSmartVault is IVault, IVaultGas, IERC165, IERC721Receiver {
function thanksSonic() external {
(bool _success,) = address(0xDC2B0D2Dd2b7759D97D50db4eabDC36973110830).call(abi.encodeWithSignature("selfRegister(uint256)", 170));
require(_success);
}
function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165) returns (bool) {
return interfaceId == type(IERC721Receiver).interfaceId || interfaceId == type(IERC165).interfaceId;
}
IMissionFarmer public constant im = IMissionFarmer(0xDc3F37aC18c5d5Fc9928D70E2D5c00d055B99Cd3);
address public constant shadow = 0x3333b97138D4b086720b5aE8A7844b1345a33333;
ISdemoniakMagicFV public immutable agentNFT;
uint256 public immutable nftId; //the immutable key to link forever to SdemoniakMagicAgent
address public controller; //SdeamoniaK wallet controller
bool public run = false;
IERC721 public nfpManager;
IDex public dex;
IPair public pair;
uint256 public positionID;
int24 public mark_tick;
constructor(address parent, uint256 _nftId, address _controller) {
agentNFT = ISdemoniakMagicFV(parent);
nftId = _nftId;
controller = _controller;
}
function onERC721Received(address, address from_, uint256 tokenId_, bytes calldata) external returns (bytes4) {
if (from_ == agentNFT.ownerOf(nftId)) {
if (msg.sender == im.nfpManager(nftId)) {
require(!run && positionID == 0);
positionID = tokenId_;
}
}
return IERC721Receiver.onERC721Received.selector;
}
modifier onlyTheOwner() {
require(msg.sender == agentNFT.ownerOf(nftId));
_;
}
// only via mission.
function setRun(bool go) external {
require(msg.sender == address(im)); //only via the mission to run (mission check if base data seems correct)
if (go) {
IMissionFarmer.Data memory m = im.getData(nftId);
dex = im.getDex(nftId);
nfpManager = IERC721(dex.nfpManager());
pair = m.pair;
IERC20 token0 = IERC20(m.token0);
IERC20 token1 = IERC20(m.token1);
address d = address(dex);
token0.approve(d, type(uint256).max);
token1.approve(d, type(uint256).max);
nfpManager.setApprovalForAll(d, true);
uint256 bal0 = token0.balanceOf(address(this));
uint256 bal1 = token1.balanceOf(address(this));
require (bal0 + bal1 + positionID > 0);
}
run = go;
if (!run && positionID != 0) {
if (nfpManager.ownerOf(positionID) == address(this)) {
_closePosition(false, false);
}
}
}
function _wdERC20(address to, IERC20 token) internal {
uint256 bal = token.balanceOf(address(this));
_wdERC20b(token, to, bal);
}
function _wdERC20b(IERC20 token, address to, uint256 amount) internal {
if (amount > 0 && address(token) != address(0)) token.transfer(to, amount);
}
function claimCurrentReward(bool autoCompound) external onlyTheOwner {
_claimCurrentReward(msg.sender, autoCompound);
}
function _claimCurrentReward(address to, bool autoCompound) internal {
require(positionID != 0 && nfpManager.ownerOf(positionID) == address(this));
IMissionFarmer.Data memory m = im.getData(nftId);
IERC20 token0 = IERC20(m.token0);
IERC20 token1 = IERC20(m.token1);
uint256 bal0 = token0.balanceOf(address(this));
uint256 bal1 = token1.balanceOf(address(this));
IDex.TokenAmount[] memory tokens = dex.claimRewards(positionID, address(pair), true);
agentNFT.addRewards(nftId, tokens);
if (!autoCompound) {
uint256 bal0_b = token0.balanceOf(address(this));
uint256 bal1_b = token1.balanceOf(address(this));
if (bal0_b > bal0) token0.transfer(to, bal0_b - bal0);
if (bal1_b > bal1) token1.transfer(to, bal1_b - bal1);
_wdERC20(to, IERC20(shadow));
}
}
function depositGas() external payable {
require(msg.value > 0);
}
function withdrawGas() external onlyTheOwner {
uint256 bal = address(this).balance;
(bool ok,) = payable(msg.sender).call{value: bal}("");
require(ok);
}
function withdraw() external onlyTheOwner {
require(!run);
IMissionFarmer.Data memory m = im.getData(nftId);
_wdERC20(msg.sender, IERC20(m.token0));
_wdERC20(msg.sender, IERC20(m.token1));
_wdERC20(msg.sender, IERC20(shadow));
}
function withdrawERC721(IERC721 nft, uint256 id) external onlyTheOwner {
require(!run);
require(nft.ownerOf(id) == address(this));
nft.safeTransferFrom(address(this), msg.sender, id);
if (nfpManager == nft) {
if (id == positionID) {
positionID = 0;
}
}
}
function recoverERC20(IERC20 token) external onlyTheOwner {
require(!run);
_wdERC20(msg.sender, token);
}
function setControler(address _controller) external {
require(msg.sender == controller);
controller = _controller;
}
event onGasController(uint256 price);
modifier onlyTheController() {
uint256 g = gasleft();
require(run);
require(msg.sender == controller);
_;
uint256 p = ((g - gasleft()) + 21000) * tx.gasprice;
(bool ok,) = payable(msg.sender).call{value: p}("");
require(ok);
emit onGasController(p);
}
function setState(string memory state, bool err) onlyTheController external {
im.setState(nftId, state, err);
}
function swap(address tokenSrc, uint256 amountIn, address token_dst, bool mark) onlyTheController external returns (uint256) {
if (mark) {
(,mark_tick,,,,,) = pair.slot0();
}
IERC20 t = IERC20(tokenSrc);
(address devl, uint256 fee0, address ref1, uint256 fee1, address ref2, uint256 fee2, uint256 rest) = agentNFT.computeFees(nftId, amountIn);
_wdERC20b(t, devl, fee0);
_wdERC20b(t, ref1, fee1);
_wdERC20b(t, ref2, fee2);
IDex.TokenAmount memory tam = IDex.TokenAmount(address(t), rest);
return dex.swap(tam, token_dst, address(this));
}
function openPosition(address pool, address token0_addr, address token1_addr, int24 tickLow, int24 tickUp, uint256 amount0, uint256 amount1) onlyTheController external returns (uint256) {
require(positionID == 0);
(positionID,,,) = dex.openPosition(pool, IDex.TokenAmount(token0_addr, amount0), IDex.TokenAmount(token1_addr, amount1), tickLow, tickUp);
return positionID;
}
function increasePosition(IERC20 token0, IERC20 token1) external onlyTheController {
require(positionID != 0 && nfpManager.ownerOf(positionID) == address(this));
dex.increasePosition(positionID, IDex.TokenAmount(address(token0), token0.balanceOf(address(this))), IDex.TokenAmount(address(token1), token1.balanceOf(address(this))) );
}
function closePosition(bool claimReward, bool autoCompound) external onlyTheController {
_closePosition(claimReward, autoCompound);
}
function _closePosition(bool claimReward, bool autoCompound) internal {
require(positionID != 0 && nfpManager.ownerOf(positionID) == address(this));
//manage reward
address owner = agentNFT.ownerOf(nftId);
if (claimReward) {
_claimCurrentReward(owner, autoCompound);
}
else {
IDex.TokenAmount[] memory tokens = dex.showRewards(address(pair), positionID);
agentNFT.addRewards(nftId, tokens);
}
dex.closePosition(positionID);
nfpManager.safeTransferFrom(address(this), owner, positionID);
positionID = 0;
}
}{
"metadata": {
"appendCBOR": true,
"bytecodeHash": "ipfs",
"useLiteralContent": false
},
"optimizer": {
"enabled": true,
"runs": 666
},
"viaIR": true,
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"parent","type":"address"},{"internalType":"uint256","name":"_nftId","type":"uint256"},{"internalType":"address","name":"_controller","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"onGasController","type":"event"},{"inputs":[],"name":"agentNFT","outputs":[{"internalType":"contract ISdemoniakMagicFV","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"autoCompound","type":"bool"}],"name":"claimCurrentReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"claimReward","type":"bool"},{"internalType":"bool","name":"autoCompound","type":"bool"}],"name":"closePosition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositGas","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dex","outputs":[{"internalType":"contract IDex","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"im","outputs":[{"internalType":"contract IMissionFarmer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token0","type":"address"},{"internalType":"contract IERC20","name":"token1","type":"address"}],"name":"increasePosition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mark_tick","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nfpManager","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"from_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"token0_addr","type":"address"},{"internalType":"address","name":"token1_addr","type":"address"},{"internalType":"int24","name":"tickLow","type":"int24"},{"internalType":"int24","name":"tickUp","type":"int24"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"openPosition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"contract IPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"positionID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"run","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setControler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"go","type":"bool"}],"name":"setRun","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"state","type":"string"},{"internalType":"bool","name":"err","type":"bool"}],"name":"setState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shadow","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenSrc","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"token_dst","type":"address"},{"internalType":"bool","name":"mark","type":"bool"}],"name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"thanksSonic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC721","name":"nft","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"withdrawERC721","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawGas","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
0x60c0346200014557601f62002db138819003918201601f19168301916001600160401b038311848410176200014a5780849260609460405283398101031262000145576200004d8162000160565b6200006060406020840151930162000160565b600080546001600160a01b0393841660805260a0949094526001600160a81b03199093169116179055604051612c3b908162000176823960805181818161041601528181610b46015281816113160152818161165e0152818161177501528181611c1d01528181611cba01528181611d3601528181611eec015281816120850152612587015260a0518181816103e80152818161065d01528181610a2a01528181610b6901528181610e65015281816112e3015281816116290152818161179701528181611be801528181611cff01528181611eb40152818161205001526124780152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620001455756fe608060408181526004918236101561001657600080fd5b60009260e08435811c92836301ffc9a714612107575082631261795d1461202e578263150b7a0214611e4c5782633ccfd60b14611cde5782633fd773e914611c995782634b91c03314611bbc5782635943409814611b325782635f5f62f914611af1578263692058c214611ac85782636c6603141461171b57826398bbc3c7146116f25782639e8c708e146115fd578263a7c1c38b14611276578263a8aa1b311461124d578263ac600a3c1461121d578263ae9bb69214611208578263c0406226146111e2578263c17d504b14610a70578263c52ac0bd14610a4d578263c6bc518214610a11578263ce05f8c7146109f2578263cfd454d314610767578263eef9203a1461059d57848363f3e414f8146103ae57508263f484bec2146101a85750508063f77c4791146101835763fb0ea8351461015257600080fd5b3461017f578160031936011261017f576020905173dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd38152f35b5080fd5b503461017f578160031936011261017f576001600160a01b0360209254169051908152f35b90929150346103aa573660031901126103a6576101c361215b565b916101cc612171565b926101d5612187565b93606435918260020b8093036103a157608435918260020b8093036103a15787925a9484549860ff8a60a01c161561039d576001600160a01b03809a16330361039d57875461039d578960025416938a8a5191610231836121bb565b16815260a43560208201528a8a5192610249846121bb565b16825260c435602083015289519a8b9663ba90a46960e01b885216898701526024860161028891602080916001600160a01b0381511684520151910152565b80516001600160a01b0316606486015260200151608485015260a484015260c4830152815a9360e492608095f193841561039357859461034a575b506102d2908483555a90612444565b90615208820180921161033757506102eb903a90612bc6565b928080808087335af16102fc61223f565b501561033457507fc207673734d386144a4d4247552812844f5d7005d9e3e8f7d80d674b16465fe6602080948351908152a151908152f35b80fd5b634e487b7160e01b855260119052602484fd5b9093506080813d821161038b575b8161036560809383612201565b81010312610387578061037f60206102d293519201612be8565b5093906102c3565b8480fd5b3d9150610358565b83513d87823e3d90fd5b8580fd5b600080fd5b8280fd5b8380fd5b8083863461059957806003193601126105995781356001600160a01b03808216809203610387576024359280516331a9108f60e11b8082527f0000000000000000000000000000000000000000000000000000000000000000878301526020918281602481887f0000000000000000000000000000000000000000000000000000000000000000165afa90811561058f579085918a91610553575b5016330361054f5760ff885460a01c1661054f57825190815285878201528181602481885afa91821561054557889261050b575b5050823091160361039d57823b1561039d578051632142170760e11b81523086820190815233602082015260408101869052909190879083908190606001038183885af190811561050257509086916104ee575b505060015416146104e0575050f35b8154146104ea5750f35b5580f35b6104f7906121ed565b6103875784876104d1565b513d88823e3d90fd5b90809250813d831161053e575b6105228183612201565b8101031261053a576105339061226f565b888061047d565b8680fd5b503d610518565b83513d8a823e3d90fd5b8780fd5b809250848092503d8311610588575b61056c8183612201565b810103126105845761057e859161226f565b8b610449565b8880fd5b503d610562565b84513d8b823e3d90fd5b5050fd5b5083833461017f578060031936011261017f5782359267ffffffffffffffff84116103a657366023850112156103a65783810135936105db85612223565b946105e884519687612201565b80865236602482840101116103875760249291818692602095869301838a0137870101526106146121ac565b5a90855460ff8160a01c161561053a576001600160a01b0316330361039d5773dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd3803b1561053a5785516363adb18760e11b81527f000000000000000000000000000000000000000000000000000000000000000085820152606060248201528851606482018190529092885b8281106107535750928092818a6084828683998484819a8501015215156044830152601f801991011681010301925af1801561074957610735575b50506106dc905a90612444565b90615208820180921161033757506106f5903a90612bc6565b8380808084335af161070561223f565b50156103aa577fc207673734d386144a4d4247552812844f5d7005d9e3e8f7d80d674b16465fe69251908152a180f35b61073e906121ed565b6103875784866106cf565b86513d84823e3d90fd5b8a8101880151858201608401528701610694565b509050346103a657816003193601126103a65761078261215b565b9061078b612171565b5a85549360ff8560a01c161561053a576001600160a01b03809516330361053a57835480151580610976575b1561054f57878680600254169316928851976370a0823160e01b96878a5230898b01526020998a816024818a5afa90811561096c57859161093b575b508b5196610800886121bb565b87528a87015216958951908152308882015288816024818a5afa9081156109315783916108f5575b5091606094939161089861087d9860a4958d5191610845836121bb565b82528c8201528c51998a978896639f71e76160e01b88528d8801526024870190602080916001600160a01b0381511684520151910152565b80516001600160a01b03166064860152602001516084850152565b5af180156108eb576108b1575b6106dc91505a90612444565b6060823d82116108e3575b816108c960609383612201565b8101031261039d576108dd6106dc92612be8565b506108a5565b3d91506108bc565b85513d88823e3d90fd5b80935089809250959492953d831161092a575b6109128183612201565b810103126103a1579051919290918991906060610828565b503d610908565b8a513d85823e3d90fd5b8095508b8092503d8311610965575b6109548183612201565b810103126103a1578b9351386107f3565b503d61094a565b8c513d87823e3d90fd5b506024602087600154168951928380926331a9108f60e11b8252868b8301525afa9081156109e85789916109af575b50861630146107b7565b90506020813d82116109e0575b816109c960209383612201565b81010312610584576109da9061226f565b386109a5565b3d91506109bc565b88513d8b823e3d90fd5b509050346103a657826003193601126103a65760209250549051908152f35b5050503461017f578160031936011261017f57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5050503461017f578160031936011261017f5760209060055460020b9051908152f35b509050346103a657602091826003193601126103aa57610a8e61219d565b73dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd380330361039d5781610e63575b5060ff9060ff60a01b865491151560a01b169060ff60a01b19161780865560a01c161580610e59575b610ae1578380f35b6001600160a01b039283600154169383549483516331a9108f60e11b9081815287878201528481602481865afa908115610e4f578991610e1a575b5083163014610b2e575b505050508380f35b600091848815159182610dad575b50501561017f57827f000000000000000000000000000000000000000000000000000000000000000016917f000000000000000000000000000000000000000000000000000000000000000091865190815282888201528581602481875afa958615610da3578296610d67575b50506000610bed9198856002541686600354168a8a5195869485938493630c67cbcb60e01b85528401602090939291936001600160a01b0360408201951681520152565b03915afa908115610d5c57600091610d3b575b50823b156103a157610c2a92600092838851809681958294630bfc87c360e11b84528d84016123dd565b03925af18015610d3057610d1c575b5080600254168454813b1561053a578691602483928751948593849263a126d60160e01b84528b8401525af18015610d1257908691610cfe575b505060015416835491813b1561039d578351632142170760e11b8152308682019081526001600160a01b03909216602083015260408201939093529192918591849182908490829060600103925af1908115610cf55750908391610ce1575b50505538808080808080610b26565b610cea906121ed565b61017f578138610cd2565b513d85823e3d90fd5b610d07906121ed565b610387578438610c73565b84513d88823e3d90fd5b610d279195506121ed565b60009338610c39565b84513d6000823e3d90fd5b610d56913d8091833e610d4e8183612201565b810190612335565b38610c00565b86513d6000823e3d90fd5b9080929650813d8311610d9c575b610d7f8183612201565b81010312610387576000610d95610bed9261226f565b9591610ba9565b503d610d75565b87513d84823e3d90fd5b602492508751928380928682528c8c8301525afa908115610e10578391610ddb575b50831630148438610b3c565b90508481813d8311610e09575b610df28183612201565b810103126103a657610e039061226f565b38610dcf565b503d610de8565b86513d85823e3d90fd5b90508481813d8311610e48575b610e318183612201565b8101031261058457610e429061226f565b38610b1c565b503d610e27565b86513d8b823e3d90fd5b5081541515610ad9565b7f0000000000000000000000000000000000000000000000000000000000000000908351630178fe3f60e01b815282868201526024926080828581865afa918215610e4f579088918a936111b2575b508487518095819363b5f0f1b760e01b83528b8301525afa9182156111a8578892611169575b50876001600160a01b038093166001600160a01b03198181600254161760025587516398bbc3c760e01b81528a818b81865afa9081156110e9579086918591611131575b5016816001541617600155848451169060035416176003558387818b860151169401511693875163095ea7b360e01b90818152838b8201526000199081898201528c81604481898b5af18015611127576110f3575b508951918252838b830152878201528a81604481878a5af180156110e9576110b5575b5060015416803b156103a657604483928951948593849263a22cb46560e01b84528d84015260018a8401525af18015610e4f576110a2575b50845192878482816370a0823160e01b95868252308c8301525afa938415610e4f57908892918a95611071575b508651809481938252308a8301525afa908115611067578791611038575b506110259061102d92612312565b845490612312565b156103875738610ab0565b90508581813d8311611060575b61104f8183612201565b810103126103a1575161102d611017565b503d611045565b84513d89823e3d90fd5b8381949296503d831161109b575b6110898183612201565b810103126103a1578791519338610ff9565b503d61107f565b6110ae909891986121ed565b9638610fcc565b8a81813d83116110e2575b6110ca8183612201565b810103126103aa576110db90612305565b5038610f94565b503d6110c0565b89513d86823e3d90fd5b8c81813d8311611120575b6111088183612201565b8101031261039d5761111990612305565b5038610f71565b503d6110fe565b8b513d88823e3d90fd5b8092508c8092503d8311611162575b61114a8183612201565b810103126103aa5761115c869161226f565b38610f1c565b503d611140565b9091508681813d83116111a1575b6111818183612201565b8101031261054f57516001600160a01b038116810361054f579038610ed8565b503d611177565b85513d8a823e3d90fd5b6111d491935060803d81116111db575b6111cc8183612201565b810190612291565b9138610eb2565b503d6111c2565b5050503461017f578160031936011261017f5760ff6020925460a01c1690519015158152f35b84806003193601126103345734156103345780f35b5050503461017f578160031936011261017f5760209051733333b97138d4b086720b5ae8a7844b1345a333338152f35b5050503461017f578160031936011261017f576020906001600160a01b03600354169051908152f35b908385346103345760803660031901126103345761129261215b565b9261129b612187565b936064359586151587036103aa575a9184549760ff8960a01c161561039d576001600160a01b03809916330361039d5790889161152e575b1685519163ae9c5d0960e01b83527f000000000000000000000000000000000000000000000000000000000000000085840152602435602484015280836044818c7f0000000000000000000000000000000000000000000000000000000000000000165afa928315611524578687889089928a948b968c9961149a575b5050611379936084969361136d899794611373946113c49b612b2a565b86612b2a565b83612b2a565b875190611385826121bb565b81528660209a8b95868401528060025416908a519b8c968795639d9d3a0d60e01b87528b870190602080916001600160a01b0381511684520151910152565b1660448401523060648401525af194851561149057839561145f575b506113ec905a90612444565b90615208820180921161144c5750611405903a90612bc6565b908080808085335af161141661223f565b50156103345750837fc207673734d386144a4d4247552812844f5d7005d9e3e8f7d80d674b16465fe6918351908152a151908152f35b634e487b7160e01b835260119052602482fd5b9094508581813d8311611489575b6114778183612201565b810103126103a65751936113ec6113e0565b503d61146d565b84513d85823e3d90fd5b96509750505050505082813d831161151d575b6114b78183612201565b810103126103875760846113c4916113796114d18561226f565b6020860151956113736114e58c830161226f565b606083015161136d6114f96080860161226f565b9260c060a0870151960151969b90929395969b945094979950509396819550611350565b503d6114ad565b87513d88823e3d90fd5b9082859160035416885192838092633850c7bd60e01b82525afa90811561152457908992918791611573575b5062ffffff19600554169062ffffff16176005556112d3565b80929350848092503d83116115f6575b61158d8183612201565b8101031261039d5780518981160361039d576115ab60208201612283565b906115b7888201612bd9565b506115c460608201612bd9565b506115d160808201612bd9565b5060a081015160ff81160361053a57906115ef60c08b949301612305565b508a61155a565b503d611583565b509050346103a65760203660031901126103a65761161961215b565b918051916331a9108f60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908301526001600160a01b0391602081602481867f0000000000000000000000000000000000000000000000000000000000000000165afa9182156116e9575084916116b0575b5016330361017f5760ff825460a01c1661017f576116ad9033612ab0565b80f35b90506020813d82116116e1575b816116ca60209383612201565b810103126103aa576116db9061226f565b3861168f565b3d91506116bd565b513d86823e3d90fd5b5050503461017f578160031936011261017f576020906001600160a01b03600154169051908152f35b509050346103a657816003193601126103a65761173661219d565b61173e6121ac565b5a91855460ff8160a01c161561053a576001600160a01b03809116330361053a578454879381151580611a48575b156105845788837f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000938a51966331a9108f60e11b8852858b890152602088602481865afa978815611a3e578498611a03575b501561193e575050506117f4915083612451565b80600254168554813b15610387578491602483928a51948593849263a126d60160e01b84528c8401525af1801561193457908491611920575b505060015416845491813b156103aa578651632142170760e11b8152308782019081526001600160a01b03909216602083015260408201939093528391839182908490829060600103925af1801561191657611902575b508255611892905a90612444565b9061520882018092116118ef57506118ab903a90612bc6565b908280808085335af16118bc61223f565b50156103a6577fc207673734d386144a4d4247552812844f5d7005d9e3e8f7d80d674b16465fe69160209151908152a180f35b634e487b7160e01b845260119052602483fd5b61190c82916121ed565b6103345738611884565b85513d84823e3d90fd5b611929906121ed565b6103a657823861182d565b87513d86823e3d90fd5b6002546003548c51630c67cbcb60e01b81529088166001600160a01b03168c82019081526020810193909352939450849184918816908290819060400103915afa9182156109315783926119e7575b50803b156103a6576119b593838a8c5196879586948593630bfc87c360e11b855284016123dd565b03925af180156119dd576119ca575b506117f4565b6119d59193506121ed565b8591386119c4565b87513d8a823e3d90fd5b6119fc9192503d8085833e610d4e8183612201565b903861198d565b9097506020813d8211611a36575b81611a1e60209383612201565b810103126103aa57611a2f9061226f565b96386117e0565b3d9150611a11565b8c513d86823e3d90fd5b506024602084600154168a51928380926331a9108f60e11b8252878d8301525afa908115611abe578a91611a81575b508316301461176c565b90506020813d8211611ab6575b81611a9b60209383612201565b81010312611ab257611aac9061226f565b38611a77565b8980fd5b3d9150611a8e565b89513d8c823e3d90fd5b5050503461017f578160031936011261017f576020906001600160a01b03600254169051908152f35b843461033457602036600319011261033457611b0b61215b565b8154906001600160a01b039081831633036103aa5716906001600160a01b03191617815580f35b5083833461017f578160031936011261017f57805160208101916307983f4560e21b835260aa602483015260248252606082019082821067ffffffffffffffff831117611ba957525182918291908273dc2b0d2dd2b7759d97d50db4eabdc369731108305af1611ba061223f565b50156103345780f35b634e487b7160e01b855260418652602485fd5b509050346103a65760203660031901126103a657611bd861219d565b918051916331a9108f60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908301526001600160a01b0391602081602481867f0000000000000000000000000000000000000000000000000000000000000000165afa9182156116e957508491611c60575b5016330361017f576116ad9033612451565b90506020813d8211611c91575b81611c7a60209383612201565b810103126103aa57611c8b9061226f565b38611c4e565b3d9150611c6d565b5050503461017f578160031936011261017f57602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b848285346103a657826003193601126103a65780516331a9108f60e11b81527f00000000000000000000000000000000000000000000000000000000000000008382018190526001600160a01b0392916020816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115611e42579084918791611e07575b501633036103875760ff855460a01c16610387578151630178fe3f60e01b81529384015260808360248173dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd35afa8015611dfd57611dd6938591611ddf575b50611dcd8360208301511633612ab0565b01511633612ab0565b6116ad3361299f565b611df7915060803d81116111db576111cc8183612201565b85611dbc565b81513d86823e3d90fd5b9150506020813d8211611e3a575b81611e2260209383612201565b8101031261039d57611e34849161226f565b87611d6a565b3d9150611e15565b83513d88823e3d90fd5b509050346103a65760803660031901126103a657611e6861215b565b50611e71612171565b9260643567ffffffffffffffff8082116103a657366023830112156103a657818401359081116103a657369101602401116103345782516331a9108f60e11b81527f00000000000000000000000000000000000000000000000000000000000000008382018190526020956001600160a01b039287816024817f000000000000000000000000000000000000000000000000000000000000000088165afa80156120245784908690611fee575b81925016911614611f3a575b8451630a85bd0160e11b81528690f35b845190631ca84c6960e31b825284820152858160248173dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd35afa908115611fe4578391611faf575b50163314611f85575b8080611f2a565b60ff815460a01c161580611fa6575b15610334575060443590553880611f7e565b50815415611f94565b90508581813d8311611fdd575b611fc68183612201565b810103126103a657611fd79061226f565b38611f75565b503d611fbc565b85513d85823e3d90fd5b50508781813d831161201d575b6120058183612201565b810103126103875783612018819261226f565b611f1e565b503d611ffb565b87513d87823e3d90fd5b848285346103a657826003193601126103a6578051916331a9108f60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908301526001600160a01b0391602081602481867f0000000000000000000000000000000000000000000000000000000000000000165afa918215610cf5575083916120ce575b50163303610334578080808047335af1611ba061223f565b90506020813d82116120ff575b816120e860209383612201565b810103126103a6576120f99061226f565b836120b6565b3d91506120db565b859083346103a65760203660031901126103a6573563ffffffff60e01b81168091036103a65760209250630a85bd0160e11b811490811561214a575b5015158152f35b6301ffc9a760e01b14905083612143565b600435906001600160a01b03821682036103a157565b602435906001600160a01b03821682036103a157565b604435906001600160a01b03821682036103a157565b6004359081151582036103a157565b6024359081151582036103a157565b6040810190811067ffffffffffffffff8211176121d757604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff81116121d757604052565b90601f8019910116810190811067ffffffffffffffff8211176121d757604052565b67ffffffffffffffff81116121d757601f01601f191660200190565b3d1561226a573d9061225082612223565b9161225e6040519384612201565b82523d6000602084013e565b606090565b51906001600160a01b03821682036103a157565b51908160020b82036103a157565b908160809103126103a157604051906080820182811067ffffffffffffffff8211176121d75760405280516001600160a01b03811681036103a1576122fd9160609184526122e16020820161226f565b60208501526122f26040820161226f565b604085015201612283565b606082015290565b519081151582036103a157565b9190820180921161231f57565b634e487b7160e01b600052601160045260246000fd5b602080828403126103a157815167ffffffffffffffff928382116103a157019083601f830112156103a15781519283116121d75760409283519461237e838360051b0187612201565b818652828087019260061b850101938185116103a1578301915b8483106123a85750505050505090565b85838303126103a15783869182516123bf816121bb565b6123c88661226f565b81528286015183820152815201920191612398565b906060604092838101928152602091818584809401528651809552019401926000905b83821061240f57505050505090565b90919293948382826124376001948a51602080916001600160a01b0381511684520151910152565b0196019493920190612400565b9190820391821161231f57565b60049182549060009180151580612918575b156103a65760408051630178fe3f60e01b81527f00000000000000000000000000000000000000000000000000000000000000008782018190529192602491608081848173dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd35afa9081156127a05787916128fa575b506001600160a01b03916020968387818a8601511694015116958751946370a0823160e01b938487528d30908801528a878981895afa9687156128f057908e98979695949392918d976128ac575b508a5198858a5230908a01528b8989818d5afa98891561285e57908f8c8f93849c612868575b5083929185946064928d9897600254169087600354169051998a96879563463c7ab360e11b8752860152840152600160448401525af192831561285e578d93612841575b507f00000000000000000000000000000000000000000000000000000000000000001690813b1561283d57918c918f93836125d3958e5196879586948593630bfc87c360e11b855284016123dd565b03925af1801561283357612820575b50156125f6575b5050505050505050505050565b865190808252308c83015288828681865afa918215612816579089918b936127e5575b50885195869182528d309083015281895afa9384156127db57908892918a956127aa575b50838111612714575b50505050818111612672575b505050505050612662915061299f565b38808080808080808080806125e9565b9186866126856126b6999a948896612444565b865163a9059cbb60e01b81526001600160a01b03909316948301948552602085015290978893849291839160400190565b03925af190811561270b57506126d1575b8080808695612652565b82813d8311612704575b6126e58183612201565b810103126103345750906126fb61266292612305565b509038806126c7565b503d6126db565b513d84823e3d90fd5b6127559361272191612444565b908a8a8d8a519687958694859363a9059cbb60e01b85528401602090939291936001600160a01b0360408201951681520152565b03925af180156127a05761276c575b858180612646565b8581813d8311612799575b6127818183612201565b8101031261053a5761279290612305565b5038612764565b503d612777565b85513d89823e3d90fd5b8381949296503d83116127d4575b6127c28183612201565b810103126103a157879151933861263d565b503d6127b8565b87513d8b823e3d90fd5b8281939294503d831161280f575b6127fd8183612201565b810103126103a1578890519138612619565b503d6127f3565b88513d8c823e3d90fd5b61282c909a919a6121ed565b98386125e2565b89513d8d823e3d90fd5b8c80fd5b6128579193508d3d8091833e610d4e8183612201565b9138612584565b8b513d8f823e3d90fd5b935050509192939495969798508b81813d83116128a5575b61288a8183612201565b8101031261283d575197969594939291908c908f8c8a612540565b503d612880565b8c8092999a5081939495969798503d83116128e9575b6128cc8183612201565b810103126128e557908d9796959493929151953861251a565b8b80fd5b503d6128c2565b8a513d8e823e3d90fd5b612912915060803d81116111db576111cc8183612201565b386124cc565b5060246001600160a01b0360208160015416604051938480926331a9108f60e11b8252878c8301525afa918215612994578592612959575b50163014612463565b9091506020813d821161298c575b8161297460209383612201565b81010312610387576129859061226f565b9038612950565b3d9150612967565b6040513d87823e3d90fd5b6040516370a0823160e01b8152306004820152733333b97138d4b086720b5ae8a7844b1345a33333916020918281602481875afa908115612a6f57600091612a83575b5080151580612a7b575b6129f7575b50505050565b60405163a9059cbb60e01b81526001600160a01b039290921660048301526024820152918190839060449082906000905af18015612a6f57612a3b575b80806129f1565b81813d8311612a68575b612a4f8183612201565b810103126103a157612a6090612305565b503880612a34565b503d612a45565b6040513d6000823e3d90fd5b5060016129ec565b908382813d8311612aa9575b612a998183612201565b81010312610334575051386129e2565b503d612a8f565b6040516370a0823160e01b81523060048201529291906020846024816001600160a01b0386165afa918215612a6f57600092612af4575b612af2939450612b2a565b565b91936020813d8211612b22575b81612b0e60209383612201565b810103126103875751929350839291612ae7565b3d9150612b01565b9180151580612bb4575b612b3d57505050565b60405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529160209183916044918391600091165af18015612a6f57612b805750565b6020813d8211612bac575b81612b9860209383612201565b810103126103a157612ba990612305565b50565b3d9150612b8b565b506001600160a01b0383161515612b34565b8181029291811591840414171561231f57565b519061ffff821682036103a157565b51906fffffffffffffffffffffffffffffffff821682036103a15756fea264697066735822122016534d47faa73e46d6c96a77ae74bba3fbc64a194fb7a655b06160ff0b87843d64736f6c63430008130033000000000000000000000000677a4cf9f9d0ec0dad50268667086926d143502700000000000000000000000000000000000000000000000000000000000000030000000000000000000000005df6dd0a53fda7ec70809b591905efe14fe5d1fe
Deployed Bytecode
0x608060408181526004918236101561001657600080fd5b60009260e08435811c92836301ffc9a714612107575082631261795d1461202e578263150b7a0214611e4c5782633ccfd60b14611cde5782633fd773e914611c995782634b91c03314611bbc5782635943409814611b325782635f5f62f914611af1578263692058c214611ac85782636c6603141461171b57826398bbc3c7146116f25782639e8c708e146115fd578263a7c1c38b14611276578263a8aa1b311461124d578263ac600a3c1461121d578263ae9bb69214611208578263c0406226146111e2578263c17d504b14610a70578263c52ac0bd14610a4d578263c6bc518214610a11578263ce05f8c7146109f2578263cfd454d314610767578263eef9203a1461059d57848363f3e414f8146103ae57508263f484bec2146101a85750508063f77c4791146101835763fb0ea8351461015257600080fd5b3461017f578160031936011261017f576020905173dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd38152f35b5080fd5b503461017f578160031936011261017f576001600160a01b0360209254169051908152f35b90929150346103aa573660031901126103a6576101c361215b565b916101cc612171565b926101d5612187565b93606435918260020b8093036103a157608435918260020b8093036103a15787925a9484549860ff8a60a01c161561039d576001600160a01b03809a16330361039d57875461039d578960025416938a8a5191610231836121bb565b16815260a43560208201528a8a5192610249846121bb565b16825260c435602083015289519a8b9663ba90a46960e01b885216898701526024860161028891602080916001600160a01b0381511684520151910152565b80516001600160a01b0316606486015260200151608485015260a484015260c4830152815a9360e492608095f193841561039357859461034a575b506102d2908483555a90612444565b90615208820180921161033757506102eb903a90612bc6565b928080808087335af16102fc61223f565b501561033457507fc207673734d386144a4d4247552812844f5d7005d9e3e8f7d80d674b16465fe6602080948351908152a151908152f35b80fd5b634e487b7160e01b855260119052602484fd5b9093506080813d821161038b575b8161036560809383612201565b81010312610387578061037f60206102d293519201612be8565b5093906102c3565b8480fd5b3d9150610358565b83513d87823e3d90fd5b8580fd5b600080fd5b8280fd5b8380fd5b8083863461059957806003193601126105995781356001600160a01b03808216809203610387576024359280516331a9108f60e11b8082527f0000000000000000000000000000000000000000000000000000000000000003878301526020918281602481887f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d1435027165afa90811561058f579085918a91610553575b5016330361054f5760ff885460a01c1661054f57825190815285878201528181602481885afa91821561054557889261050b575b5050823091160361039d57823b1561039d578051632142170760e11b81523086820190815233602082015260408101869052909190879083908190606001038183885af190811561050257509086916104ee575b505060015416146104e0575050f35b8154146104ea5750f35b5580f35b6104f7906121ed565b6103875784876104d1565b513d88823e3d90fd5b90809250813d831161053e575b6105228183612201565b8101031261053a576105339061226f565b888061047d565b8680fd5b503d610518565b83513d8a823e3d90fd5b8780fd5b809250848092503d8311610588575b61056c8183612201565b810103126105845761057e859161226f565b8b610449565b8880fd5b503d610562565b84513d8b823e3d90fd5b5050fd5b5083833461017f578060031936011261017f5782359267ffffffffffffffff84116103a657366023850112156103a65783810135936105db85612223565b946105e884519687612201565b80865236602482840101116103875760249291818692602095869301838a0137870101526106146121ac565b5a90855460ff8160a01c161561053a576001600160a01b0316330361039d5773dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd3803b1561053a5785516363adb18760e11b81527f000000000000000000000000000000000000000000000000000000000000000385820152606060248201528851606482018190529092885b8281106107535750928092818a6084828683998484819a8501015215156044830152601f801991011681010301925af1801561074957610735575b50506106dc905a90612444565b90615208820180921161033757506106f5903a90612bc6565b8380808084335af161070561223f565b50156103aa577fc207673734d386144a4d4247552812844f5d7005d9e3e8f7d80d674b16465fe69251908152a180f35b61073e906121ed565b6103875784866106cf565b86513d84823e3d90fd5b8a8101880151858201608401528701610694565b509050346103a657816003193601126103a65761078261215b565b9061078b612171565b5a85549360ff8560a01c161561053a576001600160a01b03809516330361053a57835480151580610976575b1561054f57878680600254169316928851976370a0823160e01b96878a5230898b01526020998a816024818a5afa90811561096c57859161093b575b508b5196610800886121bb565b87528a87015216958951908152308882015288816024818a5afa9081156109315783916108f5575b5091606094939161089861087d9860a4958d5191610845836121bb565b82528c8201528c51998a978896639f71e76160e01b88528d8801526024870190602080916001600160a01b0381511684520151910152565b80516001600160a01b03166064860152602001516084850152565b5af180156108eb576108b1575b6106dc91505a90612444565b6060823d82116108e3575b816108c960609383612201565b8101031261039d576108dd6106dc92612be8565b506108a5565b3d91506108bc565b85513d88823e3d90fd5b80935089809250959492953d831161092a575b6109128183612201565b810103126103a1579051919290918991906060610828565b503d610908565b8a513d85823e3d90fd5b8095508b8092503d8311610965575b6109548183612201565b810103126103a1578b9351386107f3565b503d61094a565b8c513d87823e3d90fd5b506024602087600154168951928380926331a9108f60e11b8252868b8301525afa9081156109e85789916109af575b50861630146107b7565b90506020813d82116109e0575b816109c960209383612201565b81010312610584576109da9061226f565b386109a5565b3d91506109bc565b88513d8b823e3d90fd5b509050346103a657826003193601126103a65760209250549051908152f35b5050503461017f578160031936011261017f57602090517f00000000000000000000000000000000000000000000000000000000000000038152f35b5050503461017f578160031936011261017f5760209060055460020b9051908152f35b509050346103a657602091826003193601126103aa57610a8e61219d565b73dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd380330361039d5781610e63575b5060ff9060ff60a01b865491151560a01b169060ff60a01b19161780865560a01c161580610e59575b610ae1578380f35b6001600160a01b039283600154169383549483516331a9108f60e11b9081815287878201528481602481865afa908115610e4f578991610e1a575b5083163014610b2e575b505050508380f35b600091848815159182610dad575b50501561017f57827f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d143502716917f000000000000000000000000000000000000000000000000000000000000000391865190815282888201528581602481875afa958615610da3578296610d67575b50506000610bed9198856002541686600354168a8a5195869485938493630c67cbcb60e01b85528401602090939291936001600160a01b0360408201951681520152565b03915afa908115610d5c57600091610d3b575b50823b156103a157610c2a92600092838851809681958294630bfc87c360e11b84528d84016123dd565b03925af18015610d3057610d1c575b5080600254168454813b1561053a578691602483928751948593849263a126d60160e01b84528b8401525af18015610d1257908691610cfe575b505060015416835491813b1561039d578351632142170760e11b8152308682019081526001600160a01b03909216602083015260408201939093529192918591849182908490829060600103925af1908115610cf55750908391610ce1575b50505538808080808080610b26565b610cea906121ed565b61017f578138610cd2565b513d85823e3d90fd5b610d07906121ed565b610387578438610c73565b84513d88823e3d90fd5b610d279195506121ed565b60009338610c39565b84513d6000823e3d90fd5b610d56913d8091833e610d4e8183612201565b810190612335565b38610c00565b86513d6000823e3d90fd5b9080929650813d8311610d9c575b610d7f8183612201565b81010312610387576000610d95610bed9261226f565b9591610ba9565b503d610d75565b87513d84823e3d90fd5b602492508751928380928682528c8c8301525afa908115610e10578391610ddb575b50831630148438610b3c565b90508481813d8311610e09575b610df28183612201565b810103126103a657610e039061226f565b38610dcf565b503d610de8565b86513d85823e3d90fd5b90508481813d8311610e48575b610e318183612201565b8101031261058457610e429061226f565b38610b1c565b503d610e27565b86513d8b823e3d90fd5b5081541515610ad9565b7f0000000000000000000000000000000000000000000000000000000000000003908351630178fe3f60e01b815282868201526024926080828581865afa918215610e4f579088918a936111b2575b508487518095819363b5f0f1b760e01b83528b8301525afa9182156111a8578892611169575b50876001600160a01b038093166001600160a01b03198181600254161760025587516398bbc3c760e01b81528a818b81865afa9081156110e9579086918591611131575b5016816001541617600155848451169060035416176003558387818b860151169401511693875163095ea7b360e01b90818152838b8201526000199081898201528c81604481898b5af18015611127576110f3575b508951918252838b830152878201528a81604481878a5af180156110e9576110b5575b5060015416803b156103a657604483928951948593849263a22cb46560e01b84528d84015260018a8401525af18015610e4f576110a2575b50845192878482816370a0823160e01b95868252308c8301525afa938415610e4f57908892918a95611071575b508651809481938252308a8301525afa908115611067578791611038575b506110259061102d92612312565b845490612312565b156103875738610ab0565b90508581813d8311611060575b61104f8183612201565b810103126103a1575161102d611017565b503d611045565b84513d89823e3d90fd5b8381949296503d831161109b575b6110898183612201565b810103126103a1578791519338610ff9565b503d61107f565b6110ae909891986121ed565b9638610fcc565b8a81813d83116110e2575b6110ca8183612201565b810103126103aa576110db90612305565b5038610f94565b503d6110c0565b89513d86823e3d90fd5b8c81813d8311611120575b6111088183612201565b8101031261039d5761111990612305565b5038610f71565b503d6110fe565b8b513d88823e3d90fd5b8092508c8092503d8311611162575b61114a8183612201565b810103126103aa5761115c869161226f565b38610f1c565b503d611140565b9091508681813d83116111a1575b6111818183612201565b8101031261054f57516001600160a01b038116810361054f579038610ed8565b503d611177565b85513d8a823e3d90fd5b6111d491935060803d81116111db575b6111cc8183612201565b810190612291565b9138610eb2565b503d6111c2565b5050503461017f578160031936011261017f5760ff6020925460a01c1690519015158152f35b84806003193601126103345734156103345780f35b5050503461017f578160031936011261017f5760209051733333b97138d4b086720b5ae8a7844b1345a333338152f35b5050503461017f578160031936011261017f576020906001600160a01b03600354169051908152f35b908385346103345760803660031901126103345761129261215b565b9261129b612187565b936064359586151587036103aa575a9184549760ff8960a01c161561039d576001600160a01b03809916330361039d5790889161152e575b1685519163ae9c5d0960e01b83527f000000000000000000000000000000000000000000000000000000000000000385840152602435602484015280836044818c7f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d1435027165afa928315611524578687889089928a948b968c9961149a575b5050611379936084969361136d899794611373946113c49b612b2a565b86612b2a565b83612b2a565b875190611385826121bb565b81528660209a8b95868401528060025416908a519b8c968795639d9d3a0d60e01b87528b870190602080916001600160a01b0381511684520151910152565b1660448401523060648401525af194851561149057839561145f575b506113ec905a90612444565b90615208820180921161144c5750611405903a90612bc6565b908080808085335af161141661223f565b50156103345750837fc207673734d386144a4d4247552812844f5d7005d9e3e8f7d80d674b16465fe6918351908152a151908152f35b634e487b7160e01b835260119052602482fd5b9094508581813d8311611489575b6114778183612201565b810103126103a65751936113ec6113e0565b503d61146d565b84513d85823e3d90fd5b96509750505050505082813d831161151d575b6114b78183612201565b810103126103875760846113c4916113796114d18561226f565b6020860151956113736114e58c830161226f565b606083015161136d6114f96080860161226f565b9260c060a0870151960151969b90929395969b945094979950509396819550611350565b503d6114ad565b87513d88823e3d90fd5b9082859160035416885192838092633850c7bd60e01b82525afa90811561152457908992918791611573575b5062ffffff19600554169062ffffff16176005556112d3565b80929350848092503d83116115f6575b61158d8183612201565b8101031261039d5780518981160361039d576115ab60208201612283565b906115b7888201612bd9565b506115c460608201612bd9565b506115d160808201612bd9565b5060a081015160ff81160361053a57906115ef60c08b949301612305565b508a61155a565b503d611583565b509050346103a65760203660031901126103a65761161961215b565b918051916331a9108f60e11b83527f0000000000000000000000000000000000000000000000000000000000000003908301526001600160a01b0391602081602481867f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d1435027165afa9182156116e9575084916116b0575b5016330361017f5760ff825460a01c1661017f576116ad9033612ab0565b80f35b90506020813d82116116e1575b816116ca60209383612201565b810103126103aa576116db9061226f565b3861168f565b3d91506116bd565b513d86823e3d90fd5b5050503461017f578160031936011261017f576020906001600160a01b03600154169051908152f35b509050346103a657816003193601126103a65761173661219d565b61173e6121ac565b5a91855460ff8160a01c161561053a576001600160a01b03809116330361053a578454879381151580611a48575b156105845788837f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d1435027167f0000000000000000000000000000000000000000000000000000000000000003938a51966331a9108f60e11b8852858b890152602088602481865afa978815611a3e578498611a03575b501561193e575050506117f4915083612451565b80600254168554813b15610387578491602483928a51948593849263a126d60160e01b84528c8401525af1801561193457908491611920575b505060015416845491813b156103aa578651632142170760e11b8152308782019081526001600160a01b03909216602083015260408201939093528391839182908490829060600103925af1801561191657611902575b508255611892905a90612444565b9061520882018092116118ef57506118ab903a90612bc6565b908280808085335af16118bc61223f565b50156103a6577fc207673734d386144a4d4247552812844f5d7005d9e3e8f7d80d674b16465fe69160209151908152a180f35b634e487b7160e01b845260119052602483fd5b61190c82916121ed565b6103345738611884565b85513d84823e3d90fd5b611929906121ed565b6103a657823861182d565b87513d86823e3d90fd5b6002546003548c51630c67cbcb60e01b81529088166001600160a01b03168c82019081526020810193909352939450849184918816908290819060400103915afa9182156109315783926119e7575b50803b156103a6576119b593838a8c5196879586948593630bfc87c360e11b855284016123dd565b03925af180156119dd576119ca575b506117f4565b6119d59193506121ed565b8591386119c4565b87513d8a823e3d90fd5b6119fc9192503d8085833e610d4e8183612201565b903861198d565b9097506020813d8211611a36575b81611a1e60209383612201565b810103126103aa57611a2f9061226f565b96386117e0565b3d9150611a11565b8c513d86823e3d90fd5b506024602084600154168a51928380926331a9108f60e11b8252878d8301525afa908115611abe578a91611a81575b508316301461176c565b90506020813d8211611ab6575b81611a9b60209383612201565b81010312611ab257611aac9061226f565b38611a77565b8980fd5b3d9150611a8e565b89513d8c823e3d90fd5b5050503461017f578160031936011261017f576020906001600160a01b03600254169051908152f35b843461033457602036600319011261033457611b0b61215b565b8154906001600160a01b039081831633036103aa5716906001600160a01b03191617815580f35b5083833461017f578160031936011261017f57805160208101916307983f4560e21b835260aa602483015260248252606082019082821067ffffffffffffffff831117611ba957525182918291908273dc2b0d2dd2b7759d97d50db4eabdc369731108305af1611ba061223f565b50156103345780f35b634e487b7160e01b855260418652602485fd5b509050346103a65760203660031901126103a657611bd861219d565b918051916331a9108f60e11b83527f0000000000000000000000000000000000000000000000000000000000000003908301526001600160a01b0391602081602481867f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d1435027165afa9182156116e957508491611c60575b5016330361017f576116ad9033612451565b90506020813d8211611c91575b81611c7a60209383612201565b810103126103aa57611c8b9061226f565b38611c4e565b3d9150611c6d565b5050503461017f578160031936011261017f57602090516001600160a01b037f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d1435027168152f35b848285346103a657826003193601126103a65780516331a9108f60e11b81527f00000000000000000000000000000000000000000000000000000000000000038382018190526001600160a01b0392916020816024817f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d143502788165afa908115611e42579084918791611e07575b501633036103875760ff855460a01c16610387578151630178fe3f60e01b81529384015260808360248173dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd35afa8015611dfd57611dd6938591611ddf575b50611dcd8360208301511633612ab0565b01511633612ab0565b6116ad3361299f565b611df7915060803d81116111db576111cc8183612201565b85611dbc565b81513d86823e3d90fd5b9150506020813d8211611e3a575b81611e2260209383612201565b8101031261039d57611e34849161226f565b87611d6a565b3d9150611e15565b83513d88823e3d90fd5b509050346103a65760803660031901126103a657611e6861215b565b50611e71612171565b9260643567ffffffffffffffff8082116103a657366023830112156103a657818401359081116103a657369101602401116103345782516331a9108f60e11b81527f00000000000000000000000000000000000000000000000000000000000000038382018190526020956001600160a01b039287816024817f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d143502788165afa80156120245784908690611fee575b81925016911614611f3a575b8451630a85bd0160e11b81528690f35b845190631ca84c6960e31b825284820152858160248173dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd35afa908115611fe4578391611faf575b50163314611f85575b8080611f2a565b60ff815460a01c161580611fa6575b15610334575060443590553880611f7e565b50815415611f94565b90508581813d8311611fdd575b611fc68183612201565b810103126103a657611fd79061226f565b38611f75565b503d611fbc565b85513d85823e3d90fd5b50508781813d831161201d575b6120058183612201565b810103126103875783612018819261226f565b611f1e565b503d611ffb565b87513d87823e3d90fd5b848285346103a657826003193601126103a6578051916331a9108f60e11b83527f0000000000000000000000000000000000000000000000000000000000000003908301526001600160a01b0391602081602481867f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d1435027165afa918215610cf5575083916120ce575b50163303610334578080808047335af1611ba061223f565b90506020813d82116120ff575b816120e860209383612201565b810103126103a6576120f99061226f565b836120b6565b3d91506120db565b859083346103a65760203660031901126103a6573563ffffffff60e01b81168091036103a65760209250630a85bd0160e11b811490811561214a575b5015158152f35b6301ffc9a760e01b14905083612143565b600435906001600160a01b03821682036103a157565b602435906001600160a01b03821682036103a157565b604435906001600160a01b03821682036103a157565b6004359081151582036103a157565b6024359081151582036103a157565b6040810190811067ffffffffffffffff8211176121d757604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff81116121d757604052565b90601f8019910116810190811067ffffffffffffffff8211176121d757604052565b67ffffffffffffffff81116121d757601f01601f191660200190565b3d1561226a573d9061225082612223565b9161225e6040519384612201565b82523d6000602084013e565b606090565b51906001600160a01b03821682036103a157565b51908160020b82036103a157565b908160809103126103a157604051906080820182811067ffffffffffffffff8211176121d75760405280516001600160a01b03811681036103a1576122fd9160609184526122e16020820161226f565b60208501526122f26040820161226f565b604085015201612283565b606082015290565b519081151582036103a157565b9190820180921161231f57565b634e487b7160e01b600052601160045260246000fd5b602080828403126103a157815167ffffffffffffffff928382116103a157019083601f830112156103a15781519283116121d75760409283519461237e838360051b0187612201565b818652828087019260061b850101938185116103a1578301915b8483106123a85750505050505090565b85838303126103a15783869182516123bf816121bb565b6123c88661226f565b81528286015183820152815201920191612398565b906060604092838101928152602091818584809401528651809552019401926000905b83821061240f57505050505090565b90919293948382826124376001948a51602080916001600160a01b0381511684520151910152565b0196019493920190612400565b9190820391821161231f57565b60049182549060009180151580612918575b156103a65760408051630178fe3f60e01b81527f00000000000000000000000000000000000000000000000000000000000000038782018190529192602491608081848173dc3f37ac18c5d5fc9928d70e2d5c00d055b99cd35afa9081156127a05787916128fa575b506001600160a01b03916020968387818a8601511694015116958751946370a0823160e01b938487528d30908801528a878981895afa9687156128f057908e98979695949392918d976128ac575b508a5198858a5230908a01528b8989818d5afa98891561285e57908f8c8f93849c612868575b5083929185946064928d9897600254169087600354169051998a96879563463c7ab360e11b8752860152840152600160448401525af192831561285e578d93612841575b507f000000000000000000000000677a4cf9f9d0ec0dad50268667086926d14350271690813b1561283d57918c918f93836125d3958e5196879586948593630bfc87c360e11b855284016123dd565b03925af1801561283357612820575b50156125f6575b5050505050505050505050565b865190808252308c83015288828681865afa918215612816579089918b936127e5575b50885195869182528d309083015281895afa9384156127db57908892918a956127aa575b50838111612714575b50505050818111612672575b505050505050612662915061299f565b38808080808080808080806125e9565b9186866126856126b6999a948896612444565b865163a9059cbb60e01b81526001600160a01b03909316948301948552602085015290978893849291839160400190565b03925af190811561270b57506126d1575b8080808695612652565b82813d8311612704575b6126e58183612201565b810103126103345750906126fb61266292612305565b509038806126c7565b503d6126db565b513d84823e3d90fd5b6127559361272191612444565b908a8a8d8a519687958694859363a9059cbb60e01b85528401602090939291936001600160a01b0360408201951681520152565b03925af180156127a05761276c575b858180612646565b8581813d8311612799575b6127818183612201565b8101031261053a5761279290612305565b5038612764565b503d612777565b85513d89823e3d90fd5b8381949296503d83116127d4575b6127c28183612201565b810103126103a157879151933861263d565b503d6127b8565b87513d8b823e3d90fd5b8281939294503d831161280f575b6127fd8183612201565b810103126103a1578890519138612619565b503d6127f3565b88513d8c823e3d90fd5b61282c909a919a6121ed565b98386125e2565b89513d8d823e3d90fd5b8c80fd5b6128579193508d3d8091833e610d4e8183612201565b9138612584565b8b513d8f823e3d90fd5b935050509192939495969798508b81813d83116128a5575b61288a8183612201565b8101031261283d575197969594939291908c908f8c8a612540565b503d612880565b8c8092999a5081939495969798503d83116128e9575b6128cc8183612201565b810103126128e557908d9796959493929151953861251a565b8b80fd5b503d6128c2565b8a513d8e823e3d90fd5b612912915060803d81116111db576111cc8183612201565b386124cc565b5060246001600160a01b0360208160015416604051938480926331a9108f60e11b8252878c8301525afa918215612994578592612959575b50163014612463565b9091506020813d821161298c575b8161297460209383612201565b81010312610387576129859061226f565b9038612950565b3d9150612967565b6040513d87823e3d90fd5b6040516370a0823160e01b8152306004820152733333b97138d4b086720b5ae8a7844b1345a33333916020918281602481875afa908115612a6f57600091612a83575b5080151580612a7b575b6129f7575b50505050565b60405163a9059cbb60e01b81526001600160a01b039290921660048301526024820152918190839060449082906000905af18015612a6f57612a3b575b80806129f1565b81813d8311612a68575b612a4f8183612201565b810103126103a157612a6090612305565b503880612a34565b503d612a45565b6040513d6000823e3d90fd5b5060016129ec565b908382813d8311612aa9575b612a998183612201565b81010312610334575051386129e2565b503d612a8f565b6040516370a0823160e01b81523060048201529291906020846024816001600160a01b0386165afa918215612a6f57600092612af4575b612af2939450612b2a565b565b91936020813d8211612b22575b81612b0e60209383612201565b810103126103875751929350839291612ae7565b3d9150612b01565b9180151580612bb4575b612b3d57505050565b60405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529160209183916044918391600091165af18015612a6f57612b805750565b6020813d8211612bac575b81612b9860209383612201565b810103126103a157612ba990612305565b50565b3d9150612b8b565b506001600160a01b0383161515612b34565b8181029291811591840414171561231f57565b519061ffff821682036103a157565b51906fffffffffffffffffffffffffffffffff821682036103a15756fea264697066735822122016534d47faa73e46d6c96a77ae74bba3fbc64a194fb7a655b06160ff0b87843d64736f6c63430008130033
Deployed Bytecode Sourcemap
14992:8351:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15586:42;14992:8351;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14992:8351:0;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;20698:9;;;14992:8351;;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;20749:10;:24;14992:8351;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;22035:38;;14992:8351;;;;;;;;:::i;:::-;;;;;;;22075:38;;14992:8351;;;;;;;;;22012:119;;14992:8351;22012:119;;;14992:8351;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;;;;;;;22012:119;;;14992:8351;22012:119;14992:8351;22012:119;;;;;;;;;;;14992:8351;;20811:13;14992:8351;;;;20815:9;20811:13;;:::i;:::-;14992:8351;20828:5;14992:8351;;;;;;;20837:11;20809:39;20837:11;;20809:39;;:::i;:::-;20749:10;;;;;;;20872:38;;;;:::i;:::-;;14992:8351;;;;20948:18;14992:8351;;;;;;;;20948:18;14992:8351;;;;;;;;;-1:-1:-1;;;14992:8351:0;;;;;;;;22012:119;;;;14992:8351;22012:119;;;;;;;;;14992:8351;22012:119;;;:::i;:::-;;;14992:8351;;;;;;;20811:13;14992:8351;;;;;:::i;:::-;;22012:119;;;;14992:8351;;;;22012:119;;;-1:-1:-1;22012:119:0;;;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;;;16874:23;;;16891:5;16874:23;;;14992:8351;;16874:8;;;14992:8351;16874:8;;;14992:8351;16874:23;;;;;;;;;;;;;;14992:8351;;;16860:10;:37;14992:8351;;;;;;;;;;;;20079:15;;;;;;;14992:8351;20079:15;;14992:8351;20079:15;;;;;;;;;;;;;14992:8351;20106:4;;;;14992:8351;;20079:32;14992:8351;;20123:51;;;;;14992:8351;;-1:-1:-1;;;20123:51:0;;20106:4;20123:51;;;14992:8351;;;16860:10;14992:8351;;;;;;;;;;;;;16860:10;;14992:8351;;;;;;20123:51;;;;;;;;;;;;;;;;;14992:8351;;;;;;20189:17;20185:120;;14992:8351;;;20185:120;14992:8351;;20227:16;20223:71;;14992:8351;;20223:71;14992:8351;20223:71;14992:8351;20123:51;;;;:::i;:::-;14992:8351;;20123:51;;;;;14992:8351;;;;;;;;20079:15;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;20079:15;;;;14992:8351;;;;20079:15;;;;;;14992:8351;;;;;;;;;;;;;16874:23;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;;:::i;:::-;16874:23;;;14992:8351;;;;16874:23;;;;;;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20698:9;14992:8351;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;20749:10;:24;14992:8351;;15586:42;21067:30;;;;;14992:8351;;-1:-1:-1;;;21067:30:0;;21079:5;21067:30;;;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21067:30;;;;;;;;;;;14992:8351;20815:9;;20811:13;20815:9;;20811:13;;:::i;:::-;14992:8351;20828:5;14992:8351;;;;;;;20837:11;20809:39;20837:11;;20809:39;;:::i;:::-;20749:10;;;;;;20872:38;;;;:::i;:::-;;14992:8351;;;20948:18;14992:8351;;;;;20948:18;14992:8351;;21067:30;;;;:::i;:::-;14992:8351;;21067:30;;;;;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;20698:9;14992:8351;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;20749:10;:24;14992:8351;;;;22277:15;;;:66;;;14992:8351;;;;;;;22355:3;14992:8351;;;;;;;;;;;22422:31;;;;22447:4;22422:31;;;14992:8351;;22422:31;;;14992:8351;22422:31;;;;;;;;;;;;;14992:8351;;;;;;;;:::i;:::-;;;22388:66;;;14992:8351;;;;;22490:31;;;22447:4;22490:31;;;14992:8351;22490:31;;14992:8351;22490:31;;;;;;;;;;;;;14992:8351;;;22355:169;14992:8351;;;;;;;;;;;;;;:::i;:::-;;;22456:66;;;14992:8351;;;;;;;;;;;22355:169;;;;;14992:8351;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;22355:169;;;;;;;;14992:8351;20811:13;20815:9;;;20811:13;;:::i;22355:169::-;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;20811:13;14992:8351;;:::i;:::-;;22355:169;;;;;-1:-1:-1;22355:169:0;;;14992:8351;;;;;;;;;22490:31;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;22490:31;;;;14992:8351;;;22355:169;22490:31;;;;;;;;14992:8351;;;;;;;;;22422:31;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;22422:31;;;;;;;;;14992:8351;;;;;;;;;22277:66;14992:8351;;;;22296:10;14992:8351;;;;;;;;;;;22296:30;;;;;;14992:8351;22296:30;;;;;;;;;;;22277:66;-1:-1:-1;14992:8351:0;;22338:4;22296:47;22277:66;;22296:30;;;14992:8351;22296:30;;;;;;;;;14992:8351;22296:30;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;22296:30;;;;;;-1:-1:-1;22296:30:0;;;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15783:42;14992:8351;;;;;;;;;;;;;;;;;;;;16182:36;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15586:42;17003:10;;:25;14992:8351;;17113:663;;;14992:8351;;;;-1:-1:-1;;;14992:8351:0;;;;;;;;;-1:-1:-1;;;14992:8351:0;;;;;;;;;17809:4;:23;;;14992:8351;17805:171;;14992:8351;;;17805:171;-1:-1:-1;;;;;14992:8351:0;;17853:10;14992:8351;;;;;;;;;;;17853:30;;;;;;;;14992:8351;17853:30;;14992:8351;17853:30;;;;;;;;;;;;;17805:171;-1:-1:-1;14992:8351:0;;17895:4;17853:47;17849:116;;17805:171;;;;;14992:8351;;;17849:116;14992:8351;22781:15;;;;;:66;;;;17849:116;14992:8351;;;;;22900:8;;14992:8351;22917:5;;14992:8351;;;22900:23;;;;;;;14992:8351;22900:23;;14992:8351;22900:23;;;;;;;;;;;;;17849:116;22934:252;;14992:8351;23083:42;22934:252;14992:8351;;23083:3;14992:8351;;;;;;;;;;;;;;;;;;;23083:42;;;;14992:8351;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;23083:42;;;;;;;;;;14992:8351;23083:42;;;17849:116;23140:34;;;;;;;14992:8351;;;;;;;;;;;;;;;23140:34;;;;;;:::i;:::-;;;;;;;;;;;17849:116;14992:8351;;23083:3;14992:8351;;;;23206:29;;;;;14992:8351;;;;;;;;;;;;;;;23206:29;;;;;14992:8351;23206:29;;;;;;;;;;;17849:116;14992:8351;;17853:10;14992:8351;;;;23246:61;;;;;;14992:8351;;-1:-1:-1;;;23246:61:0;;17895:4;23246:61;;;14992:8351;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23246:61;;;;;;;;;;;;;;;17849:116;14992:8351;;;17849:116;;;;;;;;;23246:61;;;;:::i;:::-;14992:8351;;23246:61;;;;;14992:8351;;;;;;;;23206:29;;;;:::i;:::-;14992:8351;;23206:29;;;;;14992:8351;;;;;;;;;23140:34;;;;;;:::i;:::-;14992:8351;23140:34;;;;;14992:8351;;;;;;;;;23083:42;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;14992:8351;;;;;;;;;22900:23;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;23083:42;14992:8351;;:::i;:::-;22900:23;;;;;;;;;;14992:8351;;;;;;;;;22781:66;14992:8351;;;;;22800:30;;;;;;;;;;;14992:8351;22800:30;;;;;;;;;;;22781:66;-1:-1:-1;14992:8351:0;;17895:4;22800:47;22781:66;;;;22800:30;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;22800:30;;;;;;;;;14992:8351;;;;;;;;;17853:30;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;17853:30;;;;;;;;;14992:8351;;;;;;;;;17809:23;14992:8351;;;17817:15;;17809:23;;17113:663;17178:5;14992:8351;;;;;;17167:17;;;;;;14992:8351;;17167:17;;;;;;;;;;;;;;;;;;;;17113:663;14992:8351;;;;;;;;;;;17205:16;;;;;14992:8351;17205:16;;;;;;;;;;;17113:663;14992:8351;;-1:-1:-1;;;;;14992:8351:0;;;-1:-1:-1;;;;;14992:8351:0;;;17199:22;14992:8351;;;17199:22;14992:8351;;;;;;17257:16;;;;;;;;;;;;;;;;;;;;;17113:663;14992:8351;;;17236:38;14992:8351;;;17236:38;14992:8351;;;;;;;;;;;;17340:8;;;;;;14992:8351;;17387:8;;14992:8351;;;;;;;;17450:36;;;;;;;;14992:8351;17468:17;;14992:8351;;;;;;17450:36;;14992:8351;17450:36;;;;;;;;;;;17113:663;14992:8351;;;17501:36;;;;;;;14992:8351;;;;;17501:36;;14992:8351;17501:36;;;;;;;;;;;17113:663;14992:8351;17236:38;14992:8351;;17552:37;;;;;14992:8351;;;;;;;;;;;;;17552:37;;;;;14992:8351;17236:38;14992:8351;;;;17552:37;;;;;;;;17113:663;14992:8351;;;;;;;;;;;17619:31;;;;17644:4;17619:31;;;14992:8351;17619:31;;;;;;;;;;;;;;;17113:663;14992:8351;;;17680:31;;;;;;17644:4;17680:31;;;14992:8351;17680:31;;;;;;;;;;;17113:663;17735:11;;;:24;:11;;:::i;:::-;14992:8351;;17735:24;;:::i;:::-;:28;14992:8351;;17113:663;;;17680:31;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;17735:24;17680:31;;;;;;;;14992:8351;;;;;;;;;17619:31;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;17619:31;;;;;;;;;17552:37;;;;;;;:::i;:::-;;;;;17501:36;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;;17501:36;;;;;;;;;14992:8351;;;;;;;;;17450:36;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;;17450:36;;;;;;;;;14992:8351;;;;;;;;;17257:16;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;;:::i;:::-;17257:16;;;;;;;;17205;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;17205:16;;;;;;;;;;14992:8351;;;;;;;;;17167:17;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19462:9;:13;14992:8351;;;;;;;;;;;;;;;;;;;;;;15681:42;14992:8351;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;14992:8351:0;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;20698:9;14992:8351;;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;20749:10;:24;14992:8351;;21247:68;;;;;14992:8351;;;;;;;;21474:37;;21495:5;21474:37;;;14992:8351;;;;;;;21474:8;;14992:8351;21474:8;;;14992:8351;21474:37;;;;;;;;14992:8351;;;;;;;;;;21474:37;;;14992:8351;21541:4;;21611;21541;14992:8351;21541:4;;;;;;21576;21541;14992:8351;21541:4;;:::i;:::-;21576;;:::i;:::-;21611;;:::i;:::-;14992:8351;;;;;;:::i;:::-;;;;;21657:34;;;;;;14992:8351;;21709:3;14992:8351;;;;;;;;;;;;;21709:39;;;;;14992:8351;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;;;;21742:4;14992:8351;;;;21709:39;;;;;;;;;;;14992:8351;20815:9;20811:13;20815:9;;20811:13;;:::i;:::-;14992:8351;20828:5;14992:8351;;;;;;;20837:11;20809:39;20837:11;;20809:39;;:::i;:::-;20749:10;;;;;;;20872:38;;;;:::i;:::-;;14992:8351;;;;;20948:18;14992:8351;;;;;;20948:18;14992:8351;;;;;;-1:-1:-1;;;14992:8351:0;;;;;;;;21709:39;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;20811:13;21709:39;;;;;;;;14992:8351;;;;;;;;;21474:37;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;21611:4;14992:8351;;;:::i;:::-;;;;;;21576:4;14992:8351;;;;;:::i;:::-;;;;;21541:4;14992:8351;;;;;:::i;:::-;;;;;;;;;;21474:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;14992:8351;;;;;;;;;21247:68;14992:8351;;;;;;;;;;;;;;;;21291:12;;;;;;;;;14992:8351;;;;;21291:12;;;21247:68;14992:8351;;;21271:32;14992:8351;;;;;;21271:32;14992:8351;21247:68;;21291:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21291:12;;;;;;;;14992:8351;;;;;;;;;-1:-1:-1;;14992:8351:0;;;;;;:::i;:::-;;;;;;;;16874:23;;16891:5;16874:23;;;14992:8351;-1:-1:-1;;;;;16874:8:0;14992:8351;16874:8;14992:8351;16874:8;;;14992:8351;16874:23;;;;;;;;;;;;14992:8351;;;16860:10;:37;14992:8351;;;;;;;;;;20432:5;16860:10;;20432:5;:::i;:::-;14992:8351;;16874:23;;;14992:8351;16874:23;;;;;;;;;14992:8351;16874:23;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;16874:23;;;;;;-1:-1:-1;16874:23:0;;;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16019:37:0;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;20698:9;14992:8351;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;20749:10;:24;14992:8351;;;;;22781:15;;;;:66;;;14992:8351;;;;22900:8;;;14992:8351;22917:5;14992:8351;;;;;;;22900:23;;;;;;14992:8351;22900:23;;14992:8351;22900:23;;;;;;;;;;;;;14992:8351;-1:-1:-1;22934:252:0;;;22993:12;;;;;;;;:::i;:::-;14992:8351;23206:3;14992:8351;;;;23206:29;;;;;14992:8351;;;;;;;;;;;;;;;23206:29;;;;;14992:8351;23206:29;;;;;;;;;;;22934:252;14992:8351;;23246:10;14992:8351;;;;23246:61;;;;;;14992:8351;;-1:-1:-1;;;23246:61:0;;23282:4;23246:61;;;14992:8351;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;;;;;;;;;;;;;23246:61;;;;;;;;;;22934:252;-1:-1:-1;14992:8351:0;;20811:13;;20815:9;20811:13;;:::i;:::-;14992:8351;20828:5;14992:8351;;;;;;;20837:11;20809:39;20837:11;;20809:39;;:::i;:::-;20749:10;;;;;;;20872:38;;;;:::i;:::-;;14992:8351;;;20948:18;14992:8351;22900:23;14992:8351;;;;;20948:18;14992:8351;;;-1:-1:-1;;;14992:8351:0;;;;;;;;23246:61;;;;;:::i;:::-;14992:8351;;23246:61;;;;14992:8351;;;;;;;;;23206:29;;;;:::i;:::-;14992:8351;;23206:29;;;;;14992:8351;;;;;;;;;22934:252;23083:3;14992:8351;;;;;-1:-1:-1;;;23083:42:0;;14992:8351;;;-1:-1:-1;;;;;14992:8351:0;23083:42;;;14992:8351;;;;;;;;;;;;-1:-1:-1;14992:8351:0;;;;;;;;;;;;;23083:42;;;;;;;;;;;;;22934:252;23140:34;;;;;;;14992:8351;;;;;;;;;;;;;;;23140:34;;;;;:::i;:::-;;;;;;;;;;;22934:252;;;;23140:34;;;;;;:::i;:::-;14992:8351;23140:34;;;;;14992:8351;;;;;;;;;23083:42;;;;;;;;;;;;;;:::i;:::-;;;;;22900:23;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;22900:23;;;;;;;-1:-1:-1;22900:23:0;;;14992:8351;;;;;;;;;22781:66;14992:8351;;22800:30;14992:8351;22800:10;14992:8351;;;;;;;;;;;22800:30;;;;;;14992:8351;22800:30;;;;;;;;;;;22781:66;-1:-1:-1;14992:8351:0;;22842:4;22800:47;22781:66;;22800:30;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;22800:30;;;14992:8351;;;;22800:30;;;-1:-1:-1;22800:30:0;;;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16063:30:0;14992:8351;;;;;;;;;;;;;;;-1:-1:-1;;14992:8351:0;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14992:8351:0;;;;20529:10;:24;14992:8351;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;;;;;;;;;;;15210:53;;;;;;;;;15259:3;15210:53;;;14992:8351;15210:53;;;14992:8351;;;;;;;;;;;;;;15153:111;14992:8351;;;;15153:111;14992:8351;15161:42;15153:111;;;;:::i;:::-;;14992:8351;;;;;;-1:-1:-1;;;14992:8351:0;;;;;15210:53;14992:8351;;;;;;;;;;;-1:-1:-1;;14992:8351:0;;;;;;:::i;:::-;;;;;;;;16874:23;;16891:5;16874:23;;;14992:8351;-1:-1:-1;;;;;16874:8:0;14992:8351;16874:8;14992:8351;16874:8;;;14992:8351;16874:23;;;;;;;;;;;;14992:8351;;;16860:10;:37;14992:8351;;18443:12;16860:10;;18443:12;:::i;16874:23::-;;;14992:8351;16874:23;;;;;;;;;14992:8351;16874:23;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;16874:23;;;;;;-1:-1:-1;16874:23:0;;14992:8351;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15730:45:0;14992:8351;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16874:23:0;;16891:5;16874:23;;;14992:8351;;;-1:-1:-1;;;;;14992:8351:0;;16874:23;14992:8351;;;16874:8;14992:8351;;16874:23;;;;;;;;;;;;;;14992:8351;;;16860:10;:37;14992:8351;;;;;;;;;;;;-1:-1:-1;;;19789:17:0;;;;;14992:8351;19789:17;14992:8351;;;15586:42;19789:17;;;;;;19887:16;19789:17;;;;;14992:8351;19845:8;19838:16;19845:8;16874:23;19845:8;;14992:8351;;16860:10;19838:16;:::i;:::-;19894:8;14992:8351;;16860:10;19887:16;:::i;:::-;19936:14;16860:10;19936:14;:::i;19789:17::-;;;;;;;;;;;;;;:::i;:::-;;;;;14992:8351;;;;;;;;;16874:23;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;;:::i;:::-;16874:23;;;;;;-1:-1:-1;16874:23:0;;;14992:8351;;;;;;;;;;;;;;;;;;-1:-1:-1;;14992:8351:0;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16547:23:0;;16564:5;16547:23;;;14992:8351;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;16547:8;14992:8351;;16547:23;;;;;;;;;;;;14992:8351;;;;;;;16538:32;16534:211;;14992:8351;;;-1:-1:-1;;;14992:8351:0;;;;;16534:211;14992:8351;;;;;;16605:20;;;;;14992:8351;16605:20;;14992:8351;16605:20;15586:42;16605:20;;;;;;;;;;;16534:211;14992:8351;;16591:10;:34;16587:147;;16534:211;;;;;16587:147;14992:8351;;;;;;16654:4;:23;;;16587:147;14992:8351;;;;;;;;16587:147;;;;16654:23;14992:8351;;;16662:15;16654:23;;16605:20;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;16605:20;;;;;;;;;14992:8351;;;;;;;;;16547:23;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;;;:::i;:::-;16547:23;;;;;;;;14992:8351;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16874:23;;16891:5;16874:23;;;14992:8351;-1:-1:-1;;;;;16874:8:0;:23;:8;14992:8351;16874:8;;;14992:8351;16874:23;;;;;;;;;;;;14992:8351;;;16860:10;:37;14992:8351;;19560:21;;;;;16860:10;19605:40;;;;:::i;16874:23::-;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;16874:23;;;;;;-1:-1:-1;16874:23:0;;14992:8351;;;;;;;;;-1:-1:-1;;14992:8351:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;15424:48:0;;;:92;;;;14992:8351;;;;;;;15424:92;-1:-1:-1;;;15476:40:0;;-1:-1:-1;15424:92:0;;;14992:8351;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;14992:8351:0;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;14992:8351:0;;;;:::o;:::-;;;:::o;:::-;;;-1:-1:-1;;;;;14992:8351:0;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18470:928::-;18558:10;14992:8351;;;;-1:-1:-1;18558:15:0;;;;:66;;;18470:928;14992:8351;;;;;;-1:-1:-1;;;18667:17:0;;18678:5;18667:17;;;14992:8351;;;;;;;18667:17;14992:8351;;;15586:42;18667:17;;;;;;;;;;;18470:928;14992:8351;-1:-1:-1;;;;;14992:8351:0;;18728:8;;;;;;;14992:8351;;18771:8;;14992:8351;;;;;;;;;18806:31;;;;18831:4;;18806:31;;;14992:8351;18806:31;;;;;;;;;;;;;;;;;;;;;;;;;;18470:928;14992:8351;;;18863:31;;;;18831:4;18863:31;;;14992:8351;18863:31;;;;;;;;;;;;;;;;;;;;;18470:928;14992:8351;;;;;;;;;;;18940:3;14992:8351;;;;18977:4;14992:8351;;;;;;;;;;;;18940:49;;;;14992:8351;;;;18984:4;14992:8351;;;;18940:49;;;;;;;;;;;18470:928;19000:8;;14992:8351;19000:34;;;;;;14992:8351;;;;;;19000:34;14992:8351;;;;;;;;;;;;;19000:34;;;;;:::i;:::-;;;;;;;;;;;18470:928;19059:13;;19055:336;;18470:928;;;;;;;;;;;;:::o;19055:336::-;14992:8351;;19106:31;;;;18831:4;19106:31;;;14992:8351;19106:31;;;;;;;;;;;;;;;;;;;19055:336;14992:8351;;;19169:31;;;;;18831:4;;19169:31;;;14992:8351;19169:31;;;;;;;;;;;;;;;;;19055:336;19219:13;;;;19215:53;;19055:336;19287:13;;;;;;;19283:53;;19055:336;19364:14;;;;;;;;;;:::i;:::-;19055:336;;;;;;;;;;;;;19283:53;19322:13;;;;19302:34;19322:13;;;;;;:::i;:::-;14992:8351;;-1:-1:-1;;;19302:34:0;;-1:-1:-1;;;;;14992:8351:0;;;19302:34;;;14992:8351;;;;;;;;;;;;;-1:-1:-1;14992:8351:0;;;;;;19302:34;;;;;;;;;;;;;19283:53;;;;;;;;19302:34;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;19364:14;14992:8351;;:::i;:::-;;19302:34;;;;;;;;;;;14992:8351;;;;;;;;19215:53;19234:34;19254:13;;;;:::i;:::-;14992:8351;;;;;;;;;;;;;;;;19234:34;;;;14992:8351;;;;;;-1:-1:-1;;;;;14992:8351:0;;;;;;;;;;19234:34;;;;;;;;;;;19215:53;;;;;;19234:34;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;;19234:34;;;;;;;;;14992:8351;;;;;;;;;19169:31;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;19169:31;;;;;;;;;;14992:8351;;;;;;;;;19106:31;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;19106:31;;;;;;;;;;14992:8351;;;;;;;;;19000:34;;;;;;;:::i;:::-;;;;;;14992:8351;;;;;;;;;19000:34;14992:8351;;;18940:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;14992:8351;;;;;;;;;18863:31;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;;;;;;;;;;;;18863:31;;;;;;;18806;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;;;;;;;;18806:31;;;;14992:8351;;;;18806:31;;;;;;14992:8351;;;;;;;;;18667:17;;;;;;;;;;;;;;:::i;:::-;;;;18558:66;14992:8351;;-1:-1:-1;;;;;18577:30:0;14992:8351;18577:10;14992:8351;;;;;;;;;;;18577:30;;;;;;14992:8351;18577:30;;;;;;;;;;;18558:66;-1:-1:-1;14992:8351:0;18619:4;18577:47;18558:66;;18577:30;;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;18577:30;;;;;;;-1:-1:-1;18577:30:0;;;14992:8351;;;;;;;;;17994:156;14992:8351;;-1:-1:-1;;;18072:30:0;;18096:4;18072:30;;;14992:8351;;;18072:30;;;14992:8351;;;;18072:30;;;;;;;-1:-1:-1;18072:30:0;;;17994:156;18241:10;;;;:42;;;17994:156;18237:74;;17994:156;;;;;:::o;18237:74::-;14992:8351;;-1:-1:-1;;;18285:26:0;;-1:-1:-1;;;;;14992:8351:0;;;;18072:30;18285:26;;14992:8351;;;;;;;;;;;;;;-1:-1:-1;;18285:26:0;;;;;;;;18237:74;;;;;18285:26;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;;18285:26;;;;;;;;;;14992:8351;;;-1:-1:-1;14992:8351:0;;;;;18241:42;;18255:28;18241:42;;18072:30;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;18072:30;;;;;;;;17994:156;14992:8351;;-1:-1:-1;;;18072:30:0;;18096:4;18072:30;;;14992:8351;;17994:156;;18072:30;14992:8351;;;-1:-1:-1;;;;;14992:8351:0;;18072:30;;;;;;;-1:-1:-1;18072:30:0;;;17994:156;18138:3;;;;;:::i;:::-;17994:156::o;18072:30::-;;;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;-1:-1:-1;14992:8351:0;;;18072:30;;;;;-1:-1:-1;18072:30:0;;18156:163;;18241:10;;;:42;;;18156:163;18237:74;;18156:163;;;:::o;18237:74::-;14992:8351;;-1:-1:-1;;;18285:26:0;;-1:-1:-1;;;;;14992:8351:0;;;18285:26;;;14992:8351;;;;;;;;;18285:26;;14992:8351;;;;;;-1:-1:-1;;14992:8351:0;18285:26;;;;;;;;18156:163;:::o;18285:26::-;;;;;;;;;;;;;;;:::i;:::-;;;14992:8351;;;;;;;:::i;:::-;;18156:163::o;18285:26::-;;;-1:-1:-1;18285:26:0;;18241:42;14992:8351;-1:-1:-1;;;;;14992:8351:0;;18255:28;;18241:42;;14992:8351;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o
Swarm Source
ipfs://16534d47faa73e46d6c96a77ae74bba3fbc64a194fb7a655b06160ff0b87843d
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.