Contract 0xbbc4a8d076f4b1888fec42581b6fc58d242cf2d5 6

Contract Overview

Balance:
0 FTM
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x832e5747ccc67f381e19b0463dcb5359509f4dc04d1317ecd00a9cb18c68ef51Set Chain Config101262802022-08-19 7:24:37105 days 19 hrs ago0xfa9da51631268a30ec3ddd1ccbf46c65fad99251 IN  0xbbc4a8d076f4b1888fec42581b6fc58d242cf2d50 FTM0.00011450752
0x5210f84dc10f040b4230dccbf898d014352c1f61fdd0e7fefeb5a7d8b5f05030Set MPC Pubkey91456292022-05-26 2:14:42191 days 19 mins ago0xfa9da51631268a30ec3ddd1ccbf46c65fad99251 IN  0xbbc4a8d076f4b1888fec42581b6fc58d242cf2d50 FTM0.000172505082
0xef61be5211c6bd8a1dc79431ab763095d214e07acababdffac3490be267185e4Set Chain Config91456162022-05-26 2:11:16191 days 22 mins ago0xfa9da51631268a30ec3ddd1ccbf46c65fad99251 IN  0xbbc4a8d076f4b1888fec42581b6fc58d242cf2d50 FTM0.000111849461
0xd4afa7501d3133eba7de88f1995cd2f8bb9418f366c7b259e96c5d97c6841cd6Set Chain Config91455672022-05-26 1:58:58191 days 35 mins ago0xfa9da51631268a30ec3ddd1ccbf46c65fad99251 IN  0xbbc4a8d076f4b1888fec42581b6fc58d242cf2d50 FTM0.000127491022
0x549277ede01feb10a9e3b8265a4cf2604e09b81c4b9341f4459fb659517425d20x6080604091455432022-05-26 1:47:51191 days 46 mins ago0xfa9da51631268a30ec3ddd1ccbf46c65fad99251 IN  Create: RouterConfig0 FTM0.0096934355
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x549277ede01feb10a9e3b8265a4cf2604e09b81c4b9341f4459fb659517425d291455432022-05-26 1:47:51191 days 46 mins ago 0xfa9da51631268a30ec3ddd1ccbf46c65fad99251  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RouterConfig

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2022-05-26
*/

/**
 *Submitted for verification at BscScan.com on 2022-05-07
*/

/**
 *Submitted for verification at BscScan.com on 2022-03-28
*/

/**
 *Submitted for verification at BscScan.com on 2021-07-08
*/

/**
 *Submitted for verification at BscScan.com on 2021-07-05
*/

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

interface IConfigQuery {
    struct ChainConfig {
        string  BlockChain;
        address RouterContract;
        uint64  Confirmations;
        uint64  InitialHeight;
    }

    struct TokenConfig {
        uint8   Decimals;
        address ContractAddress;
        uint256 ContractVersion;
    }

    struct SwapConfig {
        uint256 MaximumSwap;
        uint256 MinimumSwap;
        uint256 BigValueThreshold;
        uint256 SwapFeeRatePerMillion;
        uint256 MaximumSwapFee;
        uint256 MinimumSwapFee;
    }

    struct MultichainToken {
        uint256 ChainID;
        address TokenAddress;
    }

    function getAllChainIDs() external view returns (uint256[] memory);
    function getAllTokenIDs() external view returns (string[] memory);
    function getAllMultichainTokens(string calldata tokenID) external view returns (MultichainToken[] memory);
    function getMultichainToken(string calldata tokenID, uint256 chainID) external view returns (address);
    function getTokenID(uint256 chainID, address tokenAddress) external view returns (string memory);

    function isChainIDExist(uint256 chainID) external view returns (bool);
    function isTokenIDExist(string calldata tokenID) external view returns (bool);

    function getChainConfig(uint256 chainID) external view returns (ChainConfig memory);
    function getTokenConfig(string calldata tokenID, uint256 chainID) external view returns (TokenConfig memory);
    function getUserTokenConfig(string calldata tokenID, uint256 chainID) external view returns (TokenConfig memory);
    function getSwapConfig(string calldata tokenID, uint256 toChainID) external view returns (SwapConfig memory);
    function getCustomConfig(uint256 chainID, string calldata key) external view returns (string memory);
    function getMPCPubkey(address mpcAddress) external view returns (string memory);

    modifier checkChainconfig(ChainConfig memory config) {
        require(config.RouterContract != address(0), "zero router contract");
        require(config.Confirmations > 0, "zero confirmations is unsafe");
        require(bytes(config.BlockChain).length > 0 && bytes(config.BlockChain).length <= 128, "wrong BlockChain length");
        _;
    }

    modifier checkTokenConfig(TokenConfig memory config) {
        require(config.ContractAddress != address(0));
        _;
    }

    modifier checkSwapConfig(SwapConfig memory config) {
        require(config.MaximumSwap > 0, "zero MaximumSwap");
        require(config.MinimumSwap > 0, "zero MinimumSwap");
        require(config.BigValueThreshold > 0, "zero BigValueThreshold");
        require(config.MaximumSwap >= config.MinimumSwap, "MaximumSwap < MinimumSwap");
        require(config.MaximumSwapFee >= config.MinimumSwapFee, "MaximumSwapFee < MinimumSwapFee");
        require(config.MinimumSwap >= config.MinimumSwapFee, "MinimumSwap < MinimumSwapFee");
        require(config.SwapFeeRatePerMillion < 1000000, "SwapFeeRatePerMillion >= 1000000");
        require(config.SwapFeeRatePerMillion > 0 || config.MinimumSwapFee == 0, "wrong MinimumSwapFee");
        _;
    }
}

contract RouterConfig is IConfigQuery {
    uint256[] private _allChainIDs;
    bytes32[] private _allTokenIDs;
    mapping (bytes32 => MultichainToken[]) private _allMultichainTokens; // key is tokenID
    mapping (uint256 => ChainConfig) private _chainConfig; // key is chainID
    mapping (bytes32 => mapping(uint256 => TokenConfig)) private _tokenConfig; // key is tokenID,chainID
    mapping (bytes32 => mapping(uint256 => TokenConfig)) private _userTokenConfig; // key is tokenID,chainID
    mapping (bytes32 => mapping(uint256 => SwapConfig)) private _swapConfig; // key is tokenID,toChainID
    mapping (uint256 => mapping(string => string)) private _customConfig; // key is chainID,customKey
    mapping (uint256 => mapping(address => bytes32)) private _tokenIDMap; // key is chainID,tokenAddress
    mapping (address => string) private _mpcPubkey; // key is mpc address

    address[2] public owners;
    modifier onlyOwner() {
        require(msg.sender == owners[0] || msg.sender == owners[1], "only owner");
        _;
    }

    event UpdateConfig();
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    // Constructor with two owners
    constructor (address[2] memory newOwners) {
        require(newOwners[0] != newOwners[1], "CTOR: owners are same");
        owners = newOwners;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        emit OwnershipTransferred(msg.sender, newOwner);
        if (msg.sender == owners[0]) {
            owners[0] = newOwner;
        } else {
            owners[1] = newOwner;
        }
    }

    function getAllChainIDs() external override view returns (uint256[] memory) {
        return _allChainIDs;
    }

    function getAllTokenIDs() external override view returns (string[] memory result) {
        uint256 length = _allTokenIDs.length;
        result = new string[](length);
        for (uint256 i = 0; i < length; ++i) {
            result[i] = bytes32ToString(_allTokenIDs[i]);
        }
    }

    function getAllMultichainTokens(string calldata tokenID) external override view returns (MultichainToken[] memory) {
        return _allMultichainTokens[stringToBytes32(tokenID)];
    }

    function getMultichainToken(string calldata tokenID, uint256 chainID) public override view returns (address) {
        MultichainToken[] storage _mcTokens = _allMultichainTokens[stringToBytes32(tokenID)];
        for (uint256 i = 0; i < _mcTokens.length; ++i) {
            if (_mcTokens[i].ChainID == chainID) {
                return _mcTokens[i].TokenAddress;
            }
        }
        return address(0);
    }

    function getTokenID(uint256 chainID, address tokenAddress) external override view returns (string memory) {
        return bytes32ToString(_tokenIDMap[chainID][tokenAddress]);
    }

    function getChainConfig(uint256 chainID) external override view returns (ChainConfig memory) {
        return _chainConfig[chainID];
    }

    function getTokenConfig(string calldata tokenID, uint256 chainID) external override view returns (TokenConfig memory) {
        return _tokenConfig[stringToBytes32(tokenID)][chainID];
    }

    function getUserTokenConfig(string calldata tokenID, uint256 chainID) external override view returns (TokenConfig memory) {
        return _userTokenConfig[stringToBytes32(tokenID)][chainID];
    }

    function getSwapConfig(string calldata tokenID, uint256 toChainID) external override view returns (SwapConfig memory) {
        return _swapConfig[stringToBytes32(tokenID)][toChainID];
    }

    function getCustomConfig(uint256 chainID, string calldata key) external override view returns (string memory) {
        return _customConfig[chainID][key];
    }

    function getMPCPubkey(address mpcAddress) external override view returns (string memory) {
        return _mpcPubkey[mpcAddress];
    }

    function isChainIDExist(uint256 chainID) public override view returns (bool) {
        for (uint256 i = 0; i < _allChainIDs.length; ++i) {
            if (_allChainIDs[i] == chainID) {
                return true;
            }
        }
        return false;
    }

    function _isTokenIDExist(bytes32 tokenID) internal view returns (bool) {
        for (uint256 i = 0; i < _allTokenIDs.length; ++i) {
            if (_allTokenIDs[i] == tokenID) {
                return true;
            }
        }
        return false;
    }

    function isTokenIDExist(string calldata tokenID) public override view returns (bool) {
        return _isTokenIDExist(stringToBytes32(tokenID));
    }

    function updateConfig() external onlyOwner {
        emit UpdateConfig();
    }

    function setChainConfig(uint256 chainID, ChainConfig calldata config) external onlyOwner checkChainconfig(config) returns (bool) {
        require(chainID > 0, "zero chainID");
        _chainConfig[chainID] = config;
        if (!isChainIDExist(chainID)) {
            _allChainIDs.push(chainID);
        }
        return true;
    }

    function _setTokenConfig(bytes32 tokenID, uint256 chainID, TokenConfig memory config, bool isUser) internal checkTokenConfig(config) returns (bool) {
        require(tokenID != bytes32(0), "empty tokenID");
        require(chainID > 0, "zero chainID");
        if (isUser) {
            _userTokenConfig[tokenID][chainID] = config;
        } else {
            _tokenConfig[tokenID][chainID] = config;
            if (!_isTokenIDExist(tokenID)) {
                _allTokenIDs.push(tokenID);
            }
            _setMultichainToken(tokenID, chainID, config.ContractAddress);
        }
        return true;
    }

    function _setSwapConfig(bytes32 tokenID, uint256 toChainID, SwapConfig memory config) internal checkSwapConfig(config) returns (bool) {
        require(tokenID != bytes32(0), "empty tokenID");
        require(toChainID > 0, "zero chainID");
        _swapConfig[tokenID][toChainID] = config;
        return true;
    }

    function setTokenConfig(string calldata tokenID, uint256 chainID, TokenConfig calldata config) external onlyOwner returns (bool) {
        return _setTokenConfig(stringToBytes32(tokenID), chainID, config, false);
    }

    function setUserTokenConfig(string calldata tokenID, uint256 chainID, TokenConfig calldata config) external checkTokenConfig(config) returns (bool) {
        return _setTokenConfig(stringToBytes32(tokenID), chainID, config, true);
    }

    function pickUserTokenConfig(string calldata tokenID, uint256 chainID) external onlyOwner returns (bool) {
        bytes32 bsTokenID = stringToBytes32(tokenID);
        return _setTokenConfig(bsTokenID, chainID, _userTokenConfig[bsTokenID][chainID], false);
    }

    function setSwapConfig(string calldata tokenID, uint256 toChainID, SwapConfig calldata config) external onlyOwner returns (bool) {
        return _setSwapConfig(stringToBytes32(tokenID), toChainID, config);
    }

    function setCustomConfig(uint256 chainID, string calldata key, string calldata data) external onlyOwner returns (bool) {
        require(chainID > 0, "zero chainID");
        _customConfig[chainID][key] = data;
        return true;
    }

    function setMPCPubkey(address addr, string calldata pubkey) external onlyOwner returns (bool) {
        require(addr != address(0), "zero address");
        _mpcPubkey[addr] = pubkey;
        return true;
    }

    function addChainID(uint256 chainID) external onlyOwner returns (bool) {
        require(!isChainIDExist(chainID), "chain ID exist");
        _allChainIDs.push(chainID);
        return true;
    }

    function removeChainID(uint256 chainID) external onlyOwner returns (bool) {
        for (uint256 i = 0; i < _allChainIDs.length; ++i) {
            if (_allChainIDs[i] == chainID) {
                for (; i+1 < _allChainIDs.length; ++i) {
                    _allChainIDs[i] = _allChainIDs[i+1];
                }
                _allChainIDs.pop();
                return true;
            }
        }
        return false;
    }

    function addTokenID(string calldata tokenID) external onlyOwner returns (bool) {
        bytes32 bsTokenID = stringToBytes32(tokenID);
        require(!_isTokenIDExist(bsTokenID), "token ID exist");
        _allTokenIDs.push(bsTokenID);
        return true;
    }

    function removeTokenID(string calldata tokenID) external onlyOwner returns (bool) {
        bytes32 bsTokenID = stringToBytes32(tokenID);
        for (uint256 i = 0; i < _allTokenIDs.length; ++i) {
            if (_allTokenIDs[i] == bsTokenID) {
                for (; i+1 < _allTokenIDs.length; ++i) {
                    _allTokenIDs[i] = _allTokenIDs[i+1];
                }
                _allTokenIDs.pop();
                return true;
            }
        }
        return false;
    }

    function _setMultichainToken(bytes32 tokenID, uint256 chainID, address token) internal {
        require(tokenID != bytes32(0), "empty tokenID");
        require(chainID > 0, "zero chainID");
        MultichainToken[] storage _mcTokens = _allMultichainTokens[tokenID];
        for (uint256 i = 0; i < _mcTokens.length; ++i) {
            if (_mcTokens[i].ChainID == chainID) {
                address oldToken = _mcTokens[i].TokenAddress;
                if (token != oldToken) {
                    _mcTokens[i].TokenAddress = token;
                    _tokenIDMap[chainID][oldToken] = bytes32(0);
                    _tokenIDMap[chainID][token] = tokenID;
                }
                return;
            }
        }
        _mcTokens.push(MultichainToken(chainID, token));
        _tokenIDMap[chainID][token] = tokenID;
    }

    function setMultichainToken(string calldata tokenID, uint256 chainID, address token) public onlyOwner {
        _setMultichainToken(stringToBytes32(tokenID), chainID, token);
    }

    function removeAllMultichainTokens(string calldata tokenID) external onlyOwner {
        bytes32 bsTokenID = stringToBytes32(tokenID);
        MultichainToken[] storage _mcTokens = _allMultichainTokens[bsTokenID];
        for (uint256 i = 0; i < _mcTokens.length; ++i) {
            MultichainToken memory _mcToken = _mcTokens[i];
            _tokenIDMap[_mcToken.ChainID][_mcToken.TokenAddress] = bytes32(0);
        }
        delete _allMultichainTokens[bsTokenID];
    }

    function removeMultichainToken(string calldata tokenID, uint256 chainID) external onlyOwner returns (bool) {
        MultichainToken[] storage _mcTokens = _allMultichainTokens[stringToBytes32(tokenID)];
        for (uint256 i = 0; i < _mcTokens.length; ++i) {
            if (_mcTokens[i].ChainID == chainID) {
                _tokenIDMap[chainID][_mcTokens[i].TokenAddress] = bytes32(0);
                for (; i+1 < _mcTokens.length; ++i) {
                    _mcTokens[i] = _mcTokens[i+1];
                }
                _mcTokens.pop();
                return true;
            }
        }
        return false;
    }

    function stringToBytes32(string memory str) internal pure returns (bytes32 result) {
        assembly {
            result := mload(add(str, 32))
        }
    }

    function bytes32ToString(bytes32 data) internal pure returns (string memory) {
        uint8 i = 0;
        while (i < 32 && data[i] != 0) {
            ++i;
        }
        bytes memory bs = new bytes(i);
        for (uint8 j = 0; j < i; ++j) {
            bs[j] = data[j];
        }
        return string(bs);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[2]","name":"newOwners","type":"address[2]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"UpdateConfig","type":"event"},{"inputs":[{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"addChainID","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"}],"name":"addTokenID","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllChainIDs","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"}],"name":"getAllMultichainTokens","outputs":[{"components":[{"internalType":"uint256","name":"ChainID","type":"uint256"},{"internalType":"address","name":"TokenAddress","type":"address"}],"internalType":"struct IConfigQuery.MultichainToken[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllTokenIDs","outputs":[{"internalType":"string[]","name":"result","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"getChainConfig","outputs":[{"components":[{"internalType":"string","name":"BlockChain","type":"string"},{"internalType":"address","name":"RouterContract","type":"address"},{"internalType":"uint64","name":"Confirmations","type":"uint64"},{"internalType":"uint64","name":"InitialHeight","type":"uint64"}],"internalType":"struct IConfigQuery.ChainConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chainID","type":"uint256"},{"internalType":"string","name":"key","type":"string"}],"name":"getCustomConfig","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"mpcAddress","type":"address"}],"name":"getMPCPubkey","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"getMultichainToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"getSwapConfig","outputs":[{"components":[{"internalType":"uint256","name":"MaximumSwap","type":"uint256"},{"internalType":"uint256","name":"MinimumSwap","type":"uint256"},{"internalType":"uint256","name":"BigValueThreshold","type":"uint256"},{"internalType":"uint256","name":"SwapFeeRatePerMillion","type":"uint256"},{"internalType":"uint256","name":"MaximumSwapFee","type":"uint256"},{"internalType":"uint256","name":"MinimumSwapFee","type":"uint256"}],"internalType":"struct IConfigQuery.SwapConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"getTokenConfig","outputs":[{"components":[{"internalType":"uint8","name":"Decimals","type":"uint8"},{"internalType":"address","name":"ContractAddress","type":"address"},{"internalType":"uint256","name":"ContractVersion","type":"uint256"}],"internalType":"struct IConfigQuery.TokenConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chainID","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getTokenID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"getUserTokenConfig","outputs":[{"components":[{"internalType":"uint8","name":"Decimals","type":"uint8"},{"internalType":"address","name":"ContractAddress","type":"address"},{"internalType":"uint256","name":"ContractVersion","type":"uint256"}],"internalType":"struct IConfigQuery.TokenConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"isChainIDExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"}],"name":"isTokenIDExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"pickUserTokenConfig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"}],"name":"removeAllMultichainTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"removeChainID","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"removeMultichainToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"}],"name":"removeTokenID","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"chainID","type":"uint256"},{"components":[{"internalType":"string","name":"BlockChain","type":"string"},{"internalType":"address","name":"RouterContract","type":"address"},{"internalType":"uint64","name":"Confirmations","type":"uint64"},{"internalType":"uint64","name":"InitialHeight","type":"uint64"}],"internalType":"struct IConfigQuery.ChainConfig","name":"config","type":"tuple"}],"name":"setChainConfig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"chainID","type":"uint256"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"data","type":"string"}],"name":"setCustomConfig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string","name":"pubkey","type":"string"}],"name":"setMPCPubkey","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"chainID","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"setMultichainToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"toChainID","type":"uint256"},{"components":[{"internalType":"uint256","name":"MaximumSwap","type":"uint256"},{"internalType":"uint256","name":"MinimumSwap","type":"uint256"},{"internalType":"uint256","name":"BigValueThreshold","type":"uint256"},{"internalType":"uint256","name":"SwapFeeRatePerMillion","type":"uint256"},{"internalType":"uint256","name":"MaximumSwapFee","type":"uint256"},{"internalType":"uint256","name":"MinimumSwapFee","type":"uint256"}],"internalType":"struct IConfigQuery.SwapConfig","name":"config","type":"tuple"}],"name":"setSwapConfig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"chainID","type":"uint256"},{"components":[{"internalType":"uint8","name":"Decimals","type":"uint8"},{"internalType":"address","name":"ContractAddress","type":"address"},{"internalType":"uint256","name":"ContractVersion","type":"uint256"}],"internalType":"struct IConfigQuery.TokenConfig","name":"config","type":"tuple"}],"name":"setTokenConfig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenID","type":"string"},{"internalType":"uint256","name":"chainID","type":"uint256"},{"components":[{"internalType":"uint8","name":"Decimals","type":"uint8"},{"internalType":"address","name":"ContractAddress","type":"address"},{"internalType":"uint256","name":"ContractVersion","type":"uint256"}],"internalType":"struct IConfigQuery.TokenConfig","name":"config","type":"tuple"}],"name":"setUserTokenConfig","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateConfig","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200323138038062003231833981016040819052620000349162000143565b602081015181516001600160a01b03908116911614156200009b5760405162461bcd60e51b815260206004820152601560248201527f43544f523a206f776e657273206172652073616d650000000000000000000000604482015260640160405180910390fd5b620000aa600a826002620000b2565b5050620001f2565b8260028101928215620000fd579160200282015b82811115620000fd57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620000c6565b506200010b9291506200010f565b5090565b5b808211156200010b576000815560010162000110565b80516001600160a01b03811681146200013e57600080fd5b919050565b6000604082840312156200015657600080fd5b82601f8301126200016657600080fd5b604080519081016001600160401b03811182821017156200018b576200018b620001dc565b8060405250808385604086011115620001a357600080fd5b60005b6002811015620001d157620001bb8262000126565b83526020928301929190910190600101620001a6565b509195945050505050565b634e487b7160e01b600052604160045260246000fd5b61302f80620002026000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80639026b20511610104578063c5e7601a116100a2578063e671242a11610071578063e671242a14610496578063e90768c6146104a9578063f2fde38b146104bc578063fd15ea70146104cf57600080fd5b8063c5e7601a14610448578063ca29ee961461045b578063e27112d51461046e578063e3e016641461048357600080fd5b8063b735ab5a116100de578063b735ab5a146103fc578063ba6e0d0f1461040f578063bc772a2814610422578063c4fb2e4b1461043557600080fd5b80639026b205146103775780639af93e7a1461038a578063af611ca0146103e957600080fd5b806358bb97fb1161017c578063684a10b31161014b578063684a10b314610325578063747fd44c1461033a57806383f5d5d4146103445780638fcb62a31461035757600080fd5b806358bb97fb146102cc5780635b751858146102ec5780635d58d0a1146102ff57806361387d611461031257600080fd5b80632879196f116101b85780632879196f146102525780633252c1d014610293578063459511d1146102a657806346bd32f5146102b957600080fd5b8063025e7c27146101df57806319ed16dc1461020f57806320c29bca1461022f575b600080fd5b6101f26101ed366004612861565b6104e2565b6040516001600160a01b0390911681526020015b60405180910390f35b61022261021d366004612861565b610502565b6040516102069190612b76565b61024261023d366004612861565b61060f565b6040519015158152602001610206565b610265610260366004612610565b6106df565b60408051825160ff1681526020808401516001600160a01b0316908201529181015190820152606001610206565b6102426102a1366004612720565b610793565b6102656102b4366004612610565b61081e565b6102426102c7366004612955565b61087e565b6102df6102da36600461255e565b610a62565b6040516102069190612af2565b6102426102fa36600461257b565b610b0e565b61024261030d3660046125cf565b610bc7565b6102df6103203660046128aa565b610d3e565b61032d610e03565b60405161020691906129f4565b610342610ebb565b005b6103426103523660046125cf565b610f2b565b61036a6103653660046125cf565b61105b565b6040516102069190612a56565b610242610385366004612610565b611122565b61039d610398366004612610565b611343565b6040516102069190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b6102426103f73660046125cf565b61142e565b6101f261040a366004612610565b611477565b61024261041d366004612720565b61154d565b610242610430366004612610565b6115f5565b6102df61044336600461287a565b6116d3565b61034261045636600461265b565b611702565b6102426104693660046126b9565b611790565b61047661182d565b6040516102069190612aae565b6102426104913660046125cf565b611885565b6102426104a43660046128dc565b611990565b6102426104b7366004612861565b611a42565b6103426104ca36600461255e565b611b70565b6102426104dd366004612861565b611c42565b600a81600281106104f257600080fd5b01546001600160a01b0316905081565b6040805160808101825260608082526000602083018190529282018390528101919091526000828152600360205260409081902081516080810190925280548290829061054e90612d5c565b80601f016020809104026020016040519081016040528092919081815260200182805461057a90612d5c565b80156105c75780601f1061059c576101008083540402835291602001916105c7565b820191906000526020600020905b8154815290600101906020018083116105aa57829003601f168201915b505050918352505060018201546001600160a01b03811660208301526001600160401b03600160a01b9091048116604083015260029092015490911660609091015292915050565b6000600a8101546001600160a01b03163314806106395750600a600101546001600160a01b031633145b61065e5760405162461bcd60e51b815260040161065590612b52565b60405180910390fd5b61066782611c42565b156106a55760405162461bcd60e51b815260206004820152600e60248201526d18da185a5b88125108195e1a5cdd60921b6044820152606401610655565b5060008054600181810183559180527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563018290555b919050565b60408051606081018252600080825260208201819052918101919091526005600061073f86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b81526020808201929092526040908101600090812085825283528190208151606081018352815460ff8116825261010090046001600160a01b031693810193909352600101549082015290505b9392505050565b60006107a4368390038301836127f1565b60208101516001600160a01b03166107bb57600080fd5b6108146107fd87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b8561080d368790038701876127f1565b6001611c95565b9695505050505050565b60408051606081018252600080825260208201819052918101919091526004600061073f86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b6000600a8101546001600160a01b03163314806108a85750600a600101546001600160a01b031633145b6108c45760405162461bcd60e51b815260040161065590612b52565b6108cd82612c8e565b60208101516001600160a01b031661091e5760405162461bcd60e51b81526020600482015260146024820152731e995c9bc81c9bdd5d195c8818dbdb9d1c9858dd60621b6044820152606401610655565b600081604001516001600160401b03161161097b5760405162461bcd60e51b815260206004820152601c60248201527f7a65726f20636f6e6669726d6174696f6e7320697320756e73616665000000006044820152606401610655565b8051511580159061098f5750805151608010155b6109db5760405162461bcd60e51b815260206004820152601760248201527f77726f6e6720426c6f636b436861696e206c656e6774680000000000000000006044820152606401610655565b600084116109fb5760405162461bcd60e51b815260040161065590612b2c565b60008481526003602052604090208390610a158282612e44565b905050610a2184611c42565b610a5857600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563018490555b5060019392505050565b6001600160a01b0381166000908152600960205260409020805460609190610a8990612d5c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab590612d5c565b8015610b025780601f10610ad757610100808354040283529160200191610b02565b820191906000526020600020905b815481529060010190602001808311610ae557829003601f168201915b50505050509050919050565b6000600a8101546001600160a01b0316331480610b385750600a600101546001600160a01b031633145b610b545760405162461bcd60e51b815260040161065590612b52565b6001600160a01b038416610b995760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610655565b6001600160a01b0384166000908152600960205260409020610bbc90848461241f565b506001949350505050565b6000600a8101546001600160a01b0316331480610bf15750600a600101546001600160a01b031633145b610c0d5760405162461bcd60e51b815260040161065590612b52565b6000610c4e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b905060005b600154811015610d31578160018281548110610c7157610c71612dfe565b90600052602060002001541415610d21575b6001805490610c93908390612c2b565b1015610cef576001610ca58282612c2b565b81548110610cb557610cb5612dfe565b906000526020600020015460018281548110610cd357610cd3612dfe565b600091825260209091200155610ce881612d97565b9050610c83565b6001805480610d0057610d00612de8565b60019003818190600052602060002001600090559055600192505050610d38565b610d2a81612d97565b9050610c53565b5060009150505b92915050565b6060600760008581526020019081526020016000208383604051610d639291906129e4565b90815260200160405180910390208054610d7c90612d5c565b80601f0160208091040260200160405190810160405280929190818152602001828054610da890612d5c565b8015610df55780601f10610dca57610100808354040283529160200191610df5565b820191906000526020600020905b815481529060010190602001808311610dd857829003601f168201915b505050505090509392505050565b600154606090806001600160401b03811115610e2157610e21612e14565b604051908082528060200260200182016040528015610e5457816020015b6060815260200190600190039081610e3f5790505b50915060005b81811015610eb657610e8860018281548110610e7857610e78612dfe565b9060005260206000200154611df8565b838281518110610e9a57610e9a612dfe565b602002602001018190525080610eaf90612d97565b9050610e5a565b505090565b600a600001546001600160a01b0316331480610ee45750600a600101546001600160a01b031633145b610f005760405162461bcd60e51b815260040161065590612b52565b6040517f22590461e7ba17e1fe7580cb0ea47f283d3b2248f04873dfbe926d08fe4c5ab990600090a1565b600a600001546001600160a01b0316331480610f545750600a600101546001600160a01b031633145b610f705760405162461bcd60e51b815260040161065590612b52565b6000610fb183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b60008181526002602052604081209192505b815481101561103d576000828281548110610fe057610fe0612dfe565b60009182526020808320604080518082018252600290940290910180548085526001909101546001600160a01b039081169484019485529085526008835281852093511684529190528120555061103681612d97565b9050610fc3565b506000828152600260205260408120611055916124a3565b50505050565b6060600260006110a085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b8152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156111165760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b03168284015290835290920191016110ce565b50505050905092915050565b6000600a8101546001600160a01b031633148061114c5750600a600101546001600160a01b031633145b6111685760405162461bcd60e51b815260040161065590612b52565b6000600260006111ad87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b8152602001908152602001600020905060005b815481101561133757838282815481106111dc576111dc612dfe565b90600052602060002090600202016000015414156113275760008481526008602052604081208354829085908590811061121857611218612dfe565b60009182526020808320600160029093020191909101546001600160a01b031683528201929092526040019020555b8154611254826001612c2b565b10156112e05781611266826001612c2b565b8154811061127657611276612dfe565b906000526020600020906002020182828154811061129657611296612dfe565b600091825260209091208254600290920201908155600191820154910180546001600160a01b0319166001600160a01b039092169190911790556112d981612d97565b9050611247565b818054806112f0576112f0612de8565b600082815260208120600260001990930192830201908155600190810180546001600160a01b03191690559155925061078c915050565b61133081612d97565b90506111c0565b50600095945050505050565b61137c6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600660006113bf86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b815260200190815260200160002060008381526020019081526020016000206040518060c0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152505090509392505050565b600061078c61147284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b611efe565b600080600260006114bd87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b8152602001908152602001600020905060005b815481101561133757838282815481106114ec576114ec612dfe565b906000526020600020906002020160000154141561153d5781818154811061151657611516612dfe565b60009182526020909120600160029092020101546001600160a01b0316925061078c915050565b61154681612d97565b90506114d0565b6000600a8101546001600160a01b03163314806115775750600a600101546001600160a01b031633145b6115935760405162461bcd60e51b815260040161065590612b52565b6115ec6115d586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b846115e5368690038601866127f1565b6000611c95565b95945050505050565b6000600a8101546001600160a01b031633148061161f5750600a600101546001600160a01b031633145b61163b5760405162461bcd60e51b815260040161065590612b52565b600061167c85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b600081815260056020908152604080832087845282528083208151606081018352815460ff8116825261010090046001600160a01b03169381019390935260010154908201529192506115ec918391869190611c95565b60008281526008602090815260408083206001600160a01b038516845290915290205460609061078c90611df8565b600a600001546001600160a01b031633148061172b5750600a600101546001600160a01b031633145b6117475760405162461bcd60e51b815260040161065590612b52565b61105561178985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b8383611f4a565b6000600a8101546001600160a01b03163314806117ba5750600a600101546001600160a01b031633145b6117d65760405162461bcd60e51b815260040161065590612b52565b6115ec61181886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b8461182836869003860186612778565b6120f6565b6060600080548060200260200160405190810160405280929190818152602001828054801561187b57602002820191906000526020600020905b815481526020019060010190808311611867575b5050505050905090565b6000600a8101546001600160a01b03163314806118af5750600a600101546001600160a01b031633145b6118cb5760405162461bcd60e51b815260040161065590612b52565b600061190c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c8e92505050565b905061191781611efe565b156119555760405162461bcd60e51b815260206004820152600e60248201526d1d1bdad95b88125108195e1a5cdd60921b6044820152606401610655565b60018054808201825560008290527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601919091559392505050565b6000600a8101546001600160a01b03163314806119ba5750600a600101546001600160a01b031633145b6119d65760405162461bcd60e51b815260040161065590612b52565b600086116119f65760405162461bcd60e51b815260040161065590612b2c565b8282600760008981526020019081526020016000208787604051611a1b9291906129e4565b908152604051908190036020019020611a3592909161241f565b5060019695505050505050565b6000600a8101546001600160a01b0316331480611a6c5750600a600101546001600160a01b031633145b611a885760405162461bcd60e51b815260040161065590612b52565b60005b600054811015611b67578260008281548110611aa957611aa9612dfe565b90600052602060002001541415611b57575b600054611ac9826001612c2b565b1015611b26576000611adc826001612c2b565b81548110611aec57611aec612dfe565b906000526020600020015460008281548110611b0a57611b0a612dfe565b600091825260209091200155611b1f81612d97565b9050611abb565b6000805480611b3757611b37612de8565b600190038181906000526020600020016000905590556001915050919050565b611b6081612d97565b9050611a8b565b50600092915050565b600a600001546001600160a01b0316331480611b995750600a600101546001600160a01b031633145b611bb55760405162461bcd60e51b815260040161065590612b52565b6040516001600160a01b0382169033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a600001546001600160a01b0316331415611c2357600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600b80546001600160a01b0319166001600160a01b0383161790555b50565b6000805b600054811015611b67578260008281548110611c6457611c64612dfe565b90600052602060002001541415611c7e5750600192915050565b611c8781612d97565b9050611c46565b6020015190565b602082015160009083906001600160a01b0316611cb157600080fd5b85611cce5760405162461bcd60e51b815260040161065590612b05565b60008511611cee5760405162461bcd60e51b815260040161065590612b2c565b8215611d4a57600086815260056020908152604080832088845282529182902086518154928801516001600160a01b0316610100026001600160a81b031990931660ff9091161791909117815590850151600190910155611dec565b600086815260046020908152604080832088845282529182902086518154928801516001600160a01b0316610100026001600160a81b031990931660ff9091161791909117815590850151600190910155611da486611efe565b611ddd576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6018690555b611dec86868660200151611f4a565b50600195945050505050565b606060005b60208160ff16108015611e315750828160ff1660208110611e2057611e20612dfe565b1a60f81b6001600160f81b03191615155b15611e4657611e3f81612db2565b9050611dfd565b60008160ff166001600160401b03811115611e6357611e63612e14565b6040519080825280601f01601f191660200182016040528015611e8d576020820181803683370190505b50905060005b8260ff168160ff161015611ef657848160ff1660208110611eb657611eb6612dfe565b1a60f81b828260ff1681518110611ecf57611ecf612dfe565b60200101906001600160f81b031916908160001a905350611eef81612db2565b9050611e93565b509392505050565b6000805b600154811015611b67578260018281548110611f2057611f20612dfe565b90600052602060002001541415611f3a5750600192915050565b611f4381612d97565b9050611f02565b82611f675760405162461bcd60e51b815260040161065590612b05565b60008211611f875760405162461bcd60e51b815260040161065590612b2c565b6000838152600260205260408120905b81548110156120875783828281548110611fb357611fb3612dfe565b9060005260206000209060020201600001541415612077576000828281548110611fdf57611fdf612dfe565b60009182526020909120600160029092020101546001600160a01b0390811691508416811461206f578383838154811061201b5761201b612dfe565b6000918252602080832060029290920290910160010180546001600160a01b0319166001600160a01b0394851617905587825260088152604080832085851684529091528082208290559186168152208690555b505050505050565b61208081612d97565b9050611f97565b506040805180820182528481526001600160a01b0393841660208083018281528554600180820188556000978852838820955160029092029095019081559051930180546001600160a01b03191693909616929092179094559382526008845280822092825291909252902055565b60008160008160000151116121405760405162461bcd60e51b815260206004820152601060248201526f07a65726f204d6178696d756d537761760841b6044820152606401610655565b60008160200151116121875760405162461bcd60e51b815260206004820152601060248201526f07a65726f204d696e696d756d537761760841b6044820152606401610655565b60008160400151116121d45760405162461bcd60e51b81526020600482015260166024820152751e995c9bc8109a59d5985b1d59551a1c995cda1bdb1960521b6044820152606401610655565b6020810151815110156122295760405162461bcd60e51b815260206004820152601960248201527f4d6178696d756d53776170203c204d696e696d756d53776170000000000000006044820152606401610655565b8060a00151816080015110156122815760405162461bcd60e51b815260206004820152601f60248201527f4d6178696d756d53776170466565203c204d696e696d756d53776170466565006044820152606401610655565b8060a00151816020015110156122d95760405162461bcd60e51b815260206004820152601c60248201527f4d696e696d756d53776170203c204d696e696d756d53776170466565000000006044820152606401610655565b620f424081606001511061232f5760405162461bcd60e51b815260206004820181905260248201527f53776170466565526174655065724d696c6c696f6e203e3d20313030303030306044820152606401610655565b600081606001511180612344575060a0810151155b6123875760405162461bcd60e51b815260206004820152601460248201527377726f6e67204d696e696d756d5377617046656560601b6044820152606401610655565b846123a45760405162461bcd60e51b815260040161065590612b05565b600084116123c45760405162461bcd60e51b815260040161065590612b2c565b50506000928352600660209081526040808520938552928152928290208151815592810151600180850191909155918101516002840155606081015160038401556080810151600484015560a0015160059092019190915590565b82805461242b90612d5c565b90600052602060002090601f01602090048101928261244d5760008555612493565b82601f106124665782800160ff19823516178555612493565b82800160010185558215612493579182015b82811115612493578235825591602001919060010190612478565b5061249f9291506124c4565b5090565b5080546000825560020290600052602060002090810190611c3f91906124d9565b5b8082111561249f57600081556001016124c5565b5b8082111561249f57600081556001810180546001600160a01b03191690556002016124da565b80356106da81612fcf565b60008083601f84011261251d57600080fd5b5081356001600160401b0381111561253457600080fd5b60208301915083602082850101111561254c57600080fd5b9250929050565b80356106da81612fe4565b60006020828403121561257057600080fd5b813561078c81612fcf565b60008060006040848603121561259057600080fd5b833561259b81612fcf565b925060208401356001600160401b038111156125b657600080fd5b6125c28682870161250b565b9497909650939450505050565b600080602083850312156125e257600080fd5b82356001600160401b038111156125f857600080fd5b6126048582860161250b565b90969095509350505050565b60008060006040848603121561262557600080fd5b83356001600160401b0381111561263b57600080fd5b6126478682870161250b565b909790965060209590950135949350505050565b6000806000806060858703121561267157600080fd5b84356001600160401b0381111561268757600080fd5b6126938782880161250b565b9095509350506020850135915060408501356126ae81612fcf565b939692955090935050565b6000806000808486036101008112156126d157600080fd5b85356001600160401b038111156126e757600080fd5b6126f38882890161250b565b9096509450506020860135925060c0603f198201121561271257600080fd5b509295919450926040019150565b60008060008084860360a081121561273757600080fd5b85356001600160401b0381111561274d57600080fd5b6127598882890161250b565b909650945050602086013592506060603f198201121561271257600080fd5b600060c0828403121561278a57600080fd5b60405160c081018181106001600160401b03821117156127ac576127ac612e14565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b60006060828403121561280357600080fd5b604051606081018181106001600160401b038211171561282557612825612e14565b604052823560ff8116811461283957600080fd5b8152602083013561284981612fcf565b60208201526040928301359281019290925250919050565b60006020828403121561287357600080fd5b5035919050565b6000806040838503121561288d57600080fd5b82359150602083013561289f81612fcf565b809150509250929050565b6000806000604084860312156128bf57600080fd5b8335925060208401356001600160401b038111156125b657600080fd5b6000806000806000606086880312156128f457600080fd5b8535945060208601356001600160401b038082111561291257600080fd5b61291e89838a0161250b565b9096509450604088013591508082111561293757600080fd5b506129448882890161250b565b969995985093965092949392505050565b6000806040838503121561296857600080fd5b8235915060208301356001600160401b0381111561298557600080fd5b83016080818603121561289f57600080fd5b6000815180845260005b818110156129bd576020818501810151868301820152016129a1565b818111156129cf576000602083870101525b50601f01601f19169290920160200192915050565b8183823760009101908152919050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612a4957603f19888603018452612a37858351612997565b94509285019290850190600101612a1b565b5092979650505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612aa1578151805185528601516001600160a01b0316868501529284019290850190600101612a73565b5091979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612ae657835183529284019291840191600101612aca565b50909695505050505050565b60208152600061078c6020830184612997565b6020808252600d908201526c195b5c1d1e481d1bdad95b9251609a1b604082015260600190565b6020808252600c908201526b1e995c9bc818da185a5b925160a21b604082015260600190565b6020808252600a908201526937b7363c9037bbb732b960b11b604082015260600190565b602081526000825160806020840152612b9260a0840182612997565b905060018060a01b03602085015116604084015260408401516001600160401b03808216606086015280606087015116608086015250508091505092915050565b604051608081016001600160401b0381118282101715612bf557612bf5612e14565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612c2357612c23612e14565b604052919050565b60008219821115612c3e57612c3e612dd2565b500190565b601f821115612c8957600081815260208120601f850160051c81016020861015612c6a5750805b601f850160051c820191505b8181101561206f57828155600101612c76565b505050565b600060808236031215612ca057600080fd5b612ca8612bd3565b82356001600160401b0380821115612cbf57600080fd5b9084019036601f830112612cd257600080fd5b8135602082821115612ce657612ce6612e14565b612cf8601f8301601f19168201612bfb565b92508183523681838601011115612d0e57600080fd5b81818501828501376000818385010152828552612d2c818801612500565b8186015250505050612d4060408401612553565b6040820152612d5160608401612553565b606082015292915050565b600181811c90821680612d7057607f821691505b60208210811415612d9157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612dab57612dab612dd2565b5060010190565b600060ff821660ff811415612dc957612dc9612dd2565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60008135610d3881612fcf565b60008135610d3881612fe4565b8135601e19833603018112612e5857600080fd5b820180356001600160401b03811115612e7057600080fd5b60208136038184011315612e8357600080fd5b612e9782612e918654612d5c565b86612c43565b6000601f831160018114612ecd5760008415612eb557508482018301355b600019600386901b1c1916600185901b178655612f2a565b600086815260209020601f19851690835b82811015612eff578785018601358255938501936001909101908501612ede565b5085821015612f1e5760001960f88760031b161c198585890101351681555b505060018460011b0186555b5050600184019250612f5d612f40828701612e2a565b84546001600160a01b0319166001600160a01b0391909116178455565b5050612f9a612f6e60408501612e37565b82805467ffffffffffffffff60a01b191660a09290921b67ffffffffffffffff60a01b16919091179055565b50612fcb612faa60608401612e37565b600283016001600160401b0382166001600160401b03198254161781555050565b5050565b6001600160a01b0381168114611c3f57600080fd5b6001600160401b0381168114611c3f57600080fdfea264697066735822122044229c437dedab5fbfe4e36db83073d3aea1d9a5a830bb321f37ff70d12de21f64736f6c63430008060033000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad992510000000000000000000000001f8587ad54788e3a568c1c18fc41f32790ddfe89

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad992510000000000000000000000001f8587ad54788e3a568c1c18fc41f32790ddfe89

