S Price: $0.464201 (+2.91%)

Contract

0xc73c9f34Cb88E96E4a8c654ED78d05B444c09A1F

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniV3PositionReader

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion, None license
/**
 *Submitted for verification at SonicScan.org on 2025-03-06
*/

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.1;

interface ArbSys {
    /**
     * @notice Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)
     * @return block number as int
     */
    function arbBlockNumber() external view returns (uint256);
}

interface Nfpm {
    function positions(
        uint256 tokenId
    )
        external
        view
        returns (
            uint96 nonce,
            address operator,
            address token0,
            address token1,
            uint24 fee,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        );

    function factory() external view returns (address);

    function ownerOf(uint256 tokenId) external view returns (address owner);
}

interface AlgebraNfpm {
    function positions(
        uint256 tokenId
    )
        external
        view
        returns (
            uint96 nonce,
            address operator,
            address token0,
            address token1,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        );

    function factory() external view returns (address);

    function ownerOf(uint256 tokenId) external view returns (address owner);
}

interface ShadowNfpm {
    function positions(
        uint256 tokenId
    )
        external
        view
        returns (
            address token0,
            address token1,
            int24 tickSpacing,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        );

    function ownerOf(uint256 tokenId) external view returns (address owner);
}

interface AlgebraPool {
    function globalState()
        external
        view
        returns (
            uint160 price,
            int24 tick,
            uint256 fee,
            uint256 timepointIndex,
            uint256 communityFeeToken0,
            uint256 communityFeeToken1,
            bool unlocked
        );
}

interface AlgebraPool2 {
    function globalState()
        external
        view
        returns (
            uint160 price,
            int24 tick,
            uint256 feeZto,
            uint256 feeOtz,
            uint256 timepointIndex,
            uint256 communityFeeToken0,
            uint256 communityFeeToken1,
            bool unlocked
        );
}

interface Factory {
    function getPool(
        address token0,
        address token1,
        uint24 fee
    ) external view returns (address);

    function poolByPair(
        address tokenA,
        address tokenB
    ) external view returns (address pool);
}

interface ThrusterFactory {
    function factory() external view returns (address);
}

interface ShadowPoolFactory {
    function getPool(
        address token0,
        address token1,
        int24 tickSpacing
    ) external view returns (address);
}

