Contract 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc

Contract Overview

Balance:
0 HT

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xfcad55bf303c700dfb7bc8e501d278b779a5b3efc906e9634faa93841919967eTo Brush163831012022-06-24 3:07:169 days 10 hrs ago0x77b6195f93745fc123136b5c94613ab1c5631745 IN 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0 HT0.00036031725 2.25
0xb23740a8bf30f777fd9432a4cc6856b6a4a0fb55777c612ebeb0076b857da480To Brush163830382022-06-24 3:04:079 days 10 hrs ago0x77b6195f93745fc123136b5c94613ab1c5631745 IN 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0 HT0.00036031725 2.25
0xaaca00530a812bec2a90cfafd9efed06d1b6b0bce4b6ec561e2dee6d7c9ec1acSet Tdex163828262022-06-24 2:53:319 days 10 hrs ago0x194ad74eb7bc6b46b98f0d3cda9b643ec0c6c0fc IN 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0 HT0.000046291 1
0xbfc727e3c84207d4ffc5549292c64a3be6d67f0891703aa521f11dece4f0bf77Add Traders163828122022-06-24 2:52:499 days 10 hrs ago0x194ad74eb7bc6b46b98f0d3cda9b643ec0c6c0fc IN 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0 HT0.000091222 1
0x5f6f4011772e0fa87a088f31150a9b488b105c8c4e69151c595183bd043b0e75Set Marketmakers163828072022-06-24 2:52:349 days 10 hrs ago0x194ad74eb7bc6b46b98f0d3cda9b643ec0c6c0fc IN 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0 HT0.000046225 1
0x41d44fe5e173c679f3ee2deeadad1693834608e419c91ae85787aa900da45376Set Admin163828062022-06-24 2:52:319 days 10 hrs ago0x194ad74eb7bc6b46b98f0d3cda9b643ec0c6c0fc IN 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0 HT0.000046224 1
0xf3fccdd9d983b4b2d420ca0e4ad1313e98c9a008b26b480570a9c5d0645372010x60806040163827612022-06-24 2:50:169 days 11 hrs ago0x194ad74eb7bc6b46b98f0d3cda9b643ec0c6c0fc IN  Create: TdexTools0 HT0.006216855 2.5
[ Download CSV Export 
Latest 14 internal transactions
Parent Txn Hash Block From To Value
0xfcad55bf303c700dfb7bc8e501d278b779a5b3efc906e9634faa93841919967e163831012022-06-24 3:07:169 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x960b556d48ece74cfeb1b793789d90020d4a52680 HT
0xfcad55bf303c700dfb7bc8e501d278b779a5b3efc906e9634faa93841919967e163831012022-06-24 3:07:169 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x960b556d48ece74cfeb1b793789d90020d4a52680 HT
0xfcad55bf303c700dfb7bc8e501d278b779a5b3efc906e9634faa93841919967e163831012022-06-24 3:07:169 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x960b556d48ece74cfeb1b793789d90020d4a52680 HT
0xfcad55bf303c700dfb7bc8e501d278b779a5b3efc906e9634faa93841919967e163831012022-06-24 3:07:169 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x0ba5bd9c265dfd6f4a76807f65881ceb0c6e0cb20 HT
0xfcad55bf303c700dfb7bc8e501d278b779a5b3efc906e9634faa93841919967e163831012022-06-24 3:07:169 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x0ba5bd9c265dfd6f4a76807f65881ceb0c6e0cb20 HT
0xfcad55bf303c700dfb7bc8e501d278b779a5b3efc906e9634faa93841919967e163831012022-06-24 3:07:169 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x881151d0074f439b6529a53969f949a4417979740 HT
0xfcad55bf303c700dfb7bc8e501d278b779a5b3efc906e9634faa93841919967e163831012022-06-24 3:07:169 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x881151d0074f439b6529a53969f949a4417979740 HT
0xb23740a8bf30f777fd9432a4cc6856b6a4a0fb55777c612ebeb0076b857da480163830382022-06-24 3:04:079 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x960b556d48ece74cfeb1b793789d90020d4a52680 HT
0xb23740a8bf30f777fd9432a4cc6856b6a4a0fb55777c612ebeb0076b857da480163830382022-06-24 3:04:079 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x960b556d48ece74cfeb1b793789d90020d4a52680 HT
0xb23740a8bf30f777fd9432a4cc6856b6a4a0fb55777c612ebeb0076b857da480163830382022-06-24 3:04:079 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x960b556d48ece74cfeb1b793789d90020d4a52680 HT
0xb23740a8bf30f777fd9432a4cc6856b6a4a0fb55777c612ebeb0076b857da480163830382022-06-24 3:04:079 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x0ba5bd9c265dfd6f4a76807f65881ceb0c6e0cb20 HT
0xb23740a8bf30f777fd9432a4cc6856b6a4a0fb55777c612ebeb0076b857da480163830382022-06-24 3:04:079 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x0ba5bd9c265dfd6f4a76807f65881ceb0c6e0cb20 HT
0xb23740a8bf30f777fd9432a4cc6856b6a4a0fb55777c612ebeb0076b857da480163830382022-06-24 3:04:079 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x881151d0074f439b6529a53969f949a4417979740 HT
0xb23740a8bf30f777fd9432a4cc6856b6a4a0fb55777c612ebeb0076b857da480163830382022-06-24 3:04:079 days 10 hrs ago 0xd11dce94bb5e93b62b6cdf04c444b234f36356bc0x881151d0074f439b6529a53969f949a4417979740 HT
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TdexTools

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2022-06-24
*/

/**
 *Submitted for verification at hecoinfo.com on 2022-03-21
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.8.0 <0.9.0;

struct Token {
    string symbol;
    string name;
    address tokenContract;
    uint decimals;
}

struct Dish {
    uint256 price;
    uint256 amount;
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a >= b) return a;
        return b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        require(a >=0 && b>=0, "SafeMath: Cannot have negative numbers");
        if (a <= b) return a;
        return b;
    }
}

interface TdexInterface {

    function Buy(address _tokenContract, uint256 _price, uint256 _token_amount) external returns (uint256 orderId);

    function BuyETH(uint256 _price, uint256 _token_amount) external returns (uint256 orderId);

    function Sell(address _tokenContract, uint256 _price, uint256 _token_amount) external returns (uint256 orderId);

    function SellETH(uint256 _price) external payable returns (uint256 orderId);

    function balanceOf(address _tokenContract, address _sender) external view returns (uint256);

    function getBuyOrderPublished(address _tokenContract, uint count) external view returns (Dish[] memory list);

    function getSellOrderPublished(address _tokenContract, uint count) external view returns (Dish[] memory list);

    function mining() external view returns (address);

    function getToken(address _tokenContract) external view returns (Token memory token);
}

interface TdexMining {

    function sendReceive() external returns (uint256);

    function tokenContract() external view returns (address);
}


contract TdexTools {

    address public constant_ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;

    // address public constant_USDT = 0xa71EdC38d189767582C38A3145b5873052c3e47a;
    address public constant_USDT = 0x881151D0074F439b6529A53969F949A441797974;

    TdexInterface _tdex;

    address private _owner;

    address private _admin;

    address private _marketmakers;

    address[] private _tradersList;

    mapping(address => bool) _tradersMap;

    fallback() external
    {

    }

    receive() external payable
    {
        if (msg.value > 0)
        {

        }
    }

    constructor () {
        _owner = msg.sender;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function setAdmin(address __admin) external onlyOwner
    {
        _admin = __admin;
    }

    modifier onlyAdmin() {
        require(_admin == msg.sender, "Ownable: caller is not the administrator");
        _;
    }

    function setMarketmakers(address __marketmakers) external onlyAdmin
    {
        _marketmakers = __marketmakers;
    }

    modifier onlyMarketmakers() {
        require(_marketmakers == msg.sender, "Ownable: caller is not the marketmakers");
        _;
    }

    function setTdex(address __tdex) external onlyOwner
    {
        _tdex = TdexInterface(__tdex);
    }

    function addTraders(address __traders) external onlyAdmin
    {
        if (_tradersMap[__traders] == false)
        {
            _tradersMap[__traders] = true;

            {
                bool added = false;
                for (uint i=0; i<_tradersList.length;i++)
                {
                    if (_tradersList[i] == address(0))
                    {
                        _tradersList[i] = __traders;
                        added = true;
                    }
                }
                if (added == false)
                {
                    _tradersList.push(__traders);
                }
            }
        }
    }

    function removeTraders(address __traders) external onlyAdmin
    {
        if (_tradersMap[__traders] == true)
        {
            delete _tradersMap[__traders];

            {
                for (uint i=0; i<_tradersList.length; i++)
                {
                    if (_tradersList[i] == __traders)
                    {
                        _tradersList[i] = address(0);
                    }
                }
            }
        }
    }

    modifier onlyTraders() {
        require(_tradersMap[msg.sender] == true, "Ownable: caller is not the traders");
        _;
    }

    function balanceOf(address _tokenContract) external view returns (uint256)
    {
        return _tdex.balanceOf(_tokenContract, address(this));
    }

    function Withdraw(address _tokenContract) external onlyMarketmakers
    {
        uint256 balance = this.balanceOf(_tokenContract);
        if (_tokenContract == constant_ETH)
        {
            payable(msg.sender).transfer(balance);
        }
        else
        {
            IERC20(_tokenContract).transfer(msg.sender, balance);
        }
    }

    function SendReceive() external onlyMarketmakers
    {
        address tokenContract = TdexMining(_tdex.mining()).tokenContract();
        uint256 amount = TdexMining(_tdex.mining()).sendReceive();
        IERC20(tokenContract).transfer(msg.sender, amount);
    }

    function Approve(address _tokenContract) internal
    {
        uint256 allowanceUSDT = IERC20(constant_USDT).allowance(address(this), address(_tdex));
        if (allowanceUSDT < 1e30)
        {
            IERC20(constant_USDT).approve(address(_tdex), 1e40);
        }
        uint256 allowance = IERC20(_tokenContract).allowance(address(this), address(_tdex));
        if (allowance < 1e30)
        {
            IERC20(_tokenContract).approve(address(_tdex), 1e40);
        }
    }

    function randomUint(
        uint256 amount,
        uint256 min,
        uint256 max
    ) internal view returns (uint256) {
        if (min >= max) {
            return min;
        }
        bytes32 seed = keccak256(abi.encodePacked(blockhash(block.number), block.timestamp, amount));

        uint256 number = uint256(seed);
        return (number % (max - min)) + min;
    }

    function GetPrice(address _tokenContract, uint256 _amount) internal view returns (uint256)
    {
        Dish memory buyPublished = _tdex.getBuyOrderPublished(_tokenContract, 1)[0];
        Dish memory sellPublished = _tdex.getSellOrderPublished(_tokenContract, 1)[0];
        require(sellPublished.price >= buyPublished.price + 2, "failure");
        uint256 mid_price = (sellPublished.price - buyPublished.price) / 2 + buyPublished.price;
        uint256 p_dec = 26 - _tdex.getToken(_tokenContract).decimals;
        uint256 p_min = 1;
        if (mid_price >= (10 ** (p_dec + 3)))
        {
            p_min = 10 ** (p_dec - 2);
        }
        else if (mid_price >= (10 ** (p_dec - 1)))
        {
            p_min = 10 ** (p_dec - 4);
        }
        else
        {
            p_min = 10 ** (p_dec - 8);
        }
        uint256 p_buyPublished = buyPublished.price / p_min;
        uint256 p_sellPublished = sellPublished.price / p_min;
        require(p_sellPublished >= p_buyPublished + 2, "failure"); 
        return randomUint(_amount, p_buyPublished + 1, p_sellPublished - 1) * p_min;
    }

    function ToBrush(address _tokenContract, uint256 _amount) external onlyTraders
    {
        Approve(_tokenContract);
        uint256 price = GetPrice(_tokenContract, _amount);
        _tdex.Buy(_tokenContract, price, _amount);
        _tdex.Sell(_tokenContract, price, _amount);
    }

    function ToBrushEth(uint256 _amount) external onlyTraders
    {
        Approve(constant_ETH);
        uint256 price = GetPrice(constant_ETH, _amount);
        _tdex.BuyETH(price, _amount);
        _tdex.SellETH{value:_amount}(price);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"SendReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ToBrush","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ToBrushEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"Withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"__traders","type":"address"}],"name":"addTraders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"constant_ETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"constant_USDT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"__traders","type":"address"}],"name":"removeTraders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"__admin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"__marketmakers","type":"address"}],"name":"setMarketmakers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"__tdex","type":"address"}],"name":"setTdex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073881151d0074f439b6529a53969f949a441797974600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156100b957600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612ae38061010a6000396000f3fe6080604052600436106100ab5760003560e01c8063704b6c0211610064578063704b6c02146101ba57806370a08231146101e35780637e5ca4c8146102205780639097652514610237578063ce4bbe4614610260578063f676115114610289576100b2565b806301ed19c3146100c057806308c86c27146100e95780632f64b93214610114578063412177f81461013d57806355d16753146101665780636f32609d1461018f576100b2565b366100b257005b3480156100be57600080fd5b005b3480156100cc57600080fd5b506100e760048036038101906100e29190611c8d565b6102b2565b005b3480156100f557600080fd5b506100fe610386565b60405161010b9190611cc9565b60405180910390f35b34801561012057600080fd5b5061013b60048036038101906101369190611d1a565b6103ac565b005b34801561014957600080fd5b50610164600480360381019061015f9190611c8d565b6105db565b005b34801561017257600080fd5b5061018d60048036038101906101889190611d47565b6106af565b005b34801561019b57600080fd5b506101a46108a4565b6040516101b19190611cc9565b60405180910390f35b3480156101c657600080fd5b506101e160048036038101906101dc9190611c8d565b6108c8565b005b3480156101ef57600080fd5b5061020a60048036038101906102059190611c8d565b61099c565b6040516102179190611d96565b60405180910390f35b34801561022c57600080fd5b50610235610a43565b005b34801561024357600080fd5b5061025e60048036038101906102599190611c8d565b610d5e565b005b34801561026c57600080fd5b5061028760048036038101906102829190611c8d565b610f8d565b005b34801561029557600080fd5b506102b060048036038101906102ab9190611c8d565b61123b565b005b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033990611e34565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60011515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461043f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043690611ec6565b60405180910390fd5b61046860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661146c565b600061049460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611789565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3da8edf82846040518363ffffffff1660e01b81526004016104f3929190611ee6565b6020604051808303816000875af1158015610512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105369190611f24565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637017689683836040518363ffffffff1660e01b81526004016105939190611d96565b60206040518083038185885af11580156105b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105d69190611f24565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290611f9d565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60011515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990611ec6565b60405180910390fd5b61074b8261146c565b60006107578383611789565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cbc5ab18483856040518463ffffffff1660e01b81526004016107b893929190611fbd565b6020604051808303816000875af11580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190611f24565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed7a144f8483856040518463ffffffff1660e01b815260040161085b93929190611fbd565b6020604051808303816000875af115801561087a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089e9190611f24565b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90611f9d565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f7888aec83306040518363ffffffff1660e01b81526004016109fb929190611ff4565b602060405180830381865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611f24565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aca9061208f565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663662fac396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6691906120c4565b73ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd491906120c4565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663662fac396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6991906120c4565b73ffffffffffffffffffffffffffffffffffffffff1663eb17881c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd99190611f24565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610d169291906120f1565b6020604051808303816000875af1158015610d35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d599190612152565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590611e34565b60405180910390fd5b60011515600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610f8a57600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905560005b600680549050811015610f88578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610ed057610ecf61217f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610f7557600060068281548110610f2c57610f2b61217f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8080610f80906121dd565b915050610e98565b505b50565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101490611e34565b60405180910390fd5b60001515600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611238576001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000805b6006805490508110156111c557600073ffffffffffffffffffffffffffffffffffffffff166006828154811061110a5761110961217f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036111b25782600682815481106111655761116461217f565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600191505b80806111bd906121dd565b9150506110d1565b506000151581151503611236576006829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505b50565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c29061208f565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016113069190611cc9565b602060405180830381865afa158015611323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113479190611f24565b905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113e8573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156113e2573d6000803e3d6000fd5b50611468565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016114239291906120f1565b6020604051808303816000875af1158015611442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114669190612152565b505b5050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016114ed929190611ff4565b602060405180830381865afa15801561150a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152e9190611f24565b90506c0c9f2c9cd04674edea4000000081101561161a57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16701d6329f1c35ca4bfabb9f56100000000006040518363ffffffff1660e01b81526004016115d592919061226a565b6020604051808303816000875af11580156115f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116189190612152565b505b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611679929190611ff4565b602060405180830381865afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190611f24565b90506c0c9f2c9cd04674edea40000000811015611784578273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16701d6329f1c35ca4bfabb9f56100000000006040518363ffffffff1660e01b815260040161173f92919061226a565b6020604051808303816000875af115801561175e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117829190612152565b505b505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630479569f8560016040518363ffffffff1660e01b81526004016117ea9291906122ce565b600060405180830381865afa158015611807573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061183091906124aa565b6000815181106118435761184261217f565b5b602002602001015190506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635d4e94078660016040518363ffffffff1660e01b81526004016118ad9291906122ce565b600060405180830381865afa1580156118ca573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906118f391906124aa565b6000815181106119065761190561217f565b5b602002602001015190506002826000015161192191906124f3565b81600001511015611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195e90612595565b60405180910390fd5b6000826000015160028460000151846000015161198491906125b5565b61198e9190612618565b61199891906124f3565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359770438886040518263ffffffff1660e01b81526004016119f79190611cc9565b600060405180830381865afa158015611a14573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a3d91906127d2565b60600151601a611a4d91906125b5565b9050600060019050600382611a6291906124f3565b600a611a6e919061294e565b8310611a9457600282611a8191906125b5565b600a611a8d919061294e565b9050611af0565b600182611aa191906125b5565b600a611aad919061294e565b8310611ad357600482611ac091906125b5565b600a611acc919061294e565b9050611aef565b600882611ae091906125b5565b600a611aec919061294e565b90505b5b6000818660000151611b029190612618565b90506000828660000151611b169190612618565b9050600282611b2591906124f3565b811015611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90612595565b60405180910390fd5b82611b8b8a600185611b7991906124f3565b600185611b8691906125b5565b611ba4565b611b959190612999565b97505050505050505092915050565b6000818310611bb557829050611c14565b600043404286604051602001611bcd93929190612a3f565b60405160208183030381529060405280519060200120905060008160001c9050848585611bfa91906125b5565b82611c059190612a7c565b611c0f91906124f3565b925050505b9392505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c5a82611c2f565b9050919050565b611c6a81611c4f565b8114611c7557600080fd5b50565b600081359050611c8781611c61565b92915050565b600060208284031215611ca357611ca2611c25565b5b6000611cb184828501611c78565b91505092915050565b611cc381611c4f565b82525050565b6000602082019050611cde6000830184611cba565b92915050565b6000819050919050565b611cf781611ce4565b8114611d0257600080fd5b50565b600081359050611d1481611cee565b92915050565b600060208284031215611d3057611d2f611c25565b5b6000611d3e84828501611d05565b91505092915050565b60008060408385031215611d5e57611d5d611c25565b5b6000611d6c85828601611c78565b9250506020611d7d85828601611d05565b9150509250929050565b611d9081611ce4565b82525050565b6000602082019050611dab6000830184611d87565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f74207468652061646d696e60008201527f6973747261746f72000000000000000000000000000000000000000000000000602082015250565b6000611e1e602883611db1565b9150611e2982611dc2565b604082019050919050565b60006020820190508181036000830152611e4d81611e11565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f742074686520747261646560008201527f7273000000000000000000000000000000000000000000000000000000000000602082015250565b6000611eb0602283611db1565b9150611ebb82611e54565b604082019050919050565b60006020820190508181036000830152611edf81611ea3565b9050919050565b6000604082019050611efb6000830185611d87565b611f086020830184611d87565b9392505050565b600081519050611f1e81611cee565b92915050565b600060208284031215611f3a57611f39611c25565b5b6000611f4884828501611f0f565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611f87602083611db1565b9150611f9282611f51565b602082019050919050565b60006020820190508181036000830152611fb681611f7a565b9050919050565b6000606082019050611fd26000830186611cba565b611fdf6020830185611d87565b611fec6040830184611d87565b949350505050565b60006040820190506120096000830185611cba565b6120166020830184611cba565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d61726b6560008201527f746d616b65727300000000000000000000000000000000000000000000000000602082015250565b6000612079602783611db1565b91506120848261201d565b604082019050919050565b600060208201905081810360008301526120a88161206c565b9050919050565b6000815190506120be81611c61565b92915050565b6000602082840312156120da576120d9611c25565b5b60006120e8848285016120af565b91505092915050565b60006040820190506121066000830185611cba565b6121136020830184611d87565b9392505050565b60008115159050919050565b61212f8161211a565b811461213a57600080fd5b50565b60008151905061214c81612126565b92915050565b60006020828403121561216857612167611c25565b5b60006121768482850161213d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121e882611ce4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361221a576122196121ae565b5b600182019050919050565b6000819050919050565b6000819050919050565b600061225461224f61224a84612225565b61222f565b611ce4565b9050919050565b61226481612239565b82525050565b600060408201905061227f6000830185611cba565b61228c602083018461225b565b9392505050565b6000819050919050565b60006122b86122b36122ae84612293565b61222f565b611ce4565b9050919050565b6122c88161229d565b82525050565b60006040820190506122e36000830185611cba565b6122f060208301846122bf565b9392505050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612345826122fc565b810181811067ffffffffffffffff821117156123645761236361230d565b5b80604052505050565b6000612377611c1b565b9050612383828261233c565b919050565b600067ffffffffffffffff8211156123a3576123a261230d565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b6000604082840312156123d9576123d86123b9565b5b6123e3604061236d565b905060006123f384828501611f0f565b600083015250602061240784828501611f0f565b60208301525092915050565b600061242661242184612388565b61236d565b90508083825260208201905060408402830185811115612449576124486123b4565b5b835b81811015612472578061245e88826123c3565b84526020840193505060408101905061244b565b5050509392505050565b600082601f830112612491576124906122f7565b5b81516124a1848260208601612413565b91505092915050565b6000602082840312156124c0576124bf611c25565b5b600082015167ffffffffffffffff8111156124de576124dd611c2a565b5b6124ea8482850161247c565b91505092915050565b60006124fe82611ce4565b915061250983611ce4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561253e5761253d6121ae565b5b828201905092915050565b7f6661696c75726500000000000000000000000000000000000000000000000000600082015250565b600061257f600783611db1565b915061258a82612549565b602082019050919050565b600060208201905081810360008301526125ae81612572565b9050919050565b60006125c082611ce4565b91506125cb83611ce4565b9250828210156125de576125dd6121ae565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061262382611ce4565b915061262e83611ce4565b92508261263e5761263d6125e9565b5b828204905092915050565b600080fd5b600067ffffffffffffffff8211156126695761266861230d565b5b612672826122fc565b9050602081019050919050565b60005b8381101561269d578082015181840152602081019050612682565b838111156126ac576000848401525b50505050565b60006126c56126c08461264e565b61236d565b9050828152602081018484840111156126e1576126e0612649565b5b6126ec84828561267f565b509392505050565b600082601f830112612709576127086122f7565b5b81516127198482602086016126b2565b91505092915050565b600060808284031215612738576127376123b9565b5b612742608061236d565b9050600082015167ffffffffffffffff811115612762576127616123be565b5b61276e848285016126f4565b600083015250602082015167ffffffffffffffff811115612792576127916123be565b5b61279e848285016126f4565b60208301525060406127b2848285016120af565b60408301525060606127c684828501611f0f565b60608301525092915050565b6000602082840312156127e8576127e7611c25565b5b600082015167ffffffffffffffff81111561280657612805611c2a565b5b61281284828501612722565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156128725780860481111561284e5761284d6121ae565b5b600185161561285d5780820291505b808102905061286b8561281b565b9450612832565b94509492505050565b60008261288b5760019050612947565b816128995760009050612947565b81600181146128af57600281146128b9576128e8565b6001915050612947565b60ff8411156128cb576128ca6121ae565b5b8360020a9150848211156128e2576128e16121ae565b5b50612947565b5060208310610133831016604e8410600b841016171561291d5782820a905083811115612918576129176121ae565b5b612947565b61292a8484846001612828565b92509050818404811115612941576129406121ae565b5b81810290505b9392505050565b600061295982611ce4565b915061296483611ce4565b92506129917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461287b565b905092915050565b60006129a482611ce4565b91506129af83611ce4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129e8576129e76121ae565b5b828202905092915050565b6000819050919050565b6000819050919050565b612a18612a13826129f3565b6129fd565b82525050565b6000819050919050565b612a39612a3482611ce4565b612a1e565b82525050565b6000612a4b8286612a07565b602082019150612a5b8285612a28565b602082019150612a6b8284612a28565b602082019150819050949350505050565b6000612a8782611ce4565b9150612a9283611ce4565b925082612aa257612aa16125e9565b5b82820690509291505056fea2646970667358221220e3a8b46208a52c798aa45834ee8b43649674601531b2679473db0ca0553d31b864736f6c634300080d0033

Deployed ByteCode Sourcemap

6195:6133:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7245:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6387:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12079:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7521:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11780:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6223:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7010:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8931:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9461:268;;;;;;;;;;;;;:::i;:::-;;8312:471;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7634:670;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9091:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7245:122;7162:10;7152:20;;:6;;;;;;;;;;;:20;;;7144:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7345:14:::1;7329:13;;:30;;;;;;;;;;;;;;;;;;7245:122:::0;:::o;6387:73::-;;;;;;;;;;;;;:::o;12079:246::-;8860:4;8833:31;;:11;:23;8845:10;8833:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;8825:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;12153:21:::1;12161:12;::::0;::::1;;;;;;;;12153:7;:21::i;:::-;12185:13;12201:31;12210:12;::::0;::::1;;;;;;;;12224:7;12201:8;:31::i;:::-;12185:47;;12243:5;;;;;;;;;;;:12;;;12256:5;12263:7;12243:28;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12282:5;;;;;;;;;;;:13;;;12302:7;12311:5;12282:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12142:183;12079:246:::0;:::o;7521:105::-;6935:10;6925:20;;:6;;;;;;;;;;;:20;;;6917:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7611:6:::1;7589:5;;:29;;;;;;;;;;;;;;;;;;7521:105:::0;:::o;11780:291::-;8860:4;8833:31;;:11;:23;8845:10;8833:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;8825:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11875:23:::1;11883:14;11875:7;:23::i;:::-;11909:13;11925:33;11934:14;11950:7;11925:8;:33::i;:::-;11909:49;;11969:5;;;;;;;;;;;:9;;;11979:14;11995:5;12002:7;11969:41;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12021:5;;;;;;;;;;;:10;;;12032:14;12048:5;12055:7;12021:42;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11864:207;11780:291:::0;;:::o;6223:72::-;;;;;;;;;;;;:::o;7010:94::-;6935:10;6925:20;;:6;;;;;;;;;;;:20;;;6917:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7089:7:::1;7080:6;;:16;;;;;;;;;;;;;;;;;;7010:94:::0;:::o;8931:152::-;8997:7;9029:5;;;;;;;;;;;:15;;;9045:14;9069:4;9029:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9022:53;;8931:152;;;:::o;9461:268::-;7439:10;7422:27;;:13;;;;;;;;;;;:27;;;7414:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9526:21:::1;9561:5;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9550:40;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9526:66;;9603:14;9631:5;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9620:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9603:57;;9678:13;9671:30;;;9702:10;9714:6;9671:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9515:214;;9461:268::o:0;8312:471::-;7162:10;7152:20;;:6;;;;;;;;;;;:20;;;7144:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8419:4:::1;8393:30;;:11;:22;8405:9;8393:22;;;;;;;;;;;;;;;;;;;;;;;;;:30;;::::0;8389:387:::1;;8456:11;:22;8468:9;8456:22;;;;;;;;;;;;;;;;8449:29;;;;;;;;;;;8519:6;8514:236;8531:12;:19;;;;8529:1;:21;8514:236;;;8620:9;8601:28;;:12;8614:1;8601:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:28;;::::0;8597:134:::1;;8705:1;8679:12;8692:1;8679:15;;;;;;;;:::i;:::-;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;8597:134;8552:3;;;;;:::i;:::-;;;;8514:236;;;;8389:387;8312:471:::0;:::o;7634:670::-;7162:10;7152:20;;:6;;;;;;;;;;;:20;;;7144:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7738:5:::1;7712:31;;:11;:22;7724:9;7712:22;;;;;;;;;;;;;;;;;;;;;;;;;:31;;::::0;7708:589:::1;;7794:4;7769:11;:22;7781:9;7769:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;7834:10;7876:6:::0;7871:274:::1;7888:12;:19;;;;7886:1;:21;7871:274;;;7984:1;7957:29;;:12;7970:1;7957:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:29;;::::0;7953:173:::1;;8054:9;8036:12;8049:1;8036:15;;;;;;;;:::i;:::-;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;8098:4;8090:12;;7953:173;7908:3;;;;;:::i;:::-;;;;7871:274;;;;8176:5;8167:14;;:5;:14;;::::0;8163:108:::1;;8223:12;8241:9;8223:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8163:108;7815:471;7708:589;7634:670:::0;:::o;9091:362::-;7439:10;7422:27;;:13;;;;;;;;;;;:27;;;7414:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9175:15:::1;9193:4;:14;;;9208;9193:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9175:48;;9256:12;::::0;::::1;;;;;;;;9238:30;;:14;:30;;::::0;9234:212:::1;;9302:10;9294:28;;:37;9323:7;9294:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9234:212;;;9389:14;9382:31;;;9414:10;9426:7;9382:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9234:212;9164:289;9091:362:::0;:::o;9737:497::-;9803:21;9834:13;;;;;;;;;;;9827:31;;;9867:4;9882:5;;;;;;;;;;;9827:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9803:86;;9920:4;9904:13;:20;9900:113;;;9957:13;;;;;;;;;;;9950:29;;;9988:5;;;;;;;;;;;9996:4;9950:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9900:113;10023:17;10050:14;10043:32;;;10084:4;10099:5;;;;;;;;;;;10043:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10023:83;;10133:4;10121:9;:16;10117:110;;;10170:14;10163:30;;;10202:5;;;;;;;;;;;10210:4;10163:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10117:110;9792:442;;9737:497;:::o;10641:1131::-;10723:7;10748:24;10775:5;;;;;;;;;;;:26;;;10802:14;10818:1;10775:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10821:1;10775:48;;;;;;;;:::i;:::-;;;;;;;;10748:75;;10834:25;10862:5;;;;;;;;;;;:27;;;10890:14;10906:1;10862:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10909:1;10862:49;;;;;;;;:::i;:::-;;;;;;;;10834:77;;10974:1;10953:12;:18;;;:22;;;;:::i;:::-;10930:13;:19;;;:45;;10922:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10998:17;11067:12;:18;;;11063:1;11041:12;:18;;;11019:13;:19;;;:40;;;;:::i;:::-;11018:46;;;;:::i;:::-;:67;;;;:::i;:::-;10998:87;;11096:13;11117:5;;;;;;;;;;;:14;;;11132;11117:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;;;11112:2;:44;;;;:::i;:::-;11096:60;;11167:13;11183:1;11167:17;;11228:1;11220:5;:9;;;;:::i;:::-;11213:2;:17;;;;:::i;:::-;11199:9;:32;11195:289;;11280:1;11272:5;:9;;;;:::i;:::-;11265:2;:17;;;;:::i;:::-;11257:25;;11195:289;;;11342:1;11334:5;:9;;;;:::i;:::-;11327:2;:17;;;;:::i;:::-;11313:9;:32;11309:175;;11394:1;11386:5;:9;;;;:::i;:::-;11379:2;:17;;;;:::i;:::-;11371:25;;11309:175;;;11470:1;11462:5;:9;;;;:::i;:::-;11455:2;:17;;;;:::i;:::-;11447:25;;11309:175;11195:289;11494:22;11540:5;11519:12;:18;;;:26;;;;:::i;:::-;11494:51;;11556:23;11604:5;11582:13;:19;;;:27;;;;:::i;:::-;11556:53;;11664:1;11647:14;:18;;;;:::i;:::-;11628:15;:37;;11620:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11759:5;11696:60;11707:7;11733:1;11716:14;:18;;;;:::i;:::-;11754:1;11736:15;:19;;;;:::i;:::-;11696:10;:60::i;:::-;:68;;;;:::i;:::-;11689:75;;;;;;;;;10641:1131;;;;:::o;10242:391::-;10361:7;10392:3;10385;:10;10381:53;;10419:3;10412:10;;;;10381:53;10444:12;10496;10486:23;10511:15;10528:6;10469:66;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10459:77;;;;;;10444:92;;10549:14;10574:4;10566:13;;10549:30;;10622:3;10614;10608;:9;;;;:::i;:::-;10598:6;:20;;;;:::i;:::-;10597:28;;;;:::i;:::-;10590:35;;;;10242:391;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:118::-;1263:24;1281:5;1263:24;:::i;:::-;1258:3;1251:37;1176:118;;:::o;1300:222::-;1393:4;1431:2;1420:9;1416:18;1408:26;;1444:71;1512:1;1501:9;1497:17;1488:6;1444:71;:::i;:::-;1300:222;;;;:::o;1528:77::-;1565:7;1594:5;1583:16;;1528:77;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:474::-;2287:6;2295;2344:2;2332:9;2323:7;2319:23;2315:32;2312:119;;;2350:79;;:::i;:::-;2312:119;2470:1;2495:53;2540:7;2531:6;2520:9;2516:22;2495:53;:::i;:::-;2485:63;;2441:117;2597:2;2623:53;2668:7;2659:6;2648:9;2644:22;2623:53;:::i;:::-;2613:63;;2568:118;2219:474;;;;;:::o;2699:118::-;2786:24;2804:5;2786:24;:::i;:::-;2781:3;2774:37;2699:118;;:::o;2823:222::-;2916:4;2954:2;2943:9;2939:18;2931:26;;2967:71;3035:1;3024:9;3020:17;3011:6;2967:71;:::i;:::-;2823:222;;;;:::o;3051:169::-;3135:11;3169:6;3164:3;3157:19;3209:4;3204:3;3200:14;3185:29;;3051:169;;;;:::o;3226:227::-;3366:34;3362:1;3354:6;3350:14;3343:58;3435:10;3430:2;3422:6;3418:15;3411:35;3226:227;:::o;3459:366::-;3601:3;3622:67;3686:2;3681:3;3622:67;:::i;:::-;3615:74;;3698:93;3787:3;3698:93;:::i;:::-;3816:2;3811:3;3807:12;3800:19;;3459:366;;;:::o;3831:419::-;3997:4;4035:2;4024:9;4020:18;4012:26;;4084:9;4078:4;4074:20;4070:1;4059:9;4055:17;4048:47;4112:131;4238:4;4112:131;:::i;:::-;4104:139;;3831:419;;;:::o;4256:221::-;4396:34;4392:1;4384:6;4380:14;4373:58;4465:4;4460:2;4452:6;4448:15;4441:29;4256:221;:::o;4483:366::-;4625:3;4646:67;4710:2;4705:3;4646:67;:::i;:::-;4639:74;;4722:93;4811:3;4722:93;:::i;:::-;4840:2;4835:3;4831:12;4824:19;;4483:366;;;:::o;4855:419::-;5021:4;5059:2;5048:9;5044:18;5036:26;;5108:9;5102:4;5098:20;5094:1;5083:9;5079:17;5072:47;5136:131;5262:4;5136:131;:::i;:::-;5128:139;;4855:419;;;:::o;5280:332::-;5401:4;5439:2;5428:9;5424:18;5416:26;;5452:71;5520:1;5509:9;5505:17;5496:6;5452:71;:::i;:::-;5533:72;5601:2;5590:9;5586:18;5577:6;5533:72;:::i;:::-;5280:332;;;;;:::o;5618:143::-;5675:5;5706:6;5700:13;5691:22;;5722:33;5749:5;5722:33;:::i;:::-;5618:143;;;;:::o;5767:351::-;5837:6;5886:2;5874:9;5865:7;5861:23;5857:32;5854:119;;;5892:79;;:::i;:::-;5854:119;6012:1;6037:64;6093:7;6084:6;6073:9;6069:22;6037:64;:::i;:::-;6027:74;;5983:128;5767:351;;;;:::o;6124:182::-;6264:34;6260:1;6252:6;6248:14;6241:58;6124:182;:::o;6312:366::-;6454:3;6475:67;6539:2;6534:3;6475:67;:::i;:::-;6468:74;;6551:93;6640:3;6551:93;:::i;:::-;6669:2;6664:3;6660:12;6653:19;;6312:366;;;:::o;6684:419::-;6850:4;6888:2;6877:9;6873:18;6865:26;;6937:9;6931:4;6927:20;6923:1;6912:9;6908:17;6901:47;6965:131;7091:4;6965:131;:::i;:::-;6957:139;;6684:419;;;:::o;7109:442::-;7258:4;7296:2;7285:9;7281:18;7273:26;;7309:71;7377:1;7366:9;7362:17;7353:6;7309:71;:::i;:::-;7390:72;7458:2;7447:9;7443:18;7434:6;7390:72;:::i;:::-;7472;7540:2;7529:9;7525:18;7516:6;7472:72;:::i;:::-;7109:442;;;;;;:::o;7557:332::-;7678:4;7716:2;7705:9;7701:18;7693:26;;7729:71;7797:1;7786:9;7782:17;7773:6;7729:71;:::i;:::-;7810:72;7878:2;7867:9;7863:18;7854:6;7810:72;:::i;:::-;7557:332;;;;;:::o;7895:226::-;8035:34;8031:1;8023:6;8019:14;8012:58;8104:9;8099:2;8091:6;8087:15;8080:34;7895:226;:::o;8127:366::-;8269:3;8290:67;8354:2;8349:3;8290:67;:::i;:::-;8283:74;;8366:93;8455:3;8366:93;:::i;:::-;8484:2;8479:3;8475:12;8468:19;;8127:366;;;:::o;8499:419::-;8665:4;8703:2;8692:9;8688:18;8680:26;;8752:9;8746:4;8742:20;8738:1;8727:9;8723:17;8716:47;8780:131;8906:4;8780:131;:::i;:::-;8772:139;;8499:419;;;:::o;8924:143::-;8981:5;9012:6;9006:13;8997:22;;9028:33;9055:5;9028:33;:::i;:::-;8924:143;;;;:::o;9073:351::-;9143:6;9192:2;9180:9;9171:7;9167:23;9163:32;9160:119;;;9198:79;;:::i;:::-;9160:119;9318:1;9343:64;9399:7;9390:6;9379:9;9375:22;9343:64;:::i;:::-;9333:74;;9289:128;9073:351;;;;:::o;9430:332::-;9551:4;9589:2;9578:9;9574:18;9566:26;;9602:71;9670:1;9659:9;9655:17;9646:6;9602:71;:::i;:::-;9683:72;9751:2;9740:9;9736:18;9727:6;9683:72;:::i;:::-;9430:332;;;;;:::o;9768:90::-;9802:7;9845:5;9838:13;9831:21;9820:32;;9768:90;;;:::o;9864:116::-;9934:21;9949:5;9934:21;:::i;:::-;9927:5;9924:32;9914:60;;9970:1;9967;9960:12;9914:60;9864:116;:::o;9986:137::-;10040:5;10071:6;10065:13;10056:22;;10087:30;10111:5;10087:30;:::i;:::-;9986:137;;;;:::o;10129:345::-;10196:6;10245:2;10233:9;10224:7;10220:23;10216:32;10213:119;;;10251:79;;:::i;:::-;10213:119;10371:1;10396:61;10449:7;10440:6;10429:9;10425:22;10396:61;:::i;:::-;10386:71;;10342:125;10129:345;;;;:::o;10480:180::-;10528:77;10525:1;10518:88;10625:4;10622:1;10615:15;10649:4;10646:1;10639:15;10666:180;10714:77;10711:1;10704:88;10811:4;10808:1;10801:15;10835:4;10832:1;10825:15;10852:233;10891:3;10914:24;10932:5;10914:24;:::i;:::-;10905:33;;10960:66;10953:5;10950:77;10947:103;;11030:18;;:::i;:::-;10947:103;11077:1;11070:5;11066:13;11059:20;;10852:233;;;:::o;11091:125::-;11176:7;11205:5;11194:16;;11091:125;;;:::o;11222:60::-;11250:3;11271:5;11264:12;;11222:60;;;:::o;11288:238::-;11386:9;11419:101;11437:82;11446:72;11512:5;11446:72;:::i;:::-;11437:82;:::i;:::-;11419:101;:::i;:::-;11406:114;;11288:238;;;:::o;11532:227::-;11667:85;11746:5;11667:85;:::i;:::-;11662:3;11655:98;11532:227;;:::o;11765:428::-;11934:4;11972:2;11961:9;11957:18;11949:26;;11985:71;12053:1;12042:9;12038:17;12029:6;11985:71;:::i;:::-;12066:120;12182:2;12171:9;12167:18;12158:6;12066:120;:::i;:::-;11765:428;;;;;:::o;12199:85::-;12244:7;12273:5;12262:16;;12199:85;;;:::o;12290:158::-;12348:9;12381:61;12399:42;12408:32;12434:5;12408:32;:::i;:::-;12399:42;:::i;:::-;12381:61;:::i;:::-;12368:74;;12290:158;;;:::o;12454:147::-;12549:45;12588:5;12549:45;:::i;:::-;12544:3;12537:58;12454:147;;:::o;12607:348::-;12736:4;12774:2;12763:9;12759:18;12751:26;;12787:71;12855:1;12844:9;12840:17;12831:6;12787:71;:::i;:::-;12868:80;12944:2;12933:9;12929:18;12920:6;12868:80;:::i;:::-;12607:348;;;;;:::o;12961:117::-;13070:1;13067;13060:12;13084:102;13125:6;13176:2;13172:7;13167:2;13160:5;13156:14;13152:28;13142:38;;13084:102;;;:::o;13192:180::-;13240:77;13237:1;13230:88;13337:4;13334:1;13327:15;13361:4;13358:1;13351:15;13378:281;13461:27;13483:4;13461:27;:::i;:::-;13453:6;13449:40;13591:6;13579:10;13576:22;13555:18;13543:10;13540:34;13537:62;13534:88;;;13602:18;;:::i;:::-;13534:88;13642:10;13638:2;13631:22;13421:238;13378:281;;:::o;13665:129::-;13699:6;13726:20;;:::i;:::-;13716:30;;13755:33;13783:4;13775:6;13755:33;:::i;:::-;13665:129;;;:::o;13800:331::-;13897:4;13987:18;13979:6;13976:30;13973:56;;;14009:18;;:::i;:::-;13973:56;14059:4;14051:6;14047:17;14039:25;;14119:4;14113;14109:15;14101:23;;13800:331;;;:::o;14137:117::-;14246:1;14243;14236:12;14260:117;14369:1;14366;14359:12;14383:117;14492:1;14489;14482:12;14525:605;14605:5;14649:4;14637:9;14632:3;14628:19;14624:30;14621:117;;;14657:79;;:::i;:::-;14621:117;14756:21;14772:4;14756:21;:::i;:::-;14747:30;;14837:1;14877:60;14933:3;14924:6;14913:9;14909:22;14877:60;:::i;:::-;14870:4;14863:5;14859:16;14852:86;14787:162;15010:2;15051:60;15107:3;15098:6;15087:9;15083:22;15051:60;:::i;:::-;15044:4;15037:5;15033:16;15026:86;14959:164;14525:605;;;;:::o;15157:792::-;15284:5;15309:101;15325:84;15402:6;15325:84;:::i;:::-;15309:101;:::i;:::-;15300:110;;15430:5;15459:6;15452:5;15445:21;15493:4;15486:5;15482:16;15475:23;;15546:4;15538:6;15534:17;15526:6;15522:30;15575:3;15567:6;15564:15;15561:122;;;15594:79;;:::i;:::-;15561:122;15709:6;15692:251;15726:6;15721:3;15718:15;15692:251;;;15801:3;15830:68;15894:3;15882:10;15830:68;:::i;:::-;15825:3;15818:81;15928:4;15923:3;15919:14;15912:21;;15768:175;15752:4;15747:3;15743:14;15736:21;;15692:251;;;15696:21;15290:659;;15157:792;;;;;:::o;15976:425::-;16078:5;16127:3;16120:4;16112:6;16108:17;16104:27;16094:122;;16135:79;;:::i;:::-;16094:122;16245:6;16239:13;16270:125;16391:3;16383:6;16376:4;16368:6;16364:17;16270:125;:::i;:::-;16261:134;;16084:317;15976:425;;;;:::o;16407:594::-;16522:6;16571:2;16559:9;16550:7;16546:23;16542:32;16539:119;;;16577:79;;:::i;:::-;16539:119;16718:1;16707:9;16703:17;16697:24;16748:18;16740:6;16737:30;16734:117;;;16770:79;;:::i;:::-;16734:117;16875:109;16976:7;16967:6;16956:9;16952:22;16875:109;:::i;:::-;16865:119;;16668:326;16407:594;;;;:::o;17007:305::-;17047:3;17066:20;17084:1;17066:20;:::i;:::-;17061:25;;17100:20;17118:1;17100:20;:::i;:::-;17095:25;;17254:1;17186:66;17182:74;17179:1;17176:81;17173:107;;;17260:18;;:::i;:::-;17173:107;17304:1;17301;17297:9;17290:16;;17007:305;;;;:::o;17318:157::-;17458:9;17454:1;17446:6;17442:14;17435:33;17318:157;:::o;17481:365::-;17623:3;17644:66;17708:1;17703:3;17644:66;:::i;:::-;17637:73;;17719:93;17808:3;17719:93;:::i;:::-;17837:2;17832:3;17828:12;17821:19;;17481:365;;;:::o;17852:419::-;18018:4;18056:2;18045:9;18041:18;18033:26;;18105:9;18099:4;18095:20;18091:1;18080:9;18076:17;18069:47;18133:131;18259:4;18133:131;:::i;:::-;18125:139;;17852:419;;;:::o;18277:191::-;18317:4;18337:20;18355:1;18337:20;:::i;:::-;18332:25;;18371:20;18389:1;18371:20;:::i;:::-;18366:25;;18410:1;18407;18404:8;18401:34;;;18415:18;;:::i;:::-;18401:34;18460:1;18457;18453:9;18445:17;;18277:191;;;;:::o;18474:180::-;18522:77;18519:1;18512:88;18619:4;18616:1;18609:15;18643:4;18640:1;18633:15;18660:185;18700:1;18717:20;18735:1;18717:20;:::i;:::-;18712:25;;18751:20;18769:1;18751:20;:::i;:::-;18746:25;;18790:1;18780:35;;18795:18;;:::i;:::-;18780:35;18837:1;18834;18830:9;18825:14;;18660:185;;;;:::o;18851:117::-;18960:1;18957;18950:12;18974:308;19036:4;19126:18;19118:6;19115:30;19112:56;;;19148:18;;:::i;:::-;19112:56;19186:29;19208:6;19186:29;:::i;:::-;19178:37;;19270:4;19264;19260:15;19252:23;;18974:308;;;:::o;19288:307::-;19356:1;19366:113;19380:6;19377:1;19374:13;19366:113;;;19465:1;19460:3;19456:11;19450:18;19446:1;19441:3;19437:11;19430:39;19402:2;19399:1;19395:10;19390:15;;19366:113;;;19497:6;19494:1;19491:13;19488:101;;;19577:1;19568:6;19563:3;19559:16;19552:27;19488:101;19337:258;19288:307;;;:::o;19601:421::-;19690:5;19715:66;19731:49;19773:6;19731:49;:::i;:::-;19715:66;:::i;:::-;19706:75;;19804:6;19797:5;19790:21;19842:4;19835:5;19831:16;19880:3;19871:6;19866:3;19862:16;19859:25;19856:112;;;19887:79;;:::i;:::-;19856:112;19977:39;20009:6;20004:3;19999;19977:39;:::i;:::-;19696:326;19601:421;;;;;:::o;20042:355::-;20109:5;20158:3;20151:4;20143:6;20139:17;20135:27;20125:122;;20166:79;;:::i;:::-;20125:122;20276:6;20270:13;20301:90;20387:3;20379:6;20372:4;20364:6;20360:17;20301:90;:::i;:::-;20292:99;;20115:282;20042:355;;;;:::o;20423:1288::-;20504:5;20548:4;20536:9;20531:3;20527:19;20523:30;20520:117;;;20556:79;;:::i;:::-;20520:117;20655:21;20671:4;20655:21;:::i;:::-;20646:30;;20758:1;20747:9;20743:17;20737:24;20788:18;20780:6;20777:30;20774:117;;;20810:79;;:::i;:::-;20774:117;20930:70;20996:3;20987:6;20976:9;20972:22;20930:70;:::i;:::-;20923:4;20916:5;20912:16;20905:96;20686:326;21092:2;21081:9;21077:18;21071:25;21123:18;21115:6;21112:30;21109:117;;;21145:79;;:::i;:::-;21109:117;21265:70;21331:3;21322:6;21311:9;21307:22;21265:70;:::i;:::-;21258:4;21251:5;21247:16;21240:96;21022:325;21415:2;21456:60;21512:3;21503:6;21492:9;21488:22;21456:60;:::i;:::-;21449:4;21442:5;21438:16;21431:86;21357:171;21591:2;21632:60;21688:3;21679:6;21668:9;21664:22;21632:60;:::i;:::-;21625:4;21618:5;21614:16;21607:86;21538:166;20423:1288;;;;:::o;21717:546::-;21808:6;21857:2;21845:9;21836:7;21832:23;21828:32;21825:119;;;21863:79;;:::i;:::-;21825:119;22004:1;21993:9;21989:17;21983:24;22034:18;22026:6;22023:30;22020:117;;;22056:79;;:::i;:::-;22020:117;22161:85;22238:7;22229:6;22218:9;22214:22;22161:85;:::i;:::-;22151:95;;21954:302;21717:546;;;;:::o;22269:102::-;22311:8;22358:5;22355:1;22351:13;22330:34;;22269:102;;;:::o;22377:848::-;22438:5;22445:4;22469:6;22460:15;;22493:5;22484:14;;22507:712;22528:1;22518:8;22515:15;22507:712;;;22623:4;22618:3;22614:14;22608:4;22605:24;22602:50;;;22632:18;;:::i;:::-;22602:50;22682:1;22672:8;22668:16;22665:451;;;23097:4;23090:5;23086:16;23077:25;;22665:451;23147:4;23141;23137:15;23129:23;;23177:32;23200:8;23177:32;:::i;:::-;23165:44;;22507:712;;;22377:848;;;;;;;:::o;23231:1073::-;23285:5;23476:8;23466:40;;23497:1;23488:10;;23499:5;;23466:40;23525:4;23515:36;;23542:1;23533:10;;23544:5;;23515:36;23611:4;23659:1;23654:27;;;;23695:1;23690:191;;;;23604:277;;23654:27;23672:1;23663:10;;23674:5;;;23690:191;23735:3;23725:8;23722:17;23719:43;;;23742:18;;:::i;:::-;23719:43;23791:8;23788:1;23784:16;23775:25;;23826:3;23819:5;23816:14;23813:40;;;23833:18;;:::i;:::-;23813:40;23866:5;;;23604:277;;23990:2;23980:8;23977:16;23971:3;23965:4;23962:13;23958:36;23940:2;23930:8;23927:16;23922:2;23916:4;23913:12;23909:35;23893:111;23890:246;;;24046:8;24040:4;24036:19;24027:28;;24081:3;24074:5;24071:14;24068:40;;;24088:18;;:::i;:::-;24068:40;24121:5;;23890:246;24161:42;24199:3;24189:8;24183:4;24180:1;24161:42;:::i;:::-;24146:57;;;;24235:4;24230:3;24226:14;24219:5;24216:25;24213:51;;;24244:18;;:::i;:::-;24213:51;24293:4;24286:5;24282:16;24273:25;;23231:1073;;;;;;:::o;24310:285::-;24370:5;24394:23;24412:4;24394:23;:::i;:::-;24386:31;;24438:27;24456:8;24438:27;:::i;:::-;24426:39;;24484:104;24521:66;24511:8;24505:4;24484:104;:::i;:::-;24475:113;;24310:285;;;;:::o;24601:348::-;24641:7;24664:20;24682:1;24664:20;:::i;:::-;24659:25;;24698:20;24716:1;24698:20;:::i;:::-;24693:25;;24886:1;24818:66;24814:74;24811:1;24808:81;24803:1;24796:9;24789:17;24785:105;24782:131;;;24893:18;;:::i;:::-;24782:131;24941:1;24938;24934:9;24923:20;;24601:348;;;;:::o;24955:77::-;24992:7;25021:5;25010:16;;24955:77;;;:::o;25038:79::-;25077:7;25106:5;25095:16;;25038:79;;;:::o;25123:157::-;25228:45;25248:24;25266:5;25248:24;:::i;:::-;25228:45;:::i;:::-;25223:3;25216:58;25123:157;;:::o;25286:79::-;25325:7;25354:5;25343:16;;25286:79;;;:::o;25371:157::-;25476:45;25496:24;25514:5;25496:24;:::i;:::-;25476:45;:::i;:::-;25471:3;25464:58;25371:157;;:::o;25534:538::-;25702:3;25717:75;25788:3;25779:6;25717:75;:::i;:::-;25817:2;25812:3;25808:12;25801:19;;25830:75;25901:3;25892:6;25830:75;:::i;:::-;25930:2;25925:3;25921:12;25914:19;;25943:75;26014:3;26005:6;25943:75;:::i;:::-;26043:2;26038:3;26034:12;26027:19;;26063:3;26056:10;;25534:538;;;;;;:::o;26078:176::-;26110:1;26127:20;26145:1;26127:20;:::i;:::-;26122:25;;26161:20;26179:1;26161:20;:::i;:::-;26156:25;;26200:1;26190:35;;26205:18;;:::i;:::-;26190:35;26246:1;26243;26239:9;26234:14;;26078:176;;;;:::o

Swarm Source

ipfs://e3a8b46208a52c798aa45834ee8b43649674601531b2679473db0ca0553d31b8
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading