ETH Price: $2,946.01 (+0.09%)

Contract

0x07964f135f276412b3182a3B2407b8dd45000000

Overview

ETH Balance

0.580884524627518912 ETH

ETH Value

$1,711.29 (@ $2,946.01/ETH)

Token Holdings

More Info

Private Name Tags

Transaction Hash
Block
From
To
Exact Input V3Sw...4245052752026-01-23 21:11:581 min ago1769202718IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000005450.020024
Exact Input V2Sw...4245038282026-01-23 21:05:577 mins ago1769202357IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003370.02
Aggregate4245033612026-01-23 21:04:019 mins ago1769202241IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000005720.020312
Cross4245026412026-01-23 21:01:0012 mins ago1769202060IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003050.020096
Exact Input V2Sw...4245017792026-01-23 20:57:2616 mins ago1769201846IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003980.020014
Exact Input V3Sw...4245016632026-01-23 20:56:5716 mins ago1769201817IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000006270.020114
Cross4245001552026-01-23 20:50:4022 mins ago1769201440IN
Transit Swap: Transit Swap Router V5.0
0.00290691 ETH0.000003480.02
Exact Input V3Sw...4244994802026-01-23 20:47:5025 mins ago1769201270IN
Transit Swap: Transit Swap Router V5.0
0.04 ETH0.000008270.020006
Exact Input V3Sw...4244991212026-01-23 20:46:2127 mins ago1769201181IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003670.020012
Exact Input V3Sw...4244990032026-01-23 20:45:5127 mins ago1769201151IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003550.02
Exact Input V3Sw...4244986052026-01-23 20:44:1329 mins ago1769201053IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003450.02
Exact Input V3Sw...4244984752026-01-23 20:43:4029 mins ago1769201020IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000006560.020016
Exact Input V3Sw...4244980262026-01-23 20:41:4831 mins ago1769200908IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003450.02
Exact Input V3Sw...4244978332026-01-23 20:40:5932 mins ago1769200859IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003870.020428
Exact Input V3Sw...4244969072026-01-23 20:37:1036 mins ago1769200630IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003710.020042
Cross4244962062026-01-23 20:34:1439 mins ago1769200454IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000004830.020034
Exact Input V3Sw...4244961802026-01-23 20:34:0839 mins ago1769200448IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000004490.02
Exact Input V3Sw...4244954612026-01-23 20:31:0842 mins ago1769200268IN
Transit Swap: Transit Swap Router V5.0
0.00062101 ETH0.000006350.020004
Exact Input V3Sw...4244953282026-01-23 20:30:3542 mins ago1769200235IN
Transit Swap: Transit Swap Router V5.0
0.01114695 ETH0.000005160.02
Aggregate4244947512026-01-23 20:28:1045 mins ago1769200090IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000007260.020054
Cross4244944182026-01-23 20:26:4646 mins ago1769200006IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000004850.020076
Cross4244933982026-01-23 20:22:3150 mins ago1769199751IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000004840.02
Exact Input V3Sw...4244918442026-01-23 20:16:0157 mins ago1769199361IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003360.020124
Exact Input V3Sw...4244913662026-01-23 20:14:001 hr ago1769199240IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000003350.020062
Exact Input V3Sw...4244897722026-01-23 20:07:221 hr ago1769198842IN
Transit Swap: Transit Swap Router V5.0
0 ETH0.000007040.020008
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
4245016632026-01-23 20:56:5716 mins ago1769201817
Transit Swap: Transit Swap Router V5.0
0.00169627 ETH
4245016632026-01-23 20:56:5716 mins ago1769201817
Transit Swap: Transit Swap Router V5.0
0.00169627 ETH
4245001552026-01-23 20:50:4022 mins ago1769201440
Transit Swap: Transit Swap Router V5.0
0.00289819 ETH
4244994802026-01-23 20:47:5025 mins ago1769201270
Transit Swap: Transit Swap Router V5.0
0.03988 ETH
4244969072026-01-23 20:37:1036 mins ago1769200630
Transit Swap: Transit Swap Router V5.0
0.03369583 ETH
4244969072026-01-23 20:37:1036 mins ago1769200630
Transit Swap: Transit Swap Router V5.0
0.03369583 ETH
4244961802026-01-23 20:34:0839 mins ago1769200448
Transit Swap: Transit Swap Router V5.0
0.03374605 ETH
4244961802026-01-23 20:34:0839 mins ago1769200448
Transit Swap: Transit Swap Router V5.0
0.03374605 ETH
4244954612026-01-23 20:31:0842 mins ago1769200268
Transit Swap: Transit Swap Router V5.0
0.00061915 ETH
4244953282026-01-23 20:30:3542 mins ago1769200235
Transit Swap: Transit Swap Router V5.0
0.01111351 ETH
4244897722026-01-23 20:07:221 hr ago1769198842
Transit Swap: Transit Swap Router V5.0
0.00012367 ETH
4244897722026-01-23 20:07:221 hr ago1769198842
Transit Swap: Transit Swap Router V5.0
0.00012367 ETH
4244891302026-01-23 20:04:421 hr ago1769198682
Transit Swap: Transit Swap Router V5.0
0.000997 ETH
4244890502026-01-23 20:04:221 hr ago1769198662
Transit Swap: Transit Swap Router V5.0
0.000997 ETH
4244882732026-01-23 20:01:061 hr ago1769198466
Transit Swap: Transit Swap Router V5.0
0.03353245 ETH
4244882732026-01-23 20:01:061 hr ago1769198466
Transit Swap: Transit Swap Router V5.0
0.03353245 ETH
4244832362026-01-23 19:40:121 hr ago1769197212
Transit Swap: Transit Swap Router V5.0
0.03341144 ETH
4244832362026-01-23 19:40:121 hr ago1769197212
Transit Swap: Transit Swap Router V5.0
0.03341144 ETH
4244828672026-01-23 19:38:391 hr ago1769197119
Transit Swap: Transit Swap Router V5.0
0.05059254 ETH
4244828672026-01-23 19:38:391 hr ago1769197119
Transit Swap: Transit Swap Router V5.0
0.05059254 ETH
4244827212026-01-23 19:38:031 hr ago1769197083
Transit Swap: Transit Swap Router V5.0
0.0078763 ETH
4244825442026-01-23 19:37:181 hr ago1769197038
Transit Swap: Transit Swap Router V5.0
0.0004985 ETH
4244801412026-01-23 19:27:201 hr ago1769196440
Transit Swap: Transit Swap Router V5.0
0.10032979 ETH
4244801412026-01-23 19:27:201 hr ago1769196440
Transit Swap: Transit Swap Router V5.0
0.10032979 ETH
4244714412026-01-23 18:51:092 hrs ago1769194269
Transit Swap: Transit Swap Router V5.0
0.008973 ETH
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TransitSwapRouterV5

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity =0.8.20;

import "./UniswapV2Router.sol";
import "./UniswapV3Router.sol";
import "./AggregateRouter.sol";
import "./CrossRouter.sol";