contract UniV3PositionReader {
    struct UniV3Position {
        address token0;
        address token1;
        uint24 fee;
        int24 tickSpacing;
        int24 tickLower;
        int24 tickUpper;
        uint128 liquidity;
        uint256 feeGrowthInside0LastX128;
        uint256 feeGrowthInside1LastX128;
        uint128 tokensOwed0;
        uint128 tokensOwed1;
        address factory;
        address pool;
        bool burned;
        bool success;
        address owner;
    }

    function getPositions(
        address[] calldata nfpms,
        uint256[] calldata tokenIds
    )
        public
        view
        returns (UniV3Position[] memory positions, uint256 blockNumber)
    {
        if (block.chainid == 42161) {
            blockNumber = ArbSys(address(100)).arbBlockNumber();
        } else {
            blockNumber = block.number;
        }
        positions = new UniV3Position[](nfpms.length);
        for (uint256 i = 0; i < nfpms.length; i++) {
            positions[i] = getPosition(nfpms[i], tokenIds[i]);
        }
    }

    function _getPositionAlgebraInternal(
        AlgebraNfpm nfpm,
        uint256 tokenId
    ) external view returns (UniV3Position memory position) {
        try nfpm.positions(tokenId) returns (
            uint96,
            address,
            address token0,
            address token1,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        ) {
            position.token0 = token0;
            position.token1 = token1;
            position.tickLower = tickLower;
            position.tickUpper = tickUpper;
            position.liquidity = liquidity;
            position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;
            position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;
            position.tokensOwed0 = tokensOwed0;
            position.tokensOwed1 = tokensOwed1;
        } catch {
            position.burned = true;
            position.success = true;
            return position;
        }
        position.factory = nfpm.factory();
        position.owner = nfpm.ownerOf(tokenId);
        position.pool = Factory(position.factory).poolByPair(
            position.token0,
            position.token1
        );
        try this._getPoolFeeAlgebra(position.pool) returns (uint24 fee) {
            position.fee = uint24(fee);
            position.success = true;
        } catch {}
        try this._getPoolFeeAlgebra2(position.pool) returns (uint24 fee) {
            position.fee = uint24(fee);
            position.success = true;
        } catch {}
    }

    function _getPoolFeeAlgebra(address pool) external view returns (uint24) {
        (, , uint256 fee, , , , ) = AlgebraPool(pool).globalState();
        return uint24(fee);
    }

    function _getPoolFeeAlgebra2(address pool) external view returns (uint24) {
        (, , uint256 fee, , , , , ) = AlgebraPool2(pool).globalState();
        return uint24(fee);
    }

    function _getPositionInternal(
        Nfpm nfpm,
        uint256 tokenId
    ) external view returns (UniV3Position memory position) {
        try nfpm.positions(tokenId) returns (
            uint96,
            address,
            address token0,
            address token1,
            uint24 fee,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        ) {
            position.token0 = token0;
            position.token1 = token1;
            position.fee = fee;
            position.tickLower = tickLower;
            position.tickUpper = tickUpper;
            position.liquidity = liquidity;
            position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;
            position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;
            position.tokensOwed0 = tokensOwed0;
            position.tokensOwed1 = tokensOwed1;
        } catch {
            position.burned = true;
            position.success = true;
            return position;
        }
        position.factory = nfpm.factory();
        position.owner = nfpm.ownerOf(tokenId);
        try
            this._getPoolUniV3(
                position.factory,
                position.token0,
                position.token1,
                position.fee
            )
        returns (address pool) {
            position.pool = pool;
            position.success = true;
        } catch {}
        try
            this._getPoolThruster(
                position.factory,
                position.token0,
                position.token1,
                position.fee
            )
        returns (address pool) {
            position.pool = pool;
            position.success = true;
        } catch {}
    }

    function _getPoolUniV3(
        address factory,
        address token0,
        address token1,
        uint24 fee
    ) external view returns (address) {
        return Factory(factory).getPool(token0, token1, fee);
    }

    function _getPoolThruster(
        address thrusterF,
        address token0,
        address token1,
        uint24 fee
    ) external view returns (address) {
        address factory = ThrusterFactory(thrusterF).factory();
        return Factory(factory).getPool(token0, token1, fee);
    }

    function _getPoolShadow(
        address factory,
        address token0,
        address token1,
        int24 tickSpacing
    ) external view returns (address) {
        return ShadowPoolFactory(factory).getPool(token0, token1, tickSpacing);
    }

    function _getPositionShadowInternal(
        ShadowNfpm nfpm,
        uint256 tokenId
    ) external view returns (UniV3Position memory position) {
        try nfpm.positions(tokenId) returns (
            address token0,
            address token1,
            int24 tickSpacing,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        ) {
            position.token0 = token0;
            position.token1 = token1;
            position.tickSpacing = tickSpacing;
            position.tickLower = tickLower;
            position.tickUpper = tickUpper;
            position.liquidity = liquidity;
            position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;
            position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;
            position.tokensOwed0 = tokensOwed0;
            position.tokensOwed1 = tokensOwed1;
        } catch {
            position.burned = true;
            position.success = true;
            return position;
        }

        position.owner = nfpm.ownerOf(tokenId);
        position.factory = 0xcD2d0637c94fe77C2896BbCBB174cefFb08DE6d7;

        try
            this._getPoolShadow(
                position.factory,
                position.token0,
                position.token1,
                position.tickSpacing
            )
        returns (address pool) {
            position.pool = pool;
            position.success = true;
        } catch {}
    }

    function getPosition(
        address nfpm,
        uint256 tokenId
    ) public view returns (UniV3Position memory position) {
        try this._getPositionInternal(Nfpm(nfpm), tokenId) returns (
            UniV3Position memory pos
        ) {
            position = pos;
        } catch {}
        try
            this._getPositionAlgebraInternal(AlgebraNfpm(nfpm), tokenId)
        returns (UniV3Position memory pos) {
            position = pos;
        } catch {}
        try this._getPositionShadowInternal(ShadowNfpm(nfpm), tokenId) returns (
            UniV3Position memory pos
        ) {
            position = pos;
        } catch {}
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"_getPoolFeeAlgebra","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"_getPoolFeeAlgebra2","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"_getPoolShadow","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"thrusterF","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"_getPoolThruster","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"_getPoolUniV3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract AlgebraNfpm","name":"nfpm","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_getPositionAlgebraInternal","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position","name":"position","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract Nfpm","name":"nfpm","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_getPositionInternal","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position","name":"position","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ShadowNfpm","name":"nfpm","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_getPositionShadowInternal","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position","name":"position","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nfpm","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getPosition","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position","name":"position","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"nfpms","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"getPositions","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position[]","name":"positions","type":"tuple[]"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052348015600e575f5ffd5b506118d98061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c8063b0d442f411610063578063b0d442f41461014e578063bd820d2e14610161578063be4f8d7714610174578063bfa35c0514610187578063d04ba8aa1461019a575f5ffd5b80633adbb5af1461009f57806350ce27b5146100c8578063629a33e7146100e95780637029b3e7146100fc5780638f92c0de14610127575b5f5ffd5b6100b26100ad366004610f9c565b6101ad565b6040516100bf9190611136565b60405180910390f35b6100db6100d636600461118d565b61030c565b6040516100bf9291906111f9565b6100b26100f7366004610f9c565b610459565b61010f61010a366004611261565b610778565b6040516001600160a01b0390911681526020016100bf565b61013a6101353660046112ba565b610863565b60405162ffffff90911681526020016100bf565b6100b261015c366004610f9c565b6108d5565b6100b261016f366004610f9c565b610a8f565b61013a6101823660046112ba565b610dc7565b61010f6101953660046112e3565b610e37565b61010f6101a8366004611261565b610ebe565b6101b5610f02565b60405163629a33e760e01b81526001600160a01b038416600482015260248101839052309063629a33e79060440161020060405180830381865afa92505050801561021d575060408051601f3d908101601f1916820190925261021a918101906113c6565b60015b156102255790505b604051635ec1069760e11b81526001600160a01b038416600482015260248101839052309063bd820d2e9060440161020060405180830381865afa92505050801561028d575060408051601f3d908101601f1916820190925261028a918101906113c6565b60015b156102955790505b604051632c3510bd60e21b81526001600160a01b038416600482015260248101839052309063b0d442f49060440161020060405180830381865afa9250505080156102fd575060408051601f3d908101601f191682019092526102fa918101906113c6565b60015b15610306575b90505b92915050565b60605f4661a4b1036103805760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610355573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037991906114f3565b9050610383565b50435b8467ffffffffffffffff81111561039c5761039c611331565b6040519080825280602002602001820160405280156103d557816020015b6103c2610f02565b8152602001906001900390816103ba5790505b5091505f5b8581101561044f5761042a8787838181106103f7576103f761150a565b905060200201602081019061040c91906112ba565b86868481811061041e5761041e61150a565b905060200201356101ad565b83828151811061043c5761043c61150a565b60209081029190910101526001016103da565b5094509492505050565b610461610f02565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161018060405180830381865afa9250505080156104c3575060408051601f3d908101601f191682019092526104c091810190611539565b60015b6104dc5760016101a082018190526101c0820152610306565b6001600160a01b03998a168d529790981660208c015262ffffff90951660408b0152600293840b60808b01529190920b60a08901526001600160801b0391821660c089015260e0880152610100870191909152918216610120860152166101408401525050826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a1919061160f565b6001600160a01b039081166101608301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa1580156105ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610612919061160f565b6001600160a01b039081166101e0830152610160820151825160208401516040808601519051636825d45560e11b815293851660048501529184166024840152909216604482015262ffffff9091166064820152309063d04ba8aa90608401602060405180830381865afa9250505080156106aa575060408051601f3d908101601f191682019092526106a79181019061160f565b60015b156106c7576001600160a01b031661018082015260016101c08201525b610160810151815160208301516040808501519051637029b3e760e01b81526001600160a01b03948516600482015292841660248401529216604482015262ffffff90911660648201523090637029b3e7906084015b602060405180830381865afa925050508015610756575060408051601f3d908101601f191682019092526107539181019061160f565b60015b15610306576001600160a01b031661018082015260016101c082015292915050565b5f5f856001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107da919061160f565b604051630b4c774160e11b81526001600160a01b038781166004830152868116602483015262ffffff8616604483015291925090821690631698ee8290606401602060405180830381865afa158015610835573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610859919061160f565b9695505050505050565b5f5f826001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040161010060405180830381865afa1580156108a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c6919061162a565b50939998505050505050505050565b6108dd610f02565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161014060405180830381865afa92505050801561093f575060408051601f3d908101601f1916820190925261093c918101906116a1565b60015b6109585760016101a082018190526101c0820152610306565b6001600160a01b03998a168b5297891660208b0152600296870b60608b015294860b60808a01529290940b60a08801526001600160801b0390811660c088015260e08701939093526101008601528116610120850152166101408301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa1580156109f1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a15919061160f565b6001600160a01b039081166101e083015273cd2d0637c94fe77c2896bbcbb174ceffb08de6d7610160830181905282516020840151606085015160405163bfa35c0560e01b815260048101949094529184166024840152909216604482015260029190910b6064820152309063bfa35c059060840161071d565b610a97610f02565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161016060405180830381865afa925050508015610af9575060408051601f3d908101601f19168201909252610af691810190611756565b60015b610b125760016101a082018190526101c0820152610306565b6001600160a01b039889168c529690971660208b0152600294850b60808b01529290930b60a08901526001600160801b0390811660c089015260e0880192909252610100870152918216610120860152166101408401525050826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bcb919061160f565b6001600160a01b039081166101608301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa158015610c18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3c919061160f565b6001600160a01b039081166101e08301526101608201518251602084015160405163d9a641e160e01b815291841660048301528316602482015291169063d9a641e190604401602060405180830381865afa158015610c9d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc1919061160f565b6001600160a01b0316610180820181905260405163be4f8d7760e01b81526004810191909152309063be4f8d7790602401602060405180830381865afa925050508015610d2b575060408051601f3d908101601f19168201909252610d289181019061181c565b60015b15610d435762ffffff16604082015260016101c08201525b6101808101516040516347c9606f60e11b81526001600160a01b0390911660048201523090638f92c0de90602401602060405180830381865afa925050508015610daa575060408051601f3d908101601f19168201909252610da79181019061181c565b60015b156103065762ffffff16604082015260016101c082015292915050565b5f5f826001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015610e05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e299190611837565b509298975050505050505050565b6040516328af8d0b60e01b81526001600160a01b0384811660048301528381166024830152600283900b60448301525f91908616906328af8d0b906064015b602060405180830381865afa158015610e91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb5919061160f565b95945050505050565b604051630b4c774160e11b81526001600160a01b038481166004830152838116602483015262ffffff831660448301525f9190861690631698ee8290606401610e76565b60408051610200810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081019190915290565b6001600160a01b0381168114610f99575f5ffd5b50565b5f5f60408385031215610fad575f5ffd5b8235610fb881610f85565b946020939093013593505050565b80516001600160a01b031682526020810151610fed60208401826001600160a01b03169052565b506040810151611004604084018262ffffff169052565b506060810151611019606084018260020b9052565b50608081015161102e608084018260020b9052565b5060a081015161104360a084018260020b9052565b5060c081015161105e60c08401826001600160801b03169052565b5060e081015160e08301526101008101516101008301526101208101516110916101208401826001600160801b03169052565b506101408101516110ae6101408401826001600160801b03169052565b506101608101516110cb6101608401826001600160a01b03169052565b506101808101516110e86101808401826001600160a01b03169052565b506101a08101516110fe6101a084018215159052565b506101c08101516111146101c084018215159052565b506101e08101516111316101e08401826001600160a01b03169052565b505050565b61020081016103068284610fc6565b5f5f83601f840112611155575f5ffd5b50813567ffffffffffffffff81111561116c575f5ffd5b6020830191508360208260051b8501011115611186575f5ffd5b9250929050565b5f5f5f5f604085870312156111a0575f5ffd5b843567ffffffffffffffff8111156111b6575f5ffd5b6111c287828801611145565b909550935050602085013567ffffffffffffffff8111156111e1575f5ffd5b6111ed87828801611145565b95989497509550505050565b604080825283519082018190525f9060208501906060840190835b8181101561123e57611227838551610fc6565b602093909301926102009290920191600101611214565b5050602093909301939093525092915050565b62ffffff81168114610f99575f5ffd5b5f5f5f5f60808587031215611274575f5ffd5b843561127f81610f85565b9350602085013561128f81610f85565b9250604085013561129f81610f85565b915060608501356112af81611251565b939692955090935050565b5f602082840312156112ca575f5ffd5b813561030381610f85565b8060020b8114610f99575f5ffd5b5f5f5f5f608085870312156112f6575f5ffd5b843561130181610f85565b9350602085013561131181610f85565b9250604085013561132181610f85565b915060608501356112af816112d5565b634e487b7160e01b5f52604160045260245ffd5b604051610200810167ffffffffffffffff8111828210171561137557634e487b7160e01b5f52604160045260245ffd5b60405290565b805161138681610f85565b919050565b805161138681611251565b8051611386816112d5565b80516001600160801b0381168114611386575f5ffd5b80518015158114611386575f5ffd5b5f6102008284031280156113d8575f5ffd5b506113e1611345565b6113ea8361137b565b81526113f86020840161137b565b60208201526114096040840161138b565b604082015261141a60608401611396565b606082015261142b60808401611396565b608082015261143c60a08401611396565b60a082015261144d60c084016113a1565b60c082015260e08381015190820152610100808401519082015261147461012084016113a1565b61012082015261148761014084016113a1565b61014082015261149a610160840161137b565b6101608201526114ad610180840161137b565b6101808201526114c06101a084016113b7565b6101a08201526114d36101c084016113b7565b6101c08201526114e66101e0840161137b565b6101e08201529392505050565b5f60208284031215611503575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b80516bffffffffffffffffffffffff81168114611386575f5ffd5b5f5f5f5f5f5f5f5f5f5f5f5f6101808d8f031215611555575f5ffd5b61155e8d61151e565b9b5060208d015161156e81610f85565b60408e0151909b5061157f81610f85565b60608e0151909a5061159081610f85565b60808e01519099506115a181611251565b60a08e01519098506115b2816112d5565b96506115c060c08e01611396565b95506115ce60e08e016113a1565b6101008e01516101208f0151919650945092506115ee6101408e016113a1565b91506115fd6101608e016113a1565b90509295989b509295989b509295989b565b5f6020828403121561161f575f5ffd5b815161030381610f85565b5f5f5f5f5f5f5f5f610100898b031215611642575f5ffd5b885161164d81610f85565b60208a015190985061165e816112d5565b60408a015160608b015160808c015160a08d015160c08e0151949b5092995090975095509350915061169260e08a016113b7565b90509295985092959890939650565b5f5f5f5f5f5f5f5f5f5f6101408b8d0312156116bb575f5ffd5b8a516116c681610f85565b60208c0151909a506116d781610f85565b60408c01519099506116e8816112d5565b60608c01519098506116f9816112d5565b60808c015190975061170a816112d5565b955061171860a08c016113a1565b60c08c015160e08d0151919650945092506117366101008c016113a1565b91506117456101208c016113a1565b90509295989b9194979a5092959850565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e031215611771575f5ffd5b61177a8c61151e565b9a5060208c015161178a81610f85565b60408d0151909a5061179b81610f85565b60608d01519099506117ac81610f85565b60808d01519098506117bd816112d5565b60a08d01519097506117ce816112d5565b95506117dc60c08d016113a1565b60e08d01516101008e0151919650945092506117fb6101208d016113a1565b915061180a6101408d016113a1565b90509295989b509295989b9093969950565b5f6020828403121561182c575f5ffd5b815161030381611251565b5f5f5f5f5f5f5f60e0888a03121561184d575f5ffd5b875161185881610f85565b6020890151909750611869816112d5565b604089015160608a015160808b015160a08c015193995091975095509350915061189560c089016113b7565b90509295989194975092955056fea264697066735822122032f574fd1a570510f4a38baf426b43cac2d537a7f52703b5c183ad0fd527804664736f6c634300081c0033

Deployed Bytecode

0x608060405234801561000f575f5ffd5b506004361061009b575f3560e01c8063b0d442f411610063578063b0d442f41461014e578063bd820d2e14610161578063be4f8d7714610174578063bfa35c0514610187578063d04ba8aa1461019a575f5ffd5b80633adbb5af1461009f57806350ce27b5146100c8578063629a33e7146100e95780637029b3e7146100fc5780638f92c0de14610127575b5f5ffd5b6100b26100ad366004610f9c565b6101ad565b6040516100bf9190611136565b60405180910390f35b6100db6100d636600461118d565b61030c565b6040516100bf9291906111f9565b6100b26100f7366004610f9c565b610459565b61010f61010a366004611261565b610778565b6040516001600160a01b0390911681526020016100bf565b61013a6101353660046112ba565b610863565b60405162ffffff90911681526020016100bf565b6100b261015c366004610f9c565b6108d5565b6100b261016f366004610f9c565b610a8f565b61013a6101823660046112ba565b610dc7565b61010f6101953660046112e3565b610e37565b61010f6101a8366004611261565b610ebe565b6101b5610f02565b60405163629a33e760e01b81526001600160a01b038416600482015260248101839052309063629a33e79060440161020060405180830381865afa92505050801561021d575060408051601f3d908101601f1916820190925261021a918101906113c6565b60015b156102255790505b604051635ec1069760e11b81526001600160a01b038416600482015260248101839052309063bd820d2e9060440161020060405180830381865afa92505050801561028d575060408051601f3d908101601f1916820190925261028a918101906113c6565b60015b156102955790505b604051632c3510bd60e21b81526001600160a01b038416600482015260248101839052309063b0d442f49060440161020060405180830381865afa9250505080156102fd575060408051601f3d908101601f191682019092526102fa918101906113c6565b60015b15610306575b90505b92915050565b60605f4661a4b1036103805760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610355573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037991906114f3565b9050610383565b50435b8467ffffffffffffffff81111561039c5761039c611331565b6040519080825280602002602001820160405280156103d557816020015b6103c2610f02565b8152602001906001900390816103ba5790505b5091505f5b8581101561044f5761042a8787838181106103f7576103f761150a565b905060200201602081019061040c91906112ba565b86868481811061041e5761041e61150a565b905060200201356101ad565b83828151811061043c5761043c61150a565b60209081029190910101526001016103da565b5094509492505050565b610461610f02565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161018060405180830381865afa9250505080156104c3575060408051601f3d908101601f191682019092526104c091810190611539565b60015b6104dc5760016101a082018190526101c0820152610306565b6001600160a01b03998a168d529790981660208c015262ffffff90951660408b0152600293840b60808b01529190920b60a08901526001600160801b0391821660c089015260e0880152610100870191909152918216610120860152166101408401525050826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a1919061160f565b6001600160a01b039081166101608301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa1580156105ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610612919061160f565b6001600160a01b039081166101e0830152610160820151825160208401516040808601519051636825d45560e11b815293851660048501529184166024840152909216604482015262ffffff9091166064820152309063d04ba8aa90608401602060405180830381865afa9250505080156106aa575060408051601f3d908101601f191682019092526106a79181019061160f565b60015b156106c7576001600160a01b031661018082015260016101c08201525b610160810151815160208301516040808501519051637029b3e760e01b81526001600160a01b03948516600482015292841660248401529216604482015262ffffff90911660648201523090637029b3e7906084015b602060405180830381865afa925050508015610756575060408051601f3d908101601f191682019092526107539181019061160f565b60015b15610306576001600160a01b031661018082015260016101c082015292915050565b5f5f856001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107da919061160f565b604051630b4c774160e11b81526001600160a01b038781166004830152868116602483015262ffffff8616604483015291925090821690631698ee8290606401602060405180830381865afa158015610835573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610859919061160f565b9695505050505050565b5f5f826001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040161010060405180830381865afa1580156108a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c6919061162a565b50939998505050505050505050565b6108dd610f02565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161014060405180830381865afa92505050801561093f575060408051601f3d908101601f1916820190925261093c918101906116a1565b60015b6109585760016101a082018190526101c0820152610306565b6001600160a01b03998a168b5297891660208b0152600296870b60608b015294860b60808a01529290940b60a08801526001600160801b0390811660c088015260e08701939093526101008601528116610120850152166101408301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa1580156109f1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a15919061160f565b6001600160a01b039081166101e083015273cd2d0637c94fe77c2896bbcbb174ceffb08de6d7610160830181905282516020840151606085015160405163bfa35c0560e01b815260048101949094529184166024840152909216604482015260029190910b6064820152309063bfa35c059060840161071d565b610a97610f02565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161016060405180830381865afa925050508015610af9575060408051601f3d908101601f19168201909252610af691810190611756565b60015b610b125760016101a082018190526101c0820152610306565b6001600160a01b039889168c529690971660208b0152600294850b60808b01529290930b60a08901526001600160801b0390811660c089015260e0880192909252610100870152918216610120860152166101408401525050826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bcb919061160f565b6001600160a01b039081166101608301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa158015610c18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3c919061160f565b6001600160a01b039081166101e08301526101608201518251602084015160405163d9a641e160e01b815291841660048301528316602482015291169063d9a641e190604401602060405180830381865afa158015610c9d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc1919061160f565b6001600160a01b0316610180820181905260405163be4f8d7760e01b81526004810191909152309063be4f8d7790602401602060405180830381865afa925050508015610d2b575060408051601f3d908101601f19168201909252610d289181019061181c565b60015b15610d435762ffffff16604082015260016101c08201525b6101808101516040516347c9606f60e11b81526001600160a01b0390911660048201523090638f92c0de90602401602060405180830381865afa925050508015610daa575060408051601f3d908101601f19168201909252610da79181019061181c565b60015b156103065762ffffff16604082015260016101c082015292915050565b5f5f826001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015610e05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e299190611837565b509298975050505050505050565b6040516328af8d0b60e01b81526001600160a01b0384811660048301528381166024830152600283900b60448301525f91908616906328af8d0b906064015b602060405180830381865afa158015610e91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb5919061160f565b95945050505050565b604051630b4c774160e11b81526001600160a01b038481166004830152838116602483015262ffffff831660448301525f9190861690631698ee8290606401610e76565b60408051610200810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081019190915290565b6001600160a01b0381168114610f99575f5ffd5b50565b5f5f60408385031215610fad575f5ffd5b8235610fb881610f85565b946020939093013593505050565b80516001600160a01b031682526020810151610fed60208401826001600160a01b03169052565b506040810151611004604084018262ffffff169052565b506060810151611019606084018260020b9052565b50608081015161102e608084018260020b9052565b5060a081015161104360a084018260020b9052565b5060c081015161105e60c08401826001600160801b03169052565b5060e081015160e08301526101008101516101008301526101208101516110916101208401826001600160801b03169052565b506101408101516110ae6101408401826001600160801b03169052565b506101608101516110cb6101608401826001600160a01b03169052565b506101808101516110e86101808401826001600160a01b03169052565b506101a08101516110fe6101a084018215159052565b506101c08101516111146101c084018215159052565b506101e08101516111316101e08401826001600160a01b03169052565b505050565b61020081016103068284610fc6565b5f5f83601f840112611155575f5ffd5b50813567ffffffffffffffff81111561116c575f5ffd5b6020830191508360208260051b8501011115611186575f5ffd5b9250929050565b5f5f5f5f604085870312156111a0575f5ffd5b843567ffffffffffffffff8111156111b6575f5ffd5b6111c287828801611145565b909550935050602085013567ffffffffffffffff8111156111e1575f5ffd5b6111ed87828801611145565b95989497509550505050565b604080825283519082018190525f9060208501906060840190835b8181101561123e57611227838551610fc6565b602093909301926102009290920191600101611214565b5050602093909301939093525092915050565b62ffffff81168114610f99575f5ffd5b5f5f5f5f60808587031215611274575f5ffd5b843561127f81610f85565b9350602085013561128f81610f85565b9250604085013561129f81610f85565b915060608501356112af81611251565b939692955090935050565b5f602082840312156112ca575f5ffd5b813561030381610f85565b8060020b8114610f99575f5ffd5b5f5f5f5f608085870312156112f6575f5ffd5b843561130181610f85565b9350602085013561131181610f85565b9250604085013561132181610f85565b915060608501356112af816112d5565b634e487b7160e01b5f52604160045260245ffd5b604051610200810167ffffffffffffffff8111828210171561137557634e487b7160e01b5f52604160045260245ffd5b60405290565b805161138681610f85565b919050565b805161138681611251565b8051611386816112d5565b80516001600160801b0381168114611386575f5ffd5b80518015158114611386575f5ffd5b5f6102008284031280156113d8575f5ffd5b506113e1611345565b6113ea8361137b565b81526113f86020840161137b565b60208201526114096040840161138b565b604082015261141a60608401611396565b606082015261142b60808401611396565b608082015261143c60a08401611396565b60a082015261144d60c084016113a1565b60c082015260e08381015190820152610100808401519082015261147461012084016113a1565b61012082015261148761014084016113a1565b61014082015261149a610160840161137b565b6101608201526114ad610180840161137b565b6101808201526114c06101a084016113b7565b6101a08201526114d36101c084016113b7565b6101c08201526114e66101e0840161137b565b6101e08201529392505050565b5f60208284031215611503575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b80516bffffffffffffffffffffffff81168114611386575f5ffd5b5f5f5f5f5f5f5f5f5f5f5f5f6101808d8f031215611555575f5ffd5b61155e8d61151e565b9b5060208d015161156e81610f85565b60408e0151909b5061157f81610f85565b60608e0151909a5061159081610f85565b60808e01519099506115a181611251565b60a08e01519098506115b2816112d5565b96506115c060c08e01611396565b95506115ce60e08e016113a1565b6101008e01516101208f0151919650945092506115ee6101408e016113a1565b91506115fd6101608e016113a1565b90509295989b509295989b509295989b565b5f6020828403121561161f575f5ffd5b815161030381610f85565b5f5f5f5f5f5f5f5f610100898b031215611642575f5ffd5b885161164d81610f85565b60208a015190985061165e816112d5565b60408a015160608b015160808c015160a08d015160c08e0151949b5092995090975095509350915061169260e08a016113b7565b90509295985092959890939650565b5f5f5f5f5f5f5f5f5f5f6101408b8d0312156116bb575f5ffd5b8a516116c681610f85565b60208c0151909a506116d781610f85565b60408c01519099506116e8816112d5565b60608c01519098506116f9816112d5565b60808c015190975061170a816112d5565b955061171860a08c016113a1565b60c08c015160e08d0151919650945092506117366101008c016113a1565b91506117456101208c016113a1565b90509295989b9194979a5092959850565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e031215611771575f5ffd5b61177a8c61151e565b9a5060208c015161178a81610f85565b60408d0151909a5061179b81610f85565b60608d01519099506117ac81610f85565b60808d01519098506117bd816112d5565b60a08d01519097506117ce816112d5565b95506117dc60c08d016113a1565b60e08d01516101008e0151919650945092506117fb6101208d016113a1565b915061180a6101408d016113a1565b90509295989b509295989b9093969950565b5f6020828403121561182c575f5ffd5b815161030381611251565b5f5f5f5f5f5f5f60e0888a03121561184d575f5ffd5b875161185881610f85565b6020890151909750611869816112d5565b604089015160608a015160808b015160a08c015193995091975095509350915061189560c089016113b7565b90509295989194975092955056fea264697066735822122032f574fd1a570510f4a38baf426b43cac2d537a7f52703b5c183ad0fd527804664736f6c634300081c0033

Deployed Bytecode Sourcemap

3504:8346:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11176:671;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4020:578;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;6739:1951::-;;;;;;:::i;:::-;;:::i;8936:300::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6301:32:1;;;6283:51;;6271:2;6256:18;8936:300:0;6137:203:1;6547:184:0;;;;;;:::i;:::-;;:::i;:::-;;;6771:8:1;6759:21;;;6741:40;;6729:2;6714:18;6547:184:0;6597:190:1;9508:1660:0;;;;;;:::i;:::-;;:::i;4606:1745::-;;;;;;:::i;:::-;;:::i;6359:180::-;;;;;;:::i;:::-;;:::i;9244:256::-;;;;;;:::i;:::-;;:::i;8698:230::-;;;;;;:::i;:::-;;:::i;11176:671::-;11274:29;;:::i;:::-;11320:46;;-1:-1:-1;;;11320:46:0;;-1:-1:-1;;;;;8570:32:1;;11320:46:0;;;8552:51:1;8619:18;;;8612:34;;;11320:4:0;;:25;;8525:18:1;;11320:46:0;;;;;;;;;;;;;;;;;;-1:-1:-1;11320:46:0;;;;;;;;-1:-1:-1;;11320:46:0;;;;;;;;;;;;:::i;:::-;;;11316:160;;;11452:3;-1:-1:-1;11316:160:0;11503:60;;-1:-1:-1;;;11503:60:0;;-1:-1:-1;;;;;8570:32:1;;11503:60:0;;;8552:51:1;8619:18;;;8612:34;;;11503:4:0;;:32;;8525:18:1;;11503:60:0;;;;;;;;;;;;;;;;;;-1:-1:-1;11503:60:0;;;;;;;;-1:-1:-1;;11503:60:0;;;;;;;;;;;;:::i;:::-;;;11486:172;;;11634:3;-1:-1:-1;11486:172:0;11672:58;;-1:-1:-1;;;11672:58:0;;-1:-1:-1;;;;;8570:32:1;;11672:58:0;;;8552:51:1;8619:18;;;8612:34;;;11672:4:0;;:31;;8525:18:1;;11672:58:0;;;;;;;;;;;;;;;;;;-1:-1:-1;11672:58:0;;;;;;;;-1:-1:-1;;11672:58:0;;;;;;;;;;;;:::i;:::-;;;11668:172;;;;11816:3;-1:-1:-1;11668:172:0;11176:671;;;;:::o;4020:578::-;4170:32;4204:19;4245:13;4262:5;4245:22;4241:165;;4313:3;-1:-1:-1;;;;;4298:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4284:51;;4241:165;;;-1:-1:-1;4382:12:0;4241:165;4448:5;4428:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;4416:45:0;-1:-1:-1;4477:9:0;4472:119;4492:16;;;4472:119;;;4545:34;4557:5;;4563:1;4557:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4567;;4576:1;4567:11;;;;;;;:::i;:::-;;;;;;;4545;:34::i;:::-;4530:9;4540:1;4530:12;;;;;;;;:::i;:::-;;;;;;;;;;:49;4510:3;;4472:119;;;;4020:578;;;;;;;:::o;6739:1951::-;6845:29;;:::i;:::-;6891:23;;-1:-1:-1;;;6891:23:0;;;;;12680:25:1;;;-1:-1:-1;;;;;6891:14:0;;;;;12653:18:1;;6891:23:0;;;;;;;;;;;;;;;;;;-1:-1:-1;6891:23:0;;;;;;;;-1:-1:-1;;6891:23:0;;;;;;;;;;;;:::i;:::-;;;6887:1058;;7861:4;7843:15;;;:22;;;7880:16;;;:23;7918:15;;6887:1058;-1:-1:-1;;;;;7330:24:0;;;;;7369;;;;:15;;;:24;7408:18;;;;:12;;;:18;7441:30;;;;:18;;;:30;7486;;;;:18;;;:30;-1:-1:-1;;;;;7531:30:0;;;:18;;;:30;7576:33;;;:60;7651:33;;;:60;;;;7726:34;;;:20;;;:34;7775;:20;;;:34;-1:-1:-1;;7974:4:0;-1:-1:-1;;;;;7974:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7955:33:0;;;:16;;;:33;8016:21;;-1:-1:-1;;;8016:21:0;;;;;12680:25:1;;;8016:12:0;;;;;;12653:18:1;;8016:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7999:38:0;;;:14;;;:38;8102:16;;;;8137:15;;8171;;;;8205:12;;;;;8065:167;;-1:-1:-1;;;8065:167:0;;14893:32:1;;;8065:167:0;;;14875:51:1;14962:32;;;14942:18;;;14935:60;15031:32;;;15011:18;;;15004:60;15112:8;15100:21;;;15080:18;;;15073:49;8065:4:0;;:18;;14847:19:1;;8065:167:0;;;;;;;;;;;;;;;;;;-1:-1:-1;8065:167:0;;;;;;;;-1:-1:-1;;8065:167:0;;;;;;;;;;;;:::i;:::-;;;8048:311;;;-1:-1:-1;;;;;8280:20:0;:13;;;:20;8334:4;8315:16;;;:23;8048:311;8426:16;;;;8461:15;;8495;;;;8529:12;;;;;8386:170;;-1:-1:-1;;;8386:170:0;;-1:-1:-1;;;;;14893:32:1;;;8386:170:0;;;14875:51:1;14962:32;;;14942:18;;;14935:60;15031:32;;15011:18;;;15004:60;15112:8;15100:21;;;15080:18;;;15073:49;8386:4:0;;:21;;14847:19:1;;8386:170:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;8386:170:0;;;;;;;;-1:-1:-1;;8386:170:0;;;;;;;;;;;;:::i;:::-;;;8369:314;;;-1:-1:-1;;;;;8604:20:0;:13;;;:20;8658:4;8639:16;;;:23;6739:1951;;;;:::o;8936:300::-;9091:7;9111:15;9145:9;-1:-1:-1;;;;;9129:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9183:45;;-1:-1:-1;;;9183:45:0;;-1:-1:-1;;;;;15351:32:1;;;9183:45:0;;;15333:51:1;15420:32;;;15400:18;;;15393:60;15501:8;15489:21;;15469:18;;;15462:49;9111:54:0;;-1:-1:-1;9183:24:0;;;;;;15306:18:1;;9183:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9176:52;8936:300;-1:-1:-1;;;;;;8936:300:0:o;6547:184::-;6613:6;6637:11;6675:4;-1:-1:-1;;;;;6662:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6632:62:0;;6547:184;-1:-1:-1;;;;;;;;;6547:184:0:o;9508:1660::-;9626:29;;:::i;:::-;9672:23;;-1:-1:-1;;;9672:23:0;;;;;12680:25:1;;;-1:-1:-1;;;;;9672:14:0;;;;;12653:18:1;;9672:23:0;;;;;;;;;;;;;;;;;;-1:-1:-1;9672:23:0;;;;;;;;-1:-1:-1;;9672:23:0;;;;;;;;;;;;:::i;:::-;;;9668:1038;;10622:4;10604:15;;;:22;;;10641:16;;;:23;10679:15;;9668:1038;-1:-1:-1;;;;;10075:24:0;;;;;10114;;;:15;;;:24;10153:34;;;;:20;;;:34;10202:30;;;:18;;;:30;10247;;;;:18;;;:30;-1:-1:-1;;;;;10292:30:0;;;:18;;;:30;10337:33;;;:60;;;;10412:33;;;:60;10487:34;;:20;;;:34;10536;:20;;;:34;10735:21;;-1:-1:-1;;;10735:21:0;;;;;12680:25:1;;;10735:12:0;;;;;;12653:18:1;;10735:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10718:38:0;;;:14;;;:38;10786:42;10767:16;;;:61;;;10931:15;;10965;;;;10999:20;;;;10858:176;;-1:-1:-1;;;10858:176:0;;;;;18052:51:1;;;;18139:32;;;18119:18;;;18112:60;18208:32;;;18188:18;;;18181:60;18288:1;18277:21;;;;18257:18;;;18250:49;10858:4:0;;:19;;18024::1;;10858:176:0;17825:480:1;4606:1745:0;4726:29;;:::i;:::-;4772:23;;-1:-1:-1;;;4772:23:0;;;;;12680:25:1;;;-1:-1:-1;;;;;4772:14:0;;;;;12653:18:1;;4772:23:0;;;;;;;;;;;;;;;;;;-1:-1:-1;4772:23:0;;;;;;;;-1:-1:-1;;4772:23:0;;;;;;;;;;;;:::i;:::-;;;4768:1000;;5684:4;5666:15;;;:22;;;5703:16;;;:23;5741:15;;4768:1000;-1:-1:-1;;;;;5186:24:0;;;;;5225;;;;:15;;;:24;5264:30;;;;:18;;;:30;5309;;;;:18;;;:30;-1:-1:-1;;;;;5354:30:0;;;:18;;;:30;5399:33;;;:60;;;;5474:33;;;:60;5549:34;;;:20;;;:34;5598;:20;;;:34;-1:-1:-1;;5797:4:0;-1:-1:-1;;;;;5797:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5778:33:0;;;:16;;;:33;5839:21;;-1:-1:-1;;;5839:21:0;;;;;12680:25:1;;;5839:12:0;;;;;;12653:18:1;;5839:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5822:38:0;;;:14;;;:38;5895:16;;;;5938:15;;5968;;;;5887:107;;-1:-1:-1;;;5887:107:0;;19860:32:1;;;5887:107:0;;;19842:51:1;19929:32;;19909:18;;;19902:60;5887:36:0;;;;;19815:18:1;;5887:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5871:123:0;:13;;;:123;;;6009:38;;-1:-1:-1;;;6009:38:0;;;;;6283:51:1;;;;6009:4:0;;:23;;6256:18:1;;6009:38:0;;;;;;;;;;;;;;;;;;-1:-1:-1;6009:38:0;;;;;;;;-1:-1:-1;;6009:38:0;;;;;;;;;;;;:::i;:::-;;;6005:164;;;6084:26;;:12;;;:26;6144:4;6125:16;;;:23;6005:164;6208:13;;;;6183:39;;-1:-1:-1;;;6183:39:0;;-1:-1:-1;;;;;6301:32:1;;;6183:39:0;;;6283:51:1;6183:4:0;;:24;;6256:18:1;;6183:39:0;;;;;;;;;;;;;;;;;;-1:-1:-1;6183:39:0;;;;;;;;-1:-1:-1;;6183:39:0;;;;;;;;;;;;:::i;:::-;;;6179:165;;;6259:26;;:12;;;:26;6319:4;6300:16;;;:23;4606:1745;;;;:::o;6359:180::-;6424:6;6448:11;6483:4;-1:-1:-1;;;;;6471:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6443:59:0;;6359:180;-1:-1:-1;;;;;;;;6359:180:0:o;9244:256::-;9429:63;;-1:-1:-1;;;9429:63:0;;-1:-1:-1;;;;;21364:32:1;;;9429:63:0;;;21346:51:1;21433:32;;;21413:18;;;21406:60;21513:1;21502:21;;;21482:18;;;21475:49;9402:7:0;;9429:34;;;;;;21319:18:1;;9429:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9422:70;9244:256;-1:-1:-1;;;;;9244:256:0:o;8698:230::-;8875:45;;-1:-1:-1;;;8875:45:0;;-1:-1:-1;;;;;15351:32:1;;;8875:45:0;;;15333:51:1;15420:32;;;15400:18;;;15393:60;15501:8;15489:21;;15469:18;;;15462:49;8848:7:0;;8875:24;;;;;;15306:18:1;;8875:45:0;15133:384:1;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:367::-;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;481:2;466:18;;;;453:32;;-1:-1:-1;;;150:367:1:o;1044:1712::-;1130:12;;-1:-1:-1;;;;;588:31:1;576:44;;1194:4;1187:5;1183:16;1177:23;1209:48;1251:4;1246:3;1242:14;1228:12;-1:-1:-1;;;;;588:31:1;576:44;;522:104;1209:48;;1305:4;1298:5;1294:16;1288:23;1320:49;1363:4;1358:3;1354:14;1338;707:8;696:20;684:33;;631:92;1320:49;;1417:4;1410:5;1406:16;1400:23;1432:48;1474:4;1469:3;1465:14;1449;803:1;792:20;780:33;;728:91;1432:48;;1528:4;1521:5;1517:16;1511:23;1543:48;1585:4;1580:3;1576:14;1560;803:1;792:20;780:33;;728:91;1543:48;;1639:4;1632:5;1628:16;1622:23;1654:48;1696:4;1691:3;1687:14;1671;803:1;792:20;780:33;;728:91;1654:48;;1750:4;1743:5;1739:16;1733:23;1765:50;1809:4;1804:3;1800:14;1784;-1:-1:-1;;;;;890:46:1;878:59;;824:119;1765:50;;1864:4;1857:5;1853:16;1847:23;1840:4;1835:3;1831:14;1824:47;1922:6;1915:5;1911:18;1905:25;1896:6;1891:3;1887:16;1880:51;1979:6;1972:5;1968:18;1962:25;1996:52;2040:6;2035:3;2031:16;2015:14;-1:-1:-1;;;;;890:46:1;878:59;;824:119;1996:52;;2096:6;2089:5;2085:18;2079:25;2113:52;2157:6;2152:3;2148:16;2132:14;-1:-1:-1;;;;;890:46:1;878:59;;824:119;2113:52;;2213:6;2206:5;2202:18;2196:25;2230:52;2274:6;2269:3;2265:16;2249:14;-1:-1:-1;;;;;588:31:1;576:44;;522:104;2230:52;;2330:6;2323:5;2319:18;2313:25;2347:52;2391:6;2386:3;2382:16;2366:14;-1:-1:-1;;;;;588:31:1;576:44;;522:104;2347:52;;2448:6;2441:5;2437:18;2431:25;2465:50;2507:6;2502:3;2498:16;2481:15;1018:13;1011:21;999:34;;948:91;2465:50;;2564:6;2557:5;2553:18;2547:25;2581:50;2623:6;2618:3;2614:16;2597:15;1018:13;1011:21;999:34;;948:91;2581:50;;2680:6;2673:5;2669:18;2663:25;2697:53;2742:6;2737:3;2733:16;2716:15;-1:-1:-1;;;;;588:31:1;576:44;;522:104;2697:53;;1044:1712;;:::o;2761:263::-;2955:3;2940:19;;2968:50;2944:9;3000:6;2968:50;:::i;3029:367::-;3092:8;3102:6;3156:3;3149:4;3141:6;3137:17;3133:27;3123:55;;3174:1;3171;3164:12;3123:55;-1:-1:-1;3197:20:1;;3240:18;3229:30;;3226:50;;;3272:1;3269;3262:12;3226:50;3309:4;3301:6;3297:17;3285:29;;3369:3;3362:4;3352:6;3349:1;3345:14;3337:6;3333:27;3329:38;3326:47;3323:67;;;3386:1;3383;3376:12;3323:67;3029:367;;;;;:::o;3401:768::-;3523:6;3531;3539;3547;3600:2;3588:9;3579:7;3575:23;3571:32;3568:52;;;3616:1;3613;3606:12;3568:52;3656:9;3643:23;3689:18;3681:6;3678:30;3675:50;;;3721:1;3718;3711:12;3675:50;3760:70;3822:7;3813:6;3802:9;3798:22;3760:70;:::i;:::-;3849:8;;-1:-1:-1;3734:96:1;-1:-1:-1;;3937:2:1;3922:18;;3909:32;3966:18;3953:32;;3950:52;;;3998:1;3995;3988:12;3950:52;4037:72;4101:7;4090:8;4079:9;4075:24;4037:72;:::i;:::-;3401:768;;;;-1:-1:-1;4128:8:1;-1:-1:-1;;;;3401:768:1:o;4174:777::-;4452:2;4464:21;;;4534:13;;4437:18;;;4556:22;;;4404:4;;4647;4635:17;;;4609:2;4594:18;;;4404:4;4680:200;4694:6;4691:1;4688:13;4680:200;;;4743:51;4790:3;4781:6;4775:13;4743:51;:::i;:::-;4865:4;4853:17;;;;;4823:6;4814:16;;;;;4716:1;4709:9;4680:200;;;-1:-1:-1;;4931:4:1;4916:20;;;;4909:36;;;;-1:-1:-1;4897:3:1;4174:777;-1:-1:-1;;4174:777:1:o;5339:119::-;5424:8;5417:5;5413:20;5406:5;5403:31;5393:59;;5448:1;5445;5438:12;5463:669;5548:6;5556;5564;5572;5625:3;5613:9;5604:7;5600:23;5596:33;5593:53;;;5642:1;5639;5632:12;5593:53;5681:9;5668:23;5700:31;5725:5;5700:31;:::i;:::-;5750:5;-1:-1:-1;5807:2:1;5792:18;;5779:32;5820:33;5779:32;5820:33;:::i;:::-;5872:7;-1:-1:-1;5931:2:1;5916:18;;5903:32;5944:33;5903:32;5944:33;:::i;:::-;5996:7;-1:-1:-1;6055:2:1;6040:18;;6027:32;6068;6027;6068;:::i;:::-;5463:669;;;;-1:-1:-1;5463:669:1;;-1:-1:-1;;5463:669:1:o;6345:247::-;6404:6;6457:2;6445:9;6436:7;6432:23;6428:32;6425:52;;;6473:1;6470;6463:12;6425:52;6512:9;6499:23;6531:31;6556:5;6531:31;:::i;7572:118::-;7659:5;7656:1;7645:20;7638:5;7635:31;7625:59;;7680:1;7677;7670:12;7695:667;7779:6;7787;7795;7803;7856:3;7844:9;7835:7;7831:23;7827:33;7824:53;;;7873:1;7870;7863:12;7824:53;7912:9;7899:23;7931:31;7956:5;7931:31;:::i;:::-;7981:5;-1:-1:-1;8038:2:1;8023:18;;8010:32;8051:33;8010:32;8051:33;:::i;:::-;8103:7;-1:-1:-1;8162:2:1;8147:18;;8134:32;8175:33;8134:32;8175:33;:::i;:::-;8227:7;-1:-1:-1;8286:2:1;8271:18;;8258:32;8299:31;8258:32;8299:31;:::i;8657:127::-;8718:10;8713:3;8709:20;8706:1;8699:31;8749:4;8746:1;8739:15;8773:4;8770:1;8763:15;8789:344;8856:2;8850:9;8898:3;8886:16;;8932:18;8917:34;;8953:22;;;8914:62;8911:185;;;9018:10;9013:3;9009:20;9006:1;8999:31;9053:4;9050:1;9043:15;9081:4;9078:1;9071:15;8911:185;9112:2;9105:22;8789:344;:::o;9138:138::-;9217:13;;9239:31;9217:13;9239:31;:::i;:::-;9138:138;;;:::o;9281:136::-;9359:13;;9381:30;9359:13;9381:30;:::i;9422:134::-;9499:13;;9521:29;9499:13;9521:29;:::i;9561:192::-;9640:13;;-1:-1:-1;;;;;9682:46:1;;9672:57;;9662:85;;9743:1;9740;9733:12;9758:164;9834:13;;9883;;9876:21;9866:32;;9856:60;;9912:1;9909;9902:12;9927:1641;10027:6;10087:3;10075:9;10066:7;10062:23;10058:33;10103:2;10100:22;;;10118:1;10115;10108:12;10100:22;-1:-1:-1;10160:17:1;;:::i;:::-;10200:40;10230:9;10200:40;:::i;:::-;10193:5;10186:55;10273:49;10318:2;10307:9;10303:18;10273:49;:::i;:::-;10268:2;10261:5;10257:14;10250:73;10355:48;10399:2;10388:9;10384:18;10355:48;:::i;:::-;10350:2;10343:5;10339:14;10332:72;10436:47;10479:2;10468:9;10464:18;10436:47;:::i;:::-;10431:2;10424:5;10420:14;10413:71;10517:48;10560:3;10549:9;10545:19;10517:48;:::i;:::-;10511:3;10504:5;10500:15;10493:73;10599:48;10642:3;10631:9;10627:19;10599:48;:::i;:::-;10593:3;10586:5;10582:15;10575:73;10681:50;10726:3;10715:9;10711:19;10681:50;:::i;:::-;10675:3;10664:15;;10657:75;10798:3;10783:19;;;10777:26;10819:15;;;10812:32;10910:3;10895:19;;;10889:26;10931:15;;;10924:32;10989:50;11034:3;11019:19;;10989:50;:::i;:::-;10983:3;10976:5;10972:15;10965:75;11073:50;11118:3;11107:9;11103:19;11073:50;:::i;:::-;11067:3;11060:5;11056:15;11049:75;11157:50;11202:3;11191:9;11187:19;11157:50;:::i;:::-;11151:3;11144:5;11140:15;11133:75;11241:50;11286:3;11275:9;11271:19;11241:50;:::i;:::-;11235:3;11228:5;11224:15;11217:75;11325:47;11367:3;11356:9;11352:19;11325:47;:::i;:::-;11319:3;11312:5;11308:15;11301:72;11406:47;11448:3;11437:9;11433:19;11406:47;:::i;:::-;11400:3;11393:5;11389:15;11382:72;11487:50;11532:3;11521:9;11517:19;11487:50;:::i;:::-;11481:3;11470:15;;11463:75;11474:5;9927:1641;-1:-1:-1;;;9927:1641:1:o;12167:230::-;12237:6;12290:2;12278:9;12269:7;12265:23;12261:32;12258:52;;;12306:1;12303;12296:12;12258:52;-1:-1:-1;12351:16:1;;12167:230;-1:-1:-1;12167:230:1:o;12402:127::-;12463:10;12458:3;12454:20;12451:1;12444:31;12494:4;12491:1;12484:15;12518:4;12515:1;12508:15;12716:183;12794:13;;12847:26;12836:38;;12826:49;;12816:77;;12889:1;12886;12879:12;12904:1481;13067:6;13075;13083;13091;13099;13107;13115;13123;13131;13139;13147:7;13156;13210:3;13198:9;13189:7;13185:23;13181:33;13178:53;;;13227:1;13224;13217:12;13178:53;13250:39;13279:9;13250:39;:::i;:::-;13240:49;;13332:2;13321:9;13317:18;13311:25;13345:31;13370:5;13345:31;:::i;:::-;13445:2;13430:18;;13424:25;13395:5;;-1:-1:-1;13458:33:1;13424:25;13458:33;:::i;:::-;13562:2;13547:18;;13541:25;13510:7;;-1:-1:-1;13575:33:1;13541:25;13575:33;:::i;:::-;13700:3;13685:19;;13679:26;13627:7;;-1:-1:-1;13714:32:1;13679:26;13714:32;:::i;:::-;13838:3;13823:19;;13817:26;13765:7;;-1:-1:-1;13852:31:1;13817:26;13852:31;:::i;:::-;13902:7;-1:-1:-1;13928:48:1;13971:3;13956:19;;13928:48;:::i;:::-;13918:58;;13995:50;14040:3;14029:9;14025:19;13995:50;:::i;:::-;14111:3;14096:19;;14090:26;14208:3;14193:19;;14187:26;13985:60;;-1:-1:-1;14090:26:1;-1:-1:-1;14187:26:1;-1:-1:-1;14259:50:1;14304:3;14289:19;;14259:50;:::i;:::-;14248:61;;14329:50;14374:3;14363:9;14359:19;14329:50;:::i;:::-;14318:61;;12904:1481;;;;;;;;;;;;;;:::o;14390:251::-;14460:6;14513:2;14501:9;14492:7;14488:23;14484:32;14481:52;;;14529:1;14526;14519:12;14481:52;14561:9;14555:16;14580:31;14605:5;14580:31;:::i;15522:1030::-;15650:6;15658;15666;15674;15682;15690;15698;15706;15759:3;15747:9;15738:7;15734:23;15730:33;15727:53;;;15776:1;15773;15766:12;15727:53;15808:9;15802:16;15827:31;15852:5;15827:31;:::i;:::-;15927:2;15912:18;;15906:25;15877:5;;-1:-1:-1;15940:31:1;15906:25;15940:31;:::i;:::-;16063:2;16048:18;;16042:25;16159:2;16144:18;;16138:25;16255:3;16240:19;;16234:26;16352:3;16337:19;;16331:26;16449:3;16434:19;;16428:26;15990:7;;-1:-1:-1;16042:25:1;;-1:-1:-1;16138:25:1;;-1:-1:-1;16234:26:1;-1:-1:-1;16331:26:1;-1:-1:-1;16428:26:1;-1:-1:-1;16499:47:1;16541:3;16526:19;;16499:47;:::i;:::-;16489:57;;15522:1030;;;;;;;;;;;:::o;16557:1263::-;16702:6;16710;16718;16726;16734;16742;16750;16758;16766;16774;16827:3;16815:9;16806:7;16802:23;16798:33;16795:53;;;16844:1;16841;16834:12;16795:53;16876:9;16870:16;16895:31;16920:5;16895:31;:::i;:::-;16995:2;16980:18;;16974:25;16945:5;;-1:-1:-1;17008:33:1;16974:25;17008:33;:::i;:::-;17112:2;17097:18;;17091:25;17060:7;;-1:-1:-1;17125:31:1;17091:25;17125:31;:::i;:::-;17227:2;17212:18;;17206:25;17175:7;;-1:-1:-1;17240:31:1;17206:25;17240:31;:::i;:::-;17342:3;17327:19;;17321:26;17290:7;;-1:-1:-1;17356:31:1;17321:26;17356:31;:::i;:::-;17406:7;-1:-1:-1;17432:50:1;17477:3;17462:19;;17432:50;:::i;:::-;17548:3;17533:19;;17527:26;17645:3;17630:19;;17624:26;17422:60;;-1:-1:-1;17527:26:1;-1:-1:-1;17624:26:1;-1:-1:-1;17695:50:1;17740:3;17725:19;;17695:50;:::i;:::-;17685:60;;17764:50;17809:3;17798:9;17794:19;17764:50;:::i;:::-;17754:60;;16557:1263;;;;;;;;;;;;;:::o;18310:1353::-;18465:6;18473;18481;18489;18497;18505;18513;18521;18529;18537;18545:7;18599:3;18587:9;18578:7;18574:23;18570:33;18567:53;;;18616:1;18613;18606:12;18567:53;18639:39;18668:9;18639:39;:::i;:::-;18629:49;;18721:2;18710:9;18706:18;18700:25;18734:31;18759:5;18734:31;:::i;:::-;18834:2;18819:18;;18813:25;18784:5;;-1:-1:-1;18847:33:1;18813:25;18847:33;:::i;:::-;18951:2;18936:18;;18930:25;18899:7;;-1:-1:-1;18964:33:1;18930:25;18964:33;:::i;:::-;19068:3;19053:19;;19047:26;19016:7;;-1:-1:-1;19082:31:1;19047:26;19082:31;:::i;:::-;19184:3;19169:19;;19163:26;19132:7;;-1:-1:-1;19198:31:1;19163:26;19198:31;:::i;:::-;19248:7;-1:-1:-1;19274:50:1;19319:3;19304:19;;19274:50;:::i;:::-;19390:3;19375:19;;19369:26;19487:3;19472:19;;19466:26;19264:60;;-1:-1:-1;19369:26:1;-1:-1:-1;19466:26:1;-1:-1:-1;19537:50:1;19582:3;19567:19;;19537:50;:::i;:::-;19527:60;;19607:50;19652:3;19641:9;19637:19;19607:50;:::i;:::-;19596:61;;18310:1353;;;;;;;;;;;;;;:::o;19973:249::-;20042:6;20095:2;20083:9;20074:7;20070:23;20066:32;20063:52;;;20111:1;20108;20101:12;20063:52;20143:9;20137:16;20162:30;20186:5;20162:30;:::i;20227:916::-;20346:6;20354;20362;20370;20378;20386;20394;20447:3;20435:9;20426:7;20422:23;20418:33;20415:53;;;20464:1;20461;20454:12;20415:53;20496:9;20490:16;20515:31;20540:5;20515:31;:::i;:::-;20615:2;20600:18;;20594:25;20565:5;;-1:-1:-1;20628:31:1;20594:25;20628:31;:::i;:::-;20751:2;20736:18;;20730:25;20847:2;20832:18;;20826:25;20943:3;20928:19;;20922:26;21040:3;21025:19;;21019:26;20678:7;;-1:-1:-1;20730:25:1;;-1:-1:-1;20826:25:1;-1:-1:-1;20922:26:1;-1:-1:-1;21019:26:1;-1:-1:-1;21090:47:1;21132:3;21117:19;;21090:47;:::i;:::-;21080:57;;20227:916;;;;;;;;;;:::o

Swarm Source

ipfs://32f574fd1a570510f4a38baf426b43cac2d537a7f52703b5c183ad0fd5278046

Block Transaction Gas Used Reward
view all blocks ##produced##

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

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.