-----Decoded View---------------
Arg [0] : newOwners (address[2]): 0xfa9da51631268a30ec3ddd1ccbf46c65fad99251,0x1f8587ad54788e3a568c1c18fc41f32790ddfe89

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251
Arg [1] : 0000000000000000000000001f8587ad54788e3a568c1c18fc41f32790ddfe89


Deployed ByteCode Sourcemap

3518:11662:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4415:24;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;8936:32:1;;;8918:51;;8906:2;8891:18;4415:24:0;;;;;;;;6415:140;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11044:200::-;;;;;;:::i;:::-;;:::i;:::-;;;11421:14:1;;11414:22;11396:41;;11384:2;11369:18;11044:200:0;11351:92:1;6762:199:0;;;;;;:::i;:::-;;:::i;:::-;;;;19064:13:1;;19079:4;19060:24;19042:43;;19145:4;19133:17;;;19127:24;-1:-1:-1;;;;;19123:50:1;19101:20;;;19094:80;19218:17;;;19212:24;19190:20;;;19183:54;19030:2;19015:18;6762:199:0;18997:246:1;9831:238:0;;;;;;:::i;:::-;;:::i;6563:191::-;;;;;;:::i;:::-;;:::i;8288:340::-;;;;;;:::i;:::-;;:::i;7340:137::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10822:214::-;;;;;;:::i;:::-;;:::i;11977:506::-;;;;;;:::i;:::-;;:::i;7169:163::-;;;;;;:::i;:::-;;:::i;5291:295::-;;;:::i;:::-;;;;;;;:::i;8199:81::-;;;:::i;:::-;;13540:481;;;;;;:::i;:::-;;:::i;5594:187::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14029:638::-;;;;;;:::i;:::-;;:::i;6969:192::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;18429:4:1;18471:3;18460:9;18456:19;18448:27;;18508:6;18502:13;18491:9;18484:32;18572:4;18564:6;18560:17;18554:24;18547:4;18536:9;18532:20;18525:54;18635:4;18627:6;18623:17;18617:24;18610:4;18599:9;18595:20;18588:54;18698:4;18690:6;18686:17;18680:24;18673:4;18662:9;18658:20;18651:54;18761:4;18753:6;18749:17;18743:24;18736:4;18725:9;18721:20;18714:54;18824:4;18816:6;18812:17;18806:24;18799:4;18788:9;18784:20;18777:54;18438:399;;;;;8039:152:0;;;;;;:::i;:::-;;:::i;5789:427::-;;;;;;:::i;:::-;;:::i;9603:220::-;;;;;;:::i;:::-;;:::i;10077:266::-;;;;;;:::i;:::-;;:::i;6224:183::-;;;;;;:::i;:::-;;:::i;13350:182::-;;;;;;:::i;:::-;;:::i;10351:214::-;;;;;;:::i;:::-;;:::i;5169:114::-;;;:::i;:::-;;;;;;;:::i;11701:268::-;;;;;;:::i;:::-;;:::i;10573:241::-;;;;;;:::i;:::-;;:::i;11252:441::-;;;;;;:::i;:::-;;:::i;4894:267::-;;;;;;:::i;:::-;;:::i;7485:272::-;;;;;;:::i;:::-;;:::i;4415:24::-;;;;;;;;;;;;;;-1:-1:-1;;;;;4415:24:0;;-1:-1:-1;4415:24:0;:::o;6415:140::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6526:21:0;;;;:12;:21;;;;;;;6519:28;;;;;;;;;;;;6526:21;;6519:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6519:28:0;;;-1:-1:-1;;6519:28:0;;;;-1:-1:-1;;;;;6519:28:0;;;;;;-1:-1:-1;;;;;;;;6519:28:0;;;;;;;;;;;;;;;;;;;;;;;6415:140;-1:-1:-1;;6415:140:0:o;11044:200::-;11109:4;4500:6;11109:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;;;;;;;;;11135:23:::1;11150:7;11135:14;:23::i;:::-;11134:24;11126:51;;;::::0;-1:-1:-1;;;11126:51:0;;12563:2:1;11126:51:0::1;::::0;::::1;12545:21:1::0;12602:2;12582:18;;;12575:30;-1:-1:-1;;;12621:18:1;;;12614:44;12675:18;;11126:51:0::1;12535:164:1::0;11126:51:0::1;-1:-1:-1::0;11188:12:0::1;:26:::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;;4562:1:::1;11044:200:::0;;;:::o;6762:199::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;6902:16:0;:42;6919:24;6935:7;;6919:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6919:15:0;;-1:-1:-1;;;6919:24:0:i;:::-;6902:42;;;;;;;;;;;;;;-1:-1:-1;6902:42:0;;;:51;;;;;;;;6895:58;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6895:58:0;;;;;;;;;;;;;;;;-1:-1:-1;6762:199:0;;;;;;:::o;9831:238::-;9973:4;2620:129;;;;;;;9956:6;2620:129;:::i;:::-;2692:22;;;;-1:-1:-1;;;;;2692:36:0;2684:45;;;;;;9997:64:::1;10013:24;10029:7;;10013:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10013:15:0::1;::::0;-1:-1:-1;;;10013:24:0:i:1;:::-;10039:7:::0;9997:64:::1;;::::0;;::::1;::::0;::::1;10048:6:::0;9997:64:::1;:::i;:::-;10056:4;9997:15;:64::i;:::-;9990:71:::0;9831:238;-1:-1:-1;;;;;;9831:238:0:o;6563:191::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;6699:12:0;:38;6712:24;6728:7;;6712:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6712:15:0;;-1:-1:-1;;;6712:24:0:i;8288:340::-;8411:4;4500:6;8411:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;2260:352:::1;8394:6:::0;2260:352:::1;:::i;:::-;2332:21;::::0;::::1;::::0;-1:-1:-1;;;;;2332:35:0::1;2324:68;;;::::0;-1:-1:-1;;;2324:68:0;;16752:2:1;2324:68:0::1;::::0;::::1;16734:21:1::0;16791:2;16771:18;;;16764:30;-1:-1:-1;;;16810:18:1;;;16803:50;16870:18;;2324:68:0::1;16724:170:1::0;2324:68:0::1;2434:1;2411:6;:20;;;-1:-1:-1::0;;;;;2411:24:0::1;;2403:65;;;::::0;-1:-1:-1;;;2403:65:0;;15021:2:1;2403:65:0::1;::::0;::::1;15003:21:1::0;15060:2;15040:18;;;15033:30;15099;15079:18;;;15072:58;15147:18;;2403:65:0::1;14993:178:1::0;2403:65:0::1;2493:17:::0;;2487:31;:35;;;;:77:::1;;-1:-1:-1::0;2532:17:0;;2526:31;2561:3:::1;-1:-1:-1::0;2526:38:0::1;2487:77;2479:113;;;::::0;-1:-1:-1;;;2479:113:0;;17452:2:1;2479:113:0::1;::::0;::::1;17434:21:1::0;17491:2;17471:18;;;17464:30;17530:25;17510:18;;;17503:53;17573:18;;2479:113:0::1;17424:173:1::0;2479:113:0::1;8446:1:::2;8436:7;:11;8428:36;;;;-1:-1:-1::0;;;8428:36:0::2;;;;;;;:::i;:::-;8475:21;::::0;;;:12:::2;:21;::::0;;;;8499:6;;8475:30:::2;8499:6:::0;8475:21;:30:::2;:::i;:::-;;;;8521:23;8536:7;8521:14;:23::i;:::-;8516:83;;8561:12;:26:::0;;::::2;::::0;::::2;::::0;;;;;;::::2;::::0;;;8516:83:::2;-1:-1:-1::0;8616:4:0::2;::::0;8288:340;-1:-1:-1;;;8288:340:0:o;7340:137::-;-1:-1:-1;;;;;7447:22:0;;;;;;:10;:22;;;;;7440:29;;7414:13;;7447:22;7440:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7340:137;;;:::o;10822:214::-;10910:4;4500:6;10910:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10935:18:0;::::1;10927:43;;;::::0;-1:-1:-1;;;10927:43:0;;15378:2:1;10927:43:0::1;::::0;::::1;15360:21:1::0;15417:2;15397:18;;;15390:30;-1:-1:-1;;;15436:18:1;;;15429:42;15488:18;;10927:43:0::1;15350:162:1::0;10927:43:0::1;-1:-1:-1::0;;;;;10981:16:0;::::1;;::::0;;;:10:::1;:16;::::0;;;;:25:::1;::::0;11000:6;;10981:25:::1;:::i;:::-;-1:-1:-1::0;11024:4:0::1;::::0;10822:214;-1:-1:-1;;;;10822:214:0:o;11977:506::-;12053:4;4500:6;12053:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;12070:17:::1;12090:24;12106:7;;12090:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;12090:15:0::1;::::0;-1:-1:-1;;;12090:24:0:i:1;:::-;12070:44;;12130:9;12125:328;12149:12;:19:::0;12145:23;::::1;12125:328;;;12213:9;12194:12;12207:1;12194:15;;;;;;;;:::i;:::-;;;;;;;;;:28;12190:252;;;12243:117;12256:12;:19:::0;;;12250:3:::1;::::0;:1;;:3:::1;:::i;:::-;:25;12243:117;;;12323:12;12336:3;:1:::0;12323:12;12336:3:::1;:::i;:::-;12323:17;;;;;;;;:::i;:::-;;;;;;;;;12305:12;12318:1;12305:15;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;:35:::0;12277:3:::1;::::0;::::1;:::i;:::-;;;12243:117;;;12378:12;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12422:4;12415:11;;;;;;12190:252;12170:3;::::0;::::1;:::i;:::-;;;12125:328;;;;12470:5;12463:12;;;4562:1;11977:506:::0;;;;:::o;7169:163::-;7264:13;7297;:22;7311:7;7297:22;;;;;;;;;;;7320:3;;7297:27;;;;;;;:::i;:::-;;;;;;;;;;;;;7290:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7169:163;;;;;:::o;5291:295::-;5401:12;:19;5349:22;;5401:19;-1:-1:-1;;;;;5440:20:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5431:29;;5476:9;5471:108;5495:6;5491:1;:10;5471:108;;;5535:32;5551:12;5564:1;5551:15;;;;;;;;:::i;:::-;;;;;;;;;5535;:32::i;:::-;5523:6;5530:1;5523:9;;;;;;;;:::i;:::-;;;;;;:44;;;;5503:3;;;;:::i;:::-;;;5471:108;;;;5373:213;5291:295;:::o;8199:81::-;4500:6;4507:1;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;8258:14:::1;::::0;::::1;::::0;;;::::1;8199:81::o:0;13540:481::-;4500:6;4507:1;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;13630:17:::1;13650:24;13666:7;;13650:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;13650:15:0::1;::::0;-1:-1:-1;;;13650:24:0:i:1;:::-;13685:35;13723:31:::0;;;:20:::1;:31;::::0;;;;13630:44;;-1:-1:-1;13765:200:0::1;13789:16:::0;;13785:20;::::1;13765:200;;;13827:31;13861:9;13871:1;13861:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;13827:46:::1;::::0;;;;::::1;::::0;;13861:12:::1;::::0;;::::1;::::0;;::::1;13827:46:::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;13827:46:0;;::::1;::::0;;::::1;::::0;;;13888:29;;;:11:::1;:29:::0;;;;;13918:21;;13888:52:::1;::::0;;;;;;;:65;-1:-1:-1;13807:3:0::1;::::0;::::1;:::i;:::-;;;13765:200;;;-1:-1:-1::0;13982:31:0::1;::::0;;;:20:::1;:31;::::0;;;;13975:38:::1;::::0;::::1;:::i;:::-;13619:402;;13540:481:::0;;:::o;5594:187::-;5683:24;5727:20;:46;5748:24;5764:7;;5748:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5748:15:0;;-1:-1:-1;;;5748:24:0:i;:::-;5727:46;;;;;;;;;;;5720:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5720:53:0;;;;;;;;;;;;;;;;;;;;;;5594:187;;;;:::o;14029:638::-;14130:4;4500:6;14130:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;14147:35:::1;14185:20;:46;14206:24;14222:7;;14206:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;14206:15:0::1;::::0;-1:-1:-1;;;14206:24:0:i:1;:::-;14185:46;;;;;;;;;;;14147:84;;14247:9;14242:395;14266:16:::0;;14262:20;::::1;14242:395;;;14332:7;14308:9;14318:1;14308:12;;;;;;;;:::i;:::-;;;;;;;;;;;:20;;;:31;14304:322;;;14418:1;14360:20:::0;;;:11:::1;:20;::::0;;;;14381:12;;14418:1;;14381:9;;14391:1;;14381:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:25:::1;:12;::::0;;::::1;;:25:::0;;;::::1;::::0;-1:-1:-1;;;;;14381:25:0::1;14360:47:::0;;;::::1;::::0;;;;;;;;:60;14439:108:::1;14452:16:::0;;14446:3:::1;:1:::0;14448::::1;14446:3;:::i;:::-;:22;14439:108;;;14513:9:::0;14523:3:::1;:1:::0;14525::::1;14523:3;:::i;:::-;14513:14;;;;;;;;:::i;:::-;;;;;;;;;;;14498:9;14508:1;14498:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:29;;:12:::1;::::0;;::::1;;:29:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;14498:29:0::1;-1:-1:-1::0;;;;;14498:29:0;;::::1;::::0;;;::::1;::::0;;14470:3:::1;::::0;::::1;:::i;:::-;;;14439:108;;;14565:9;:15;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;14565:15:0;;;;;::::1;;::::0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;14565:15:0::1;::::0;;;;;-1:-1:-1;14599:11:0::1;::::0;-1:-1:-1;;14599:11:0::1;14304:322;14284:3;::::0;::::1;:::i;:::-;;;14242:395;;;-1:-1:-1::0;14654:5:0::1;::::0;14029:638;-1:-1:-1;;;;;14029:638:0:o;6969:192::-;7068:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7068:17:0;7105:11;:37;7117:24;7133:7;;7117:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7117:15:0;;-1:-1:-1;;;7117:24:0:i;:::-;7105:37;;;;;;;;;;;:48;7143:9;7105:48;;;;;;;;;;;7098:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6969:192;;;;;:::o;8039:152::-;8118:4;8142:41;8158:24;8174:7;;8158:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8158:15:0;;-1:-1:-1;;;8158:24:0:i;:::-;8142:15;:41::i;5789:427::-;5889:7;5909:35;5947:20;:46;5968:24;5984:7;;5968:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5968:15:0;;-1:-1:-1;;;5968:24:0:i;:::-;5947:46;;;;;;;;;;;5909:84;;6009:9;6004:177;6028:16;;6024:20;;6004:177;;;6094:7;6070:9;6080:1;6070:12;;;;;;;;:::i;:::-;;;;;;;;;;;:20;;;:31;6066:104;;;6129:9;6139:1;6129:12;;;;;;;;:::i;:::-;;;;;;;;;:25;:12;;;;;:25;;-1:-1:-1;;;;;6129:25:0;;-1:-1:-1;6122:32:0;;-1:-1:-1;;6122:32:0;6066:104;6046:3;;;:::i;:::-;;;6004:177;;9603:220;9726:4;4500:6;9726:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;9750:65:::1;9766:24;9782:7;;9766:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9766:15:0::1;::::0;-1:-1:-1;;;9766:24:0:i:1;:::-;9792:7:::0;9750:65:::1;;::::0;;::::1;::::0;::::1;9801:6:::0;9750:65:::1;:::i;:::-;9809:5;9750:15;:65::i;:::-;9743:72:::0;9603:220;-1:-1:-1;;;;;9603:220:0:o;10077:266::-;10176:4;4500:6;10176:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;10193:17:::1;10213:24;10229:7;;10213:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10213:15:0::1;::::0;-1:-1:-1;;;10213:24:0:i:1;:::-;10291:27;::::0;;;:16:::1;:27;::::0;;;;;;;:36;;;;;;;;10255:80;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;10255:80:0::1;::::0;;::::1;::::0;;;;;::::1;::::0;;;;;10291:27;;-1:-1:-1;10255:80:0::1;::::0;10291:27;;:36;;10255:80;:15:::1;:80::i;6224:183::-:0;6364:20;;;;:11;:20;;;;;;;;-1:-1:-1;;;;;6364:34:0;;;;;;;;;;6315:13;;6348:51;;:15;:51::i;13350:182::-;4500:6;4507:1;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;13463:61:::1;13483:24;13499:7;;13483:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;13483:15:0::1;::::0;-1:-1:-1;;;13483:24:0:i:1;:::-;13509:7;13518:5;13463:19;:61::i;10351:214::-:0;10474:4;4500:6;10474:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;10498:59:::1;10513:24;10529:7;;10513:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10513:15:0::1;::::0;-1:-1:-1;;;10513:24:0:i:1;:::-;10539:9:::0;10498:59:::1;;::::0;;::::1;::::0;::::1;10550:6:::0;10498:59:::1;:::i;:::-;:14;:59::i;5169:114::-:0;5227:16;5263:12;5256:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5169:114;:::o;11701:268::-;11774:4;4500:6;11774:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;11791:17:::1;11811:24;11827:7;;11811:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;11811:15:0::1;::::0;-1:-1:-1;;;11811:24:0:i:1;:::-;11791:44;;11855:26;11871:9;11855:15;:26::i;:::-;11854:27;11846:54;;;::::0;-1:-1:-1;;;11846:54:0;;11875:2:1;11846:54:0::1;::::0;::::1;11857:21:1::0;11914:2;11894:18;;;11887:30;-1:-1:-1;;;11933:18:1;;;11926:44;11987:18;;11846:54:0::1;11847:164:1::0;11846:54:0::1;11911:12;:28:::0;;;;::::1;::::0;;-1:-1:-1;11911:28:0;;;;::::1;::::0;;;;:12;11701:268;-1:-1:-1;;;11701:268:0:o;10573:241::-;10686:4;4500:6;10686:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;10721:1:::1;10711:7;:11;10703:36;;;;-1:-1:-1::0;;;10703:36:0::1;;;;;;;:::i;:::-;10780:4;;10750:13;:22;10764:7;10750:22;;;;;;;;;;;10773:3;;10750:27;;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:34:::1;::::0;:27;;:34:::1;:::i;:::-;-1:-1:-1::0;10802:4:0::1;::::0;10573:241;-1:-1:-1;;;;;;10573:241:0:o;11252:441::-;11320:4;4500:6;11320:4;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;11342:9:::1;11337:326;11361:12;:19:::0;11357:23;::::1;11337:326;;;11425:7;11406:12;11419:1;11406:15;;;;;;;;:::i;:::-;;;;;;;;;:26;11402:250;;;11453:117;11466:12;:19:::0;11460:3:::1;:1:::0;11462::::1;11460:3;:::i;:::-;:25;11453:117;;;11533:12;11546:3;:1:::0;11548::::1;11546:3;:::i;:::-;11533:17;;;;;;;;:::i;:::-;;;;;;;;;11515:12;11528:1;11515:15;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;:35:::0;11487:3:::1;::::0;::::1;:::i;:::-;;;11453:117;;;11588:12;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11632:4;11625:11;;;11044:200:::0;;;:::o;11402:250::-:1;11382:3;::::0;::::1;:::i;:::-;;;11337:326;;;-1:-1:-1::0;11680:5:0::1;::::0;11252:441;-1:-1:-1;;11252:441:0:o;4894:267::-;4500:6;4507:1;4500:9;;-1:-1:-1;;;;;4500:9:0;4486:10;:23;;:50;;-1:-1:-1;4527:6:0;4534:1;4527:9;;-1:-1:-1;;;;;4527:9:0;4513:10;:23;4486:50;4478:73;;;;-1:-1:-1;;;4478:73:0;;;;;;;:::i;:::-;4972:42:::1;::::0;-1:-1:-1;;;;;4972:42:0;::::1;::::0;4993:10:::1;::::0;4972:42:::1;::::0;;;::::1;5043:6;5050:1;5043:9;::::0;-1:-1:-1;;;;;5043:9:0::1;5029:10;:23;5025:129;;;5069:6;:20:::0;;-1:-1:-1;;;;;;5069:20:0::1;-1:-1:-1::0;;;;;5069:20:0;;;::::1;::::0;;;::::1;::::0;;4894:267::o;5025:129::-:1;5122:9:::0;:20;;-1:-1:-1;;;;;;5122:20:0::1;-1:-1:-1::0;;;;;5122:20:0;::::1;;::::0;;5025:129:::1;4894:267:::0;:::o;7485:272::-;7556:4;;7573:154;7597:12;:19;7593:23;;7573:154;;;7661:7;7642:12;7655:1;7642:15;;;;;;;;:::i;:::-;;;;;;;;;:26;7638:78;;;-1:-1:-1;7696:4:0;;7485:272;-1:-1:-1;;7485:272:0:o;7638:78::-;7618:3;;;:::i;:::-;;;7573:154;;14675:165;14818:2;14809:12;14803:19;;14675:165::o;8636:629::-;2692:22;;;;8778:4;;8761:6;;-1:-1:-1;;;;;2692:36:0;2684:45;;;;;;8803:21;8795:47:::1;;;;-1:-1:-1::0;;;8795:47:0::1;;;;;;;:::i;:::-;8871:1;8861:7;:11;8853:36;;;;-1:-1:-1::0;;;8853:36:0::1;;;;;;;:::i;:::-;8904:6;8900:336;;;8927:25;::::0;;;:16:::1;:25;::::0;;;;;;;:34;;;;;;;;;:43;;;;;;::::1;::::0;-1:-1:-1;;;;;8927:43:0::1;;;-1:-1:-1::0;;;;;;8927:43:0;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;8900:336:::1;;;9003:21;::::0;;;:12:::1;:21;::::0;;;;;;;:30;;;;;;;;;:39;;;;;;::::1;::::0;-1:-1:-1;;;;;9003:39:0::1;;;-1:-1:-1::0;;;;;;9003:39:0;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;9062:24:::1;9016:7:::0;9062:15:::1;:24::i;:::-;9057:92;;9107:12;:26:::0;;;;::::1;::::0;;-1:-1:-1;9107:26:0;;;;;::::1;::::0;;;9057:92:::1;9163:61;9183:7;9192;9201:6;:22;;;9163:19;:61::i;:::-;-1:-1:-1::0;9253:4:0::1;::::0;8636:629;-1:-1:-1;;;;;8636:629:0:o;14848:329::-;14910:13;14936:7;14958:61;14969:2;14965:1;:6;;;:22;;;;;14975:4;14980:1;14975:7;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;14975:12:0;;;14965:22;14958:61;;;15004:3;;;:::i;:::-;;;14958:61;;;15029:15;15057:1;15047:12;;-1:-1:-1;;;;;15047:12:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15047:12:0;;15029:30;;15075:7;15070:72;15092:1;15088:5;;:1;:5;;;15070:72;;;15123:4;15128:1;15123:7;;;;;;;;;:::i;:::-;;;;15115:2;15118:1;15115:5;;;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;15115:15:0;;;;;;;;-1:-1:-1;15095:3:0;;;:::i;:::-;;;15070:72;;;-1:-1:-1;15166:2:0;14848:329;-1:-1:-1;;;14848:329:0:o;7765:266::-;7830:4;;7847:154;7871:12;:19;7867:23;;7847:154;;;7935:7;7916:12;7929:1;7916:15;;;;;;;;:::i;:::-;;;;;;;;;:26;7912:78;;;-1:-1:-1;7970:4:0;;7765:266;-1:-1:-1;;7765:266:0:o;7912:78::-;7892:3;;;:::i;:::-;;;7847:154;;12491:851;12597:21;12589:47;;;;-1:-1:-1;;;12589:47:0;;;;;;;:::i;:::-;12665:1;12655:7;:11;12647:36;;;;-1:-1:-1;;;12647:36:0;;;;;;;:::i;:::-;12694:35;12732:29;;;:20;:29;;;;;;12772:457;12796:16;;12792:20;;12772:457;;;12862:7;12838:9;12848:1;12838:12;;;;;;;;:::i;:::-;;;;;;;;;;;:20;;;:31;12834:384;;;12890:16;12909:9;12919:1;12909:12;;;;;;;;:::i;:::-;;;;;;;;;:25;:12;;;;;:25;;-1:-1:-1;;;;;12909:25:0;;;;-1:-1:-1;12957:17:0;;;;12953:225;;13027:5;12999:9;13009:1;12999:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:25;;:33;;-1:-1:-1;;;;;;12999:33:0;-1:-1:-1;;;;;12999:33:0;;;;;;13055:20;;;:11;:20;;;;;;:30;;;;;;;;;;;:43;;;13121:27;;;;;;:37;;;12953:225;13196:7;;;12491:851;;;:::o;12834:384::-;12814:3;;;:::i;:::-;;;12772:457;;;-1:-1:-1;13254:31:0;;;;;;;;;;;-1:-1:-1;;;;;13254:31:0;;;;;;;;;;13239:47;;;;;;;;-1:-1:-1;13239:47:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13239:47:0;;;;;;;;;;;;13297:20;;;:11;:20;;;;;:27;;;;;;;;;:37;12491:851::o;9273:322::-;9401:4;9384:6;2848:1;2827:6;:18;;;:22;2819:51;;;;-1:-1:-1;;;2819:51:0;;12218:2:1;2819:51:0;;;12200:21:1;12257:2;12237:18;;;12230:30;-1:-1:-1;;;12276:18:1;;;12269:46;12332:18;;2819:51:0;12190:166:1;2819:51:0;2910:1;2889:6;:18;;;:22;2881:51;;;;-1:-1:-1;;;2881:51:0;;16407:2:1;2881:51:0;;;16389:21:1;16446:2;16426:18;;;16419:30;-1:-1:-1;;;16465:18:1;;;16458:46;16521:18;;2881:51:0;16379:166:1;2881:51:0;2978:1;2951:6;:24;;;:28;2943:63;;;;-1:-1:-1;;;2943:63:0;;17101:2:1;2943:63:0;;;17083:21:1;17140:2;17120:18;;;17113:30;-1:-1:-1;;;17159:18:1;;;17152:52;17221:18;;2943:63:0;17073:172:1;2943:63:0;3047:18;;;;3025;;:40;;3017:78;;;;-1:-1:-1;;;3017:78:0;;14667:2:1;3017:78:0;;;14649:21:1;14706:2;14686:18;;;14679:30;14745:27;14725:18;;;14718:55;14790:18;;3017:78:0;14639:175:1;3017:78:0;3139:6;:21;;;3114:6;:21;;;:46;;3106:90;;;;-1:-1:-1;;;3106:90:0;;13966:2:1;3106:90:0;;;13948:21:1;14005:2;13985:18;;;13978:30;14044:33;14024:18;;;14017:61;14095:18;;3106:90:0;13938:181:1;3106:90:0;3237:6;:21;;;3215:6;:18;;;:43;;3207:84;;;;-1:-1:-1;;;3207:84:0;;13609:2:1;3207:84:0;;;13591:21:1;13648:2;13628:18;;;13621:30;13687;13667:18;;;13660:58;13735:18;;3207:84:0;13581:178:1;3207:84:0;3341:7;3310:6;:28;;;:38;3302:83;;;;-1:-1:-1;;;3302:83:0;;13248:2:1;3302:83:0;;;13230:21:1;;;13267:18;;;13260:30;13326:34;13306:18;;;13299:62;13378:18;;3302:83:0;13220:182:1;3302:83:0;3435:1;3404:6;:28;;;:32;:62;;;-1:-1:-1;3440:21:0;;;;:26;3404:62;3396:95;;;;-1:-1:-1;;;3396:95:0;;16058:2:1;3396:95:0;;;16040:21:1;16097:2;16077:18;;;16070:30;-1:-1:-1;;;16116:18:1;;;16109:50;16176:18;;3396:95:0;16030:170:1;3396:95:0;9426:21;9418:47:::1;;;;-1:-1:-1::0;;;9418:47:0::1;;;;;;;:::i;:::-;9496:1;9484:9;:13;9476:38;;;;-1:-1:-1::0;;;9476:38:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;9525:20:0::1;::::0;;;:11:::1;:20;::::0;;;;;;;:31;;;;;;;;;;:40;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;::::0;;;;;9273:322::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:134:1;82:20;;111:31;82:20;111:31;:::i;153:348::-;205:8;215:6;269:3;262:4;254:6;250:17;246:27;236:2;;287:1;284;277:12;236:2;-1:-1:-1;310:20:1;;-1:-1:-1;;;;;342:30:1;;339:2;;;385:1;382;375:12;339:2;422:4;414:6;410:17;398:29;;474:3;467:4;458:6;450;446:19;442:30;439:39;436:2;;;491:1;488;481:12;436:2;226:275;;;;;:::o;506:132::-;573:20;;602:30;573:20;602:30;:::i;643:247::-;702:6;755:2;743:9;734:7;730:23;726:32;723:2;;;771:1;768;761:12;723:2;810:9;797:23;829:31;854:5;829:31;:::i;895:546::-;975:6;983;991;1044:2;1032:9;1023:7;1019:23;1015:32;1012:2;;;1060:1;1057;1050:12;1012:2;1099:9;1086:23;1118:31;1143:5;1118:31;:::i;:::-;1168:5;-1:-1:-1;1224:2:1;1209:18;;1196:32;-1:-1:-1;;;;;1240:30:1;;1237:2;;;1283:1;1280;1273:12;1237:2;1322:59;1373:7;1364:6;1353:9;1349:22;1322:59;:::i;:::-;1002:439;;1400:8;;-1:-1:-1;1296:85:1;;-1:-1:-1;;;;1002:439:1:o;1446:411::-;1517:6;1525;1578:2;1566:9;1557:7;1553:23;1549:32;1546:2;;;1594:1;1591;1584:12;1546:2;1634:9;1621:23;-1:-1:-1;;;;;1659:6:1;1656:30;1653:2;;;1699:1;1696;1689:12;1653:2;1738:59;1789:7;1780:6;1769:9;1765:22;1738:59;:::i;:::-;1816:8;;1712:85;;-1:-1:-1;1536:321:1;-1:-1:-1;;;;1536:321:1:o;1862:479::-;1942:6;1950;1958;2011:2;1999:9;1990:7;1986:23;1982:32;1979:2;;;2027:1;2024;2017:12;1979:2;2067:9;2054:23;-1:-1:-1;;;;;2092:6:1;2089:30;2086:2;;;2132:1;2129;2122:12;2086:2;2171:59;2222:7;2213:6;2202:9;2198:22;2171:59;:::i;:::-;2249:8;;2145:85;;-1:-1:-1;2331:2:1;2316:18;;;;2303:32;;1969:372;-1:-1:-1;;;;1969:372:1:o;2346:614::-;2435:6;2443;2451;2459;2512:2;2500:9;2491:7;2487:23;2483:32;2480:2;;;2528:1;2525;2518:12;2480:2;2568:9;2555:23;-1:-1:-1;;;;;2593:6:1;2590:30;2587:2;;;2633:1;2630;2623:12;2587:2;2672:59;2723:7;2714:6;2703:9;2699:22;2672:59;:::i;:::-;2750:8;;-1:-1:-1;2646:85:1;-1:-1:-1;;2832:2:1;2817:18;;2804:32;;-1:-1:-1;2886:2:1;2871:18;;2858:32;2899:31;2858:32;2899:31;:::i;:::-;2470:490;;;;-1:-1:-1;2470:490:1;;-1:-1:-1;;2470:490:1:o;2965:638::-;3082:6;3090;3098;3106;3150:9;3141:7;3137:23;3180:3;3176:2;3172:12;3169:2;;;3197:1;3194;3187:12;3169:2;3237:9;3224:23;-1:-1:-1;;;;;3262:6:1;3259:30;3256:2;;;3302:1;3299;3292:12;3256:2;3341:59;3392:7;3383:6;3372:9;3368:22;3341:59;:::i;:::-;3419:8;;-1:-1:-1;3315:85:1;-1:-1:-1;;3501:2:1;3486:18;;3473:32;;-1:-1:-1;3539:3:1;-1:-1:-1;;3521:16:1;;3517:26;3514:2;;;3556:1;3553;3546:12;3514:2;-1:-1:-1;3117:486:1;;;;-1:-1:-1;3117:486:1;3594:2;3579:18;;-1:-1:-1;3117:486:1:o;3608:638::-;3726:6;3734;3742;3750;3794:9;3785:7;3781:23;3824:3;3820:2;3816:12;3813:2;;;3841:1;3838;3831:12;3813:2;3881:9;3868:23;-1:-1:-1;;;;;3906:6:1;3903:30;3900:2;;;3946:1;3943;3936:12;3900:2;3985:59;4036:7;4027:6;4016:9;4012:22;3985:59;:::i;:::-;4063:8;;-1:-1:-1;3959:85:1;-1:-1:-1;;4145:2:1;4130:18;;4117:32;;-1:-1:-1;4183:2:1;-1:-1:-1;;4165:16:1;;4161:25;4158:2;;;4199:1;4196;4189:12;4251:775;4336:6;4389:3;4377:9;4368:7;4364:23;4360:33;4357:2;;;4406:1;4403;4396:12;4357:2;4439;4433:9;4481:3;4473:6;4469:16;4551:6;4539:10;4536:22;-1:-1:-1;;;;;4503:10:1;4500:34;4497:62;4494:2;;;4562:18;;:::i;:::-;4602:10;4598:2;4591:22;;4650:9;4637:23;4629:6;4622:39;4722:2;4711:9;4707:18;4694:32;4689:2;4681:6;4677:15;4670:57;4788:2;4777:9;4773:18;4760:32;4755:2;4747:6;4743:15;4736:57;4854:2;4843:9;4839:18;4826:32;4821:2;4813:6;4809:15;4802:57;4921:3;4910:9;4906:19;4893:33;4887:3;4879:6;4875:16;4868:59;4989:3;4978:9;4974:19;4961:33;4955:3;4947:6;4943:16;4936:59;5014:6;5004:16;;;4347:679;;;;:::o;5031:736::-;5117:6;5170:2;5158:9;5149:7;5145:23;5141:32;5138:2;;;5186:1;5183;5176:12;5138:2;5219;5213:9;5261:2;5253:6;5249:15;5330:6;5318:10;5315:22;-1:-1:-1;;;;;5282:10:1;5279:34;5276:62;5273:2;;;5341:18;;:::i;:::-;5377:2;5370:22;5414:23;;5477:4;5466:16;;5456:27;;5446:2;;5497:1;5494;5487:12;5446:2;5510:21;;5583:2;5568:18;;5555:32;5596:33;5555:32;5596:33;:::i;:::-;5657:2;5645:15;;5638:32;5731:2;5716:18;;;5703:32;5686:15;;;5679:57;;;;-1:-1:-1;5649:6:1;5128:639;-1:-1:-1;5128:639:1:o;5772:180::-;5831:6;5884:2;5872:9;5863:7;5859:23;5855:32;5852:2;;;5900:1;5897;5890:12;5852:2;-1:-1:-1;5923:23:1;;5842:110;-1:-1:-1;5842:110:1:o;5957:315::-;6025:6;6033;6086:2;6074:9;6065:7;6061:23;6057:32;6054:2;;;6102:1;6099;6092:12;6054:2;6138:9;6125:23;6115:33;;6198:2;6187:9;6183:18;6170:32;6211:31;6236:5;6211:31;:::i;:::-;6261:5;6251:15;;;6044:228;;;;;:::o;6277:479::-;6357:6;6365;6373;6426:2;6414:9;6405:7;6401:23;6397:32;6394:2;;;6442:1;6439;6432:12;6394:2;6478:9;6465:23;6455:33;;6539:2;6528:9;6524:18;6511:32;-1:-1:-1;;;;;6558:6:1;6555:30;6552:2;;;6598:1;6595;6588:12;6761:789;6862:6;6870;6878;6886;6894;6947:2;6935:9;6926:7;6922:23;6918:32;6915:2;;;6963:1;6960;6953:12;6915:2;6999:9;6986:23;6976:33;;7060:2;7049:9;7045:18;7032:32;-1:-1:-1;;;;;7124:2:1;7116:6;7113:14;7110:2;;;7140:1;7137;7130:12;7110:2;7179:59;7230:7;7221:6;7210:9;7206:22;7179:59;:::i;:::-;7257:8;;-1:-1:-1;7153:85:1;-1:-1:-1;7345:2:1;7330:18;;7317:32;;-1:-1:-1;7361:16:1;;;7358:2;;;7390:1;7387;7380:12;7358:2;;7429:61;7482:7;7471:8;7460:9;7456:24;7429:61;:::i;:::-;6905:645;;;;-1:-1:-1;6905:645:1;;-1:-1:-1;7509:8:1;;7403:87;6905:645;-1:-1:-1;;;6905:645:1:o;7555:457::-;7652:6;7660;7713:2;7701:9;7692:7;7688:23;7684:32;7681:2;;;7729:1;7726;7719:12;7681:2;7765:9;7752:23;7742:33;;7826:2;7815:9;7811:18;7798:32;-1:-1:-1;;;;;7845:6:1;7842:30;7839:2;;;7885:1;7882;7875:12;7839:2;7908:22;;7964:3;7946:16;;;7942:26;7939:2;;;7981:1;7978;7971:12;8017:472;8059:3;8097:5;8091:12;8124:6;8119:3;8112:19;8149:1;8159:162;8173:6;8170:1;8167:13;8159:162;;;8235:4;8291:13;;;8287:22;;8281:29;8263:11;;;8259:20;;8252:59;8188:12;8159:162;;;8339:6;8336:1;8333:13;8330:2;;;8405:1;8398:4;8389:6;8384:3;8380:16;8376:27;8369:38;8330:2;-1:-1:-1;8471:2:1;8450:15;-1:-1:-1;;8446:29:1;8437:39;;;;8478:4;8433:50;;8067:422;-1:-1:-1;;8067:422:1:o;8494:273::-;8679:6;8671;8666:3;8653:33;8635:3;8705:16;;8730:13;;;8705:16;8643:124;-1:-1:-1;8643:124:1:o;8980:803::-;9142:4;9171:2;9211;9200:9;9196:18;9241:2;9230:9;9223:21;9264:6;9299;9293:13;9330:6;9322;9315:22;9368:2;9357:9;9353:18;9346:25;;9430:2;9420:6;9417:1;9413:14;9402:9;9398:30;9394:39;9380:53;;9468:2;9460:6;9456:15;9489:1;9499:255;9513:6;9510:1;9507:13;9499:255;;;9606:2;9602:7;9590:9;9582:6;9578:22;9574:36;9569:3;9562:49;9634:40;9667:6;9658;9652:13;9634:40;:::i;:::-;9624:50;-1:-1:-1;9732:12:1;;;;9697:15;;;;9535:1;9528:9;9499:255;;;-1:-1:-1;9771:6:1;;9151:632;-1:-1:-1;;;;;;;9151:632:1:o;9788:826::-;10021:2;10073:21;;;10143:13;;10046:18;;;10165:22;;;9992:4;;10021:2;10206;;10224:18;;;;10265:15;;;9992:4;10308:280;10322:6;10319:1;10316:13;10308:280;;;10381:13;;10419:9;;10407:22;;10473:11;;10467:18;-1:-1:-1;;;;;10463:44:1;10449:12;;;10442:66;10528:12;;;;10563:15;;;;10504:1;10337:9;10308:280;;;-1:-1:-1;10605:3:1;;10001:613;-1:-1:-1;;;;;;;10001:613:1:o;10619:632::-;10790:2;10842:21;;;10912:13;;10815:18;;;10934:22;;;10761:4;;10790:2;11013:15;;;;10987:2;10972:18;;;10761:4;11056:169;11070:6;11067:1;11064:13;11056:169;;;11131:13;;11119:26;;11200:15;;;;11165:12;;;;11092:1;11085:9;11056:169;;;-1:-1:-1;11242:3:1;;10770:481;-1:-1:-1;;;;;;10770:481:1:o;11448:220::-;11597:2;11586:9;11579:21;11560:4;11617:45;11658:2;11647:9;11643:18;11635:6;11617:45;:::i;12704:337::-;12906:2;12888:21;;;12945:2;12925:18;;;12918:30;-1:-1:-1;;;12979:2:1;12964:18;;12957:43;13032:2;13017:18;;12878:163::o;14124:336::-;14326:2;14308:21;;;14365:2;14345:18;;;14338:30;-1:-1:-1;;;14399:2:1;14384:18;;14377:42;14451:2;14436:18;;14298:162::o;15517:334::-;15719:2;15701:21;;;15758:2;15738:18;;;15731:30;-1:-1:-1;;;15792:2:1;15777:18;;15770:40;15842:2;15827:18;;15691:160::o;17602:678::-;17785:2;17774:9;17767:21;17748:4;17823:6;17817:13;17866:4;17861:2;17850:9;17846:18;17839:32;17894:52;17941:3;17930:9;17926:19;17912:12;17894:52;:::i;:::-;17880:66;;18027:1;18023;18018:3;18014:11;18010:19;18004:2;17996:6;17992:15;17986:22;17982:48;17977:2;17966:9;17962:18;17955:76;18080:2;18072:6;18068:15;18062:22;-1:-1:-1;;;;;18177:2:1;18161:14;18157:23;18152:2;18141:9;18137:18;18130:51;18247:2;18241;18233:6;18229:15;18223:22;18219:31;18212:4;18201:9;18197:20;18190:61;;;18268:6;18260:14;;;17757:523;;;;:::o;19248:253::-;19320:2;19314:9;19362:4;19350:17;;-1:-1:-1;;;;;19382:34:1;;19418:22;;;19379:62;19376:2;;;19444:18;;:::i;:::-;19480:2;19473:22;19294:207;:::o;19506:275::-;19577:2;19571:9;19642:2;19623:13;;-1:-1:-1;;19619:27:1;19607:40;;-1:-1:-1;;;;;19662:34:1;;19698:22;;;19659:62;19656:2;;;19724:18;;:::i;:::-;19760:2;19753:22;19551:230;;-1:-1:-1;19551:230:1:o;19912:128::-;19952:3;19983:1;19979:6;19976:1;19973:13;19970:2;;;19989:18;;:::i;:::-;-1:-1:-1;20025:9:1;;19960:80::o;20045:545::-;20147:2;20142:3;20139:11;20136:2;;;20183:1;20208:5;20204:2;20197:17;20253:4;20249:2;20239:19;20323:2;20311:10;20307:19;20304:1;20300:27;20294:4;20290:38;20359:4;20347:10;20344:20;20341:2;;;-1:-1:-1;20382:4:1;20341:2;20437;20432:3;20428:12;20425:1;20421:20;20415:4;20411:31;20401:41;;20492:82;20510:2;20503:5;20500:13;20492:82;;;20555:17;;;20536:1;20525:13;20492:82;;20136:2;20126:464;;;:::o;20595:1104::-;20701:9;20760:4;20752:5;20736:14;20732:26;20728:37;20725:2;;;20778:1;20775;20768:12;20725:2;20806:22;;:::i;:::-;20864:5;20851:19;-1:-1:-1;;;;;20930:2:1;20922:6;20919:14;20916:2;;;20946:1;20943;20936:12;20916:2;20969:18;;;;21025:14;21018:4;21010:13;;21006:34;20996:2;;21054:1;21051;21044:12;20996:2;21090;21077:16;21112:4;21135:2;21131;21128:10;21125:2;;;21141:18;;:::i;:::-;21183:53;21226:2;21207:13;;-1:-1:-1;;21203:27:1;21199:36;;21183:53;:::i;:::-;21170:66;;21259:2;21252:5;21245:17;21299:14;21294:2;21289;21285;21281:11;21277:20;21274:40;21271:2;;;21327:1;21324;21317:12;21271:2;21382;21377;21373;21369:11;21364:2;21357:5;21353:14;21340:45;21426:1;21421:2;21416;21409:5;21405:14;21401:23;21394:34;21453:5;21444:7;21437:22;21493:34;21523:2;21516:5;21512:14;21493:34;:::i;:::-;21488:2;21479:7;21475:16;21468:60;;;;;21562:33;21591:2;21584:5;21580:14;21562:33;:::i;:::-;21557:2;21548:7;21544:16;21537:59;21630:33;21659:2;21652:5;21648:14;21630:33;:::i;:::-;21625:2;21612:16;;21605:59;21616:7;20715:984;-1:-1:-1;;20715:984:1:o;21704:380::-;21783:1;21779:12;;;;21826;;;21847:2;;21901:4;21893:6;21889:17;21879:27;;21847:2;21954;21946:6;21943:14;21923:18;21920:38;21917:2;;;22000:10;21995:3;21991:20;21988:1;21981:31;22035:4;22032:1;22025:15;22063:4;22060:1;22053:15;21917:2;;21759:325;;;:::o;22260:135::-;22299:3;-1:-1:-1;;22320:17:1;;22317:2;;;22340:18;;:::i;:::-;-1:-1:-1;22387:1:1;22376:13;;22307:88::o;22400:175::-;22437:3;22481:4;22474:5;22470:16;22510:4;22501:7;22498:17;22495:2;;;22518:18;;:::i;:::-;22567:1;22554:15;;22445:130;-1:-1:-1;;22445:130:1:o;22580:127::-;22641:10;22636:3;22632:20;22629:1;22622:31;22672:4;22669:1;22662:15;22696:4;22693:1;22686:15;22712:127;22773:10;22768:3;22764:20;22761:1;22754:31;22804:4;22801:1;22794:15;22828:4;22825:1;22818:15;22844:127;22905:10;22900:3;22896:20;22893:1;22886:31;22936:4;22933:1;22926:15;22960:4;22957:1;22950:15;22976:127;23037:10;23032:3;23028:20;23025:1;23018:31;23068:4;23065:1;23058:15;23092:4;23089:1;23082:15;23108:176;23153:11;23205:3;23192:17;23218:31;23243:5;23218:31;:::i;23289:174::-;23333:11;23385:3;23372:17;23398:30;23422:5;23398:30;:::i;23668:2010::-;23848:5;23835:19;23933:2;23929:7;23921:5;23905:14;23901:26;23897:40;23877:18;23873:65;23863:2;;23952:1;23949;23942:12;23863:2;23977:30;;24030:18;;-1:-1:-1;;;;;24060:30:1;;24057:2;;;24103:1;24100;24093:12;24057:2;24126:4;24181:6;24165:14;24161:27;24156:2;24150:4;24146:13;24142:47;24139:2;;;24202:1;24199;24192:12;24139:2;24215:97;24305:6;24265:38;24297:4;24291:11;24265:38;:::i;:::-;24259:4;24215:97;:::i;:::-;24338:1;24366:2;24358:6;24355:14;24383:1;24378:644;;;;25068:1;25085:6;25082:2;;;-1:-1:-1;25150:20:1;;;25146:29;;25133:43;25082:2;-1:-1:-1;;22217:1:1;22213:11;;;22209:24;22205:29;22195:40;22241:1;22237:11;;;22192:57;25203:83;;24348:948;;24378:644;19859:1;19852:14;;;19896:4;19883:18;;-1:-1:-1;;24414:20:1;;;24518:9;24540:235;24554:7;24551:1;24548:14;24540:235;;;24645:20;;;24641:29;;24628:43;24613:59;;24743:18;;;;24711:1;24699:14;;;;24570:10;;24540:235;;;24544:3;24803:6;24794:7;24791:19;24788:2;;;24943:1;24939:6;24933:3;24924:6;24921:1;24917:14;24913:24;24909:37;24905:42;24899:2;24887:9;24881:4;24877:20;24873:29;24860:43;24856:92;24848:6;24841:108;24788:2;;;25009:1;25000:6;24997:1;24993:14;24989:22;24983:4;24976:36;24348:948;;;25333:1;25327:4;25323:12;25305:30;;25344:104;25404:43;25443:2;25436:5;25432:14;25404:43;:::i;:::-;23572:11;;-1:-1:-1;;;;;;23568:54:1;-1:-1:-1;;;;;23624:31:1;;;;23565:91;23552:105;;23542:121;25344:104;;;25457:101;25515:42;25553:2;25546:5;25542:14;25515:42;:::i;:::-;25503:10;25961:11;;-1:-1:-1;;;;25997:42:1;26066:3;26045:15;;;;-1:-1:-1;;;26041:50:1;25994:98;;;;25981:112;;25941:158;25457:101;;25567:105;25629:42;25667:2;25660:5;25656:14;25629:42;:::i;:::-;25625:1;25619:4;25615:12;-1:-1:-1;;;;;25830:5:1;25826:30;-1:-1:-1;;;;;25800:23:1;25793:4;25787:11;25783:41;25780:77;25774:4;25767:91;25757:107;;;25567:105;23799:1879;;:::o;26104:131::-;-1:-1:-1;;;;;26179:31:1;;26169:42;;26159:2;;26225:1;26222;26215:12;26240:129;-1:-1:-1;;;;;26318:5:1;26314:30;26307:5;26304:41;26294:2;;26359:1;26356;26349:12

Swarm Source

ipfs://44229c437dedab5fbfe4e36db83073d3aea1d9a5a830bb321f37ff70d12de21f
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading