Source Code
Latest 25 from a total of 10,037 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Swap Compact | 30921810 | 2 hrs ago | IN | 0 FRAX | 0.00001794 | ||||
| Swap Compact | 30921777 | 2 hrs ago | IN | 0 FRAX | 0.00000721 | ||||
| Swap Compact | 30919623 | 3 hrs ago | IN | 0 FRAX | 0.00002621 | ||||
| Swap Compact | 30919591 | 3 hrs ago | IN | 0 FRAX | 0.00002262 | ||||
| Swap Compact | 30916848 | 5 hrs ago | IN | 0 FRAX | 0.00001511 | ||||
| Swap Compact | 30915945 | 5 hrs ago | IN | 0 FRAX | 0.00000976 | ||||
| Swap Compact | 30915447 | 6 hrs ago | IN | 0 FRAX | 0.0000133 | ||||
| Swap Compact | 30913714 | 7 hrs ago | IN | 0 FRAX | 0.00001408 | ||||
| Swap Compact | 30913692 | 7 hrs ago | IN | 0 FRAX | 0.00002386 | ||||
| Swap Multi Compa... | 30911978 | 7 hrs ago | IN | 0 FRAX | 0.00000878 | ||||
| Swap Multi Compa... | 30910489 | 8 hrs ago | IN | 0 FRAX | 0.00000741 | ||||
| Swap Compact | 30903782 | 12 hrs ago | IN | 0 FRAX | 0.00001414 | ||||
| Swap Compact | 30903769 | 12 hrs ago | IN | 0 FRAX | 0.00001961 | ||||
| Swap Compact | 30900711 | 14 hrs ago | IN | 0 FRAX | 0.00001108 | ||||
| Swap Compact | 30898894 | 15 hrs ago | IN | 0 FRAX | 0.00001054 | ||||
| Swap Compact | 30898811 | 15 hrs ago | IN | 0 FRAX | 0.00000607 | ||||
| Swap Compact | 30898356 | 15 hrs ago | IN | 0 FRAX | 0.00000548 | ||||
| Swap Compact | 30895291 | 17 hrs ago | IN | 0 FRAX | 0.00000634 | ||||
| Swap Compact | 30895285 | 17 hrs ago | IN | 0 FRAX | 0.00002017 | ||||
| Swap Compact | 30895273 | 17 hrs ago | IN | 0 FRAX | 0.00000984 | ||||
| Swap Compact | 30895270 | 17 hrs ago | IN | 0 FRAX | 0.00000983 | ||||
| Swap Compact | 30895266 | 17 hrs ago | IN | 0 FRAX | 0.00001061 | ||||
| Swap Compact | 30894420 | 17 hrs ago | IN | 0 FRAX | 0.00001423 | ||||
| Swap Compact | 30894417 | 17 hrs ago | IN | 0 FRAX | 0.00001423 | ||||
| Swap Compact | 30894385 | 17 hrs ago | IN | 0 FRAX | 0.00001243 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 30925993 | 12 mins ago | 0.01488659 FRAX | ||||
| 30925993 | 12 mins ago | 0.01488659 FRAX | ||||
| 30925833 | 17 mins ago | 1,237.77858227 FRAX | ||||
| 30925833 | 17 mins ago | 1,237.7904646 FRAX | ||||
| 30925573 | 26 mins ago | 1,004.6541478 FRAX | ||||
| 30925573 | 26 mins ago | 1,004.66519798 FRAX | ||||
| 30925388 | 32 mins ago | 1,231.12371589 FRAX | ||||
| 30925388 | 32 mins ago | 1,231.13083244 FRAX | ||||
| 30925248 | 37 mins ago | 1,001.02640797 FRAX | ||||
| 30925248 | 37 mins ago | 1,001.02640797 FRAX | ||||
| 30924963 | 46 mins ago | 1,230.87521654 FRAX | ||||
| 30924963 | 46 mins ago | 1,230.87521654 FRAX | ||||
| 30921810 | 2 hrs ago | 2,398.8542246 FRAX | ||||
| 30921810 | 2 hrs ago | 2,402.46982722 FRAX | ||||
| 30921777 | 2 hrs ago | 2,406.7017574 FRAX | ||||
| 30921777 | 2 hrs ago | 2,410.31723325 FRAX | ||||
| 30919623 | 3 hrs ago | 2,365.78810766 FRAX | ||||
| 30919623 | 3 hrs ago | 2,369.34212084 FRAX | ||||
| 30919591 | 3 hrs ago | 2,374.32611101 FRAX | ||||
| 30919591 | 3 hrs ago | 2,377.89465302 FRAX | ||||
| 30913714 | 7 hrs ago | 2,410.99371734 FRAX | ||||
| 30913714 | 7 hrs ago | 2,414.6156408 FRAX | ||||
| 30913692 | 7 hrs ago | 4,560.68953018 FRAX | ||||
| 30913692 | 7 hrs ago | 4,567.54084144 FRAX | ||||
| 30907615 | 10 hrs ago | 0.74 FRAX |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
OdosRouterV3
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 1000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
import "../interfaces/IOdosRouterV3.sol";
import "../interfaces/IOdosExecutor.sol";
import "../interfaces/IOdosHook.sol";
import "../interfaces/ISignatureTransfer.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/access/Ownable2Step.sol";
/// @title V3 Routing contract for Odos SOR
/// @author Transaction Assembly
/// @notice Wrapper with security gaurentees around execution of arbitrary operations on user tokens
contract OdosRouterV3 is IOdosRouterV3, Ownable2Step {
using SafeERC20 for IERC20;
/// @dev The zero address is uniquely used to represent eth since it is already
/// recognized as an invalid ERC20, and due to its gas efficiency
address constant _ETH = address(0);
/// @dev Address list where addresses can be cached for use when reading from storage is cheaper
// than reading from calldata. addressListStart is the storage slot of the first dynamic array element
uint256 private constant addressListStart =
29102676481673041902632991033461445430619272659676223336789171408008386403022;
address[] public addressList;
/// @dev Address which can access and liquidate funds held in the router
address public liquidatorAddress;
// @dev constant for the fee precision
uint256 public constant FEE_DENOM = 1e18;
constructor(address owner) Ownable(owner) { }
/// @dev Must exist in order for contract to receive eth
receive() external payable { }
/// @notice Custom decoder to swap with compact calldata for efficient execution on L2s
function swapCompact()
external
payable
returns (uint256)
{
swapTokenInfo memory tokenInfo;
swapReferralInfo memory referralInfo;
address executor;
bytes calldata pathDefinition;
{
assembly {
// Define function to load in token address, either from calldata or from storage
function getAddress(currPos) -> result, newPos {
let inputPos := shr(240, calldataload(currPos))
switch inputPos
// Reserve the null address as a special case that can be specified with 2 null bytes
case 0x0000 {
newPos := add(currPos, 2)
}
// This case means that the address is encoded in the calldata directly following the code
case 0x0001 {
result := and(shr(80, calldataload(currPos)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
newPos := add(currPos, 22)
}
// Otherwise we use the case to load in from the cached address list
default {
result := sload(add(addressListStart, sub(inputPos, 2)))
newPos := add(currPos, 2)
}
}
let result := 0
let pos := 4
// Load in the input and output token addresses
result, pos := getAddress(pos)
mstore(tokenInfo, result)
result, pos := getAddress(pos)
mstore(add(tokenInfo, 0x60), result)
// Load in the input amount - a 0 byte means the full balance is to be used
let inputAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
if inputAmountLength {
mstore(add(tokenInfo, 0x20), shr(mul(sub(32, inputAmountLength), 8), calldataload(pos)))
pos := add(pos, inputAmountLength)
}
// Load in the quoted output amount
let quoteAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
let outputQuote := shr(mul(sub(32, quoteAmountLength), 8), calldataload(pos))
mstore(add(tokenInfo, 0x80), outputQuote)
pos := add(pos, quoteAmountLength)
// Load the slippage tolerance and use to get the minimum output amount
{
let slippageTolerance := shr(232, calldataload(pos))
mstore(add(tokenInfo, 0xA0), div(mul(outputQuote, sub(0xFFFFFF, slippageTolerance)), 0xFFFFFF))
}
pos := add(pos, 3)
// Load in the executor address
executor, pos := getAddress(pos)
// Load in the destination to send the input to - Zero denotes the executor
result, pos := getAddress(pos)
if eq(result, 0) { result := executor }
mstore(add(tokenInfo, 0x40), result)
// Load in the destination to send the output to - Zero denotes msg.sender
result, pos := getAddress(pos)
mstore(add(tokenInfo, 0xC0), result)
let referralCode := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(referralInfo, referralCode)
let feeStatus := shr(248, calldataload(pos))
pos := add(pos, 1)
if feeStatus {
let referralFee := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(add(referralInfo, 0x20), referralFee)
let referralBeneficiary := shr(96, calldataload(pos))
pos := add(pos, 20)
mstore(add(referralInfo, 0x40), referralBeneficiary)
}
// Set the offset and size for the pathDefinition portion of the msg.data
pathDefinition.length := mul(shr(248, calldataload(pos)), 32)
pathDefinition.offset := add(pos, 1)
}
}
return _swapApproval(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swap(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
payable
returns (uint256 amountOut)
{
return _swapApproval(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens with a call at the end
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapWithHook(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
payable
returns (uint256 amountOut)
{
amountOut = _swapApproval(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
uint256[] memory hookAmountsIn = new uint256[](1);
hookAmountsIn[0] = amountOut;
IOdosHook(hookTarget).executeOdosHook(
hookData,
hookAmountsIn,
msg.sender
);
}
/// @notice Internal function for initiating approval transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapApproval(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256 amountOut)
{
if (tokenInfo.inputToken == _ETH) {
// Support rebasing tokens by allowing the user to trade the entire balance
if (tokenInfo.inputAmount == 0) {
tokenInfo.inputAmount = msg.value;
} else {
require(msg.value == tokenInfo.inputAmount, "Wrong msg.value");
}
}
else {
require(msg.value == 0, "Wrong msg.value");
// Support rebasing tokens by allowing the user to trade the entire balance
if (tokenInfo.inputAmount == 0) {
tokenInfo.inputAmount = IERC20(tokenInfo.inputToken).balanceOf(msg.sender);
}
IERC20(tokenInfo.inputToken).safeTransferFrom(
msg.sender,
tokenInfo.inputReceiver,
tokenInfo.inputAmount
);
}
return _swap(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens
/// @param permit2 All additional info for Permit2 transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swapPermit2(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
returns (uint256 amountOut)
{
return _swapPermit2(
permit2,
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping two tokens
/// @param permit2 All additional info for Permit2 transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapPermit2WithHook(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
returns (uint256 amountOut)
{
amountOut = _swapPermit2(
permit2,
tokenInfo,
pathDefinition,
executor,
referralInfo
);
uint256[] memory hookAmountsIn = new uint256[](1);
hookAmountsIn[0] = amountOut;
IOdosHook(hookTarget).executeOdosHook(
hookData,
hookAmountsIn,
msg.sender
);
}
/// @notice Internal function for using permit2 before a swap
/// @param permit2 All additional info for Permit2 transfers
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapPermit2(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256 amountOut)
{
ISignatureTransfer(permit2.contractAddress).permitTransferFrom(
ISignatureTransfer.PermitTransferFrom(
ISignatureTransfer.TokenPermissions(
tokenInfo.inputToken,
tokenInfo.inputAmount
),
permit2.nonce,
permit2.deadline
),
ISignatureTransfer.SignatureTransferDetails(
tokenInfo.inputReceiver,
tokenInfo.inputAmount
),
msg.sender,
permit2.signature
);
return _swap(
tokenInfo,
pathDefinition,
executor,
referralInfo
);
}
/// @notice contains the main logic for swapping one token for another
/// Assumes input tokens have already been sent to their destinations and
/// that msg.value is set to expected ETH input value, or 0 for ERC20 input
/// @param tokenInfo All information about the tokens being swapped
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swap(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256 amountOut)
{
// Check for valid output specifications
require(tokenInfo.outputMin <= tokenInfo.outputQuote, "Minimum greater than quote");
require(tokenInfo.outputMin > 0, "Minimum output is zero");
require(tokenInfo.inputToken != tokenInfo.outputToken, "Arbitrage not supported");
uint256 balanceBefore = _universalBalance(tokenInfo.outputToken);
// Delegate the execution of the path to the specified Odos Executor
uint256[] memory amountsIn = new uint256[](1);
amountsIn[0] = tokenInfo.inputAmount;
IOdosExecutor(executor).executePath{value: msg.value}(pathDefinition, amountsIn, msg.sender);
amountOut = _universalBalance(tokenInfo.outputToken) - balanceBefore;
if (referralInfo.fee > 0) {
require(referralInfo.feeRecipient != address(0), "Null fee recipient");
require(referralInfo.fee <= FEE_DENOM / 50, "Fee too high");
uint256 splitBPS = (referralInfo.code >> 32) & 65535;
if (splitBPS == 0) splitBPS = 8000;
require(splitBPS <= 10000, "Invalid Ref Code");
if (referralInfo.feeRecipient != address(this)) {
_universalTransfer(
tokenInfo.outputToken,
referralInfo.feeRecipient,
amountOut * referralInfo.fee * splitBPS / (FEE_DENOM * 10000)
);
}
amountOut = amountOut * (FEE_DENOM - referralInfo.fee) / FEE_DENOM;
}
int256 slippage = int256(amountOut) - int256(tokenInfo.outputQuote);
if (slippage > 0 && (referralInfo.code >> 48) & 1 == 0) {
amountOut = tokenInfo.outputQuote;
}
require(amountOut >= tokenInfo.outputMin, "Slippage Limit Exceeded");
// Transfer out the final output to the end user
_universalTransfer(
tokenInfo.outputToken,
tokenInfo.outputReceiver == address(0) ? msg.sender : tokenInfo.outputReceiver,
amountOut
);
emit Swap(
msg.sender,
tokenInfo.inputAmount,
tokenInfo.inputToken,
amountOut,
tokenInfo.outputToken,
slippage,
referralInfo.code,
referralInfo.fee,
referralInfo.feeRecipient
);
}
/// @notice Custom decoder to swapMulti with compact calldata for efficient execution on L2s
function swapMultiCompact()
external
payable
returns (uint256[] memory amountsOut)
{
address executor;
inputTokenInfo[] memory inputs;
outputTokenInfo[] memory outputs;
uint256 pos = 6;
{
uint256 numInputs;
uint256 numOutputs;
assembly {
numInputs := shr(248, calldataload(4))
numOutputs := shr(248, calldataload(5))
}
inputs = new inputTokenInfo[](numInputs);
outputs = new outputTokenInfo[](numOutputs);
assembly {
// Define function to load in token address, either from calldata or from storage
function getAddress(currPos) -> result, newPos {
let inputPos := shr(240, calldataload(currPos))
switch inputPos
// Reserve the null address as a special case that can be specified with 2 null bytes
case 0x0000 {
newPos := add(currPos, 2)
}
// This case means that the address is encoded in the calldata directly following the code
case 0x0001 {
result := and(shr(80, calldataload(currPos)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
newPos := add(currPos, 22)
}
// Otherwise we use the case to load in from the cached address list
default {
result := sload(add(addressListStart, sub(inputPos, 2)))
newPos := add(currPos, 2)
}
}
executor, pos := getAddress(pos)
let slippageTolerance := shr(232, calldataload(pos))
pos := add(pos, 3)
let result := 0
let memPos := 0
for { let element := 0 } lt(element, numInputs) { element := add(element, 1) }
{
memPos := mload(add(inputs, add(mul(element, 0x20), 0x20)))
// Load in the token address
result, pos := getAddress(pos)
mstore(memPos, result)
// Load in the input amount - a 0 byte means the full balance is to be used
let inputAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
if inputAmountLength {
mstore(add(memPos, 0x20), shr(mul(sub(32, inputAmountLength), 8), calldataload(pos)))
pos := add(pos, inputAmountLength)
}
result, pos := getAddress(pos)
if eq(result, 0) { result := executor }
mstore(add(memPos, 0x40), result)
}
for { let element := 0 } lt(element, numOutputs) { element := add(element, 1) }
{
memPos := mload(add(outputs, add(mul(element, 0x20), 0x20)))
// Load in the token address
result, pos := getAddress(pos)
mstore(memPos, result)
// Load in the quoted output amount
let outputAmountLength := shr(248, calldataload(pos))
pos := add(pos, 1)
let outputQuote := shr(mul(sub(32, outputAmountLength), 8), calldataload(pos))
mstore(add(memPos, 0x20), outputQuote)
pos := add(pos, outputAmountLength)
// Set the minimum output amount as quote with slippage limit applied
mstore(add(memPos, 0x40), div(mul(outputQuote, sub(0xFFFFFF, slippageTolerance)), 0xFFFFFF))
result, pos := getAddress(pos)
mstore(add(memPos, 0x60), result)
}
}
}
swapReferralInfo memory referralInfo;
bytes calldata pathDefinition;
assembly {
let referralCode := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(referralInfo, referralCode)
let feeStatus := shr(248, calldataload(pos))
pos := add(pos, 1)
if feeStatus {
let referralFee := shr(192, calldataload(pos))
pos := add(pos, 8)
mstore(add(referralInfo, 0x20), referralFee)
let referralBeneficiary := shr(96, calldataload(pos))
pos := add(pos, 20)
mstore(add(referralInfo, 0x40), referralBeneficiary)
}
// Set the offset and size for the pathDefinition portion of the msg.data
pathDefinition.length := mul(shr(248, calldataload(pos)), 32)
pathDefinition.offset := add(pos, 1)
}
return _swapMultiApproval(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping between two sets of tokens
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swapMulti(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
payable
returns (uint256[] memory amountsOut)
{
return _swapMultiApproval(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing interface for swapping between two sets of tokens with a hook
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapMultiWithHook(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
payable
returns (uint256[] memory amountsOut)
{
amountsOut = _swapMultiApproval(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
IOdosHook(hookTarget).executeOdosHook(
hookData,
amountsOut,
msg.sender
);
}
/// @notice Internal logic for swapping between two sets of tokens with approvals
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapMultiApproval(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256[] memory amountsOut)
{
// If input amount is still 0 then that means the maximum possible input is to be used
uint256 expected_msg_value = 0;
for (uint256 i = 0; i < inputs.length; i++) {
if (inputs[i].tokenAddress == _ETH) {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = msg.value;
}
expected_msg_value = inputs[i].amountIn;
}
else {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = IERC20(inputs[i].tokenAddress).balanceOf(msg.sender);
}
IERC20(inputs[i].tokenAddress).safeTransferFrom(
msg.sender,
inputs[i].receiver,
inputs[i].amountIn
);
}
}
require(msg.value == expected_msg_value, "Wrong msg.value");
return _swapMulti(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing function for swapping between two sets of tokens with Permit2
/// @param permit2 All additional info for Permit2 transfers
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function swapMultiPermit2(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external
payable
returns (uint256[] memory amountsOut)
{
return _swapMultiPermit2(
permit2,
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice Externally facing function for swapping between two sets of tokens with Permit2 with a hook
/// @param permit2 All additional info for Permit2 transfers
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
/// @param hookTarget the target address to call the hook on
/// @param hookData encoded data for a call to the hookTarget after the swap
function swapMultiPermit2WithHook(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo,
address hookTarget,
bytes calldata hookData
)
external
payable
returns (uint256[] memory amountsOut)
{
amountsOut = _swapMultiPermit2(
permit2,
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
IOdosHook(hookTarget).executeOdosHook(
hookData,
amountsOut,
msg.sender
);
}
/// @notice Internal function for approcing with premit2 before swapping multiple tokens
/// @param permit2 All additional info for Permit2 transfers
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapMultiPermit2(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256[] memory amountsOut)
{
ISignatureTransfer.PermitBatchTransferFrom memory permit;
ISignatureTransfer.SignatureTransferDetails[] memory transferDetails;
{
uint256 permit_length = msg.value > 0 ? inputs.length - 1 : inputs.length;
permit = ISignatureTransfer.PermitBatchTransferFrom(
new ISignatureTransfer.TokenPermissions[](permit_length),
permit2.nonce,
permit2.deadline
);
transferDetails =
new ISignatureTransfer.SignatureTransferDetails[](permit_length);
}
{
uint256 expected_msg_value = 0;
for (uint256 i = 0; i < inputs.length; i++) {
if (inputs[i].tokenAddress == _ETH) {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = msg.value;
}
expected_msg_value = inputs[i].amountIn;
}
else {
if (inputs[i].amountIn == 0) {
inputs[i].amountIn = IERC20(inputs[i].tokenAddress).balanceOf(msg.sender);
}
uint256 permit_index = expected_msg_value == 0 ? i : i - 1;
permit.permitted[permit_index].token = inputs[i].tokenAddress;
permit.permitted[permit_index].amount = inputs[i].amountIn;
transferDetails[permit_index].to = inputs[i].receiver;
transferDetails[permit_index].requestedAmount = inputs[i].amountIn;
}
}
require(msg.value == expected_msg_value, "Wrong msg.value");
}
ISignatureTransfer(permit2.contractAddress).permitTransferFrom(
permit,
transferDetails,
msg.sender,
permit2.signature
);
return _swapMulti(
inputs,
outputs,
pathDefinition,
executor,
referralInfo
);
}
/// @notice contains the main logic for swapping between two sets of tokens
/// assumes that inputs have already been sent to the right location and msg.value
/// is set correctly to be 0 for no native input and match native inpuit otherwise
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
/// @param referralInfo referral info to specify the source of and fee for the swap
function _swapMulti(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
internal
returns (uint256[] memory amountsOut)
{
// Extract arrays of input amount values and tokens from the inputs struct list
uint256[] memory amountsIn = new uint256[](inputs.length);
address[] memory tokensIn = new address[](inputs.length);
// Check input specification validity and transfer input tokens to executor
{
for (uint256 i = 0; i < inputs.length; i++) {
amountsIn[i] = inputs[i].amountIn;
tokensIn[i] = inputs[i].tokenAddress;
for (uint256 j = 0; j < i; j++) {
require(
inputs[i].tokenAddress != inputs[j].tokenAddress,
"Duplicate source tokens"
);
}
for (uint256 j = 0; j < outputs.length; j++) {
require(
inputs[i].tokenAddress != outputs[j].tokenAddress,
"Arbitrage not supported"
);
}
}
}
// Check outputs for duplicates and record balances before swap
uint256[] memory balancesBefore = new uint256[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
require(
outputs[i].amountMin <= outputs[i].amountQuote,
"Minimum greater than quote"
);
require(
outputs[i].amountMin > 0,
"Minimum output is zero"
);
for (uint256 j = 0; j < i; j++) {
require(
outputs[i].tokenAddress != outputs[j].tokenAddress,
"Duplicate destination tokens"
);
}
balancesBefore[i] = _universalBalance(outputs[i].tokenAddress);
}
// Delegate the execution of the path to the specified Odos Executor
IOdosExecutor(executor).executePath{value: msg.value}(pathDefinition, amountsIn, msg.sender);
int256[] memory slippage = new int256[](outputs.length);
{
amountsOut = new uint256[](outputs.length);
uint256 splitBPS = (referralInfo.code >> 32) & 65535;
if (splitBPS == 0) splitBPS = 8000;
require(splitBPS <= 10000, "Invalid Ref Code");
for (uint256 i = 0; i < outputs.length; i++) {
// Record the destination token balance before the path is executed
amountsOut[i] = _universalBalance(outputs[i].tokenAddress) - balancesBefore[i];
if (referralInfo.fee > 0) {
require(referralInfo.feeRecipient != address(0), "Null fee recipient");
require(referralInfo.fee <= FEE_DENOM / 50, "Fee too high");
if (referralInfo.feeRecipient != address(this)) {
_universalTransfer(
outputs[i].tokenAddress,
referralInfo.feeRecipient,
amountsOut[i] * referralInfo.fee * splitBPS / (FEE_DENOM * 10000)
);
}
amountsOut[i] = amountsOut[i] * (FEE_DENOM - referralInfo.fee) / FEE_DENOM;
}
slippage[i] = int256(amountsOut[i]) - int256(outputs[i].amountQuote);
if (slippage[i] > 0 && (referralInfo.code >> 48) & 1 == 0) {
amountsOut[i] = outputs[i].amountQuote;
}
require(amountsOut[i] >= outputs[i].amountMin, "Slippage Limit Exceeded");
_universalTransfer(
outputs[i].tokenAddress,
outputs[i].receiver == address(0) ? msg.sender : outputs[i].receiver,
amountsOut[i]
);
}
}
address[] memory tokensOut = new address[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
tokensOut[i] = outputs[i].tokenAddress;
}
emit SwapMulti(
msg.sender,
amountsIn,
tokensIn,
amountsOut,
tokensOut,
slippage,
referralInfo.code,
referralInfo.fee,
referralInfo.feeRecipient
);
}
/// @notice Changes the liquidator address
/// @param account The address of new liquidator
function changeLiquidatorAddress(address account)
external
onlyOwner
{
liquidatorAddress = account;
emit LiquidatorAddressChanged(account);
}
/// @notice Push new addresses to the cached address list for when storage is cheaper than calldata
/// @param addresses list of addresses to be added to the cached address list
function writeAddressList(
address[] calldata addresses
)
external
onlyOwner
{
for (uint256 i = 0; i < addresses.length; i++) {
addressList.push(addresses[i]);
}
}
/// @notice Allows the owner to transfer funds held by the router contract
/// @param tokens List of token address to be transferred
/// @param amounts List of amounts of each token to be transferred
/// @param dest Address to which the funds should be sent
function transferRouterFunds(
address[] calldata tokens,
uint256[] calldata amounts,
address dest
)
external
{
require(msg.sender == liquidatorAddress || msg.sender == owner(), "Address not allowed");
require(tokens.length == amounts.length, "Invalid funds transfer");
for (uint256 i = 0; i < tokens.length; i++) {
_universalTransfer(
tokens[i],
dest,
amounts[i] == 0 ? _universalBalance(tokens[i]) : amounts[i]
);
}
}
/// @notice Directly swap funds held in router
/// @param inputs list of input token structs for the path being executed
/// @param outputs list of output token structs for the path being executed
/// @param pathDefinition Encoded path definition for executor
/// @param executor Address of contract that will execute the path
function swapRouterFunds(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor
)
external
returns (uint256[] memory amountsOut)
{
require(msg.sender == liquidatorAddress || msg.sender == owner(), "Address not allowed");
uint256[] memory amountsIn = new uint256[](inputs.length);
address[] memory tokensIn = new address[](inputs.length);
for (uint256 i = 0; i < inputs.length; i++) {
tokensIn[i] = inputs[i].tokenAddress;
amountsIn[i] = inputs[i].amountIn == 0 ?
_universalBalance(tokensIn[i]) : inputs[i].amountIn;
_universalTransfer(
tokensIn[i],
inputs[i].receiver,
amountsIn[i]
);
}
// Check outputs for duplicates and record balances before swap
uint256[] memory balancesBefore = new uint256[](outputs.length);
address[] memory tokensOut = new address[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
tokensOut[i] = outputs[i].tokenAddress;
balancesBefore[i] = _universalBalance(tokensOut[i]);
}
// Delegate the execution of the path to the specified Odos Executor
IOdosExecutor(executor).executePath{value: 0}(pathDefinition, amountsIn, msg.sender);
amountsOut = new uint256[](outputs.length);
for (uint256 i = 0; i < outputs.length; i++) {
// Record the destination token balance before the path is executed
amountsOut[i] = _universalBalance(tokensOut[i]) - balancesBefore[i];
require(amountsOut[i] >= outputs[i].amountMin, "Slippage Limit Exceeded");
_universalTransfer(
outputs[i].tokenAddress,
outputs[i].receiver == address(0) ? msg.sender : outputs[i].receiver,
amountsOut[i]
);
}
emit SwapMulti(
msg.sender,
amountsIn,
tokensIn,
amountsOut,
tokensOut,
new int256[](outputs.length),
0,
0,
address(0)
);
}
/// @notice helper function to get balance of ERC20 or native coin for this contract
/// @param token address of the token to check, null for native coin
/// @return balance of specified coin or token
function _universalBalance(address token) private view returns(uint256) {
if (token == _ETH) {
return address(this).balance;
} else {
return IERC20(token).balanceOf(address(this));
}
}
/// @notice helper function to transfer ERC20 or native coin
/// @param token address of the token being transferred, null for native coin
/// @param to address to transfer to
/// @param amount to transfer
function _universalTransfer(address token, address to, uint256 amount) private {
if (token == _ETH) {
(bool success,) = payable(to).call{value: amount}("");
require(success, "ETH transfer failed");
} else {
IERC20(token).safeTransfer(to, amount);
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/// @title V3 Routing contract interface for Odos SOR
/// @author Transaction Assembly
/// @notice Wrapper with security gaurentees around execution of arbitrary operations on user tokens
interface IOdosRouterV3 {
/// @dev Contains all information needed to describe the input and output for a swap
struct permit2Info {
address contractAddress;
uint256 nonce;
uint256 deadline;
bytes signature;
}
/// @dev Contains all information needed to describe the input and output for a swap
struct swapTokenInfo {
address inputToken;
uint256 inputAmount;
address inputReceiver;
address outputToken;
uint256 outputQuote;
uint256 outputMin;
address outputReceiver;
}
/// @dev Contains all information needed to describe an intput token for swapMulti
struct inputTokenInfo {
address tokenAddress;
uint256 amountIn;
address receiver;
}
/// @dev Contains all information needed to describe an output token for swapMulti
struct outputTokenInfo {
address tokenAddress;
uint256 amountQuote;
uint256 amountMin;
address receiver;
}
/// @dev Holds all information for a given referral
struct swapReferralInfo {
uint64 code;
uint64 fee;
address feeRecipient;
}
/// @dev Event emitted on changing the liquidator address
event LiquidatorAddressChanged(address indexed account);
// @dev event for swapping one token for another
event Swap(
address sender,
uint256 inputAmount,
address inputToken,
uint256 amountOut,
address outputToken,
int256 slippage,
uint64 referralCode,
uint64 referralFee,
address referralFeeRecipient
);
/// @dev event for swapping multiple input and/or output tokens
event SwapMulti(
address sender,
uint256[] amountsIn,
address[] tokensIn,
uint256[] amountsOut,
address[] tokensOut,
int256[] slippage,
uint64 referralCode,
uint64 referralFee,
address referralFeeRecipient
);
function swapCompact() external payable returns (uint256);
function swap(
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external payable returns (uint256 amountOut);
function swapPermit2(
permit2Info memory permit2,
swapTokenInfo memory tokenInfo,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external returns (uint256 amountOut);
function swapMultiCompact() external payable returns (uint256[] memory amountsOut);
function swapMulti(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external payable returns (uint256[] memory amountsOut);
function swapMultiPermit2(
permit2Info memory permit2,
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor,
swapReferralInfo memory referralInfo
)
external payable returns (uint256[] memory amountsOut);
function changeLiquidatorAddress(address account)
external;
function writeAddressList(
address[] calldata addresses
)
external;
function transferRouterFunds(
address[] calldata tokens,
uint256[] calldata amounts,
address dest
)
external;
function swapRouterFunds(
inputTokenInfo[] memory inputs,
outputTokenInfo[] memory outputs,
bytes calldata pathDefinition,
address executor
)
external
returns (uint256[] memory amountsOut);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface IOdosExecutor {
function executePath (
bytes calldata bytecode,
uint256[] memory inputAmount,
address msgSender
) external payable;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface IOdosHook {
function executeOdosHook (
bytes calldata hookData,
uint256[] memory inputAmounts,
address msgSender
) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
/// @title SignatureTransfer
/// @notice Handles ERC20 token transfers through signature based actions
/// @dev Requires user's token approval on the Permit2 contract
interface ISignatureTransfer {
/// @notice Thrown when the requested amount for a transfer is larger than the permissioned amount
/// @param maxAmount The maximum amount a spender can request to transfer
error InvalidAmount(uint256 maxAmount);
/// @notice Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred
/// @dev If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred
error LengthMismatch();
/// @notice Emits an event when the owner successfully invalidates an unordered nonce.
event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask);
/// @notice The token and amount details for a transfer signed in the permit transfer signature
struct TokenPermissions {
// ERC20 token address
address token;
// the maximum amount that can be spent
uint256 amount;
}
/// @notice The signed permit message for a single token transfer
struct PermitTransferFrom {
TokenPermissions permitted;
// a unique value for every token owner's signature to prevent signature replays
uint256 nonce;
// deadline on the permit signature
uint256 deadline;
}
/// @notice Specifies the recipient address and amount for batched transfers.
/// @dev Recipients and amounts correspond to the index of the signed token permissions array.
/// @dev Reverts if the requested amount is greater than the permitted signed amount.
struct SignatureTransferDetails {
// recipient address
address to;
// spender requested amount
uint256 requestedAmount;
}
/// @notice Used to reconstruct the signed permit message for multiple token transfers
/// @dev Do not need to pass in spender address as it is required that it is msg.sender
/// @dev Note that a user still signs over a spender address
struct PermitBatchTransferFrom {
// the tokens and corresponding amounts permitted for a transfer
TokenPermissions[] permitted;
// a unique value for every token owner's signature to prevent signature replays
uint256 nonce;
// deadline on the permit signature
uint256 deadline;
}
/// @notice A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection
/// @dev Uses unordered nonces so that permit messages do not need to be spent in a certain order
/// @dev The mapping is indexed first by the token owner, then by an index specified in the nonce
/// @dev It returns a uint256 bitmap
/// @dev The index, or wordPosition is capped at type(uint248).max
function nonceBitmap(address, uint256) external view returns (uint256);
/// @notice Transfers a token using a signed permit message
/// @dev Reverts if the requested amount is greater than the permitted signed amount
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails The spender's requested transfer details for the permitted token
/// @param signature The signature to verify
function permitTransferFrom(
PermitTransferFrom memory permit,
SignatureTransferDetails calldata transferDetails,
address owner,
bytes calldata signature
) external;
/// @notice Transfers a token using a signed permit message
/// @notice Includes extra data provided by the caller to verify signature over
/// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition
/// @dev Reverts if the requested amount is greater than the permitted signed amount
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails The spender's requested transfer details for the permitted token
/// @param witness Extra data to include when checking the user signature
/// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash
/// @param signature The signature to verify
function permitWitnessTransferFrom(
PermitTransferFrom memory permit,
SignatureTransferDetails calldata transferDetails,
address owner,
bytes32 witness,
string calldata witnessTypeString,
bytes calldata signature
) external;
/// @notice Transfers multiple tokens using a signed permit message
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails Specifies the recipient and requested amount for the token transfer
/// @param signature The signature to verify
function permitTransferFrom(
PermitBatchTransferFrom memory permit,
SignatureTransferDetails[] calldata transferDetails,
address owner,
bytes calldata signature
) external;
/// @notice Transfers multiple tokens using a signed permit message
/// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition
/// @notice Includes extra data provided by the caller to verify signature over
/// @param permit The permit data signed over by the owner
/// @param owner The owner of the tokens to transfer
/// @param transferDetails Specifies the recipient and requested amount for the token transfer
/// @param witness Extra data to include when checking the user signature
/// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash
/// @param signature The signature to verify
function permitWitnessTransferFrom(
PermitBatchTransferFrom memory permit,
SignatureTransferDetails[] calldata transferDetails,
address owner,
bytes32 witness,
string calldata witnessTypeString,
bytes calldata signature
) external;
/// @notice Invalidates the bits specified in mask for the bitmap at the word position
/// @dev The wordPos is maxed at type(uint248).max
/// @param wordPos A number to index the nonceBitmap at
/// @param mask A bitmap masked against msg.sender's current bitmap at the word position
function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../IERC20.sol";
import {IERC1363} from "../../../interfaces/IERC1363.sol";
/**
* @title SafeERC20
* @dev Wrappers around ERC-20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
/**
* @dev An operation with an ERC-20 token failed.
*/
error SafeERC20FailedOperation(address token);
/**
* @dev Indicates a failed `decreaseAllowance` request.
*/
error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);
/**
* @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*/
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the
* calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.
*/
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.
*/
function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {
return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.
*/
function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {
return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*
* IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client"
* smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using
* this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract
* that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.
*/
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 oldAllowance = token.allowance(address(this), spender);
forceApprove(token, spender, oldAllowance + value);
}
/**
* @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no
* value, non-reverting calls are assumed to be successful.
*
* IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client"
* smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using
* this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract
* that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.
*/
function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {
unchecked {
uint256 currentAllowance = token.allowance(address(this), spender);
if (currentAllowance < requestedDecrease) {
revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);
}
forceApprove(token, spender, currentAllowance - requestedDecrease);
}
}
/**
* @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval
* to be set to zero before setting it to a non-zero value, such as USDT.
*
* NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function
* only sets the "standard" allowance. Any temporary allowance will remain active, in addition to the value being
* set here.
*/
function forceApprove(IERC20 token, address spender, uint256 value) internal {
bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));
if (!_callOptionalReturnBool(token, approvalCall)) {
_callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));
_callOptionalReturn(token, approvalCall);
}
}
/**
* @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no
* code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* Reverts if the returned value is other than `true`.
*/
function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
if (to.code.length == 0) {
safeTransfer(token, to, value);
} else if (!token.transferAndCall(to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target
* has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* Reverts if the returned value is other than `true`.
*/
function transferFromAndCallRelaxed(
IERC1363 token,
address from,
address to,
uint256 value,
bytes memory data
) internal {
if (to.code.length == 0) {
safeTransferFrom(token, from, to, value);
} else if (!token.transferFromAndCall(from, to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no
* code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.
* Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}
* once without retrying, and relies on the returned value to be true.
*
* Reverts if the returned value is other than `true`.
*/
function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
if (to.code.length == 0) {
forceApprove(token, to, value);
} else if (!token.approveAndCall(to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*
* This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
uint256 returnSize;
uint256 returnValue;
assembly ("memory-safe") {
let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
// bubble errors
if iszero(success) {
let ptr := mload(0x40)
returndatacopy(ptr, 0, returndatasize())
revert(ptr, returndatasize())
}
returnSize := returndatasize()
returnValue := mload(0)
}
if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*
* This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.
*/
function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {
bool success;
uint256 returnSize;
uint256 returnValue;
assembly ("memory-safe") {
success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
returnSize := returndatasize()
returnValue := mload(0)
}
return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (access/Ownable2Step.sol)
pragma solidity ^0.8.20;
import {Ownable} from "./Ownable.sol";
/**
* @dev Contract module which provides access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* This extension of the {Ownable} contract includes a two-step mechanism to transfer
* ownership, where the new owner must call {acceptOwnership} in order to replace the
* old one. This can help prevent common mistakes, such as transfers of ownership to
* incorrect accounts, or to contracts that are unable to interact with the
* permission system.
*
* The initial owner is specified at deployment time in the constructor for `Ownable`. This
* can later be changed with {transferOwnership} and {acceptOwnership}.
*
* This module is used through inheritance. It will make available all functions
* from parent (Ownable).
*/
abstract contract Ownable2Step is Ownable {
address private _pendingOwner;
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);
/**
* @dev Returns the address of the pending owner.
*/
function pendingOwner() public view virtual returns (address) {
return _pendingOwner;
}
/**
* @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
* Can only be called by the current owner.
*
* Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.
*/
function transferOwnership(address newOwner) public virtual override onlyOwner {
_pendingOwner = newOwner;
emit OwnershipTransferStarted(owner(), newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual override {
delete _pendingOwner;
super._transferOwnership(newOwner);
}
/**
* @dev The new owner accepts the ownership transfer.
*/
function acceptOwnership() public virtual {
address sender = _msgSender();
if (pendingOwner() != sender) {
revert OwnableUnauthorizedAccount(sender);
}
_transferOwnership(sender);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)
pragma solidity ^0.8.20;
import {IERC20} from "./IERC20.sol";
import {IERC165} from "./IERC165.sol";
/**
* @title IERC1363
* @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].
*
* Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract
* after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.
*/
interface IERC1363 is IERC20, IERC165 {
/*
* Note: the ERC-165 identifier for this interface is 0xb0202a11.
* 0xb0202a11 ===
* bytes4(keccak256('transferAndCall(address,uint256)')) ^
* bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^
* bytes4(keccak256('approveAndCall(address,uint256)')) ^
* bytes4(keccak256('approveAndCall(address,uint256,bytes)'))
*/
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferAndCall(address to, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @param data Additional data with no specified format, sent in call to `to`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param from The address which you want to send tokens from.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param from The address which you want to send tokens from.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @param data Additional data with no specified format, sent in call to `to`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function approveAndCall(address spender, uint256 value) external returns (bool);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
* @param data Additional data with no specified format, sent in call to `spender`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../token/ERC20/IERC20.sol";// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)
pragma solidity ^0.8.20;
import {IERC165} from "../utils/introspection/IERC165.sol";// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)
pragma solidity ^0.8.20;
/**
* @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);
}{
"remappings": [
"@openzeppelin/=lib/openzeppelin-contracts/",
"ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/"
],
"optimizer": {
"enabled": true,
"runs": 1000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"LiquidatorAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"inputAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"inputToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"},{"indexed":false,"internalType":"address","name":"outputToken","type":"address"},{"indexed":false,"internalType":"int256","name":"slippage","type":"int256"},{"indexed":false,"internalType":"uint64","name":"referralCode","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"referralFee","type":"uint64"},{"indexed":false,"internalType":"address","name":"referralFeeRecipient","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"tokensIn","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"tokensOut","type":"address[]"},{"indexed":false,"internalType":"int256[]","name":"slippage","type":"int256[]"},{"indexed":false,"internalType":"uint64","name":"referralCode","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"referralFee","type":"uint64"},{"indexed":false,"internalType":"address","name":"referralFeeRecipient","type":"address"}],"name":"SwapMulti","type":"event"},{"inputs":[],"name":"FEE_DENOM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"changeLiquidatorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapCompact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swapMulti","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapMultiCompact","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swapMultiPermit2","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapMultiPermit2WithHook","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapMultiWithHook","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"}],"name":"swapPermit2","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct IOdosRouterV3.permit2Info","name":"permit2","type":"tuple"},{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapPermit2WithHook","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.inputTokenInfo[]","name":"inputs","type":"tuple[]"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountQuote","type":"uint256"},{"internalType":"uint256","name":"amountMin","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"internalType":"struct IOdosRouterV3.outputTokenInfo[]","name":"outputs","type":"tuple[]"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"}],"name":"swapRouterFunds","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"inputToken","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"address","name":"inputReceiver","type":"address"},{"internalType":"address","name":"outputToken","type":"address"},{"internalType":"uint256","name":"outputQuote","type":"uint256"},{"internalType":"uint256","name":"outputMin","type":"uint256"},{"internalType":"address","name":"outputReceiver","type":"address"}],"internalType":"struct IOdosRouterV3.swapTokenInfo","name":"tokenInfo","type":"tuple"},{"internalType":"bytes","name":"pathDefinition","type":"bytes"},{"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint64","name":"code","type":"uint64"},{"internalType":"uint64","name":"fee","type":"uint64"},{"internalType":"address","name":"feeRecipient","type":"address"}],"internalType":"struct IOdosRouterV3.swapReferralInfo","name":"referralInfo","type":"tuple"},{"internalType":"address","name":"hookTarget","type":"address"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"swapWithHook","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"dest","type":"address"}],"name":"transferRouterFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"writeAddressList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620043e3380380620043e38339810160408190526200003491620000e5565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000077565b505062000117565b600180546001600160a01b0319169055620000928162000095565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000f857600080fd5b81516001600160a01b03811681146200011057600080fd5b9392505050565b6142bc80620001276000396000f3fe6080604052600436106101795760003560e01c806383bd37f9116100cb578063cab347311161007f578063e8668cac11610059578063e8668cac14610394578063f2fde38b146103b4578063fef828dc146103d457600080fd5b8063cab3473114610336578063e30c397814610356578063e5dae17d1461037457600080fd5b80638da5cb5b116100b05780638da5cb5b146102d857806398281469146102f6578063b810fb431461031657600080fd5b806383bd37f9146102c857806384a7f3dd146102d057600080fd5b80634886c6751161012d578063715018a611610107578063715018a61461026657806375c111f21461027b57806379ba5097146102b357600080fd5b80634886c6751461022457806357cfd3d414610240578063638cc0fa1461025357600080fd5b8063174da6211161015e578063174da621146101c157806330f80b4c146101e35780633596f9a21461020457600080fd5b80630d459c0814610185578063108e3a77146101ae57600080fd5b3661018057005b600080fd5b6101986101933660046135e6565b6103e7565b6040516101a5919061373a565b60405180910390f35b6101986101bc366004613754565b61046d565b3480156101cd57600080fd5b506101e16101dc366004613870565b61048a565b005b6101f66101f136600461398f565b61060f565b6040519081526020016101a5565b34801561021057600080fd5b506101e161021f3660046139fe565b610628565b34801561023057600080fd5b506101f6670de0b6b3a764000081565b6101f661024e366004613a40565b6106ad565b610198610261366004613afc565b610772565b34801561027257600080fd5b506101e16107f6565b34801561028757600080fd5b5060035461029b906001600160a01b031681565b6040516001600160a01b0390911681526020016101a5565b3480156102bf57600080fd5b506101e161080a565b6101f661084e565b610198610a47565b3480156102e457600080fd5b506000546001600160a01b031661029b565b34801561030257600080fd5b50610198610311366004613bef565b610cc0565b34801561032257600080fd5b5061029b610331366004613c83565b611315565b34801561034257600080fd5b506101f6610351366004613c9c565b61133f565b34801561036257600080fd5b506001546001600160a01b031661029b565b34801561038057600080fd5b506101e161038f366004613d3d565b61135a565b3480156103a057600080fd5b506101f66103af366004613d58565b6113ac565b3480156103c057600080fd5b506101e16103cf366004613d3d565b611473565b6101986103e2366004613e18565b6114e4565b60606103f88b8b8b8b8b8b8b6114f4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e549061042d908690869086903390600401613ebc565b600060405180830381600087803b15801561044757600080fd5b505af115801561045b573d6000803e3d6000fd5b505050509a9950505050505050505050565b606061047e888888888888886114f4565b98975050505050505050565b6003546001600160a01b03163314806104ad57506000546001600160a01b031633145b6104fe5760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b83821461054d5760405162461bcd60e51b815260206004820152601660248201527f496e76616c69642066756e6473207472616e736665720000000000000000000060448201526064016104f5565b60005b84811015610607576105f586868381811061056d5761056d613f15565b90506020020160208101906105829190613d3d565b8386868581811061059557610595613f15565b905060200201356000146105c1578686858181106105b5576105b5613f15565b90506020020135611a5b565b6105f08989868181106105d6576105d6613f15565b90506020020160208101906105eb9190613d3d565b6119d1565b611a5b565b806105ff81613f41565b915050610550565b505050505050565b600061061e8686868686611b26565b9695505050505050565b610630611c87565b60005b818110156106a857600283838381811061064f5761064f613f15565b90506020020160208101906106649190613d3d565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055806106a081613f41565b915050610633565b505050565b60006106bc8989898989611b26565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106106f6576106f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490610733908790879086903390600401613ebc565b600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b505050505098975050505050505050565b60606107828a8a8a8a8a8a611cb4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e54906107b7908690869086903390600401613ebc565b600060405180830381600087803b1580156107d157600080fd5b505af11580156107e5573d6000803e3d6000fd5b505050509998505050505050505050565b6107fe611c87565b6108086000611f10565b565b60015433906001600160a01b031681146108425760405163118cdaa760e01b81526001600160a01b03821660048201526024016104f5565b61084b81611f10565b50565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290526040805160608101825260008082526020820181905291810191909152600036600061091e565b600080823560f01c8080156108f55760018114610900577f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acc8201549350600285019250610917565b600285019250610917565b6001600160a01b03853560501c1693506016850192505b5050915091565b6000600461092b816108ad565b9150915081875261093b816108ad565b606089018290529092506001810191503560f81c801561096a578135600882602003021c602089015280820191505b50803560f81c6001820191508135600882602003021c8060808a01528183019250823560e81c915062ffffff8262ffffff0382020460a08a015250506003810190506109b5816108ad565b915094506109c2816108ad565b9092509050816109d0578491505b8160408801526109df816108ad565b60c089810192909252803590911c8752600881013560f81c925060090190508115610a1f57803560c01c6020870152600881013560601c6040870152601c015b6001810193503560f81c6020029150610a3d90508583838688611b26565b9550505050505090565b606060008180600660043560f890811c90600535901c8167ffffffffffffffff811115610a7657610a76613251565b604051908082528060200260200182016040528015610ac157816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610a945790505b5094508067ffffffffffffffff811115610add57610add613251565b604051908082528060200260200182016040528015610b2f57816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610afb5790505b509350610b3b836108ad565b9096506003810193503560e81c600080805b85811015610bba576020808202018901519150610b69876108ad565b8184526001810198509093503560f81c8015610b94578735600882602003021c602084015280880197505b50610b9e876108ad565b9750925082610bab578992505b60408201839052600101610b4d565b5060005b84811015610c31576020808202018801519150610bda876108ad565b97509250828252863560f81c6001880197508735600882602003021c806020850152818901985062ffffff8662ffffff0382020460408501525050610c1e876108ad565b6060840182905297509250600101610bbe565b505060408051606081018252600080825260208201819052918101919091529350610c5b92505050565b813560c01c8152600982019136906000906008013560f81c8015610c9757843560c01c6020850152600885013560601c6040850152601c909401935b505050600182016020833560f81c02610cb4868684848b88611cb4565b97505050505050505090565b6003546060906001600160a01b0316331480610ce657506000546001600160a01b031633145b610d325760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064016104f5565b6000865167ffffffffffffffff811115610d4e57610d4e613251565b604051908082528060200260200182016040528015610d77578160200160208202803683370190505b5090506000875167ffffffffffffffff811115610d9657610d96613251565b604051908082528060200260200182016040528015610dbf578160200160208202803683370190505b50905060005b8851811015610f1257888181518110610de057610de0613f15565b602002602001015160000151828281518110610dfe57610dfe613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050888181518110610e3057610e30613f15565b602002602001015160200151600014610e6657888181518110610e5557610e55613f15565b602002602001015160200151610e88565b610e88828281518110610e7b57610e7b613f15565b60200260200101516119d1565b838281518110610e9a57610e9a613f15565b602002602001018181525050610f00828281518110610ebb57610ebb613f15565b60200260200101518a8381518110610ed557610ed5613f15565b602002602001015160400151858481518110610ef357610ef3613f15565b6020026020010151611a5b565b80610f0a81613f41565b915050610dc5565b506000875167ffffffffffffffff811115610f2f57610f2f613251565b604051908082528060200260200182016040528015610f58578160200160208202803683370190505b5090506000885167ffffffffffffffff811115610f7757610f77613251565b604051908082528060200260200182016040528015610fa0578160200160208202803683370190505b50905060005b895181101561104357898181518110610fc157610fc1613f15565b602002602001015160000151828281518110610fdf57610fdf613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050611014828281518110610e7b57610e7b613f15565b83828151811061102657611026613f15565b60209081029190910101528061103b81613f41565b915050610fa6565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e27390600090611079908c908c908a903390600401613ebc565b6000604051808303818588803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b5050505050885167ffffffffffffffff8111156110c5576110c5613251565b6040519080825280602002602001820160405280156110ee578160200160208202803683370190505b50945060005b895181101561127b5782818151811061110f5761110f613f15565b602002602001015161112c838381518110610e7b57610e7b613f15565b6111369190613f5a565b86828151811061114857611148613f15565b60200260200101818152505089818151811061116657611166613f15565b60200260200101516040015186828151811061118457611184613f15565b602002602001015110156111da5760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b6112698a82815181106111ef576111ef613f15565b60200260200101516000015160006001600160a01b03168c848151811061121857611218613f15565b6020026020010151606001516001600160a01b031614611255578b838151811061124457611244613f15565b602002602001015160600151611257565b335b888481518110610ef357610ef3613f15565b8061127381613f41565b9150506110f4565b507f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3033858588858e5167ffffffffffffffff8111156112bc576112bc613251565b6040519080825280602002602001820160405280156112e5578160200160208202803683370190505b50600080600060405161130099989796959493929190613fa6565b60405180910390a15050505095945050505050565b6002818154811061132557600080fd5b6000918252602090912001546001600160a01b0316905081565b600061134f878787878787611f29565b979650505050505050565b611362611c87565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f1535fa8f7275b71050af30bf7f74391b45be7ba2b545fd28279dafe9b50f642490600090a250565b60006113bc8a8a8a8a8a8a611f29565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106113f6576113f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490611433908790879086903390600401613ebc565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b50505050509998505050505050505050565b61147b611c87565b600180546001600160a01b0383166001600160a01b031990911681179091556114ac6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b606061134f878787878787611cb4565b606061151a60405180606001604052806060815260200160008152602001600081525090565b6060600080341161152c57895161153a565b60018a5161153a9190613f5a565b905060405180606001604052808267ffffffffffffffff81111561156057611560613251565b6040519080825280602002602001820160405280156115a557816020015b604080518082019091526000808252602082015281526020019060019003908161157e5790505b5081526020018c6020015181526020018c6040015181525092508067ffffffffffffffff8111156115d8576115d8613251565b60405190808252806020026020018201604052801561161d57816020015b60408051808201909152600080825260208201528152602001906001900390816115f65790505b509150506000805b8a518110156118ee5760006001600160a01b03168b828151811061164b5761164b613f15565b6020026020010151600001516001600160a01b0316036116d3578a818151811061167757611677613f15565b6020026020010151602001516000036116ae57348b828151811061169d5761169d613f15565b602002602001015160200181815250505b8a81815181106116c0576116c0613f15565b60200260200101516020015191506118dc565b8a81815181106116e5576116e5613f15565b6020026020010151602001516000036117a2578a818151811061170a5761170a613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f919061404c565b8b828151811061179157611791613f15565b602002602001015160200181815250505b600082156117ba576117b5600183613f5a565b6117bc565b815b90508b82815181106117d0576117d0613f15565b602002602001015160000151856000015182815181106117f2576117f2613f15565b60209081029190910101516001600160a01b0390911690528b518c908390811061181e5761181e613f15565b6020026020010151602001518560000151828151811061184057611840613f15565b602002602001015160200181815250508b828151811061186257611862613f15565b60200260200101516040015184828151811061188057611880613f15565b60209081029190910101516001600160a01b0390911690528b518c90839081106118ac576118ac613f15565b6020026020010151602001518482815181106118ca576118ca613f15565b60200260200101516020018181525050505b806118e681613f41565b915050611625565b508034146119305760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b50895160608b01516040517fedd9444b0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163edd9444b9161198391869186913391906004016140f8565b600060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b505050506119c3898989898989612004565b9a9950505050505050505050565b60006001600160a01b0382166119e8575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a50919061404c565b92915050565b919050565b6001600160a01b038316611b12576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ab6576040519150601f19603f3d011682016040523d82523d6000602084013e611abb565b606091505b5050905080611b0c5760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c65640000000000000000000000000060448201526064016104f5565b50505050565b6106a86001600160a01b0384168383612bb4565b84516000906001600160a01b0316611b99578560200151600003611b4f57346020870152611c7a565b85602001513414611b945760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b611c7a565b3415611bd95760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b8560200151600003611c565785516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c50919061404c565b60208701525b604086015160208701518751611c7a926001600160a01b0390911691339190612c28565b61061e8686868686612c61565b6000546001600160a01b031633146108085760405163118cdaa760e01b81523360048201526024016104f5565b60606000805b8851811015611ec05760006001600160a01b0316898281518110611ce057611ce0613f15565b6020026020010151600001516001600160a01b031603611d6857888181518110611d0c57611d0c613f15565b602002602001015160200151600003611d435734898281518110611d3257611d32613f15565b602002602001015160200181815250505b888181518110611d5557611d55613f15565b6020026020010151602001519150611eae565b888181518110611d7a57611d7a613f15565b602002602001015160200151600003611e3757888181518110611d9f57611d9f613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e14919061404c565b898281518110611e2657611e26613f15565b602002602001015160200181815250505b611eae338a8381518110611e4d57611e4d613f15565b6020026020010151604001518b8481518110611e6b57611e6b613f15565b6020026020010151602001518c8581518110611e8957611e89613f15565b6020026020010151600001516001600160a01b0316612c28909392919063ffffffff16565b80611eb881613f41565b915050611cba565b50803414611f025760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b61047e888888888888612004565b600180546001600160a01b031916905561084b81613177565b85516040805160a08101825287516001600160a01b0390811660608084019182526020808c0180516080870152928552808d015181860152858d015185870152855180870187528c870151851681529251908301528b015193517f30f28b7a00000000000000000000000000000000000000000000000000000000815260009592909216936330f28b7a93611fc59390929133916004016141ae565b600060405180830381600087803b158015611fdf57600080fd5b505af1158015611ff3573d6000803e3d6000fd5b5050505061134f8686868686612c61565b60606000875167ffffffffffffffff81111561202257612022613251565b60405190808252806020026020018201604052801561204b578160200160208202803683370190505b5090506000885167ffffffffffffffff81111561206a5761206a613251565b604051908082528060200260200182016040528015612093578160200160208202803683370190505b50905060005b89518110156122b3578981815181106120b4576120b4613f15565b6020026020010151602001518382815181106120d2576120d2613f15565b6020026020010181815250508981815181106120f0576120f0613f15565b60200260200101516000015182828151811061210e5761210e613f15565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b818110156121e6578a818151811061214b5761214b613f15565b6020026020010151600001516001600160a01b03168b838151811061217257612172613f15565b6020026020010151600001516001600160a01b0316036121d45760405162461bcd60e51b815260206004820152601760248201527f4475706c696361746520736f7572636520746f6b656e7300000000000000000060448201526064016104f5565b806121de81613f41565b915050612131565b5060005b89518110156122a05789818151811061220557612205613f15565b6020026020010151600001516001600160a01b03168b838151811061222c5761222c613f15565b6020026020010151600001516001600160a01b03160361228e5760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b8061229881613f41565b9150506121ea565b50806122ab81613f41565b915050612099565b506000885167ffffffffffffffff8111156122d0576122d0613251565b6040519080825280602002602001820160405280156122f9578160200160208202803683370190505b50905060005b895181101561250d5789818151811061231a5761231a613f15565b6020026020010151602001518a828151811061233857612338613f15565b60200260200101516040015111156123925760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008a82815181106123a6576123a6613f15565b602002602001015160400151116123ff5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b60005b818110156124b7578a818151811061241c5761241c613f15565b6020026020010151600001516001600160a01b03168b838151811061244357612443613f15565b6020026020010151600001516001600160a01b0316036124a55760405162461bcd60e51b815260206004820152601c60248201527f4475706c69636174652064657374696e6174696f6e20746f6b656e730000000060448201526064016104f5565b806124af81613f41565b915050612402565b506124de8a82815181106124cd576124cd613f15565b6020026020010151600001516119d1565b8282815181106124f0576124f0613f15565b60209081029190910101528061250581613f41565b9150506122ff565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e273903490612542908c908c9089903390600401613ebc565b6000604051808303818588803b15801561255b57600080fd5b505af115801561256f573d6000803e3d6000fd5b50505050506000895167ffffffffffffffff81111561259057612590613251565b6040519080825280602002602001820160405280156125b9578160200160208202803683370190505b509050895167ffffffffffffffff8111156125d6576125d6613251565b6040519080825280602002602001820160405280156125ff578160200160208202803683370190505b50865190955060201c61ffff16600081900361261a5750611f405b61271081111561266c5760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60005b8b51811015612aa65783818151811061268a5761268a613f15565b60200260200101516126a78d83815181106124cd576124cd613f15565b6126b19190613f5a565b8782815181106126c3576126c3613f15565b6020026020010181815250506000886020015167ffffffffffffffff1611156128af5760408801516001600160a01b03166127405760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b6127536032670de0b6b3a7640000614226565b886020015167ffffffffffffffff16111561279f5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b60408801516001600160a01b03163014612837576128378c82815181106127c8576127c8613f15565b6020026020010151600001518960400151670de0b6b3a76400006127106127ef9190614248565b858c6020015167ffffffffffffffff168c878151811061281157612811613f15565b60200260200101516128239190614248565b61282d9190614248565b6105f09190614226565b670de0b6b3a7640000886020015167ffffffffffffffff16670de0b6b3a76400006128629190613f5a565b88838151811061287457612874613f15565b60200260200101516128869190614248565b6128909190614226565b8782815181106128a2576128a2613f15565b6020026020010181815250505b8b81815181106128c1576128c1613f15565b6020026020010151602001518782815181106128df576128df613f15565b60200260200101516128f1919061425f565b83828151811061290357612903613f15565b602002602001018181525050600083828151811061292357612923613f15565b602002602001015113801561293d5750875160301c600116155b1561297f578b818151811061295457612954613f15565b60200260200101516020015187828151811061297257612972613f15565b6020026020010181815250505b8b818151811061299157612991613f15565b6020026020010151604001518782815181106129af576129af613f15565b60200260200101511015612a055760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b612a948c8281518110612a1a57612a1a613f15565b60200260200101516000015160006001600160a01b03168e8481518110612a4357612a43613f15565b6020026020010151606001516001600160a01b031614612a80578d8381518110612a6f57612a6f613f15565b602002602001015160600151612a82565b335b898481518110610ef357610ef3613f15565b80612a9e81613f41565b91505061266f565b505060008a5167ffffffffffffffff811115612ac457612ac4613251565b604051908082528060200260200182016040528015612aed578160200160208202803683370190505b50905060005b8b51811015612b56578b8181518110612b0e57612b0e613f15565b602002602001015160000151828281518110612b2c57612b2c613f15565b6001600160a01b039092166020928302919091019091015280612b4e81613f41565b915050612af3565b50865160208801516040808a015190517f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3093612b9d9333938b938b938e938a938c93613fa6565b60405180910390a150505050509695505050505050565b6040516001600160a01b038381166024830152604482018390526106a891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506131c7565b6040516001600160a01b038481166024830152838116604483015260648201839052611b0c9186918216906323b872dd90608401612be1565b600085608001518660a001511115612cbb5760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008660a0015111612d0f5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b85606001516001600160a01b031686600001516001600160a01b031603612d785760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b6000612d8787606001516119d1565b6040805160018082528183019092529192506000919060208083019080368337019050509050876020015181600081518110612dc557612dc5613f15565b602090810291909101015260405163cb70e27360e01b81526001600160a01b0386169063cb70e273903490612e04908b908b9087903390600401613ebc565b6000604051808303818588803b158015612e1d57600080fd5b505af1158015612e31573d6000803e3d6000fd5b505050505081612e4489606001516119d1565b612e4e9190613f5a565b602085015190935067ffffffffffffffff161561301c5760408401516001600160a01b0316612ebf5760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b612ed26032670de0b6b3a7640000614226565b846020015167ffffffffffffffff161115612f1e5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b835160201c61ffff166000819003612f355750611f405b612710811115612f875760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60408501516001600160a01b03163014612fd957612fd989606001518660400151670de0b6b3a7640000612710612fbe9190614248565b84896020015167ffffffffffffffff16896128239190614248565b670de0b6b3a7640000856020015167ffffffffffffffff16670de0b6b3a76400006130049190613f5a565b61300e9086614248565b6130189190614226565b9350505b600088608001518461302e919061425f565b90506000811380156130455750845160301c600116155b1561305257886080015193505b8860a001518410156130a65760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b606089015160c08a01516130d591906001600160a01b0316156130cd578a60c001516130cf565b335b86611a5b565b6020808a01518a516060808d015189518a8601516040808d01518151338152988901979097526001600160a01b03958616908801529286018a9052908316608086015260a0850186905267ffffffffffffffff90811660c08601521660e0840152166101008201527f69db20ca9e32403e6c56e5193b3e3b2827ae5c430ccfdea392ba950d2d1ab2bc906101200160405180910390a150505095945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080602060008451602086016000885af1806131ea576040513d6000823e3d81fd5b50506000513d9150811561320257806001141561320f565b6001600160a01b0384163b155b15611b0c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016104f5565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561328a5761328a613251565b60405290565b6040516060810167ffffffffffffffff8111828210171561328a5761328a613251565b604051601f8201601f1916810167ffffffffffffffff811182821017156132dc576132dc613251565b604052919050565b80356001600160a01b0381168114611a5657600080fd5b60006080828403121561330d57600080fd5b613315613267565b9050613320826132e4565b81526020808301358183015260408301356040830152606083013567ffffffffffffffff8082111561335157600080fd5b818501915085601f83011261336557600080fd5b81358181111561337757613377613251565b613389601f8201601f191685016132b3565b9150808252868482850101111561339f57600080fd5b808484018584013760008482840101525080606085015250505092915050565b600067ffffffffffffffff8211156133d9576133d9613251565b5060051b60200190565b600082601f8301126133f457600080fd5b81356020613409613404836133bf565b6132b3565b8281526060928302850182019282820191908785111561342857600080fd5b8387015b8581101561347d5781818a0312156134445760008081fd5b61344c613290565b613455826132e4565b81528582013586820152604061346c8184016132e4565b90820152845292840192810161342c565b5090979650505050505050565b600082601f83011261349b57600080fd5b813560206134ab613404836133bf565b82815260079290921b840181019181810190868411156134ca57600080fd5b8286015b8481101561352b57608081890312156134e75760008081fd5b6134ef613267565b6134f8826132e4565b815281850135858201526040808301359082015260606135198184016132e4565b908201528352918301916080016134ce565b509695505050505050565b60008083601f84011261354857600080fd5b50813567ffffffffffffffff81111561356057600080fd5b60208301915083602082850101111561357857600080fd5b9250929050565b803567ffffffffffffffff81168114611a5657600080fd5b6000606082840312156135a957600080fd5b6135b1613290565b90506135bc8261357f565b81526135ca6020830161357f565b60208201526135db604083016132e4565b604082015292915050565b6000806000806000806000806000806101408b8d03121561360657600080fd5b8a3567ffffffffffffffff8082111561361e57600080fd5b61362a8e838f016132fb565b9b5060208d013591508082111561364057600080fd5b61364c8e838f016133e3565b9a5060408d013591508082111561366257600080fd5b61366e8e838f0161348a565b995060608d013591508082111561368457600080fd5b6136908e838f01613536565b90995097508791506136a460808e016132e4565b96506136b38e60a08f01613597565b95506136c26101008e016132e4565b94506101208d01359150808211156136d957600080fd5b506136e68d828e01613536565b915080935050809150509295989b9194979a5092959850565b600081518084526020808501945080840160005b8381101561372f57815187529582019590820190600101613713565b509495945050505050565b60208152600061374d60208301846136ff565b9392505050565b6000806000806000806000610100888a03121561377057600080fd5b873567ffffffffffffffff8082111561378857600080fd5b6137948b838c016132fb565b985060208a01359150808211156137aa57600080fd5b6137b68b838c016133e3565b975060408a01359150808211156137cc57600080fd5b6137d88b838c0161348a565b965060608a01359150808211156137ee57600080fd5b506137fb8a828b01613536565b909550935061380e9050608089016132e4565b915061381d8960a08a01613597565b905092959891949750929550565b60008083601f84011261383d57600080fd5b50813567ffffffffffffffff81111561385557600080fd5b6020830191508360208260051b850101111561357857600080fd5b60008060008060006060868803121561388857600080fd5b853567ffffffffffffffff808211156138a057600080fd5b6138ac89838a0161382b565b909750955060208801359150808211156138c557600080fd5b506138d28882890161382b565b90945092506138e59050604087016132e4565b90509295509295909350565b600060e0828403121561390357600080fd5b60405160e0810181811067ffffffffffffffff8211171561392657613926613251565b604052905080613935836132e4565b81526020830135602082015261394d604084016132e4565b604082015261395e606084016132e4565b60608201526080830135608082015260a083013560a082015261398360c084016132e4565b60c08201525092915050565b600080600080600061018086880312156139a857600080fd5b6139b287876138f1565b945060e086013567ffffffffffffffff8111156139ce57600080fd5b6139da88828901613536565b90955093506139ee905061010087016132e4565b91506138e5876101208801613597565b60008060208385031215613a1157600080fd5b823567ffffffffffffffff811115613a2857600080fd5b613a348582860161382b565b90969095509350505050565b6000806000806000806000806101c0898b031215613a5d57600080fd5b613a678a8a6138f1565b975060e089013567ffffffffffffffff80821115613a8457600080fd5b613a908c838d01613536565b9099509750879150613aa56101008c016132e4565b9650613ab58c6101208d01613597565b9550613ac46101808c016132e4565b94506101a08b0135915080821115613adb57600080fd5b50613ae88b828c01613536565b999c989b5096995094979396929594505050565b60008060008060008060008060006101208a8c031215613b1b57600080fd5b893567ffffffffffffffff80821115613b3357600080fd5b613b3f8d838e016133e3565b9a5060208c0135915080821115613b5557600080fd5b613b618d838e0161348a565b995060408c0135915080821115613b7757600080fd5b613b838d838e01613536565b9099509750879150613b9760608d016132e4565b9650613ba68d60808e01613597565b9550613bb460e08d016132e4565b94506101008c0135915080821115613bcb57600080fd5b50613bd88c828d01613536565b915080935050809150509295985092959850929598565b600080600080600060808688031215613c0757600080fd5b853567ffffffffffffffff80821115613c1f57600080fd5b613c2b89838a016133e3565b96506020880135915080821115613c4157600080fd5b613c4d89838a0161348a565b95506040880135915080821115613c6357600080fd5b50613c7088828901613536565b90945092506138e59050606087016132e4565b600060208284031215613c9557600080fd5b5035919050565b6000806000806000806101a08789031215613cb657600080fd5b863567ffffffffffffffff80821115613cce57600080fd5b613cda8a838b016132fb565b9750613ce98a60208b016138f1565b9650610100890135915080821115613d0057600080fd5b50613d0d89828a01613536565b9095509350613d21905061012088016132e4565b9150613d31886101408901613597565b90509295509295509295565b600060208284031215613d4f57600080fd5b61374d826132e4565b60008060008060008060008060006101e08a8c031215613d7757600080fd5b893567ffffffffffffffff80821115613d8f57600080fd5b613d9b8d838e016132fb565b9a50613daa8d60208e016138f1565b99506101008c0135915080821115613dc157600080fd5b613dcd8d838e01613536565b9099509750879150613de26101208d016132e4565b9650613df28d6101408e01613597565b9550613e016101a08d016132e4565b94506101c08c0135915080821115613bcb57600080fd5b60008060008060008060e08789031215613e3157600080fd5b863567ffffffffffffffff80821115613e4957600080fd5b613e558a838b016133e3565b97506020890135915080821115613e6b57600080fd5b613e778a838b0161348a565b96506040890135915080821115613e8d57600080fd5b50613e9a89828a01613536565b9095509350613ead9050606088016132e4565b9150613d318860808901613597565b60608152836060820152838560808301376000608085830101526000601f19601f86011682016080838203016020840152613efa60808201866136ff565b9150506001600160a01b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613f5357613f53613f2b565b5060010190565b81810381811115611a5057611a50613f2b565b600081518084526020808501945080840160005b8381101561372f5781516001600160a01b031687529582019590820190600101613f81565b60006101206001600160a01b03808d168452816020850152613fca8285018d6136ff565b91508382036040850152613fde828c613f6d565b91508382036060850152613ff2828b6136ff565b91508382036080850152614006828a613f6d565b915083820360a085015261401a82896136ff565b67ffffffffffffffff97881660c08601529590961660e084015250509216610100909201919091529695505050505050565b60006020828403121561405e57600080fd5b5051919050565b600081518084526020808501945080840160005b8381101561372f5761409f87835180516001600160a01b03168252602090810151910152565b6040969096019590820190600101614079565b6000815180845260005b818110156140d8576020818501810151868301820152016140bc565b506000602082860101526020601f19601f83011685010191505092915050565b60808152600060e082018651606060808501528181518084526101008601915060209350838301925060005b8181101561415d5761414a83855180516001600160a01b03168252602090810151910152565b9284019260409290920191600101614124565b50508289015160a0860152604089015160c0860152848103838601526141838189614065565b9250505061419c60408401866001600160a01b03169052565b828103606084015261134f81856140b2565b60006101006141d183885180516001600160a01b03168252602090810151910152565b6020870151604084015260408701516060840152614205608084018780516001600160a01b03168252602090810151910152565b6001600160a01b03851660c08401528060e084015261134f818401856140b2565b60008261424357634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417611a5057611a50613f2b565b818103600083128015838313168383128216171561427f5761427f613f2b565b509291505056fea2646970667358221220d74b0ec85c5d185ea6ecfd1e3c05b38fd2a7ff7620e313048b0f258449fd73a764736f6c63430008140033000000000000000000000000000636843c30b6b10d3dc9af803e7a7956aa994c
Deployed Bytecode
0x6080604052600436106101795760003560e01c806383bd37f9116100cb578063cab347311161007f578063e8668cac11610059578063e8668cac14610394578063f2fde38b146103b4578063fef828dc146103d457600080fd5b8063cab3473114610336578063e30c397814610356578063e5dae17d1461037457600080fd5b80638da5cb5b116100b05780638da5cb5b146102d857806398281469146102f6578063b810fb431461031657600080fd5b806383bd37f9146102c857806384a7f3dd146102d057600080fd5b80634886c6751161012d578063715018a611610107578063715018a61461026657806375c111f21461027b57806379ba5097146102b357600080fd5b80634886c6751461022457806357cfd3d414610240578063638cc0fa1461025357600080fd5b8063174da6211161015e578063174da621146101c157806330f80b4c146101e35780633596f9a21461020457600080fd5b80630d459c0814610185578063108e3a77146101ae57600080fd5b3661018057005b600080fd5b6101986101933660046135e6565b6103e7565b6040516101a5919061373a565b60405180910390f35b6101986101bc366004613754565b61046d565b3480156101cd57600080fd5b506101e16101dc366004613870565b61048a565b005b6101f66101f136600461398f565b61060f565b6040519081526020016101a5565b34801561021057600080fd5b506101e161021f3660046139fe565b610628565b34801561023057600080fd5b506101f6670de0b6b3a764000081565b6101f661024e366004613a40565b6106ad565b610198610261366004613afc565b610772565b34801561027257600080fd5b506101e16107f6565b34801561028757600080fd5b5060035461029b906001600160a01b031681565b6040516001600160a01b0390911681526020016101a5565b3480156102bf57600080fd5b506101e161080a565b6101f661084e565b610198610a47565b3480156102e457600080fd5b506000546001600160a01b031661029b565b34801561030257600080fd5b50610198610311366004613bef565b610cc0565b34801561032257600080fd5b5061029b610331366004613c83565b611315565b34801561034257600080fd5b506101f6610351366004613c9c565b61133f565b34801561036257600080fd5b506001546001600160a01b031661029b565b34801561038057600080fd5b506101e161038f366004613d3d565b61135a565b3480156103a057600080fd5b506101f66103af366004613d58565b6113ac565b3480156103c057600080fd5b506101e16103cf366004613d3d565b611473565b6101986103e2366004613e18565b6114e4565b60606103f88b8b8b8b8b8b8b6114f4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e549061042d908690869086903390600401613ebc565b600060405180830381600087803b15801561044757600080fd5b505af115801561045b573d6000803e3d6000fd5b505050509a9950505050505050505050565b606061047e888888888888886114f4565b98975050505050505050565b6003546001600160a01b03163314806104ad57506000546001600160a01b031633145b6104fe5760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b83821461054d5760405162461bcd60e51b815260206004820152601660248201527f496e76616c69642066756e6473207472616e736665720000000000000000000060448201526064016104f5565b60005b84811015610607576105f586868381811061056d5761056d613f15565b90506020020160208101906105829190613d3d565b8386868581811061059557610595613f15565b905060200201356000146105c1578686858181106105b5576105b5613f15565b90506020020135611a5b565b6105f08989868181106105d6576105d6613f15565b90506020020160208101906105eb9190613d3d565b6119d1565b611a5b565b806105ff81613f41565b915050610550565b505050505050565b600061061e8686868686611b26565b9695505050505050565b610630611c87565b60005b818110156106a857600283838381811061064f5761064f613f15565b90506020020160208101906106649190613d3d565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b03909216919091179055806106a081613f41565b915050610633565b505050565b60006106bc8989898989611b26565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106106f6576106f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490610733908790879086903390600401613ebc565b600060405180830381600087803b15801561074d57600080fd5b505af1158015610761573d6000803e3d6000fd5b505050505098975050505050505050565b60606107828a8a8a8a8a8a611cb4565b604051633d318f9560e21b81529091506001600160a01b0385169063f4c63e54906107b7908690869086903390600401613ebc565b600060405180830381600087803b1580156107d157600080fd5b505af11580156107e5573d6000803e3d6000fd5b505050509998505050505050505050565b6107fe611c87565b6108086000611f10565b565b60015433906001600160a01b031681146108425760405163118cdaa760e01b81526001600160a01b03821660048201526024016104f5565b61084b81611f10565b50565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290526040805160608101825260008082526020820181905291810191909152600036600061091e565b600080823560f01c8080156108f55760018114610900577f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acc8201549350600285019250610917565b600285019250610917565b6001600160a01b03853560501c1693506016850192505b5050915091565b6000600461092b816108ad565b9150915081875261093b816108ad565b606089018290529092506001810191503560f81c801561096a578135600882602003021c602089015280820191505b50803560f81c6001820191508135600882602003021c8060808a01528183019250823560e81c915062ffffff8262ffffff0382020460a08a015250506003810190506109b5816108ad565b915094506109c2816108ad565b9092509050816109d0578491505b8160408801526109df816108ad565b60c089810192909252803590911c8752600881013560f81c925060090190508115610a1f57803560c01c6020870152600881013560601c6040870152601c015b6001810193503560f81c6020029150610a3d90508583838688611b26565b9550505050505090565b606060008180600660043560f890811c90600535901c8167ffffffffffffffff811115610a7657610a76613251565b604051908082528060200260200182016040528015610ac157816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610a945790505b5094508067ffffffffffffffff811115610add57610add613251565b604051908082528060200260200182016040528015610b2f57816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610afb5790505b509350610b3b836108ad565b9096506003810193503560e81c600080805b85811015610bba576020808202018901519150610b69876108ad565b8184526001810198509093503560f81c8015610b94578735600882602003021c602084015280880197505b50610b9e876108ad565b9750925082610bab578992505b60408201839052600101610b4d565b5060005b84811015610c31576020808202018801519150610bda876108ad565b97509250828252863560f81c6001880197508735600882602003021c806020850152818901985062ffffff8662ffffff0382020460408501525050610c1e876108ad565b6060840182905297509250600101610bbe565b505060408051606081018252600080825260208201819052918101919091529350610c5b92505050565b813560c01c8152600982019136906000906008013560f81c8015610c9757843560c01c6020850152600885013560601c6040850152601c909401935b505050600182016020833560f81c02610cb4868684848b88611cb4565b97505050505050505090565b6003546060906001600160a01b0316331480610ce657506000546001600160a01b031633145b610d325760405162461bcd60e51b815260206004820152601360248201527f41646472657373206e6f7420616c6c6f7765640000000000000000000000000060448201526064016104f5565b6000865167ffffffffffffffff811115610d4e57610d4e613251565b604051908082528060200260200182016040528015610d77578160200160208202803683370190505b5090506000875167ffffffffffffffff811115610d9657610d96613251565b604051908082528060200260200182016040528015610dbf578160200160208202803683370190505b50905060005b8851811015610f1257888181518110610de057610de0613f15565b602002602001015160000151828281518110610dfe57610dfe613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050888181518110610e3057610e30613f15565b602002602001015160200151600014610e6657888181518110610e5557610e55613f15565b602002602001015160200151610e88565b610e88828281518110610e7b57610e7b613f15565b60200260200101516119d1565b838281518110610e9a57610e9a613f15565b602002602001018181525050610f00828281518110610ebb57610ebb613f15565b60200260200101518a8381518110610ed557610ed5613f15565b602002602001015160400151858481518110610ef357610ef3613f15565b6020026020010151611a5b565b80610f0a81613f41565b915050610dc5565b506000875167ffffffffffffffff811115610f2f57610f2f613251565b604051908082528060200260200182016040528015610f58578160200160208202803683370190505b5090506000885167ffffffffffffffff811115610f7757610f77613251565b604051908082528060200260200182016040528015610fa0578160200160208202803683370190505b50905060005b895181101561104357898181518110610fc157610fc1613f15565b602002602001015160000151828281518110610fdf57610fdf613f15565b60200260200101906001600160a01b031690816001600160a01b031681525050611014828281518110610e7b57610e7b613f15565b83828151811061102657611026613f15565b60209081029190910101528061103b81613f41565b915050610fa6565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e27390600090611079908c908c908a903390600401613ebc565b6000604051808303818588803b15801561109257600080fd5b505af11580156110a6573d6000803e3d6000fd5b5050505050885167ffffffffffffffff8111156110c5576110c5613251565b6040519080825280602002602001820160405280156110ee578160200160208202803683370190505b50945060005b895181101561127b5782818151811061110f5761110f613f15565b602002602001015161112c838381518110610e7b57610e7b613f15565b6111369190613f5a565b86828151811061114857611148613f15565b60200260200101818152505089818151811061116657611166613f15565b60200260200101516040015186828151811061118457611184613f15565b602002602001015110156111da5760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b6112698a82815181106111ef576111ef613f15565b60200260200101516000015160006001600160a01b03168c848151811061121857611218613f15565b6020026020010151606001516001600160a01b031614611255578b838151811061124457611244613f15565b602002602001015160600151611257565b335b888481518110610ef357610ef3613f15565b8061127381613f41565b9150506110f4565b507f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3033858588858e5167ffffffffffffffff8111156112bc576112bc613251565b6040519080825280602002602001820160405280156112e5578160200160208202803683370190505b50600080600060405161130099989796959493929190613fa6565b60405180910390a15050505095945050505050565b6002818154811061132557600080fd5b6000918252602090912001546001600160a01b0316905081565b600061134f878787878787611f29565b979650505050505050565b611362611c87565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f1535fa8f7275b71050af30bf7f74391b45be7ba2b545fd28279dafe9b50f642490600090a250565b60006113bc8a8a8a8a8a8a611f29565b604080516001808252818301909252919250600091906020808301908036833701905050905081816000815181106113f6576113f6613f15565b6020908102919091010152604051633d318f9560e21b81526001600160a01b0386169063f4c63e5490611433908790879086903390600401613ebc565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b50505050509998505050505050505050565b61147b611c87565b600180546001600160a01b0383166001600160a01b031990911681179091556114ac6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b606061134f878787878787611cb4565b606061151a60405180606001604052806060815260200160008152602001600081525090565b6060600080341161152c57895161153a565b60018a5161153a9190613f5a565b905060405180606001604052808267ffffffffffffffff81111561156057611560613251565b6040519080825280602002602001820160405280156115a557816020015b604080518082019091526000808252602082015281526020019060019003908161157e5790505b5081526020018c6020015181526020018c6040015181525092508067ffffffffffffffff8111156115d8576115d8613251565b60405190808252806020026020018201604052801561161d57816020015b60408051808201909152600080825260208201528152602001906001900390816115f65790505b509150506000805b8a518110156118ee5760006001600160a01b03168b828151811061164b5761164b613f15565b6020026020010151600001516001600160a01b0316036116d3578a818151811061167757611677613f15565b6020026020010151602001516000036116ae57348b828151811061169d5761169d613f15565b602002602001015160200181815250505b8a81815181106116c0576116c0613f15565b60200260200101516020015191506118dc565b8a81815181106116e5576116e5613f15565b6020026020010151602001516000036117a2578a818151811061170a5761170a613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f919061404c565b8b828151811061179157611791613f15565b602002602001015160200181815250505b600082156117ba576117b5600183613f5a565b6117bc565b815b90508b82815181106117d0576117d0613f15565b602002602001015160000151856000015182815181106117f2576117f2613f15565b60209081029190910101516001600160a01b0390911690528b518c908390811061181e5761181e613f15565b6020026020010151602001518560000151828151811061184057611840613f15565b602002602001015160200181815250508b828151811061186257611862613f15565b60200260200101516040015184828151811061188057611880613f15565b60209081029190910101516001600160a01b0390911690528b518c90839081106118ac576118ac613f15565b6020026020010151602001518482815181106118ca576118ca613f15565b60200260200101516020018181525050505b806118e681613f41565b915050611625565b508034146119305760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b50895160608b01516040517fedd9444b0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163edd9444b9161198391869186913391906004016140f8565b600060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b505050506119c3898989898989612004565b9a9950505050505050505050565b60006001600160a01b0382166119e8575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a50919061404c565b92915050565b919050565b6001600160a01b038316611b12576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ab6576040519150601f19603f3d011682016040523d82523d6000602084013e611abb565b606091505b5050905080611b0c5760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c65640000000000000000000000000060448201526064016104f5565b50505050565b6106a86001600160a01b0384168383612bb4565b84516000906001600160a01b0316611b99578560200151600003611b4f57346020870152611c7a565b85602001513414611b945760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b611c7a565b3415611bd95760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b8560200151600003611c565785516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c50919061404c565b60208701525b604086015160208701518751611c7a926001600160a01b0390911691339190612c28565b61061e8686868686612c61565b6000546001600160a01b031633146108085760405163118cdaa760e01b81523360048201526024016104f5565b60606000805b8851811015611ec05760006001600160a01b0316898281518110611ce057611ce0613f15565b6020026020010151600001516001600160a01b031603611d6857888181518110611d0c57611d0c613f15565b602002602001015160200151600003611d435734898281518110611d3257611d32613f15565b602002602001015160200181815250505b888181518110611d5557611d55613f15565b6020026020010151602001519150611eae565b888181518110611d7a57611d7a613f15565b602002602001015160200151600003611e3757888181518110611d9f57611d9f613f15565b6020908102919091010151516040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e14919061404c565b898281518110611e2657611e26613f15565b602002602001015160200181815250505b611eae338a8381518110611e4d57611e4d613f15565b6020026020010151604001518b8481518110611e6b57611e6b613f15565b6020026020010151602001518c8581518110611e8957611e89613f15565b6020026020010151600001516001600160a01b0316612c28909392919063ffffffff16565b80611eb881613f41565b915050611cba565b50803414611f025760405162461bcd60e51b815260206004820152600f60248201526e57726f6e67206d73672e76616c756560881b60448201526064016104f5565b61047e888888888888612004565b600180546001600160a01b031916905561084b81613177565b85516040805160a08101825287516001600160a01b0390811660608084019182526020808c0180516080870152928552808d015181860152858d015185870152855180870187528c870151851681529251908301528b015193517f30f28b7a00000000000000000000000000000000000000000000000000000000815260009592909216936330f28b7a93611fc59390929133916004016141ae565b600060405180830381600087803b158015611fdf57600080fd5b505af1158015611ff3573d6000803e3d6000fd5b5050505061134f8686868686612c61565b60606000875167ffffffffffffffff81111561202257612022613251565b60405190808252806020026020018201604052801561204b578160200160208202803683370190505b5090506000885167ffffffffffffffff81111561206a5761206a613251565b604051908082528060200260200182016040528015612093578160200160208202803683370190505b50905060005b89518110156122b3578981815181106120b4576120b4613f15565b6020026020010151602001518382815181106120d2576120d2613f15565b6020026020010181815250508981815181106120f0576120f0613f15565b60200260200101516000015182828151811061210e5761210e613f15565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b818110156121e6578a818151811061214b5761214b613f15565b6020026020010151600001516001600160a01b03168b838151811061217257612172613f15565b6020026020010151600001516001600160a01b0316036121d45760405162461bcd60e51b815260206004820152601760248201527f4475706c696361746520736f7572636520746f6b656e7300000000000000000060448201526064016104f5565b806121de81613f41565b915050612131565b5060005b89518110156122a05789818151811061220557612205613f15565b6020026020010151600001516001600160a01b03168b838151811061222c5761222c613f15565b6020026020010151600001516001600160a01b03160361228e5760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b8061229881613f41565b9150506121ea565b50806122ab81613f41565b915050612099565b506000885167ffffffffffffffff8111156122d0576122d0613251565b6040519080825280602002602001820160405280156122f9578160200160208202803683370190505b50905060005b895181101561250d5789818151811061231a5761231a613f15565b6020026020010151602001518a828151811061233857612338613f15565b60200260200101516040015111156123925760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008a82815181106123a6576123a6613f15565b602002602001015160400151116123ff5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b60005b818110156124b7578a818151811061241c5761241c613f15565b6020026020010151600001516001600160a01b03168b838151811061244357612443613f15565b6020026020010151600001516001600160a01b0316036124a55760405162461bcd60e51b815260206004820152601c60248201527f4475706c69636174652064657374696e6174696f6e20746f6b656e730000000060448201526064016104f5565b806124af81613f41565b915050612402565b506124de8a82815181106124cd576124cd613f15565b6020026020010151600001516119d1565b8282815181106124f0576124f0613f15565b60209081029190910101528061250581613f41565b9150506122ff565b5060405163cb70e27360e01b81526001600160a01b0387169063cb70e273903490612542908c908c9089903390600401613ebc565b6000604051808303818588803b15801561255b57600080fd5b505af115801561256f573d6000803e3d6000fd5b50505050506000895167ffffffffffffffff81111561259057612590613251565b6040519080825280602002602001820160405280156125b9578160200160208202803683370190505b509050895167ffffffffffffffff8111156125d6576125d6613251565b6040519080825280602002602001820160405280156125ff578160200160208202803683370190505b50865190955060201c61ffff16600081900361261a5750611f405b61271081111561266c5760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60005b8b51811015612aa65783818151811061268a5761268a613f15565b60200260200101516126a78d83815181106124cd576124cd613f15565b6126b19190613f5a565b8782815181106126c3576126c3613f15565b6020026020010181815250506000886020015167ffffffffffffffff1611156128af5760408801516001600160a01b03166127405760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b6127536032670de0b6b3a7640000614226565b886020015167ffffffffffffffff16111561279f5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b60408801516001600160a01b03163014612837576128378c82815181106127c8576127c8613f15565b6020026020010151600001518960400151670de0b6b3a76400006127106127ef9190614248565b858c6020015167ffffffffffffffff168c878151811061281157612811613f15565b60200260200101516128239190614248565b61282d9190614248565b6105f09190614226565b670de0b6b3a7640000886020015167ffffffffffffffff16670de0b6b3a76400006128629190613f5a565b88838151811061287457612874613f15565b60200260200101516128869190614248565b6128909190614226565b8782815181106128a2576128a2613f15565b6020026020010181815250505b8b81815181106128c1576128c1613f15565b6020026020010151602001518782815181106128df576128df613f15565b60200260200101516128f1919061425f565b83828151811061290357612903613f15565b602002602001018181525050600083828151811061292357612923613f15565b602002602001015113801561293d5750875160301c600116155b1561297f578b818151811061295457612954613f15565b60200260200101516020015187828151811061297257612972613f15565b6020026020010181815250505b8b818151811061299157612991613f15565b6020026020010151604001518782815181106129af576129af613f15565b60200260200101511015612a055760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b612a948c8281518110612a1a57612a1a613f15565b60200260200101516000015160006001600160a01b03168e8481518110612a4357612a43613f15565b6020026020010151606001516001600160a01b031614612a80578d8381518110612a6f57612a6f613f15565b602002602001015160600151612a82565b335b898481518110610ef357610ef3613f15565b80612a9e81613f41565b91505061266f565b505060008a5167ffffffffffffffff811115612ac457612ac4613251565b604051908082528060200260200182016040528015612aed578160200160208202803683370190505b50905060005b8b51811015612b56578b8181518110612b0e57612b0e613f15565b602002602001015160000151828281518110612b2c57612b2c613f15565b6001600160a01b039092166020928302919091019091015280612b4e81613f41565b915050612af3565b50865160208801516040808a015190517f2c96555a96d94780f3a97aeb724514e80e331842f3143742d85da5aa68df9d3093612b9d9333938b938b938e938a938c93613fa6565b60405180910390a150505050509695505050505050565b6040516001600160a01b038381166024830152604482018390526106a891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506131c7565b6040516001600160a01b038481166024830152838116604483015260648201839052611b0c9186918216906323b872dd90608401612be1565b600085608001518660a001511115612cbb5760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2067726561746572207468616e2071756f746500000000000060448201526064016104f5565b60008660a0015111612d0f5760405162461bcd60e51b815260206004820152601660248201527f4d696e696d756d206f7574707574206973207a65726f0000000000000000000060448201526064016104f5565b85606001516001600160a01b031686600001516001600160a01b031603612d785760405162461bcd60e51b815260206004820152601760248201527f417262697472616765206e6f7420737570706f7274656400000000000000000060448201526064016104f5565b6000612d8787606001516119d1565b6040805160018082528183019092529192506000919060208083019080368337019050509050876020015181600081518110612dc557612dc5613f15565b602090810291909101015260405163cb70e27360e01b81526001600160a01b0386169063cb70e273903490612e04908b908b9087903390600401613ebc565b6000604051808303818588803b158015612e1d57600080fd5b505af1158015612e31573d6000803e3d6000fd5b505050505081612e4489606001516119d1565b612e4e9190613f5a565b602085015190935067ffffffffffffffff161561301c5760408401516001600160a01b0316612ebf5760405162461bcd60e51b815260206004820152601260248201527f4e756c6c2066656520726563697069656e74000000000000000000000000000060448201526064016104f5565b612ed26032670de0b6b3a7640000614226565b846020015167ffffffffffffffff161115612f1e5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016104f5565b835160201c61ffff166000819003612f355750611f405b612710811115612f875760405162461bcd60e51b815260206004820152601060248201527f496e76616c69642052656620436f64650000000000000000000000000000000060448201526064016104f5565b60408501516001600160a01b03163014612fd957612fd989606001518660400151670de0b6b3a7640000612710612fbe9190614248565b84896020015167ffffffffffffffff16896128239190614248565b670de0b6b3a7640000856020015167ffffffffffffffff16670de0b6b3a76400006130049190613f5a565b61300e9086614248565b6130189190614226565b9350505b600088608001518461302e919061425f565b90506000811380156130455750845160301c600116155b1561305257886080015193505b8860a001518410156130a65760405162461bcd60e51b815260206004820152601760248201527f536c697070616765204c696d697420457863656564656400000000000000000060448201526064016104f5565b606089015160c08a01516130d591906001600160a01b0316156130cd578a60c001516130cf565b335b86611a5b565b6020808a01518a516060808d015189518a8601516040808d01518151338152988901979097526001600160a01b03958616908801529286018a9052908316608086015260a0850186905267ffffffffffffffff90811660c08601521660e0840152166101008201527f69db20ca9e32403e6c56e5193b3e3b2827ae5c430ccfdea392ba950d2d1ab2bc906101200160405180910390a150505095945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080602060008451602086016000885af1806131ea576040513d6000823e3d81fd5b50506000513d9150811561320257806001141561320f565b6001600160a01b0384163b155b15611b0c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016104f5565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561328a5761328a613251565b60405290565b6040516060810167ffffffffffffffff8111828210171561328a5761328a613251565b604051601f8201601f1916810167ffffffffffffffff811182821017156132dc576132dc613251565b604052919050565b80356001600160a01b0381168114611a5657600080fd5b60006080828403121561330d57600080fd5b613315613267565b9050613320826132e4565b81526020808301358183015260408301356040830152606083013567ffffffffffffffff8082111561335157600080fd5b818501915085601f83011261336557600080fd5b81358181111561337757613377613251565b613389601f8201601f191685016132b3565b9150808252868482850101111561339f57600080fd5b808484018584013760008482840101525080606085015250505092915050565b600067ffffffffffffffff8211156133d9576133d9613251565b5060051b60200190565b600082601f8301126133f457600080fd5b81356020613409613404836133bf565b6132b3565b8281526060928302850182019282820191908785111561342857600080fd5b8387015b8581101561347d5781818a0312156134445760008081fd5b61344c613290565b613455826132e4565b81528582013586820152604061346c8184016132e4565b90820152845292840192810161342c565b5090979650505050505050565b600082601f83011261349b57600080fd5b813560206134ab613404836133bf565b82815260079290921b840181019181810190868411156134ca57600080fd5b8286015b8481101561352b57608081890312156134e75760008081fd5b6134ef613267565b6134f8826132e4565b815281850135858201526040808301359082015260606135198184016132e4565b908201528352918301916080016134ce565b509695505050505050565b60008083601f84011261354857600080fd5b50813567ffffffffffffffff81111561356057600080fd5b60208301915083602082850101111561357857600080fd5b9250929050565b803567ffffffffffffffff81168114611a5657600080fd5b6000606082840312156135a957600080fd5b6135b1613290565b90506135bc8261357f565b81526135ca6020830161357f565b60208201526135db604083016132e4565b604082015292915050565b6000806000806000806000806000806101408b8d03121561360657600080fd5b8a3567ffffffffffffffff8082111561361e57600080fd5b61362a8e838f016132fb565b9b5060208d013591508082111561364057600080fd5b61364c8e838f016133e3565b9a5060408d013591508082111561366257600080fd5b61366e8e838f0161348a565b995060608d013591508082111561368457600080fd5b6136908e838f01613536565b90995097508791506136a460808e016132e4565b96506136b38e60a08f01613597565b95506136c26101008e016132e4565b94506101208d01359150808211156136d957600080fd5b506136e68d828e01613536565b915080935050809150509295989b9194979a5092959850565b600081518084526020808501945080840160005b8381101561372f57815187529582019590820190600101613713565b509495945050505050565b60208152600061374d60208301846136ff565b9392505050565b6000806000806000806000610100888a03121561377057600080fd5b873567ffffffffffffffff8082111561378857600080fd5b6137948b838c016132fb565b985060208a01359150808211156137aa57600080fd5b6137b68b838c016133e3565b975060408a01359150808211156137cc57600080fd5b6137d88b838c0161348a565b965060608a01359150808211156137ee57600080fd5b506137fb8a828b01613536565b909550935061380e9050608089016132e4565b915061381d8960a08a01613597565b905092959891949750929550565b60008083601f84011261383d57600080fd5b50813567ffffffffffffffff81111561385557600080fd5b6020830191508360208260051b850101111561357857600080fd5b60008060008060006060868803121561388857600080fd5b853567ffffffffffffffff808211156138a057600080fd5b6138ac89838a0161382b565b909750955060208801359150808211156138c557600080fd5b506138d28882890161382b565b90945092506138e59050604087016132e4565b90509295509295909350565b600060e0828403121561390357600080fd5b60405160e0810181811067ffffffffffffffff8211171561392657613926613251565b604052905080613935836132e4565b81526020830135602082015261394d604084016132e4565b604082015261395e606084016132e4565b60608201526080830135608082015260a083013560a082015261398360c084016132e4565b60c08201525092915050565b600080600080600061018086880312156139a857600080fd5b6139b287876138f1565b945060e086013567ffffffffffffffff8111156139ce57600080fd5b6139da88828901613536565b90955093506139ee905061010087016132e4565b91506138e5876101208801613597565b60008060208385031215613a1157600080fd5b823567ffffffffffffffff811115613a2857600080fd5b613a348582860161382b565b90969095509350505050565b6000806000806000806000806101c0898b031215613a5d57600080fd5b613a678a8a6138f1565b975060e089013567ffffffffffffffff80821115613a8457600080fd5b613a908c838d01613536565b9099509750879150613aa56101008c016132e4565b9650613ab58c6101208d01613597565b9550613ac46101808c016132e4565b94506101a08b0135915080821115613adb57600080fd5b50613ae88b828c01613536565b999c989b5096995094979396929594505050565b60008060008060008060008060006101208a8c031215613b1b57600080fd5b893567ffffffffffffffff80821115613b3357600080fd5b613b3f8d838e016133e3565b9a5060208c0135915080821115613b5557600080fd5b613b618d838e0161348a565b995060408c0135915080821115613b7757600080fd5b613b838d838e01613536565b9099509750879150613b9760608d016132e4565b9650613ba68d60808e01613597565b9550613bb460e08d016132e4565b94506101008c0135915080821115613bcb57600080fd5b50613bd88c828d01613536565b915080935050809150509295985092959850929598565b600080600080600060808688031215613c0757600080fd5b853567ffffffffffffffff80821115613c1f57600080fd5b613c2b89838a016133e3565b96506020880135915080821115613c4157600080fd5b613c4d89838a0161348a565b95506040880135915080821115613c6357600080fd5b50613c7088828901613536565b90945092506138e59050606087016132e4565b600060208284031215613c9557600080fd5b5035919050565b6000806000806000806101a08789031215613cb657600080fd5b863567ffffffffffffffff80821115613cce57600080fd5b613cda8a838b016132fb565b9750613ce98a60208b016138f1565b9650610100890135915080821115613d0057600080fd5b50613d0d89828a01613536565b9095509350613d21905061012088016132e4565b9150613d31886101408901613597565b90509295509295509295565b600060208284031215613d4f57600080fd5b61374d826132e4565b60008060008060008060008060006101e08a8c031215613d7757600080fd5b893567ffffffffffffffff80821115613d8f57600080fd5b613d9b8d838e016132fb565b9a50613daa8d60208e016138f1565b99506101008c0135915080821115613dc157600080fd5b613dcd8d838e01613536565b9099509750879150613de26101208d016132e4565b9650613df28d6101408e01613597565b9550613e016101a08d016132e4565b94506101c08c0135915080821115613bcb57600080fd5b60008060008060008060e08789031215613e3157600080fd5b863567ffffffffffffffff80821115613e4957600080fd5b613e558a838b016133e3565b97506020890135915080821115613e6b57600080fd5b613e778a838b0161348a565b96506040890135915080821115613e8d57600080fd5b50613e9a89828a01613536565b9095509350613ead9050606088016132e4565b9150613d318860808901613597565b60608152836060820152838560808301376000608085830101526000601f19601f86011682016080838203016020840152613efa60808201866136ff565b9150506001600160a01b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613f5357613f53613f2b565b5060010190565b81810381811115611a5057611a50613f2b565b600081518084526020808501945080840160005b8381101561372f5781516001600160a01b031687529582019590820190600101613f81565b60006101206001600160a01b03808d168452816020850152613fca8285018d6136ff565b91508382036040850152613fde828c613f6d565b91508382036060850152613ff2828b6136ff565b91508382036080850152614006828a613f6d565b915083820360a085015261401a82896136ff565b67ffffffffffffffff97881660c08601529590961660e084015250509216610100909201919091529695505050505050565b60006020828403121561405e57600080fd5b5051919050565b600081518084526020808501945080840160005b8381101561372f5761409f87835180516001600160a01b03168252602090810151910152565b6040969096019590820190600101614079565b6000815180845260005b818110156140d8576020818501810151868301820152016140bc565b506000602082860101526020601f19601f83011685010191505092915050565b60808152600060e082018651606060808501528181518084526101008601915060209350838301925060005b8181101561415d5761414a83855180516001600160a01b03168252602090810151910152565b9284019260409290920191600101614124565b50508289015160a0860152604089015160c0860152848103838601526141838189614065565b9250505061419c60408401866001600160a01b03169052565b828103606084015261134f81856140b2565b60006101006141d183885180516001600160a01b03168252602090810151910152565b6020870151604084015260408701516060840152614205608084018780516001600160a01b03168252602090810151910152565b6001600160a01b03851660c08401528060e084015261134f818401856140b2565b60008261424357634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417611a5057611a50613f2b565b818103600083128015838313168383128216171561427f5761427f613f2b565b509291505056fea2646970667358221220d74b0ec85c5d185ea6ecfd1e3c05b38fd2a7ff7620e313048b0f258449fd73a764736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000636843c30b6b10d3dc9af803e7a7956aa994c
-----Decoded View---------------
Arg [0] : owner (address): 0x000636843C30b6B10d3DC9aF803E7A7956aa994C
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000636843c30b6b10d3dc9af803e7a7956aa994c
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1,955,359.23
Net Worth in FRAX
2,405,857.066792
Token Allocations
EURC
63.94%
UXLINK
34.08%
USDT.Z
0.17%
Others
1.82%
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| BSC | 63.89% | $1.06 | 1,174,109.1536 | $1,249,241.13 | |
| BSC | 0.17% | $1 | 3,275.112 | $3,286.72 | |
| BSC | 0.01% | $0.002755 | 102,610.1555 | $282.67 | |
| BSC | <0.01% | $0.998316 | 98.2594 | $98.09 | |
| BSC | <0.01% | $3,313.12 | 0.0286 | $94.6 | |
| BSC | <0.01% | $0.998781 | 88.1677 | $88.06 | |
| BSC | <0.01% | $945.1 | 0.0884 | $83.52 | |
| BSC | <0.01% | $1 | 79.3264 | $79.35 | |
| BSC | <0.01% | $5.8 | 12.7742 | $74.11 | |
| BSC | <0.01% | $2.07 | 30.6751 | $63.58 | |
| BSC | <0.01% | $0.723778 | 86.3565 | $62.5 | |
| BSC | <0.01% | $95,196 | 0.00046954 | $44.7 | |
| BSC | <0.01% | $143.82 | 0.3086 | $44.38 | |
| BSC | <0.01% | $0.149404 | 293.6813 | $43.88 | |
| BSC | <0.01% | $95,510.11 | 0.00041942 | $40.06 | |
| BSC | <0.01% | $75.01 | 0.5145 | $38.59 | |
| BSC | <0.01% | $0.999807 | 37.5502 | $37.54 | |
| BSC | <0.01% | $404.95 | 0.0837 | $33.91 | |
| BSC | <0.01% | $13.83 | 2.2521 | $31.15 | |
| BSC | <0.01% | $0.006527 | 4,678.7033 | $30.54 | |
| BSC | <0.01% | $95,490.58 | 0.00030325 | $28.96 | |
| BSC | <0.01% | $0.009866 | 2,292.1688 | $22.62 | |
| BSC | <0.01% | $62.75 | 0.342 | $21.46 | |
| BSC | <0.01% | $0.401247 | 50.7455 | $20.36 | |
| BSC | <0.01% | $176.14 | 0.1066 | $18.78 | |
| BSC | <0.01% | $1.7 | 10.648 | $18.1 | |
| BSC | <0.01% | $2.13 | 7.4981 | $15.97 | |
| BSC | <0.01% | $13.16 | 1.1946 | $15.72 | |
| BSC | <0.01% | $0.001781 | 8,211.8351 | $14.63 | |
| BSC | <0.01% | $1,035.42 | 0.0141 | $14.62 | |
| BSC | <0.01% | $0.998293 | 14.5584 | $14.53 | |
| BSC | <0.01% | $4.28 | 3.323 | $14.22 | |
| BSC | <0.01% | $0.999603 | 13.1709 | $13.17 | |
| BSC | <0.01% | $0.94649 | 13.7845 | $13.05 | |
| BSC | <0.01% | $942.97 | 0.0134 | $12.6 | |
| BSC | <0.01% | $999.44 | 0.0121 | $12.11 | |
| BSC | <0.01% | $0.056593 | 191.1815 | $10.82 | |
| BSC | <0.01% | $0.104855 | 90.8411 | $9.53 | |
| BSC | <0.01% | $18.51 | 0.5066 | $9.38 | |
| BSC | <0.01% | $0.074158 | 125.9634 | $9.34 | |
| BSC | <0.01% | $0.001194 | 6,997.0296 | $8.35 | |
| BSC | <0.01% | $0.025294 | 322.2656 | $8.15 | |
| BSC | <0.01% | $0.99946 | 7.9478 | $7.94 | |
| BSC | <0.01% | $0.37761 | 20.9317 | $7.9 | |
| BSC | <0.01% | $13.91 | 0.4096 | $5.7 | |
| BSC | <0.01% | $3,281.38 | 0.00168166 | $5.52 | |
| BSC | <0.01% | $0.00 | 5.2746 | $0.00 | |
| BSC | <0.01% | $1 | 5.1876 | $5.2 | |
| BSC | <0.01% | $0.242255 | 21.4556 | $5.2 | |
| BSC | <0.01% | $0.027379 | 180.6831 | $4.95 | |
| BSC | <0.01% | $0.000006 | 823,660.4242 | $4.87 | |
| BSC | <0.01% | $0.430599 | 11.1026 | $4.78 | |
| BSC | <0.01% | $1,042.81 | 0.00456291 | $4.76 | |
| BSC | <0.01% | $1.57 | 2.9982 | $4.71 | |
| BSC | <0.01% | $95,261 | 0.00004874 | $4.64 | |
| BSC | <0.01% | $0.885112 | 5.2225 | $4.62 | |
| BSC | <0.01% | $0.020583 | 222.5172 | $4.58 | |
| BSC | <0.01% | $0.010479 | 432.738 | $4.53 | |
| BSC | <0.01% | $5.43 | 0.8055 | $4.37 | |
| BSC | <0.01% | $0.221822 | 19.5627 | $4.34 | |
| BSC | <0.01% | $6.33 | 0.6728 | $4.26 | |
| BSC | <0.01% | <$0.000001 | 203,960,817.4681 | $3.86 | |
| BSC | <0.01% | $0.104144 | 36.1738 | $3.77 | |
| BSC | <0.01% | $0.071705 | 51.9999 | $3.73 | |
| BSC | <0.01% | $2.6 | 1.4099 | $3.66 | |
| BSC | <0.01% | $0.001121 | 3,209.6543 | $3.6 | |
| BSC | <0.01% | $0.011988 | 300.0244 | $3.6 | |
| BSC | <0.01% | $0.031261 | 109.0665 | $3.41 | |
| BSC | <0.01% | <$0.000001 | 36,618,382.2743 | $3.25 | |
| BSC | <0.01% | $0.017454 | 172.2891 | $3.01 | |
| BSC | <0.01% | $815.21 | 0.00346098 | $2.82 | |
| BSC | <0.01% | $94,425 | 0.00002871 | $2.71 | |
| BSC | <0.01% | $0.040257 | 63.3678 | $2.55 | |
| BSC | <0.01% | $0.274581 | 8.9864 | $2.47 | |
| BSC | <0.01% | $0.123973 | 19.8946 | $2.47 | |
| BSC | <0.01% | $0.169443 | 12.9002 | $2.19 | |
| BSC | <0.01% | $0.043568 | 46.17 | $2.01 | |
| BSC | <0.01% | $2.12 | 0.9327 | $1.98 | |
| BSC | <0.01% | $0.005545 | 346.0013 | $1.92 | |
| BSC | <0.01% | $1.27 | 1.4909 | $1.89 | |
| BSC | <0.01% | <$0.000001 | 114,419,855.7132 | $1.89 | |
| BSC | <0.01% | $94,754 | 0.00001907 | $1.81 | |
| BSC | <0.01% | $0.022861 | 70.8274 | $1.62 | |
| BSC | <0.01% | $0.026359 | 59.1371 | $1.56 | |
| BSC | <0.01% | $0.139586 | 10.7184 | $1.5 | |
| BSC | <0.01% | $0.025471 | 58.234 | $1.48 | |
| BSC | <0.01% | $3,535.65 | 0.0003955 | $1.4 | |
| BSC | <0.01% | $0.000028 | 48,778.3122 | $1.38 | |
| BSC | <0.01% | $0.000001 | 1,427,580.9864 | $1.34 | |
| BSC | <0.01% | $0.013458 | 94.2155 | $1.27 | |
| BSC | <0.01% | $0.403869 | 3.0456 | $1.23 | |
| BSC | <0.01% | $1.22 | 0.97 | $1.18 | |
| BSC | <0.01% | $0.010702 | 110.1949 | $1.18 | |
| BSC | <0.01% | $2.23 | 0.5202 | $1.16 | |
| BSC | <0.01% | $3.44 | 0.3293 | $1.13 | |
| BSC | <0.01% | <$0.000001 | 1,570,666,039.1986 | $1.07 | |
| BSC | <0.01% | $1.59 | 0.6345 | $1.01 | |
| BSC | <0.01% | $1 | 0.963 | $0.963 | |
| BSC | <0.01% | $0.013258 | 71.6466 | $0.9499 | |
| BSC | <0.01% | $0.02917 | 29.9806 | $0.8745 | |
| BSC | <0.01% | $0.062394 | 13.5955 | $0.8482 | |
| BSC | <0.01% | $1.05 | 0.7913 | $0.8332 | |
| BSC | <0.01% | $5.47 | 0.1416 | $0.7746 | |
| BSC | <0.01% | $0.019638 | 38.319 | $0.7525 | |
| BSC | <0.01% | $5.06 | 0.1405 | $0.7111 | |
| BSC | <0.01% | $0.006488 | 105.5343 | $0.6846 | |
| BSC | <0.01% | $0.031537 | 21.5881 | $0.6808 | |
| BSC | <0.01% | $0.002212 | 300.6508 | $0.6651 | |
| BSC | <0.01% | $0.006168 | 105.8446 | $0.6528 | |
| BSC | <0.01% | $0.000051 | 12,495.7932 | $0.6416 | |
| BSC | <0.01% | $2.23 | 0.2848 | $0.6337 | |
| BSC | <0.01% | $0.017555 | 34.1592 | $0.5996 | |
| BSC | <0.01% | $0.003007 | 197.5091 | $0.5938 | |
| BSC | <0.01% | $597.11 | 0.000956 | $0.5708 | |
| BSC | <0.01% | $0.007588 | 74.7173 | $0.5669 | |
| BSC | <0.01% | $0.093941 | 5.8835 | $0.5526 | |
| BSC | <0.01% | $0.08507 | 6.427 | $0.5467 | |
| BSC | <0.01% | $0.002199 | 214.9772 | $0.4728 | |
| BSC | <0.01% | $0.00 | 0.5541 | $0.00 | |
| BSC | <0.01% | $0.004778 | 93.8363 | $0.4483 | |
| BSC | <0.01% | $0.004867 | 83.9521 | $0.4086 | |
| BSC | <0.01% | $0.013038 | 29.8806 | $0.3895 | |
| BSC | <0.01% | $0.037169 | 10.4643 | $0.3889 | |
| BSC | <0.01% | $0.362768 | 1.0332 | $0.3748 | |
| BSC | <0.01% | $0.993454 | 0.3643 | $0.3619 | |
| BSC | <0.01% | $0.000009 | 42,106.3369 | $0.3613 | |
| BSC | <0.01% | $0.003018 | 119.0165 | $0.3591 | |
| BSC | <0.01% | $0.011068 | 32.3458 | $0.3579 | |
| BSC | <0.01% | $0.000003 | 109,332.7191 | $0.3433 | |
| BSC | <0.01% | $2.15 | 0.1576 | $0.3388 | |
| BSC | <0.01% | $0.002239 | 141.5701 | $0.3169 | |
| BSC | <0.01% | $0.001218 | 257.2555 | $0.3134 | |
| BSC | <0.01% | $0.377687 | 0.8192 | $0.3093 | |
| BSC | <0.01% | $0.016658 | 17.7508 | $0.2956 | |
| BSC | <0.01% | $0.002076 | 131.7219 | $0.2734 | |
| BSC | <0.01% | $0.161087 | 1.6239 | $0.2615 | |
| BSC | <0.01% | $0.050037 | 5.12 | $0.2561 | |
| BSC | <0.01% | $0.000298 | 777.0691 | $0.2317 | |
| BSC | <0.01% | $0.001861 | 115.293 | $0.2145 | |
| BSC | <0.01% | $0.034022 | 5.9214 | $0.2014 | |
| BSC | <0.01% | $0.104144 | 1.918 | $0.1997 | |
| BSC | <0.01% | $1.24 | 0.1536 | $0.1904 | |
| BSC | <0.01% | $0.031773 | 5.8124 | $0.1846 | |
| BSC | <0.01% | $0.003362 | 54.8258 | $0.1843 | |
| BSC | <0.01% | $0.003367 | 53.7279 | $0.1809 | |
| BSC | <0.01% | $1.72 | 0.1027 | $0.1766 | |
| BSC | <0.01% | $0.002163 | 80.8363 | $0.1748 | |
| BSC | <0.01% | $0.81265 | 0.1964 | $0.1595 | |
| BSC | <0.01% | $0.143313 | 1.1044 | $0.1582 | |
| BSC | <0.01% | $0.008773 | 15.8627 | $0.1391 | |
| BSC | <0.01% | $0.002993 | 44.1123 | $0.132 | |
| BSC | <0.01% | $0.006017 | 21.6566 | $0.1303 | |
| BSC | <0.01% | $0.004915 | 26.4726 | $0.1301 | |
| BSC | <0.01% | $0.739798 | 0.1736 | $0.1283 | |
| BSC | <0.01% | $0.007747 | 16.2295 | $0.1257 | |
| BSC | <0.01% | $0.005061 | 24.4841 | $0.1239 | |
| BSC | <0.01% | $0.015837 | 7.6627 | $0.1213 | |
| BSC | <0.01% | $0.012695 | 9.1821 | $0.1165 | |
| BSC | <0.01% | $0.000028 | 3,957.4099 | $0.1114 | |
| BSC | <0.01% | $40.88 | 0.002645 | $0.1081 | |
| BSC | <0.01% | $0.000071 | 1,504.4808 | $0.1061 | |
| BSC | <0.01% | $0.025056 | 4.1929 | $0.105 | |
| BSC | <0.01% | $0.501728 | 0.2055 | $0.1031 | |
| BSC | <0.01% | $0.999768 | 0.103 | $0.103 | |
| ARB | 34.08% | $0.014039 | 47,460,169.4559 | $666,312.78 | |
| ARB | <0.01% | $2.46 | 38.4874 | $94.68 | |
| ARB | <0.01% | $0.999934 | 87.6285 | $87.62 | |
| ARB | <0.01% | $0.999601 | 84.5351 | $84.5 | |
| ARB | <0.01% | $1.01 | 83.7241 | $84.48 | |
| ARB | <0.01% | $1.03 | 74.3456 | $76.65 | |
| ARB | <0.01% | $0.999814 | 66.4635 | $66.45 | |
| ARB | <0.01% | $35.57 | 1.7151 | $61.01 | |
| ARB | <0.01% | $95,441 | 0.0005495 | $52.44 | |
| ARB | <0.01% | $1 | 44.8391 | $44.84 | |
| ARB | <0.01% | $0.220863 | 198.3376 | $43.81 | |
| ARB | <0.01% | $1.69 | 25.2434 | $42.66 | |
| ARB | <0.01% | $3.34 | 12.4002 | $41.42 | |
| ARB | <0.01% | $4,062.49 | 0.0101 | $41.07 | |
| ARB | <0.01% | $0.440466 | 91.4431 | $40.28 | |
| ARB | <0.01% | $0.029978 | 1,308.6044 | $39.23 | |
| ARB | <0.01% | $2.12 | 18.3024 | $38.8 | |
| ARB | <0.01% | $1 | 36.4054 | $36.44 | |
| ARB | <0.01% | $0.999708 | 35.7806 | $35.77 | |
| ARB | <0.01% | $1.16 | 30.5187 | $35.4 | |
| ARB | <0.01% | $3,309.77 | 0.0104 | $34.55 | |
| ARB | <0.01% | $1.01 | 34.0227 | $34.33 | |
| ARB | <0.01% | $3,315.44 | 0.0103 | $34.09 | |
| ARB | <0.01% | $0.043809 | 774.4116 | $33.93 | |
| ARB | <0.01% | $5.43 | 6.1167 | $33.21 | |
| ARB | <0.01% | $95,320 | 0.00031952 | $30.46 | |
| ARB | <0.01% | $95,594 | 0.00031159 | $29.79 | |
| ARB | <0.01% | $8.07 | 3.1676 | $25.56 | |
| ARB | <0.01% | $1.22 | 20.8767 | $25.47 | |
| ARB | <0.01% | $1.76 | 13.972 | $24.59 | |
| ARB | <0.01% | $176.05 | 0.1355 | $23.85 | |
| ARB | <0.01% | $0.97997 | 23.7459 | $23.27 | |
| ARB | <0.01% | $137.99 | 0.1645 | $22.7 | |
| ARB | <0.01% | $13.82 | 1.638 | $22.64 | |
| ARB | <0.01% | $175.93 | 0.1225 | $21.56 | |
| ARB | <0.01% | $3,539.94 | 0.00596404 | $21.11 | |
| ARB | <0.01% | $95,491 | 0.00015979 | $15.26 | |
| ARB | <0.01% | $3,829.65 | 0.00393909 | $15.09 | |
| ARB | <0.01% | $13.84 | 1.0719 | $14.83 | |
| ARB | <0.01% | $1 | 14.0917 | $14.12 | |
| ARB | <0.01% | $0.403228 | 34.595 | $13.95 | |
| ARB | <0.01% | $0.553988 | 24.9991 | $13.85 | |
| ARB | <0.01% | $3,314.18 | 0.00409352 | $13.57 | |
| ARB | <0.01% | $0.000009 | 1,151,323.0417 | $10.66 | |
| ARB | <0.01% | $5.76 | 1.7774 | $10.24 | |
| ARB | <0.01% | $4,059.51 | 0.00224163 | $9.1 | |
| ARB | <0.01% | $0.614039 | 13.9226 | $8.55 | |
| ARB | <0.01% | $0.99976 | 8.1461 | $8.14 | |
| ARB | <0.01% | $0.00 | 7.986 | $0.00 | |
| ARB | <0.01% | $0.762576 | 10.3326 | $7.88 | |
| ARB | <0.01% | $0.010383 | 678.7159 | $7.05 | |
| ARB | <0.01% | $3,314.74 | 0.00197165 | $6.54 | |
| ARB | <0.01% | $2.21 | 2.7194 | $6.01 | |
| ARB | <0.01% | $0.023808 | 229.9271 | $5.47 | |
| ARB | <0.01% | <$0.000001 | 128,057,792.6734 | $5.31 | |
| ARB | <0.01% | $95,494 | 0.00005421 | $5.18 | |
| ARB | <0.01% | $0.018965 | 265.6139 | $5.04 | |
| ARB | <0.01% | $0.077265 | 58.4896 | $4.52 | |
| ARB | <0.01% | $1 | 4.4003 | $4.41 | |
| ARB | <0.01% | $1 | 3.0464 | $3.05 | |
| ARB | <0.01% | $2.13 | 1.3652 | $2.91 | |
| ARB | <0.01% | $1.16 | 2.4621 | $2.86 | |
| ARB | <0.01% | $0.002273 | 1,187.6339 | $2.7 | |
| ARB | <0.01% | $95,249 | 0.0000254 | $2.42 | |
| ARB | <0.01% | $0.999402 | 2.3813 | $2.38 | |
| ARB | <0.01% | $0.206374 | 11.3529 | $2.34 | |
| ARB | <0.01% | $182.56 | 0.0128 | $2.34 | |
| ARB | <0.01% | $0.220677 | 9.7598 | $2.15 | |
| ARB | <0.01% | $0.000273 | 7,295.8415 | $2 | |
| ARB | <0.01% | $0.983385 | 2.0008 | $1.97 | |
| ARB | <0.01% | $0.000007 | 270,347.0117 | $1.88 | |
| ARB | <0.01% | $0.14647 | 12.306 | $1.8 | |
| ARB | <0.01% | $0.007816 | 216.1616 | $1.69 | |
| ARB | <0.01% | $1.08 | 1.5241 | $1.65 | |
| ARB | <0.01% | $2.53 | 0.6486 | $1.64 | |
| ARB | <0.01% | $0.00203 | 796.6561 | $1.62 | |
| ARB | <0.01% | $0.220927 | 7.0741 | $1.56 | |
| ARB | <0.01% | $0.010472 | 146.3447 | $1.53 | |
| ARB | <0.01% | $27,746 | 0.00005483 | $1.52 | |
| ARB | <0.01% | $0.107972 | 13.6669 | $1.48 | |
| ARB | <0.01% | $0.023593 | 56.8156 | $1.34 | |
| ARB | <0.01% | $1.27 | 0.9094 | $1.15 | |
| ARB | <0.01% | $0.019034 | 60.5122 | $1.15 | |
| ARB | <0.01% | $0.01252 | 83.4382 | $1.04 | |
| ARB | <0.01% | $0.358528 | 2.8474 | $1.02 | |
| ARB | <0.01% | $0.243831 | 3.8888 | $0.9482 | |
| ARB | <0.01% | $0.000887 | 1,010.465 | $0.8967 | |
| ARB | <0.01% | $3,308.53 | 0.00026574 | $0.8792 | |
| ARB | <0.01% | $0.000271 | 2,914.516 | $0.7896 | |
| ARB | <0.01% | $3.35 | 0.2338 | $0.7832 | |
| ARB | <0.01% | $0.011979 | 60.576 | $0.7256 | |
| ARB | <0.01% | $0.065054 | 10.5666 | $0.6874 | |
| ARB | <0.01% | $3,712.37 | 0.00017497 | $0.6495 | |
| ARB | <0.01% | $1 | 0.5961 | $0.5967 | |
| ARB | <0.01% | $0.094076 | 5.9269 | $0.5575 | |
| ARB | <0.01% | $0.993793 | 0.5445 | $0.5411 | |
| ARB | <0.01% | $0.03711 | 13.5557 | $0.503 | |
| ARB | <0.01% | $1 | 0.4811 | $0.482 | |
| ARB | <0.01% | $0.000045 | 10,746.9911 | $0.4818 | |
| ARB | <0.01% | $0.005919 | 67.966 | $0.4022 | |
| ARB | <0.01% | $0.002076 | 173.8322 | $0.3609 | |
| ARB | <0.01% | $4,587.83 | 0.000069 | $0.3165 | |
| ARB | <0.01% | $95,517 | 0.00000331 | $0.3161 | |
| ARB | <0.01% | $0.010209 | 27.701 | $0.2827 | |
| ARB | <0.01% | $0.002246 | 117.1997 | $0.2631 | |
| ARB | <0.01% | $0.077972 | 3.2491 | $0.2533 | |
| ARB | <0.01% | $0.999769 | 0.2499 | $0.2498 | |
| ARB | <0.01% | $0.005278 | 47.2512 | $0.2493 | |
| ARB | <0.01% | $0.997183 | 0.2304 | $0.2297 | |
| ARB | <0.01% | $0.020591 | 8.6775 | $0.1786 | |
| ARB | <0.01% | $0.946432 | 0.188 | $0.1779 | |
| ARB | <0.01% | $5,651.47 | 0.00002757 | $0.1558 | |
| ARB | <0.01% | $0.000927 | 165.8443 | $0.1536 | |
| ARB | <0.01% | $0.001615 | 88.5675 | $0.143 | |
| ARB | <0.01% | $0.031735 | 3.9979 | $0.1268 | |
| ARB | <0.01% | $0.000006 | 20,961.0478 | $0.1238 | |
| ARB | <0.01% | $0.210646 | 0.5881 | $0.1238 | |
| ARB | <0.01% | $0.141954 | 0.8304 | $0.1178 | |
| ARB | <0.01% | $0.005701 | 19.0949 | $0.1088 | |
| ARB | <0.01% | $0.000011 | 10,239.0376 | $0.1075 | |
| ETH | 0.05% | $3,317.55 | 0.2976 | $987.37 | |
| ETH | 0.05% | $1.21 | 777.5695 | $940.86 | |
| ETH | 0.05% | $4,595.72 | 0.1966 | $903.55 | |
| ETH | 0.05% | $1.16 | 774.3088 | $898.2 | |
| ETH | 0.05% | $1 | 890.124 | $890.12 | |
| ETH | 0.04% | $0.989921 | 860.2868 | $851.62 | |
| ETH | 0.04% | $1.01 | 831.31 | $837.13 | |
| ETH | 0.04% | $13.82 | 60.4546 | $835.48 | |
| ETH | 0.04% | $3,317.31 | 0.2208 | $732.53 | |
| ETH | 0.04% | $95,640 | 0.00761495 | $728.29 | |
| ETH | 0.04% | $95,530 | 0.00741309 | $708.17 | |
| ETH | 0.04% | $0.085105 | 8,174.0545 | $695.65 | |
| ETH | 0.04% | $0.06435 | 10,768.669 | $692.96 | |
| ETH | 0.04% | $1 | 684.7432 | $684.74 | |
| ETH | 0.03% | $4,607.39 | 0.1428 | $657.82 | |
| ETH | 0.03% | $0.996531 | 658.5012 | $656.22 | |
| ETH | 0.03% | $0.999807 | 638.5948 | $638.47 | |
| ETH | 0.03% | $3,601.82 | 0.1769 | $637.14 | |
| ETH | 0.03% | $0.999675 | 618.2571 | $618.06 | |
| ETH | 0.02% | $0.999714 | 485.0447 | $484.91 | |
| ETH | 0.02% | $1 | 413.3772 | $413.38 | |
| ETH | 0.02% | $1.08 | 272.637 | $295.27 | |
| ETH | 0.01% | $1.16 | 240.64 | $279.14 | |
| ETH | 0.01% | $0.223123 | 1,235.9737 | $275.77 | |
| ETH | 0.01% | $0.045153 | 5,811.7576 | $262.42 | |
| ETH | 0.01% | $0.572023 | 445.9632 | $255.1 | |
| ETH | 0.01% | $95,346 | 0.00246475 | $235 | |
| ETH | 0.01% | $176.06 | 1.3256 | $233.39 | |
| ETH | 0.01% | $5.43 | 42.2933 | $229.65 | |
| ETH | <0.01% | $3.34 | 56.255 | $187.89 | |
| ETH | <0.01% | $0.813303 | 223.7945 | $182.01 | |
| ETH | <0.01% | $3,504.96 | 0.0465 | $162.88 | |
| ETH | <0.01% | $3,794.17 | 0.042 | $159.34 | |
| ETH | <0.01% | $0.361651 | 430.8439 | $155.82 | |
| ETH | <0.01% | $0.008705 | 17,481.6346 | $152.18 | |
| ETH | <0.01% | $0.762491 | 199.5422 | $152.15 | |
| ETH | <0.01% | $0.087534 | 1,727.6852 | $151.23 | |
| ETH | <0.01% | $0.998994 | 150.1549 | $150 | |
| ETH | <0.01% | $4,063.03 | 0.0367 | $148.92 | |
| ETH | <0.01% | $2.12 | 62.6648 | $132.85 | |
| ETH | <0.01% | $2.71 | 47.7606 | $129.43 | |
| ETH | <0.01% | $0.999764 | 123.8805 | $123.85 | |
| ETH | <0.01% | $0.003827 | 29,692.0396 | $113.62 | |
| ETH | <0.01% | $280.07 | 0.4019 | $112.55 | |
| ETH | <0.01% | $1.16 | 94.1189 | $109.18 | |
| ETH | <0.01% | $1.2 | 83.0835 | $99.7 | |
| ETH | <0.01% | $1 | 98.7847 | $98.88 | |
| ETH | <0.01% | $0.814916 | 110.5738 | $90.11 | |
| ETH | <0.01% | $1.28 | 70.2372 | $89.9 | |
| ETH | <0.01% | $0.442323 | 199.0257 | $88.03 | |
| ETH | <0.01% | $1.08 | 76.8584 | $83.24 | |
| ETH | <0.01% | $0.379101 | 217.1276 | $82.31 | |
| ETH | <0.01% | $0.00 | 35.5185 | $0.00 | |
| ETH | <0.01% | $1 | 76.2278 | $76.24 | |
| ETH | <0.01% | $1.18 | 62.235 | $73.44 | |
| ETH | <0.01% | $0.225344 | 297.8768 | $67.12 | |
| ETH | <0.01% | $0.999938 | 64.0202 | $64.02 | |
| ETH | <0.01% | $0.951937 | 67.1122 | $63.89 | |
| ETH | <0.01% | $3,676.94 | 0.0174 | $63.83 | |
| ETH | <0.01% | $143.89 | 0.4129 | $59.42 | |
| ETH | <0.01% | $4,080.09 | 0.014 | $57.25 | |
| ETH | <0.01% | $0.013962 | 4,090.8736 | $57.12 | |
| ETH | <0.01% | $0.969543 | 57.1721 | $55.43 | |
| ETH | <0.01% | $3,832.45 | 0.0139 | $53.13 | |
| ETH | <0.01% | $0.035209 | 1,496.9101 | $52.71 | |
| ETH | <0.01% | $0.00 | 85.259 | $0.00 | |
| ETH | <0.01% | $95,327 | 0.00049911 | $47.58 | |
| ETH | <0.01% | $0.010303 | 4,488.1234 | $46.24 | |
| ETH | <0.01% | $0.395101 | 116.5928 | $46.07 | |
| ETH | <0.01% | $1.27 | 34.1449 | $43.36 | |
| ETH | <0.01% | $0.998833 | 42.7241 | $42.67 | |
| ETH | <0.01% | $12.15 | 3.4911 | $42.42 | |
| ETH | <0.01% | $0.177541 | 225.2611 | $39.99 | |
| ETH | <0.01% | $4.28 | 8.9604 | $38.35 | |
| ETH | <0.01% | $0.560809 | 64.618 | $36.24 | |
| ETH | <0.01% | $1 | 34.8474 | $34.9 | |
| ETH | <0.01% | $0.067556 | 491.1164 | $33.18 | |
| ETH | <0.01% | $0.951586 | 34.1907 | $32.54 | |
| ETH | <0.01% | $0.324193 | 98.7269 | $32.01 | |
| ETH | <0.01% | <$0.000001 | 93,271,045.0761 | $31.29 | |
| ETH | <0.01% | $0.999621 | 31.17 | $31.16 | |
| ETH | <0.01% | $0.953826 | 31.1853 | $29.75 | |
| ETH | <0.01% | $0.000006 | 4,842,435.3198 | $28.62 | |
| ETH | <0.01% | $3,316.68 | 0.00859126 | $28.49 | |
| ETH | <0.01% | $1.16 | 23.5859 | $27.38 | |
| ETH | <0.01% | $1.16 | 23.5859 | $27.38 | |
| ETH | <0.01% | $0.417625 | 65.3223 | $27.28 | |
| ETH | <0.01% | $1.94 | 13.8763 | $26.94 | |
| ETH | <0.01% | $0.997278 | 26.9185 | $26.85 | |
| ETH | <0.01% | $3,495.87 | 0.00765311 | $26.75 | |
| ETH | <0.01% | $4,048.28 | 0.0064468 | $26.1 | |
| ETH | <0.01% | $5.46 | 4.6808 | $25.58 | |
| ETH | <0.01% | $1.04 | 24.6154 | $25.53 | |
| ETH | <0.01% | $0.502207 | 50.6764 | $25.45 | |
| ETH | <0.01% | $1 | 24.6309 | $24.68 | |
| ETH | <0.01% | $0.825817 | 29.8545 | $24.65 | |
| ETH | <0.01% | $0.997985 | 24.5508 | $24.5 | |
| ETH | <0.01% | $1.23 | 19.4074 | $23.87 | |
| ETH | <0.01% | $26.16 | 0.8912 | $23.31 | |
| ETH | <0.01% | $1.14 | 20.3859 | $23.24 | |
| ETH | <0.01% | $0.446081 | 50.5075 | $22.53 | |
| ETH | <0.01% | $0.415945 | 52.6768 | $21.91 | |
| ETH | <0.01% | $0.023352 | 937.1587 | $21.88 | |
| ETH | <0.01% | $0.759576 | 27.3473 | $20.77 | |
| ETH | <0.01% | $0.116335 | 168.0155 | $19.55 | |
| ETH | <0.01% | $29.4 | 0.6616 | $19.45 | |
| ETH | <0.01% | $0.657698 | 29.4503 | $19.37 | |
| ETH | <0.01% | $0.00 | 18.788 | $0.00 | |
| ETH | <0.01% | $2.07 | 8.9352 | $18.5 | |
| ETH | <0.01% | $1.16 | 14.9868 | $17.38 | |
| ETH | <0.01% | $1.18 | 14.6182 | $17.25 | |
| ETH | <0.01% | $10.92 | 1.5516 | $16.94 | |
| ETH | <0.01% | $0.262252 | 64.5262 | $16.92 | |
| ETH | <0.01% | $0.263862 | 62.0964 | $16.38 | |
| ETH | <0.01% | $95,604 | 0.00016742 | $16.01 | |
| ETH | <0.01% | $1.13 | 13.6705 | $15.45 | |
| ETH | <0.01% | $0.000737 | 20,854.8583 | $15.37 | |
| ETH | <0.01% | $0.328873 | 46.5294 | $15.3 | |
| ETH | <0.01% | $182.57 | 0.081 | $14.79 | |
| ETH | <0.01% | $1 | 14.2458 | $14.25 | |
| ETH | <0.01% | $5.88 | 2.4057 | $14.15 | |
| ETH | <0.01% | $0.999562 | 14.0879 | $14.08 | |
| ETH | <0.01% | <$0.000001 | 917,198,114.5361 | $13.8 | |
| ETH | <0.01% | $0.169743 | 81.1883 | $13.78 | |
| ETH | <0.01% | $1 | 13.2365 | $13.25 | |
| ETH | <0.01% | $0.000007 | 1,919,126.5286 | $12.99 | |
| ETH | <0.01% | $0.614188 | 20.9696 | $12.88 | |
| ETH | <0.01% | $0.104437 | 123.1987 | $12.87 | |
| ETH | <0.01% | $0.094076 | 136.2726 | $12.82 | |
| ETH | <0.01% | $13.84 | 0.9155 | $12.67 | |
| ETH | <0.01% | $3,314.18 | 0.00367338 | $12.17 | |
| ETH | <0.01% | $0.402495 | 30.2252 | $12.17 | |
| ETH | <0.01% | $0.002771 | 4,241.4756 | $11.75 | |
| ETH | <0.01% | $0.22498 | 50.6832 | $11.4 | |
| ETH | <0.01% | $3,539.99 | 0.00320055 | $11.33 | |
| ETH | <0.01% | $0.004485 | 2,448.5376 | $10.98 | |
| ETH | <0.01% | $0.0932 | 115.2176 | $10.74 | |
| ETH | <0.01% | $4,593.66 | 0.0023068 | $10.6 | |
| ETH | <0.01% | $0.035493 | 295.0039 | $10.47 | |
| ETH | <0.01% | $0.281364 | 37.1159 | $10.44 | |
| ETH | <0.01% | $3,524.68 | 0.00295824 | $10.43 | |
| ETH | <0.01% | $3,601.54 | 0.00280956 | $10.12 | |
| ETH | <0.01% | $0.315581 | 31.6264 | $9.98 | |
| ETH | <0.01% | $3,301.04 | 0.00299925 | $9.9 | |
| ETH | <0.01% | $0.015916 | 618.9044 | $9.85 | |
| ETH | <0.01% | $0.006421 | 1,453.6099 | $9.33 | |
| ETH | <0.01% | $1.34 | 6.9385 | $9.3 | |
| ETH | <0.01% | $1.05 | 8.4732 | $8.85 | |
| ETH | <0.01% | $0.063602 | 137.1324 | $8.72 | |
| ETH | <0.01% | $0.155149 | 55.4641 | $8.61 | |
| ETH | <0.01% | $94,976 | 0.00009041 | $8.59 | |
| ETH | <0.01% | $0.176828 | 48.3547 | $8.55 | |
| ETH | <0.01% | $2.23 | 3.668 | $8.18 | |
| ETH | <0.01% | $0.010604 | 769.2121 | $8.16 | |
| ETH | <0.01% | $0.038901 | 208.6368 | $8.12 | |
| ETH | <0.01% | $0.005919 | 1,351.2613 | $8 | |
| ETH | <0.01% | $0.023075 | 345.9702 | $7.98 | |
| ETH | <0.01% | $0.008521 | 928.0394 | $7.91 | |
| ETH | <0.01% | $0.017846 | 420.2039 | $7.5 | |
| ETH | <0.01% | $1.15 | 6.4036 | $7.36 | |
| ETH | <0.01% | $0.442233 | 16.6442 | $7.36 | |
| ETH | <0.01% | $0.01257 | 560.9112 | $7.05 | |
| ETH | <0.01% | $0.100593 | 69.674 | $7.01 | |
| ETH | <0.01% | $4.04 | 1.6992 | $6.86 | |
| ETH | <0.01% | $0.005962 | 1,119.7361 | $6.68 | |
| ETH | <0.01% | $114.75 | 0.0561 | $6.44 | |
| ETH | <0.01% | $0.105951 | 58.6528 | $6.21 | |
| ETH | <0.01% | $0.000007 | 889,135.6771 | $6.16 | |
| ETH | <0.01% | $0.167262 | 36.2391 | $6.06 | |
| ETH | <0.01% | $0.006971 | 848.0082 | $5.91 | |
| ETH | <0.01% | $0.007816 | 756.076 | $5.91 | |
| ETH | <0.01% | $0.000363 | 16,095.0813 | $5.84 | |
| ETH | <0.01% | $0.005898 | 979.638 | $5.78 | |
| ETH | <0.01% | $27,746 | 0.00020691 | $5.74 | |
| ETH | <0.01% | $0.000135 | 42,372.5606 | $5.71 | |
| ETH | <0.01% | $0.000009 | 642,737.4749 | $5.51 | |
| ETH | <0.01% | $0.214187 | 25.0585 | $5.37 | |
| ETH | <0.01% | $1.69 | 3.1087 | $5.25 | |
| ETH | <0.01% | $0.015205 | 341.1703 | $5.19 | |
| ETH | <0.01% | $0.799738 | 6.4248 | $5.14 | |
| ETH | <0.01% | $0.423259 | 12.0809 | $5.11 | |
| ETH | <0.01% | $0.021864 | 232.9925 | $5.09 | |
| ETH | <0.01% | $0.147882 | 33.1263 | $4.9 | |
| ETH | <0.01% | $0.003084 | 1,562.2539 | $4.82 | |
| ETH | <0.01% | $0.042582 | 111.3169 | $4.74 | |
| ETH | <0.01% | $0.994256 | 4.6455 | $4.62 | |
| ETH | <0.01% | $1 | 4.6176 | $4.62 | |
| ETH | <0.01% | $0.030077 | 153.5049 | $4.62 | |
| ETH | <0.01% | $0.020365 | 224.001 | $4.56 | |
| ETH | <0.01% | $0.146444 | 30.7496 | $4.5 | |
| ETH | <0.01% | $13.89 | 0.3182 | $4.42 | |
| ETH | <0.01% | $0.087137 | 49.8527 | $4.34 | |
| ETH | <0.01% | $0.993825 | 4.1647 | $4.14 | |
| ETH | <0.01% | $0.07128 | 54.8856 | $3.91 | |
| ETH | <0.01% | $0.000894 | 4,321.2963 | $3.86 | |
| ETH | <0.01% | <$0.000001 | 91,612,737.1406 | $3.85 | |
| ETH | <0.01% | $0.293735 | 13.1034 | $3.85 | |
| ETH | <0.01% | $3,299.85 | 0.00114005 | $3.76 | |
| ETH | <0.01% | $3.54 | 1.0573 | $3.74 | |
| ETH | <0.01% | $1.55 | 2.3459 | $3.64 | |
| ETH | <0.01% | $3,712.01 | 0.00097246 | $3.61 | |
| ETH | <0.01% | $0.00536 | 658.3098 | $3.53 | |
| ETH | <0.01% | $0.999822 | 3.45 | $3.45 | |
| ETH | <0.01% | $0.095381 | 35.9681 | $3.43 | |
| ETH | <0.01% | $0.065341 | 52.2478 | $3.41 | |
| ETH | <0.01% | $0.003067 | 1,074.4211 | $3.3 | |
| ETH | <0.01% | $0.01439 | 227.4826 | $3.27 | |
| ETH | <0.01% | $0.021705 | 149.6186 | $3.25 | |
| ETH | <0.01% | $0.242977 | 13.349 | $3.24 | |
| ETH | <0.01% | $1 | 3.1765 | $3.18 | |
| ETH | <0.01% | $0.077972 | 40.0865 | $3.13 | |
| ETH | <0.01% | $0.410118 | 7.4536 | $3.06 | |
| ETH | <0.01% | $0.999769 | 2.9537 | $2.95 | |
| ETH | <0.01% | $0.132882 | 22.1841 | $2.95 | |
| ETH | <0.01% | $0.283697 | 10.316 | $2.93 | |
| ETH | <0.01% | $0.118325 | 24.5023 | $2.9 | |
| ETH | <0.01% | $2.22 | 1.2487 | $2.77 | |
| ETH | <0.01% | $0.008521 | 325.0894 | $2.77 | |
| ETH | <0.01% | $0.021519 | 125.8079 | $2.71 | |
| ETH | <0.01% | $0.148329 | 17.9537 | $2.66 | |
| ETH | <0.01% | $95,413 | 0.00002789 | $2.66 | |
| ETH | <0.01% | $1.01 | 2.6237 | $2.64 | |
| ETH | <0.01% | $0.162609 | 16.0436 | $2.61 | |
| ETH | <0.01% | $0.005278 | 492.1978 | $2.6 | |
| ETH | <0.01% | $0.176473 | 14.6222 | $2.58 | |
| ETH | <0.01% | $0.057605 | 43.8843 | $2.53 | |
| ETH | <0.01% | <$0.000001 | 22,734,743.4052 | $2.46 | |
| ETH | <0.01% | <$0.000001 | 105,894,848.5451 | $2.44 | |
| ETH | <0.01% | $0.001949 | 1,230.0789 | $2.4 | |
| ETH | <0.01% | $0.023883 | 99.0351 | $2.37 | |
| ETH | <0.01% | $0.007897 | 294.9608 | $2.33 | |
| ETH | <0.01% | $2.84 | 0.82 | $2.33 | |
| ETH | <0.01% | $0.012114 | 189.1335 | $2.29 | |
| ETH | <0.01% | $1 | 2.2496 | $2.25 | |
| ETH | <0.01% | $0.000066 | 33,444.5657 | $2.2 | |
| ETH | <0.01% | $0.107827 | 20.1738 | $2.18 | |
| ETH | <0.01% | $0.761673 | 2.818 | $2.15 | |
| ETH | <0.01% | $0.116148 | 18.1037 | $2.1 | |
| ETH | <0.01% | $4,040.89 | 0.00051996 | $2.1 | |
| ETH | <0.01% | $0.013463 | 155.6351 | $2.1 | |
| ETH | <0.01% | $0.02423 | 85.8134 | $2.08 | |
| ETH | <0.01% | $0.063937 | 30.821 | $1.97 | |
| ETH | <0.01% | $0.184337 | 10.6872 | $1.97 | |
| ETH | <0.01% | $9.93 | 0.1936 | $1.92 | |
| ETH | <0.01% | $0.007366 | 260.0547 | $1.92 | |
| ETH | <0.01% | $0.404282 | 4.6442 | $1.88 | |
| ETH | <0.01% | $0.005408 | 346.4246 | $1.87 | |
| ETH | <0.01% | $0.000126 | 14,687.5113 | $1.86 | |
| ETH | <0.01% | $0.194031 | 9.2616 | $1.8 | |
| ETH | <0.01% | $0.16074 | 10.9372 | $1.76 | |
| ETH | <0.01% | $0.023538 | 74.3449 | $1.75 | |
| ETH | <0.01% | $0.182063 | 9.4042 | $1.71 | |
| ETH | <0.01% | $0.018024 | 94.7392 | $1.71 | |
| ETH | <0.01% | $0.044281 | 38.1085 | $1.69 | |
| ETH | <0.01% | $81.73 | 0.02 | $1.63 | |
| ETH | <0.01% | $0.047938 | 33.7428 | $1.62 | |
| ETH | <0.01% | $0.01676 | 95.9954 | $1.61 | |
| ETH | <0.01% | $0.753768 | 2.0964 | $1.58 | |
| ETH | <0.01% | $0.00172 | 915.1114 | $1.57 | |
| ETH | <0.01% | $0.026563 | 59.2472 | $1.57 | |
| ETH | <0.01% | $0.000001 | 1,452,556.4204 | $1.57 | |
| ETH | <0.01% | $0.95048 | 1.6279 | $1.55 | |
| ETH | <0.01% | $0.758011 | 2.0277 | $1.54 | |
| ETH | <0.01% | $0.005702 | 269.0939 | $1.53 | |
| ETH | <0.01% | $173.84 | 0.00858099 | $1.49 | |
| ETH | <0.01% | $0.000115 | 12,852.3651 | $1.47 | |
| ETH | <0.01% | $0.311979 | 4.5964 | $1.43 | |
| ETH | <0.01% | $0.097581 | 14.6036 | $1.43 | |
| ETH | <0.01% | $11.92 | 0.118 | $1.41 | |
| ETH | <0.01% | $0.000004 | 366,514.0837 | $1.37 | |
| ETH | <0.01% | $0.040921 | 33.2762 | $1.36 | |
| ETH | <0.01% | $0.063528 | 21.4344 | $1.36 | |
| ETH | <0.01% | $12.78 | 0.1046 | $1.34 | |
| ETH | <0.01% | $0.22082 | 6.0339 | $1.33 | |
| ETH | <0.01% | $0.057762 | 22.5719 | $1.3 | |
| ETH | <0.01% | $0.385685 | 3.1402 | $1.21 | |
| ETH | <0.01% | $0.252909 | 4.786 | $1.21 | |
| ETH | <0.01% | $0.004454 | 266.4104 | $1.19 | |
| ETH | <0.01% | $3,598 | 0.0003279 | $1.18 | |
| ETH | <0.01% | $0.764222 | 1.4918 | $1.14 | |
| ETH | <0.01% | $0.108672 | 10.2028 | $1.11 | |
| ETH | <0.01% | $5.79 | 0.1889 | $1.09 | |
| ETH | <0.01% | $0.000811 | 1,338.5242 | $1.09 | |
| ETH | <0.01% | $0.718927 | 1.5084 | $1.08 | |
| ETH | <0.01% | <$0.000001 | 42,028,550.1537 | $1.07 | |
| ETH | <0.01% | $0.009069 | 115.8498 | $1.05 | |
| ETH | <0.01% | $1.02 | 1.0122 | $1.03 | |
| ETH | <0.01% | $0.995736 | 1.03 | $1.03 | |
| ETH | <0.01% | $0.025483 | 40.1515 | $1.02 | |
| ETH | <0.01% | <$0.000001 | 22,093,661.9857 | $1.01 | |
| ETH | <0.01% | $1.53 | 0.6557 | $1.01 | |
| ETH | <0.01% | $0.417169 | 2.3994 | $1 | |
| ETH | <0.01% | $0.080454 | 12.2731 | $0.9874 | |
| ETH | <0.01% | $0.001339 | 735.5574 | $0.9847 | |
| ETH | <0.01% | $0.015164 | 63.6145 | $0.9646 | |
| ETH | <0.01% | $0.003998 | 239.9946 | $0.9595 | |
| ETH | <0.01% | $0.052671 | 18.2058 | $0.9589 | |
| ETH | <0.01% | $0.076745 | 12.4674 | $0.9568 | |
| ETH | <0.01% | $0.012684 | 74.852 | $0.9493 | |
| ETH | <0.01% | $2.28 | 0.4098 | $0.9342 | |
| ETH | <0.01% | $0.003745 | 248.31 | $0.9298 | |
| ETH | <0.01% | $0.002823 | 321.2855 | $0.9069 | |
| ETH | <0.01% | $0.006088 | 148.4837 | $0.9039 | |
| ETH | <0.01% | $0.005872 | 150.9779 | $0.8864 | |
| ETH | <0.01% | $0.023325 | 37.8401 | $0.8826 | |
| ETH | <0.01% | $0.017235 | 50.1513 | $0.8643 | |
| ETH | <0.01% | $0.005182 | 162.6741 | $0.8429 | |
| ETH | <0.01% | $0.055223 | 15.1003 | $0.8338 | |
| ETH | <0.01% | $0.132298 | 6.2959 | $0.8329 | |
| ETH | <0.01% | $0.202352 | 4.0955 | $0.8287 | |
| ETH | <0.01% | $0.000995 | 829.3407 | $0.8255 | |
| ETH | <0.01% | $0.000011 | 73,717.9845 | $0.8249 | |
| ETH | <0.01% | $0.006284 | 131.23 | $0.8246 | |
| ETH | <0.01% | $0.00959 | 83.4499 | $0.8002 | |
| ETH | <0.01% | $3.8 | 0.209 | $0.794 | |
| ETH | <0.01% | $96,304 | 0.00000802 | $0.7723 | |
| ETH | <0.01% | $1.72 | 0.4457 | $0.7666 | |
| ETH | <0.01% | <$0.000001 | 307,120,757.0302 | $0.7549 | |
| ETH | <0.01% | $0.010334 | 71.6199 | $0.74 | |
| ETH | <0.01% | $0.007812 | 94.7005 | $0.7398 | |
| ETH | <0.01% | $0.005391 | 136.5673 | $0.7362 | |
| ETH | <0.01% | $0.007354 | 99.7394 | $0.7334 | |
| ETH | <0.01% | $25.93 | 0.0279 | $0.7232 | |
| ETH | <0.01% | $0.076211 | 9.4884 | $0.7231 | |
| ETH | <0.01% | $0.264734 | 2.6466 | $0.7006 | |
| ETH | <0.01% | $0.077214 | 8.7733 | $0.6774 | |
| ETH | <0.01% | <$0.000001 | 69,522,765.0498 | $0.6644 | |
| ETH | <0.01% | $0.007019 | 92.9627 | $0.6525 | |
| ETH | <0.01% | $0.008578 | 75.934 | $0.6513 | |
| ETH | <0.01% | $0.00232 | 280.2657 | $0.6503 | |
| ETH | <0.01% | $0.000041 | 15,793.7383 | $0.6461 | |
| ETH | <0.01% | $0.010023 | 63.1827 | $0.6332 | |
| ETH | <0.01% | $0.084266 | 7.4437 | $0.6272 | |
| ETH | <0.01% | $1.15 | 0.5372 | $0.6177 | |
| ETH | <0.01% | $0.00959 | 64.1461 | $0.6151 | |
| ETH | <0.01% | $0.021582 | 28.4211 | $0.6133 | |
| ETH | <0.01% | $0.001631 | 373.0451 | $0.6086 | |
| ETH | <0.01% | $0.017433 | 34.808 | $0.6068 | |
| ETH | <0.01% | $0.036459 | 16.2421 | $0.5921 | |
| ETH | <0.01% | $27.29 | 0.0212 | $0.5786 | |
| ETH | <0.01% | $0.000002 | 257,459.0317 | $0.5716 | |
| ETH | <0.01% | $0.000989 | 577.0802 | $0.5706 | |
| ETH | <0.01% | $0.037395 | 15.2219 | $0.5692 | |
| ETH | <0.01% | $7.34 | 0.0772 | $0.5667 | |
| ETH | <0.01% | $0.019678 | 28.6793 | $0.5643 | |
| ETH | <0.01% | $5,633.41 | 0.00009923 | $0.559 | |
| ETH | <0.01% | $0.000948 | 586.0067 | $0.5554 | |
| ETH | <0.01% | $0.078907 | 6.9665 | $0.5497 | |
| ETH | <0.01% | $0.135992 | 3.9561 | $0.538 | |
| ETH | <0.01% | $0.001131 | 475.307 | $0.5375 | |
| ETH | <0.01% | $95,425 | 0.00000559 | $0.5334 | |
| ETH | <0.01% | $0.002167 | 244.4117 | $0.5296 | |
| ETH | <0.01% | $0.007247 | 72.7262 | $0.527 | |
| ETH | <0.01% | $0.398279 | 1.3158 | $0.524 | |
| ETH | <0.01% | $0.009326 | 55.3657 | $0.5163 | |
| ETH | <0.01% | $0.009632 | 53.6029 | $0.5162 | |
| ETH | <0.01% | $0.011258 | 44.9531 | $0.5061 | |
| ETH | <0.01% | $0.015862 | 31.7558 | $0.5037 | |
| ETH | <0.01% | $0.000552 | 906.2576 | $0.5006 | |
| ETH | <0.01% | $0.304021 | 1.6339 | $0.4967 | |
| ETH | <0.01% | $0.42259 | 1.1696 | $0.4942 | |
| ETH | <0.01% | $0.007499 | 65.8455 | $0.4937 | |
| ETH | <0.01% | <$0.000001 | 9,260,911.1736 | $0.4931 | |
| ETH | <0.01% | $0.035156 | 13.9948 | $0.4919 | |
| ETH | <0.01% | $0.00012 | 4,074.3605 | $0.49 | |
| ETH | <0.01% | $0.000015 | 32,910.6601 | $0.4854 | |
| ETH | <0.01% | $0.008843 | 54.1611 | $0.4789 | |
| ETH | <0.01% | $24.31 | 0.0193 | $0.4695 | |
| ETH | <0.01% | $19.56 | 0.0235 | $0.46 | |
| ETH | <0.01% | $0.009034 | 50.0107 | $0.4517 | |
| ETH | <0.01% | $0.999635 | 0.4501 | $0.4498 | |
| ETH | <0.01% | $0.049561 | 8.9929 | $0.4456 | |
| ETH | <0.01% | $0.045709 | 9.5095 | $0.4346 | |
| ETH | <0.01% | $0.000041 | 10,419.4528 | $0.4293 | |
| ETH | <0.01% | <$0.000001 | 2,732,948.7886 | $0.4291 | |
| ETH | <0.01% | $0.046791 | 9.1321 | $0.4272 | |
| ETH | <0.01% | $0.562464 | 0.7491 | $0.4213 | |
| ETH | <0.01% | $0.140869 | 2.976 | $0.4192 | |
| ETH | <0.01% | $0.000168 | 2,478.8761 | $0.4156 | |
| ETH | <0.01% | $0.009324 | 44.0409 | $0.4106 | |
| ETH | <0.01% | $0.042969 | 9.1945 | $0.395 | |
| ETH | <0.01% | $18 | 0.0218 | $0.3924 | |
| ETH | <0.01% | $0.001324 | 296.2768 | $0.3922 | |
| ETH | <0.01% | $0.087143 | 4.4668 | $0.3892 | |
| ETH | <0.01% | $0.010203 | 37.7343 | $0.3849 | |
| ETH | <0.01% | $0.151619 | 2.4657 | $0.3738 | |
| ETH | <0.01% | $0.000537 | 694.442 | $0.3731 | |
| ETH | <0.01% | $0.010143 | 36.5416 | $0.3706 | |
| ETH | <0.01% | $0.047638 | 7.735 | $0.3684 | |
| ETH | <0.01% | $0.003357 | 105.8463 | $0.3553 | |
| ETH | <0.01% | $0.013217 | 26.5014 | $0.3502 | |
| ETH | <0.01% | $0.001736 | 198.2525 | $0.3442 | |
| ETH | <0.01% | $0.170149 | 2.0183 | $0.3434 | |
| ETH | <0.01% | $1.25 | 0.2738 | $0.3422 | |
| ETH | <0.01% | $0.207683 | 1.639 | $0.3403 | |
| ETH | <0.01% | $5,072.33 | 0.00006702 | $0.3399 | |
| ETH | <0.01% | $0.050599 | 6.6273 | $0.3353 | |
| ETH | <0.01% | $0.003739 | 89.4024 | $0.3342 | |
| ETH | <0.01% | $0.005135 | 63.7447 | $0.3273 | |
| ETH | <0.01% | $0.512685 | 0.6279 | $0.3218 | |
| ETH | <0.01% | $0.005418 | 58.9803 | $0.3195 | |
| ETH | <0.01% | $0.005834 | 54.1171 | $0.3157 | |
| ETH | <0.01% | $0.005076 | 61.825 | $0.3138 | |
| ETH | <0.01% | $0.008731 | 35.1616 | $0.307 | |
| ETH | <0.01% | $0.154436 | 1.9759 | $0.3051 | |
| ETH | <0.01% | $1.27 | 0.2387 | $0.3032 | |
| ETH | <0.01% | $0.946432 | 0.3201 | $0.3029 | |
| ETH | <0.01% | $1.17 | 0.2562 | $0.2997 | |
| ETH | <0.01% | $0.019151 | 15.5183 | $0.2971 | |
| ETH | <0.01% | $0.241663 | 1.1965 | $0.2891 | |
| ETH | <0.01% | $0.758411 | 0.3806 | $0.2886 | |
| ETH | <0.01% | $7.8 | 0.0368 | $0.2868 | |
| ETH | <0.01% | $0.240033 | 1.1772 | $0.2825 | |
| ETH | <0.01% | $0.001843 | 149.9693 | $0.2763 | |
| ETH | <0.01% | $0.002451 | 111.9977 | $0.2744 | |
| ETH | <0.01% | $0.224773 | 1.2153 | $0.2731 | |
| ETH | <0.01% | $1.01 | 0.2686 | $0.2723 | |
| ETH | <0.01% | $0.026012 | 10.3689 | $0.2697 | |
| ETH | <0.01% | $0.003523 | 76.3498 | $0.2689 | |
| ETH | <0.01% | $0.030942 | 8.663 | $0.268 | |
| ETH | <0.01% | $0.278098 | 0.9531 | $0.265 | |
| ETH | <0.01% | $0.00002 | 13,391.3114 | $0.2646 | |
| ETH | <0.01% | $0.00138 | 191.0888 | $0.2637 | |
| ETH | <0.01% | $5.76 | 0.0457 | $0.2634 | |
| ETH | <0.01% | $0.021519 | 11.917 | $0.2564 | |
| ETH | <0.01% | $0.006721 | 37.2469 | $0.2503 | |
| ETH | <0.01% | $0.000071 | 3,389.7608 | $0.2391 | |
| ETH | <0.01% | $0.06747 | 3.5378 | $0.2386 | |
| ETH | <0.01% | $0.145249 | 1.6415 | $0.2384 | |
| ETH | <0.01% | $0.005077 | 46.8257 | $0.2377 | |
| ETH | <0.01% | $0.001279 | 182.4522 | $0.2333 | |
| ETH | <0.01% | $0.102644 | 2.2651 | $0.2325 | |
| ETH | <0.01% | $0.137602 | 1.675 | $0.2304 | |
| ETH | <0.01% | $0.00048 | 480.1858 | $0.2303 | |
| ETH | <0.01% | $0.026753 | 8.537 | $0.2283 | |
| ETH | <0.01% | $0.264832 | 0.8511 | $0.2253 | |
| ETH | <0.01% | $0.030769 | 7.2343 | $0.2225 | |
| ETH | <0.01% | <$0.000001 | 166,614,592.359 | $0.2213 | |
| ETH | <0.01% | $0.002699 | 81.6539 | $0.2203 | |
| ETH | <0.01% | $0.000096 | 2,289.5405 | $0.2188 | |
| ETH | <0.01% | $0.000792 | 275.7226 | $0.2182 | |
| ETH | <0.01% | $0.028503 | 7.6511 | $0.218 | |
| ETH | <0.01% | $1.19 | 0.1827 | $0.2174 | |
| ETH | <0.01% | $0.004172 | 51.1361 | $0.2133 | |
| ETH | <0.01% | $0.028122 | 7.5285 | $0.2117 | |
| ETH | <0.01% | $0.102187 | 2.067 | $0.2112 | |
| ETH | <0.01% | $0.999951 | 0.2109 | $0.2108 | |
| ETH | <0.01% | $0.007643 | 27.4771 | $0.21 | |
| ETH | <0.01% | $0.011909 | 17.5679 | $0.2092 | |
| ETH | <0.01% | $0.191888 | 1.0701 | $0.2053 | |
| ETH | <0.01% | $0.003667 | 55.3315 | $0.2028 | |
| ETH | <0.01% | $0.002695 | 75.1387 | $0.2024 | |
| ETH | <0.01% | $0.000482 | 419.374 | $0.2021 | |
| ETH | <0.01% | $0.000173 | 1,143.7917 | $0.1981 | |
| ETH | <0.01% | $0.061317 | 3.2026 | $0.1963 | |
| ETH | <0.01% | $0.104888 | 1.87 | $0.1961 | |
| ETH | <0.01% | $0.004242 | 45.4516 | $0.1928 | |
| ETH | <0.01% | $0.103169 | 1.8503 | $0.1908 | |
| ETH | <0.01% | $0.00005 | 3,779.4645 | $0.1904 | |
| ETH | <0.01% | $86.48 | 0.00214067 | $0.1851 | |
| ETH | <0.01% | $0.000172 | 1,076.5346 | $0.1851 | |
| ETH | <0.01% | $0.010544 | 17.2743 | $0.1821 | |
| ETH | <0.01% | $0.024455 | 7.427 | $0.1816 | |
| ETH | <0.01% | $95,515 | 0.0000019 | $0.1814 | |
| ETH | <0.01% | $3.06 | 0.0587 | $0.1796 | |
| ETH | <0.01% | $0.127547 | 1.4079 | $0.1795 | |
| ETH | <0.01% | $0.002636 | 67.4597 | $0.1778 | |
| ETH | <0.01% | $0.24595 | 0.7006 | $0.1723 | |
| ETH | <0.01% | $0.003441 | 50.0773 | $0.1722 | |
| ETH | <0.01% | $0.217992 | 0.7883 | $0.1718 | |
| ETH | <0.01% | $0.00905 | 18.961 | $0.1715 | |
| ETH | <0.01% | $0.999321 | 0.1714 | $0.1713 | |
| ETH | <0.01% | $0.000791 | 216.4417 | $0.1711 | |
| ETH | <0.01% | $0.014617 | 11.476 | $0.1677 | |
| ETH | <0.01% | $0.005477 | 30.5676 | $0.1674 | |
| ETH | <0.01% | $0.000148 | 1,119.6948 | $0.1655 | |
| ETH | <0.01% | $0.163649 | 1.0111 | $0.1654 | |
| ETH | <0.01% | $58.34 | 0.00278443 | $0.1624 | |
| ETH | <0.01% | $0.004473 | 36.1725 | $0.1618 | |
| ETH | <0.01% | $0.005053 | 31.9995 | $0.1616 | |
| ETH | <0.01% | $0.018779 | 8.3349 | $0.1565 | |
| ETH | <0.01% | <$0.000001 | 105,339,149.5907 | $0.1503 | |
| ETH | <0.01% | $0.999365 | 0.1499 | $0.1497 | |
| ETH | <0.01% | $0.000475 | 309.4266 | $0.1468 | |
| ETH | <0.01% | $0.000263 | 551.5836 | $0.145 | |
| ETH | <0.01% | $0.007677 | 18.7721 | $0.1441 | |
| ETH | <0.01% | $0.000297 | 483.7606 | $0.1437 | |
| ETH | <0.01% | $0.002739 | 51.7709 | $0.1418 | |
| ETH | <0.01% | $0.001517 | 91.4333 | $0.1386 | |
| ETH | <0.01% | $0.00129 | 106.7338 | $0.1377 | |
| ETH | <0.01% | $0.000511 | 265.3247 | $0.1356 | |
| ETH | <0.01% | $0.010938 | 12.2864 | $0.1343 | |
| ETH | <0.01% | $57.22 | 0.00233105 | $0.1333 | |
| ETH | <0.01% | <$0.000001 | 327,582.5498 | $0.1296 | |
| ETH | <0.01% | $0.022438 | 5.5778 | $0.1251 | |
| ETH | <0.01% | $0.002249 | 55.3779 | $0.1245 | |
| ETH | <0.01% | $0.456034 | 0.2729 | $0.1244 | |
| ETH | <0.01% | $0.000011 | 11,524.9324 | $0.1222 | |
| ETH | <0.01% | $0.001101 | 110.6171 | $0.1217 | |
| ETH | <0.01% | $95,638 | 0.00000123 | $0.118 | |
| ETH | <0.01% | $0.041411 | 2.8294 | $0.1171 | |
| ETH | <0.01% | $0.000005 | 23,576.7036 | $0.1162 | |
| ETH | <0.01% | $0.177786 | 0.6419 | $0.1141 | |
| ETH | <0.01% | $2.17 | 0.0521 | $0.113 | |
| ETH | <0.01% | $0.001107 | 99.7503 | $0.1104 | |
| ETH | <0.01% | $0.61598 | 0.1785 | $0.1099 | |
| ETH | <0.01% | $0.000011 | 10,440.978 | $0.1096 | |
| ETH | <0.01% | $0.018729 | 5.7396 | $0.1074 | |
| ETH | <0.01% | $79.05 | 0.001327 | $0.1048 | |
| ETH | <0.01% | $0.000051 | 2,020.1842 | $0.1036 | |
| ETH | <0.01% | $0.003847 | 26.9471 | $0.1036 | |
| ETH | <0.01% | $0.030843 | 3.3182 | $0.1023 | |
| ETH | <0.01% | $0.000004 | 27,605.45 | $0.1013 | |
| ETH | <0.01% | $0.110041 | 0.9189 | $0.1011 | |
| ETH | <0.01% | $0.02337 | 4.318 | $0.1009 | |
| ETH | <0.01% | <$0.000001 | 878,256.6222 | $0.1009 | |
| BASE | <0.01% | $0.999786 | 99.8603 | $99.84 | |
| BASE | <0.01% | $1.01 | 95.0484 | $95.62 | |
| BASE | <0.01% | $0.969798 | 92.9902 | $90.18 | |
| BASE | <0.01% | $0.996235 | 88.5559 | $88.22 | |
| BASE | <0.01% | $95,565 | 0.00092202 | $88.11 | |
| BASE | <0.01% | $176.11 | 0.4526 | $79.71 | |
| BASE | <0.01% | $0.999758 | 79.1326 | $79.11 | |
| BASE | <0.01% | $3,319.54 | 0.0236 | $78.36 | |
| BASE | <0.01% | $0.001208 | 63,619.5489 | $76.86 | |
| BASE | <0.01% | $0.035897 | 2,054.9237 | $73.77 | |
| BASE | <0.01% | $0.998461 | 73.2981 | $73.19 | |
| BASE | <0.01% | $2.08 | 34.0648 | $70.85 | |
| BASE | <0.01% | $3,820.76 | 0.0177 | $67.77 | |
| BASE | <0.01% | $0.721499 | 92.2683 | $66.57 | |
| BASE | <0.01% | $1.25 | 53.1005 | $66.38 | |
| BASE | <0.01% | $0.016934 | 3,694.4753 | $62.56 | |
| BASE | <0.01% | $0.002237 | 27,864.0209 | $62.32 | |
| BASE | <0.01% | $0.565748 | 105.7488 | $59.83 | |
| BASE | <0.01% | $11.39 | 5.1892 | $59.1 | |
| BASE | <0.01% | $3,538.33 | 0.0162 | $57.29 | |
| BASE | <0.01% | $1.17 | 47.3171 | $55.36 | |
| BASE | <0.01% | $0.000331 | 150,315.3611 | $49.77 | |
| BASE | <0.01% | $0.137417 | 349.9438 | $48.09 | |
| BASE | <0.01% | $0.026224 | 1,754.8521 | $46.02 | |
| BASE | <0.01% | $0.002415 | 18,957.5943 | $45.78 | |
| BASE | <0.01% | $0.021057 | 2,166.5568 | $45.62 | |
| BASE | <0.01% | $95,576 | 0.00045894 | $43.86 | |
| BASE | <0.01% | $0.007669 | 5,561.3728 | $42.65 | |
| BASE | <0.01% | $0.00019 | 222,534.1995 | $42.29 | |
| BASE | <0.01% | $0.014808 | 2,826.3502 | $41.85 | |
| BASE | <0.01% | $0.999657 | 41.2688 | $41.25 | |
| BASE | <0.01% | $0.005481 | 7,483.5586 | $41.01 | |
| BASE | <0.01% | $1.16 | 34.3454 | $39.84 | |
| BASE | <0.01% | $0.000007 | 5,610,255.8455 | $38.94 | |
| BASE | <0.01% | $0.999876 | 37.0556 | $37.05 | |
| BASE | <0.01% | $1.08 | 34.0139 | $36.67 | |
| BASE | <0.01% | $0.108378 | 331.4659 | $35.92 | |
| BASE | <0.01% | $0.532245 | 67.4942 | $35.92 | |
| BASE | <0.01% | $1.34 | 26.7546 | $35.85 | |
| BASE | <0.01% | $0.998055 | 35.2222 | $35.15 | |
| BASE | <0.01% | $3,598.93 | 0.00945696 | $34.03 | |
| BASE | <0.01% | $0.035365 | 957.5815 | $33.86 | |
| BASE | <0.01% | $0.022181 | 1,510.8483 | $33.51 | |
| BASE | <0.01% | $0.283456 | 118.1072 | $33.48 | |
| BASE | <0.01% | $0.189623 | 175.7071 | $33.32 | |
| BASE | <0.01% | $0.29897 | 110.8141 | $33.13 | |
| BASE | <0.01% | $0.572001 | 50.5592 | $28.92 | |
| BASE | <0.01% | $27.3 | 1.053 | $28.75 | |
| BASE | <0.01% | $0.057471 | 493.557 | $28.37 | |
| BASE | <0.01% | $0.036835 | 760.9111 | $28.03 | |
| BASE | <0.01% | $37.89 | 0.7265 | $27.53 | |
| BASE | <0.01% | $2.12 | 12.7281 | $26.98 | |
| BASE | <0.01% | $0.486105 | 52.5952 | $25.57 | |
| BASE | <0.01% | $3,535.39 | 0.00721017 | $25.49 | |
| BASE | <0.01% | $0.028046 | 906.4196 | $25.42 | |
| BASE | <0.01% | $0.142404 | 178.3511 | $25.4 | |
| BASE | <0.01% | $0.013388 | 1,896.9267 | $25.4 | |
| BASE | <0.01% | $0.008731 | 2,867.7816 | $25.04 | |
| BASE | <0.01% | $0.440622 | 51.5871 | $22.73 | |
| BASE | <0.01% | $4.28 | 5.0696 | $21.7 | |
| BASE | <0.01% | $0.00 | 20.7901 | $0.00 | |
| BASE | <0.01% | $0.00 | 0.00622469 | $0.00 | |
| BASE | <0.01% | $1.06 | 19.2613 | $20.46 | |
| BASE | <0.01% | $0.013603 | 1,464.8054 | $19.93 | |
| BASE | <0.01% | $1.16 | 15.9636 | $18.52 | |
| BASE | <0.01% | $0.002045 | 7,964.4473 | $16.29 | |
| BASE | <0.01% | $0.019895 | 800 | $15.92 | |
| BASE | <0.01% | $0.057273 | 277.1507 | $15.87 | |
| BASE | <0.01% | $1.35 | 11.6988 | $15.79 | |
| BASE | <0.01% | $4,059.6 | 0.00369445 | $15 | |
| BASE | <0.01% | $0.739507 | 19.5887 | $14.49 | |
| BASE | <0.01% | $0.086829 | 163.6129 | $14.21 | |
| BASE | <0.01% | $0.007059 | 1,966.653 | $13.88 | |
| BASE | <0.01% | $0.013495 | 1,011.343 | $13.65 | |
| BASE | <0.01% | $0.004601 | 2,890.4172 | $13.3 | |
| BASE | <0.01% | $2.96 | 4.3936 | $13 | |
| BASE | <0.01% | $0.051083 | 253.9033 | $12.97 | |
| BASE | <0.01% | $95,309 | 0.00013071 | $12.46 | |
| BASE | <0.01% | $0.185222 | 67.1352 | $12.43 | |
| BASE | <0.01% | $0.066928 | 179.16 | $11.99 | |
| BASE | <0.01% | $0.008548 | 1,347.6864 | $11.52 | |
| BASE | <0.01% | $0.003728 | 3,055.0146 | $11.39 | |
| BASE | <0.01% | $0.008621 | 1,263.2412 | $10.89 | |
| BASE | <0.01% | $0.99978 | 10.8444 | $10.84 | |
| BASE | <0.01% | $0.018562 | 553.4568 | $10.27 | |
| BASE | <0.01% | $0.108299 | 94.7209 | $10.26 | |
| BASE | <0.01% | $0.504388 | 20.2672 | $10.22 | |
| BASE | <0.01% | $0.069449 | 147.0581 | $10.21 | |
| BASE | <0.01% | $1.81 | 5.4009 | $9.78 | |
| BASE | <0.01% | $0.017601 | 550.0836 | $9.68 | |
| BASE | <0.01% | $0.000537 | 17,878.4994 | $9.6 | |
| BASE | <0.01% | $0.400331 | 23.6555 | $9.47 | |
| BASE | <0.01% | $0.001348 | 6,764.1107 | $9.12 | |
| BASE | <0.01% | $3,709.23 | 0.00232085 | $8.61 | |
| BASE | <0.01% | $3,306.54 | 0.00259017 | $8.56 | |
| BASE | <0.01% | $0.000553 | 14,756.341 | $8.17 | |
| BASE | <0.01% | $95,470 | 0.00008296 | $7.92 | |
| BASE | <0.01% | $0.997278 | 7.741 | $7.72 | |
| BASE | <0.01% | $75.14 | 0.1024 | $7.69 | |
| BASE | <0.01% | $0.727405 | 10.3845 | $7.55 | |
| BASE | <0.01% | $0.006808 | 1,087.1433 | $7.4 | |
| BASE | <0.01% | $0.030016 | 236.7699 | $7.11 | |
| BASE | <0.01% | $0.001216 | 5,834.2284 | $7.09 | |
| BASE | <0.01% | $0.363472 | 18.8155 | $6.84 | |
| BASE | <0.01% | $0.000022 | 315,059.9897 | $6.78 | |
| BASE | <0.01% | $0.024844 | 253.0622 | $6.29 | |
| BASE | <0.01% | $0.045727 | 133.5116 | $6.11 | |
| BASE | <0.01% | $0.223027 | 26.0546 | $5.81 | |
| BASE | <0.01% | $0.253372 | 22.6904 | $5.75 | |
| BASE | <0.01% | $0.000986 | 5,823.7416 | $5.74 | |
| BASE | <0.01% | $3,703.35 | 0.00153929 | $5.7 | |
| BASE | <0.01% | $3,696.3 | 0.00153401 | $5.67 | |
| BASE | <0.01% | $0.000122 | 46,179.6121 | $5.64 | |
| BASE | <0.01% | $3.75 | 1.4644 | $5.49 | |
| BASE | <0.01% | $0.024764 | 218.6673 | $5.42 | |
| BASE | <0.01% | $1 | 5.2782 | $5.28 | |
| BASE | <0.01% | $0.093265 | 55.8524 | $5.21 | |
| BASE | <0.01% | $0.055392 | 93.5641 | $5.18 | |
| BASE | <0.01% | $0.037105 | 137.6809 | $5.11 | |
| BASE | <0.01% | <$0.000001 | 51,842,196.1825 | $5 | |
| BASE | <0.01% | $0.55435 | 8.91 | $4.94 | |
| BASE | <0.01% | <$0.000001 | 3,218,287,780.6264 | $4.51 | |
| BASE | <0.01% | $0.680039 | 6.5319 | $4.44 | |
| BASE | <0.01% | $27,746 | 0.00016009 | $4.44 | |
| BASE | <0.01% | $0.000041 | 107,415.8222 | $4.44 | |
| BASE | <0.01% | $0.131407 | 33.3656 | $4.38 | |
| BASE | <0.01% | $3,600.52 | 0.00115467 | $4.16 | |
| BASE | <0.01% | $0.014876 | 271.6542 | $4.04 | |
| BASE | <0.01% | $0.033733 | 118.3427 | $3.99 | |
| BASE | <0.01% | $0.000021 | 182,928.3165 | $3.81 | |
| BASE | <0.01% | $0.001338 | 2,750.1218 | $3.68 | |
| BASE | <0.01% | $0.012284 | 299.3484 | $3.68 | |
| BASE | <0.01% | $0.372821 | 9.719 | $3.62 | |
| BASE | <0.01% | $3,309.77 | 0.00108599 | $3.59 | |
| BASE | <0.01% | $1.08 | 3.2944 | $3.57 | |
| BASE | <0.01% | $0.074152 | 48.0295 | $3.56 | |
| BASE | <0.01% | <$0.000001 | 11,449,103.5142 | $3.49 | |
| BASE | <0.01% | $0.260007 | 13.2155 | $3.44 | |
| BASE | <0.01% | $0.094096 | 36.2107 | $3.41 | |
| BASE | <0.01% | $0.826832 | 4.1097 | $3.4 | |
| BASE | <0.01% | $0.149466 | 21.2396 | $3.17 | |
| BASE | <0.01% | $0.763467 | 3.7943 | $2.9 | |
| BASE | <0.01% | $0.003698 | 779.8005 | $2.88 | |
| BASE | <0.01% | $143.85 | 0.0198 | $2.84 | |
| BASE | <0.01% | $0.05604 | 48.3562 | $2.71 | |
| BASE | <0.01% | $0.766684 | 3.5249 | $2.7 | |
| BASE | <0.01% | $0.000768 | 3,504.3935 | $2.69 | |
| BASE | <0.01% | $0.047772 | 54.362 | $2.6 | |
| BASE | <0.01% | $0.128191 | 20.081 | $2.57 | |
| BASE | <0.01% | $0.138683 | 17.5283 | $2.43 | |
| BASE | <0.01% | $94,902 | 0.00002481 | $2.35 | |
| BASE | <0.01% | $0.000328 | 7,174.5312 | $2.35 | |
| BASE | <0.01% | $0.999804 | 2.3082 | $2.31 | |
| BASE | <0.01% | $0.000201 | 11,324.4101 | $2.28 | |
| BASE | <0.01% | $1.04 | 2.1617 | $2.25 | |
| BASE | <0.01% | $0.037158 | 59.6279 | $2.22 | |
| BASE | <0.01% | $0.011548 | 188.8373 | $2.18 | |
| BASE | <0.01% | $0.000535 | 4,015.1699 | $2.15 | |
| BASE | <0.01% | $1.21 | 1.7421 | $2.11 | |
| BASE | <0.01% | $0.038182 | 53.3243 | $2.04 | |
| BASE | <0.01% | $0.001385 | 1,434.6819 | $1.99 | |
| BASE | <0.01% | $0.337978 | 5.598 | $1.89 | |
| BASE | <0.01% | $0.000059 | 30,766.9799 | $1.82 | |
| BASE | <0.01% | $0.000174 | 10,421.0103 | $1.82 | |
| BASE | <0.01% | $0.000438 | 4,119.3558 | $1.8 | |
| BASE | <0.01% | $0.000015 | 120,512.9502 | $1.77 | |
| BASE | <0.01% | $0.00368 | 467.1365 | $1.72 | |
| BASE | <0.01% | $229.6 | 0.00707844 | $1.63 | |
| BASE | <0.01% | $0.063564 | 25.4711 | $1.62 | |
| BASE | <0.01% | $0.042539 | 37.9732 | $1.62 | |
| BASE | <0.01% | $1.03 | 1.5006 | $1.54 | |
| BASE | <0.01% | $3,522.69 | 0.00041887 | $1.48 | |
| BASE | <0.01% | <$0.000001 | 186,738,635.0176 | $1.46 | |
| BASE | <0.01% | $0.000332 | 4,358.0805 | $1.45 | |
| BASE | <0.01% | $0.055153 | 25.705 | $1.42 | |
| BASE | <0.01% | $0.004196 | 335.0404 | $1.41 | |
| BASE | <0.01% | $0.00247 | 546.371 | $1.35 | |
| BASE | <0.01% | $0.00231 | 558.7824 | $1.29 | |
| BASE | <0.01% | $0.000898 | 1,402.1116 | $1.26 | |
| BASE | <0.01% | $0.000634 | 1,941.2583 | $1.23 | |
| BASE | <0.01% | $0.006971 | 168.7719 | $1.18 | |
| BASE | <0.01% | $0.073615 | 15.8653 | $1.17 | |
| BASE | <0.01% | $0.99578 | 1.1633 | $1.16 | |
| BASE | <0.01% | $0.000004 | 298,799.7813 | $1.15 | |
| BASE | <0.01% | $0.000354 | 3,157.7843 | $1.12 | |
| BASE | <0.01% | $0.06047 | 18.2638 | $1.1 | |
| BASE | <0.01% | $0.471422 | 2.3388 | $1.1 | |
| BASE | <0.01% | $0.015164 | 71.5588 | $1.09 | |
| BASE | <0.01% | $0.000047 | 22,788.499 | $1.07 | |
| BASE | <0.01% | $0.140872 | 7.6102 | $1.07 | |
| BASE | <0.01% | $0.010602 | 96.4857 | $1.02 | |
| BASE | <0.01% | $0.012909 | 77.7443 | $1 | |
| BASE | <0.01% | $0.008593 | 100.6168 | $0.8646 | |
| BASE | <0.01% | $0.000297 | 2,892.4433 | $0.8585 | |
| BASE | <0.01% | $0.948854 | 0.8565 | $0.8126 | |
| BASE | <0.01% | <$0.000001 | 57,348,307.748 | $0.7627 | |
| BASE | <0.01% | $0.975836 | 0.7663 | $0.7478 | |
| BASE | <0.01% | $0.041978 | 16.9672 | $0.7122 | |
| BASE | <0.01% | $0.080309 | 8.7779 | $0.7049 | |
| BASE | <0.01% | $0.000001 | 558,323.7779 | $0.7034 | |
| BASE | <0.01% | $0.001029 | 661.9115 | $0.6811 | |
| BASE | <0.01% | $2.24 | 0.3022 | $0.677 | |
| BASE | <0.01% | $3.34 | 0.1898 | $0.6338 | |
| BASE | <0.01% | $0.008158 | 77.1507 | $0.6294 | |
| BASE | <0.01% | $0.006381 | 97.1477 | $0.6199 | |
| BASE | <0.01% | $0.000002 | 330,721.8805 | $0.5986 | |
| BASE | <0.01% | $0.008764 | 67.9079 | $0.5951 | |
| BASE | <0.01% | $0.000095 | 5,990.1696 | $0.5715 | |
| BASE | <0.01% | $0.003007 | 182.0713 | $0.5474 | |
| BASE | <0.01% | $0.004592 | 117.5065 | $0.5395 | |
| BASE | <0.01% | $0.000171 | 3,144.6652 | $0.5375 | |
| BASE | <0.01% | $95,246 | 0.00000534 | $0.5085 | |
| BASE | <0.01% | $0.04766 | 10.4456 | $0.4978 | |
| BASE | <0.01% | $277.03 | 0.00178782 | $0.4952 | |
| BASE | <0.01% | $0.077651 | 6.0866 | $0.4726 | |
| BASE | <0.01% | $0.027795 | 15.9138 | $0.4423 | |
| BASE | <0.01% | $0.001729 | 254.712 | $0.4404 | |
| BASE | <0.01% | $0.002981 | 146.337 | $0.4362 | |
| BASE | <0.01% | $0.000701 | 607.4106 | $0.4259 | |
| BASE | <0.01% | $0.281364 | 1.4503 | $0.408 | |
| BASE | <0.01% | $0.000023 | 17,758.0078 | $0.4011 | |
| BASE | <0.01% | $0.548882 | 0.6936 | $0.3807 | |
| BASE | <0.01% | $0.00033 | 1,132.046 | $0.3733 | |
| BASE | <0.01% | $0.002992 | 120.0795 | $0.3593 | |
| BASE | <0.01% | $2.74 | 0.1296 | $0.355 | |
| BASE | <0.01% | $0.000006 | 61,805.905 | $0.3529 | |
| BASE | <0.01% | $196.43 | 0.00177057 | $0.3477 | |
| BASE | <0.01% | $0.122573 | 2.7512 | $0.3372 | |
| BASE | <0.01% | $0.009575 | 27.7959 | $0.2661 | |
| BASE | <0.01% | $0.334626 | 0.781 | $0.2613 | |
| BASE | <0.01% | $33.29 | 0.00764487 | $0.2544 | |
| BASE | <0.01% | $0.002098 | 118.301 | $0.2481 | |
| BASE | <0.01% | $0.999847 | 0.2459 | $0.2458 | |
| BASE | <0.01% | $0.218609 | 1.1111 | $0.2428 | |
| BASE | <0.01% | $0.000376 | 614.7301 | $0.2312 | |
| BASE | <0.01% | $0.029153 | 7.9093 | $0.2305 | |
| BASE | <0.01% | $0.813038 | 0.2832 | $0.2302 | |
| BASE | <0.01% | $96,720 | 0.00000229 | $0.2214 | |
| BASE | <0.01% | $0.000194 | 1,125 | $0.2179 | |
| BASE | <0.01% | <$0.000001 | 67,133,872.1648 | $0.2081 | |
| BASE | <0.01% | $0.084235 | 2.4622 | $0.2074 | |
| BASE | <0.01% | $0.000334 | 603.5441 | $0.2017 | |
| BASE | <0.01% | $17.42 | 0.011 | $0.1919 | |
| BASE | <0.01% | $0.000321 | 583.4535 | $0.187 | |
| BASE | <0.01% | $0.002598 | 70.7469 | $0.1837 | |
| BASE | <0.01% | $0.000002 | 95,306.3388 | $0.1782 | |
| BASE | <0.01% | $0.000488 | 328.8231 | $0.1603 | |
| BASE | <0.01% | $0.000357 | 441.2591 | $0.1573 | |
| BASE | <0.01% | $0.668649 | 0.2304 | $0.154 | |
| BASE | <0.01% | $0.014318 | 10.437 | $0.1494 | |
| BASE | <0.01% | $0.000993 | 145.9505 | $0.1449 | |
| BASE | <0.01% | $0.020747 | 6.8021 | $0.1411 | |
| BASE | <0.01% | $0.000076 | 1,846.6681 | $0.1404 | |
| BASE | <0.01% | $0.008501 | 16.405 | $0.1394 | |
| BASE | <0.01% | <$0.000001 | 2,970,253.6934 | $0.136 | |
| BASE | <0.01% | <$0.000001 | 1,520,364.1342 | $0.1353 | |
| BASE | <0.01% | $0.000002 | 65,290.2216 | $0.1312 | |
| BASE | <0.01% | $3,568.07 | 0.00003658 | $0.1305 | |
| BASE | <0.01% | $0.026046 | 4.6232 | $0.1204 | |
| BASE | <0.01% | $0.000392 | 286.7289 | $0.1124 | |
| BASE | <0.01% | $0.220848 | 0.4937 | $0.109 | |
| BASE | <0.01% | $0.018453 | 5.7558 | $0.1062 | |
| BASE | <0.01% | $0.076435 | 1.3874 | $0.106 | |
| BASE | <0.01% | $0.000344 | 298.173 | $0.1025 | |
| BASE | <0.01% | $0.012861 | 7.8066 | $0.1004 | |
| POL | <0.01% | $0.999759 | 91.2214 | $91.2 | |
| POL | <0.01% | $0.99997 | 81.5352 | $81.53 | |
| POL | <0.01% | $1.19 | 66.047 | $78.6 | |
| POL | <0.01% | $0.1733 | 443.5387 | $76.87 | |
| POL | <0.01% | $0.44256 | 168.6678 | $74.65 | |
| POL | <0.01% | $1.16 | 55.25 | $64.09 | |
| POL | <0.01% | $0.185215 | 293.6569 | $54.39 | |
| POL | <0.01% | $0.99975 | 53.1943 | $53.18 | |
| POL | <0.01% | $3,309.07 | 0.016 | $52.88 | |
| POL | <0.01% | $176.14 | 0.2999 | $52.82 | |
| POL | <0.01% | $95,534 | 0.0004518 | $43.16 | |
| POL | <0.01% | $95,272 | 0.00044242 | $42.15 | |
| POL | <0.01% | $0.14767 | 273.664 | $40.41 | |
| POL | <0.01% | $1.01 | 39.6857 | $40 | |
| POL | <0.01% | $2.22 | 11.6244 | $25.81 | |
| POL | <0.01% | $1.01 | 25.5438 | $25.75 | |
| POL | <0.01% | $0.170134 | 117.7603 | $20.03 | |
| POL | <0.01% | $0.614611 | 28.5608 | $17.55 | |
| POL | <0.01% | $13.84 | 1.2242 | $16.94 | |
| POL | <0.01% | $0.202141 | 77.1884 | $15.6 | |
| POL | <0.01% | $0.126226 | 110.7273 | $13.98 | |
| POL | <0.01% | $4,058.72 | 0.00319983 | $12.99 | |
| POL | <0.01% | $0.000684 | 18,504.1725 | $12.65 | |
| POL | <0.01% | $0.776936 | 14.3491 | $11.15 | |
| POL | <0.01% | $4,607.79 | 0.00210267 | $9.69 | |
| POL | <0.01% | $0.174319 | 55.231 | $9.63 | |
| POL | <0.01% | $95,441 | 0.00010021 | $9.56 | |
| POL | <0.01% | $3,309.77 | 0.0027036 | $8.95 | |
| POL | <0.01% | $0.012678 | 545.1657 | $6.91 | |
| POL | <0.01% | $0.001121 | 5,468.6109 | $6.13 | |
| POL | <0.01% | $1.02 | 5.9113 | $6.04 | |
| POL | <0.01% | $3.35 | 1.6901 | $5.66 | |
| POL | <0.01% | $1.16 | 4.7449 | $5.5 | |
| POL | <0.01% | $1.16 | 4.7449 | $5.5 | |
| POL | <0.01% | $0.036393 | 123.1204 | $4.48 | |
| POL | <0.01% | $0.152477 | 27.0483 | $4.12 | |
| POL | <0.01% | $0.008715 | 470.2127 | $4.1 | |
| POL | <0.01% | $0.003735 | 858.15 | $3.21 | |
| POL | <0.01% | $0.154688 | 18.347 | $2.84 | |
| POL | <0.01% | $175.93 | 0.0153 | $2.7 | |
| POL | <0.01% | $0.554346 | 4.5702 | $2.53 | |
| POL | <0.01% | $0.819228 | 2.907 | $2.38 | |
| POL | <0.01% | $0.189812 | 11.1529 | $2.12 | |
| POL | <0.01% | $0.055165 | 36.2885 | $2 | |
| POL | <0.01% | $0.000174 | 11,046.1412 | $1.92 | |
| POL | <0.01% | $5.43 | 0.3386 | $1.84 | |
| POL | <0.01% | $0.147551 | 12.3486 | $1.82 | |
| POL | <0.01% | $0.000644 | 2,790.2614 | $1.8 | |
| POL | <0.01% | $0.994336 | 1.7597 | $1.75 | |
| POL | <0.01% | $0.108046 | 15.6666 | $1.69 | |
| POL | <0.01% | $0.147412 | 11.0819 | $1.63 | |
| POL | <0.01% | $0.186232 | 8.275 | $1.54 | |
| POL | <0.01% | $13.83 | 0.1111 | $1.54 | |
| POL | <0.01% | $0.999769 | 1.4922 | $1.49 | |
| POL | <0.01% | $0.077655 | 19.1242 | $1.49 | |
| POL | <0.01% | $0.014715 | 91.241 | $1.34 | |
| POL | <0.01% | $4,055.72 | 0.00029261 | $1.19 | |
| POL | <0.01% | $0.999769 | 1.183 | $1.18 | |
| POL | <0.01% | $0.000004 | 252,479.0493 | $1.04 | |
| POL | <0.01% | $0.003998 | 248.6816 | $0.9942 | |
| POL | <0.01% | $64.16 | 0.014 | $0.8959 | |
| POL | <0.01% | $0.000021 | 40,549.5553 | $0.8586 | |
| POL | <0.01% | $175.4 | 0.00488199 | $0.8563 | |
| POL | <0.01% | $0.004356 | 188.9599 | $0.823 | |
| POL | <0.01% | $0.170745 | 4.0747 | $0.6957 | |
| POL | <0.01% | $0.115651 | 5.9179 | $0.6844 | |
| POL | <0.01% | $0.001106 | 603.9121 | $0.6676 | |
| POL | <0.01% | $95,659 | 0.0000066 | $0.6313 | |
| POL | <0.01% | $1.71 | 0.3601 | $0.6157 | |
| POL | <0.01% | $0.244257 | 2.3513 | $0.5743 | |
| POL | <0.01% | $0.002814 | 192.7735 | $0.5425 | |
| POL | <0.01% | $0.163419 | 3.0095 | $0.4918 | |
| POL | <0.01% | $0.000995 | 419.0327 | $0.4168 | |
| POL | <0.01% | $0.185222 | 2.1588 | $0.3998 | |
| POL | <0.01% | $6.26 | 0.0629 | $0.3939 | |
| POL | <0.01% | $0.01904 | 18.2953 | $0.3483 | |
| POL | <0.01% | $0.00905 | 34.4046 | $0.3113 | |
| POL | <0.01% | $0.00047 | 652.7738 | $0.3069 | |
| POL | <0.01% | $0.000562 | 520.0438 | $0.2921 | |
| POL | <0.01% | $0.005889 | 46.9713 | $0.2766 | |
| POL | <0.01% | $27.34 | 0.00939279 | $0.2567 | |
| POL | <0.01% | $21.23 | 0.0118 | $0.2513 | |
| POL | <0.01% | $0.040629 | 5.6539 | $0.2297 | |
| POL | <0.01% | $0.007367 | 28.4159 | $0.2093 | |
| POL | <0.01% | $0.009232 | 22.6575 | $0.2091 | |
| POL | <0.01% | $0.300922 | 0.6429 | $0.1934 | |
| POL | <0.01% | $0.002067 | 92.5879 | $0.1913 | |
| POL | <0.01% | $0.000155 | 1,226.8847 | $0.1902 | |
| POL | <0.01% | $143.84 | 0.00124577 | $0.1791 | |
| POL | <0.01% | $0.057311 | 3.0887 | $0.177 | |
| POL | <0.01% | $0.000009 | 18,855.8785 | $0.1617 | |
| POL | <0.01% | $0.110467 | 1.4419 | $0.1592 | |
| POL | <0.01% | $0.015968 | 9.2455 | $0.1476 | |
| POL | <0.01% | $0.000028 | 5,200.3381 | $0.1431 | |
| POL | <0.01% | $0.013735 | 10.3327 | $0.1419 | |
| POL | <0.01% | $0.16688 | 0.7898 | $0.1317 | |
| POL | <0.01% | $0.147666 | 0.8547 | $0.1262 | |
| POL | <0.01% | $0.543211 | 0.225 | $0.1222 | |
| POL | <0.01% | $0.26555 | 0.4157 | $0.1103 | |
| POL | <0.01% | $0.002832 | 38.9599 | $0.1103 | |
| POL | <0.01% | $0.000888 | 124.0693 | $0.1102 | |
| POL | <0.01% | $0.001689 | 59.4221 | $0.1003 | |
| SONIC | <0.01% | $0.082686 | 1,147.9821 | $94.92 | |
| SONIC | <0.01% | $0.082539 | 1,064.0457 | $87.83 | |
| SONIC | <0.01% | $1.22 | 64.9935 | $79.29 | |
| SONIC | <0.01% | $0.999603 | 79.2225 | $79.19 | |
| SONIC | <0.01% | $0.009693 | 6,272.3822 | $60.8 | |
| SONIC | <0.01% | $0.00 | 55.5992 | $0.00 | |
| SONIC | <0.01% | $0.09003 | 570.3792 | $51.35 | |
| SONIC | <0.01% | $0.00227 | 18,230.1279 | $41.38 | |
| SONIC | <0.01% | $3.69 | 9.9272 | $36.63 | |
| SONIC | <0.01% | $3,311.39 | 0.00959128 | $31.76 | |
| SONIC | <0.01% | $0.086646 | 295.574 | $25.61 | |
| SONIC | <0.01% | $0.013589 | 1,838.8011 | $24.99 | |
| SONIC | <0.01% | $0.016583 | 1,143.3115 | $18.96 | |
| SONIC | <0.01% | $0.001318 | 13,660.3499 | $18 | |
| SONIC | <0.01% | $1.73 | 9.5922 | $16.59 | |
| SONIC | <0.01% | $1.01 | 15.6749 | $15.77 | |
| SONIC | <0.01% | $0.00 | 0.00361556 | $0.00 | |
| SONIC | <0.01% | $0.002218 | 4,542.2299 | $10.07 | |
| SONIC | <0.01% | $0.246882 | 40.0483 | $9.89 | |
| SONIC | <0.01% | $0.000571 | 14,673.3947 | $8.38 | |
| SONIC | <0.01% | $0.998009 | 7.4738 | $7.46 | |
| SONIC | <0.01% | $0.082252 | 57.413 | $4.72 | |
| SONIC | <0.01% | $1.16 | 3.3252 | $3.86 | |
| SONIC | <0.01% | $1.14 | 3.1167 | $3.57 | |
| SONIC | <0.01% | $0.00 | 2.9709 | $0.00 | |
| SONIC | <0.01% | $0.007536 | 330.4548 | $2.49 | |
| SONIC | <0.01% | $0.025987 | 93.2924 | $2.42 | |
| SONIC | <0.01% | $0.140326 | 16.2081 | $2.27 | |
| SONIC | <0.01% | $0.005752 | 298.3502 | $1.72 | |
| SONIC | <0.01% | <$0.000001 | 13,811,967.1267 | $1.24 | |
| SONIC | <0.01% | $95,261 | 0.00001194 | $1.14 | |
| SONIC | <0.01% | $0.000066 | 8,124.1585 | $0.535 | |
| SONIC | <0.01% | $0.042177 | 6.3492 | $0.2677 | |
| SONIC | <0.01% | $0.00 | 0.3191 | $0.00 | |
| SONIC | <0.01% | $0.003159 | 80.1924 | $0.2532 | |
| SONIC | <0.01% | $0.007688 | 30.7835 | $0.2366 | |
| SONIC | <0.01% | $229.6 | 0.00102595 | $0.2355 | |
| SONIC | <0.01% | $0.002076 | 104.3244 | $0.2166 | |
| SONIC | <0.01% | $0.9985 | 0.1742 | $0.1739 | |
| SONIC | <0.01% | $2.24 | 0.0616 | $0.1379 | |
| SONIC | <0.01% | $0.000243 | 465.7503 | $0.1132 | |
| FRAXTAL | <0.01% | $3,307.07 | 0.0285 | $94.34 | |
| FRAXTAL | <0.01% | $0.81275 | 101.3788 | $82.4 | |
| FRAXTAL | <0.01% | $0.999876 | 77.9749 | $77.97 | |
| FRAXTAL | <0.01% | $0.812021 | 92.8449 | $75.39 | |
| FRAXTAL | <0.01% | $0.001724 | 38,052.967 | $65.6 | |
| FRAXTAL | <0.01% | $0.995383 | 62.3057 | $62.02 | |
| FRAXTAL | <0.01% | $1.21 | 48.1577 | $58.27 | |
| FRAXTAL | <0.01% | $0.995383 | 48.9131 | $48.69 | |
| FRAXTAL | <0.01% | $3,792.62 | 0.0111 | $42.11 | |
| FRAXTAL | <0.01% | $0.440622 | 73.1998 | $32.25 | |
| FRAXTAL | <0.01% | $0.995383 | 27.0158 | $26.89 | |
| FRAXTAL | <0.01% | $1.01 | 26.5236 | $26.68 | |
| FRAXTAL | <0.01% | $3,538.33 | 0.00611878 | $21.65 | |
| FRAXTAL | <0.01% | $0.995383 | 18.2693 | $18.18 | |
| FRAXTAL | <0.01% | $1 | 16.6568 | $16.66 | |
| FRAXTAL | <0.01% | $0.995383 | 16.6519 | $16.58 | |
| FRAXTAL | <0.01% | $0.999804 | 11.9053 | $11.9 | |
| FRAXTAL | <0.01% | $0.289458 | 18.1555 | $5.26 | |
| FRAXTAL | <0.01% | $1.15 | 3.4269 | $3.94 | |
| FRAXTAL | <0.01% | $0.155153 | 20.0577 | $3.11 | |
| FRAXTAL | <0.01% | $0.999634 | 2.0709 | $2.07 | |
| FRAXTAL | <0.01% | $1.18 | 0.552 | $0.6513 | |
| FRAXTAL | <0.01% | $0.002707 | 176.4801 | $0.4777 | |
| FRAXTAL | <0.01% | $95,309 | 0.00000338 | $0.3221 | |
| FRAXTAL | <0.01% | $0.024621 | 7.7307 | $0.1903 | |
| OP | <0.01% | $95,309 | 0.00098754 | $94.12 | |
| OP | <0.01% | $0.827237 | 83.3094 | $68.92 | |
| OP | <0.01% | $0.00 | 0.0167 | $0.00 | |
| OP | <0.01% | $0.354068 | 137.6596 | $48.74 | |
| OP | <0.01% | $181.24 | 0.2354 | $42.67 | |
| OP | <0.01% | $1.28 | 24.2426 | $31.03 | |
| OP | <0.01% | $0.999804 | 30.3636 | $30.36 | |
| OP | <0.01% | $3,174.35 | 0.00950469 | $30.17 | |
| OP | <0.01% | $3,317.67 | 0.00848417 | $28.15 | |
| OP | <0.01% | $0.182061 | 141.066 | $25.68 | |
| OP | <0.01% | $1.01 | 25.4438 | $25.6 | |
| OP | <0.01% | $0.999783 | 20.9156 | $20.91 | |
| OP | <0.01% | $13.83 | 1.4884 | $20.58 | |
| OP | <0.01% | $0.502516 | 35.2945 | $17.74 | |
| OP | <0.01% | $0.001106 | 13,239.3246 | $14.64 | |
| OP | <0.01% | $0.00 | 0.0038367 | $0.00 | |
| OP | <0.01% | $3,829.49 | 0.00378987 | $14.51 | |
| OP | <0.01% | $0.563594 | 25.2427 | $14.23 | |
| OP | <0.01% | $3,309.77 | 0.00362225 | $11.99 | |
| OP | <0.01% | $0.260007 | 45.8174 | $11.91 | |
| OP | <0.01% | $0.014876 | 728.1569 | $10.83 | |
| OP | <0.01% | $1.7 | 4.3325 | $7.37 | |
| OP | <0.01% | $176.11 | 0.0369 | $6.49 | |
| OP | <0.01% | $1.01 | 6.1095 | $6.15 | |
| OP | <0.01% | $0.440622 | 12.4877 | $5.5 | |
| OP | <0.01% | $0.031077 | 174.7971 | $5.43 | |
| OP | <0.01% | $0.024614 | 142.2393 | $3.5 | |
| OP | <0.01% | $0.329343 | 10.0534 | $3.31 | |
| OP | <0.01% | $0.997278 | 3.0406 | $3.03 | |
| OP | <0.01% | $5.43 | 0.4768 | $2.59 | |
| OP | <0.01% | $95,565 | 0.00002183 | $2.09 | |
| OP | <0.01% | $0.966822 | 2.0819 | $2.01 | |
| OP | <0.01% | $0.999634 | 1.9997 | $2 | |
| OP | <0.01% | $0.55435 | 2.8452 | $1.58 | |
| OP | <0.01% | $8.08 | 0.1747 | $1.41 | |
| OP | <0.01% | $0.051083 | 25.8646 | $1.32 | |
| OP | <0.01% | $0.080374 | 14.3941 | $1.16 | |
| OP | <0.01% | $4,059.6 | 0.00026468 | $1.07 | |
| OP | <0.01% | $0.998055 | 0.865 | $0.8633 | |
| OP | <0.01% | $4,055.72 | 0.00019408 | $0.7871 | |
| OP | <0.01% | $0.614348 | 1.1155 | $0.6853 | |
| OP | <0.01% | $1.27 | 0.4909 | $0.6234 | |
| OP | <0.01% | $1.16 | 0.5202 | $0.6034 | |
| OP | <0.01% | $110,933 | 0.00000527 | $0.5846 | |
| OP | <0.01% | $0.073658 | 7.6557 | $0.5639 | |
| OP | <0.01% | $0.017601 | 26.3862 | $0.4644 | |
| OP | <0.01% | $3,538.33 | 0.00012579 | $0.4451 | |
| OP | <0.01% | $0.145583 | 2.899 | $0.422 | |
| OP | <0.01% | $0.011988 | 30.0196 | $0.3598 | |
| OP | <0.01% | $2,699.51 | 0.00011894 | $0.321 | |
| OP | <0.01% | $0.067408 | 4.6473 | $0.3132 | |
| OP | <0.01% | $3,307.07 | 0.00007806 | $0.2581 | |
| OP | <0.01% | $0.995383 | 0.1799 | $0.179 | |
| OP | <0.01% | $0.002079 | 84.7314 | $0.1761 | |
| OP | <0.01% | $0.999847 | 0.154 | $0.1539 | |
| OP | <0.01% | $0.002567 | 42.9033 | $0.1101 | |
| OP | <0.01% | $0.00764 | 13.9284 | $0.1064 | |
| LINEA | <0.01% | $3,313.95 | 0.0274 | $90.7 | |
| LINEA | <0.01% | $0.006619 | 11,787.5573 | $78.02 | |
| LINEA | <0.01% | $1.01 | 70.5955 | $71.16 | |
| LINEA | <0.01% | $4,058.72 | 0.0156 | $63.14 | |
| LINEA | <0.01% | $95,272 | 0.00062941 | $59.97 | |
| LINEA | <0.01% | $0.040285 | 1,000.0546 | $40.29 | |
| LINEA | <0.01% | $0.052351 | 695.772 | $36.42 | |
| LINEA | <0.01% | $0.000523 | 44,945.4638 | $23.51 | |
| LINEA | <0.01% | $1 | 22.5783 | $22.58 | |
| LINEA | <0.01% | $3,304.42 | 0.00600386 | $19.84 | |
| LINEA | <0.01% | $1 | 16.8142 | $16.81 | |
| LINEA | <0.01% | $0.000214 | 76,689.4655 | $16.41 | |
| LINEA | <0.01% | $3,711.52 | 0.00427593 | $15.87 | |
| LINEA | <0.01% | $0.999617 | 13.8674 | $13.86 | |
| LINEA | <0.01% | $0.001667 | 8,198.9603 | $13.66 | |
| LINEA | <0.01% | $0.999759 | 9.2151 | $9.21 | |
| LINEA | <0.01% | $3,318.62 | 0.00235704 | $7.82 | |
| LINEA | <0.01% | $3,537.05 | 0.00205458 | $7.27 | |
| LINEA | <0.01% | $0.99975 | 6.4022 | $6.4 | |
| LINEA | <0.01% | $1.17 | 5.3053 | $6.21 | |
| LINEA | <0.01% | $3,477.57 | 0.0008321 | $2.89 | |
| LINEA | <0.01% | $0.000006 | 443,342.758 | $2.81 | |
| LINEA | <0.01% | $0.03582 | 59.583 | $2.13 | |
| LINEA | <0.01% | $0.007642 | 239.482 | $1.83 | |
| LINEA | <0.01% | $0.147715 | 9.7631 | $1.44 | |
| LINEA | <0.01% | $0.819228 | 1.3028 | $1.07 | |
| LINEA | <0.01% | $1 | 0.924 | $0.9277 | |
| LINEA | <0.01% | $1 | 0.6863 | $0.6862 | |
| LINEA | <0.01% | $2.13 | 0.2453 | $0.5223 | |
| LINEA | <0.01% | $5.43 | 0.0352 | $0.1912 | |
| LINEA | <0.01% | $0.147845 | 0.9098 | $0.1345 | |
| AVAX | <0.01% | $264,122 | 0.00042928 | $113.38 | |
| AVAX | <0.01% | $95,418 | 0.00046737 | $44.6 | |
| AVAX | <0.01% | $13.87 | 2.7886 | $38.68 | |
| AVAX | <0.01% | $13.9 | 2.7671 | $38.45 | |
| AVAX | <0.01% | $0.99975 | 37.4079 | $37.4 | |
| AVAX | <0.01% | $13.83 | 2.6579 | $36.76 | |
| AVAX | <0.01% | $0.999758 | 34.4214 | $34.41 | |
| AVAX | <0.01% | $0.999593 | 26.3869 | $26.38 | |
| AVAX | <0.01% | $0.999593 | 24.8474 | $24.84 | |
| AVAX | <0.01% | $3,315.13 | 0.00744811 | $24.69 | |
| AVAX | <0.01% | $1.16 | 19.7158 | $22.87 | |
| AVAX | <0.01% | <$0.000001 | 97,320,047.4757 | $16.82 | |
| AVAX | <0.01% | $0.999769 | 15.5321 | $15.53 | |
| AVAX | <0.01% | $0.000519 | 24,166.5537 | $12.54 | |
| AVAX | <0.01% | $95,237.86 | 0.00013086 | $12.46 | |
| AVAX | <0.01% | $5,686.67 | 0.00178654 | $10.16 | |
| AVAX | <0.01% | $4,589.49 | 0.001803 | $8.27 | |
| AVAX | <0.01% | $0.002423 | 2,576.9107 | $6.24 | |
| AVAX | <0.01% | $0.024873 | 200.8576 | $5 | |
| AVAX | <0.01% | $0.038942 | 126.3676 | $4.92 | |
| AVAX | <0.01% | $8.07 | 0.5867 | $4.73 | |
| AVAX | <0.01% | $0.000398 | 10,749.5832 | $4.28 | |
| AVAX | <0.01% | $95,378 | 0.00003251 | $3.1 | |
| AVAX | <0.01% | $0.00 | 2.6794 | $0.00 | |
| AVAX | <0.01% | $0.003537 | 707.4749 | $2.5 | |
| AVAX | <0.01% | $17.29 | 0.1421 | $2.46 | |
| AVAX | <0.01% | $0.001774 | 1,236.5111 | $2.19 | |
| AVAX | <0.01% | $0.026508 | 66.3656 | $1.76 | |
| AVAX | <0.01% | <$0.000001 | 711,191,071.0466 | $1.71 | |
| AVAX | <0.01% | $0.993438 | 1.4801 | $1.47 | |
| AVAX | <0.01% | $0.99975 | 1.4091 | $1.41 | |
| AVAX | <0.01% | $0.065122 | 21.4661 | $1.4 | |
| AVAX | <0.01% | $3,309.77 | 0.0003896 | $1.29 | |
| AVAX | <0.01% | $0.060886 | 18.3807 | $1.12 | |
| AVAX | <0.01% | $13.09 | 0.0508 | $0.6654 | |
| AVAX | <0.01% | $0.000267 | 1,995.2811 | $0.5333 | |
| AVAX | <0.01% | $0.006283 | 62.5687 | $0.393 | |
| AVAX | <0.01% | $96,236 | 0.00000265 | $0.255 | |
| AVAX | <0.01% | $0.99595 | 0.2492 | $0.2482 | |
| AVAX | <0.01% | $3.44 | 0.0719 | $0.2473 | |
| AVAX | <0.01% | $745.18 | 0.00031871 | $0.2374 | |
| AVAX | <0.01% | $0.019092 | 10.4276 | $0.199 | |
| MANTLE | <0.01% | $0.00 | 82.661 | $0.00 | |
| MANTLE | <0.01% | $1.01 | 78.3899 | $78.94 | |
| MANTLE | <0.01% | $0.994042 | 68.4314 | $68.02 | |
| MANTLE | <0.01% | $0.952102 | 37.3308 | $35.54 | |
| MANTLE | <0.01% | $3,592.82 | 0.00960012 | $34.49 | |
| MANTLE | <0.01% | $0.003824 | 8,594.8468 | $32.87 | |
| MANTLE | <0.01% | $0.952229 | 31.9229 | $30.4 | |
| MANTLE | <0.01% | $3,597.37 | 0.00739008 | $26.58 | |
| MANTLE | <0.01% | $0.999474 | 23.993 | $23.98 | |
| MANTLE | <0.01% | $1.21 | 15.857 | $19.19 | |
| MANTLE | <0.01% | $1 | 12.0403 | $12.04 | |
| MANTLE | <0.01% | $0.00 | 11.0822 | $0.00 | |
| MANTLE | <0.01% | $0.025435 | 135.2551 | $3.44 | |
| MANTLE | <0.01% | $3,317.09 | 0.00005613 | $0.1861 | |
| MANTLE | <0.01% | $1.1 | 0.1218 | $0.1337 | |
| MANTLE | <0.01% | $0.982424 | 0.1342 | $0.1318 | |
| SCROLL | <0.01% | $3,317.31 | 0.021 | $69.55 | |
| SCROLL | <0.01% | $3,314.17 | 0.0165 | $54.71 | |
| SCROLL | <0.01% | $0.999566 | 42.1867 | $42.17 | |
| SCROLL | <0.01% | $3,520.36 | 0.0107 | $37.82 | |
| SCROLL | <0.01% | $1.01 | 34.5528 | $34.83 | |
| SCROLL | <0.01% | $3,598.19 | 0.00373194 | $13.43 | |
| SCROLL | <0.01% | $95,201.76 | 0.00013211 | $12.58 | |
| SCROLL | <0.01% | $0.085252 | 47.2622 | $4.03 | |
| SCROLL | <0.01% | $3,820.69 | 0.00072974 | $2.79 | |
| SCROLL | <0.01% | $4,047.31 | 0.00008457 | $0.3423 | |
| UNI | <0.01% | $0.00 | 0.0117 | $0.00 | |
| UNI | <0.01% | $3,313.96 | 0.0089521 | $29.67 | |
| UNI | <0.01% | $1.01 | 19.4038 | $19.52 | |
| UNI | <0.01% | $95,201.76 | 0.00016426 | $15.64 | |
| UNI | <0.01% | $5.43 | 1.4805 | $8.04 | |
| UNI | <0.01% | $25.49 | 0.0824 | $2.1 |
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.