contract TransitSwapRouterV5 is UniswapV2Router, UniswapV3Router, AggregateRouter, CrossRouter  {

    function withdrawTokens(address[] memory tokens, address recipient) external onlyExecutor {
        for (uint index; index < tokens.length; index++) {
            uint amount;
            if (TransferHelper.isETH(tokens[index])) {
                amount = address(this).balance;
                TransferHelper.safeTransferETH(recipient, amount);
            } else {
                amount = IERC20(tokens[index]).balanceOf(address(this));
                TransferHelper.safeTransferWithoutRequire(tokens[index], recipient, amount);
            }
            emit Withdraw(tokens[index], msg.sender, recipient, amount);
        }
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./BaseCore.sol";

contract CrossRouter is BaseCore {

    using SafeMath for uint256;

    constructor() {}

    function cross(CrossDescription calldata desc) external payable nonReentrant whenNotPaused(FunctionFlag.cross) {
        require(desc.calls.length > 0, "data should be not zero");
        require(desc.amount > 0, "amount should be greater than 0");
        require(_cross_caller_allowed[desc.caller], "invalid caller");
        
        uint256 swapAmount = executeFunds(FunctionFlag.cross, desc.srcToken, desc.wrappedToken, desc.caller, desc.amount, desc.fee, desc.signature);

        {
            (bool success, bytes memory result) = desc.caller.call{value:swapAmount}(desc.calls);
            if (!success) {
                revert(RevertReasonParser.parse(result, "TransitCrossV5:"));
            }
            TransferHelper.safeApprove(desc.srcToken, desc.caller, 0);
        }

        _emitTransit(desc.srcToken, desc.dstToken, desc.dstReceiver, desc.amount, 0, desc.toChain, desc.channel);
    } 
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./BaseCore.sol";

contract AggregateRouter is BaseCore {

    using SafeMath for uint256;

    constructor() {

    }

    function aggregateAndGasUsed(TransitSwapDescription calldata desc, CallbytesDescription calldata callbytesDesc) external payable returns (uint256 returnAmount, uint256 gasUsed) {
        uint256 gasLeftBefore = gasleft();
        returnAmount = _executeAggregate(desc, callbytesDesc);
        gasUsed = gasLeftBefore - gasleft();
    }

    function aggregate(TransitSwapDescription calldata desc, CallbytesDescription calldata callbytesDesc) external payable returns (uint256 returnAmount) {
        returnAmount = _executeAggregate(desc, callbytesDesc);
    }

    function _executeAggregate(TransitSwapDescription calldata desc, CallbytesDescription calldata callbytesDesc) internal nonReentrant whenNotPaused(FunctionFlag.executeAggregate) returns (uint256 returnAmount) {
        require(callbytesDesc.calldatas.length > 0, "data should be not zero");
        require(desc.amount > 0, "amount should be greater than 0");
        require(desc.dstReceiver != address(0), "receiver should be not address(0)");
        require(desc.minReturnAmount > 0, "minReturnAmount should be greater than 0");
        require(_wrapped_allowed[desc.wrappedToken], "invalid wrapped address");

        uint256 toBeforeBalance;
        address bridgeAddress = _aggregate_bridge;
        uint256 swapAmount = executeFunds(FunctionFlag.executeAggregate, desc.srcToken, desc.wrappedToken, bridgeAddress, desc.amount, desc.fee, desc.signature);

        if (TransferHelper.isETH(desc.dstToken)) {
            toBeforeBalance = desc.dstReceiver.balance;
        } else {
            toBeforeBalance = IERC20(desc.dstToken).balanceOf(desc.dstReceiver);
        }

        {
            //bytes4(keccak256(bytes('callbytes(CallbytesDescription)')));
            (bool success, bytes memory result) = bridgeAddress.call{value : swapAmount}(abi.encodeWithSelector(0x3f3204d2, callbytesDesc));
            if (!success) {
                revert(RevertReasonParser.parse(result, "TransitSwap:"));
            }
        }

        if (TransferHelper.isETH(desc.dstToken)) {
            returnAmount = desc.dstReceiver.balance.sub(toBeforeBalance);
        } else {
            returnAmount = IERC20(desc.dstToken).balanceOf(desc.dstReceiver).sub(toBeforeBalance);
        }
        require(returnAmount >= desc.minReturnAmount, "Too little received");

        _emitTransit(desc.srcToken, desc.dstToken, desc.dstReceiver, desc.amount, returnAmount, 0, desc.channel);

    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./BaseCore.sol";

contract UniswapV3Router is BaseCore {

    using SafeMath for uint256;

    uint256 private constant _ZERO_FOR_ONE_MASK = 1 << 255;
    uint160 private constant MIN_SQRT_RATIO = 4295128739;
    uint160 private constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;

    constructor() {}

    fallback() external {
        (int256 amount0Delta, int256 amount1Delta, bytes memory _data) = abi.decode(msg.data[4:], (int256,int256,bytes));
        _executeCallback(amount0Delta, amount1Delta, _data);
    }

    function pancakeV3SwapCallback(
        int256 amount0Delta,
        int256 amount1Delta,
        bytes calldata _data
    ) external {
        _executeCallback(amount0Delta, amount1Delta, _data);
    }

    function uniswapV3SwapCallback(
        int256 amount0Delta,
        int256 amount1Delta,
        bytes calldata _data
    ) external {
        _executeCallback(amount0Delta, amount1Delta, _data);
    }

    function _executeCallback(
        int256 amount0Delta,
        int256 amount1Delta,
        bytes memory _data
    ) internal {
        require(amount0Delta > 0 || amount1Delta > 0, "M0 or M1"); // swaps entirely within 0-liquidity regions are not supported
        (uint256 pool, bytes memory tokenInAndPoolSalt) = abi.decode(_data, (uint256, bytes));
        (address tokenIn, bytes32 poolSalt) = abi.decode(tokenInAndPoolSalt, (address, bytes32));
        _verifyCallback(pool, poolSalt, msg.sender);

        uint256 amountToPay = uint256(amount1Delta);
        if (amount0Delta > 0) {
            amountToPay = uint256(amount0Delta);
        }

        TransferHelper.safeTransfer(tokenIn, msg.sender, amountToPay);
    }

    function exactInputV3SwapAndGasUsed(ExactInputV3SwapParams calldata params) external payable returns (uint256 returnAmount, uint256 gasUsed) {
        uint256 gasLeftBefore = gasleft();
        returnAmount = _executeV3Swap(params);
        gasUsed = gasLeftBefore - gasleft();

    }

    function exactInputV3Swap(ExactInputV3SwapParams calldata params) external payable returns (uint256 returnAmount) {
        returnAmount = _executeV3Swap(params);
    }

    function _executeV3Swap(ExactInputV3SwapParams calldata params) internal nonReentrant whenNotPaused(FunctionFlag.executeV3Swap) returns (uint256 returnAmount) {
        require(params.pools.length > 0, "Empty pools");
        require(params.deadline >= block.timestamp, "Expired");
        require(_wrapped_allowed[params.wrappedToken], "Invalid wrapped address");
        address tokenIn = params.srcToken;
        address tokenOut = params.dstToken;

        uint256 toBeforeBalance;
        bool isToETH;
        if (TransferHelper.isETH(params.srcToken)) {
            tokenIn = params.wrappedToken;
        }
        uint256 actualAmountIn = executeFunds(FunctionFlag.executeV3Swap, params.srcToken, params.wrappedToken, address(0), params.amount, params.fee, params.signature);

        if (TransferHelper.isETH(params.dstToken)) {
            tokenOut = params.wrappedToken;
            toBeforeBalance = IERC20(params.wrappedToken).balanceOf(address(this));
            isToETH = true;
        } else {
            toBeforeBalance = IERC20(params.dstToken).balanceOf(params.dstReceiver);
        }

        {
            uint256 len = params.pools.length;
            address recipient = address(this);
            bytes memory tokenInAndPoolSalt;
            if (len > 1) {
                address thisTokenIn = tokenIn;
                address thisTokenOut = address(0);
                for (uint256 i; i < len; i++) {
                    uint256 thisPool = params.pools[i];
                    (thisTokenIn, tokenInAndPoolSalt) = _verifyPool(thisTokenIn, thisTokenOut, thisPool);
                    if (i == len - 1 && !isToETH) {
                        recipient = params.dstReceiver;
                        thisTokenOut = tokenOut;
                    } 
                    actualAmountIn = _swap(recipient, thisPool, tokenInAndPoolSalt, actualAmountIn);
                }
                returnAmount = actualAmountIn;
            } else {
                (, tokenInAndPoolSalt) = _verifyPool(tokenIn, tokenOut, params.pools[0]);
                if (!isToETH) {
                    recipient = params.dstReceiver;
                }
                returnAmount = _swap(recipient, params.pools[0], tokenInAndPoolSalt, actualAmountIn);
            }
        }

        if (isToETH) {
            returnAmount = IERC20(params.wrappedToken).balanceOf(address(this)).sub(toBeforeBalance);
            require(returnAmount >= params.minReturnAmount, "Too little received");
            TransferHelper.safeWithdraw(params.wrappedToken, returnAmount);
            TransferHelper.safeTransferETH(params.dstReceiver, returnAmount);
        } else {
            returnAmount = IERC20(params.dstToken).balanceOf(params.dstReceiver).sub(toBeforeBalance);
            require(returnAmount >= params.minReturnAmount, "Too little received");
        }
        
        _emitTransit(params.srcToken, params.dstToken, params.dstReceiver, params.amount, returnAmount, 0, params.channel);

    }

    function _swap(address recipient, uint256 pool, bytes memory tokenInAndPoolSalt, uint256 amount) internal returns (uint256 amountOut) {
        bool zeroForOne = pool & _ZERO_FOR_ONE_MASK == 0;
        if (zeroForOne) {
            (, int256 amount1) =
                IUniswapV3Pool(address(uint160(pool))).swap(
                    recipient,
                    zeroForOne,
                    amount.toInt256(),
                    MIN_SQRT_RATIO + 1,
                    abi.encode(pool, tokenInAndPoolSalt)
                );
            amountOut = SafeMath.toUint256(-amount1);
        } else {
            (int256 amount0,) =
                IUniswapV3Pool(address(uint160(pool))).swap(
                    recipient,
                    zeroForOne,
                    amount.toInt256(),
                    MAX_SQRT_RATIO - 1,
                    abi.encode(pool, tokenInAndPoolSalt)
                );
            amountOut = SafeMath.toUint256(-amount0);
        }
    }

    function _verifyPool(address tokenIn, address tokenOut, uint256 pool) internal view returns (address nextTokenIn, bytes memory tokenInAndPoolSalt) {
        IUniswapV3Pool iPool = IUniswapV3Pool(address(uint160(pool)));
        address token0 = iPool.token0();
        address token1 = iPool.token1();
        uint24 fee = iPool.fee();
        bytes32 poolSalt = keccak256(abi.encode(token0, token1, fee));

        bool zeroForOne = pool & _ZERO_FOR_ONE_MASK == 0;
        if (zeroForOne) {
            require(tokenIn == token0, "Bad pool");
            if (tokenOut != address(0)) {
                require(tokenOut == token1, "Bad pool");
            }
            nextTokenIn = token1;
            tokenInAndPoolSalt = abi.encode(token0, poolSalt);
        } else {
            require(tokenIn == token1, "Bad pool");
            if (tokenOut != address(0)) {
                require(tokenOut == token0, "Bad pool");
            }
            nextTokenIn = token0;
            tokenInAndPoolSalt = abi.encode(token1, poolSalt);
        }
        _verifyCallback(pool, poolSalt, address(uint160(pool)));
    }

    function _verifyCallback(uint256 pool, bytes32 poolSalt, address caller) internal view {
        uint poolDigit = pool >> 248 & 0xf;
        UniswapV3Pool memory v3Pool = _uniswapV3_factory_allowed[poolDigit];
        require(v3Pool.factory != address(0), "Callback bad pool indexed");
        address calcPool = address(
            uint160(
                uint256(
                    keccak256(
                        abi.encodePacked(
                            hex'ff',
                            v3Pool.factory,
                            poolSalt,
                            v3Pool.initCodeHash
                        )
                    )
                )
            )
        );
        require(calcPool == caller, "Callback bad pool");
    }

}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./BaseCore.sol";

contract UniswapV2Router is BaseCore {

    using SafeMath for uint256;

    constructor() {

    }

    function _beforeSwap(ExactInputV2SwapParams calldata exactInput, bool supportingFeeOn) internal returns (bool isToETH, uint256 actualAmountIn, address[] memory paths, uint256 thisAddressBeforeBalance, uint256 toBeforeBalance) {
        require(exactInput.path.length == exactInput.pool.length + 1, "Invalid path");
        require(_wrapped_allowed[exactInput.wrappedToken], "Invalid wrapped address");

        (bool isToVault, uint256 vaultFee) = splitFee(exactInput.fee);
        actualAmountIn = calculateTradeFee(true, exactInput.amount, vaultFee, exactInput.signature);
        address[] memory path = exactInput.path;
        address dstToken = path[exactInput.path.length - 1];
        if (TransferHelper.isETH(exactInput.path[0])) {
            require(msg.value == exactInput.amount, "Invalid msg.value");
            if (isToVault) {
                TransferHelper.safeTransferETH(_vault, vaultFee);
            }
            path[0] = exactInput.wrappedToken;
            TransferHelper.safeDeposit(exactInput.wrappedToken, actualAmountIn);
        } else {
            if (supportingFeeOn) {
                actualAmountIn = IERC20(path[0]).balanceOf(address(this));
                TransferHelper.safeTransferFrom(path[0], msg.sender, address(this), exactInput.amount);
                actualAmountIn = IERC20(path[0]).balanceOf(address(this)).sub(actualAmountIn).sub(exactInput.fee);
            } else {
                TransferHelper.safeTransferFrom(path[0], msg.sender, address(this), exactInput.amount);
            }
            if (isToVault) {
                TransferHelper.safeTransferWithoutRequire(path[0], _vault, vaultFee);
            }
        }
        if (TransferHelper.isETH(dstToken)) {
            path[path.length - 1] = exactInput.wrappedToken;
            isToETH = true;
            thisAddressBeforeBalance = IERC20(exactInput.wrappedToken).balanceOf(address(this));
        } else {
            if (supportingFeeOn) {
                toBeforeBalance = IERC20(dstToken).balanceOf(exactInput.dstReceiver);
            }
        }
        paths = path;
    }

    function exactInputV2SwapAndGasUsed(ExactInputV2SwapParams calldata exactInput, uint256 deadline) external payable returns (uint256 returnAmount, uint256 gasUsed) {
        uint256 gasLeftBefore = gasleft();
        returnAmount = _executeV2Swap(exactInput, deadline);
        gasUsed = gasLeftBefore - gasleft();
    }

    function exactInputV2Swap(ExactInputV2SwapParams calldata exactInput, uint256 deadline) external payable returns (uint256 returnAmount) {
        returnAmount = _executeV2Swap(exactInput, deadline);
    }

    function _executeV2Swap(ExactInputV2SwapParams calldata exactInput, uint256 deadline) internal nonReentrant whenNotPaused(FunctionFlag.executeV2Swap) returns (uint256 returnAmount) {
        require(deadline >= block.timestamp, "Expired");
        
        bool supportingFeeOn = exactInput.router >> 248 & 0xf == 1;
        {
            (bool isToETH, uint256 actualAmountIn, address[] memory paths, uint256 thisAddressBeforeBalance, uint256 toBeforeBalance) = _beforeSwap(exactInput, supportingFeeOn);
            
            TransferHelper.safeTransfer(paths[0], exactInput.pool[0], actualAmountIn);

            if (supportingFeeOn) {
                if(isToETH) {
                    _swapSupportingFeeOnTransferTokens(address(uint160(exactInput.router)), paths, exactInput.pool, address(this));
                    returnAmount = IERC20(exactInput.wrappedToken).balanceOf(address(this)).sub(thisAddressBeforeBalance);
                } else {
                    _swapSupportingFeeOnTransferTokens(address(uint160(exactInput.router)), paths, exactInput.pool, exactInput.dstReceiver);
                    returnAmount = IERC20(paths[paths.length - 1]).balanceOf(exactInput.dstReceiver).sub(toBeforeBalance);
                }
            } else {
                uint[] memory amounts = IUniswapV2(address(uint160(exactInput.router))).getAmountsOut(actualAmountIn, paths);
                if(isToETH) {
                    _swap(amounts, paths, exactInput.pool, address(this));
                    returnAmount = IERC20(exactInput.wrappedToken).balanceOf(address(this)).sub(thisAddressBeforeBalance);
                } else {
                    _swap(amounts, paths, exactInput.pool, exactInput.dstReceiver);
                    returnAmount = IERC20(paths[paths.length - 1]).balanceOf(exactInput.dstReceiver).sub(toBeforeBalance);
                }
            }

            require(returnAmount >= exactInput.minReturnAmount, "Too little received");
            if (isToETH) {
                TransferHelper.safeWithdraw(exactInput.wrappedToken, returnAmount);
                TransferHelper.safeTransferETH(exactInput.dstReceiver, returnAmount);
            }
        }
        string memory channel = exactInput.channel;

        _emitTransit(exactInput.path[0], exactInput.path[exactInput.path.length - 1], exactInput.dstReceiver, exactInput.amount, returnAmount, 0, channel);
        
    }

    function _swap(uint[] memory amounts, address[] memory path, address[] memory pool, address _to) internal {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = input < output ? (input, output) : (output, input);
            uint amountOut = amounts[i + 1];
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
            address to = i < path.length - 2 ? pool[i + 1] : _to;
            IUniswapV2(pool[i]).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }

    function _swapSupportingFeeOnTransferTokens(address router, address[] memory path, address[] memory pool, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = input < output ? (input, output) : (output, input);
            IUniswapV2 pair = IUniswapV2(pool[i]);
            uint amountInput;
            uint amountOutput;
            { // scope to avoid stack too deep errors
                (uint reserve0, uint reserve1,) = pair.getReserves();
                (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
                amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
                amountOutput = IUniswapV2(router).getAmountOut(amountInput, reserveInput, reserveOutput);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? pool[i + 1] : _to;
            pair.swap(amount0Out, amount1Out, to, new bytes(0));
        }
    }

}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./libs/Pausable.sol";
import "./libs/ReentrancyGuard.sol";
import "./libs/TransferHelper.sol";
import "./libs/RevertReasonParser.sol";
import "./libs/SafeMath.sol";
import "./libs/Ownable.sol";
import "./interfaces/IERC20.sol";
import "./interfaces/IUniswapV2.sol";
import "./interfaces/IUniswapV3Pool.sol";


contract BaseCore is Ownable, Pausable, ReentrancyGuard {

    using SafeMath for uint256;

    struct ExactInputV2SwapParams {
        address dstReceiver;
        address wrappedToken;
        uint256 router;
        uint256 amount;
        uint256 minReturnAmount;
        uint256 fee;
        address[] path;
        address[] pool;
        bytes signature;
        string channel;
    }

    struct ExactInputV3SwapParams {
        address srcToken;
        address dstToken;
        address dstReceiver;
        address wrappedToken;
        uint256 amount;
        uint256 minReturnAmount;
        uint256 fee;
        uint256 deadline;
        uint256[] pools;
        bytes signature;
        string channel;
    }

    struct TransitSwapDescription {
        address srcToken;
        address dstToken;
        address dstReceiver;
        address wrappedToken;
        uint256 amount;
        uint256 minReturnAmount;
        uint256 fee;
        string channel;
        bytes signature;
    }

    struct CrossDescription {
        address srcToken;
        address dstToken;
        address caller;
        address dstReceiver;
        address wrappedToken;
        uint256 amount;
        uint256 fee;
        uint256 toChain;
        string channel;
        bytes calls;
        bytes signature;
    }

    struct CallbytesDescription {
        address srcToken;
        bytes calldatas;
    }

    struct UniswapV3Pool {
        address factory;
        bytes initCodeHash;
    }

    uint256 internal _aggregate_fee;
    uint256 internal _cross_fee;
    address internal _aggregate_bridge;
    address internal _fee_signer;
    address internal _vault;
    bytes32 public DOMAIN_SEPARATOR;
    //whitelist cross's caller
    mapping(address => bool) internal _cross_caller_allowed;
    //whitelist wrapped
    mapping(address => bool) internal _wrapped_allowed;
    //whitelist uniswap v3 factory
    mapping(uint => UniswapV3Pool) internal _uniswapV3_factory_allowed;
    bytes32 public constant CHECKFEE_TYPEHASH = keccak256("CheckFee(address payer,uint256 amount,uint256 fee)");

    event Receipt(address from, uint256 amount);
    event Withdraw(address indexed token, address indexed executor, address indexed recipient, uint amount);
    event ChangeWrappedAllowed(address[] wrappedTokens, bool[] newAllowed);
    event ChangeV3FactoryAllowed(uint256[] poolIndex, address[] factories, bytes[] initCodeHash);
    event ChangeCrossCallerAllowed(address[] callers);
    event ChangeFeeRate(bool isAggregate, uint256 newRate);
    event ChangeSigner(address preSigner, address newSigner);
    event ChangeAggregateBridge(address newBridge);
    event ChangeVault(address preVault, address newVault);
    event TransitSwapped(address indexed srcToken, address indexed dstToken, address indexed dstReceiver, uint256 amount, uint256 returnAmount, uint256 toChainID, string channel);
    
    constructor() Ownable(msg.sender) {
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                keccak256(bytes("TransitSwapV5")),
                keccak256(bytes("5")),
                block.chainid,
                address(this)
            )
        );
    }

    receive() external payable {
        emit Receipt(msg.sender, msg.value);
    }

    function calculateTradeFee(bool isAggregate, uint256 tradeAmount, uint256 fee, bytes calldata signature) internal view returns (uint256) {
        uint256 thisFee;
        if (isAggregate) {
            thisFee = tradeAmount.mul(_aggregate_fee).div(10000);
        } else {
            thisFee = tradeAmount.mul(_cross_fee).div(10000);
        }
        if (fee < thisFee) {
            require(verifySignature(tradeAmount, fee, signature), "Invalid signature fee");
        }
        return tradeAmount.sub(fee);
    }

    function _emitTransit(address srcToken, address dstToken, address dstReceiver, uint256 amount, uint256 returnAmount, uint256 toChainID, string memory channel) internal {
        emit TransitSwapped (
            srcToken, 
            dstToken, 
            dstReceiver,
            amount,
            returnAmount,
            toChainID,
            channel
        );
    }

    function changeFee(bool[] memory isAggregate, uint256[] memory newRate) external onlyExecutor {
        for (uint i; i < isAggregate.length; i++) {
            require(newRate[i] >= 0 && newRate[i] <= 1000, "fee rate is:0-1000");
            if (isAggregate[i]) {
                _aggregate_fee = newRate[i];
            } else {
                _cross_fee = newRate[i];
            }
            emit ChangeFeeRate(isAggregate[i], newRate[i]);
        }
    }

    function changeTransitProxy(address aggregator, address signer, address vault) external onlyExecutor {
        if (aggregator != address(0)) {
            _aggregate_bridge = aggregator;
            emit ChangeAggregateBridge(aggregator);
        }
        if (signer != address(0)) {
            address preSigner = _fee_signer;
            _fee_signer = signer;
            emit ChangeSigner(preSigner, signer);
        }
        if (vault != address(0)) {
            address preVault = _vault;
            _vault = vault;
            emit ChangeVault(preVault, vault);
        }
    }

    function changeAllowed(address[] calldata crossCallers, address[] calldata wrappedTokens) public onlyExecutor {
        if(crossCallers.length != 0){
            for (uint i; i < crossCallers.length; i++) {
                _cross_caller_allowed[crossCallers[i]] = !_cross_caller_allowed[crossCallers[i]];
            }
            emit ChangeCrossCallerAllowed(crossCallers);
        }
        if(wrappedTokens.length != 0) {
            bool[] memory newAllowed = new bool[](wrappedTokens.length);
            for (uint index; index < wrappedTokens.length; index++) {
                _wrapped_allowed[wrappedTokens[index]] = !_wrapped_allowed[wrappedTokens[index]];
                newAllowed[index] = _wrapped_allowed[wrappedTokens[index]];
            }
            emit ChangeWrappedAllowed(wrappedTokens, newAllowed);
        }
    }

    function changeUniswapV3FactoryAllowed(uint[] calldata poolIndex, address[] calldata factories, bytes[] calldata initCodeHash) public onlyExecutor {
        require(poolIndex.length == initCodeHash.length, "invalid data");
        require(factories.length == initCodeHash.length, "invalid data");
        uint len = factories.length;
        for (uint i; i < len; i++) {
            _uniswapV3_factory_allowed[poolIndex[i]] = UniswapV3Pool(factories[i],initCodeHash[i]);
        }
        emit ChangeV3FactoryAllowed(poolIndex, factories, initCodeHash);
    }

    function changePause(bool paused, FunctionFlag[] calldata flags) external onlyExecutor {
        uint len = flags.length;
        for (uint i; i < len; i++) {
            if (paused) {
                _pause(flags[i]);
            } else {
                _unpause(flags[i]);
            }
        }
    }

    function transitProxyAddress() external view returns (address bridgeProxy, address feeSigner) {
        bridgeProxy = _aggregate_bridge;
        feeSigner = _fee_signer;
    }

    function transitFee() external view returns (uint256, uint256, address) {
        return (_aggregate_fee, _cross_fee, _vault);
    }

    function transitAllowedQuery(address crossCaller, address wrappedToken, uint256 poolIndex) external view returns (bool isCrossCallerAllowed, bool isWrappedAllowed, UniswapV3Pool memory pool) {
        isCrossCallerAllowed = _cross_caller_allowed[crossCaller];
        isWrappedAllowed = _wrapped_allowed[wrappedToken];
        pool = _uniswapV3_factory_allowed[poolIndex];
    }

    function verifySignature(uint256 amount, uint256 fee, bytes calldata signature) internal view returns (bool) {
        bytes32 digest = keccak256(
            abi.encodePacked(
                "\x19\x01",
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(CHECKFEE_TYPEHASH, msg.sender, amount, fee))
            )
        );
        (uint8 v, bytes32 r, bytes32 s) = splitSignature(signature);
        address recovered = ecrecover(digest, v, r, s);
        return recovered == _fee_signer;
    }

    function splitSignature(bytes memory _signature) internal pure returns (uint8 v, bytes32 r, bytes32 s) {
        require(bytes(_signature).length == 65, "Invalid signature length");

        assembly {
            r := mload(add(_signature, 0x20))
            s := mload(add(_signature, 0x40))
            v := byte(0, mload(add(_signature, 0x60)))
        }

        return (v, r, s);
    }

    function splitFee(uint256 fee) internal view returns (bool isToVault, uint256 vaultFee) {
        uint vaultFlag = fee % 10;
        vaultFee = (fee.sub(vaultFlag)).div(10);
        if (vaultFlag == 1 && vaultFee > 0 && _vault != address(0)) {
            isToVault = true;
        }
    }

    function executeFunds(FunctionFlag flag, address srcToken, address wrappedToken, address caller, uint256 amount, uint256 fee, bytes calldata signature) internal returns (uint256 swapAmount) {
        (bool isToVault, uint256 vaultFee) = splitFee(fee);
        bool isAggregate = flag == FunctionFlag.cross ? false : true;
        uint256 actualAmountIn = calculateTradeFee(isAggregate, amount, vaultFee, signature);
        if (TransferHelper.isETH(srcToken)) {
            if (flag == FunctionFlag.cross) {
                require(msg.value >= amount, "invalid msg.value");
                swapAmount = msg.value.sub(vaultFee);
            } else {
                require(msg.value == amount, "invalid msg.value");
                swapAmount = actualAmountIn;
            }
            if (wrappedToken != address(0)) {
                require(_wrapped_allowed[wrappedToken], "Invalid wrapped address");
                if (flag == FunctionFlag.cross) {
                    TransferHelper.safeDeposit(wrappedToken, swapAmount);
                    TransferHelper.safeApprove(wrappedToken, caller, swapAmount);
                    swapAmount = 0;
                } else if (flag == FunctionFlag.executeV3Swap) {
                    TransferHelper.safeDeposit(wrappedToken, actualAmountIn);
                }
            }
            if (isToVault) {
                TransferHelper.safeTransferETH(_vault, vaultFee);
            }
        } else {
            TransferHelper.safeTransferFrom(srcToken, msg.sender, address(this), amount);
            if (flag == FunctionFlag.cross) {
                TransferHelper.safeApprove(srcToken, caller, actualAmountIn);
                swapAmount = msg.value;
            } else if (flag == FunctionFlag.executeAggregate) {
                TransferHelper.safeTransfer(srcToken, caller, actualAmountIn);
            } else if (flag == FunctionFlag.executeV3Swap) {
                swapAmount = actualAmountIn;
            }
            if (isToVault) {
                TransferHelper.safeTransferWithoutRequire(srcToken, _vault, vaultFee);
            }
        }
    }

}

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0;

interface IUniswapV3Pool {
    function token0() external view returns (address);
    function token1() external view returns (address);
    function fee() external view returns (uint24);
    function swap(
        address recipient,
        bool zeroForOne,
        int256 amountSpecified,
        uint160 sqrtPriceLimitX96,
        bytes calldata data
    ) external returns (int256 amount0, int256 amount1);
}

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.9;

interface IUniswapV2 {
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountsOut(uint amountIn, address[] memory path) external view returns (uint[] memory amounts);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.9;

interface IERC20 {
    
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
 
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
// Add executor extension

pragma solidity ^0.8.0;

/**
 * @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.
 *
 * By default, the owner account will be the one that deploys the contract. 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 {

    address private _executor;
    address private _pendingExecutor;
    bool internal _initialized;

    event ExecutorshipTransferStarted(address indexed previousExecutor, address indexed newExecutor);
    event ExecutorshipTransferred(address indexed previousExecutor, address indexed newExecutor);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor(address newExecutor) {
        require(!_initialized, "Ownable: initialized");
        _transferExecutorship(newExecutor);
        _initialized = true;
    }

    /**
     * @dev Throws if called by any account other than the executor.
     */
    modifier onlyExecutor() {
        _checkExecutor();
        _;
    }

    /**
     * @dev Returns the address of the current executor.
     */
    function executor() public view virtual returns (address) {
        return _executor;
    }

    /**
     * @dev Returns the address of the pending executor.
     */
    function pendingExecutor() public view virtual returns (address) {
        return _pendingExecutor;
    }

    /**
     * @dev Throws if the sender is not the executor.
     */
    function _checkExecutor() internal view virtual {
        require(executor() == msg.sender, "Ownable: caller is not the executor");
    }

    /**
     * @dev Transfers executorship of the contract to a new account (`newExecutor`).
     * Can only be called by the current executor.
     */
    function transferExecutorship(address newExecutor) public virtual onlyExecutor {
        _pendingExecutor = newExecutor;
        emit ExecutorshipTransferStarted(executor(), newExecutor);
    }

    function _transferExecutorship(address newExecutor) internal virtual {
        delete _pendingExecutor;
        address oldExecutor = _executor;
        _executor = newExecutor;
        emit ExecutorshipTransferred(oldExecutor, newExecutor);
    }

    function acceptExecutorship() external {
        address sender = msg.sender;
        require(pendingExecutor() == sender, "Ownable: caller is not the new executor");
        _transferExecutorship(sender);
    }
}

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0;

library SafeMath {

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
    
    function div(uint x, uint y) internal pure returns (uint z) {
        require(y != 0 , 'ds-math-div-zero');
        z = x / y;
    }

    function toInt256(uint256 value) internal pure returns (int256) {
        require(value <= uint256(type(int256).max), "SafeCast: value doesn't fit in an int256");
        return int256(value);
    }

    function toUint256(int256 value) internal pure returns (uint256) {
        require(value >= 0, "SafeCast: value must be positive");
        return uint256(value);
    }
}

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0;

library RevertReasonParser {
        function parse(bytes memory data, string memory prefix) internal pure returns (string memory) {
        // https://solidity.readthedocs.io/en/latest/control-structures.html#revert
        // We assume that revert reason is abi-encoded as Error(string)

        // 68 = 4-byte selector 0x08c379a0 + 32 bytes offset + 32 bytes length
        if (data.length >= 68 && data[0] == "\x08" && data[1] == "\xc3" && data[2] == "\x79" && data[3] == "\xa0") {
            string memory reason;
            // solhint-disable no-inline-assembly
            assembly {
                // 68 = 32 bytes data length + 4-byte selector + 32 bytes offset
                reason := add(data, 68)
            }
            /*
                revert reason is padded up to 32 bytes with ABI encoder: Error(string)
                also sometimes there is extra 32 bytes of zeros padded in the end:
                https://github.com/ethereum/solidity/issues/10170
                because of that we can't check for equality and instead check
                that string length + extra 68 bytes is less than overall data length
            */
            require(data.length >= 68 + bytes(reason).length, "Invalid revert reason");
            return string(abi.encodePacked(prefix, "Error(", reason, ")"));
        }
        // 36 = 4-byte selector 0x4e487b71 + 32 bytes integer
        else if (data.length == 36 && data[0] == "\x4e" && data[1] == "\x48" && data[2] == "\x7b" && data[3] == "\x71") {
            uint256 code;
            // solhint-disable no-inline-assembly
            assembly {
                // 36 = 32 bytes data length + 4-byte selector
                code := mload(add(data, 36))
            }
            return string(abi.encodePacked(prefix, "Panic(", _toHex(code), ")"));
        }

        return string(abi.encodePacked(prefix, "Unknown(", _toHex(data), ")"));
    }
    
    function _toHex(uint256 value) private pure returns(string memory) {
        return _toHex(abi.encodePacked(value));
    }

    function _toHex(bytes memory data) private pure returns(string memory) {
        bytes16 alphabet = 0x30313233343536373839616263646566;
        bytes memory str = new bytes(2 + data.length * 2);
        str[0] = "0";
        str[1] = "x";
        for (uint256 i = 0; i < data.length; i++) {
            str[2 * i + 2] = alphabet[uint8(data[i] >> 4)];
            str[2 * i + 3] = alphabet[uint8(data[i] & 0x0f)];
        }
        return string(str);
    }
}

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0;

library TransferHelper {
    
    address private constant _ETH_ADDRESS = address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);
    address private constant _ZERO_ADDRESS = address(0);
    
    function isETH(address token) internal pure returns (bool) {
        return (token == _ZERO_ADDRESS || token == _ETH_ADDRESS);
    }
    
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_TOKEN_FAILED');
    }

    function safeTransferWithoutRequire(address token, address to, uint256 value) internal returns (bool) {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        return (success && (data.length == 0 || abi.decode(data, (bool))));
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        // solium-disable-next-line
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: TRANSFER_FAILED');
    }

    function safeDeposit(address wrapped, uint value) internal {
        // bytes4(keccak256(bytes('deposit()')));
        (bool success, bytes memory data) = wrapped.call{value:value}(abi.encodeWithSelector(0xd0e30db0));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: DEPOSIT_FAILED');
    }

    function safeWithdraw(address wrapped, uint value) internal {
        // bytes4(keccak256(bytes('withdraw(uint256 wad)')));
        (bool success, bytes memory data) = wrapped.call{value:0}(abi.encodeWithSelector(0x2e1a7d4d, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: WITHDRAW_FAILED');
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        assembly {
            sstore(_status.slot, _ENTERED)
        }
        _;
        assembly {
            sstore(_status.slot, _NOT_ENTERED)
        }
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account, FunctionFlag flag);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account, FunctionFlag flag);

    mapping(FunctionFlag => bool) private _paused;

    enum FunctionFlag {executeAggregate, executeV2Swap, executeV3Swap, cross}

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused(FunctionFlag flag) {
        _requireNotPaused(flag);
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused(FunctionFlag flag) {
        _requirePaused(flag);
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused(FunctionFlag flag) public view virtual returns (bool) {
        return _paused[flag];
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused(FunctionFlag flag) internal view virtual {
        require(!paused(flag), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused(FunctionFlag flag) internal view virtual {
        require(paused(flag), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause(FunctionFlag flag) internal virtual whenNotPaused(flag) {
        _paused[flag] = true;
        emit Paused(msg.sender, flag);
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause(FunctionFlag flag) internal virtual whenPaused(flag) {
        _paused[flag] = false;
        emit Unpaused(msg.sender, flag);
    }

    function pausedOverAll() public view virtual returns (bool executeAggregate, bool executeV2Swap, bool executeV3Swap, bool cross) {
        executeAggregate = _paused[FunctionFlag.executeAggregate];
        executeV2Swap = _paused[FunctionFlag.executeV2Swap];
        executeV3Swap = _paused[FunctionFlag.executeV3Swap];
        cross = _paused[FunctionFlag.cross];
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newBridge","type":"address"}],"name":"ChangeAggregateBridge","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"callers","type":"address[]"}],"name":"ChangeCrossCallerAllowed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isAggregate","type":"bool"},{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"ChangeFeeRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preSigner","type":"address"},{"indexed":false,"internalType":"address","name":"newSigner","type":"address"}],"name":"ChangeSigner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"poolIndex","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"factories","type":"address[]"},{"indexed":false,"internalType":"bytes[]","name":"initCodeHash","type":"bytes[]"}],"name":"ChangeV3FactoryAllowed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preVault","type":"address"},{"indexed":false,"internalType":"address","name":"newVault","type":"address"}],"name":"ChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"wrappedTokens","type":"address[]"},{"indexed":false,"internalType":"bool[]","name":"newAllowed","type":"bool[]"}],"name":"ChangeWrappedAllowed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousExecutor","type":"address"},{"indexed":true,"internalType":"address","name":"newExecutor","type":"address"}],"name":"ExecutorshipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousExecutor","type":"address"},{"indexed":true,"internalType":"address","name":"newExecutor","type":"address"}],"name":"ExecutorshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"enum Pausable.FunctionFlag","name":"flag","type":"uint8"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Receipt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"srcToken","type":"address"},{"indexed":true,"internalType":"address","name":"dstToken","type":"address"},{"indexed":true,"internalType":"address","name":"dstReceiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"},{"indexed":false,"internalType":"string","name":"channel","type":"string"}],"name":"TransitSwapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"enum Pausable.FunctionFlag","name":"flag","type":"uint8"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"CHECKFEE_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptExecutorship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"string","name":"channel","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct BaseCore.TransitSwapDescription","name":"desc","type":"tuple"},{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"internalType":"struct BaseCore.CallbytesDescription","name":"callbytesDesc","type":"tuple"}],"name":"aggregate","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"string","name":"channel","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct BaseCore.TransitSwapDescription","name":"desc","type":"tuple"},{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"internalType":"struct BaseCore.CallbytesDescription","name":"callbytesDesc","type":"tuple"}],"name":"aggregateAndGasUsed","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"crossCallers","type":"address[]"},{"internalType":"address[]","name":"wrappedTokens","type":"address[]"}],"name":"changeAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool[]","name":"isAggregate","type":"bool[]"},{"internalType":"uint256[]","name":"newRate","type":"uint256[]"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"enum Pausable.FunctionFlag[]","name":"flags","type":"uint8[]"}],"name":"changePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"aggregator","type":"address"},{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"vault","type":"address"}],"name":"changeTransitProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"poolIndex","type":"uint256[]"},{"internalType":"address[]","name":"factories","type":"address[]"},{"internalType":"bytes[]","name":"initCodeHash","type":"bytes[]"}],"name":"changeUniswapV3FactoryAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"toChain","type":"uint256"},{"internalType":"string","name":"channel","type":"string"},{"internalType":"bytes","name":"calls","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct BaseCore.CrossDescription","name":"desc","type":"tuple"}],"name":"cross","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"router","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address[]","name":"pool","type":"address[]"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"string","name":"channel","type":"string"}],"internalType":"struct BaseCore.ExactInputV2SwapParams","name":"exactInput","type":"tuple"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"exactInputV2Swap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"router","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address[]","name":"pool","type":"address[]"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"string","name":"channel","type":"string"}],"internalType":"struct BaseCore.ExactInputV2SwapParams","name":"exactInput","type":"tuple"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"exactInputV2SwapAndGasUsed","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256[]","name":"pools","type":"uint256[]"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"string","name":"channel","type":"string"}],"internalType":"struct BaseCore.ExactInputV3SwapParams","name":"params","type":"tuple"}],"name":"exactInputV3Swap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256[]","name":"pools","type":"uint256[]"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"string","name":"channel","type":"string"}],"internalType":"struct BaseCore.ExactInputV3SwapParams","name":"params","type":"tuple"}],"name":"exactInputV3SwapAndGasUsed","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"executor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"pancakeV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum Pausable.FunctionFlag","name":"flag","type":"uint8"}],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pausedOverAll","outputs":[{"internalType":"bool","name":"executeAggregate","type":"bool"},{"internalType":"bool","name":"executeV2Swap","type":"bool"},{"internalType":"bool","name":"executeV3Swap","type":"bool"},{"internalType":"bool","name":"cross","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingExecutor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newExecutor","type":"address"}],"name":"transferExecutorship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"crossCaller","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"poolIndex","type":"uint256"}],"name":"transitAllowedQuery","outputs":[{"internalType":"bool","name":"isCrossCallerAllowed","type":"bool"},{"internalType":"bool","name":"isWrappedAllowed","type":"bool"},{"components":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"bytes","name":"initCodeHash","type":"bytes"}],"internalType":"struct BaseCore.UniswapV3Pool","name":"pool","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transitFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transitProxyAddress","outputs":[{"internalType":"address","name":"bridgeProxy","type":"address"},{"internalType":"address","name":"feeSigner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801562000010575f80fd5b506001543390600160a01b900460ff1615620000725760405162461bcd60e51b815260206004820152601460248201527f4f776e61626c653a20696e697469616c697a6564000000000000000000000000604482015260640160405180910390fd5b6200007d8162000175565b506001805460ff60a01b1916600160a01b1781556003819055604080518082018252600d81526c5472616e73697453776170563560981b60209182015281518083018352928352603560f81b9281019290925280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f928101929092527f20b7d1a4a088b240a0e093c572f43e31015ce187a55e6f343e049dcb744e5341908201527fceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c160608201524660808201523060a082015260c00160408051601f198184030181529190528051602090910120600955620001ce565b600180546001600160a01b03199081169091555f80546001600160a01b03848116938216841783556040519116929183917f88436636ea40d5bb1bcc55ff9cd54788af71da886f4147a87f199adcca733d4d9190a35050565b615e3a80620001dc5f395ff3fe608060405260043610610184575f3560e01c80637ec753fe116100d0578063b9b5149b11610089578063d63234e011610063578063d63234e0146105a8578063d808d889146105c5578063fa461e33146102a4578063fa9ec7af146105d8576101c3565b8063b9b5149b14610546578063bf5c55a214610559578063c34c08e514610578576101c3565b80637ec753fe1461049757806392bcc8be146104b657806394d3d793146104d5578063afed2d0e146104e9578063b93c0beb14610508578063b946fd3b14610527576101c3565b80633644e5151161013d5780635ac86ab7116101175780635ac86ab7146103e95780636b3ec416146104185780636fbf72f91461042b5780637e467ecf14610464576101c3565b80633644e515146102eb5780633c481d57146103005780634c42342f146103d6576101c3565b80630ced9fb9146101ff5780630dc4bdae146102365780630e8cc705146102575780631975b0961461027657806323a69e75146102a45780632adb806f146102c3576101c3565b366101c357604080513381523460208201527f7784f8d436dc514f0690e472c7e2d7f660a73e504c69b2350f6be5a5f02432ef910160405180910390a1005b3480156101ce575f80fd5b505f80806101df3660048184614c38565b8101906101ec9190614cc9565b9250925092506101fd8383836105eb565b005b34801561020a575f80fd5b50600654600754604080516001600160a01b039384168152929091166020830152015b60405180910390f35b610249610244366004614d54565b610694565b60405190815260200161022d565b348015610262575f80fd5b506101fd610271366004614de0565b6106a6565b348015610281575f80fd5b50610295610290366004614e86565b610826565b60405161022d93929190614f11565b3480156102af575f80fd5b506101fd6102be366004614f4e565b610925565b6102d66102d1366004614fc6565b61096b565b6040805192835260208301919091520161022d565b3480156102f6575f80fd5b5061024960095481565b34801561030b575f80fd5b5060026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b547fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0547f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c5460035f527f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c35460ff938416939283169291821691166040805194151585529215156020850152901515918301919091521515606082015260800161022d565b6102d66103e436600461504a565b610992565b3480156103f4575f80fd5b50610408610403366004615083565b6109b6565b604051901515815260200161022d565b6101fd61042636600461504a565b6109f6565b348015610436575f80fd5b506004546005546008546040805193845260208401929092526001600160a01b03169082015260600161022d565b34801561046f575f80fd5b506102497f048f880a603b1aab0e626a287e33d603417b3d53a36f7527b7c86365bf7def4f81565b3480156104a2575f80fd5b506101fd6104b1366004615111565b610d11565b3480156104c1575f80fd5b506101fd6104d0366004615209565b610e96565b3480156104e0575f80fd5b506101fd61107f565b3480156104f4575f80fd5b506101fd61050336600461529b565b611105565b348015610513575f80fd5b506101fd6105223660046152b6565b611175565b348015610532575f80fd5b506101fd61054136600461531c565b61142a565b61024961055436600461504a565b611573565b348015610564575f80fd5b506101fd610573366004615364565b611583565b348015610583575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161022d565b3480156105b3575f80fd5b506001546001600160a01b0316610590565b6102496105d3366004614fc6565b611618565b6102d66105e6366004614d54565b611623565b5f8313806105f857505f82135b6106345760405162461bcd60e51b81526020600482015260086024820152674d30206f72204d3160c01b60448201526064015b60405180910390fd5b5f808280602001905181019061064a91906153b4565b915091505f80828060200190518101906106649190615431565b91509150610673848233611633565b855f88131561067f5750865b61068a8333836117e6565b5050505050505050565b5f61069f8383611903565b9392505050565b6106ae611e9f565b5f5b8251811015610821575f6106dc8483815181106106cf576106cf61545d565b6020026020010151611f15565b156106f25750476106ed8382611f4d565b61079e565b8382815181106107045761070461545d565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610752573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107769190615471565b905061079c84838151811061078d5761078d61545d565b60200260200101518483612006565b505b826001600160a01b0316336001600160a01b03168584815181106107c4576107c461545d565b60200260200101516001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f78460405161080691815260200190565b60405180910390a450806108198161549c565b9150506106b0565b505050565b6040805180820182525f80825260606020808401919091526001600160a01b038781168352600a8252848320548782168452600b835285842054878552600c84529386902086518088019097528054909216865260018201805460ff92831697929095169594919384019161089a906154b4565b80601f01602080910402602001604051908101604052809291908181526020018280546108c6906154b4565b80156109115780601f106108e857610100808354040283529160200191610911565b820191905f5260205f20905b8154815290600101906020018083116108f457829003601f168201915b505050505081525050905093509350939050565b610965848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506105eb92505050565b50505050565b5f805f5a905061097b85856120ea565b92505a61098890826154e6565b9150509250929050565b5f805f5a90506109a1846125fb565b92505a6109ae90826154e6565b915050915091565b5f60025f8360038111156109cc576109cc6154f9565b60038111156109dd576109dd6154f9565b815260208101919091526040015f205460ff1692915050565b600260035403610a185760405162461bcd60e51b815260040161062b9061550d565b60026003556003610a2881612b44565b5f610a37610120840184615544565b905011610a805760405162461bcd60e51b8152602060048201526017602482015276646174612073686f756c64206265206e6f74207a65726f60481b604482015260640161062b565b5f8260a0013511610ad35760405162461bcd60e51b815260206004820152601f60248201527f616d6f756e742073686f756c642062652067726561746572207468616e203000604482015260640161062b565b600a5f610ae6606085016040860161529b565b6001600160a01b0316815260208101919091526040015f205460ff16610b3f5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b604482015260640161062b565b5f610b8f6003610b52602086018661529b565b610b6260a087016080880161529b565b610b72606088016040890161529b565b60a088013560c0890135610b8a6101408b018b615544565b612b8d565b90505f80610ba3606086016040870161529b565b6001600160a01b031683610bbb610120880188615544565b604051610bc9929190615586565b5f6040518083038185875af1925050503d805f8114610c03576040519150601f19603f3d011682016040523d82523d5f602084013e610c08565b606091505b509150915081610c5c57610c43816040518060400160405280600f81526020016e2a3930b739b4ba21b937b9b9ab1a9d60891b815250612e03565b60405162461bcd60e51b815260040161062b9190615595565b610c82610c6c602087018761529b565b610c7c606088016040890161529b565b5f613077565b50610d079050610c95602085018561529b565b610ca5604086016020870161529b565b610cb5608087016060880161529b565b60a08701355f60e0890135610cce6101008b018b615544565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061318692505050565b5050600160035550565b610d19611e9f565b5f5b8251811015610821575f828281518110610d3757610d3761545d565b602002602001015110158015610d6857506103e8828281518110610d5d57610d5d61545d565b602002602001015111155b610da95760405162461bcd60e51b8152602060048201526012602482015271066656520726174652069733a302d313030360741b604482015260640161062b565b828181518110610dbb57610dbb61545d565b602002602001015115610ded57818181518110610dda57610dda61545d565b6020026020010151600481905550610e0e565b818181518110610dff57610dff61545d565b60200260200101516005819055505b7f5fa95345cbe35dad70f67a9ca1430c22453a695590cb4fca05d58f637e85af4f838281518110610e4157610e4161545d565b6020026020010151838381518110610e5b57610e5b61545d565b6020026020010151604051610e7c9291909115158252602082015260400190565b60405180910390a180610e8e8161549c565b915050610d1b565b610e9e611e9f565b848114610edc5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746160a01b604482015260640161062b565b828114610f1a5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746160a01b604482015260640161062b565b825f5b81811015611034576040518060400160405280878784818110610f4257610f4261545d565b9050602002016020810190610f57919061529b565b6001600160a01b03168152602001858584818110610f7757610f7761545d565b9050602002810190610f899190615544565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250600c92508b90508a85818110610fd557610fd561545d565b60209081029290920135835250818101929092526040015f20825181546001600160a01b0319166001600160a01b0390911617815590820151600182019061101d90826155ec565b50905050808061102c9061549c565b915050610f1d565b507f652c1af850dcc0b28fcb71cd9473023f56a89edd81bbe7b51056a04caa94002487878787878760405161106e96959493929190615757565b60405180910390a150505050505050565b33806110936001546001600160a01b031690565b6001600160a01b0316146110f95760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e657720656044820152663c32b1baba37b960c91b606482015260840161062b565b611102816131ea565b50565b61110d611e9f565b600180546001600160a01b0383166001600160a01b0319909116811790915561113d5f546001600160a01b031690565b6001600160a01b03167fdd01547fc40682edc3cd8d164d53f5a1ae6b46138a83f045658ed760823ddba860405160405180910390a350565b61117d611e9f565b8215611275575f5b8381101561123a57600a5f8686848181106111a2576111a261545d565b90506020020160208101906111b7919061529b565b6001600160a01b0316815260208101919091526040015f9081205460ff161590600a908787858181106111ec576111ec61545d565b9050602002016020810190611201919061529b565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806112328161549c565b915050611185565b507fb05655746bd43b7fe3ccd9d28b7685b4c67ddc51e70890062b0f7f85dd692695848460405161126c929190615807565b60405180910390a15b8015610965575f816001600160401b0381111561129457611294614c5f565b6040519080825280602002602001820160405280156112bd578160200160208202803683370190505b5090505f5b828110156113e757600b5f8585848181106112df576112df61545d565b90506020020160208101906112f4919061529b565b6001600160a01b0316815260208101919091526040015f9081205460ff161590600b908686858181106113295761132961545d565b905060200201602081019061133e919061529b565b6001600160a01b0316815260208101919091526040015f908120805460ff191692151592909217909155600b9085858481811061137d5761137d61545d565b9050602002016020810190611392919061529b565b6001600160a01b0316815260208101919091526040015f2054825160ff909116908390839081106113c5576113c561545d565b91151560209283029190910190910152806113df8161549c565b9150506112c2565b507f4a28b173d9bc739be3886d172e07fef80392184787fc6b92406ce0f0c05b7e6383838360405161141b9392919061581a565b60405180910390a15050505050565b611432611e9f565b6001600160a01b0383161561149357600680546001600160a01b0319166001600160a01b0385169081179091556040519081527f347fade115440908839b750620f0add8f417b77a392657edd70b950373eda9c39060200160405180910390a15b6001600160a01b0382161561150157600780546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527ff9c6fa562c9d8326f8518a29a53ef18ab03cd6b9eead73ac667c5e289354c73e910160405180910390a1505b6001600160a01b0381161561082157600880546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fb3911b5760f95a64aaa8d7f1775f57a7b6ed0bcf1ebb3fbfcc045e2f04eaad11910160405180910390a150505050565b5f61157d826125fb565b92915050565b61158b611e9f565b805f5b818110156116115784156115d0576115cb8484838181106115b1576115b161545d565b90506020020160208101906115c69190615083565b613243565b6115ff565b6115ff8484838181106115e5576115e561545d565b90506020020160208101906115fa9190615083565b6132d5565b806116098161549c565b91505061158e565b5050505050565b5f61069f83836120ea565b5f805f5a905061097b8585611903565b600f60f884901c165f818152600c60209081526040808320815180830190925280546001600160a01b031682526001810180549293919291840191611677906154b4565b80601f01602080910402602001604051908101604052809291908181526020018280546116a3906154b4565b80156116ee5780601f106116c5576101008083540402835291602001916116ee565b820191905f5260205f20905b8154815290600101906020018083116116d157829003601f168201915b5050509190925250508151919250506001600160a01b03166117525760405162461bcd60e51b815260206004820152601960248201527f43616c6c6261636b2062616420706f6f6c20696e646578656400000000000000604482015260640161062b565b5f815f015185836020015160405160200161176f93929190615873565b604051602081830303815290604052805190602001205f1c9050836001600160a01b0316816001600160a01b0316146117de5760405162461bcd60e51b815260206004820152601160248201527010d85b1b189858dac8189859081c1bdbdb607a1b604482015260640161062b565b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f9283929087169161184191906158bb565b5f604051808303815f865af19150503d805f811461187a576040519150601f19603f3d011682016040523d82523d5f602084013e61187f565b606091505b50915091508180156118a95750805115806118a95750808060200190518101906118a991906158d6565b6116115760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657248656c7065723a205452414e534645525f544f4b454e5f46604482015264105253115160da1b606482015260840161062b565b5f6002600354036119265760405162461bcd60e51b815260040161062b9061550d565b6002600355600161193681612b44565b428310156119705760405162461bcd60e51b8152602060048201526007602482015266115e1c1a5c995960ca1b604482015260640161062b565b6001600f604086013560f81c16145f8080808061198d8a8761335a565b945094509450945094506119ef835f815181106119ac576119ac61545d565b60200260200101518b8060e001906119c491906158f1565b5f8181106119d4576119d461545d565b90506020020160208101906119e9919061529b565b866117e6565b8515611bb6578415611ad357611a4960408b013584611a1160e08e018e6158f1565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250309250613887915050565b611acc82611a5d60408d0160208e0161529b565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a08231906024015b602060405180830381865afa158015611aa2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac69190615471565b90613b7e565b9750611d4f565b611b3f60408b013584611ae960e08e018e6158f1565b808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f820116905080830192505050505050508d5f016020810190611b3a919061529b565b613887565b611acc818460018651611b5291906154e6565b81518110611b6257611b6261545d565b60200260200101516001600160a01b03166370a082318d5f016020810190611b8a919061529b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401611a87565b5f8a604001356001600160a01b031663d06ca61f86866040518363ffffffff1660e01b8152600401611be9929190615936565b5f60405180830381865afa158015611c03573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c2a919081019061598b565b90508515611c9757611c7c8185611c4460e08f018f6158f1565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250309250613bd3915050565b611c9083611a5d60408e0160208f0161529b565b9850611d4d565b611cff8185611ca960e08f018f6158f1565b808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f820116905080830192505050505050508e5f016020810190611cfa919061529b565b613bd3565b611d4a828560018751611d1291906154e6565b81518110611d2257611d2261545d565b60200260200101516001600160a01b03166370a082318e5f016020810190611b8a919061529b565b98505b505b8960800135881015611d735760405162461bcd60e51b815260040161062b90615a0b565b8415611da857611d92611d8c60408c0160208d0161529b565b89613dbd565b611da8611da260208c018c61529b565b89611f4d565b50505050505f85806101200190611dbf9190615544565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929350611e919250611e0791505060c08801886158f1565b5f818110611e1757611e1761545d565b9050602002016020810190611e2c919061529b565b611e3960c08901896158f1565b6001611e4860c08c018c6158f1565b611e539291506154e6565b818110611e6257611e6261545d565b9050602002016020810190611e77919061529b565b611e8460208a018a61529b565b8960600135885f87613186565b505050600160035592915050565b33611eb15f546001600160a01b031690565b6001600160a01b031614611f135760405162461bcd60e51b815260206004820152602360248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652065786563756044820152623a37b960e91b606482015260840161062b565b565b5f6001600160a01b038216158061157d57506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b604080515f808252602082019092526001600160a01b038416908390604051611f7691906158bb565b5f6040518083038185875af1925050503d805f8114611fb0576040519150601f19603f3d011682016040523d82523d5f602084013e611fb5565b606091505b50509050806108215760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015260640161062b565b5f805f856001600160a01b031663a9059cbb868660405160240161203f9291906001600160a01b03929092168252602082015260400190565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161207891906158bb565b5f604051808303815f865af19150503d805f81146120b1576040519150601f19603f3d011682016040523d82523d5f602084013e6120b6565b606091505b50915091508180156120e05750805115806120e05750808060200190518101906120e091906158d6565b9695505050505050565b5f60026003540361210d5760405162461bcd60e51b815260040161062b9061550d565b60026003555f61211c81612b44565b5f61212a6020850185615544565b9050116121735760405162461bcd60e51b8152602060048201526017602482015276646174612073686f756c64206265206e6f74207a65726f60481b604482015260640161062b565b5f8460800135116121c65760405162461bcd60e51b815260206004820152601f60248201527f616d6f756e742073686f756c642062652067726561746572207468616e203000604482015260640161062b565b5f6121d7606086016040870161529b565b6001600160a01b0316036122375760405162461bcd60e51b815260206004820152602160248201527f72656365697665722073686f756c64206265206e6f74206164647265737328306044820152602960f81b606482015260840161062b565b5f8460a001351161229b5760405162461bcd60e51b815260206004820152602860248201527f6d696e52657475726e416d6f756e742073686f756c6420626520677265617465604482015267072207468616e20360c41b606482015260840161062b565b600b5f6122ae608087016060880161529b565b6001600160a01b0316815260208101919091526040015f205460ff166123165760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420777261707065642061646472657373000000000000000000604482015260640161062b565b6006545f906001600160a01b03168161235f8161233660208a018a61529b565b61234660808b0160608c0161529b565b8560808c013560c08d0135610b8a6101008f018f615544565b90506123796123746040890160208a0161529b565b611f15565b1561239f5761238e606088016040890161529b565b6001600160a01b0316319250612436565b6123af604088016020890161529b565b6001600160a01b03166370a082316123cd60608a0160408b0161529b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561240f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124339190615471565b92505b5f80836001600160a01b031683633f3204d28a6040516024016124599190615a38565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161249291906158bb565b5f6040518083038185875af1925050503d805f81146124cc576040519150601f19603f3d011682016040523d82523d5f602084013e6124d1565b606091505b50915091508161250957610c43816040518060400160405280600c81526020016b2a3930b739b4ba29bbb0b81d60a11b815250612e03565b5061251f90506123746040890160208a0161529b565b1561254f576125488361253860608a0160408b0161529b565b6001600160a01b03163190613b7e565b9450612584565b6125818361256360408a0160208b0161529b565b6001600160a01b03166370a08231611b8a60608c0160408d0161529b565b94505b8660a001358510156125a85760405162461bcd60e51b815260040161062b90615a0b565b6125ec6125b8602089018961529b565b6125c860408a0160208b0161529b565b6125d860608b0160408c0161529b565b60808b0135895f610cce60e08f018f615544565b50505050600160035592915050565b5f60026003540361261e5760405162461bcd60e51b815260040161062b9061550d565b6002600355600261262e81612b44565b5f61263d6101008501856158f1565b90501161267a5760405162461bcd60e51b815260206004820152600b60248201526a456d70747920706f6f6c7360a81b604482015260640161062b565b428360e0013510156126b85760405162461bcd60e51b8152602060048201526007602482015266115e1c1a5c995960ca1b604482015260640161062b565b600b5f6126cb608086016060870161529b565b6001600160a01b0316815260208101919091526040015f205460ff166127035760405162461bcd60e51b815260040161062b90615a83565b5f612711602085018561529b565b90505f612724604086016020870161529b565b90505f80612738612374602089018961529b565b156127505761274d608088016060890161529b565b93505b5f61278f600261276360208b018b61529b565b61277360808c0160608d0161529b565b5f8c608001358d60c001358e806101200190610b8a9190615544565b90506127a461237460408a0160208b0161529b565b1561283e576127b96080890160608a0161529b565b93506127cb6080890160608a0161529b565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561280f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128339190615471565b9250600191506128d5565b61284e6040890160208a0161529b565b6001600160a01b03166370a0823161286c60608b0160408c0161529b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156128ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128d29190615471565b92505b5f6128e46101008a018a6158f1565b91503090506060600183111561299c57875f805b85811015612991575f8e80610100019061291291906158f1565b838181106129225761292261545d565b905060200201359050612936848483613ed0565b955093506129456001886154e6565b82148015612951575088155b1561296f578e6040016020810190612969919061529b565b95508a92505b61297b8682878b6141bb565b97505080806129899061549c565b9150506128f8565b50859b505050612a1a565b6129cb88886129af6101008f018f6158f1565b5f8181106129bf576129bf61545d565b90506020020135613ed0565b91508590506129e7576129e460608c0160408d0161529b565b91505b612a17826129f96101008e018e6158f1565b5f818110612a0957612a0961545d565b9050602002013583876141bb565b99505b5050508115612a9457612a3783611a5d60808b0160608c0161529b565b96508760a00135871015612a5d5760405162461bcd60e51b815260040161062b90615a0b565b612a76612a7060808a0160608b0161529b565b88613dbd565b612a8f612a8960608a0160408b0161529b565b88611f4d565b612aec565b612ac683612aa860408b0160208c0161529b565b6001600160a01b03166370a08231611b8a60608d0160408e0161529b565b96508760a00135871015612aec5760405162461bcd60e51b815260040161062b90615a0b565b612b34612afc60208a018a61529b565b612b0c60408b0160208c0161529b565b612b1c60608c0160408d0161529b565b8b608001358b5f8e806101400190610cce9190615544565b5050505050506001600355919050565b612b4d816109b6565b156111025760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161062b565b5f805f612b998661436a565b90925090505f60038c6003811115612bb357612bb36154f9565b14612bbf576001612bc1565b5f5b90505f612bd1828a858a8a6143c6565b9050612bdc8c611f15565b15612d565760038d6003811115612bf557612bf56154f9565b03612c4f5788341015612c3e5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964206d73672e76616c756560781b604482015260640161062b565b612c483484613b7e565b9450612c96565b883414612c925760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964206d73672e76616c756560781b604482015260640161062b565b8094505b6001600160a01b038b1615612d35576001600160a01b038b165f908152600b602052604090205460ff16612cdc5760405162461bcd60e51b815260040161062b90615a83565b60038d6003811115612cf057612cf06154f9565b03612d1257612cff8b8661447b565b612d0a8b8b87613077565b5f9450612d35565b60028d6003811115612d2657612d266154f9565b03612d3557612d358b8261447b565b8315612d5157600854612d51906001600160a01b031684611f4d565b612df3565b612d628c33308c614575565b60038d6003811115612d7657612d766154f9565b03612d8e57612d868c8b83613077565b349450612dd3565b5f8d6003811115612da157612da16154f9565b03612db657612db18c8b836117e6565b612dd3565b60028d6003811115612dca57612dca6154f9565b03612dd3578094505b8315612df357600854612df1908d906001600160a01b031685612006565b505b5050505098975050505050505050565b60606044835110158015612e3b5750825f81518110612e2457612e2461545d565b6020910101516001600160f81b031916600160fb1b145b8015612e6c575082600181518110612e5557612e5561545d565b6020910101516001600160f81b03191660c360f81b145b8015612e9d575082600281518110612e8657612e8661545d565b6020910101516001600160f81b031916607960f81b145b8015612ece575082600381518110612eb757612eb761545d565b6020910101516001600160f81b031916600560fd1b145b15612f5857604483810180519091612ee69190615aba565b84511015612f2e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b604482015260640161062b565b8281604051602001612f41929190615acd565b60405160208183030381529060405291505061157d565b82516024148015612f8d5750825f81518110612f7657612f7661545d565b6020910101516001600160f81b031916602760f91b145b8015612fbe575082600181518110612fa757612fa761545d565b6020910101516001600160f81b031916600960fb1b145b8015612fef575082600281518110612fd857612fd861545d565b6020910101516001600160f81b031916607b60f81b145b80156130205750826003815181106130095761300961545d565b6020910101516001600160f81b031916607160f81b145b156130455760248301518261303482614698565b604051602001612f41929190615b1b565b8161304f846146c0565b604051602001613060929190615b4f565b604051602081830303815290604052905092915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291515f928392908716916130d291906158bb565b5f604051808303815f865af19150503d805f811461310b576040519150601f19603f3d011682016040523d82523d5f602084013e613110565b606091505b509150915081801561313a57508051158061313a57508080602001905181019061313a91906158d6565b6116115760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015260640161062b565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f2251435bd151cd72851a82be055bf6d1c3d7f34d08d56493dddf874229b8e897878787876040516131d99493929190615b9f565b60405180910390a450505050505050565b600180546001600160a01b03199081169091555f80546001600160a01b03848116938216841783556040519116929183917f88436636ea40d5bb1bcc55ff9cd54788af71da886f4147a87f199adcca733d4d9190a35050565b8061324d81612b44565b600160025f846003811115613264576132646154f9565b6003811115613275576132756154f9565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055507f534f879afd40abb4e39f8e1b77a316be4c8e3521d9cf5a3a3db8959d574d455933836040516132c9929190615bc3565b60405180910390a15050565b806132df816148a0565b5f60025f8460038111156132f5576132f56154f9565b6003811115613306576133066154f9565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055507f4cd3e1443d03aba343c5d882744f8f172c07b495e955ac3defb325cbd73c855033836040516132c9929190615bc3565b5f806060818061336d60e08801886158f1565b61337991506001615aba565b61338660c08901896158f1565b9050146133c45760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b604482015260640161062b565b600b5f6133d760408a0160208b0161529b565b6001600160a01b0316815260208101919091526040015f205460ff1661340f5760405162461bcd60e51b815260040161062b90615a83565b5f8061341e8960a0013561436a565b9092509050613441600160608b01358361343c6101008e018e615544565b6143c6565b95505f61345160c08b018b6158f1565b808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525093945084925060019150613496905060c08e018e6158f1565b6134a19291506154e6565b815181106134b1576134b161545d565b602002602001015190506134f38b8060c001906134ce91906158f1565b5f8181106134de576134de61545d565b9050602002016020810190612374919061529b565b156135b3578a60600135341461353f5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964206d73672e76616c756560781b604482015260640161062b565b831561355b5760085461355b906001600160a01b031684611f4d565b61356b60408c0160208d0161529b565b825f8151811061357d5761357d61545d565b6001600160a01b039092166020928302919091018201526135ae906135a89060408e01908e0161529b565b8961447b565b613714565b89156136c557815f815181106135cb576135cb61545d565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613619573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061363d9190615471565b9750613668825f815181106136545761365461545d565b602002602001015133308e60600135614575565b6136be8b60a00135611ac68a855f815181106136865761368661545d565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401611a87565b97506136da565b6136da825f815181106136545761365461545d565b831561371457613712825f815181106136f5576136f561545d565b60209081029190910101516008546001600160a01b031685612006565b505b61371d81611f15565b156137eb5761373260408c0160208d0161529b565b826001845161374191906154e6565b815181106137515761375161545d565b6001600160a01b039092166020928302919091018201526001995061377c9060408d01908d0161529b565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156137c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137e49190615471565b9550613876565b8915613876576001600160a01b0381166370a0823161380d60208e018e61529b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561384f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138739190615471565b94505b819650505050509295509295909350565b5f5b6001845161389791906154e6565b811015611611575f808583815181106138b2576138b261545d565b6020026020010151868460016138c89190615aba565b815181106138d8576138d861545d565b6020026020010151915091505f816001600160a01b0316836001600160a01b031610613905578183613908565b82825b5090505f86858151811061391e5761391e61545d565b602002602001015190505f805f80846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613968573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061398c9190615c12565b506001600160701b031691506001600160701b031691505f80876001600160a01b03168a6001600160a01b0316146139c55782846139c8565b83835b6040516370a0823160e01b81526001600160a01b038a81166004830152929450909250613a03918491908d16906370a0823190602401611a87565b95508e6001600160a01b031663054d50d48784846040518463ffffffff1660e01b8152600401613a46939291909283526020830191909152604082015260600190565b602060405180830381865afa158015613a61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a859190615471565b9450505050505f80856001600160a01b0316886001600160a01b031614613aad57825f613ab0565b5f835b915091505f60028d51613ac391906154e6565b8a10613acf578a613af4565b8b613adb8b6001615aba565b81518110613aeb57613aeb61545d565b60200260200101515b604080515f8152602081019182905263022c0d9f60e01b9091529091506001600160a01b0387169063022c0d9f90613b359086908690869060248101615c53565b5f604051808303815f87803b158015613b4c575f80fd5b505af1158015613b5e573d5f803e3d5ffd5b505050505050505050505050508080613b769061549c565b915050613889565b5f82613b8a83826154e6565b915081111561157d5760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015260640161062b565b5f5b60018451613be391906154e6565b811015611611575f80858381518110613bfe57613bfe61545d565b602002602001015186846001613c149190615aba565b81518110613c2457613c2461545d565b6020026020010151915091505f816001600160a01b0316836001600160a01b031610613c51578183613c54565b82825b5090505f88613c64866001615aba565b81518110613c7457613c7461545d565b602002602001015190505f80836001600160a01b0316866001600160a01b031614613ca057825f613ca3565b5f835b915091505f60028b51613cb691906154e6565b8810613cc25788613ce7565b89613cce896001615aba565b81518110613cde57613cde61545d565b60200260200101515b9050898881518110613cfb57613cfb61545d565b60200260200101516001600160a01b031663022c0d9f8484845f6001600160401b03811115613d2c57613d2c614c5f565b6040519080825280601f01601f191660200182016040528015613d56576020820181803683370190505b506040518563ffffffff1660e01b8152600401613d769493929190615c53565b5f604051808303815f87803b158015613d8d575f80fd5b505af1158015613d9f573d5f803e3d5ffd5b50505050505050505050508080613db59061549c565b915050613bd5565b5f80836001600160a01b03165f632e1a7d4d85604051602401613de291815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051613e1b91906158bb565b5f6040518083038185875af1925050503d805f8114613e55576040519150601f19603f3d011682016040523d82523d5f602084013e613e5a565b606091505b5091509150818015613e84575080511580613e84575080806020019051810190613e8491906158d6565b6109655760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a2057495448445241575f4641494c454400604482015260640161062b565b5f60605f8390505f816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f389190615c7f565b90505f826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f9b9190615c7f565b90505f836001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ffe9190615c9a565b604080516001600160a01b03808716602083015285169181019190915262ffffff821660608201529091505f9060800160408051601f1981840301815291905280516020909101209050600160ff1b88161580156140fe57846001600160a01b03168b6001600160a01b0316146140875760405162461bcd60e51b815260040161062b90615cbc565b6001600160a01b038a16156140c757836001600160a01b03168a6001600160a01b0316146140c75760405162461bcd60e51b815260040161062b90615cbc565b604080516001600160a01b0387166020820152908101839052939750879360600160405160208183030381529060405296506141a2565b836001600160a01b03168b6001600160a01b03161461412f5760405162461bcd60e51b815260040161062b90615cbc565b6001600160a01b038a161561416f57846001600160a01b03168a6001600160a01b03161461416f5760405162461bcd60e51b815260040161062b90615cbc565b604080516001600160a01b0386166020820152908101839052949750879460600160405160208183030381529060405296505b6141ad89838b611633565b505050505050935093915050565b5f600160ff1b8416158015614293575f856001600160a01b031663128acb0888846141e5886148ec565b6141f56401000276a36001615cde565b8b8b604051602001614208929190615d05565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401614237959493929190615d1d565b60408051808303815f875af1158015614252573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142769190615d57565b91505061428b8161428690615d79565b614959565b925050614361565b5f856001600160a01b031663128acb0888846142ae886148ec565b6142cd600173fffd8963efd1fc6a506488495d951d5263988d26615d93565b8b8b6040516020016142e0929190615d05565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161430f959493929190615d1d565b60408051808303815f875af115801561432a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061434e9190615d57565b50905061435d61428682615d79565b9250505b50949350505050565b5f8080614378600a85615dc7565b905061438f600a6143898684613b7e565b906149aa565b91508060011480156143a057505f82115b80156143b657506008546001600160a01b031615155b156143c057600192505b50915091565b5f8086156143f0576143e9612710614389600454896149f790919063ffffffff16565b905061440e565b61440b612710614389600554896149f790919063ffffffff16565b90505b808510156144665761442286868686614a5d565b6144665760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207369676e61747572652066656560581b604482015260640161062b565b6144708686613b7e565b979650505050505050565b60408051600481526024810182526020810180516001600160e01b0316630d0e30db60e41b17905290515f9182916001600160a01b0386169185916144c091906158bb565b5f6040518083038185875af1925050503d805f81146144fa576040519150601f19603f3d011682016040523d82523d5f602084013e6144ff565b606091505b509150915081801561452957508051158061452957508080602001905181019061452991906158d6565b6109655760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a204445504f5349545f4641494c45440000604482015260640161062b565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291515f928392908816916145d891906158bb565b5f604051808303815f865af19150503d805f8114614611576040519150601f19603f3d011682016040523d82523d5f602084013e614616565b606091505b509150915081801561464057508051158061464057508080602001905181019061464091906158d6565b6117de5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b606482015260840161062b565b606061157d826040516020016146b091815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b905f906146e7906002615dda565b6146f2906002615aba565b6001600160401b0381111561470957614709614c5f565b6040519080825280601f01601f191660200182016040528015614733576020820181803683370190505b509050600360fc1b815f8151811061474d5761474d61545d565b60200101906001600160f81b03191690815f1a905350600f60fb1b8160018151811061477b5761477b61545d565b60200101906001600160f81b03191690815f1a9053505f5b8451811015614898578260048683815181106147b1576147b161545d565b01602001516001600160f81b031916901c60f81c601081106147d5576147d561545d565b1a60f81b826147e5836002615dda565b6147f0906002615aba565b815181106148005761480061545d565b60200101906001600160f81b03191690815f1a905350828582815181106148295761482961545d565b60209101015160f81c600f16601081106148455761484561545d565b1a60f81b82614855836002615dda565b614860906003615aba565b815181106148705761487061545d565b60200101906001600160f81b03191690815f1a905350806148908161549c565b915050614793565b509392505050565b6148a9816109b6565b6111025760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161062b565b5f6001600160ff1b038211156149555760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161062b565b5090565b5f808212156149555760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015260640161062b565b5f815f036149ed5760405162461bcd60e51b815260206004820152601060248201526f64732d6d6174682d6469762d7a65726f60801b604482015260640161062b565b61069f8284615df1565b5f811580614a1a57508282614a0c8183615dda565b9250614a189083615df1565b145b61157d5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015260640161062b565b600954604080517f048f880a603b1aab0e626a287e33d603417b3d53a36f7527b7c86365bf7def4f6020820152339181019190915260608101869052608081018590525f91829160a00160405160208183030381529060405280519060200120604051602001614ae492919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090505f805f614b3d87878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250614bc992505050565b9250925092505f6001858585856040515f8152602001604052604051614b7f949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015614b9f573d5f803e3d5ffd5b5050604051601f1901516007546001600160a01b039081169116149b9a5050505050505050505050565b5f805f8351604114614c1d5760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964207369676e6174757265206c656e6774680000000000000000604482015260640161062b565b505050602081015160408201516060909201515f1a92909190565b5f8085851115614c46575f80fd5b83861115614c52575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715614c9b57614c9b614c5f565b604052919050565b5f6001600160401b03821115614cbb57614cbb614c5f565b50601f01601f191660200190565b5f805f60608486031215614cdb575f80fd5b833592506020840135915060408401356001600160401b03811115614cfe575f80fd5b8401601f81018613614d0e575f80fd5b8035614d21614d1c82614ca3565b614c73565b818152876020838501011115614d35575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f8060408385031215614d65575f80fd5b82356001600160401b03811115614d7a575f80fd5b83016101408186031215614d8c575f80fd5b946020939093013593505050565b5f6001600160401b03821115614db257614db2614c5f565b5060051b60200190565b6001600160a01b0381168114611102575f80fd5b8035614ddb81614dbc565b919050565b5f8060408385031215614df1575f80fd5b82356001600160401b03811115614e06575f80fd5b8301601f81018513614e16575f80fd5b80356020614e26614d1c83614d9a565b82815260059290921b83018101918181019088841115614e44575f80fd5b938201935b83851015614e6b578435614e5c81614dbc565b82529382019390820190614e49565b9550614e7a9050868201614dd0565b93505050509250929050565b5f805f60608486031215614e98575f80fd5b8335614ea381614dbc565b92506020840135614eb381614dbc565b929592945050506040919091013590565b5f5b83811015614ede578181015183820152602001614ec6565b50505f910152565b5f8151808452614efd816020860160208601614ec4565b601f01601f19169290920160200192915050565b831515815282151560208201526060604082015260018060a01b0382511660608201525f6020830151604060808401526120e060a0840182614ee6565b5f805f8060608587031215614f61575f80fd5b843593506020850135925060408501356001600160401b0380821115614f85575f80fd5b818701915087601f830112614f98575f80fd5b813581811115614fa6575f80fd5b886020828501011115614fb7575f80fd5b95989497505060200194505050565b5f8060408385031215614fd7575f80fd5b82356001600160401b0380821115614fed575f80fd5b908401906101208287031215615001575f80fd5b90925060208401359080821115615016575f80fd5b50830160408186031215615028575f80fd5b809150509250929050565b5f6101608284031215615044575f80fd5b50919050565b5f6020828403121561505a575f80fd5b81356001600160401b0381111561506f575f80fd5b61507b84828501615033565b949350505050565b5f60208284031215615093575f80fd5b81356004811061069f575f80fd5b8015158114611102575f80fd5b5f82601f8301126150bd575f80fd5b813560206150cd614d1c83614d9a565b82815260059290921b840181019181810190868411156150eb575f80fd5b8286015b8481101561510657803583529183019183016150ef565b509695505050505050565b5f8060408385031215615122575f80fd5b82356001600160401b0380821115615138575f80fd5b818501915085601f83011261514b575f80fd5b8135602061515b614d1c83614d9a565b82815260059290921b84018101918181019089841115615179575f80fd5b948201945b838610156151a0578535615191816150a1565b8252948201949082019061517e565b965050860135925050808211156151b5575f80fd5b50610988858286016150ae565b5f8083601f8401126151d2575f80fd5b5081356001600160401b038111156151e8575f80fd5b6020830191508360208260051b8501011115615202575f80fd5b9250929050565b5f805f805f806060878903121561521e575f80fd5b86356001600160401b0380821115615234575f80fd5b6152408a838b016151c2565b90985096506020890135915080821115615258575f80fd5b6152648a838b016151c2565b9096509450604089013591508082111561527c575f80fd5b5061528989828a016151c2565b979a9699509497509295939492505050565b5f602082840312156152ab575f80fd5b813561069f81614dbc565b5f805f80604085870312156152c9575f80fd5b84356001600160401b03808211156152df575f80fd5b6152eb888389016151c2565b90965094506020870135915080821115615303575f80fd5b50615310878288016151c2565b95989497509550505050565b5f805f6060848603121561532e575f80fd5b833561533981614dbc565b9250602084013561534981614dbc565b9150604084013561535981614dbc565b809150509250925092565b5f805f60408486031215615376575f80fd5b8335615381816150a1565b925060208401356001600160401b0381111561539b575f80fd5b6153a7868287016151c2565b9497909650939450505050565b5f80604083850312156153c5575f80fd5b8251915060208301516001600160401b038111156153e1575f80fd5b8301601f810185136153f1575f80fd5b80516153ff614d1c82614ca3565b818152866020838501011115615413575f80fd5b615424826020830160208601614ec4565b8093505050509250929050565b5f8060408385031215615442575f80fd5b825161544d81614dbc565b6020939093015192949293505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215615481575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016154ad576154ad615488565b5060010190565b600181811c908216806154c857607f821691505b60208210810361504457634e487b7160e01b5f52602260045260245ffd5b8181038181111561157d5761157d615488565b634e487b7160e01b5f52602160045260245ffd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b5f808335601e19843603018112615559575f80fd5b8301803591506001600160401b03821115615572575f80fd5b602001915036819003821315615202575f80fd5b818382375f9101908152919050565b602081525f61069f6020830184614ee6565b601f821115610821575f81815260208120601f850160051c810160208610156155cd5750805b601f850160051c820191505b818110156117de578281556001016155d9565b81516001600160401b0381111561560557615605614c5f565b6156198161561384546154b4565b846155a7565b602080601f83116001811461564c575f84156156355750858301515b5f19600386901b1c1916600185901b1785556117de565b5f85815260208120601f198616915b8281101561567a5788860151825594840194600190910190840161565b565b508582101561569757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b8183525f60208085019450825f5b858110156156e35781356156c881614dbc565b6001600160a01b0316875295820195908201906001016156b5565b509495945050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f808335601e1984360301811261572b575f80fd5b83016020810192503590506001600160401b03811115615749575f80fd5b803603821315615202575f80fd5b606080825281018690525f6001600160fb1b03871115615775575f80fd5b8660051b80896080850137808301905060206080848303018185015261579f60808301888a6156a7565b84810360408601528581529150808201600586901b83018201875f5b888110156157f557858303601f190184526157d6828b615716565b6157e18582846156ee565b9587019594505050908401906001016157bb565b50909c9b505050505050505050505050565b602081525f61507b6020830184866156a7565b604081525f61582d6040830185876156a7565b8281036020848101919091528451808352858201928201905f5b81811015615865578451151583529383019391830191600101615847565b509098975050505050505050565b60ff60f81b81526bffffffffffffffffffffffff198460601b1660018201528260158201525f82516158ac816035850160208701614ec4565b91909101603501949350505050565b5f82516158cc818460208701614ec4565b9190910192915050565b5f602082840312156158e6575f80fd5b815161069f816150a1565b5f808335601e19843603018112615906575f80fd5b8301803591506001600160401b0382111561591f575f80fd5b6020019150600581901b3603821315615202575f80fd5b5f60408201848352602060408185015281855180845260608601915082870193505f5b8181101561597e5784516001600160a01b031683529383019391830191600101615959565b5090979650505050505050565b5f602080838503121561599c575f80fd5b82516001600160401b038111156159b1575f80fd5b8301601f810185136159c1575f80fd5b80516159cf614d1c82614d9a565b81815260059190911b820183019083810190878311156159ed575f80fd5b928401925b82841015614470578351825292840192908401906159f2565b602080825260139082015272151bdbc81b1a5d1d1b19481c9958d95a5d9959606a1b604082015260600190565b602081525f8235615a4881614dbc565b6001600160a01b0316602083810191909152615a6690840184615716565b604080850152615a7a6060850182846156ee565b95945050505050565b60208082526017908201527f496e76616c696420777261707065642061646472657373000000000000000000604082015260600190565b8082018082111561157d5761157d615488565b5f8351615ade818460208801614ec4565b6508ae4e4dee4560d31b9083019081528351615b01816006840160208801614ec4565b602960f81b60069290910191820152600701949350505050565b5f8351615b2c818460208801614ec4565b650a0c2dcd2c6560d31b9083019081528351615b01816006840160208801614ec4565b5f8351615b60818460208801614ec4565b670aadcd6dcdeeedc560c31b9083019081528351615b85816008840160208801614ec4565b602960f81b60089290910191820152600901949350505050565b848152836020820152826040820152608060608201525f6120e06080830184614ee6565b6001600160a01b03831681526040810160048310615bef57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b80516001600160701b0381168114614ddb575f80fd5b5f805f60608486031215615c24575f80fd5b615c2d84615bfc565b9250615c3b60208501615bfc565b9150604084015163ffffffff81168114615359575f80fd5b84815283602082015260018060a01b0383166040820152608060608201525f6120e06080830184614ee6565b5f60208284031215615c8f575f80fd5b815161069f81614dbc565b5f60208284031215615caa575f80fd5b815162ffffff8116811461069f575f80fd5b602080825260089082015267109859081c1bdbdb60c21b604082015260600190565b6001600160a01b03818116838216019080821115615cfe57615cfe615488565b5092915050565b828152604060208201525f61507b6040830184614ee6565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190525f9061447090830184614ee6565b5f8060408385031215615d68575f80fd5b505080516020909101519092909150565b5f600160ff1b8201615d8d57615d8d615488565b505f0390565b6001600160a01b03828116828216039080821115615cfe57615cfe615488565b634e487b7160e01b5f52601260045260245ffd5b5f82615dd557615dd5615db3565b500690565b808202811582820484141761157d5761157d615488565b5f82615dff57615dff615db3565b50049056fea26469706673582212204f637f4c295074f72cbc3c36d09625f5fdf3a44c7aff79ff9b262a8ea106cf0864736f6c63430008140033

Deployed Bytecode

0x608060405260043610610184575f3560e01c80637ec753fe116100d0578063b9b5149b11610089578063d63234e011610063578063d63234e0146105a8578063d808d889146105c5578063fa461e33146102a4578063fa9ec7af146105d8576101c3565b8063b9b5149b14610546578063bf5c55a214610559578063c34c08e514610578576101c3565b80637ec753fe1461049757806392bcc8be146104b657806394d3d793146104d5578063afed2d0e146104e9578063b93c0beb14610508578063b946fd3b14610527576101c3565b80633644e5151161013d5780635ac86ab7116101175780635ac86ab7146103e95780636b3ec416146104185780636fbf72f91461042b5780637e467ecf14610464576101c3565b80633644e515146102eb5780633c481d57146103005780634c42342f146103d6576101c3565b80630ced9fb9146101ff5780630dc4bdae146102365780630e8cc705146102575780631975b0961461027657806323a69e75146102a45780632adb806f146102c3576101c3565b366101c357604080513381523460208201527f7784f8d436dc514f0690e472c7e2d7f660a73e504c69b2350f6be5a5f02432ef910160405180910390a1005b3480156101ce575f80fd5b505f80806101df3660048184614c38565b8101906101ec9190614cc9565b9250925092506101fd8383836105eb565b005b34801561020a575f80fd5b50600654600754604080516001600160a01b039384168152929091166020830152015b60405180910390f35b610249610244366004614d54565b610694565b60405190815260200161022d565b348015610262575f80fd5b506101fd610271366004614de0565b6106a6565b348015610281575f80fd5b50610295610290366004614e86565b610826565b60405161022d93929190614f11565b3480156102af575f80fd5b506101fd6102be366004614f4e565b610925565b6102d66102d1366004614fc6565b61096b565b6040805192835260208301919091520161022d565b3480156102f6575f80fd5b5061024960095481565b34801561030b575f80fd5b5060026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b547fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0547f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c5460035f527f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c35460ff938416939283169291821691166040805194151585529215156020850152901515918301919091521515606082015260800161022d565b6102d66103e436600461504a565b610992565b3480156103f4575f80fd5b50610408610403366004615083565b6109b6565b604051901515815260200161022d565b6101fd61042636600461504a565b6109f6565b348015610436575f80fd5b506004546005546008546040805193845260208401929092526001600160a01b03169082015260600161022d565b34801561046f575f80fd5b506102497f048f880a603b1aab0e626a287e33d603417b3d53a36f7527b7c86365bf7def4f81565b3480156104a2575f80fd5b506101fd6104b1366004615111565b610d11565b3480156104c1575f80fd5b506101fd6104d0366004615209565b610e96565b3480156104e0575f80fd5b506101fd61107f565b3480156104f4575f80fd5b506101fd61050336600461529b565b611105565b348015610513575f80fd5b506101fd6105223660046152b6565b611175565b348015610532575f80fd5b506101fd61054136600461531c565b61142a565b61024961055436600461504a565b611573565b348015610564575f80fd5b506101fd610573366004615364565b611583565b348015610583575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161022d565b3480156105b3575f80fd5b506001546001600160a01b0316610590565b6102496105d3366004614fc6565b611618565b6102d66105e6366004614d54565b611623565b5f8313806105f857505f82135b6106345760405162461bcd60e51b81526020600482015260086024820152674d30206f72204d3160c01b60448201526064015b60405180910390fd5b5f808280602001905181019061064a91906153b4565b915091505f80828060200190518101906106649190615431565b91509150610673848233611633565b855f88131561067f5750865b61068a8333836117e6565b5050505050505050565b5f61069f8383611903565b9392505050565b6106ae611e9f565b5f5b8251811015610821575f6106dc8483815181106106cf576106cf61545d565b6020026020010151611f15565b156106f25750476106ed8382611f4d565b61079e565b8382815181106107045761070461545d565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610752573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107769190615471565b905061079c84838151811061078d5761078d61545d565b60200260200101518483612006565b505b826001600160a01b0316336001600160a01b03168584815181106107c4576107c461545d565b60200260200101516001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f78460405161080691815260200190565b60405180910390a450806108198161549c565b9150506106b0565b505050565b6040805180820182525f80825260606020808401919091526001600160a01b038781168352600a8252848320548782168452600b835285842054878552600c84529386902086518088019097528054909216865260018201805460ff92831697929095169594919384019161089a906154b4565b80601f01602080910402602001604051908101604052809291908181526020018280546108c6906154b4565b80156109115780601f106108e857610100808354040283529160200191610911565b820191905f5260205f20905b8154815290600101906020018083116108f457829003601f168201915b505050505081525050905093509350939050565b610965848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506105eb92505050565b50505050565b5f805f5a905061097b85856120ea565b92505a61098890826154e6565b9150509250929050565b5f805f5a90506109a1846125fb565b92505a6109ae90826154e6565b915050915091565b5f60025f8360038111156109cc576109cc6154f9565b60038111156109dd576109dd6154f9565b815260208101919091526040015f205460ff1692915050565b600260035403610a185760405162461bcd60e51b815260040161062b9061550d565b60026003556003610a2881612b44565b5f610a37610120840184615544565b905011610a805760405162461bcd60e51b8152602060048201526017602482015276646174612073686f756c64206265206e6f74207a65726f60481b604482015260640161062b565b5f8260a0013511610ad35760405162461bcd60e51b815260206004820152601f60248201527f616d6f756e742073686f756c642062652067726561746572207468616e203000604482015260640161062b565b600a5f610ae6606085016040860161529b565b6001600160a01b0316815260208101919091526040015f205460ff16610b3f5760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b604482015260640161062b565b5f610b8f6003610b52602086018661529b565b610b6260a087016080880161529b565b610b72606088016040890161529b565b60a088013560c0890135610b8a6101408b018b615544565b612b8d565b90505f80610ba3606086016040870161529b565b6001600160a01b031683610bbb610120880188615544565b604051610bc9929190615586565b5f6040518083038185875af1925050503d805f8114610c03576040519150601f19603f3d011682016040523d82523d5f602084013e610c08565b606091505b509150915081610c5c57610c43816040518060400160405280600f81526020016e2a3930b739b4ba21b937b9b9ab1a9d60891b815250612e03565b60405162461bcd60e51b815260040161062b9190615595565b610c82610c6c602087018761529b565b610c7c606088016040890161529b565b5f613077565b50610d079050610c95602085018561529b565b610ca5604086016020870161529b565b610cb5608087016060880161529b565b60a08701355f60e0890135610cce6101008b018b615544565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061318692505050565b5050600160035550565b610d19611e9f565b5f5b8251811015610821575f828281518110610d3757610d3761545d565b602002602001015110158015610d6857506103e8828281518110610d5d57610d5d61545d565b602002602001015111155b610da95760405162461bcd60e51b8152602060048201526012602482015271066656520726174652069733a302d313030360741b604482015260640161062b565b828181518110610dbb57610dbb61545d565b602002602001015115610ded57818181518110610dda57610dda61545d565b6020026020010151600481905550610e0e565b818181518110610dff57610dff61545d565b60200260200101516005819055505b7f5fa95345cbe35dad70f67a9ca1430c22453a695590cb4fca05d58f637e85af4f838281518110610e4157610e4161545d565b6020026020010151838381518110610e5b57610e5b61545d565b6020026020010151604051610e7c9291909115158252602082015260400190565b60405180910390a180610e8e8161549c565b915050610d1b565b610e9e611e9f565b848114610edc5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746160a01b604482015260640161062b565b828114610f1a5760405162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746160a01b604482015260640161062b565b825f5b81811015611034576040518060400160405280878784818110610f4257610f4261545d565b9050602002016020810190610f57919061529b565b6001600160a01b03168152602001858584818110610f7757610f7761545d565b9050602002810190610f899190615544565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250600c92508b90508a85818110610fd557610fd561545d565b60209081029290920135835250818101929092526040015f20825181546001600160a01b0319166001600160a01b0390911617815590820151600182019061101d90826155ec565b50905050808061102c9061549c565b915050610f1d565b507f652c1af850dcc0b28fcb71cd9473023f56a89edd81bbe7b51056a04caa94002487878787878760405161106e96959493929190615757565b60405180910390a150505050505050565b33806110936001546001600160a01b031690565b6001600160a01b0316146110f95760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e657720656044820152663c32b1baba37b960c91b606482015260840161062b565b611102816131ea565b50565b61110d611e9f565b600180546001600160a01b0383166001600160a01b0319909116811790915561113d5f546001600160a01b031690565b6001600160a01b03167fdd01547fc40682edc3cd8d164d53f5a1ae6b46138a83f045658ed760823ddba860405160405180910390a350565b61117d611e9f565b8215611275575f5b8381101561123a57600a5f8686848181106111a2576111a261545d565b90506020020160208101906111b7919061529b565b6001600160a01b0316815260208101919091526040015f9081205460ff161590600a908787858181106111ec576111ec61545d565b9050602002016020810190611201919061529b565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806112328161549c565b915050611185565b507fb05655746bd43b7fe3ccd9d28b7685b4c67ddc51e70890062b0f7f85dd692695848460405161126c929190615807565b60405180910390a15b8015610965575f816001600160401b0381111561129457611294614c5f565b6040519080825280602002602001820160405280156112bd578160200160208202803683370190505b5090505f5b828110156113e757600b5f8585848181106112df576112df61545d565b90506020020160208101906112f4919061529b565b6001600160a01b0316815260208101919091526040015f9081205460ff161590600b908686858181106113295761132961545d565b905060200201602081019061133e919061529b565b6001600160a01b0316815260208101919091526040015f908120805460ff191692151592909217909155600b9085858481811061137d5761137d61545d565b9050602002016020810190611392919061529b565b6001600160a01b0316815260208101919091526040015f2054825160ff909116908390839081106113c5576113c561545d565b91151560209283029190910190910152806113df8161549c565b9150506112c2565b507f4a28b173d9bc739be3886d172e07fef80392184787fc6b92406ce0f0c05b7e6383838360405161141b9392919061581a565b60405180910390a15050505050565b611432611e9f565b6001600160a01b0383161561149357600680546001600160a01b0319166001600160a01b0385169081179091556040519081527f347fade115440908839b750620f0add8f417b77a392657edd70b950373eda9c39060200160405180910390a15b6001600160a01b0382161561150157600780546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527ff9c6fa562c9d8326f8518a29a53ef18ab03cd6b9eead73ac667c5e289354c73e910160405180910390a1505b6001600160a01b0381161561082157600880546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fb3911b5760f95a64aaa8d7f1775f57a7b6ed0bcf1ebb3fbfcc045e2f04eaad11910160405180910390a150505050565b5f61157d826125fb565b92915050565b61158b611e9f565b805f5b818110156116115784156115d0576115cb8484838181106115b1576115b161545d565b90506020020160208101906115c69190615083565b613243565b6115ff565b6115ff8484838181106115e5576115e561545d565b90506020020160208101906115fa9190615083565b6132d5565b806116098161549c565b91505061158e565b5050505050565b5f61069f83836120ea565b5f805f5a905061097b8585611903565b600f60f884901c165f818152600c60209081526040808320815180830190925280546001600160a01b031682526001810180549293919291840191611677906154b4565b80601f01602080910402602001604051908101604052809291908181526020018280546116a3906154b4565b80156116ee5780601f106116c5576101008083540402835291602001916116ee565b820191905f5260205f20905b8154815290600101906020018083116116d157829003601f168201915b5050509190925250508151919250506001600160a01b03166117525760405162461bcd60e51b815260206004820152601960248201527f43616c6c6261636b2062616420706f6f6c20696e646578656400000000000000604482015260640161062b565b5f815f015185836020015160405160200161176f93929190615873565b604051602081830303815290604052805190602001205f1c9050836001600160a01b0316816001600160a01b0316146117de5760405162461bcd60e51b815260206004820152601160248201527010d85b1b189858dac8189859081c1bdbdb607a1b604482015260640161062b565b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f9283929087169161184191906158bb565b5f604051808303815f865af19150503d805f811461187a576040519150601f19603f3d011682016040523d82523d5f602084013e61187f565b606091505b50915091508180156118a95750805115806118a95750808060200190518101906118a991906158d6565b6116115760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657248656c7065723a205452414e534645525f544f4b454e5f46604482015264105253115160da1b606482015260840161062b565b5f6002600354036119265760405162461bcd60e51b815260040161062b9061550d565b6002600355600161193681612b44565b428310156119705760405162461bcd60e51b8152602060048201526007602482015266115e1c1a5c995960ca1b604482015260640161062b565b6001600f604086013560f81c16145f8080808061198d8a8761335a565b945094509450945094506119ef835f815181106119ac576119ac61545d565b60200260200101518b8060e001906119c491906158f1565b5f8181106119d4576119d461545d565b90506020020160208101906119e9919061529b565b866117e6565b8515611bb6578415611ad357611a4960408b013584611a1160e08e018e6158f1565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250309250613887915050565b611acc82611a5d60408d0160208e0161529b565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a08231906024015b602060405180830381865afa158015611aa2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac69190615471565b90613b7e565b9750611d4f565b611b3f60408b013584611ae960e08e018e6158f1565b808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f820116905080830192505050505050508d5f016020810190611b3a919061529b565b613887565b611acc818460018651611b5291906154e6565b81518110611b6257611b6261545d565b60200260200101516001600160a01b03166370a082318d5f016020810190611b8a919061529b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401611a87565b5f8a604001356001600160a01b031663d06ca61f86866040518363ffffffff1660e01b8152600401611be9929190615936565b5f60405180830381865afa158015611c03573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c2a919081019061598b565b90508515611c9757611c7c8185611c4460e08f018f6158f1565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250309250613bd3915050565b611c9083611a5d60408e0160208f0161529b565b9850611d4d565b611cff8185611ca960e08f018f6158f1565b808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f820116905080830192505050505050508e5f016020810190611cfa919061529b565b613bd3565b611d4a828560018751611d1291906154e6565b81518110611d2257611d2261545d565b60200260200101516001600160a01b03166370a082318e5f016020810190611b8a919061529b565b98505b505b8960800135881015611d735760405162461bcd60e51b815260040161062b90615a0b565b8415611da857611d92611d8c60408c0160208d0161529b565b89613dbd565b611da8611da260208c018c61529b565b89611f4d565b50505050505f85806101200190611dbf9190615544565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929350611e919250611e0791505060c08801886158f1565b5f818110611e1757611e1761545d565b9050602002016020810190611e2c919061529b565b611e3960c08901896158f1565b6001611e4860c08c018c6158f1565b611e539291506154e6565b818110611e6257611e6261545d565b9050602002016020810190611e77919061529b565b611e8460208a018a61529b565b8960600135885f87613186565b505050600160035592915050565b33611eb15f546001600160a01b031690565b6001600160a01b031614611f135760405162461bcd60e51b815260206004820152602360248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652065786563756044820152623a37b960e91b606482015260840161062b565b565b5f6001600160a01b038216158061157d57506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b604080515f808252602082019092526001600160a01b038416908390604051611f7691906158bb565b5f6040518083038185875af1925050503d805f8114611fb0576040519150601f19603f3d011682016040523d82523d5f602084013e611fb5565b606091505b50509050806108215760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015260640161062b565b5f805f856001600160a01b031663a9059cbb868660405160240161203f9291906001600160a01b03929092168252602082015260400190565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161207891906158bb565b5f604051808303815f865af19150503d805f81146120b1576040519150601f19603f3d011682016040523d82523d5f602084013e6120b6565b606091505b50915091508180156120e05750805115806120e05750808060200190518101906120e091906158d6565b9695505050505050565b5f60026003540361210d5760405162461bcd60e51b815260040161062b9061550d565b60026003555f61211c81612b44565b5f61212a6020850185615544565b9050116121735760405162461bcd60e51b8152602060048201526017602482015276646174612073686f756c64206265206e6f74207a65726f60481b604482015260640161062b565b5f8460800135116121c65760405162461bcd60e51b815260206004820152601f60248201527f616d6f756e742073686f756c642062652067726561746572207468616e203000604482015260640161062b565b5f6121d7606086016040870161529b565b6001600160a01b0316036122375760405162461bcd60e51b815260206004820152602160248201527f72656365697665722073686f756c64206265206e6f74206164647265737328306044820152602960f81b606482015260840161062b565b5f8460a001351161229b5760405162461bcd60e51b815260206004820152602860248201527f6d696e52657475726e416d6f756e742073686f756c6420626520677265617465604482015267072207468616e20360c41b606482015260840161062b565b600b5f6122ae608087016060880161529b565b6001600160a01b0316815260208101919091526040015f205460ff166123165760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420777261707065642061646472657373000000000000000000604482015260640161062b565b6006545f906001600160a01b03168161235f8161233660208a018a61529b565b61234660808b0160608c0161529b565b8560808c013560c08d0135610b8a6101008f018f615544565b90506123796123746040890160208a0161529b565b611f15565b1561239f5761238e606088016040890161529b565b6001600160a01b0316319250612436565b6123af604088016020890161529b565b6001600160a01b03166370a082316123cd60608a0160408b0161529b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561240f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124339190615471565b92505b5f80836001600160a01b031683633f3204d28a6040516024016124599190615a38565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161249291906158bb565b5f6040518083038185875af1925050503d805f81146124cc576040519150601f19603f3d011682016040523d82523d5f602084013e6124d1565b606091505b50915091508161250957610c43816040518060400160405280600c81526020016b2a3930b739b4ba29bbb0b81d60a11b815250612e03565b5061251f90506123746040890160208a0161529b565b1561254f576125488361253860608a0160408b0161529b565b6001600160a01b03163190613b7e565b9450612584565b6125818361256360408a0160208b0161529b565b6001600160a01b03166370a08231611b8a60608c0160408d0161529b565b94505b8660a001358510156125a85760405162461bcd60e51b815260040161062b90615a0b565b6125ec6125b8602089018961529b565b6125c860408a0160208b0161529b565b6125d860608b0160408c0161529b565b60808b0135895f610cce60e08f018f615544565b50505050600160035592915050565b5f60026003540361261e5760405162461bcd60e51b815260040161062b9061550d565b6002600355600261262e81612b44565b5f61263d6101008501856158f1565b90501161267a5760405162461bcd60e51b815260206004820152600b60248201526a456d70747920706f6f6c7360a81b604482015260640161062b565b428360e0013510156126b85760405162461bcd60e51b8152602060048201526007602482015266115e1c1a5c995960ca1b604482015260640161062b565b600b5f6126cb608086016060870161529b565b6001600160a01b0316815260208101919091526040015f205460ff166127035760405162461bcd60e51b815260040161062b90615a83565b5f612711602085018561529b565b90505f612724604086016020870161529b565b90505f80612738612374602089018961529b565b156127505761274d608088016060890161529b565b93505b5f61278f600261276360208b018b61529b565b61277360808c0160608d0161529b565b5f8c608001358d60c001358e806101200190610b8a9190615544565b90506127a461237460408a0160208b0161529b565b1561283e576127b96080890160608a0161529b565b93506127cb6080890160608a0161529b565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561280f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128339190615471565b9250600191506128d5565b61284e6040890160208a0161529b565b6001600160a01b03166370a0823161286c60608b0160408c0161529b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156128ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128d29190615471565b92505b5f6128e46101008a018a6158f1565b91503090506060600183111561299c57875f805b85811015612991575f8e80610100019061291291906158f1565b838181106129225761292261545d565b905060200201359050612936848483613ed0565b955093506129456001886154e6565b82148015612951575088155b1561296f578e6040016020810190612969919061529b565b95508a92505b61297b8682878b6141bb565b97505080806129899061549c565b9150506128f8565b50859b505050612a1a565b6129cb88886129af6101008f018f6158f1565b5f8181106129bf576129bf61545d565b90506020020135613ed0565b91508590506129e7576129e460608c0160408d0161529b565b91505b612a17826129f96101008e018e6158f1565b5f818110612a0957612a0961545d565b9050602002013583876141bb565b99505b5050508115612a9457612a3783611a5d60808b0160608c0161529b565b96508760a00135871015612a5d5760405162461bcd60e51b815260040161062b90615a0b565b612a76612a7060808a0160608b0161529b565b88613dbd565b612a8f612a8960608a0160408b0161529b565b88611f4d565b612aec565b612ac683612aa860408b0160208c0161529b565b6001600160a01b03166370a08231611b8a60608d0160408e0161529b565b96508760a00135871015612aec5760405162461bcd60e51b815260040161062b90615a0b565b612b34612afc60208a018a61529b565b612b0c60408b0160208c0161529b565b612b1c60608c0160408d0161529b565b8b608001358b5f8e806101400190610cce9190615544565b5050505050506001600355919050565b612b4d816109b6565b156111025760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161062b565b5f805f612b998661436a565b90925090505f60038c6003811115612bb357612bb36154f9565b14612bbf576001612bc1565b5f5b90505f612bd1828a858a8a6143c6565b9050612bdc8c611f15565b15612d565760038d6003811115612bf557612bf56154f9565b03612c4f5788341015612c3e5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964206d73672e76616c756560781b604482015260640161062b565b612c483484613b7e565b9450612c96565b883414612c925760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964206d73672e76616c756560781b604482015260640161062b565b8094505b6001600160a01b038b1615612d35576001600160a01b038b165f908152600b602052604090205460ff16612cdc5760405162461bcd60e51b815260040161062b90615a83565b60038d6003811115612cf057612cf06154f9565b03612d1257612cff8b8661447b565b612d0a8b8b87613077565b5f9450612d35565b60028d6003811115612d2657612d266154f9565b03612d3557612d358b8261447b565b8315612d5157600854612d51906001600160a01b031684611f4d565b612df3565b612d628c33308c614575565b60038d6003811115612d7657612d766154f9565b03612d8e57612d868c8b83613077565b349450612dd3565b5f8d6003811115612da157612da16154f9565b03612db657612db18c8b836117e6565b612dd3565b60028d6003811115612dca57612dca6154f9565b03612dd3578094505b8315612df357600854612df1908d906001600160a01b031685612006565b505b5050505098975050505050505050565b60606044835110158015612e3b5750825f81518110612e2457612e2461545d565b6020910101516001600160f81b031916600160fb1b145b8015612e6c575082600181518110612e5557612e5561545d565b6020910101516001600160f81b03191660c360f81b145b8015612e9d575082600281518110612e8657612e8661545d565b6020910101516001600160f81b031916607960f81b145b8015612ece575082600381518110612eb757612eb761545d565b6020910101516001600160f81b031916600560fd1b145b15612f5857604483810180519091612ee69190615aba565b84511015612f2e5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b604482015260640161062b565b8281604051602001612f41929190615acd565b60405160208183030381529060405291505061157d565b82516024148015612f8d5750825f81518110612f7657612f7661545d565b6020910101516001600160f81b031916602760f91b145b8015612fbe575082600181518110612fa757612fa761545d565b6020910101516001600160f81b031916600960fb1b145b8015612fef575082600281518110612fd857612fd861545d565b6020910101516001600160f81b031916607b60f81b145b80156130205750826003815181106130095761300961545d565b6020910101516001600160f81b031916607160f81b145b156130455760248301518261303482614698565b604051602001612f41929190615b1b565b8161304f846146c0565b604051602001613060929190615b4f565b604051602081830303815290604052905092915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291515f928392908716916130d291906158bb565b5f604051808303815f865af19150503d805f811461310b576040519150601f19603f3d011682016040523d82523d5f602084013e613110565b606091505b509150915081801561313a57508051158061313a57508080602001905181019061313a91906158d6565b6116115760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015260640161062b565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f2251435bd151cd72851a82be055bf6d1c3d7f34d08d56493dddf874229b8e897878787876040516131d99493929190615b9f565b60405180910390a450505050505050565b600180546001600160a01b03199081169091555f80546001600160a01b03848116938216841783556040519116929183917f88436636ea40d5bb1bcc55ff9cd54788af71da886f4147a87f199adcca733d4d9190a35050565b8061324d81612b44565b600160025f846003811115613264576132646154f9565b6003811115613275576132756154f9565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055507f534f879afd40abb4e39f8e1b77a316be4c8e3521d9cf5a3a3db8959d574d455933836040516132c9929190615bc3565b60405180910390a15050565b806132df816148a0565b5f60025f8460038111156132f5576132f56154f9565b6003811115613306576133066154f9565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055507f4cd3e1443d03aba343c5d882744f8f172c07b495e955ac3defb325cbd73c855033836040516132c9929190615bc3565b5f806060818061336d60e08801886158f1565b61337991506001615aba565b61338660c08901896158f1565b9050146133c45760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b604482015260640161062b565b600b5f6133d760408a0160208b0161529b565b6001600160a01b0316815260208101919091526040015f205460ff1661340f5760405162461bcd60e51b815260040161062b90615a83565b5f8061341e8960a0013561436a565b9092509050613441600160608b01358361343c6101008e018e615544565b6143c6565b95505f61345160c08b018b6158f1565b808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525093945084925060019150613496905060c08e018e6158f1565b6134a19291506154e6565b815181106134b1576134b161545d565b602002602001015190506134f38b8060c001906134ce91906158f1565b5f8181106134de576134de61545d565b9050602002016020810190612374919061529b565b156135b3578a60600135341461353f5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964206d73672e76616c756560781b604482015260640161062b565b831561355b5760085461355b906001600160a01b031684611f4d565b61356b60408c0160208d0161529b565b825f8151811061357d5761357d61545d565b6001600160a01b039092166020928302919091018201526135ae906135a89060408e01908e0161529b565b8961447b565b613714565b89156136c557815f815181106135cb576135cb61545d565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613619573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061363d9190615471565b9750613668825f815181106136545761365461545d565b602002602001015133308e60600135614575565b6136be8b60a00135611ac68a855f815181106136865761368661545d565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401611a87565b97506136da565b6136da825f815181106136545761365461545d565b831561371457613712825f815181106136f5576136f561545d565b60209081029190910101516008546001600160a01b031685612006565b505b61371d81611f15565b156137eb5761373260408c0160208d0161529b565b826001845161374191906154e6565b815181106137515761375161545d565b6001600160a01b039092166020928302919091018201526001995061377c9060408d01908d0161529b565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156137c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137e49190615471565b9550613876565b8915613876576001600160a01b0381166370a0823161380d60208e018e61529b565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561384f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138739190615471565b94505b819650505050509295509295909350565b5f5b6001845161389791906154e6565b811015611611575f808583815181106138b2576138b261545d565b6020026020010151868460016138c89190615aba565b815181106138d8576138d861545d565b6020026020010151915091505f816001600160a01b0316836001600160a01b031610613905578183613908565b82825b5090505f86858151811061391e5761391e61545d565b602002602001015190505f805f80846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613968573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061398c9190615c12565b506001600160701b031691506001600160701b031691505f80876001600160a01b03168a6001600160a01b0316146139c55782846139c8565b83835b6040516370a0823160e01b81526001600160a01b038a81166004830152929450909250613a03918491908d16906370a0823190602401611a87565b95508e6001600160a01b031663054d50d48784846040518463ffffffff1660e01b8152600401613a46939291909283526020830191909152604082015260600190565b602060405180830381865afa158015613a61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a859190615471565b9450505050505f80856001600160a01b0316886001600160a01b031614613aad57825f613ab0565b5f835b915091505f60028d51613ac391906154e6565b8a10613acf578a613af4565b8b613adb8b6001615aba565b81518110613aeb57613aeb61545d565b60200260200101515b604080515f8152602081019182905263022c0d9f60e01b9091529091506001600160a01b0387169063022c0d9f90613b359086908690869060248101615c53565b5f604051808303815f87803b158015613b4c575f80fd5b505af1158015613b5e573d5f803e3d5ffd5b505050505050505050505050508080613b769061549c565b915050613889565b5f82613b8a83826154e6565b915081111561157d5760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015260640161062b565b5f5b60018451613be391906154e6565b811015611611575f80858381518110613bfe57613bfe61545d565b602002602001015186846001613c149190615aba565b81518110613c2457613c2461545d565b6020026020010151915091505f816001600160a01b0316836001600160a01b031610613c51578183613c54565b82825b5090505f88613c64866001615aba565b81518110613c7457613c7461545d565b602002602001015190505f80836001600160a01b0316866001600160a01b031614613ca057825f613ca3565b5f835b915091505f60028b51613cb691906154e6565b8810613cc25788613ce7565b89613cce896001615aba565b81518110613cde57613cde61545d565b60200260200101515b9050898881518110613cfb57613cfb61545d565b60200260200101516001600160a01b031663022c0d9f8484845f6001600160401b03811115613d2c57613d2c614c5f565b6040519080825280601f01601f191660200182016040528015613d56576020820181803683370190505b506040518563ffffffff1660e01b8152600401613d769493929190615c53565b5f604051808303815f87803b158015613d8d575f80fd5b505af1158015613d9f573d5f803e3d5ffd5b50505050505050505050508080613db59061549c565b915050613bd5565b5f80836001600160a01b03165f632e1a7d4d85604051602401613de291815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051613e1b91906158bb565b5f6040518083038185875af1925050503d805f8114613e55576040519150601f19603f3d011682016040523d82523d5f602084013e613e5a565b606091505b5091509150818015613e84575080511580613e84575080806020019051810190613e8491906158d6565b6109655760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a2057495448445241575f4641494c454400604482015260640161062b565b5f60605f8390505f816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f389190615c7f565b90505f826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f9b9190615c7f565b90505f836001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ffe9190615c9a565b604080516001600160a01b03808716602083015285169181019190915262ffffff821660608201529091505f9060800160408051601f1981840301815291905280516020909101209050600160ff1b88161580156140fe57846001600160a01b03168b6001600160a01b0316146140875760405162461bcd60e51b815260040161062b90615cbc565b6001600160a01b038a16156140c757836001600160a01b03168a6001600160a01b0316146140c75760405162461bcd60e51b815260040161062b90615cbc565b604080516001600160a01b0387166020820152908101839052939750879360600160405160208183030381529060405296506141a2565b836001600160a01b03168b6001600160a01b03161461412f5760405162461bcd60e51b815260040161062b90615cbc565b6001600160a01b038a161561416f57846001600160a01b03168a6001600160a01b03161461416f5760405162461bcd60e51b815260040161062b90615cbc565b604080516001600160a01b0386166020820152908101839052949750879460600160405160208183030381529060405296505b6141ad89838b611633565b505050505050935093915050565b5f600160ff1b8416158015614293575f856001600160a01b031663128acb0888846141e5886148ec565b6141f56401000276a36001615cde565b8b8b604051602001614208929190615d05565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401614237959493929190615d1d565b60408051808303815f875af1158015614252573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142769190615d57565b91505061428b8161428690615d79565b614959565b925050614361565b5f856001600160a01b031663128acb0888846142ae886148ec565b6142cd600173fffd8963efd1fc6a506488495d951d5263988d26615d93565b8b8b6040516020016142e0929190615d05565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161430f959493929190615d1d565b60408051808303815f875af115801561432a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061434e9190615d57565b50905061435d61428682615d79565b9250505b50949350505050565b5f8080614378600a85615dc7565b905061438f600a6143898684613b7e565b906149aa565b91508060011480156143a057505f82115b80156143b657506008546001600160a01b031615155b156143c057600192505b50915091565b5f8086156143f0576143e9612710614389600454896149f790919063ffffffff16565b905061440e565b61440b612710614389600554896149f790919063ffffffff16565b90505b808510156144665761442286868686614a5d565b6144665760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207369676e61747572652066656560581b604482015260640161062b565b6144708686613b7e565b979650505050505050565b60408051600481526024810182526020810180516001600160e01b0316630d0e30db60e41b17905290515f9182916001600160a01b0386169185916144c091906158bb565b5f6040518083038185875af1925050503d805f81146144fa576040519150601f19603f3d011682016040523d82523d5f602084013e6144ff565b606091505b509150915081801561452957508051158061452957508080602001905181019061452991906158d6565b6109655760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a204445504f5349545f4641494c45440000604482015260640161062b565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291515f928392908816916145d891906158bb565b5f604051808303815f865af19150503d805f8114614611576040519150601f19603f3d011682016040523d82523d5f602084013e614616565b606091505b509150915081801561464057508051158061464057508080602001905181019061464091906158d6565b6117de5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b606482015260840161062b565b606061157d826040516020016146b091815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b905f906146e7906002615dda565b6146f2906002615aba565b6001600160401b0381111561470957614709614c5f565b6040519080825280601f01601f191660200182016040528015614733576020820181803683370190505b509050600360fc1b815f8151811061474d5761474d61545d565b60200101906001600160f81b03191690815f1a905350600f60fb1b8160018151811061477b5761477b61545d565b60200101906001600160f81b03191690815f1a9053505f5b8451811015614898578260048683815181106147b1576147b161545d565b01602001516001600160f81b031916901c60f81c601081106147d5576147d561545d565b1a60f81b826147e5836002615dda565b6147f0906002615aba565b815181106148005761480061545d565b60200101906001600160f81b03191690815f1a905350828582815181106148295761482961545d565b60209101015160f81c600f16601081106148455761484561545d565b1a60f81b82614855836002615dda565b614860906003615aba565b815181106148705761487061545d565b60200101906001600160f81b03191690815f1a905350806148908161549c565b915050614793565b509392505050565b6148a9816109b6565b6111025760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161062b565b5f6001600160ff1b038211156149555760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161062b565b5090565b5f808212156149555760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015260640161062b565b5f815f036149ed5760405162461bcd60e51b815260206004820152601060248201526f64732d6d6174682d6469762d7a65726f60801b604482015260640161062b565b61069f8284615df1565b5f811580614a1a57508282614a0c8183615dda565b9250614a189083615df1565b145b61157d5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015260640161062b565b600954604080517f048f880a603b1aab0e626a287e33d603417b3d53a36f7527b7c86365bf7def4f6020820152339181019190915260608101869052608081018590525f91829160a00160405160208183030381529060405280519060200120604051602001614ae492919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090505f805f614b3d87878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250614bc992505050565b9250925092505f6001858585856040515f8152602001604052604051614b7f949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015614b9f573d5f803e3d5ffd5b5050604051601f1901516007546001600160a01b039081169116149b9a5050505050505050505050565b5f805f8351604114614c1d5760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964207369676e6174757265206c656e6774680000000000000000604482015260640161062b565b505050602081015160408201516060909201515f1a92909190565b5f8085851115614c46575f80fd5b83861115614c52575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715614c9b57614c9b614c5f565b604052919050565b5f6001600160401b03821115614cbb57614cbb614c5f565b50601f01601f191660200190565b5f805f60608486031215614cdb575f80fd5b833592506020840135915060408401356001600160401b03811115614cfe575f80fd5b8401601f81018613614d0e575f80fd5b8035614d21614d1c82614ca3565b614c73565b818152876020838501011115614d35575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f8060408385031215614d65575f80fd5b82356001600160401b03811115614d7a575f80fd5b83016101408186031215614d8c575f80fd5b946020939093013593505050565b5f6001600160401b03821115614db257614db2614c5f565b5060051b60200190565b6001600160a01b0381168114611102575f80fd5b8035614ddb81614dbc565b919050565b5f8060408385031215614df1575f80fd5b82356001600160401b03811115614e06575f80fd5b8301601f81018513614e16575f80fd5b80356020614e26614d1c83614d9a565b82815260059290921b83018101918181019088841115614e44575f80fd5b938201935b83851015614e6b578435614e5c81614dbc565b82529382019390820190614e49565b9550614e7a9050868201614dd0565b93505050509250929050565b5f805f60608486031215614e98575f80fd5b8335614ea381614dbc565b92506020840135614eb381614dbc565b929592945050506040919091013590565b5f5b83811015614ede578181015183820152602001614ec6565b50505f910152565b5f8151808452614efd816020860160208601614ec4565b601f01601f19169290920160200192915050565b831515815282151560208201526060604082015260018060a01b0382511660608201525f6020830151604060808401526120e060a0840182614ee6565b5f805f8060608587031215614f61575f80fd5b843593506020850135925060408501356001600160401b0380821115614f85575f80fd5b818701915087601f830112614f98575f80fd5b813581811115614fa6575f80fd5b886020828501011115614fb7575f80fd5b95989497505060200194505050565b5f8060408385031215614fd7575f80fd5b82356001600160401b0380821115614fed575f80fd5b908401906101208287031215615001575f80fd5b90925060208401359080821115615016575f80fd5b50830160408186031215615028575f80fd5b809150509250929050565b5f6101608284031215615044575f80fd5b50919050565b5f6020828403121561505a575f80fd5b81356001600160401b0381111561506f575f80fd5b61507b84828501615033565b949350505050565b5f60208284031215615093575f80fd5b81356004811061069f575f80fd5b8015158114611102575f80fd5b5f82601f8301126150bd575f80fd5b813560206150cd614d1c83614d9a565b82815260059290921b840181019181810190868411156150eb575f80fd5b8286015b8481101561510657803583529183019183016150ef565b509695505050505050565b5f8060408385031215615122575f80fd5b82356001600160401b0380821115615138575f80fd5b818501915085601f83011261514b575f80fd5b8135602061515b614d1c83614d9a565b82815260059290921b84018101918181019089841115615179575f80fd5b948201945b838610156151a0578535615191816150a1565b8252948201949082019061517e565b965050860135925050808211156151b5575f80fd5b50610988858286016150ae565b5f8083601f8401126151d2575f80fd5b5081356001600160401b038111156151e8575f80fd5b6020830191508360208260051b8501011115615202575f80fd5b9250929050565b5f805f805f806060878903121561521e575f80fd5b86356001600160401b0380821115615234575f80fd5b6152408a838b016151c2565b90985096506020890135915080821115615258575f80fd5b6152648a838b016151c2565b9096509450604089013591508082111561527c575f80fd5b5061528989828a016151c2565b979a9699509497509295939492505050565b5f602082840312156152ab575f80fd5b813561069f81614dbc565b5f805f80604085870312156152c9575f80fd5b84356001600160401b03808211156152df575f80fd5b6152eb888389016151c2565b90965094506020870135915080821115615303575f80fd5b50615310878288016151c2565b95989497509550505050565b5f805f6060848603121561532e575f80fd5b833561533981614dbc565b9250602084013561534981614dbc565b9150604084013561535981614dbc565b809150509250925092565b5f805f60408486031215615376575f80fd5b8335615381816150a1565b925060208401356001600160401b0381111561539b575f80fd5b6153a7868287016151c2565b9497909650939450505050565b5f80604083850312156153c5575f80fd5b8251915060208301516001600160401b038111156153e1575f80fd5b8301601f810185136153f1575f80fd5b80516153ff614d1c82614ca3565b818152866020838501011115615413575f80fd5b615424826020830160208601614ec4565b8093505050509250929050565b5f8060408385031215615442575f80fd5b825161544d81614dbc565b6020939093015192949293505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215615481575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016154ad576154ad615488565b5060010190565b600181811c908216806154c857607f821691505b60208210810361504457634e487b7160e01b5f52602260045260245ffd5b8181038181111561157d5761157d615488565b634e487b7160e01b5f52602160045260245ffd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b5f808335601e19843603018112615559575f80fd5b8301803591506001600160401b03821115615572575f80fd5b602001915036819003821315615202575f80fd5b818382375f9101908152919050565b602081525f61069f6020830184614ee6565b601f821115610821575f81815260208120601f850160051c810160208610156155cd5750805b601f850160051c820191505b818110156117de578281556001016155d9565b81516001600160401b0381111561560557615605614c5f565b6156198161561384546154b4565b846155a7565b602080601f83116001811461564c575f84156156355750858301515b5f19600386901b1c1916600185901b1785556117de565b5f85815260208120601f198616915b8281101561567a5788860151825594840194600190910190840161565b565b508582101561569757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b8183525f60208085019450825f5b858110156156e35781356156c881614dbc565b6001600160a01b0316875295820195908201906001016156b5565b509495945050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f808335601e1984360301811261572b575f80fd5b83016020810192503590506001600160401b03811115615749575f80fd5b803603821315615202575f80fd5b606080825281018690525f6001600160fb1b03871115615775575f80fd5b8660051b80896080850137808301905060206080848303018185015261579f60808301888a6156a7565b84810360408601528581529150808201600586901b83018201875f5b888110156157f557858303601f190184526157d6828b615716565b6157e18582846156ee565b9587019594505050908401906001016157bb565b50909c9b505050505050505050505050565b602081525f61507b6020830184866156a7565b604081525f61582d6040830185876156a7565b8281036020848101919091528451808352858201928201905f5b81811015615865578451151583529383019391830191600101615847565b509098975050505050505050565b60ff60f81b81526bffffffffffffffffffffffff198460601b1660018201528260158201525f82516158ac816035850160208701614ec4565b91909101603501949350505050565b5f82516158cc818460208701614ec4565b9190910192915050565b5f602082840312156158e6575f80fd5b815161069f816150a1565b5f808335601e19843603018112615906575f80fd5b8301803591506001600160401b0382111561591f575f80fd5b6020019150600581901b3603821315615202575f80fd5b5f60408201848352602060408185015281855180845260608601915082870193505f5b8181101561597e5784516001600160a01b031683529383019391830191600101615959565b5090979650505050505050565b5f602080838503121561599c575f80fd5b82516001600160401b038111156159b1575f80fd5b8301601f810185136159c1575f80fd5b80516159cf614d1c82614d9a565b81815260059190911b820183019083810190878311156159ed575f80fd5b928401925b82841015614470578351825292840192908401906159f2565b602080825260139082015272151bdbc81b1a5d1d1b19481c9958d95a5d9959606a1b604082015260600190565b602081525f8235615a4881614dbc565b6001600160a01b0316602083810191909152615a6690840184615716565b604080850152615a7a6060850182846156ee565b95945050505050565b60208082526017908201527f496e76616c696420777261707065642061646472657373000000000000000000604082015260600190565b8082018082111561157d5761157d615488565b5f8351615ade818460208801614ec4565b6508ae4e4dee4560d31b9083019081528351615b01816006840160208801614ec4565b602960f81b60069290910191820152600701949350505050565b5f8351615b2c818460208801614ec4565b650a0c2dcd2c6560d31b9083019081528351615b01816006840160208801614ec4565b5f8351615b60818460208801614ec4565b670aadcd6dcdeeedc560c31b9083019081528351615b85816008840160208801614ec4565b602960f81b60089290910191820152600901949350505050565b848152836020820152826040820152608060608201525f6120e06080830184614ee6565b6001600160a01b03831681526040810160048310615bef57634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b80516001600160701b0381168114614ddb575f80fd5b5f805f60608486031215615c24575f80fd5b615c2d84615bfc565b9250615c3b60208501615bfc565b9150604084015163ffffffff81168114615359575f80fd5b84815283602082015260018060a01b0383166040820152608060608201525f6120e06080830184614ee6565b5f60208284031215615c8f575f80fd5b815161069f81614dbc565b5f60208284031215615caa575f80fd5b815162ffffff8116811461069f575f80fd5b602080825260089082015267109859081c1bdbdb60c21b604082015260600190565b6001600160a01b03818116838216019080821115615cfe57615cfe615488565b5092915050565b828152604060208201525f61507b6040830184614ee6565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190525f9061447090830184614ee6565b5f8060408385031215615d68575f80fd5b505080516020909101519092909150565b5f600160ff1b8201615d8d57615d8d615488565b505f0390565b6001600160a01b03828116828216039080821115615cfe57615cfe615488565b634e487b7160e01b5f52601260045260245ffd5b5f82615dd557615dd5615db3565b500690565b808202811582820484141761157d5761157d615488565b5f82615dff57615dff615db3565b50049056fea26469706673582212204f637f4c295074f72cbc3c36d09625f5fdf3a44c7aff79ff9b262a8ea106cf0864736f6c63430008140033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
0x07964f135f276412b3182a3B2407b8dd45000000
Net Worth in USD
$9,550,625,908.01

Net Worth in ETH
3,241,887.063491

Token Allocations
BTCBRUP 89.90%
LUIGI 9.95%
UXLINK 0.08%
Others 0.07%
Chain Token Portfolio % Price Amount Value
BSC89.90%$0.0045711,878,334,343,570.2532$8,586,120,851.79
BSC9.95%$0.0004672,035,906,651,463.53$950,392,728.49
BSC0.06%$0.009053646,679,869.259$5,854,069.52
BSC<0.01%$0.00907319,328,180.0472$175,372.7
BSC<0.01%$0.0001061,250,185,326.2501$131,944.56
BSC<0.01%$0.99948122,321.2229$122,257.62
BSC<0.01%$992.8327.0959$26,901.62
BSC<0.01%$0.9998014,589.6484$4,588.74
BSC<0.01%$0.16737326,797.1213$4,485.11
BSC<0.01%$13,122.8302$3,128.77
BSC<0.01%$0.16714812,153.0639$2,031.36
BSC<0.01%$3,440.730.4573$1,573.4
BSC<0.01%$0.3278614,729.9935$1,550.78
BSC<0.01%$0.06357623,775.8454$1,511.57
BSC<0.01%$0.006189243,637.4561$1,507.78
BSC<0.01%$0.00006521,782,620.4939$1,413.26
BSC<0.01%$0.9998131,364.1895$1,363.93
BSC<0.01%$0.3148994,258.8696$1,341.11
BSC<0.01%$0.9989871,329.5952$1,328.25
BSC<0.01%$0.07557215,557.2693$1,175.69
BSC<0.01%$0.1600597,138.9583$1,142.65
BSC<0.01%$0.0006581,676,459.2397$1,102.79
BSC<0.01%$3.27322.0096$1,052.68
BSC<0.01%$0.03143932,817.4779$1,031.74
BSC<0.01%$2.4421.2552$1,012.89
BSC<0.01%$0.1226137,852.3122$962.8
BSC<0.01%$1.06713.6066$759.27
BSC<0.01%$2.13354.4855$755.05
BSC<0.01%$1.06705.9868$750.11
BSC<0.01%$0.1807034,143.2573$748.7
BSC<0.01%$0.998068740.2224$738.79
BSC<0.01%$0.00875384,270.5963$737.63
BSC<0.01%$1735.4287$735.85
BSC<0.01%$0.01392852,827.497$735.77
BSC<0.01%$1.06676.5803$716.67
BSC<0.01%<$0.000001212,006,500,650.0792$696.7
BSC<0.01%$1.1593.8917$653.28
BSC<0.01%$991.220.656$650.22
BSC<0.01%$0.2104242,949.1274$620.57
BSC<0.01%$0.1740693,491.8651$607.83
BSC<0.01%$135.264.4398$600.52
BSC<0.01%$0.0002832,104,124.3539$595.59
BSC<0.01%$0.0002282,539,122.9163$577.83
BSC<0.01%$0.1233864,544.4946$560.73
BSC<0.01%$0.0002352,361,914.9671$554.93
BSC<0.01%$0.2737881,927.8193$527.81
BSC<0.01%$3.39149.3733$507.06
BSC<0.01%$0.0032156,889.5036$502.12
BSC<0.01%$5.4691.2437$498.23
BSC<0.01%$1.3368.2968$479.8
BSC<0.01%$2.16218.064$470.41
BSC<0.01%$0.00877853,347.5899$468.31
BSC<0.01%$0.2744521,694.1751$464.97
BSC<0.01%$0.585148738.8123$432.31
BSC<0.01%$7.7652.351$406.39
BSC<0.01%<$0.0000019,073,940,480.7959$378.27
BSC<0.01%$0.00003211,169,501.8159$361.45
BSC<0.01%$0.00181197,686.9672$357.73
BSC<0.01%$0.0000134,579,585.888$348.87
BSC<0.01%$0.2505731,327.3364$332.59
BSC<0.01%<$0.000001345,992,927,636.7755$311.01
BSC<0.01%$5.9849.8676$298.06
BSC<0.01%$1.68172.675$290.09
BSC<0.01%$2.49111.1685$276.81
BSC<0.01%<$0.0000017,986,663,912.8886$265.52
BSC<0.01%$0.0470925,592.0905$263.35
BSC<0.01%$0.160291,575.114$252.48
BSC<0.01%$0.0466225,403.1084$251.9
BSC<0.01%$162.091.5223$246.74
BSC<0.01%$0.00359867,910.4403$244.36
BSC<0.01%$0.0001481,574,303.8615$233.63
BSC<0.01%$0.077712,929.2493$227.63
BSC<0.01%$564.090.4025$227.02
BSC<0.01%$0.00381259,484.5206$226.77
BSC<0.01%$0.00401853,785.5503$216.11
BSC<0.01%$0.1326671,616.4147$214.44
BSC<0.01%$15.812.7959$202.17
BSC<0.01%$0.004,747.9953$0.00
BSC<0.01%$0.000931196,231.98$182.74
BSC<0.01%$0.0236377,672.9483$181.37
BSC<0.01%$101.131.7905$181.06
BSC<0.01%$102,581.830.00169959$174.35
BSC<0.01%$0.01574710,991.5566$173.08
BSC<0.01%$0.01137215,058.5057$171.24
BSC<0.01%<$0.000001440,577,827,353.4461$168.62
BSC<0.01%$0.00816520,253.2689$165.37
BSC<0.01%$0.0345884,754.5251$164.45
BSC<0.01%$2.3365.5796$152.55
BSC<0.01%$0.0284145,194.2302$147.59
BSC<0.01%$0.263717555.6978$146.55
BSC<0.01%<$0.0000011,370,540,979.9084$133.67
BSC<0.01%$0.0921891,404.3837$129.47
BSC<0.01%$0.000474271,874.4751$128.82
BSC<0.01%$0.00723517,125.4737$123.9
BSC<0.01%$0.404339302.2655$122.22
BSC<0.01%<$0.00000122,875,845,542.8484$121.29
BSC<0.01%$0.22044545.9352$120.35
BSC<0.01%$0.000767154,251.1275$118.29
BSC<0.01%$0.00000523,819,736.4694$111
BSC<0.01%$0.0178586,214.697$110.98
BSC<0.01%$0.0183125,953.5957$109.02
BSC<0.01%$0.000248412,239.2208$102.31
BSC<0.01%$0.0460382,207.4275$101.63
BSC<0.01%$134.740.7374$99.36
BSC<0.01%<$0.000001269,576,552.6412$98.35
BSC<0.01%$0.00517318,331.6343$94.83
BSC<0.01%$0.291261322.2292$93.85
BSC<0.01%$0.0270723,344.9852$90.56
BSC<0.01%$1.3466.5887$89.23
BSC<0.01%$0.112009789.904$88.48
BSC<0.01%$0.0022838,747.2038$88.35
BSC<0.01%<$0.00000187,687,109,790.8215$87.69
BSC<0.01%$0.0599041,409.4846$84.43
BSC<0.01%$0.0097558,518.9074$83.1
BSC<0.01%$0.0399012,045.4989$81.62
BSC<0.01%<$0.00000118,953,595,658,215.449$78.98
BSC<0.01%$503.020.1564$78.69
BSC<0.01%$0.262913297.2991$78.16
BSC<0.01%$0.0103417,462.4362$77.17
BSC<0.01%$0.000273281,899.8674$76.96
BSC<0.01%$0.0431651,636.5735$70.64
BSC<0.01%$1.6542.7193$70.49
BSC<0.01%$0.211545331.7927$70.19
BSC<0.01%$0.437176156.1819$68.28
BSC<0.01%$17.93.7231$66.66
BSC<0.01%$0.0184573,569.0798$65.88
BSC<0.01%$2.0931.4147$65.66
BSC<0.01%$0.0192673,305.5058$63.69
BSC<0.01%$0.0124745,023.7545$62.67
BSC<0.01%$0.0008276,232.6214$62.54
BSC<0.01%$0.0149644,001.562$59.88
BSC<0.01%$0.222802264.6903$58.97
BSC<0.01%<$0.0000012,166,638,946.0523$58.79
BSC<0.01%$0.00070482,254.6982$57.95
BSC<0.01%$0.00000143,524,637.937$54.84
BSC<0.01%$0.0000087,050,373.3399$54.73
BSC<0.01%$0.0192662,813.8849$54.21
BSC<0.01%$0.00528310,114.9432$53.44
BSC<0.01%$0.75149170.3194$52.84
BSC<0.01%$0.00073371,565.6031$52.47
BSC<0.01%$0.073822697.3306$51.48
BSC<0.01%$0.0114584,354.165$49.89
BSC<0.01%<$0.0000017,812,641,452.2156$49.83
BSC<0.01%$0.0086965,705.0056$49.61
BSC<0.01%$0.188397258.2874$48.66
BSC<0.01%$17.042.7972$47.66
BSC<0.01%$0.07189659.9941$47.45
BSC<0.01%$0.0000067,489,607.3333$46.29
BSC<0.01%$1,768.610.0258$45.72
BSC<0.01%$0.00114639,435.2759$45.2
BSC<0.01%<$0.00000113,036,136,983.0204$44.84
BSC<0.01%$0.00292915,153.0157$44.39
BSC<0.01%$0.99713842.6682$42.55
BSC<0.01%$0.47736788.4325$42.21
BSC<0.01%$0.030021,382.3015$41.5
BSC<0.01%$1.4527.662$40.11
BSC<0.01%$0.0212311,865.6845$39.61
BSC<0.01%$0.00151225,986.8703$39.3
BSC<0.01%$0.0111053,424.325$38.03
BSC<0.01%$105,040.320.00036192$38.02
BSC<0.01%$0.000053698,149.5073$37.08
BSC<0.01%$0.106721341.4244$36.44
BSC<0.01%$0.0025314,396.1943$36.42
BSC<0.01%<$0.0000016,636,503,693.466$35.55
BSC<0.01%$0.000131260,704.7706$34.04
BSC<0.01%$206.930.161$33.33
BSC<0.01%$0.043679702.4102$30.68
BSC<0.01%$0.01971,550.113$30.54
BSC<0.01%$0.057313532.1931$30.5
BSC<0.01%$0.00007424,882.6353$29.81
BSC<0.01%$0.0172831,719.1966$29.71
BSC<0.01%$0.00235212,604.5608$29.64
BSC<0.01%$0.29884196.0161$28.69
BSC<0.01%$0.047339595.3369$28.18
BSC<0.01%<$0.00000173,352,685,368.821$27.59
BSC<0.01%$1.2820.9696$26.86
BSC<0.01%$0.00080732,326.8448$26.09
BSC<0.01%$0.00065139,298.8165$25.57
BSC<0.01%$0.075012336.3758$25.23
BSC<0.01%$0.00133518,831.1397$25.14
BSC<0.01%$0.088377282.68$24.98
BSC<0.01%$0.00081728,844.0148$23.56
BSC<0.01%$0.0036676,378.0607$23.39
BSC<0.01%$0.024693944.7406$23.33
BSC<0.01%$0.000068345,127.7962$23.32
BSC<0.01%<$0.000001168,389,695.7018$22.46
BSC<0.01%$0.29957974.369$22.28
BSC<0.01%$0.9985722.2107$22.18
BSC<0.01%$47.990.4403$21.13
BSC<0.01%$0.000078265,940.7935$20.82
BSC<0.01%<$0.00000148,197,678,529.6276$20.78
BSC<0.01%<$0.00000126,184,086,798.5815$19.85
BSC<0.01%$0.98317420.133$19.79
BSC<0.01%$102,2830.00018753$19.18
BSC<0.01%$0.128271149.5045$19.18
BSC<0.01%$2.77.0778$19.09
BSC<0.01%$0.046168412.6976$19.05
BSC<0.01%$0.082874228.4243$18.93
BSC<0.01%$0.019173975.2464$18.7
BSC<0.01%$0.04768392.0589$18.69
BSC<0.01%$0.0004639,971.4072$18.37
BSC<0.01%$0.00444,195.8957$0.00
BSC<0.01%$0.000081210,332.2523$17.13
BSC<0.01%$0.04735358.1428$16.96
BSC<0.01%$0.0065672,531.4782$16.62
BSC<0.01%$0.000135117,668.6861$15.91
BSC<0.01%$0.030111501.9121$15.11
BSC<0.01%$0.0023296,427.5953$14.97
BSC<0.01%$0.0020977,090.7072$14.87
BSC<0.01%$0.00061224,268.4368$14.86
BSC<0.01%$0.138984106.4756$14.8
BSC<0.01%$0.006482,182.7037$14.14
BSC<0.01%$0.36381338.7304$14.09
BSC<0.01%$0.0045713,000$13.71
BSC<0.01%$0.045118300.7649$13.57
BSC<0.01%$0.0058132,323.4507$13.51
BSC<0.01%$0.51078626.4126$13.49
BSC<0.01%$0.99691413.3121$13.27
BSC<0.01%$0.0074121,763.976$13.08
BSC<0.01%$0.00122410,667.2877$13.05
BSC<0.01%<$0.000001210,677,420,569$13.05
BSC<0.01%$0.00037434,581.8217$12.95
BSC<0.01%$0.0111791,074.3955$12.01
BSC<0.01%$0.000026455,369.231$11.95
BSC<0.01%$0.00499.52$0.00
BSC<0.01%$0.0049892,342.7189$11.69
BSC<0.01%$2.494.6397$11.55
BSC<0.01%$0.20557755.8739$11.49
BSC<0.01%$0.06179180.3714$11.15
BSC<0.01%$0.0057991,915.854$11.11
BSC<0.01%$0.00030735,415.9907$10.87
BSC<0.01%<$0.00000121,785,840.2127$10.79
BSC<0.01%$0.001238,728.6695$10.74
BSC<0.01%$0.036356285.3011$10.37
BSC<0.01%$0.0001472,846.7158$10.23
BSC<0.01%$0.0000025,026,423.6648$10.2
BSC<0.01%$0.0025893,908.2106$10.12
BSC<0.01%$0.00066214,922.767$9.87
BSC<0.01%$0.0026963,522.7473$9.5
BSC<0.01%$0.000035267,452.4711$9.4
BSC<0.01%<$0.000001121,041,839,009.0423$9.34
BSC<0.01%<$0.00000155,064,812.4308$9.24
BSC<0.01%<$0.0000016,966,633,603,079.3428$9.18
BSC<0.01%$0.18448749.4783$9.13
BSC<0.01%$169.550.0535$9.08
BSC<0.01%$0.9992999.03$9.02
BSC<0.01%<$0.000001280,723,561.6891$8.93
BSC<0.01%$0.0050041,758.2808$8.8
BSC<0.01%$0.017088508.7779$8.69
BSC<0.01%<$0.00000199,581,255,766.4016$8.41
BSC<0.01%$0.034512240.8671$8.31
BSC<0.01%<$0.000001357,725,988.9269$8.25
BSC<0.01%$0.60943912.9094$7.87
BSC<0.01%$0.006421,221.0664$7.84
BSC<0.01%$0.0000032,641,735.0948$7.71
BSC<0.01%<$0.000001712,325,955.5865$7.58
BSC<0.01%$0.024444305.8301$7.48
BSC<0.01%$4.711.5846$7.46
BSC<0.01%$7.041.0565$7.44
BSC<0.01%$0.0042021,640.206$6.89
BSC<0.01%<$0.0000012,472,897,865.8433$6.81
BSC<0.01%$0.2899823.1224$6.71
BSC<0.01%$0.000025254,391.8301$6.47
BSC<0.01%$0.000039162,834.0723$6.34
BSC<0.01%$0.0000014,961,895.0646$6.25
BSC<0.01%<$0.00000111,304,431,117.7761$6.18
BSC<0.01%$0.0017673,478.7517$6.15
BSC<0.01%$0.00040415,208.7982$6.14
BSC<0.01%$0.27137422.3399$6.06
BSC<0.01%$2.732.1442$5.85
BSC<0.01%$0.0000041,370,599.5295$5.84
BSC<0.01%$0.000033174,234.7907$5.8
BSC<0.01%$0.030733187.6006$5.77
BSC<0.01%$0.0000023,082,242.319$5.76
BSC<0.01%$0.000038148,567.6037$5.69
BSC<0.01%$6.780.8389$5.69
BSC<0.01%$0.052412106.7642$5.6
BSC<0.01%$0.0010255,455.4479$5.59
BSC<0.01%$0.0006898,106.121$5.58
BSC<0.01%$0.0017893,091.9106$5.53
BSC<0.01%$0.0028.9076$0.00
BSC<0.01%$0.009123599.4118$5.47
BSC<0.01%$3.031.802$5.47
BSC<0.01%<$0.0000011,714,803,508.7275$5.46
BSC<0.01%$0.00005696,768.9652$5.45
BSC<0.01%<$0.000001599,314,803.231$5.37
BSC<0.01%<$0.00000117,819,108,138.9567$5.35
BSC<0.01%<$0.0000016,201,639,827,513.2422$5.28
BSC<0.01%$4.471.1458$5.13
BSC<0.01%<$0.00000113,458,088.401$5.12
BSC<0.01%$0.00341.2754$0.00
BSC<0.01%$0.0008076,246.7262$5.04
BSC<0.01%$0.000013375,606.8269$4.95
BSC<0.01%$0.0000022,494,790.9922$4.89
BSC<0.01%$0.0012124,028.2007$4.88
BSC<0.01%$0.0000014,271,183.9725$4.87
BSC<0.01%$0.0012283,822.3613$4.69
BSC<0.01%$0.0006447,080.6127$4.56
BSC<0.01%$0.00037412,139.9381$4.54
BSC<0.01%$0.0006067,269.3438$4.4
BSC<0.01%$0.0020252,167.8372$4.39
BSC<0.01%$2.991.4034$4.2
BSC<0.01%$0.006516638.3614$4.16
BSC<0.01%$0.00018522,439.7431$4.14
BSC<0.01%$0.06907258.6343$4.05
BSC<0.01%$0.4480138.993$4.03
BSC<0.01%<$0.00000119,546,821,507.8295$3.91
BSC<0.01%$0.036271107.5482$3.9
BSC<0.01%$0.04669482.3212$3.84
BSC<0.01%<$0.0000017,933,986.4801$3.81
BSC<0.01%$0.06866554.7088$3.76
BSC<0.01%$0.009,835.3504$0.00
BSC<0.01%<$0.0000014,677,098,491.6339$3.62
BSC<0.01%<$0.00000113,124,181,600.0998$3.59
BSC<0.01%$0.0020411,735.7237$3.54
BSC<0.01%$0.0031451,116.2065$3.51
BSC<0.01%<$0.00000179,390,881,531,963,360$3.41
BSC<0.01%$0.374219.0573$3.39
BSC<0.01%$0.007942413.075$3.28
BSC<0.01%<$0.00000137,316,129,828,595.891$3.26
BSC<0.01%$0.000018181,228.5456$3.18
BSC<0.01%$33.980.0923$3.14
BSC<0.01%<$0.0000012,402,660,226.179$3.11
BSC<0.01%$0.0012812,393.2856$3.07
BSC<0.01%$0.979863.106$3.04
BSC<0.01%$0.011055274.3849$3.03
BSC<0.01%$0.011767256.3232$3.02
BSC<0.01%$0.00008435,865$3.01
BSC<0.01%$1.192.5154$2.99
BSC<0.01%<$0.00000145,220,347.0869$2.93
BSC<0.01%$0.00017216,957.1796$2.92
BSC<0.01%$2.930.9772$2.86
BSC<0.01%$1,050.070.00271527$2.85
BSC<0.01%$0.000005531,783.3701$2.84
BSC<0.01%$115.470.0244$2.82
BSC<0.01%$0.000013220,866.0264$2.78
BSC<0.01%<$0.0000016,859,382.9234$2.78
BSC<0.01%$0.00026310,500$2.76
BSC<0.01%$0.6409574.299$2.76
BSC<0.01%$0.0000646,043.2$2.75
BSC<0.01%$0.0001124,854.007$2.74
BSC<0.01%$0.00020313,456.7745$2.73
BSC<0.01%$1.821.4849$2.7
BSC<0.01%$0.00013120,573.8753$2.7
BSC<0.01%$0.000025108,796.5888$2.68
BSC<0.01%$3,983.590.00066162$2.64
BSC<0.01%<$0.000001141,213,450.8251$2.63
BSC<0.01%$0.20482412.6047$2.58
BSC<0.01%$0.1016424.9564$2.54
BSC<0.01%<$0.0000017,345,159,593,723.4248$2.54
BSC<0.01%$0.00004161,317.9346$2.53
BSC<0.01%$0.00592.4688$0.00
BSC<0.01%$0.13416118.3295$2.46
BSC<0.01%<$0.000001814,346,340,207,018,620$2.44
BSC<0.01%<$0.0000013,045,296,756.6581$2.44
BSC<0.01%$0.10270723.6114$2.43
BSC<0.01%$1,091.490.00222108$2.42
BSC<0.01%$0.09334125.8191$2.41
BSC<0.01%<$0.0000015,889,408.7601$2.39
BSC<0.01%$0.017016139.4934$2.37
BSC<0.01%$0.07594730.0336$2.28
BSC<0.01%<$0.0000018,184,815,767.2269$2.27
BSC<0.01%$0.0851526.5512$2.26
BSC<0.01%<$0.0000011,559,566,407.2956$2.18
BSC<0.01%$0.000514,273.7649$2.18
BSC<0.01%$0.0013071,658.1328$2.17
BSC<0.01%<$0.00000120,444,766.7533$2.16
BSC<0.01%$0.08323225.7432$2.14
BSC<0.01%$0.12092417.6687$2.14
BSC<0.01%$0.6501343.2785$2.13
BSC<0.01%$0.037854.1968$2.05
BSC<0.01%<$0.0000013,084,183,284,393.8057$2.05
BSC<0.01%$0.13012415.4373$2.01
BSC<0.01%$0.007389270.1276$2
BSC<0.01%$0.10424318.97$1.98
BSC<0.01%$0.0005333,690.7158$1.97
BSC<0.01%$0.05321236.1314$1.92
BSC<0.01%$0.00199959.5571$1.91
BSC<0.01%<$0.000001186,934,068.8655$1.9
BSC<0.01%$0.10501917.5187$1.84
BSC<0.01%$0.15342711.3858$1.75
BSC<0.01%$0.8443762.0461$1.73
BSC<0.01%$0.3211035.3183$1.71
BSC<0.01%$0.002215770.0908$1.71
BSC<0.01%<$0.0000016,873,187,255.6423$1.69
BSC<0.01%$0.000004413,934.7458$1.65
BSC<0.01%$0.001834898.9393$1.65
BSC<0.01%$0.010878149.9248$1.63
BSC<0.01%$0.007497215.4057$1.61
BSC<0.01%<$0.00000112,859,411.1602$1.61
BSC<0.01%$0.07808720.3233$1.59
BSC<0.01%$0.010202153.3659$1.56
BSC<0.01%$24.170.0641$1.55
BSC<0.01%$0.011397134.6428$1.53
BSC<0.01%$8.010.1897$1.52
BSC<0.01%$0.4906543.0915$1.52
BSC<0.01%$100.650.0151$1.52
BSC<0.01%$0.0277954.5035$1.51
BSC<0.01%<$0.00000114,960,832,009.3906$1.5
BSC<0.01%$0.005995247.9638$1.49
BSC<0.01%$0.1732968.5362$1.48
BSC<0.01%$0.08224417.7383$1.46
BSC<0.01%<$0.000001638,288,781.2165$1.44
BSC<0.01%$0.13548310.6287$1.44
BSC<0.01%$0.0006652,152.207$1.43
BSC<0.01%$0.00006422,334.7759$1.42
BSC<0.01%$0.1756758.0267$1.41
BSC<0.01%$0.007747181.1108$1.4
BSC<0.01%$0.01562288.7191$1.39
BSC<0.01%<$0.0000012,021,919,473.4743$1.38
BSC<0.01%$2.810.4898$1.38
BSC<0.01%$0.5497812.4326$1.34
BSC<0.01%$0.0003583,712.9474$1.33
BSC<0.01%$0.00007417,882.408$1.33
BSC<0.01%$0.3434223.7906$1.3
BSC<0.01%$0.00001130,022.5514$1.29
BSC<0.01%<$0.00000121,650,325,277.9066$1.28
BSC<0.01%$0.8815191.4548$1.28
BSC<0.01%$0.0002544,954.8276$1.26
BSC<0.01%$0.03582134.2499$1.23
BSC<0.01%$0.01285693.6655$1.2
BSC<0.01%$0.008017150.0262$1.2
BSC<0.01%<$0.0000019,348,666,548.6424$1.18
BSC<0.01%$0.1553837.5317$1.17
BSC<0.01%<$0.000001700,671,043.7164$1.16
BSC<0.01%$0.003846300.027$1.15
BSC<0.01%$101,9040.00001131$1.15
BSC<0.01%<$0.000001248,254,193,256.7922$1.15
BSC<0.01%$0.0001786,447.4167$1.15
BSC<0.01%$0.0009691,165.8571$1.13
BSC<0.01%$0.004608237.5514$1.09
BSC<0.01%$0.003048357.2337$1.09
BSC<0.01%$0.01315682.3751$1.08
BSC<0.01%<$0.00000111,769,576,943,651.881$1.08
BSC<0.01%$0.000009124,789.7298$1.06
BSC<0.01%$0.02479842.5078$1.05
BSC<0.01%$0.05941917.5446$1.04
BSC<0.01%$0.005811177.6449$1.03
BSC<0.01%$0.01454269.9596$1.02
BSC<0.01%$0.002505.3305$1.01
BSC<0.01%$0.007773129.9033$1.01
BSC<0.01%$0.008772113.6449$0.9969
BSC<0.01%$0.0143469.4902$0.9965
BSC<0.01%$0.007104134.0121$0.9519
BSC<0.01%<$0.000001245,358,316.7177$0.9404
BSC<0.01%$0.001506610.7379$0.9195
BSC<0.01%$0.08299311.0787$0.9194
BSC<0.01%$0.1914964.7708$0.9135
BSC<0.01%$0.0001884,863.097$0.9118
BSC<0.01%$0.0005151,762.2264$0.9068
BSC<0.01%$0.6751061.3258$0.895
BSC<0.01%$0.01739450.8436$0.8843
BSC<0.01%$0.00260,935.9868$0.00
BSC<0.01%$0.04482119.6018$0.8785
BSC<0.01%$0.002704321.7384$0.8698
BSC<0.01%$0.1006748.5475$0.8605
BSC<0.01%$3,416.630.00024782$0.8467
BSC<0.01%<$0.000001110,649,887.0958$0.8453
BSC<0.01%$0.00001651,564.4239$0.8425
BSC<0.01%$0.104318.0639$0.8411
BSC<0.01%$0.3026242.7371$0.8283
BSC<0.01%$0.0001744,765.7317$0.8274
BSC<0.01%<$0.00000129,858,076.0791$0.8245
BSC<0.01%$0.007948102.4485$0.8142
BSC<0.01%<$0.000001129,299,757,229.9608$0.8124
BSC<0.01%$0.00007211,107.8358$0.8002
BSC<0.01%$0.6707021.1925$0.7998
BSC<0.01%$0.000117,138.8793$0.7871
BSC<0.01%$0.0000869,035.3464$0.7738
BSC<0.01%$5.110.15$0.7659
BSC<0.01%<$0.000001819,068,787.5529$0.7631
BSC<0.01%$0.00002234,993.0711$0.7585
BSC<0.01%$0.00007510,002.292$0.7544
BSC<0.01%$0.0912898.2267$0.751
BSC<0.01%$10.741$0.741
BSC<0.01%$24.650.0295$0.7261
BSC<0.01%<$0.000001646,968,766,934.587$0.726
BSC<0.01%$0.002187327.6847$0.7166
BSC<0.01%$0.01188559.8595$0.7114
BSC<0.01%$0.00421,613,477.3031$0.00
BSC<0.01%$0.00909377.5522$0.7051
BSC<0.01%$0.001386504.2852$0.6988
BSC<0.01%$0.00782689.2412$0.6983
BSC<0.01%<$0.000001756,459,403.8723$0.6966
BSC<0.01%$0.02251530.5224$0.6872
BSC<0.01%$0.00002923,417.6149$0.6776
BSC<0.01%$0.1808683.7034$0.6698
BSC<0.01%$0.00004116,388.1872$0.6679
BSC<0.01%$0.3958541.6717$0.6617
BSC<0.01%$0.001801361.935$0.6519
BSC<0.01%$0.05828811.0856$0.6461
BSC<0.01%$0.00159398.3508$0.6333
BSC<0.01%$0.00528119.9052$0.633
BSC<0.01%$0.003418184.847$0.6317
BSC<0.01%$0.001541406.8337$0.6269
BSC<0.01%$0.0787547.9276$0.6243
BSC<0.01%$0.0000659,638.3804$0.6239
BSC<0.01%$0.02998420.2412$0.6069
BSC<0.01%$0.0644169.3903$0.6048
BSC<0.01%<$0.00000114,193,408$0.6039
BSC<0.01%$0.03311418.108$0.5996
BSC<0.01%<$0.00000156,225,834,037.5503$0.5899
BSC<0.01%$0.00980260.1517$0.5896
BSC<0.01%<$0.00000118,294,100.5993$0.5834
BSC<0.01%$0.0002612,183.8748$0.5693
BSC<0.01%$0.0621759.1412$0.5683
BSC<0.01%$1.470.3839$0.5642
BSC<0.01%<$0.000001881,447,687.5734$0.5608
BSC<0.01%$0.03013918.5214$0.5582
BSC<0.01%$1.340.4154$0.5565
BSC<0.01%$0.02717220.3668$0.5534
BSC<0.01%$0.002607211.678$0.5518
BSC<0.01%<$0.00000129,754,448,587,467.563$0.5497
BSC<0.01%<$0.00000113,775,827.2748$0.5482
BSC<0.01%$0.0001892,899.9677$0.5477
BSC<0.01%$0.1462593.618$0.5291
BSC<0.01%$0.1003795.2365$0.5256
BSC<0.01%$0.000003180,994.6762$0.5159
BSC<0.01%$0.01256540.3271$0.5067
BSC<0.01%$0.15673.0979$0.4854
BSC<0.01%<$0.0000013,625,707.8533$0.4852
BSC<0.01%<$0.0000011,194,038,228$0.4824
BSC<0.01%$0.01623729.4185$0.4776
BSC<0.01%$0.1152314.0801$0.4701
BSC<0.01%$0.00473198.6756$0.4668
BSC<0.01%$0.01892724.5239$0.4641
BSC<0.01%$0.406321.1395$0.463
BSC<0.01%<$0.00000114,359,949,874,294.195$0.4576
BSC<0.01%$0.0002431,852.5827$0.4496
BSC<0.01%<$0.000001448,902,753.858$0.4489
BSC<0.01%$0.003236138.225$0.4472
BSC<0.01%<$0.000001244,184,082.8045$0.4434
BSC<0.01%$0.0004431,000.871$0.4432
BSC<0.01%$0.00124356.0188$0.4415
BSC<0.01%$0.233881.8796$0.4395
BSC<0.01%<$0.00000197,266,066.4849$0.4376
BSC<0.01%$0.1916882.2478$0.4308
BSC<0.01%$0.0476018.8567$0.4215
BSC<0.01%<$0.00000116,031,999.0926$0.4163
BSC<0.01%<$0.0000011,370,888.3079$0.4122
BSC<0.01%<$0.000001156,795,498.713$0.41
BSC<0.01%<$0.00000111,345,639,533,442.143$0.4048
BSC<0.01%<$0.000001320,276,944.8172$0.3929
BSC<0.01%$0.00001330,087.6816$0.3925
BSC<0.01%<$0.0000013,215,439.9546$0.392
BSC<0.01%$0.00128304.0623$0.3893
BSC<0.01%$0.0001692,292.7126$0.3884
BSC<0.01%$0.2199391.7557$0.3861
BSC<0.01%$0.1200213.1862$0.3824
BSC<0.01%<$0.0000011,034,748,347,256.5928$0.374
BSC<0.01%$0.00212175.9549$0.373
BSC<0.01%$0.0000665,577.9726$0.3708
BSC<0.01%$0.0065256.8108$0.3704
BSC<0.01%<$0.000001986,527,781.749$0.3642
BSC<0.01%$0.0181220.0595$0.3634
BSC<0.01%$0.000003119,397.1337$0.359
BSC<0.01%$0.0003241,093.7562$0.3548
BSC<0.01%$0.1704352.0804$0.3545
BSC<0.01%<$0.000001165,258,362.9796$0.3544
BSC<0.01%$0.0669495.1154$0.3424
BSC<0.01%<$0.000001152,533,901.217$0.3413
BSC<0.01%$0.0597945.6489$0.3377
BSC<0.01%$0.0001063,193.8642$0.3374
BSC<0.01%$0.00686848.9461$0.3361
BSC<0.01%$0.0753484.4578$0.3358
BSC<0.01%$0.00002115,377.963$0.328
BSC<0.01%$0.00002413,725.8146$0.3257
BSC<0.01%$0.1809861.7901$0.3239
BSC<0.01%$0.000575558.2875$0.3209
BSC<0.01%$0.00357889.1911$0.3191
BSC<0.01%$0.02029415.5356$0.3152
BSC<0.01%<$0.000001111,966,453.471$0.3135
BSC<0.01%$0.000346906.4841$0.3134
BSC<0.01%<$0.0000017,180,840,131.1775$0.3081
BSC<0.01%<$0.0000016,316,489.5449$0.3068
BSC<0.01%$0.001112273.0762$0.3037
BSC<0.01%$0.2408751.2549$0.3022
BSC<0.01%<$0.000001276,951,650.8762$0.3016
BSC<0.01%$0.00002810,832.6741$0.3012
BSC<0.01%$0.00001915,440.6072$0.2989
BSC<0.01%$0.00846835.2195$0.2982
BSC<0.01%<$0.0000011,734,243,316.8435$0.2968
BSC<0.01%$0.1186252.5003$0.2965
BSC<0.01%<$0.0000011,909,227,654,736.5474$0.2964
BSC<0.01%$0.00341984.292$0.2881
BSC<0.01%$0.00001321,325.3575$0.284
BSC<0.01%$0.00000738,828.3749$0.2804
BSC<0.01%$0.000573484.7574$0.2775
BSC<0.01%$0.000679406.0771$0.2758
BSC<0.01%$0.002119129.0409$0.2734
BSC<0.01%<$0.000001313,240,912,787.2358$0.2721
BSC<0.01%$1.760.153$0.2693
BSC<0.01%$0.00404665.6637$0.2656
BSC<0.01%<$0.000001118,968,708,743.9241$0.2623
BSC<0.01%$0.001137228.5279$0.2598
BSC<0.01%$0.1384271.8655$0.2582
BSC<0.01%$0.00600243.0135$0.2581
BSC<0.01%<$0.000001857,702,606.4564$0.2573
BSC<0.01%$0.2148321.1875$0.2551
BSC<0.01%$0.000717354.9824$0.2545
BSC<0.01%$0.000001285,732.4443$0.2525
BSC<0.01%<$0.0000017,305,337.8934$0.2521
BSC<0.01%<$0.000001139,194,535.4883$0.2491
BSC<0.01%$2.020.12$0.2422
BSC<0.01%$0.00000383,886.8947$0.2399
BSC<0.01%$3.930.0608$0.2388
BSC<0.01%<$0.0000011,257,443,566.5698$0.2371
BSC<0.01%$0.000832277.7073$0.231
BSC<0.01%$0.001802127.2698$0.2293
BSC<0.01%$0.0000356,367.9227$0.2255
BSC<0.01%<$0.00000114,897,300.8493$0.2246
BSC<0.01%$0.0001471,524.6493$0.2235
BSC<0.01%$0.001245179.1152$0.2229
BSC<0.01%$0.01001322.2293$0.2225
BSC<0.01%$0.00044487.7517$0.2145
BSC<0.01%$0.00046466.1215$0.2145
BSC<0.01%$0.0001831,162.5833$0.2129
BSC<0.01%$0.0243968.5118$0.2076
BSC<0.01%$0.4886340.4196$0.205
BSC<0.01%$0.0001171,734.3406$0.203
BSC<0.01%$0.0397915.0629$0.2014
BSC<0.01%<$0.000001202,371,760.9949$0.201
BSC<0.01%<$0.000001319,974,033.3923$0.1994
BSC<0.01%<$0.0000011,910,626.2037$0.1911
BSC<0.01%$0.0208258.9093$0.1855
BSC<0.01%$1.050.174$0.1818
BSC<0.01%$0.0027565.376$0.1797
BSC<0.01%$0.146211.192$0.1742
BSC<0.01%$34.190.00505174$0.1727
BSC<0.01%$0.0284786.0413$0.172
BSC<0.01%$0.000223764.8566$0.1703
BSC<0.01%$0.00000278,428.2098$0.1686
BSC<0.01%$0.0000227,679.2734$0.167
BSC<0.01%$0.00376443.7453$0.1646
BSC<0.01%$0.3130090.5172$0.1618
BSC<0.01%<$0.00000193,701,647.2518$0.1597
BSC<0.01%$0.2992750.5337$0.1597
BSC<0.01%$0.0085.3648$0.00
BSC<0.01%$1.70.0917$0.1562
BSC<0.01%$0.00328247.3476$0.1553
BSC<0.01%$0.000302509.7303$0.1539
BSC<0.01%$0.0001291,177.7689$0.1523
BSC<0.01%$0.000974153.805$0.1497
BSC<0.01%$0.0001361,078.199$0.147
BSC<0.01%$0.00132111.2715$0.1468
BSC<0.01%$0.01283311.3827$0.146
BSC<0.01%$0.0257785.6494$0.1456
BSC<0.01%$0.0020969.6053$0.1454
BSC<0.01%$0.0001411,002.5799$0.1414
BSC<0.01%<$0.0000018,327,118,032.1848$0.1367
BSC<0.01%$0.00000339,556.5904$0.1344
BSC<0.01%$0.001127116.6395$0.1314
BSC<0.01%$0.2417290.5391$0.1303
BSC<0.01%$0.1239281.0397$0.1288
BSC<0.01%$0.060832.1098$0.1283
BSC<0.01%$0.000568225.7314$0.1282
BSC<0.01%<$0.0000011,914,478.2786$0.128
BSC<0.01%$0.000472265.565$0.1252
BSC<0.01%<$0.0000011,015,903,499.1732$0.1249
BSC<0.01%$0.00000428,928.1019$0.1232
BSC<0.01%$0.000081,530.7381$0.1231
BSC<0.01%$0.000208582.8917$0.1212
BSC<0.01%$0.4078040.2927$0.1193
BSC<0.01%<$0.000001480,506,435.4252$0.1186
BSC<0.01%<$0.0000013,083,191.7235$0.1175
BSC<0.01%$0.2264210.5015$0.1135
BSC<0.01%$0.7174690.1553$0.1114
BSC<0.01%$0.0646621.7203$0.1112
BSC<0.01%$0.001668.7412$0.1099
BSC<0.01%$0.0302363.6326$0.1098
BSC<0.01%$0.000408268.4196$0.1094
BSC<0.01%$0.000673161.546$0.1086
BSC<0.01%$0.00141676.6805$0.1085
BSC<0.01%$2.490.0436$0.1083
BSC<0.01%$0.000859124.3311$0.1067
BSC<0.01%$0.000151704.3933$0.1061
BSC<0.01%$0.00039270$0.1052
BSC<0.01%$0.00296635.1228$0.1041
BSC<0.01%$0.0000352,881.9466$0.1015
BSC<0.01%$0.000071,426.08$0.1002
ARB0.08%$0.036927205,468,417.5971$7,587,367.19
ARB<0.01%$0.9992122,944.491$2,942.17
ARB
Ether (ETH)
<0.01%$3,446.740.1276$439.95
ARB<0.01%$0.9998275.8471$275.79
ARB<0.01%$102,1770.00043654$44.6
ARB<0.01%$3,439.860.0105$36.05
ARB<0.01%$0.99955830.2993$30.29
ARB<0.01%$0.025321969.5596$24.55
ARB<0.01%$0.30263650.5733$15.31
ARB<0.01%$0.00416,846.3934$0.00
ARB<0.01%$0.0040383,120.7959$12.6
ARB<0.01%$1.657.4741$12.33
ARB<0.01%$0.00000118,982,601.956$12.21
ARB<0.01%$0.000085144,120.8498$12.2
ARB<0.01%$2.734.0418$11.03
ARB<0.01%$3,659.380.00265057$9.7
ARB<0.01%$0.47774520.0153$9.56
ARB<0.01%$15.790.5286$8.35
ARB<0.01%$0.12474363.8965$7.97
ARB<0.01%$5.971.1426$6.82
ARB<0.01%$34.170.1959$6.69
ARB<0.01%$0.9990316.296$6.29
ARB<0.01%$26.250.192$5.04
ARB<0.01%$0.0033421,451.4212$4.85
ARB<0.01%$0.8560725.5506$4.75
ARB<0.01%$0.14635532.1565$4.71
ARB<0.01%$0.0045711,009.2058$4.61
ARB<0.01%$0.99984.2396$4.24
ARB<0.01%$4,191.320.00100833$4.23
ARB<0.01%$0.17316524.2527$4.2
ARB<0.01%$2.611.4967$3.91
ARB<0.01%$0.9678433.7893$3.67
ARB<0.01%$2.311.3737$3.17
ARB<0.01%$2.481.2549$3.11
ARB<0.01%$0.019943149.6375$2.98
ARB<0.01%$0.0017671,679.8161$2.97
ARB<0.01%$0.004902598.4312$2.93
ARB<0.01%$5.550.5195$2.88
ARB<0.01%$3,432.160.00083024$2.85
ARB<0.01%$0.0000555,394.9715$2.77
ARB<0.01%$0.023451115.3143$2.7
ARB<0.01%$0.21064612.6737$2.67
ARB<0.01%$0.06493640.825$2.65
ARB<0.01%$0.004597548.3177$2.52
ARB<0.01%$0.0015941,442.5301$2.3
ARB<0.01%<$0.00000129,988,520.9801$2.22
ARB<0.01%$0.006512335.931$2.19
ARB<0.01%$0.03927554.454$2.14
ARB<0.01%$0.06077732.9845$2
ARB<0.01%$102,4740.00001949$2
ARB<0.01%$1.521.2393$1.88
ARB<0.01%$11.8809$1.88
ARB<0.01%$0.000.00890447$0.00
ARB<0.01%$3.120.5496$1.71
ARB<0.01%$102,2260.00001612$1.65
ARB<0.01%$0.4879883.345$1.63
ARB<0.01%$0.07894218.6469$1.47
ARB<0.01%$0.0003124,595.7789$1.43
ARB<0.01%$0.01499194.1547$1.41
ARB<0.01%$0.01873974.9134$1.4
ARB<0.01%$277.570.0047396$1.32
ARB<0.01%$3.530.3104$1.1
ARB<0.01%$35,8700.00002667$0.9566
ARB<0.01%$9.560.0999$0.9552
ARB<0.01%$0.2969533.1862$0.9461
ARB<0.01%$0.9687230.9534$0.9235
ARB<0.01%$0.0189945.9814$0.8731
ARB<0.01%<$0.0000018,591,756,251.8412$0.8591
ARB<0.01%$0.04879716.5348$0.8068
ARB<0.01%$0.001415555.1622$0.7852
ARB<0.01%$0.001085682.2542$0.7404
ARB<0.01%$0.000.0054816$0.00
ARB<0.01%$0.002763262.1786$0.7243
ARB<0.01%$0.5022271.4345$0.7204
ARB<0.01%$0.000005141,215.5606$0.6679
ARB<0.01%$0.01587541.3171$0.6559
ARB<0.01%$0.00003119,691.7921$0.616
ARB<0.01%$0.00117.323$0.00
ARB<0.01%$0.004146124.5114$0.5162
ARB<0.01%$0.1056294.8287$0.51
ARB<0.01%$0.0004191,127.7062$0.4723
ARB<0.01%$0.000001851,848.4097$0.4408
ARB<0.01%$0.0748085.5857$0.4178
ARB<0.01%$0.01392127.9053$0.3884
ARB<0.01%$0.3251221.1496$0.3737
ARB<0.01%<$0.000001772,253.2911$0.3651
ARB<0.01%$0.9991410.3565$0.3561
ARB<0.01%$0.01552822.7211$0.3528
ARB<0.01%$0.02369914.4106$0.3415
ARB<0.01%$0.02517813.4831$0.3394
ARB<0.01%$0.00000654,764.9991$0.3389
ARB<0.01%$0.01195525.3841$0.3034
ARB<0.01%$3.870.0705$0.2726
ARB<0.01%$0.001801150.6709$0.2713
ARB<0.01%$0.01779112.7911$0.2275
ARB<0.01%$0.001255164.6605$0.2066
ARB<0.01%$0.9985460.2062$0.2058
ARB<0.01%$0.4088050.5016$0.205
ARB<0.01%$0.0678222.9081$0.1972
ARB<0.01%$0.000417466.8607$0.1947
ARB<0.01%<$0.000001972,651,934.0252$0.1945
ARB<0.01%<$0.0000011,894,754,061.3381$0.1894
ARB<0.01%$1.780.1061$0.1889
ARB<0.01%$0.8322360.2118$0.1762
ARB<0.01%$1.210.1345$0.1627
ARB<0.01%$0.00834619.1927$0.1601
ARB<0.01%$0.00164396.26$0.1581
ARB<0.01%$0.000236658.6$0.1553
ARB<0.01%<$0.0000011,478,878,175.0521$0.1478
ARB<0.01%$14.160.00984186$0.1393
ARB<0.01%$0.0000187,894.7806$0.1382
ARB<0.01%$0.00358137.7719$0.1352
ARB<0.01%$3.60.034$0.1225
ARB<0.01%$0.0000284,439.7233$0.1223
POL<0.01%$0.0333231,628,821.3855$54,276.94
POL<0.01%$0.0159192,027,436.1247$32,275.75
POL<0.01%$0.99966811,719.2698$11,715.38
POL<0.01%$11.84814.7715$9,646.89
POL<0.01%$0.18268515,875.183$2,900.15
POL<0.01%$0.999801562.9813$562.87
POL<0.01%$0.00457198,757.3911$451.43
POL<0.01%$102,1790.00375849$384.04
POL<0.01%$0.999227343.3333$343.07
POL<0.01%$0.999801321.0242$320.96
POL<0.01%$3,442.330.084$289.18
POL<0.01%$134.731.2474$168.06
POL<0.01%$0.0191824,698.0967$90.12
POL<0.01%$0.00000165,532,914.2253$87.16
POL<0.01%$2.3627.3475$64.54
POL<0.01%$0.183144336.6514$61.66
POL<0.01%$0.254068164.2556$41.73
POL<0.01%$0.0048577,564.0991$36.74
POL<0.01%$0.0181961,654.2605$30.1
POL<0.01%$0.135149219.4867$29.66
POL<0.01%$0.00122822,601.2557$27.75
POL<0.01%$5.984.5818$27.4
POL<0.01%$0.040989508.0304$20.82
POL<0.01%$3.755.4352$20.4
POL<0.01%$0.23358187.0015$20.32
POL<0.01%$0.097724184.2625$18.01
POL<0.01%$0.102938155.5457$16.01
POL<0.01%$0.000011,560,843.3217$15.78
POL<0.01%$0.20481773.8887$15.13
POL<0.01%$0.104081131.6216$13.7
POL<0.01%$0.009231,360.2307$12.55
POL<0.01%$161.970.0701$11.35
POL<0.01%$0.16756157.4998$9.63
POL<0.01%$0.0000042,342,010.1195$9.63
POL<0.01%<$0.0000011,728,982,570.7674$9.16
POL<0.01%$0.00017749,268.3747$8.71
POL<0.01%$0.7677110.4807$8.05
POL<0.01%$0.50197915.2911$7.68
POL<0.01%$0.0032642,300.36$7.51
POL<0.01%$0.8322958.8542$7.37
POL<0.01%$0.34923520.1524$7.04
POL<0.01%$0.0056151,203.4257$6.76
POL<0.01%$0.00039515,925.2483$6.29
POL<0.01%<$0.00000195,385,987.394$6.2
POL<0.01%$3,990.820.00151194$6.03
POL<0.01%$0.02043289.1225$5.91
POL<0.01%$0.000055106,371.9568$5.85
POL<0.01%$206.850.0261$5.39
POL<0.01%$0.0005898,751.2281$5.15
POL<0.01%$0.00009149,362.45$4.51
POL<0.01%$2.351.9123$4.5
POL<0.01%$0.0006576,232.4725$4.1
POL<0.01%$0.0006076,534.3428$3.97
POL<0.01%$0.00006957,136.7567$3.96
POL<0.01%$0.004012980.3643$3.93
POL<0.01%$0.000013289,923.219$3.84
POL<0.01%$0.007073534.3743$3.78
POL<0.01%$17.890.2025$3.62
POL<0.01%$0.0025771,372.6519$3.54
POL<0.01%$0.025805133.5944$3.45
POL<0.01%$0.31439510.656$3.35
POL<0.01%<$0.0000018,369,938,590.5321$3.35
POL<0.01%$0.4778066.9405$3.32
POL<0.01%$0.0013812,375.6169$3.28
POL<0.01%$0.03933483.3375$3.28
POL<0.01%$0.30878410.4971$3.24
POL<0.01%$1.522.1247$3.23
POL<0.01%$0.9562033.3523$3.21
POL<0.01%$1,295.670.00245521$3.18
POL<0.01%$0.000368,818.9314$3.17
POL<0.01%$0.000486,587.6391$3.16
POL<0.01%$15.790.1691$2.67
POL<0.01%$0.002231,160.2847$2.59
POL<0.01%$0.009194272.463$2.5
POL<0.01%<$0.0000014,759,526,434.9664$2.38
POL<0.01%$0.0011591,990.0876$2.31
POL<0.01%$0.010443211.8626$2.21
POL<0.01%$0.012214177.4038$2.17
POL<0.01%$0.0015061,434.1705$2.16
POL<0.01%$1.651.275$2.1
POL<0.01%$0.0991820.8915$2.07
POL<0.01%$290.70.00698189$2.03
POL<0.01%$0.84152.3867$2.01
POL<0.01%$0.2134819.1573$1.95
POL<0.01%$0.0004074,774.6059$1.94
POL<0.01%$0.00011915,507.9562$1.84
POL<0.01%$0.0011851,539.1192$1.82
POL<0.01%$0.0000630,013.4009$1.81
POL<0.01%$0.007427242.9299$1.8
POL<0.01%<$0.0000013,590,701.637$1.77
POL<0.01%$0.000005373,221.9979$1.72
POL<0.01%$0.0005173,245.1316$1.68
POL<0.01%$1.151.432$1.65
POL<0.01%$0.00010415,781.811$1.64
POL<0.01%$0.06776823.7626$1.61
POL<0.01%$0.1860538.5919$1.6
POL<0.01%$0.0010.5964$0.00
POL<0.01%$0.0024,092.6159$0.00
POL<0.01%$0.10895713.245$1.44
POL<0.01%$0.011896120.5309$1.43
POL<0.01%$0.001731804.0431$1.39
POL<0.01%$2.750.489$1.34
POL<0.01%$17.210.077$1.32
POL<0.01%$0.004677267.1951$1.25
POL<0.01%$102,506.290.00001204$1.23
POL<0.01%$0.8531321.4121$1.2
POL<0.01%$0.2812174.1609$1.17
POL<0.01%$0.0007521,550.2591$1.17
POL<0.01%$0.004967228.4142$1.13
POL<0.01%$0.008089137.5648$1.11
POL<0.01%$0.007668143.948$1.1
POL<0.01%$0.0006941,577.1752$1.09
POL<0.01%$0.9945671.0987$1.09
POL<0.01%$0.0004592,334.188$1.07
POL<0.01%$0.2494734.293$1.07
POL<0.01%$0.004397232.9086$1.02
POL<0.01%$0.8816141.1124$0.9807
POL<0.01%$5,032.140.00019433$0.9779
POL<0.01%$0.1770115.4708$0.9683
POL<0.01%$0.9999110.963$0.9629
POL<0.01%$0.8449311.1378$0.9613
POL<0.01%$0.0002274,097.3027$0.9303
POL<0.01%$0.6214541.4829$0.9215
POL<0.01%$0.004955178.5023$0.8845
POL<0.01%$0.8540121.0312$0.8806
POL<0.01%$55.420.0158$0.8765
POL<0.01%$10.8749$0.8748
POL<0.01%$0.0001336,453.1571$0.8569
POL<0.01%$0.000976820.2084$0.8005
POL<0.01%$0.0001355,822.2175$0.785
POL<0.01%$0.000001561,896.1483$0.7796
POL<0.01%$0.002096347.6428$0.7285
POL<0.01%$11.420.0623$0.7109
POL<0.01%$34.130.0202$0.6896
POL<0.01%$4.010.1694$0.6794
POL<0.01%$0.04125815.9215$0.6568
POL<0.01%$101,8350.00000636$0.6473
POL<0.01%$0.234552.7474$0.6444
POL<0.01%$0.005576111.6654$0.6226
POL<0.01%$0.00001152,850.0935$0.5998
POL<0.01%$0.0002932,029.523$0.5937
POL<0.01%$0.0001943,060$0.5927
POL<0.01%$0.00813171.4737$0.5811
POL<0.01%<$0.00000164,423,678.7135$0.5669
POL<0.01%$2.490.227$0.5648
POL<0.01%$0.1491263.7033$0.5522
POL<0.01%$0.0000875,886.4457$0.5105
POL<0.01%$0.0002152,246.1796$0.4818
POL<0.01%$0.002682178.7112$0.4792
POL<0.01%$0.002131224.1531$0.4777
POL<0.01%$0.00604176.5289$0.4623
POL<0.01%$0.5560210.8154$0.4534
POL<0.01%<$0.0000015,211,716.2532$0.4409
POL<0.01%$0.000622697.6826$0.434
POL<0.01%$0.1994022.1467$0.428
POL<0.01%$0.01413730.2626$0.4278
POL<0.01%<$0.00000176,598,741.7732$0.3676
POL<0.01%$0.000369974.5081$0.3591
POL<0.01%<$0.0000019,876,114.6704$0.3515
POL<0.01%$0.054336.2631$0.3402
POL<0.01%$0.2146691.5489$0.3324
POL<0.01%$0.000404820.0993$0.3312
POL<0.01%$0.0649674.9071$0.3188
POL<0.01%$0.02740511.25$0.3083
POL<0.01%$0.0033687.967$0.2955
POL<0.01%$0.0002291,171.5061$0.2687
POL<0.01%$0.9973050.2499$0.2492
POL<0.01%$0.0001821,364.423$0.2478
POL<0.01%$0.000728319.6318$0.2326
POL<0.01%$0.0195111.7127$0.2285
POL<0.01%$0.00266684.3869$0.2249
POL<0.01%$0.002038108.5971$0.2213
POL<0.01%$0.0244368.7818$0.2145
POL<0.01%<$0.00000174,655,668.8774$0.209
POL<0.01%$0.3423080.6015$0.2058
POL<0.01%$4,192.280.00004823$0.2021
POL<0.01%$0.000521380.5654$0.1984
POL<0.01%$0.01462413.4818$0.1971
POL<0.01%$0.01787210.8642$0.1941
POL<0.01%$0.0325725.9047$0.1923
POL<0.01%$1.120.1715$0.192
POL<0.01%$14,557.890.000013$0.1892
POL<0.01%$0.002377.7197$0.1787
POL<0.01%<$0.000001666,860.5356$0.1734
POL<0.01%$0.1590581.0616$0.1688
POL<0.01%$0.00444137.8156$0.1679
POL<0.01%$0.000499325.8765$0.1627
POL<0.01%$0.008319.311$0.1602
POL<0.01%$0.0000582,711.7678$0.1578
POL<0.01%$0.0372474.2014$0.1564
POL<0.01%$0.01090514.2592$0.1554
POL<0.01%$0.2050110.7521$0.1541
POL<0.01%$0.00211169.305$0.1462
POL<0.01%$0.00141999.8516$0.1417
POL<0.01%$0.1271181.0757$0.1367
POL<0.01%<$0.00000114,393,918.9472$0.1324
POL<0.01%$0.0001281,036.473$0.1321
POL<0.01%$0.0577772.2709$0.1312
POL<0.01%$0.000888141.0849$0.1252
POL<0.01%$0.9991030.1253$0.1252
POL<0.01%$0.0072,861,235.2174$0.00
POL<0.01%$0.00173970.5009$0.1226
POL<0.01%$0.1337220.9116$0.1219
POL<0.01%$0.000522227.6432$0.1188
POL<0.01%$0.000697168.8757$0.1177
POL<0.01%$0.00115798.3775$0.1137
POL<0.01%$0.000144764.181$0.1097
POL<0.01%$0.000122894.3966$0.1089
POL<0.01%$0.000206526.7945$0.1087
POL<0.01%$0.7574610.1407$0.1065
POL<0.01%$0.0825421.2767$0.1053
POL<0.01%$0.00222946.8625$0.1044
POL<0.01%$0.00076135.844$0.1032
POL<0.01%$0.0255723.9312$0.1005
BASE<0.01%$0.9998014,741.0555$4,740.11
BASE<0.01%$0.019047145,046.4228$2,762.75
BASE<0.01%$3,441.170.4421$1,521.25
BASE<0.01%$0.998592286.6622$286.26
BASE<0.01%$0.0232315,217.6867$121.21
BASE<0.01%$0.009058,661.5626$78.38
BASE<0.01%$102,4910.00073397$75.23
BASE<0.01%$0.00073298,055.2171$71.75
BASE<0.01%$0.300308182.7826$54.89
BASE<0.01%$0.0176672,886.2257$50.99
BASE<0.01%$1.3733.3916$45.75
BASE<0.01%$0.277344164.3632$45.59
BASE<0.01%$0.068948643.7233$44.38
BASE<0.01%$0.0265041,574.9054$41.74
BASE<0.01%$0.0080115,052.7177$40.48
BASE<0.01%$0.41197894.4423$38.91
BASE<0.01%$0.00170521,046.3992$35.88
BASE<0.01%$0.000057617,881.5255$34.92
BASE<0.01%$1.6221.378$34.63
BASE<0.01%$0.00328110,524.7477$34.53
BASE<0.01%$0.235041142.1614$33.41
BASE<0.01%$0.000171187,298.1249$32.08
BASE<0.01%$0.00235613,496.4952$31.79
BASE<0.01%$0.000178174,741$31.16
BASE<0.01%$0.0184961,570.8977$29.06
BASE<0.01%$0.0193651,446.8139$28.02
BASE<0.01%$0.00029394,490.7502$27.68
BASE<0.01%$0.00000138,249,680.5886$27.34
BASE<0.01%$0.0177281,520.7405$26.96
BASE<0.01%$1.4617.446$25.47
BASE<0.01%$0.0154281,610.3255$24.84
BASE<0.01%$0.00013191,364.9697$24.78
BASE<0.01%$0.0139831,761.7692$24.63
BASE<0.01%$2.3110.5989$24.48
BASE<0.01%$0.30828875.5795$23.3
BASE<0.01%$0.00059538,612.3823$22.96
BASE<0.01%$0.000044524,890.6649$22.91
BASE<0.01%$0.0042025,135.2156$21.58
BASE<0.01%$0.00041452,115.6917$21.55
BASE<0.01%$0.086238239.2594$20.63
BASE<0.01%$0.033356567.3276$18.92
BASE<0.01%$0.00145712,696.5383$18.5
BASE<0.01%$0.000038469,719.9481$17.83
BASE<0.01%$0.067494259.5457$17.52
BASE<0.01%$0.00062627,399.9183$17.15
BASE<0.01%$0.162234104.8645$17.01
BASE<0.01%$0.0029795,648.3668$16.83
BASE<0.01%<$0.0000011,848,039,429.0516$16.63
BASE<0.01%$0.0075372,058.2575$15.51
BASE<0.01%$0.92916216.1003$14.96
BASE<0.01%$0.0000035,187,039.6294$14.68
BASE<0.01%$0.0000062,432,229.1852$14.54
BASE<0.01%$0.027001534.0442$14.42
BASE<0.01%$0.0127861,120.6919$14.33
BASE<0.01%$0.0052962,523.0757$13.36
BASE<0.01%$0.24494254.3821$13.32
BASE<0.01%$0.00077417,179.005$13.3
BASE<0.01%$0.0053932,413.4681$13.02
BASE<0.01%$0.0117711,097.6032$12.92
BASE<0.01%<$0.00000129,269,102.5602$12.81
BASE<0.01%$0.00000110,337,925.8001$12.2
BASE<0.01%$0.043709273.0056$11.93
BASE<0.01%$0.082344144.7298$11.92
BASE<0.01%$0.00094611,976.8973$11.33
BASE<0.01%$0.0021135,288.4488$11.17
BASE<0.01%$0.002564,321.4884$11.06
BASE<0.01%$0.00049821,621.8891$10.77
BASE<0.01%$0.084102123.1143$10.35
BASE<0.01%$0.00008127,775.1697$10.16
BASE<0.01%$0.0023284,320.6849$10.06
BASE<0.01%$0.046194217.1863$10.03
BASE<0.01%$0.00053218,808.6968$10
BASE<0.01%$0.00052418,773.8989$9.84
BASE<0.01%<$0.0000017,000,983,714.8239$9.8
BASE<0.01%$0.000044212,570.09$9.45
BASE<0.01%$0.078263117.5032$9.2
BASE<0.01%$0.028094322.38$9.06
BASE<0.01%$0.00002440,941.9619$8.96
BASE<0.01%$0.0033112,688.7591$8.9
BASE<0.01%$0.000066131,257.6408$8.72
BASE<0.01%$0.000066129,172.6116$8.53
BASE<0.01%$0.31934526.685$8.52
BASE<0.01%$0.00017846,436.553$8.27
BASE<0.01%$0.12549965.7867$8.26
BASE<0.01%<$0.000001297,751,314.8985$8.19
BASE<0.01%$0.000021389,233.9926$8.18
BASE<0.01%$0.008437945.6688$7.98
BASE<0.01%$11.110.7055$7.84
BASE<0.01%$0.69551711.059$7.69
BASE<0.01%$0.069823109.5203$7.65
BASE<0.01%$0.00038619,817.3938$7.64
BASE<0.01%$0.064947111.4834$7.24
BASE<0.01%$0.0031652,175.1795$6.89
BASE<0.01%$0.000064107,181.0961$6.86
BASE<0.01%$3,801.520.00179686$6.83
BASE<0.01%$0.0011665,791.7623$6.75
BASE<0.01%$0.000008833,245.7973$6.73
BASE<0.01%$0.000038174,174.8583$6.68
BASE<0.01%$0.0000032,126,128.7744$6.59
BASE<0.01%$0.0737888.2809$6.51
BASE<0.01%$0.00043214,776.2999$6.39
BASE<0.01%$0.001,510.0887$0.00
BASE<0.01%$0.0000032,093,543.9469$6.24
BASE<0.01%$0.000017345,510.4937$5.71
BASE<0.01%$0.0000022,396,962.5076$5.66
BASE<0.01%$0.0009625,772.7781$5.55
BASE<0.01%$0.000009625,158.4978$5.49
BASE<0.01%$0.0001439,286.4066$5.49
BASE<0.01%$0.9999325.3652$5.36
BASE<0.01%$0.001613,321.4481$5.35
BASE<0.01%$0.06888775.4214$5.2
BASE<0.01%$0.0028311,828.0333$5.17
BASE<0.01%$3,439.860.00149112$5.13
BASE<0.01%$0.19521426.0073$5.08
BASE<0.01%$0.009583519.0849$4.97
BASE<0.01%$1.164.2491$4.93
BASE<0.01%$0.02354207.6203$4.89
BASE<0.01%$0.00029716,027.0912$4.77
BASE<0.01%$0.0010924,341.8063$4.74
BASE<0.01%$0.000041113,858.4017$4.69
BASE<0.01%$0.00009250,384.8572$4.66
BASE<0.01%$0.8324155.5907$4.65
BASE<0.01%$0.9998734.538$4.54
BASE<0.01%$0.0011493,913.0313$4.5
BASE<0.01%$0.0029341,529.4029$4.49
BASE<0.01%$0.30122814.8689$4.48
BASE<0.01%$3,659.780.00121772$4.46
BASE<0.01%$0.27566116.1574$4.45
BASE<0.01%$0.00019322,964.5883$4.42
BASE<0.01%$0.00006765,761.6334$4.41
BASE<0.01%$0.0000671,804.1123$4.31
BASE<0.01%$0.000029147,148.0496$4.21
BASE<0.01%$0.0069.0001$0.00
BASE<0.01%$0.0021361,949.5766$4.16
BASE<0.01%$0.00004983,930.7527$4.12
BASE<0.01%$0.00016324,963.2288$4.07
BASE<0.01%$0.000033119,033.6312$3.97
BASE<0.01%$0.00026614,631.7831$3.9
BASE<0.01%$0.0001232,216.413$3.88
BASE<0.01%$0.00002194,370.4645$3.86
BASE<0.01%$0.0007624,980.0501$3.79
BASE<0.01%$0.006486581.4366$3.77
BASE<0.01%$0.000037100,826.2966$3.77
BASE<0.01%<$0.00000162,442,693.9608$3.75
BASE<0.01%$0.000025148,766.0724$3.75
BASE<0.01%$0.000546,776.4292$3.66
BASE<0.01%$0.000011337,416.0963$3.65
BASE<0.01%$0.0004917,419.4895$3.64
BASE<0.01%$0.00017620,439.4419$3.6
BASE<0.01%<$0.000001266,629,967.6904$3.55
BASE<0.01%$0.00005267,068.4678$3.51
BASE<0.01%$0.0005676,065.3293$3.44
BASE<0.01%$0.0007294,712.5799$3.43
BASE<0.01%<$0.0000019,048,228.4088$3.42
BASE<0.01%$0.0006655,113.1201$3.4
BASE<0.01%$0.00003391,494.1819$3.06
BASE<0.01%$0.0022691,341.9775$3.04
BASE<0.01%$0.10293829.4716$3.03
BASE<0.01%$1.651.7993$2.97
BASE<0.01%$0.011343260.6722$2.96
BASE<0.01%$0.0016721,733.7105$2.9
BASE<0.01%$0.6192284.5103$2.79
BASE<0.01%$0.024787112.0784$2.78
BASE<0.01%$0.3359858.2577$2.77
BASE<0.01%$0.0005794,727.4732$2.74
BASE<0.01%$0.0000014,930,009.1443$2.68
BASE<0.01%$0.000008349,321.0988$2.65
BASE<0.01%$0.02756794.9236$2.62
BASE<0.01%$0.05731545.6332$2.62
BASE<0.01%$0.0011012,361.4123$2.6
BASE<0.01%$0.023485110.4521$2.59
BASE<0.01%$0.05585845.7734$2.56
BASE<0.01%$0.0004245,972.5813$2.53
BASE<0.01%$0.0000011,903,883.699$2.52
BASE<0.01%$0.16338615.1803$2.48
BASE<0.01%$0.010699231.373$2.48
BASE<0.01%$0.005692425.373$2.42
BASE<0.01%$0.013159180.3383$2.37
BASE<0.01%$0.00004157,739.9493$2.36
BASE<0.01%$79.320.0297$2.36
BASE<0.01%$0.00004749,777.7141$2.34
BASE<0.01%<$0.000001676,729,268.8007$2.3
BASE<0.01%$0.0000011,828,138.4591$2.29
BASE<0.01%$0.02512790.8213$2.28
BASE<0.01%$0.00013117,348.2681$2.26
BASE<0.01%$0.0002748,195.214$2.24
BASE<0.01%<$0.0000014,444,394,448.3851$2.22
BASE<0.01%$0.0011841,856.1824$2.2
BASE<0.01%$0.00002108,928.6646$2.19
BASE<0.01%$0.1512414.5041$2.19
BASE<0.01%$0.000013165,849.3218$2.17
BASE<0.01%$0.03994953.723$2.15
BASE<0.01%$0.006554319.8813$2.1
BASE<0.01%$0.0016451,258.0557$2.07
BASE<0.01%$0.7202122.8376$2.04
BASE<0.01%$0.000238,838.3579$2.03
BASE<0.01%$0.000434,719.0585$2.03
BASE<0.01%$0.000007297,073.5932$2.02
BASE<0.01%$0.000004567,915.94$2.02
BASE<0.01%$0.0019821,010.9699$2
BASE<0.01%$0.5598183.4859$1.95
BASE<0.01%$0.03451854.9933$1.9
BASE<0.01%$0.004533405.7313$1.84
BASE<0.01%$0.00017510,482.8193$1.84
BASE<0.01%$0.06958126.343$1.83
BASE<0.01%$0.000003560,960.1283$1.82
BASE<0.01%$0.0003195,674.6083$1.81
BASE<0.01%$0.00016810,670.3864$1.79
BASE<0.01%$0.0012.35$0.00
BASE<0.01%$0.0005373,267.3502$1.75
BASE<0.01%$0.1731910.1159$1.75
BASE<0.01%<$0.0000014,324,506,764.2335$1.73
BASE<0.01%$0.000005321,610.9248$1.72
BASE<0.01%$0.0013921,191.5703$1.66
BASE<0.01%$0.01952684.0238$1.64
BASE<0.01%$0.000016103,826.8203$1.62
BASE<0.01%$0.00002272,490.4098$1.6
BASE<0.01%$0.002269683.2262$1.55
BASE<0.01%$0.0000011,491,225.882$1.54
BASE<0.01%$0.00001884,468.8124$1.53
BASE<0.01%<$0.000001759,358,177.6351$1.52
BASE<0.01%$0.0003214,692.3864$1.5
BASE<0.01%$0.0006542,256.4845$1.48
BASE<0.01%$0.00011812,451.5736$1.47
BASE<0.01%$16.790.0857$1.44
BASE<0.01%$0.0000011,785,843.2537$1.4
BASE<0.01%$0.00010213,725.817$1.4
BASE<0.01%$0.0213565.574$1.4
BASE<0.01%$0.9996871.3535$1.35
BASE<0.01%$0.0001887,152.9199$1.34
BASE<0.01%$0.010203128.876$1.31
BASE<0.01%$0.0168877.5646$1.31
BASE<0.01%$0.00007716,479.8375$1.28
BASE<0.01%$0.0007221,755.2179$1.27
BASE<0.01%$0.002107600.7909$1.27
BASE<0.01%$0.002236558.2724$1.25
BASE<0.01%$0.004012310.2434$1.24
BASE<0.01%$0.00002841,310.2415$1.14
BASE<0.01%$0.004741237.0651$1.12
BASE<0.01%$0.0004022,747.2066$1.1
BASE<0.01%$0.0003253,382.3785$1.1
BASE<0.01%$0.1823555.8447$1.07
BASE<0.01%$0.00001955,600.699$1.06
BASE<0.01%$0.00003529,428.8661$1.03
BASE<0.01%$0.002554392.6405$1
BASE<0.01%<$0.000001257,027,931.8912$1
BASE<0.01%$0.00204489.4288$0.9984
BASE<0.01%$0.000988997.0018$0.9852
BASE<0.01%$0.9741280.9936$0.9679
BASE<0.01%$0.0001337,122.8459$0.9469
BASE<0.01%$0.0006881,368.5317$0.9412
BASE<0.01%$0.0002124,333.8464$0.9192
BASE<0.01%$0.00001181,850.6692$0.9175
BASE<0.01%$0.004168213.2034$0.8885
BASE<0.01%$0.0914529.6974$0.8868
BASE<0.01%$0.00002338,234.4435$0.8803
BASE<0.01%$0.00001751,864.9307$0.8692
BASE<0.01%$0.00001270,001.4635$0.8673
BASE<0.01%$0.005635151.6662$0.8547
BASE<0.01%$0.01218368.4781$0.8342
BASE<0.01%$0.221033.6196$0.80
BASE<0.01%$0.0000240,030.8034$0.795
BASE<0.01%$0.0006061,308.9921$0.7933
BASE<0.01%$0.00611128.8426$0.7872
BASE<0.01%$0.0005571,402.7774$0.7816
BASE<0.01%$0.0001286,040.1073$0.7737
BASE<0.01%$0.000007109,190.178$0.7566
BASE<0.01%$0.0001216,201.725$0.752
BASE<0.01%$0.2111653.5491$0.7494
BASE<0.01%$0.0001724,257.9028$0.7304
BASE<0.01%$0.00877282.3485$0.7223
BASE<0.01%$0.00076946.301$0.7193
BASE<0.01%$0.01544446.4882$0.7179
BASE<0.01%$0.0004711,486.2375$0.6999
BASE<0.01%$0.9486560.6897$0.6542
BASE<0.01%$0.0001843,548.224$0.6514
BASE<0.01%$0.001881343.5277$0.6462
BASE<0.01%$0.003957161.3073$0.6382
BASE<0.01%$0.000002417,586.9267$0.6347
BASE<0.01%$1.020.6161$0.6308
BASE<0.01%$34.130.0185$0.6306
BASE<0.01%$0.0002372,660.6276$0.6296
BASE<0.01%$0.0001245,074.5412$0.6279
BASE<0.01%$149.60.00411678$0.6158
BASE<0.01%$0.00000691,257.9829$0.5913
BASE<0.01%$0.000005124,059.3699$0.5827
BASE<0.01%$0.00000961,620.2007$0.5761
BASE<0.01%$0.00002423,396.7152$0.5701
BASE<0.01%$0.03841214.3655$0.5518
BASE<0.01%$0.0348315.5495$0.5415
BASE<0.01%$0.9991430.5416$0.5411
BASE<0.01%$0.0002841,894.0428$0.538
BASE<0.01%$0.005311101.1041$0.5369
BASE<0.01%$0.0037,321,926.051$0.00
BASE<0.01%<$0.0000011,698,158,723.7666$0.5094
BASE<0.01%<$0.0000011,288,037.6744$0.4902
BASE<0.01%$0.00002122,656.0094$0.4853
BASE<0.01%$0.0000756,393.448$0.4778
BASE<0.01%$0.02008523.5574$0.4731
BASE<0.01%$0.000527892.1369$0.4698
BASE<0.01%$0.00002816,670.7873$0.4697
BASE<0.01%$0.000611732.5413$0.4476
BASE<0.01%$0.006,895.3865$0.00
BASE<0.01%$0.001179372.2405$0.4389
BASE<0.01%$0.000443987.4932$0.4374
BASE<0.01%$0.0002531,709.1799$0.4319
BASE<0.01%$0.00002914,746.7322$0.4264
BASE<0.01%$0.0003511,200$0.4209
BASE<0.01%$0.0002711,531.2903$0.4155
BASE<0.01%$0.0001892,182.3898$0.413
BASE<0.01%$0.0000547,660.8636$0.4098
BASE<0.01%$0.00003511,668.1525$0.4058
BASE<0.01%$0.0000139,586.5233$0.4053
BASE<0.01%$0.000546736.3699$0.4022
BASE<0.01%$0.00002416,465.432$0.3953
BASE<0.01%$1.780.2197$0.391
BASE<0.01%$0.00002117,658.0856$0.3735
BASE<0.01%<$0.000001148,619,204.6841$0.3715
BASE<0.01%$0.000609600.2388$0.3653
BASE<0.01%$0.003316109.1859$0.362
BASE<0.01%$0.0003061,159.3379$0.3548
BASE<0.01%$0.9932670.3551$0.3526
BASE<0.01%$0.000684498.0291$0.3407
BASE<0.01%$0.002965113.8777$0.3376
BASE<0.01%$0.00002811,828.3375$0.334
BASE<0.01%$0.02403613.0841$0.3144
BASE<0.01%$0.000755413.4982$0.3122
BASE<0.01%$0.001551199.1961$0.3088
BASE<0.01%$0.9893330.3082$0.3049
BASE<0.01%$0.00001519,582.6611$0.3007
BASE<0.01%$0.01986814.961$0.2972
BASE<0.01%$0.00001126,297.203$0.2887
BASE<0.01%$0.0000763,798.1365$0.2867
BASE<0.01%$0.00001224,215.9268$0.2842
BASE<0.01%$0.0000674,196.2548$0.2802
BASE<0.01%$0.0001841,501.8031$0.2769
BASE<0.01%$0.002722100.0026$0.2721
BASE<0.01%$0.0537575.004$0.269
BASE<0.01%<$0.0000012,467,624.7935$0.2603
BASE<0.01%$0.00365670.8174$0.2589
BASE<0.01%$0.000594405.306$0.2409
BASE<0.01%<$0.0000011,899,370.3514$0.2277
BASE<0.01%$4,192.280.00005334$0.2235
BASE<0.01%$0.0970042.1963$0.213
BASE<0.01%$1.230.1722$0.2118
BASE<0.01%$0.000111,888.721$0.2072
BASE<0.01%$0.9932670.2077$0.2062
BASE<0.01%<$0.0000013,222,963.0812$0.2043
BASE<0.01%$0.00001513,034.2495$0.1939
BASE<0.01%$0.000542355.8872$0.1927
BASE<0.01%$0.000161,192.512$0.1912
BASE<0.01%$0.00270770.1464$0.1898
BASE<0.01%$0.1139981.6139$0.1839
BASE<0.01%$206.850.00088631$0.1833
BASE<0.01%$0.1570561.1589$0.182
BASE<0.01%$0.00001213,799.1145$0.1686
BASE<0.01%$0.00001610,144.5779$0.1656
BASE<0.01%$0.001629101.1127$0.1646
BASE<0.01%$0.0001581,021.7839$0.1611
BASE<0.01%<$0.000001530,750,863.4679$0.1592
BASE<0.01%$0.000324490.148$0.1585
BASE<0.01%$1.670.0935$0.1561
BASE<0.01%$0.0585912.5971$0.1521
BASE<0.01%$0.000177818.4707$0.1448
BASE<0.01%$0.9667060.1486$0.1436
BASE<0.01%$0.000338421.5433$0.1422
BASE<0.01%$0.000001130,478.8691$0.1409
BASE<0.01%$0.3392190.4134$0.1402
BASE<0.01%$0.0141779.865$0.1398
BASE<0.01%$0.0027649.8996$0.1377
BASE<0.01%$0.00000527,670.5417$0.1353
BASE<0.01%$3,4420.00003786$0.1303
BASE<0.01%$0.022565.5646$0.1255
BASE<0.01%$0.0000215,917.9209$0.1223
BASE<0.01%<$0.000001719,944.7703$0.1197
BASE<0.01%$0.00457126.0154$0.1189
BASE<0.01%$0.2818550.4206$0.1185
BASE<0.01%$0.00000258,435.3809$0.118
BASE<0.01%$0.00727415.7368$0.1144
BASE<0.01%$0.015976.932$0.1107
BASE<0.01%$0.00652116.953$0.1105
BASE<0.01%<$0.0000014,062,446.4458$0.1076
BASE<0.01%$0.9952390.1077$0.1072
BASE<0.01%$0.00000425,632.2298$0.1061
BASE<0.01%$4.020.0256$0.1027
BASE<0.01%$0.00435423.482$0.1022
AVAX<0.01%$0.9993196,262.7705$6,258.51
AVAX<0.01%$17.9535.9958$645.98
AVAX<0.01%$0.00804250,788.5848$408.44
AVAX<0.01%$0.999858329.4728$329.43
AVAX<0.01%$0.999319199.7121$199.58
AVAX<0.01%$0.0044319,872.9723$88.03
AVAX<0.01%$0.150855324.932$49.02
AVAX<0.01%$0.0094342,050.7053$19.35
AVAX<0.01%$0.00122111,920.2284$14.56
AVAX<0.01%$0.00000112,166,162.0732$8.6
AVAX<0.01%$0.024622305.0274$7.51
AVAX<0.01%$0.043041151.9251$6.54
AVAX<0.01%<$0.00000121,449,487.6778$6.52
AVAX<0.01%$0.9998584.4726$4.47
AVAX<0.01%<$0.0000011,025,891,745.4339$4.31
AVAX<0.01%$0.009846389.0999$3.83
AVAX<0.01%$0.00009828,530.7794$2.81
AVAX<0.01%$0.010942249.4256$2.73
AVAX<0.01%<$0.000001672,967,824.303$2.69
AVAX<0.01%$15.820.1643$2.6
AVAX<0.01%$312.810.00626415$1.96
AVAX<0.01%$0.004095382.4024$1.57
AVAX<0.01%$0.06860317.4516$1.2
AVAX<0.01%$0.1075489.1832$0.9876
AVAX<0.01%$0.0004292,208.5886$0.9473
AVAX<0.01%$135.080.00672696$0.9086
AVAX<0.01%$22.040.041$0.9028
AVAX<0.01%$0.001036815.3169$0.8442
AVAX<0.01%$0.000737994.4961$0.7326
AVAX<0.01%$0.02421830$0.7265
AVAX<0.01%$0.00001543,700.8001$0.6647
AVAX<0.01%$17.90.035$0.6269
AVAX<0.01%$0.00467671.2$0.3328
AVAX<0.01%$102,4910.00000282$0.289
AVAX<0.01%$1,297.230.00018687$0.2424
AVAX<0.01%$9.550.0197$0.1877
AVAX<0.01%$0.1002521.4354$0.1438
AVAX<0.01%$0.00018753.8702$0.1355
BLAST<0.01%$3,438.881.0148$3,489.85
BLAST<0.01%$0.989081962.4232$951.91
BLAST<0.01%$0.001256432,595.7404$543.2
BLAST<0.01%$0.00041712,948.5408$5.4
BLAST<0.01%$0.000012146,249.3442$1.82
BLAST<0.01%<$0.0000011,471,406,311.3983$1.62
BLAST<0.01%$0.00194740.5762$1.44
BLAST<0.01%$0.00005723,158.8105$1.32
BLAST<0.01%<$0.00000113,145,029,658.7827$1.31
BLAST<0.01%$3,441.60.00013179$0.4535
BLAST<0.01%$0.0002181,810.3514$0.3945
BLAST<0.01%$0.0001212,561.1567$0.3097
BLAST<0.01%<$0.0000016,348,138.2698$0.2056
BLAST<0.01%$0.0054531.159$0.1698
BLAST<0.01%$0.00216468.0513$0.1472
BLAST<0.01%$0.00088135.7399$0.1195
LINEA<0.01%$3,436.480.2157$741.25
LINEA<0.01%$0.999802380.7882$380.71
LINEA<0.01%$0.999473118.4698$118.41
LINEA<0.01%$0.013222,857.6592$37.78
LINEA<0.01%$3,656.40.00711064$26
LINEA<0.01%$110.846$10.86
LINEA<0.01%$0.0012984,576.799$5.94
LINEA<0.01%$0.0006567,893.1439$5.18
LINEA<0.01%$0.9996694.7161$4.71
LINEA<0.01%$102,2100.0000454$4.64
LINEA<0.01%$3,445.180.00130848$4.51
LINEA<0.01%$3,624.20.00053286$1.93
LINEA<0.01%$991.990.00092613$0.9187
LINEA<0.01%$0.003502221.5333$0.7757
LINEA<0.01%$4,192.360.00013274$0.5564
LINEA<0.01%$0.00000950,685.2716$0.4647
LINEA<0.01%$0.00777347.3847$0.3683
LINEA<0.01%$0.00994924.3313$0.242
BERA<0.01%$0.999227878.934$878.25
BERA<0.01%$1.681.4769$130.39
BERA<0.01%$1.251.5002$61.8
BERA<0.01%$1.113.6789$15.01
BERA<0.01%$1.014.0796$4.11
BERA<0.01%$0.000.00052074$0.00
BERA<0.01%$0.9981931.051$1.05
BERA<0.01%$0.9986920.4559$0.4553
BERA<0.01%$1.970.1007$0.1984
SCROLL<0.01%$3,438.990.1752$602.35
SCROLL<0.01%$0.999858164.0046$163.98
SCROLL<0.01%$0.999588129.6388$129.59
SCROLL<0.01%$0.1678175.0864$12.6
SCROLL<0.01%$4,191.530.00176922$7.42
SCROLL<0.01%$102,439.60.00002657$2.72
SCROLL<0.01%$3,708.710.00005164$0.1915
SCROLL<0.01%$0.9997670.1825$0.1825
SCROLL<0.01%<$0.000001676,740.5584$0.1599
OPBNB<0.01%$992.890.3932$390.38
OPBNB<0.01%$1.0191.5317$91.99
OPBNB<0.01%$3,489.30.00005622$0.1961
SONIC<0.01%$0.999801318.2993$318.24
SONIC<0.01%$0.165045624.0116$102.99
SONIC<0.01%$0.0015.6716$0.00
SONIC<0.01%$102,1790.00014574$14.89
SONIC<0.01%$0.9993533.6627$3.66
SONIC<0.01%$0.0202448.5579$0.9828
SONIC<0.01%$3,439.860.00016478$0.5668
SONIC<0.01%$4.440.1051$0.4666
SONIC<0.01%$0.0505465.4415$0.275
SONIC<0.01%$0.001987105.1962$0.209
SONIC<0.01%$0.1703030.9058$0.1542
SONIC<0.01%$0.000.00085582$0.00
SONIC<0.01%$0.1647680.6865$0.1131
WORLD<0.01%$3,446.660.0414$142.84
WORLD<0.01%$0.82737639.0174$32.28
WORLD<0.01%$0.9998587.9617$7.96
WORLD<0.01%<$0.0000013,454,897.0375$0.8436
WORLD<0.01%$3,439.290.00005771$0.1984
MANTLE<0.01%$1.2927.1797$34.98
MANTLE<0.01%$112.5536$12.55
MANTLE<0.01%$3,513.080.00322804$11.34
MANTLE<0.01%$3,709.590.00233752$8.67
MANTLE<0.01%$0.9975277.4863$7.47
MANTLE<0.01%$1.290.1421$0.1833
ETH<0.01%$102,1790.00010942$11.18
ETH<0.01%<$0.0000011,000,000$0.3804
ETH<0.01%$0.001491160$0.2385
ETH<0.01%$0.000249757.1588$0.1886
ETH<0.01%$3,446.330.00004255$0.146628
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.