Contract 0xdba6cbc6fa188e82656ec597b5e959f7981dbfa4

Contract Overview

Balance:
0 Ether
Txn Hash
Block
From
To
Value
0x18f6caedd656c8e7294588f0e162e3c4abeda8c6668e168cde8eab227177e53e90982282020-11-18 23:44:28100 days 7 hrs ago0xad3e6614754f143a6e602e81086f1db7afc81569 IN  0xdba6cbc6fa188e82656ec597b5e959f7981dbfa40 Ether0.0000682904662.503499771
0x383b1c53834c9ce5fa6d67d8a6432d114ff3905d299987a728a7c2bd3d4c126990980202020-11-18 23:06:35100 days 8 hrs ago0xad3e6614754f143a6e602e81086f1db7afc81569 IN  0xdba6cbc6fa188e82656ec597b5e959f7981dbfa40 Ether0.0001346957942.503499696
0x364cc4729b5dbd7aec56a251138e3882a4879a99df9b275c5e34eba4bc09916190977922020-11-18 22:12:30100 days 8 hrs ago0xad3e6614754f143a6e602e81086f1db7afc81569 IN  0xdba6cbc6fa188e82656ec597b5e959f7981dbfa40 Ether0.0002098007272.503499014
0x0018eed71b081e51bdf9f32eb30f633c04955580d2605b3a4ca6c977407164b990977432020-11-18 22:02:47100 days 9 hrs ago0xad3e6614754f143a6e602e81086f1db7afc81569 IN  0xdba6cbc6fa188e82656ec597b5e959f7981dbfa40 Ether0.0002273026892.503499013
0xe144855c87954ee69af9b4c8f034cd4abff27f06562cefa97a377ebdbe714e3e90970902020-11-18 19:31:11100 days 11 hrs ago0xad3e6614754f143a6e602e81086f1db7afc81569 IN  0xdba6cbc6fa188e82656ec597b5e959f7981dbfa40 Ether0.00007872.5
0xaa061fd6147f4a58c10acff355ef807fcf4837bbbccd3b9389d8f18f608a8be890960442020-11-18 15:19:03100 days 15 hrs ago0xad3e6614754f143a6e602e81086f1db7afc81569 IN  0xdba6cbc6fa188e82656ec597b5e959f7981dbfa40 Ether0.0001164108512.506747599
0xf47d3bcb61f5974a471720c462f4f6925ed6d424650af1991f691c09bf8e5e0590952552020-11-18 12:11:49100 days 18 hrs ago0xad3e6614754f143a6e602e81086f1db7afc81569 IN  0xdba6cbc6fa188e82656ec597b5e959f7981dbfa40 Ether0.0000789187082.50710683
0x5f7323b8901fa19bef54c362f9132866455b6c166eceb965ca64822bf4eed62990952002020-11-18 12:01:22100 days 19 hrs ago0xad3e6614754f143a6e602e81086f1db7afc81569 IN  Contract Creation0 Ether0.0099674374032.507125867
[ Download CSV Export 
Latest 7 internal transactions
Parent Txn Hash Block From To Value
0x18f6caedd656c8e7294588f0e162e3c4abeda8c6668e168cde8eab227177e53e90982282020-11-18 23:44:28100 days 7 hrs ago 0xdba6cbc6fa188e82656ec597b5e959f7981dbfa4 0xdacd7d4654bae5937cde48e526eec911c7502f680 Ether
0x383b1c53834c9ce5fa6d67d8a6432d114ff3905d299987a728a7c2bd3d4c126990980202020-11-18 23:06:35100 days 8 hrs ago 0xdba6cbc6fa188e82656ec597b5e959f7981dbfa4 0xdacd7d4654bae5937cde48e526eec911c7502f680 Ether
0x364cc4729b5dbd7aec56a251138e3882a4879a99df9b275c5e34eba4bc09916190977922020-11-18 22:12:30100 days 8 hrs ago 0xdba6cbc6fa188e82656ec597b5e959f7981dbfa4 0xdacd7d4654bae5937cde48e526eec911c7502f680 Ether
0x0018eed71b081e51bdf9f32eb30f633c04955580d2605b3a4ca6c977407164b990977432020-11-18 22:02:47100 days 9 hrs ago 0xdba6cbc6fa188e82656ec597b5e959f7981dbfa4 0xdacd7d4654bae5937cde48e526eec911c7502f680 Ether
0xe144855c87954ee69af9b4c8f034cd4abff27f06562cefa97a377ebdbe714e3e90970902020-11-18 19:31:11100 days 11 hrs ago 0xdba6cbc6fa188e82656ec597b5e959f7981dbfa4 0xdacd7d4654bae5937cde48e526eec911c7502f680 Ether
0xaa061fd6147f4a58c10acff355ef807fcf4837bbbccd3b9389d8f18f608a8be890960442020-11-18 15:19:03100 days 15 hrs ago 0xdba6cbc6fa188e82656ec597b5e959f7981dbfa4 0xdacd7d4654bae5937cde48e526eec911c7502f680 Ether
0xf47d3bcb61f5974a471720c462f4f6925ed6d424650af1991f691c09bf8e5e0590952552020-11-18 12:11:49100 days 18 hrs ago 0xdba6cbc6fa188e82656ec597b5e959f7981dbfa4 0xdacd7d4654bae5937cde48e526eec911c7502f680 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Governance

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-18
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * 
 /$$                           /$$        /$$$$$$                  /$$   /$$             /$$                                       /$$      
| $$                          | $$       /$$__  $$                | $$$ | $$            | $$                                      | $$      
| $$        /$$$$$$   /$$$$$$$| $$   /$$|__/  \ $$  /$$$$$$       | $$$$| $$  /$$$$$$  /$$$$$$   /$$  /$$  /$$  /$$$$$$   /$$$$$$ | $$   /$$
| $$       /$$__  $$ /$$_____/| $$  /$$/   /$$$$$/ /$$__  $$      | $$ $$ $$ /$$__  $$|_  $$_/  | $$ | $$ | $$ /$$__  $$ /$$__  $$| $$  /$$/
| $$      | $$  \ $$| $$      | $$$$$$/   |___  $$| $$  \__/      | $$  $$$$| $$$$$$$$  | $$    | $$ | $$ | $$| $$  \ $$| $$  \__/| $$$$$$/ 
| $$      | $$  | $$| $$      | $$_  $$  /$$  \ $$| $$            | $$\  $$$| $$_____/  | $$ /$$| $$ | $$ | $$| $$  | $$| $$      | $$_  $$ 
| $$$$$$$$|  $$$$$$/|  $$$$$$$| $$ \  $$|  $$$$$$/| $$            | $$ \  $$|  $$$$$$$  |  $$$$/|  $$$$$/$$$$/|  $$$$$$/| $$      | $$ \  $$
|________/ \______/  \_______/|__/  \__/ \______/ |__/            |__/  \__/ \_______/   \___/   \_____/\___/  \______/ |__/      |__/  \__/

  /$$$$$$                                                                                           
 /$$__  $$                                                                                          
| $$  \__/  /$$$$$$  /$$    /$$ /$$$$$$   /$$$$$$  /$$$$$$$   /$$$$$$  /$$$$$$$   /$$$$$$$  /$$$$$$ 
| $$ /$$$$ /$$__  $$|  $$  /$$//$$__  $$ /$$__  $$| $$__  $$ |____  $$| $$__  $$ /$$_____/ /$$__  $$
| $$|_  $$| $$  \ $$ \  $$/$$/| $$$$$$$$| $$  \__/| $$  \ $$  /$$$$$$$| $$  \ $$| $$      | $$$$$$$$
| $$  \ $$| $$  | $$  \  $$$/ | $$_____/| $$      | $$  | $$ /$$__  $$| $$  | $$| $$      | $$_____/
|  $$$$$$/|  $$$$$$/   \  $/  |  $$$$$$$| $$      | $$  | $$|  $$$$$$$| $$  | $$|  $$$$$$$|  $$$$$$$
 \______/  \______/     \_/    \_______/|__/      |__/  |__/ \_______/|__/  |__/ \_______/ \_______/
 * 
*/

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction underflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    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;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) 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, errorMessage);

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface ILock3r {
    function addVotes(address voter, uint amount) external;
    function isLocker(address) external returns (bool);
    function worked(address locker) external;
    function removeVotes(address voter, uint amount) external;
    function addLK3RCredit(address job, uint amount) external;
    function approveLiquidity(address liquidity) external;
    function revokeLiquidity(address liquidity) external;
    function addJob(address job) external;
    function removeJob(address job) external;
    function setLock3rHelper(address _lk3rh) external;
    function setGovernance(address _governance) external;
    function acceptGovernance() external;
    function getPriorVotes(address account, uint blockNumber) external view returns (uint);
    function totalBonded() external view returns (uint);
    function setTreasury(address _treasury) external;
    function setLiquidityFee(uint newFee) external;
    function setBondingDelay (uint256 newBond) external;
    function setUnbondingDelay (uint256 newUnbond) external;
    function setLiquidityBondingDelay (uint256 newLiqBond) external;
   
}

contract Governance {
    using SafeMath for uint;
    /// @notice The name of this contract
    string public constant name = "Lock3rHolyGovernance";

    /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed
    uint public _quorumVotes = 7500; // % of total supply required

    /// @notice The number of votes required in order for a voter to become a proposer
    uint public _proposalThreshold = 7500;

    uint public constant BASE = 10000;

    function setQuorum(uint quorum_) external {
        require(msg.sender == address(this), "Governance::setQuorum: timelock only");
        require(quorum_ <= BASE, "Governance::setQuorum: quorum_ > BASE");
        _quorumVotes = quorum_;
    }

    function quorumVotes() public view returns (uint) {
        return LK3R.totalBonded().mul(_quorumVotes).div(BASE);
    }

    function proposalThreshold() public view returns (uint) {
        return LK3R.totalBonded().mul(_proposalThreshold).div(BASE);
    }

    function setThreshold(uint threshold_) external {
        require(msg.sender == address(this), "Governance::setQuorum: timelock only");
        require(threshold_ <= BASE, "Governance::setThreshold: threshold_ > BASE");
        _proposalThreshold = threshold_;
    }

    /// @notice The maximum number of actions that can be included in a proposal
    function proposalMaxOperations() public pure returns (uint) { return 10; } // 10 actions

    /// @notice The delay before voting on a proposal may take place, once proposed
    function votingDelay() public pure returns (uint) { return 1; } // 1 block

    /// @notice The duration of voting on a proposal, in blocks
    function votingPeriod() public pure returns (uint) { return 40_320; } // ~7 days in blocks (assuming 15s blocks)

    /// @notice The address of the governance token
    ILock3r immutable public LK3R;

    /// @notice The total number of proposals
    uint public proposalCount;

    struct Proposal {
        uint id;
        address proposer;
        uint eta;
        address[] targets;
        uint[] values;
        string[] signatures;
        bytes[] calldatas;
        uint startBlock;
        uint endBlock;
        uint forVotes;
        uint againstVotes;
        bool canceled;
        bool executed;
        mapping (address => Receipt) receipts;
    }

    /// @notice Ballot receipt record for a voter
    struct Receipt {
        bool hasVoted;
        bool support;
        uint votes;
    }

    /// @notice Possible states that a proposal may be in
    enum ProposalState {
        Pending,
        Active,
        Canceled,
        Defeated,
        Succeeded,
        Queued,
        Expired,
        Executed
    }

    /// @notice The official record of all proposals ever proposed
    mapping (uint => Proposal) public proposals;

    /// @notice The latest proposal for each proposer
    mapping (address => uint) public latestProposalIds;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");
    
    
    bytes32 public immutable DOMAINSEPARATOR;

    /// @notice The EIP-712 typehash for the ballot struct used by the contract
    bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,bool support)");

    /// @notice An event emitted when a new proposal is created
    event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, uint startBlock, uint endBlock, string description);

    /// @notice An event emitted when a vote has been cast on a proposal
    event VoteCast(address voter, uint proposalId, bool support, uint votes);

    /// @notice An event emitted when a proposal has been canceled
    event ProposalCanceled(uint id);

    /// @notice An event emitted when a proposal has been queued in the Timelock
    event ProposalQueued(uint id, uint eta);

    /// @notice An event emitted when a proposal has been executed in the Timelock
    event ProposalExecuted(uint id);
    
    
   

    function proposeJob(address job) public {
        require(msg.sender == address(LK3R), "Governance::proposeJob: only VOTER can propose new jobs");
        address[] memory targets;
        targets[0] = address(LK3R);

        string[] memory signatures;
        signatures[0] = "addJob(address)";

        bytes[] memory calldatas;
        calldatas[0] = abi.encode(job);

        uint[] memory values;
        values[0] = 0;

        _propose(targets, values, signatures, calldatas, string(abi.encodePacked("Governance::proposeJob(): ", job)));
    }

    function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) public returns (uint) {
        require(LK3R.getPriorVotes(msg.sender, block.number.sub(1)) >= proposalThreshold(), "Governance::propose: proposer votes below proposal threshold");
        require(targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, "Governance::propose: proposal function information arity mismatch");
        require(targets.length != 0, "Governance::propose: must provide actions");
        require(targets.length <= proposalMaxOperations(), "Governance::propose: too many actions");

        uint latestProposalId = latestProposalIds[msg.sender];
        if (latestProposalId != 0) {
          ProposalState proposersLatestProposalState = state(latestProposalId);
          require(proposersLatestProposalState != ProposalState.Active, "Governance::propose: one live proposal per proposer, found an already active proposal");
          require(proposersLatestProposalState != ProposalState.Pending, "Governance::propose: one live proposal per proposer, found an already pending proposal");
        }

        return _propose(targets, values, signatures, calldatas, description);
    }

    function _propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) internal returns (uint) {
        uint startBlock = block.number.add(votingDelay());
        uint endBlock = startBlock.add(votingPeriod());

        proposalCount++;
        Proposal memory newProposal = Proposal({
            id: proposalCount,
            proposer: msg.sender,
            eta: 0,
            targets: targets,
            values: values,
            signatures: signatures,
            calldatas: calldatas,
            startBlock: startBlock,
            endBlock: endBlock,
            forVotes: 0,
            againstVotes: 0,
            canceled: false,
            executed: false
        });

        proposals[newProposal.id] = newProposal;
        latestProposalIds[newProposal.proposer] = newProposal.id;

        emit ProposalCreated(newProposal.id, msg.sender, targets, values, signatures, calldatas, startBlock, endBlock, description);
        return newProposal.id;
    }

    function queue(uint proposalId) public {
        require(state(proposalId) == ProposalState.Succeeded, "Governance::queue: proposal can only be queued if it is succeeded");
        Proposal storage proposal = proposals[proposalId];
        uint eta = block.timestamp.add(delay);
        for (uint i = 0; i < proposal.targets.length; i++) {
            _queueOrRevert(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], eta);
        }
        proposal.eta = eta;
        emit ProposalQueued(proposalId, eta);
    }

    function _queueOrRevert(address target, uint value, string memory signature, bytes memory data, uint eta) internal {
        require(!queuedTransactions[keccak256(abi.encode(target, value, signature, data, eta))], "Governance::_queueOrRevert: proposal action already queued at eta");
        _queueTransaction(target, value, signature, data, eta);
    }

    function execute(uint proposalId) public payable {
        require(guardian == address(0x0) || msg.sender == guardian, "Governance:execute: !guardian");
        require(state(proposalId) == ProposalState.Queued, "Governance::execute: proposal can only be executed if it is queued");
        Proposal storage proposal = proposals[proposalId];
        proposal.executed = true;
        for (uint i = 0; i < proposal.targets.length; i++) {
            _executeTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
        }
        emit ProposalExecuted(proposalId);
    }

    function cancel(uint proposalId) public {
        ProposalState state = state(proposalId);
        require(state != ProposalState.Executed, "Governance::cancel: cannot cancel executed proposal");

        Proposal storage proposal = proposals[proposalId];
        require(proposal.proposer != address(LK3R) && 
                LK3R.getPriorVotes(proposal.proposer, block.number.sub(1)) < proposalThreshold(), "Governance::cancel: proposer above threshold");

        proposal.canceled = true;
        for (uint i = 0; i < proposal.targets.length; i++) {
            _cancelTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
        }

        emit ProposalCanceled(proposalId);
    }

    function getActions(uint proposalId) public view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) {
        Proposal storage p = proposals[proposalId];
        return (p.targets, p.values, p.signatures, p.calldatas);
    }

    function getReceipt(uint proposalId, address voter) public view returns (Receipt memory) {
        return proposals[proposalId].receipts[voter];
    }

    function state(uint proposalId) public view returns (ProposalState) {
        require(proposalCount >= proposalId && proposalId > 0, "Governance::state: invalid proposal id");
        Proposal storage proposal = proposals[proposalId];
        if (proposal.canceled) {
            return ProposalState.Canceled;
        } else if (block.number <= proposal.startBlock) {
            return ProposalState.Pending;
        } else if (block.number <= proposal.endBlock) {
            return ProposalState.Active;
        } else if (proposal.forVotes.add(proposal.againstVotes) < quorumVotes()) {
            return ProposalState.Defeated;
        } else if (proposal.forVotes <= proposal.againstVotes) {
            return ProposalState.Defeated;
        } else if (proposal.eta == 0) {
            return ProposalState.Succeeded;
        } else if (proposal.executed) {
            return ProposalState.Executed;
        } else if (block.timestamp >= proposal.eta.add(GRACE_PERIOD)) {
            return ProposalState.Expired;
        } else {
            return ProposalState.Queued;
        }
    }

    function castVote(uint proposalId, bool support) public {
        _castVote(msg.sender, proposalId, support);
    }

    function castVoteBySig(uint proposalId, bool support, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", DOMAINSEPARATOR, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Governance::castVoteBySig: invalid signature");
        _castVote(signatory, proposalId, support);
    }

    function _castVote(address voter, uint proposalId, bool support) internal {
        require(state(proposalId) == ProposalState.Active, "Governance::_castVote: voting is closed");
        Proposal storage proposal = proposals[proposalId];
        Receipt storage receipt = proposal.receipts[voter];
        require(receipt.hasVoted == false, "Governance::_castVote: voter already voted");
        uint votes = LK3R.getPriorVotes(voter, proposal.startBlock);

        if (support) {
            proposal.forVotes = proposal.forVotes.add(votes);
        } else {
            proposal.againstVotes = proposal.againstVotes.add(votes);
        }

        receipt.hasVoted = true;
        receipt.support = support;
        receipt.votes = votes;

        emit VoteCast(voter, proposalId, support, votes);
    }

    function getChainId() internal pure returns (uint) {
        uint chainId;
        assembly { chainId := chainid() }
        return chainId;
    }

    event NewDelay(uint indexed newDelay);
    event CancelTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature,  bytes data, uint eta);
    event ExecuteTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature,  bytes data, uint eta);
    event QueueTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature, bytes data, uint eta);

    uint public constant GRACE_PERIOD = 14 days;
    uint public constant MINIMUM_DELAY = 1 days;
    uint public constant MAXIMUM_DELAY = 30 days;

    uint public delay = MINIMUM_DELAY;
    
    address public guardian;
    address public pendingGuardian;
    
    		
    modifier onlyGuardian(){
        require(msg.sender == guardian , "Error: caller is not the guardian address");
        _;
    }
    
    function setGuardian(address _guardian) external onlyGuardian{
        pendingGuardian = _guardian;
    }
    
    function acceptGuardianship() external {
        require(msg.sender == pendingGuardian, "Lock3rGovernance::setGuardian: !pendingGuardian");
        guardian = pendingGuardian;
    }
    
    function addVotes(address voter, uint amount) external onlyGuardian{
        LK3R.addVotes(voter, amount);
    }
    function removeVotes(address voter, uint amount) external onlyGuardian{
        LK3R.removeVotes(voter, amount);
    }
    function addLK3RCredit(address job, uint amount) external onlyGuardian{
        LK3R.addLK3RCredit(job, amount);
    }
    function approveLiquidity(address liquidity) external onlyGuardian{
        LK3R.approveLiquidity(liquidity);
    }
    function revokeLiquidity(address liquidity) external onlyGuardian{
        LK3R.revokeLiquidity(liquidity);
    }
    function addJob(address job) external onlyGuardian{
        LK3R.addJob(job);
    }
    function removeJob(address job) external onlyGuardian{
        LK3R.removeJob(job);
    }
    function setLock3rHelper(address lk3rh) external onlyGuardian{
        LK3R.setLock3rHelper(lk3rh);
    }
    function setGovernance(address _governance) external onlyGuardian{
        LK3R.setGovernance(_governance);
    }
    function acceptGovernance() external onlyGuardian{
        LK3R.acceptGovernance();
    }
    function setTreasury(address _treasury) external onlyGuardian{
        LK3R.setTreasury(_treasury);
    }
    
    function setLiquidityFee(uint newFee) external onlyGuardian {
        LK3R.setLiquidityFee(newFee);
    }
    function setBondingDelay(uint256 newDelay) external onlyGuardian {
        LK3R.setBondingDelay(newDelay);
    }
    function setUnbondingDelay(uint256 newDelay) external onlyGuardian {
        LK3R.setUnbondingDelay(newDelay);
    }
    function setLiquidityBondingDelay(uint256 newDelay) external onlyGuardian {
        LK3R.setLiquidityBondingDelay(newDelay);
    }
    

    mapping (bytes32 => bool) public queuedTransactions;

    constructor(address token_) public {
        guardian = msg.sender;
        LK3R = ILock3r(token_);
        DOMAINSEPARATOR = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
    }

    receive() external payable { }

    function setDelay(uint delay_) public {
        require(msg.sender == address(this), "Timelock::setDelay: Call must come from Timelock.");
        require(delay_ >= MINIMUM_DELAY, "Timelock::setDelay: Delay must exceed minimum delay.");
        require(delay_ <= MAXIMUM_DELAY, "Timelock::setDelay: Delay must not exceed maximum delay.");
        delay = delay_;

        emit NewDelay(delay);
    }

    function _queueTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) internal returns (bytes32) {
        require(eta >= getBlockTimestamp().add(delay), "Timelock::queueTransaction: Estimated execution block must satisfy delay.");
        bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
        queuedTransactions[txHash] = true;

        emit QueueTransaction(txHash, target, value, signature, data, eta);
        return txHash;
    }

    function _cancelTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) internal {
        bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
        queuedTransactions[txHash] = false;

        emit CancelTransaction(txHash, target, value, signature, data, eta);
    }

    function _executeTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) internal returns (bytes memory) {
        bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
        require(queuedTransactions[txHash], "Timelock::executeTransaction: Transaction hasn't been queued.");
        require(getBlockTimestamp() >= eta, "Timelock::executeTransaction: Transaction hasn't surpassed time lock.");
        require(getBlockTimestamp() <= eta.add(GRACE_PERIOD), "Timelock::executeTransaction: Transaction is stale.");

        queuedTransactions[txHash] = false;

        bytes memory callData;

        if (bytes(signature).length == 0) {
            callData = data;
        } else {
            callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data);
        }

        // solium-disable-next-line security/no-call-value
        (bool success, bytes memory returnData) = target.call{value:value}(callData);
        require(success, "Timelock::executeTransaction: Transaction execution reverted.");

        emit ExecuteTransaction(txHash, target, value, signature, data, eta);

        return returnData;
    }

    function getBlockTimestamp() internal view returns (uint) {
        // solium-disable-next-line security/no-block-members
        return block.timestamp;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"VoteCast","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAINSEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LK3R","outputs":[{"internalType":"contract ILock3r","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptGuardianship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"}],"name":"addJob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addLK3RCredit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addVotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidity","type":"address"}],"name":"approveLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint256","name":"votes","type":"uint256"}],"internalType":"struct Governance.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalMaxOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"}],"name":"proposeJob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"job","type":"address"}],"name":"removeJob","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeVotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidity","type":"address"}],"name":"revokeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"setBondingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay_","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_guardian","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"setLiquidityBondingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lk3rh","type":"address"}],"name":"setLock3rHelper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quorum_","type":"uint256"}],"name":"setQuorum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold_","type":"uint256"}],"name":"setThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"setUnbondingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum Governance.ProposalState","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052611d4c600055611d4c600155620151806005553480156200002457600080fd5b506040516200479a3803806200479a833981016040819052620000479162000128565b600680546001600160a01b031916331790556001600160601b0319606082901b1660805260408051808201909152601481527f4c6f636b3372486f6c79476f7665726e616e63650000000000000000000000006020909101527f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f3d7cd15b17c3ffb83e638f2b05fbd4a0aae4fc8541120bc3f72f029c3ac6b916620000ec62000124565b3060405160200162000102949392919062000158565b60408051601f19818403018152919052805160209091012060a052506200017c565b4690565b6000602082840312156200013a578081fd5b81516001600160a01b038116811462000151578182fd5b9392505050565b938452602084019290925260408301526001600160a01b0316606082015260800190565b60805160601c60a05161457f6200021b60003980610a9c52806114975250806109eb5280610b205280610ba35280610c845280610f895280611130528061117d528061157152806115d4528061164a52806116e752806117a952806118b352806118ff52806119975280611a605280611b0e5280611b845280611bd55280611db25280611df3528061217952806123175280612672525061457f6000f3fe60806040526004361061031e5760003560e01c806380711989116101ab578063c5198abc116100f7578063deaaa7cc11610095578063ec342ad01161006f578063ec342ad0146108d4578063f0f44260146108e9578063f2b0653714610909578063fe0d94c11461093657610325565b8063deaaa7cc14610872578063e177246e14610887578063e23a9a52146108a757610325565b8063da95691a116100d1578063da95691a146107f2578063dc380cbb14610812578063ddf0b00914610832578063de63298d1461085257610325565b8063c5198abc1461079d578063ce6a0880146107bd578063da35c664146107dd57610325565b8063b1b43ae511610164578063be4a66b61161013e578063be4a66b614610733578063c1a287e214610748578063c1ba4e591461075d578063c3fc0e1d1461077d57610325565b8063b1b43ae5146106e9578063b58131b0146106fe578063b600702a1461071357610325565b806380711989146106345780638a0dac4a14610654578063945dd26e14610674578063960bfe0414610694578063995e617a146106b4578063ab033ea9146106c957610325565b80633932abb11161026a5780634f039447116102235780636e3827b7116101fd5780636e3827b7146105e0578063762c31ba146105f55780637bdbe4d01461060a5780637d645fab1461061f57610325565b80634f0394471461058b57806364bb43ee146105ab5780636a42b8f8146105cb57610325565b80633932abb1146104d25780633e4f49e6146104e757806340e58ee514610514578063452a9320146105345780634634c61f146105565780634d8ea0de1461057657610325565b806317977c61116102d757806324bc1a64116102b157806324bc1a641461044d5780632fe23dbd14610462578063328dd98214610482578063357bf15c146104b257610325565b806317977c611461040357806320606b7014610423578063238efcbc1461043857610325565b8063013cf08b1461032a57806302175fa41461036857806302a251a31461038a57806306fdde03146103ac57806315373e3d146103ce5780631778e29c146103ee57610325565b3661032557005b600080fd5b34801561033657600080fd5b5061034a61034536600461351e565b610949565b60405161035f99989796959493929190614411565b60405180910390f35b34801561037457600080fd5b5061038861038336600461351e565b6109a2565b005b34801561039657600080fd5b5061039f610a55565b60405161035f9190613894565b3480156103b857600080fd5b506103c1610a5b565b60405161035f91906138e7565b3480156103da57600080fd5b506103886103e936600461357a565b610a8b565b3480156103fa57600080fd5b5061039f610a9a565b34801561040f57600080fd5b5061039f61041e36600461340d565b610abe565b34801561042f57600080fd5b5061039f610ad0565b34801561044457600080fd5b50610388610af4565b34801561045957600080fd5b5061039f610b93565b34801561046e57600080fd5b5061038861047d36600461351e565b610c43565b34801561048e57600080fd5b506104a261049d36600461351e565b610cb9565b60405161035f949392919061383c565b3480156104be57600080fd5b506103886104cd36600461351e565b610f48565b3480156104de57600080fd5b5061039f610fbe565b3480156104f357600080fd5b5061050761050236600461351e565b610fc3565b60405161035f91906138d3565b34801561052057600080fd5b5061038861052f36600461351e565b6110e2565b34801561054057600080fd5b50610549611435565b60405161035f919061379b565b34801561056257600080fd5b506103886105713660046135a9565b611444565b34801561058257600080fd5b5061054961156f565b34801561059757600080fd5b506103886105a636600461351e565b611593565b3480156105b757600080fd5b506103886105c636600461340d565b611609565b3480156105d757600080fd5b5061039f61167f565b3480156105ec57600080fd5b5061039f611685565b34801561060157600080fd5b5061054961168b565b34801561061657600080fd5b5061039f61169a565b34801561062b57600080fd5b5061039f61169f565b34801561064057600080fd5b5061038861064f36600461340d565b6116a6565b34801561066057600080fd5b5061038861066f36600461340d565b61171c565b34801561068057600080fd5b5061038861068f36600461340d565b611768565b3480156106a057600080fd5b506103886106af36600461351e565b6117de565b3480156106c057600080fd5b50610388611824565b3480156106d557600080fd5b506103886106e436600461340d565b611872565b3480156106f557600080fd5b5061039f6118e8565b34801561070a57600080fd5b5061039f6118ef565b34801561071f57600080fd5b5061038861072e36600461340d565b611956565b34801561073f57600080fd5b5061039f6119cc565b34801561075457600080fd5b5061039f6119d2565b34801561076957600080fd5b5061038861077836600461351e565b6119d9565b34801561078957600080fd5b50610388610798366004613428565b611a1f565b3480156107a957600080fd5b506103886107b836600461340d565b611acd565b3480156107c957600080fd5b506103886107d8366004613428565b611b43565b3480156107e957600080fd5b5061039f611bbb565b3480156107fe57600080fd5b5061039f61080d366004613452565b611bc1565b34801561081e57600080fd5b5061038861082d36600461340d565b611da7565b34801561083e57600080fd5b5061038861084d36600461351e565b611f04565b34801561085e57600080fd5b5061038861086d366004613428565b612138565b34801561087e57600080fd5b5061039f6121b0565b34801561089357600080fd5b506103886108a236600461351e565b6121d4565b3480156108b357600080fd5b506108c76108c236600461354e565b61226c565b60405161035f9190614354565b3480156108e057600080fd5b5061039f6122d0565b3480156108f557600080fd5b5061038861090436600461340d565b6122d6565b34801561091557600080fd5b5061092961092436600461351e565b61234c565b60405161035f9190613889565b61038861094436600461351e565b612361565b6003602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b9097015495966001600160a01b0390951695939492939192909160ff8082169161010090041689565b6006546001600160a01b031633146109d55760405162461bcd60e51b81526004016109cc90613be5565b60405180910390fd5b6040516285d7e960e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302175fa490610a20908490600401613894565b600060405180830381600087803b158015610a3a57600080fd5b505af1158015610a4e573d6000803e3d6000fd5b5050505050565b619d8090565b604051806040016040528060148152602001734c6f636b3372486f6c79476f7665726e616e636560601b81525081565b610a963383836125d7565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60046020526000908152604090205481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6006546001600160a01b03163314610b1e5760405162461bcd60e51b81526004016109cc90613be5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663238efcbc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b7957600080fd5b505af1158015610b8d573d6000803e3d6000fd5b50505050565b6000610c3e612710610c386000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344d96e956040518163ffffffff1660e01b815260040160206040518083038186803b158015610bfa57600080fd5b505afa158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c329190613536565b90612794565b906127d5565b905090565b6006546001600160a01b03163314610c6d5760405162461bcd60e51b81526004016109cc90613be5565b604051632fe23dbd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632fe23dbd90610a20908490600401613894565b60608060608060006003600087815260200190815260200160002090508060030181600401826005018360060183805480602002602001604051908101604052809291908181526020018280548015610d3b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d1d575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610d8d57602002820191906000526020600020905b815481526020019060010190808311610d79575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610e605760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610e4c5780601f10610e2157610100808354040283529160200191610e4c565b820191906000526020600020905b815481529060010190602001808311610e2f57829003601f168201915b505050505081526020019060010190610db5565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610f325760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610f1e5780601f10610ef357610100808354040283529160200191610f1e565b820191906000526020600020905b815481529060010190602001808311610f0157829003601f168201915b505050505081526020019060010190610e87565b5050505090509450945094509450509193509193565b6006546001600160a01b03163314610f725760405162461bcd60e51b81526004016109cc90613be5565b604051630d5efc5760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063357bf15c90610a20908490600401613894565b600190565b60008160025410158015610fd75750600082115b610ff35760405162461bcd60e51b81526004016109cc906141a2565b6000828152600360205260409020600b81015460ff16156110185760029150506110dd565b8060070154431161102d5760009150506110dd565b806008015443116110425760019150506110dd565b61104a610b93565b600a820154600983015461105d91612817565b101561106d5760039150506110dd565b80600a01548160090154116110865760039150506110dd565b60028101546110995760049150506110dd565b600b810154610100900460ff16156110b55760079150506110dd565b60028101546110c79062127500612817565b42106110d75760069150506110dd565b60059150505b919050565b60006110ed82610fc3565b905060078160078111156110fd57fe5b141561111b5760405162461bcd60e51b81526004016109cc90613c82565b600082815260036020526040902060018101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614801590611223575061116d6118ef565b6001808301546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263782d6fe192909116906111b490439061283c565b6040518363ffffffff1660e01b81526004016111d19291906137af565b60206040518083038186803b1580156111e957600080fd5b505afa1580156111fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112219190613536565b105b61123f5760405162461bcd60e51b81526004016109cc90614040565b600b8101805460ff1916600117905560005b60038201548110156113f8576113f082600301828154811061126f57fe5b6000918252602090912001546004840180546001600160a01b03909216918490811061129757fe5b90600052602060002001548460050184815481106112b157fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561133f5780601f106113145761010080835404028352916020019161133f565b820191906000526020600020905b81548152906001019060200180831161132257829003601f168201915b505050505085600601858154811061135357fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156113e15780601f106113b6576101008083540402835291602001916113e1565b820191906000526020600020905b8154815290600101906020018083116113c457829003601f168201915b5050505050866002015461287e565b600101611251565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c836040516114289190613894565b60405180910390a1505050565b6006546001600160a01b031681565b60007f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee868660405160200161147b9392919061389d565b60405160208183030381529060405280519060200120905060007f0000000000000000000000000000000000000000000000000000000000000000826040516020016114c892919061373d565b60405160208183030381529060405280519060200120905060006001828787876040516000815260200160405260405161150594939291906138b5565b6020604051602081039080840390855afa158015611527573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661155a5760405162461bcd60e51b81526004016109cc90613d3c565b6115658189896125d7565b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6006546001600160a01b031633146115bd5760405162461bcd60e51b81526004016109cc90613be5565b604051634f03944760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634f03944790610a20908490600401613894565b6006546001600160a01b031633146116335760405162461bcd60e51b81526004016109cc90613be5565b60405163325da1f760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906364bb43ee90610a2090849060040161379b565b60055481565b60015481565b6007546001600160a01b031681565b600a90565b62278d0081565b6006546001600160a01b031633146116d05760405162461bcd60e51b81526004016109cc90613be5565b604051638071198960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638071198990610a2090849060040161379b565b6006546001600160a01b031633146117465760405162461bcd60e51b81526004016109cc90613be5565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146117925760405162461bcd60e51b81526004016109cc90613be5565b604051634a2ee93760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063945dd26e90610a2090849060040161379b565b3330146117fd5760405162461bcd60e51b81526004016109cc90614310565b61271081111561181f5760405162461bcd60e51b81526004016109cc906139dc565b600155565b6007546001600160a01b0316331461184e5760405162461bcd60e51b81526004016109cc90614108565b600754600680546001600160a01b0319166001600160a01b03909216919091179055565b6006546001600160a01b0316331461189c5760405162461bcd60e51b81526004016109cc90613be5565b60405163ab033ea960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ab033ea990610a2090849060040161379b565b6201518081565b6000610c3e612710610c386001547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344d96e956040518163ffffffff1660e01b815260040160206040518083038186803b158015610bfa57600080fd5b6006546001600160a01b031633146119805760405162461bcd60e51b81526004016109cc90613be5565b604051635b00381560e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b600702a90610a2090849060040161379b565b60005481565b6212750081565b3330146119f85760405162461bcd60e51b81526004016109cc90614310565b612710811115611a1a5760405162461bcd60e51b81526004016109cc90613ee1565b600055565b6006546001600160a01b03163314611a495760405162461bcd60e51b81526004016109cc90613be5565b60405163c3fc0e1d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c3fc0e1d90611a9790859085906004016137af565b600060405180830381600087803b158015611ab157600080fd5b505af1158015611ac5573d6000803e3d6000fd5b505050505050565b6006546001600160a01b03163314611af75760405162461bcd60e51b81526004016109cc90613be5565b60405163314662af60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5198abc90610a2090849060040161379b565b6006546001600160a01b03163314611b6d5760405162461bcd60e51b81526004016109cc90613be5565b60405163019cd41160e71b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ce6a088090611a9790859085906004016137af565b60025481565b6000611bcb6118ef565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663782d6fe133611c0643600161283c565b6040518363ffffffff1660e01b8152600401611c239291906137af565b60206040518083038186803b158015611c3b57600080fd5b505afa158015611c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c739190613536565b1015611c915760405162461bcd60e51b81526004016109cc90613aaf565b84518651148015611ca3575083518651145b8015611cb0575082518651145b611ccc5760405162461bcd60e51b81526004016109cc90613975565b8551611cea5760405162461bcd60e51b81526004016109cc90613b43565b611cf261169a565b86511115611d125760405162461bcd60e51b81526004016109cc9061408c565b336000908152600460205260409020548015611d8f576000611d3382610fc3565b90506001816007811115611d4357fe5b1415611d615760405162461bcd60e51b81526004016109cc906138fa565b6000816007811115611d6f57fe5b1415611d8d5760405162461bcd60e51b81526004016109cc90613f26565b505b611d9c8787878787612918565b979650505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611def5760405162461bcd60e51b81526004016109cc90613fa2565b60607f000000000000000000000000000000000000000000000000000000000000000081600081518110611e1f57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060606040518060400160405280600f81526020016e6164644a6f6228616464726573732960881b81525081600081518110611e7657fe5b6020026020010181905250606083604051602001611e94919061379b565b60405160208183030381529060405281600081518110611eb057fe5b60200260200101819052506060600081600081518110611ecc57fe5b602002602001018181525050611ac58482858589604051602001611ef09190613758565b604051602081830303815290604052612918565b6004611f0f82610fc3565b6007811115611f1a57fe5b14611f375760405162461bcd60e51b81526004016109cc90613cd5565b6000818152600360205260408120600554909190611f56904290612817565b905060005b60038301548110156120fe576120f6836003018281548110611f7957fe5b6000918252602090912001546004850180546001600160a01b039092169184908110611fa157fe5b9060005260206000200154856005018481548110611fbb57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156120495780601f1061201e57610100808354040283529160200191612049565b820191906000526020600020905b81548152906001019060200180831161202c57829003601f168201915b505050505086600601858154811061205d57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156120eb5780601f106120c0576101008083540402835291602001916120eb565b820191906000526020600020905b8154815290600101906020018083116120ce57829003601f168201915b505050505086612b63565b600101611f5b565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290611428908590849061449a565b6006546001600160a01b031633146121625760405162461bcd60e51b81526004016109cc90613be5565b60405163de63298d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de63298d90611a9790859085906004016137af565b7f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee81565b3330146121f35760405162461bcd60e51b81526004016109cc906142bf565b620151808110156122165760405162461bcd60e51b81526004016109cc90613c2e565b62278d008111156122395760405162461bcd60e51b81526004016109cc90613def565b600581905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b612274612ef4565b5060008281526003602090815260408083206001600160a01b0385168452600c018252918290208251606081018452815460ff808216151583526101009091041615159281019290925260010154918101919091525b92915050565b61271081565b6006546001600160a01b031633146123005760405162461bcd60e51b81526004016109cc90613be5565b604051630787a21360e51b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f0f4426090610a2090849060040161379b565b60086020526000908152604090205460ff1681565b6006546001600160a01b0316158061238357506006546001600160a01b031633145b61239f5760405162461bcd60e51b81526004016109cc906140d1565b60056123aa82610fc3565b60078111156123b557fe5b146123d25760405162461bcd60e51b81526004016109cc90614257565b6000818152600360205260408120600b8101805461ff001916610100179055905b600382015481101561259b5761259282600301828154811061241157fe5b6000918252602090912001546004840180546001600160a01b03909216918490811061243957fe5b906000526020600020015484600501848154811061245357fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156124e15780601f106124b6576101008083540402835291602001916124e1565b820191906000526020600020905b8154815290600101906020018083116124c457829003601f168201915b50505050508560060185815481106124f557fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156125835780601f1061255857610100808354040283529160200191612583565b820191906000526020600020905b81548152906001019060200180831161256657829003601f168201915b50505050508660020154612bd3565b506001016123f3565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516125cb9190613894565b60405180910390a15050565b60016125e283610fc3565b60078111156125ed57fe5b1461260a5760405162461bcd60e51b81526004016109cc90613a27565b60008281526003602090815260408083206001600160a01b0387168452600c8101909252909120805460ff16156126535760405162461bcd60e51b81526004016109cc90613e4c565b600782015460405163782d6fe160e01b81526000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163782d6fe1916126a8918a91906004016137af565b60206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f89190613536565b9050831561271957600983015461270f9082612817565b600984015561272e565b600a8301546127289082612817565b600a8401555b8154600160ff19909116811761ff0019166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c46906127849088908890889086906137c8565b60405180910390a1505050505050565b6000826127a3575060006122ca565b828202828482816127b057fe5b04146127ce5760405162461bcd60e51b81526004016109cc90613fff565b9392505050565b60006127ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612db9565b6000828201838110156127ce5760405162461bcd60e51b81526004016109cc90613b0c565b60006127ce83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612df0565b600085858585856040516020016128999594939291906137f0565b60408051601f19818403018152828252805160209182012060008181526008909252919020805460ff1916905591506001600160a01b0387169082907f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf879061290890899089908990899061445d565b60405180910390a3505050505050565b60008061292d612926610fbe565b4390612817565b9050600061294361293c610a55565b8390612817565b6002805460010190559050612956612f14565b604051806101a001604052806002548152602001336001600160a01b03168152602001600081526020018a815260200189815260200188815260200187815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201556060820151816003019080519060200190612a39929190612f89565b5060808201518051612a55916004840191602090910190612fee565b5060a08201518051612a71916005840191602090910190613035565b5060c08201518051612a8d91600684019160209091019061308e565b5060e082015160078201556101008083015160088301556101208301516009830155610140830151600a830155610160830151600b90920180546101809094015160ff199094169215159290921761ff0019169215150291909117905580516020808301516001600160a01b03166000908152600490915260409081902091909155815190517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091612b4e9133908d908d908d908d908b908b908f90614379565b60405180910390a15198975050505050505050565b600860008686868686604051602001612b809594939291906137f0565b60408051601f198184030181529181528151602092830120835290820192909252016000205460ff1615612bc65760405162461bcd60e51b81526004016109cc90613d88565b611ac58585858585612e1c565b606060008686868686604051602001612bf09594939291906137f0565b60408051601f1981840301815291815281516020928301206000818152600890935291205490915060ff16612c375760405162461bcd60e51b81526004016109cc90613e96565b82612c40612ef0565b1015612c5e5760405162461bcd60e51b81526004016109cc90613b8c565b612c6b8362127500612817565b612c73612ef0565b1115612c915760405162461bcd60e51b81526004016109cc90613a6e565b6000818152600860205260409020805460ff191690558451606090612cb7575083612ce3565b858051906020012085604051602001612cd19291906136f0565b60405160208183030381529060405290505b60006060896001600160a01b03168984604051612d009190613721565b60006040518083038185875af1925050503d8060008114612d3d576040519150601f19603f3d011682016040523d82523d6000602084013e612d42565b606091505b509150915081612d645760405162461bcd60e51b81526004016109cc90614157565b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051612da4949392919061445d565b60405180910390a39998505050505050505050565b60008183612dda5760405162461bcd60e51b81526004016109cc91906138e7565b506000838581612de657fe5b0495945050505050565b60008184841115612e145760405162461bcd60e51b81526004016109cc91906138e7565b505050900390565b6000612e32600554612e2c612ef0565b90612817565b821015612e515760405162461bcd60e51b81526004016109cc906141e8565b60008686868686604051602001612e6c9594939291906137f0565b60408051601f19818403018152828252805160209182012060008181526008909252919020805460ff1916600117905591506001600160a01b0388169082907f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f90612ede908a908a908a908a9061445d565b60405180910390a39695505050505050565b4290565b604080516060810182526000808252602082018190529181019190915290565b604051806101a001604052806000815260200160006001600160a01b031681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215612fde579160200282015b82811115612fde57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612fa9565b50612fea9291506130e7565b5090565b828054828255906000526020600020908101928215613029579160200282015b8281111561302957825182559160200191906001019061300e565b50612fea929150613106565b828054828255906000526020600020908101928215613082579160200282015b82811115613082578251805161307291849160209091019061311b565b5091602001919060010190613055565b50612fea929150613188565b8280548282559060005260206000209081019282156130db579160200282015b828111156130db57825180516130cb91849160209091019061311b565b50916020019190600101906130ae565b50612fea9291506131a5565b5b80821115612fea5780546001600160a01b03191681556001016130e8565b5b80821115612fea5760008155600101613107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061315c57805160ff1916838001178555613029565b82800160010185558215613029579182018281111561302957825182559160200191906001019061300e565b80821115612fea57600061319c82826131c2565b50600101613188565b80821115612fea5760006131b982826131c2565b506001016131a5565b50805460018160011615610100020316600290046000825580601f106131e85750613206565b601f0160209004906000526020600020908101906132069190613106565b50565b80356001600160a01b03811681146122ca57600080fd5b600082601f830112613230578081fd5b813561324361323e826144cf565b6144a8565b81815291506020808301908481018184028601820187101561326457600080fd5b60005b8481101561328b576132798883613209565b84529282019290820190600101613267565b505050505092915050565b600082601f8301126132a6578081fd5b81356132b461323e826144cf565b818152915060208083019084810160005b8481101561328b576132dc888484358a01016133a4565b845292820192908201906001016132c5565b600082601f8301126132fe578081fd5b813561330c61323e826144cf565b818152915060208083019084810160005b8481101561328b57613334888484358a01016133a4565b8452928201929082019060010161331d565b600082601f830112613356578081fd5b813561336461323e826144cf565b81815291506020808301908481018184028601820187101561338557600080fd5b60005b8481101561328b57813584529282019290820190600101613388565b600082601f8301126133b4578081fd5b813567ffffffffffffffff8111156133ca578182fd5b6133dd601f8201601f19166020016144a8565b91508082528360208285010111156133f457600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121561341e578081fd5b6127ce8383613209565b6000806040838503121561343a578081fd5b6134448484613209565b946020939093013593505050565b600080600080600060a08688031215613469578081fd5b853567ffffffffffffffff80821115613480578283fd5b61348c89838a01613220565b965060208801359150808211156134a1578283fd5b6134ad89838a01613346565b955060408801359150808211156134c2578283fd5b6134ce89838a016132ee565b945060608801359150808211156134e3578283fd5b6134ef89838a01613296565b93506080880135915080821115613504578283fd5b50613511888289016133a4565b9150509295509295909350565b60006020828403121561352f578081fd5b5035919050565b600060208284031215613547578081fd5b5051919050565b60008060408385031215613560578182fd5b823591506135718460208501613209565b90509250929050565b6000806040838503121561358c578182fd5b82359150602083013561359e8161451b565b809150509250929050565b600080600080600060a086880312156135c0578081fd5b8535945060208601356135d28161451b565b9350604086013560ff811681146135e7578182fd5b94979396509394606081013594506080013592915050565b6000815180845260208085019450808401835b838110156136375781516001600160a01b031687529582019590820190600101613612565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b858110156136885782840389526136768483516136c4565b9885019893509084019060010161365e565b5091979650505050505050565b6000815180845260208085019450808401835b83811015613637578151875295820195908201906001016136a8565b600081518084526136dc8160208601602086016144ef565b601f01601f19169290920160200192915050565b6001600160e01b03198316815281516000906137138160048501602087016144ef565b919091016004019392505050565b600082516137338184602087016144ef565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b7f476f7665726e616e63653a3a70726f706f73654a6f6228293a20000000000000815260609190911b6bffffffffffffffffffffffff1916601a820152602e0190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03949094168452602084019290925215156040830152606082015260800190565b600060018060a01b038716825285602083015260a0604083015261381760a08301866136c4565b828103606084015261382981866136c4565b9150508260808301529695505050505050565b60006080825261384f60808301876135ff565b82810360208401526138618187613695565b905082810360408401526138758186613642565b90508281036060840152611d9c8185613642565b901515815260200190565b90815260200190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b60208101600883106138e157fe5b91905290565b6000602082526127ce60208301846136c4565b60208082526055908201527f476f7665726e616e63653a3a70726f706f73653a206f6e65206c69766520707260408201527f6f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c6060820152741c9958591e481858dd1a5d99481c1c9bdc1bdcd85b605a1b608082015260a00190565b60208082526041908201527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73616c20667560408201527f6e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6174636060820152600d60fb1b608082015260a00190565b6020808252602b908201527f476f7665726e616e63653a3a7365745468726573686f6c643a2074687265736860408201526a6f6c645f203e204241534560a81b606082015260800190565b60208082526027908201527f476f7665726e616e63653a3a5f63617374566f74653a20766f74696e672069736040820152660818db1bdcd95960ca1b606082015260800190565b602080825260339082015260008051602061452a83398151915260408201527230b739b0b1ba34b7b71034b99039ba30b6329760691b606082015260800190565b6020808252603c908201527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220766f60408201527f7465732062656c6f772070726f706f73616c207468726573686f6c6400000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526029908201527f476f7665726e616e63653a3a70726f706f73653a206d7573742070726f7669646040820152686520616374696f6e7360b81b606082015260800190565b602080825260459082015260008051602061452a83398151915260408201527f616e73616374696f6e206861736e2774207375727061737365642074696d65206060820152643637b1b59760d91b608082015260a00190565b60208082526029908201527f4572726f723a2063616c6c6572206973206e6f742074686520677561726469616040820152686e206164647265737360b81b606082015260800190565b60208082526034908201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420656040820152733c31b2b2b21036b4b734b6bab6903232b630bc9760611b606082015260800190565b60208082526033908201527f476f7665726e616e63653a3a63616e63656c3a2063616e6e6f742063616e63656040820152721b08195e1958dd5d1959081c1c9bdc1bdcd85b606a1b606082015260800190565b60208082526041908201527f476f7665726e616e63653a3a71756575653a2070726f706f73616c2063616e2060408201527f6f6e6c79206265207175657565642069662069742069732073756363656564656060820152601960fa1b608082015260a00190565b6020808252602c908201527f476f7665726e616e63653a3a63617374566f746542795369673a20696e76616c60408201526b6964207369676e617475726560a01b606082015260800190565b60208082526041908201527f476f7665726e616e63653a3a5f71756575654f725265766572743a2070726f7060408201527f6f73616c20616374696f6e20616c7265616479207175657565642061742065746060820152606160f81b608082015260a00190565b60208082526038908201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60408201527f6f7420657863656564206d6178696d756d2064656c61792e0000000000000000606082015260800190565b6020808252602a908201527f476f7665726e616e63653a3a5f63617374566f74653a20766f74657220616c726040820152691958591e481d9bdd195960b21b606082015260800190565b6020808252603d9082015260008051602061452a83398151915260408201527f616e73616374696f6e206861736e2774206265656e207175657565642e000000606082015260800190565b60208082526025908201527f476f7665726e616e63653a3a73657451756f72756d3a2071756f72756d5f203e604082015264204241534560d81b606082015260800190565b60208082526056908201527f476f7665726e616e63653a3a70726f706f73653a206f6e65206c69766520707260408201527f6f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c6060820152751c9958591e481c195b991a5b99c81c1c9bdc1bdcd85b60521b608082015260a00190565b60208082526037908201527f476f7665726e616e63653a3a70726f706f73654a6f623a206f6e6c7920564f5460408201527f45522063616e2070726f706f7365206e6577206a6f6273000000000000000000606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602c908201527f476f7665726e616e63653a3a63616e63656c3a2070726f706f7365722061626f60408201526b1d99481d1a1c995cda1bdb1960a21b606082015260800190565b60208082526025908201527f476f7665726e616e63653a3a70726f706f73653a20746f6f206d616e7920616360408201526474696f6e7360d81b606082015260800190565b6020808252601d908201527f476f7665726e616e63653a657865637574653a2021677561726469616e000000604082015260600190565b6020808252602f908201527f4c6f636b3372476f7665726e616e63653a3a736574477561726469616e3a202160408201526e3832b73234b733a3bab0b93234b0b760891b606082015260800190565b6020808252603d9082015260008051602061452a83398151915260408201527f616e73616374696f6e20657865637574696f6e2072657665727465642e000000606082015260800190565b60208082526026908201527f476f7665726e616e63653a3a73746174653a20696e76616c69642070726f706f6040820152651cd85b081a5960d21b606082015260800190565b60208082526049908201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960408201527f6d6174656420657865637574696f6e20626c6f636b206d757374207361746973606082015268333c903232b630bc9760b91b608082015260a00190565b60208082526042908201527f476f7665726e616e63653a3a657865637574653a2070726f706f73616c20636160408201527f6e206f6e6c792062652065786563757465642069662069742069732071756575606082015261195960f21b608082015260a00190565b60208082526031908201527f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60408201527036b290333937b6902a34b6b2b637b1b59760791b606082015260800190565b60208082526024908201527f476f7665726e616e63653a3a73657451756f72756d3a2074696d656c6f636b206040820152636f6e6c7960e01b606082015260800190565b8151151581526020808301511515908201526040918201519181019190915260600190565b8981526001600160a01b0389166020820152610120604082018190526000906143a48382018b6135ff565b905082810360608401526143b8818a613695565b905082810360808401526143cc8189613642565b905082810360a08401526143e08188613642565b90508560c08401528460e084015282810361010084015261440181856136c4565b9c9b505050505050505050505050565b9889526001600160a01b0397909716602089015260408801959095526060870193909352608086019190915260a085015260c0840152151560e083015215156101008201526101200190565b60008582526080602083015261447660808301866136c4565b828103604084015261448881866136c4565b91505082606083015295945050505050565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156144c757600080fd5b604052919050565b600067ffffffffffffffff8211156144e5578081fd5b5060209081020190565b60005b8381101561450a5781810151838201526020016144f2565b83811115610b8d5750506000910152565b801515811461320657600080fdfe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472a26469706673582212204993589f0b2a7eb2a44993fdadbb2fc5da88839decc9e35305483929fcc5d54a64736f6c634300060c0033000000000000000000000000dacd7d4654bae5937cde48e526eec911c7502f68

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

000000000000000000000000dacd7d4654bae5937cde48e526eec911c7502f68

-----Decoded View---------------
Arg [0] : token_ (address): 0xdacd7d4654bae5937cde48e526eec911c7502f68

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000dacd7d4654bae5937cde48e526eec911c7502f68


Deployed ByteCode Sourcemap

9784:18750:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12692:43;;;;;;;;;;-1:-1:-1;12692:43:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;25148:114;;;;;;;;;;-1:-1:-1;25148:114:0;;;;;:::i;:::-;;:::i;:::-;;11538:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9884:52::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20997:117::-;;;;;;;;;;-1:-1:-1;20997:117:0;;;;;:::i;:::-;;:::i;13063:40::-;;;;;;;;;;;;;:::i;12799:50::-;;;;;;;;;;-1:-1:-1;12799:50:0;;;;;:::i;:::-;;:::i;12922:122::-;;;;;;;;;;;;;:::i;24819:91::-;;;;;;;;;;;;;:::i;10578:122::-;;;;;;;;;;;;;:::i;25392:132::-;;;;;;;;;;-1:-1:-1;25392:132:0;;;;;:::i;:::-;;:::i;19416:287::-;;;;;;;;;;-1:-1:-1;19416:287:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;25035:107::-;;;;;;;;;;-1:-1:-1;25035:107:0;;;;;:::i;:::-;;:::i;11391:63::-;;;;;;;;;;;;;:::i;19871:1118::-;;;;;;;;;;-1:-1:-1;19871:1118:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;18647:761::-;;;;;;;;;;-1:-1:-1;18647:761:0;;;;;:::i;:::-;;:::i;23242:23::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21122:487::-;;;;;;;;;;-1:-1:-1;21122:487:0;;;;;:::i;:::-;;:::i;11711:29::-;;;;;;;;;;;;;:::i;25268:118::-;;;;;;;;;;-1:-1:-1;25268:118:0;;;;;:::i;:::-;;:::i;24276:115::-;;;;;;;;;;-1:-1:-1;24276:115:0;;;;;:::i;:::-;;:::i;23196:33::-;;;;;;;;;;;;;:::i;10236:37::-;;;;;;;;;;;;;:::i;23272:30::-;;;;;;;;;;;;;:::i;11210:74::-;;;;;;;;;;;;;:::i;23143:44::-;;;;;;;;;;;;;:::i;24488:91::-;;;;;;;;;;-1:-1:-1;24488:91:0;;;;;:::i;:::-;;:::i;23466:107::-;;;;;;;;;;-1:-1:-1;23466:107:0;;;;;:::i;:::-;;:::i;24585:::-;;;;;;;;;;-1:-1:-1;24585:107:0;;;;;:::i;:::-;;:::i;10850:270::-;;;;;;;;;;-1:-1:-1;10850:270:0;;;;;:::i;:::-;;:::i;23585:184::-;;;;;;;;;;;;;:::i;24698:115::-;;;;;;;;;;-1:-1:-1;24698:115:0;;;;;:::i;:::-;;:::i;23093:43::-;;;;;;;;;;;;;:::i;10708:134::-;;;;;;;;;;;;;:::i;24153:117::-;;;;;;;;;;-1:-1:-1;24153:117:0;;;;;:::i;:::-;;:::i;10078:31::-;;;;;;;;;;;;;:::i;23043:43::-;;;;;;;;;;;;;:::i;10324:246::-;;;;;;;;;;-1:-1:-1;10324:246:0;;;;;:::i;:::-;;:::i;24027:120::-;;;;;;;;;;-1:-1:-1;24027:120:0;;;;;:::i;:::-;;:::i;24397:85::-;;;;;;;;;;-1:-1:-1;24397:85:0;;;;;:::i;:::-;;:::i;23901:120::-;;;;;;;;;;-1:-1:-1;23901:120:0;;;;;:::i;:::-;;:::i;11796:25::-;;;;;;;;;;;;;:::i;14652:1322::-;;;;;;;;;;-1:-1:-1;14652:1322:0;;;;;:::i;:::-;;:::i;14078:566::-;;;;;;;;;;-1:-1:-1;14078:566:0;;;;;:::i;:::-;;:::i;17069:559::-;;;;;;;;;;-1:-1:-1;17069:559:0;;;;;:::i;:::-;;:::i;23781:114::-;;;;;;;;;;-1:-1:-1;23781:114:0;;;;;:::i;:::-;;:::i;13193:94::-;;;;;;;;;;;;;:::i;25872:406::-;;;;;;;;;;-1:-1:-1;25872:406:0;;;;;:::i;:::-;;:::i;19711:152::-;;;;;;;;;;-1:-1:-1;19711:152:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10282:33::-;;;;;;;;;;;;;:::i;24916:107::-;;;;;;;;;;-1:-1:-1;24916:107:0;;;;;:::i;:::-;;:::i;25538:51::-;;;;;;;;;;-1:-1:-1;25538:51:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;18000:639::-;;;;;;:::i;:::-;;:::i;12692:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12692:43:0;;;;;;;;;;;;;;;;;;;;;;:::o;25148:114::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;;;;;;;;;25224:30:::1;::::0;-1:-1:-1;;;25224:30:0;;-1:-1:-1;;;;;25224:4:0::1;:20;::::0;::::1;::::0;:30:::1;::::0;25245:8;;25224:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25148:114:::0;:::o;11538:69::-;11598:6;11538:69;:::o;9884:52::-;;;;;;;;;;;;;;-1:-1:-1;;;9884:52:0;;;;:::o;20997:117::-;21064:42;21074:10;21086;21098:7;21064:9;:42::i;:::-;20997:117;;:::o;13063:40::-;;;:::o;12799:50::-;;;;;;;;;;;;;:::o;12922:122::-;12964:80;12922:122;:::o;24819:91::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;24879:4:::1;-1:-1:-1::0;;;;;24879:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24819:91::o:0;10578:122::-;10622:4;10646:46;10310:5;10646:36;10669:12;;10646:4;-1:-1:-1;;;;;10646:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:22;;:36::i;:::-;:40;;:46::i;:::-;10639:53;;10578:122;:::o;25392:132::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;25477:39:::1;::::0;-1:-1:-1;;;25477:39:0;;-1:-1:-1;;;;;25477:4:0::1;:29;::::0;::::1;::::0;:39:::1;::::0;25507:8;;25477:39:::1;;;:::i;19416:287::-:0;19474:24;19500:20;19522:26;19550:24;19587:18;19608:9;:21;19618:10;19608:21;;;;;;;;;;;19587:42;;19648:1;:9;;19659:1;:8;;19669:1;:12;;19683:1;:11;;19640:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19640:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19640:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19640:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19416:287;;;;;:::o;25035:107::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;25106:28:::1;::::0;-1:-1:-1;;;25106:28:0;;-1:-1:-1;;;;;25106:4:0::1;:20;::::0;::::1;::::0;:28:::1;::::0;25127:6;;25106:28:::1;;;:::i;11391:63::-:0;11450:1;11391:63;:::o;19871:1118::-;19924:13;19975:10;19958:13;;:27;;:45;;;;;20002:1;19989:10;:14;19958:45;19950:96;;;;-1:-1:-1;;;19950:96:0;;;;;;;:::i;:::-;20057:25;20085:21;;;:9;:21;;;;;20121:17;;;;;;20117:865;;;20162:22;20155:29;;;;;20117:865;20222:8;:19;;;20206:12;:35;20202:780;;20265:21;20258:28;;;;;20202:780;20324:8;:17;;;20308:12;:33;20304:678;;20365:20;20358:27;;;;;20304:678;20454:13;:11;:13::i;:::-;20429:21;;;;20407:17;;;;:44;;:21;:44::i;:::-;:60;20403:579;;;20491:22;20484:29;;;;;20403:579;20556:8;:21;;;20535:8;:17;;;:42;20531:451;;20601:22;20594:29;;;;;20531:451;20645:12;;;;20641:341;;20686:23;20679:30;;;;;20641:341;20731:17;;;;;;;;;20727:255;;;20772:22;20765:29;;;;;20727:255;20835:12;;;;:30;;23079:7;20835:16;:30::i;:::-;20816:15;:49;20812:170;;20889:21;20882:28;;;;;20812:170;20950:20;20943:27;;;19871:1118;;;;:::o;18647:761::-;18698:19;18720:17;18726:10;18720:5;:17::i;:::-;18698:39;-1:-1:-1;18765:22:0;18756:5;:31;;;;;;;;;;18748:95;;;;-1:-1:-1;;;18748:95:0;;;;;;;:::i;:::-;18856:25;18884:21;;;:9;:21;;;;;18924:17;;;;18953:4;-1:-1:-1;;;;;18924:34:0;;;:17;;:34;;;;:136;;;19041:19;:17;:19::i;:::-;18999:17;;;;;-1:-1:-1;;;;;18980:4:0;:18;;;;;18999:17;;;;19018:19;;:12;;:16;:19::i;:::-;18980:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:80;18924:136;18916:193;;;;-1:-1:-1;;;18916:193:0;;;;;;;:::i;:::-;19122:17;;;:24;;-1:-1:-1;;19122:24:0;19142:4;19122:24;;;:17;19157:198;19178:16;;;:23;19174:27;;19157:198;;;19223:120;19242:8;:16;;19259:1;19242:19;;;;;;;;;;;;;;;;;;19263:15;;;:18;;-1:-1:-1;;;;;19242:19:0;;;;19279:1;;19263:18;;;;;;;;;;;;;;19283:8;:19;;19303:1;19283:22;;;;;;;;;;;;;;;;;;19223:120;;;;;;;-1:-1:-1;;19223:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19283:22;19223:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19307:8;:18;;19326:1;19307:21;;;;;;;;;;;;;;;;;;19223:120;;;;;;;-1:-1:-1;;19223:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19307:21;19223:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19330:8;:12;;;19223:18;:120::i;:::-;19203:3;;19157:198;;;;19372:28;19389:10;19372:28;;;;;;:::i;:::-;;;;;;;;18647:761;;;:::o;23242:23::-;;;-1:-1:-1;;;;;23242:23:0;;:::o;21122:487::-;21225:18;13235:52;21284:10;21296:7;21256:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21246:59;;;;;;21225:80;;21316:14;21372:15;21389:10;21343:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21333:68;;;;;;21316:85;;21412:17;21432:26;21442:6;21450:1;21453;21456;21432:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21432:26:0;;-1:-1:-1;;21432:26:0;;;-1:-1:-1;;;;;;;21477:23:0;;21469:80;;;;-1:-1:-1;;;21469:80:0;;;;;;;:::i;:::-;21560:41;21570:9;21581:10;21593:7;21560:9;:41::i;:::-;21122:487;;;;;;;;:::o;11711:29::-;;;:::o;25268:118::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;25346:32:::1;::::0;-1:-1:-1;;;25346:32:0;;-1:-1:-1;;;;;25346:4:0::1;:22;::::0;::::1;::::0;:32:::1;::::0;25369:8;;25346:32:::1;;;:::i;24276:115::-:0;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;24352:31:::1;::::0;-1:-1:-1;;;24352:31:0;;-1:-1:-1;;;;;24352:4:0::1;:20;::::0;::::1;::::0;:31:::1;::::0;24373:9;;24352:31:::1;;;:::i;23196:33::-:0;;;;:::o;10236:37::-;;;;:::o;23272:30::-;;;-1:-1:-1;;;;;23272:30:0;;:::o;11210:74::-;11279:2;11210:74;:::o;23143:44::-;23180:7;23143:44;:::o;24488:91::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;24552:19:::1;::::0;-1:-1:-1;;;24552:19:0;;-1:-1:-1;;;;;24552:4:0::1;:14;::::0;::::1;::::0;:19:::1;::::0;24567:3;;24552:19:::1;;;:::i;23466:107::-:0;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;23538:15:::1;:27:::0;;-1:-1:-1;;;;;;23538:27:0::1;-1:-1:-1::0;;;;;23538:27:0;;;::::1;::::0;;;::::1;::::0;;23466:107::o;24585:::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;24657:27:::1;::::0;-1:-1:-1;;;24657:27:0;;-1:-1:-1;;;;;24657:4:0::1;:20;::::0;::::1;::::0;:27:::1;::::0;24678:5;;24657:27:::1;;;:::i;10850:270::-:0;10917:10;10939:4;10917:27;10909:76;;;;-1:-1:-1;;;10909:76:0;;;;;;;:::i;:::-;10310:5;11004:10;:18;;10996:74;;;;-1:-1:-1;;;10996:74:0;;;;;;;:::i;:::-;11081:18;:31;10850:270::o;23585:184::-;23657:15;;-1:-1:-1;;;;;23657:15:0;23643:10;:29;23635:89;;;;-1:-1:-1;;;23635:89:0;;;;;;;:::i;:::-;23746:15;;23735:8;:26;;-1:-1:-1;;;;;;23735:26:0;-1:-1:-1;;;;;23746:15:0;;;23735:26;;;;;;23585:184::o;24698:115::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;24774:31:::1;::::0;-1:-1:-1;;;24774:31:0;;-1:-1:-1;;;;;24774:4:0::1;:18;::::0;::::1;::::0;:31:::1;::::0;24793:11;;24774:31:::1;;;:::i;23093:43::-:0;23130:6;23093:43;:::o;10708:134::-;10758:4;10782:52;10310:5;10782:42;10805:18;;10782:4;-1:-1:-1;;;;;10782:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24153:117;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;24230:32:::1;::::0;-1:-1:-1;;;24230:32:0;;-1:-1:-1;;;;;24230:4:0::1;:21;::::0;::::1;::::0;:32:::1;::::0;24252:9;;24230:32:::1;;;:::i;10078:31::-:0;;;;:::o;23043:43::-;23079:7;23043:43;:::o;10324:246::-;10385:10;10407:4;10385:27;10377:76;;;;-1:-1:-1;;;10377:76:0;;;;;;;:::i;:::-;10310:5;10472:7;:15;;10464:65;;;;-1:-1:-1;;;10464:65:0;;;;;;;:::i;:::-;10540:12;:22;10324:246::o;24027:120::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;24108:31:::1;::::0;-1:-1:-1;;;24108:31:0;;-1:-1:-1;;;;;24108:4:0::1;:18;::::0;::::1;::::0;:31:::1;::::0;24127:3;;24132:6;;24108:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24027:120:::0;;:::o;24397:85::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;24458:16:::1;::::0;-1:-1:-1;;;24458:16:0;;-1:-1:-1;;;;;24458:4:0::1;:11;::::0;::::1;::::0;:16:::1;::::0;24470:3;;24458:16:::1;;;:::i;23901:120::-:0;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;23982:31:::1;::::0;-1:-1:-1;;;23982:31:0;;-1:-1:-1;;;;;23982:4:0::1;:16;::::0;::::1;::::0;:31:::1;::::0;23999:5;;24006:6;;23982:31:::1;;;:::i;11796:25::-:0;;;;:::o;14652:1322::-;14814:4;14894:19;:17;:19::i;:::-;-1:-1:-1;;;;;14839:4:0;:18;;14858:10;14870:19;:12;14887:1;14870:16;:19::i;:::-;14839:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:74;;14831:147;;;;-1:-1:-1;;;14831:147:0;;;;;;;:::i;:::-;15015:6;:13;14997:7;:14;:31;:70;;;;;15050:10;:17;15032:7;:14;:35;14997:70;:108;;;;;15089:9;:16;15071:7;:14;:34;14997:108;14989:186;;;;-1:-1:-1;;;14989:186:0;;;;;;;:::i;:::-;15194:14;;15186:73;;;;-1:-1:-1;;;15186:73:0;;;;;;;:::i;:::-;15296:23;:21;:23::i;:::-;15278:7;:14;:41;;15270:91;;;;-1:-1:-1;;;15270:91:0;;;;;;;:::i;:::-;15416:10;15374:21;15398:29;;;:17;:29;;;;;;15442:21;;15438:448;;15478:42;15523:23;15529:16;15523:5;:23::i;:::-;15478:68;-1:-1:-1;15599:20:0;15567:28;:52;;;;;;;;;;15559:150;;;;-1:-1:-1;;;15559:150:0;;;;;;;:::i;:::-;15762:21;15730:28;:53;;;;;;;;;;15722:152;;;;-1:-1:-1;;;15722:152:0;;;;;;;:::i;:::-;15438:448;;15905:61;15914:7;15923:6;15931:10;15943:9;15954:11;15905:8;:61::i;:::-;15898:68;14652:1322;-1:-1:-1;;;;;;;14652:1322:0:o;14078:566::-;14137:10;-1:-1:-1;;;;;14159:4:0;14137:27;;14129:95;;;;-1:-1:-1;;;14129:95:0;;;;;;;:::i;:::-;14235:24;14291:4;14270:7;14278:1;14270:10;;;;;;;;;;;;;:26;-1:-1:-1;;;;;14270:26:0;;;-1:-1:-1;;;;;14270:26:0;;;;;14309;14346:33;;;;;;;;;;;;;-1:-1:-1;;;14346:33:0;;;:10;14357:1;14346:13;;;;;;;;;;;;;:33;;;;14392:24;14453:3;14442:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;14427:9;14437:1;14427:12;;;;;;;;;;;;;:30;;;;14470:20;14513:1;14501:6;14508:1;14501:9;;;;;;;;;;;;;:13;;;;;14527:109;14536:7;14545:6;14553:10;14565:9;14630:3;14583:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;14527:8;:109::i;17069:559::-;17148:23;17127:17;17133:10;17127:5;:17::i;:::-;:44;;;;;;;;;17119:122;;;;-1:-1:-1;;;17119:122:0;;;;;;;:::i;:::-;17252:25;17280:21;;;:9;:21;;;;;17343:5;;17280:21;;17252:25;17323:26;;:15;;:19;:26::i;:::-;17312:37;;17365:6;17360:185;17381:16;;;:23;17377:27;;17360:185;;;17426:107;17441:8;:16;;17458:1;17441:19;;;;;;;;;;;;;;;;;;17462:15;;;:18;;-1:-1:-1;;;;;17441:19:0;;;;17478:1;;17462:18;;;;;;;;;;;;;;17482:8;:19;;17502:1;17482:22;;;;;;;;;;;;;;;;;;17426:107;;;;;;;-1:-1:-1;;17426:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17482:22;17426:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17506:8;:18;;17525:1;17506:21;;;;;;;;;;;;;;;;;;17426:107;;;;;;;-1:-1:-1;;17426:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17506:21;17426:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17529:3;17426:14;:107::i;:::-;17406:3;;17360:185;;;-1:-1:-1;17555:12:0;;;:18;;;17589:31;;;;;;17604:10;;17570:3;;17589:31;:::i;23781:114::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;23859:28:::1;::::0;-1:-1:-1;;;23859:28:0;;-1:-1:-1;;;;;23859:4:0::1;:13;::::0;::::1;::::0;:28:::1;::::0;23873:5;;23880:6;;23859:28:::1;;;:::i;13193:94::-:0;13235:52;13193:94;:::o;25872:406::-;25929:10;25951:4;25929:27;25921:89;;;;-1:-1:-1;;;25921:89:0;;;;;;;:::i;:::-;23130:6;26029;:23;;26021:88;;;;-1:-1:-1;;;26021:88:0;;;;;;;:::i;:::-;23180:7;26128:6;:23;;26120:92;;;;-1:-1:-1;;;26120:92:0;;;;;;;:::i;:::-;26223:5;:14;;;26255:15;;26231:6;;26255:15;;;;;25872:406;:::o;19711:152::-;19784:14;;:::i;:::-;-1:-1:-1;19818:21:0;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;19818:37:0;;;;:30;;:37;;;;;;19811:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19711:152;;;;;:::o;10282:33::-;10310:5;10282:33;:::o;24916:107::-;23379:8;;-1:-1:-1;;;;;23379:8:0;23365:10;:22;23357:77;;;;-1:-1:-1;;;23357:77:0;;;;;;;:::i;:::-;24988:27:::1;::::0;-1:-1:-1;;;24988:27:0;;-1:-1:-1;;;;;24988:4:0::1;:16;::::0;::::1;::::0;:27:::1;::::0;25005:9;;24988:27:::1;;;:::i;25538:51::-:0;;;;;;;;;;;;;;;:::o;18000:639::-;18068:8;;-1:-1:-1;;;;;18068:8:0;:24;;:50;;-1:-1:-1;18110:8:0;;-1:-1:-1;;;;;18110:8:0;18096:10;:22;18068:50;18060:92;;;;-1:-1:-1;;;18060:92:0;;;;;;;:::i;:::-;18192:20;18171:17;18177:10;18171:5;:17::i;:::-;:41;;;;;;;;;18163:120;;;;-1:-1:-1;;;18163:120:0;;;;;;;:::i;:::-;18294:25;18322:21;;;:9;:21;;;;;18354:17;;;:24;;-1:-1:-1;;18354:24:0;;;;;18322:21;18389:199;18410:16;;;:23;18406:27;;18389:199;;;18455:121;18475:8;:16;;18492:1;18475:19;;;;;;;;;;;;;;;;;;18496:15;;;:18;;-1:-1:-1;;;;;18475:19:0;;;;18512:1;;18496:18;;;;;;;;;;;;;;18516:8;:19;;18536:1;18516:22;;;;;;;;;;;;;;;;;;18455:121;;;;;;;-1:-1:-1;;18455:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18516:22;18455:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18540:8;:18;;18559:1;18540:21;;;;;;;;;;;;;;;;;;18455:121;;;;;;;-1:-1:-1;;18455:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18540:21;18455:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18563:8;:12;;;18455:19;:121::i;:::-;-1:-1:-1;18435:3:0;;18389:199;;;;18603:28;18620:10;18603:28;;;;;;:::i;:::-;;;;;;;;18000:639;;:::o;21617:822::-;21731:20;21710:17;21716:10;21710:5;:17::i;:::-;:41;;;;;;;;;21702:93;;;;-1:-1:-1;;;21702:93:0;;;;;;;:::i;:::-;21806:25;21834:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;21892:24:0;;;;:17;;;:24;;;;;;21935:16;;;;:25;21927:80;;;;-1:-1:-1;;;21927:80:0;;;;;;;:::i;:::-;22057:19;;;;22031:46;;-1:-1:-1;;;22031:46:0;;22018:10;;-1:-1:-1;;;;;22031:4:0;:18;;;;:46;;22050:5;;22057:19;22031:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22018:59;;22094:7;22090:177;;;22138:17;;;;:28;;22160:5;22138:21;:28::i;:::-;22118:17;;;:48;22090:177;;;22223:21;;;;:32;;22249:5;22223:25;:32::i;:::-;22199:21;;;:56;22090:177;22279:23;;22298:4;-1:-1:-1;;22279:23:0;;;;;-1:-1:-1;;22313:25:0;22279:23;22313:25;;;;;;;22349:13;;:21;;;22388:43;;;;;;22397:5;;22404:10;;22313:25;;22349:21;;22388:43;:::i;:::-;;;;;;;;21617:822;;;;;;:::o;4783:471::-;4841:7;5086:6;5082:47;;-1:-1:-1;5116:1:0;5109:8;;5082:47;5153:5;;;5157:1;5153;:5;:1;5177:5;;;;;:10;5169:56;;;;-1:-1:-1;;;5169:56:0;;;;;;;:::i;:::-;5245:1;4783:471;-1:-1:-1;;;4783:471:0:o;6441:132::-;6499:7;6526:39;6530:1;6533;6526:39;;;;;;;;;;;;;;;;;:3;:39::i;3029:181::-;3087:7;3119:5;;;3143:6;;;;3135:46;;;;-1:-1:-1;;;3135:46:0;;;;;;;:::i;3922:137::-;3980:7;4007:44;4011:1;4014;4007:44;;;;;;;;;;;;;;;;;:3;:44::i;26805:338::-;26935:14;26973:6;26981:5;26988:9;26999:4;27005:3;26962:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;26962:47:0;;;;;;;;;26952:58;;26962:47;26952:58;;;;27050:5;27021:26;;;:18;:26;;;;;;:34;;-1:-1:-1;;27021:34:0;;;26952:58;-1:-1:-1;;;;;;27073:62:0;;;26952:58;;27073:62;;;;27107:5;;27114:9;;27125:4;;27131:3;;27073:62;:::i;:::-;;;;;;;;26805:338;;;;;;:::o;15982:1079::-;16147:4;16164:15;16182:31;16199:13;:11;:13::i;:::-;16182:12;;:16;:31::i;:::-;16164:49;;16224:13;16240:30;16255:14;:12;:14::i;:::-;16240:10;;:14;:30::i;:::-;16283:13;:15;;;;;;16224:46;-1:-1:-1;16309:27:0;;:::i;:::-;16339:427;;;;;;;;16367:13;;16339:427;;;;16405:10;-1:-1:-1;;;;;16339:427:0;;;;;16435:1;16339:427;;;;16460:7;16339:427;;;;16490:6;16339:427;;;;16523:10;16339:427;;;;16559:9;16339:427;;;;16595:10;16339:427;;;;16630:8;16339:427;;;;16663:1;16339:427;;;;16693:1;16339:427;;;;16719:5;16339:427;;;;;;16749:5;16339:427;;;;;16309:457;;16807:11;16779:9;:25;16789:11;:14;;;16779:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16779:39:0;;;;;-1:-1:-1;;;;;16779:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16779:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16779:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16779:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16779:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16779:39:0;;;;;;;;;;-1:-1:-1;;16779:39:0;;;;;;;;;;;16871:14;;16847:20;;;;;-1:-1:-1;;;;;16829:39:0;-1:-1:-1;16829:39:0;;;:17;:39;;;;;;;;:56;;;;16919:14;;16903:118;;;;;;16935:10;;16947:7;;16956:6;;16964:10;;16976:9;;16987:10;;16999:8;;17009:11;;16903:118;:::i;:::-;;;;;;;;17039:14;;15982:1079;-1:-1:-1;;;;;;;;15982:1079:0:o;17636:356::-;17771:18;:78;17811:6;17819:5;17826:9;17837:4;17843:3;17800:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;17800:47:0;;;;;;;;;17790:58;;17800:47;17790:58;;;;17771:78;;;;;;;;;;-1:-1:-1;17771:78:0;;;;17770:79;17762:157;;;;-1:-1:-1;;;17762:157:0;;;;;;;:::i;:::-;17930:54;17948:6;17956:5;17963:9;17974:4;17980:3;17930:17;:54::i;27151:1210::-;27280:12;27305:14;27343:6;27351:5;27358:9;27369:4;27375:3;27332:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;27332:47:0;;;;;;;;;27322:58;;27332:47;27322:58;;;;27399:26;;;;:18;:26;;;;;;27322:58;;-1:-1:-1;27399:26:0;;27391:100;;;;-1:-1:-1;;;27391:100:0;;;;;;;:::i;:::-;27533:3;27510:19;:17;:19::i;:::-;:26;;27502:108;;;;-1:-1:-1;;;27502:108:0;;;;;;;:::i;:::-;27652:21;:3;23079:7;27652;:21::i;:::-;27629:19;:17;:19::i;:::-;:44;;27621:108;;;;-1:-1:-1;;;27621:108:0;;;;;;;:::i;:::-;27771:5;27742:26;;;:18;:26;;;;;:34;;-1:-1:-1;;27742:34:0;;;27827:23;;27789:21;;27823:179;;-1:-1:-1;27883:4:0;27823:179;;;27971:9;27955:27;;;;;;27985:4;27931:59;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27920:70;;27823:179;28075:12;28089:23;28116:6;-1:-1:-1;;;;;28116:11:0;28134:5;28141:8;28116:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28074:76;;;;28169:7;28161:81;;;;-1:-1:-1;;;28161:81:0;;;;;;;:::i;:::-;28287:6;-1:-1:-1;;;;;28260:63:0;28279:6;28260:63;28295:5;28302:9;28313:4;28319:3;28260:63;;;;;;;;;:::i;:::-;;;;;;;;28343:10;27151:1210;-1:-1:-1;;;;;;;;;27151:1210:0:o;7061:345::-;7147:7;7249:12;7242:5;7234:28;;;;-1:-1:-1;;;7234:28:0;;;;;;;;:::i;:::-;;7273:9;7289:1;7285;:5;;;;;;;7061:345;-1:-1:-1;;;;;7061:345:0:o;4348:192::-;4434:7;4470:12;4462:6;;;;4454:29;;;;-1:-1:-1;;;4454:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;4506:5:0;;;4348:192::o;26286:511::-;26413:7;26448:30;26472:5;;26448:19;:17;:19::i;:::-;:23;;:30::i;:::-;26441:3;:37;;26433:123;;;;-1:-1:-1;;;26433:123:0;;;;;;;:::i;:::-;26567:14;26605:6;26613:5;26620:9;26631:4;26637:3;26594:47;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;26594:47:0;;;;;;;;;26584:58;;26594:47;26584:58;;;;26653:26;;;;:18;:26;;;;;;:33;;-1:-1:-1;;26653:33:0;26682:4;26653:33;;;26584:58;-1:-1:-1;;;;;;26704:61:0;;;26584:58;;26704:61;;;;26737:5;;26744:9;;26755:4;;26761:3;;26704:61;:::i;:::-;;;;;;;;26783:6;26286:511;-1:-1:-1;;;;;;26286:511:0:o;28369:162::-;28508:15;28369:162;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130::-;72:20;;-1:-1;;;;;63498:54;;65716:35;;65706:2;;65765:1;;65755:12;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;-1:-1;;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;:::i;:::-;354:80;:::i;:::-;462:21;;;345:89;-1:-1;506:4;519:14;;;;494:17;;;608;;;599:27;;;;596:36;-1:-1;593:2;;;645:1;;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;760:37;793:3;781:10;760:37;:::i;:::-;748:50;;812:14;;;;840;;;;702:1;695:9;655:206;;;659:14;;;;;237:630;;;;:::o;891:705::-;;1017:3;1010:4;1002:6;998:17;994:27;984:2;;-1:-1;;1025:12;984:2;1072:6;1059:20;1094:89;1109:73;1175:6;1109:73;:::i;1094:89::-;1211:21;;;1085:98;-1:-1;1255:4;1268:14;;;;1243:17;;;1363:1;1348:242;1373:6;1370:1;1367:13;1348:242;;;1480:46;1522:3;1255:4;1456:3;1443:17;1247:6;1431:30;;1480:46;:::i;:::-;1468:59;;1541:14;;;;1569;;;;1395:1;1388:9;1348:242;;1621:708;;1748:3;1741:4;1733:6;1729:17;1725:27;1715:2;;-1:-1;;1756:12;1715:2;1803:6;1790:20;1825:90;1840:74;1907:6;1840:74;:::i;1825:90::-;1943:21;;;1816:99;-1:-1;1987:4;2000:14;;;;1975:17;;;2095:1;2080:243;2105:6;2102:1;2099:13;2080:243;;;2212:47;2255:3;1987:4;2188:3;2175:17;1979:6;2163:30;;2212:47;:::i;:::-;2200:60;;2274:14;;;;2302;;;;2127:1;2120:9;2080:243;;2355:707;;2472:3;2465:4;2457:6;2453:17;2449:27;2439:2;;-1:-1;;2480:12;2439:2;2527:6;2514:20;2549:80;2564:64;2621:6;2564:64;:::i;2549:80::-;2657:21;;;2540:89;-1:-1;2701:4;2714:14;;;;2689:17;;;2803;;;2794:27;;;;2791:36;-1:-1;2788:2;;;2840:1;;2830:12;2788:2;2865:1;2850:206;2875:6;2872:1;2869:13;2850:206;;;4305:20;;2943:50;;3007:14;;;;3035;;;;2897:1;2890:9;2850:206;;3339:440;;3440:3;3433:4;3425:6;3421:17;3417:27;3407:2;;-1:-1;;3448:12;3407:2;3495:6;3482:20;58633:18;58625:6;58622:30;58619:2;;;-1:-1;;58655:12;58619:2;3517:64;58728:9;58709:17;;-1:-1;;58705:33;58796:4;58786:15;3517:64;:::i;:::-;3508:73;;3601:6;3594:5;3587:21;3705:3;58796:4;3696:6;3629;3687:16;;3684:25;3681:2;;;3722:1;;3712:12;3681:2;64627:6;58796:4;3629:6;3625:17;58796:4;3663:5;3659:16;64604:30;64683:1;64665:16;;;58796:4;64665:16;64658:27;3663:5;3400:379;-1:-1;;3400:379::o;4649:241::-;;4753:2;4741:9;4732:7;4728:23;4724:32;4721:2;;;-1:-1;;4759:12;4721:2;4821:53;4866:7;4842:22;4821:53;:::i;4897:366::-;;;5018:2;5006:9;4997:7;4993:23;4989:32;4986:2;;;-1:-1;;5024:12;4986:2;5086:53;5131:7;5107:22;5086:53;:::i;:::-;5076:63;5176:2;5215:22;;;;4305:20;;-1:-1;;;4980:283::o;5270:1431::-;;;;;;5571:3;5559:9;5550:7;5546:23;5542:33;5539:2;;;-1:-1;;5578:12;5539:2;5636:17;5623:31;5674:18;;5666:6;5663:30;5660:2;;;-1:-1;;5696:12;5660:2;5726:78;5796:7;5787:6;5776:9;5772:22;5726:78;:::i;:::-;5716:88;;5869:2;5858:9;5854:18;5841:32;5827:46;;5674:18;5885:6;5882:30;5879:2;;;-1:-1;;5915:12;5879:2;5945:78;6015:7;6006:6;5995:9;5991:22;5945:78;:::i;:::-;5935:88;;6088:2;6077:9;6073:18;6060:32;6046:46;;5674:18;6104:6;6101:30;6098:2;;;-1:-1;;6134:12;6098:2;6164:88;6244:7;6235:6;6224:9;6220:22;6164:88;:::i;:::-;6154:98;;6317:2;6306:9;6302:18;6289:32;6275:46;;5674:18;6333:6;6330:30;6327:2;;;-1:-1;;6363:12;6327:2;6393:87;6472:7;6463:6;6452:9;6448:22;6393:87;:::i;:::-;6383:97;;6545:3;6534:9;6530:19;6517:33;6503:47;;5674:18;6562:6;6559:30;6556:2;;;-1:-1;;6592:12;6556:2;;6622:63;6677:7;6668:6;6657:9;6653:22;6622:63;:::i;:::-;6612:73;;;5533:1168;;;;;;;;:::o;6708:241::-;;6812:2;6800:9;6791:7;6787:23;6783:32;6780:2;;;-1:-1;;6818:12;6780:2;-1:-1;3268:20;;6774:175;-1:-1;6774:175::o;7204:263::-;;7319:2;7307:9;7298:7;7294:23;7290:32;7287:2;;;-1:-1;;7325:12;7287:2;-1:-1;4453:13;;7281:186;-1:-1;7281:186::o;7474:366::-;;;7595:2;7583:9;7574:7;7570:23;7566:32;7563:2;;;-1:-1;;7601:12;7563:2;4318:6;4305:20;7653:63;;7771:53;7816:7;7753:2;7796:9;7792:22;7771:53;:::i;:::-;7761:63;;7557:283;;;;;:::o;7847:360::-;;;7965:2;7953:9;7944:7;7940:23;7936:32;7933:2;;;-1:-1;;7971:12;7933:2;4318:6;4305:20;8023:63;;8123:2;8163:9;8159:22;3134:20;3159:30;3183:5;3159:30;:::i;:::-;8131:60;;;;7927:280;;;;;:::o;8214:733::-;;;;;;8381:3;8369:9;8360:7;8356:23;8352:33;8349:2;;;-1:-1;;8388:12;8349:2;4318:6;4305:20;8440:63;;8540:2;8580:9;8576:22;3134:20;3159:30;3183:5;3159:30;:::i;:::-;8548:60;-1:-1;8645:2;8682:22;;4581:20;63714:4;63703:16;;66204:33;;66194:2;;-1:-1;;66241:12;66194:2;8343:604;;;;-1:-1;8653:61;;8751:2;8790:22;;3268:20;;-1:-1;8859:3;8899:22;3268:20;;8343:604;-1:-1;;8343:604::o;10287:690::-;;10480:5;59901:12;61260:6;61255:3;61248:19;61297:4;;61292:3;61288:14;10492:93;;61297:4;10656:5;59262:14;-1:-1;10695:260;10720:6;10717:1;10714:13;10695:260;;;10781:13;;-1:-1;;;;;63498:54;9928:37;;9108:14;;;;60739;;;;63509:42;10735:9;10695:260;;;-1:-1;10961:10;;10411:566;-1:-1;;;;;10411:566::o;11012:920::-;;11232:5;59901:12;61260:6;61255:3;61248:19;61297:4;;61292:3;61288:14;11244:102;;;;61297:4;11403:6;11399:17;11394:3;11390:27;11378:39;;61297:4;11497:5;59262:14;-1:-1;11536:357;11561:6;11558:1;11555:13;11536:357;;;11623:9;11617:4;11613:20;11608:3;11601:33;9256:64;9316:3;11668:6;11662:13;9256:64;:::i;:::-;11872:14;;;;11682:90;-1:-1;60739:14;;;;11583:1;11576:9;11536:357;;;-1:-1;11916:10;;11154:778;-1:-1;;;;;;;11154:778::o;12936:690::-;;13129:5;59901:12;61260:6;61255:3;61248:19;61297:4;;61292:3;61288:14;13141:93;;61297:4;13305:5;59262:14;-1:-1;13344:260;13369:6;13366:1;13363:13;13344:260;;;13430:13;;13917:37;;9690:14;;;;60739;;;;13391:1;13384:9;13344:260;;14280:323;;14412:5;59901:12;61260:6;61255:3;61248:19;14495:52;14540:6;61297:4;61292:3;61288:14;61297:4;14521:5;14517:16;14495:52;:::i;:::-;58728:9;65403:14;-1:-1;;65399:28;14559:39;;;;61297:4;14559:39;;14360:243;-1:-1;;14360:243::o;31093:405::-;-1:-1;;;;;;63199:78;;14212:56;;59901:12;;31093:405;;15231:52;59901:12;31360:1;31351:11;;15264:4;15253:16;;15231:52;:::i;:::-;15295:16;;;;31360:1;15295:16;;31253:245;-1:-1;;;31253:245::o;31505:271::-;;15120:5;59901:12;15231:52;15276:6;15271:3;15264:4;15257:5;15253:16;15231:52;:::i;:::-;15295:16;;;;;31639:137;-1:-1;;31639:137::o;31783:659::-;-1:-1;;;19106:87;;19091:1;19212:11;;13917:37;;;;32294:12;;;13917:37;32405:12;;;32028:414::o;32449:520::-;25226:28;25206:49;;65514:2;65510:14;;;;-1:-1;;65510:14;25190:2;25274:12;;10186:58;32932:12;;;32666:303::o;32976:222::-;-1:-1;;;;;63498:54;;;;9928:37;;33103:2;33088:18;;33074:124::o;33205:349::-;-1:-1;;;;;63498:54;;;;9797:58;;33540:2;33525:18;;13917:37;33368:2;33353:18;;33339:215::o;33901:544::-;-1:-1;;;;;63498:54;;;;9928:37;;34271:2;34256:18;;13917:37;;;;63033:13;63026:21;34348:2;34333:18;;13689:34;34431:2;34416:18;;13917:37;34106:3;34091:19;;34077:368::o;34452:840::-;;63509:42;;;;;62949:5;63498:54;9935:3;9928:37;13947:5;34894:2;34883:9;34879:18;13917:37;34729:3;34931:2;34920:9;34916:18;34909:48;34971:78;34729:3;34718:9;34714:19;35035:6;34971:78;:::i;:::-;35097:9;35091:4;35087:20;35082:2;35071:9;35067:18;35060:48;35122:76;35193:4;35184:6;35122:76;:::i;:::-;35114:84;;;13947:5;35277:3;35266:9;35262:19;13917:37;34700:592;;;;;;;;:::o;35299:1224::-;;35748:3;35770:17;35763:47;35824:108;35748:3;35737:9;35733:19;35918:6;35824:108;:::i;:::-;35980:9;35974:4;35970:20;35965:2;35954:9;35950:18;35943:48;36005:108;36108:4;36099:6;36005:108;:::i;:::-;35997:116;;36161:9;36155:4;36151:20;36146:2;36135:9;36131:18;36124:48;36186:128;36309:4;36300:6;36186:128;:::i;:::-;36178:136;;36362:9;36356:4;36352:20;36347:2;36336:9;36332:18;36325:48;36387:126;36508:4;36499:6;36387:126;:::i;36530:210::-;63033:13;;63026:21;13689:34;;36651:2;36636:18;;36622:118::o;36747:222::-;13917:37;;;36874:2;36859:18;;36845:124::o;36976:432::-;13917:37;;;37317:2;37302:18;;13917:37;;;;63033:13;63026:21;37394:2;37379:18;;13689:34;37153:2;37138:18;;37124:284::o;37415:548::-;13917:37;;;63714:4;63703:16;;;;37783:2;37768:18;;31046:35;37866:2;37851:18;;13917:37;37949:2;37934:18;;13917:37;37622:3;37607:19;;37593:370::o;38229:252::-;38371:2;38356:18;;65628:1;65618:12;;65608:2;;65634:9;65608:2;15572:65;;;38342:139;:::o;38488:310::-;;38635:2;38656:17;38649:47;38710:78;38635:2;38624:9;38620:18;38774:6;38710:78;:::i;38805:416::-;39005:2;39019:47;;;16562:2;38990:18;;;61248:19;16598:34;61288:14;;;16578:55;16667:34;16653:12;;;16646:56;-1:-1;;;16722:12;;;16715:45;16779:12;;;38976:245::o;39228:416::-;39428:2;39442:47;;;17030:2;39413:18;;;61248:19;17066:34;61288:14;;;17046:55;17135:34;17121:12;;;17114:56;-1:-1;;;17190:12;;;17183:25;17227:12;;;39399:245::o;39651:416::-;39851:2;39865:47;;;17478:2;39836:18;;;61248:19;17514:34;61288:14;;;17494:55;-1:-1;;;17569:12;;;17562:35;17616:12;;;39822:245::o;40074:416::-;40274:2;40288:47;;;17867:2;40259:18;;;61248:19;17903:34;61288:14;;;17883:55;-1:-1;;;17958:12;;;17951:31;18001:12;;;40245:245::o;40497:416::-;40697:2;40711:47;;;18252:2;40682:18;;;61248:19;-1:-1;;;;;;;;;;;61288:14;;;18268:55;-1:-1;;;18343:12;;;18336:43;18398:12;;;40668:245::o;40920:416::-;41120:2;41134:47;;;18649:2;41105:18;;;61248:19;18685:34;61288:14;;;18665:55;18754:30;18740:12;;;18733:52;18804:12;;;41091:245::o;41343:416::-;41543:2;41557:47;;;19462:2;41528:18;;;61248:19;19498:29;61288:14;;;19478:50;19547:12;;;41514:245::o;41766:416::-;41966:2;41980:47;;;19798:2;41951:18;;;61248:19;19834:34;61288:14;;;19814:55;-1:-1;;;19889:12;;;19882:33;19934:12;;;41937:245::o;42189:416::-;42389:2;42403:47;;;20185:2;42374:18;;;61248:19;-1:-1;;;;;;;;;;;61288:14;;;20201:55;20290:34;20276:12;;;20269:56;-1:-1;;;20345:12;;;20338:29;20386:12;;;42360:245::o;42612:416::-;42812:2;42826:47;;;20637:2;42797:18;;;61248:19;20673:34;61288:14;;;20653:55;-1:-1;;;20728:12;;;20721:33;20773:12;;;42783:245::o;43035:416::-;43235:2;43249:47;;;21024:2;43220:18;;;61248:19;21060:34;61288:14;;;21040:55;-1:-1;;;21115:12;;;21108:44;21171:12;;;43206:245::o;43458:416::-;43658:2;43672:47;;;21422:2;43643:18;;;61248:19;21458:34;61288:14;;;21438:55;-1:-1;;;21513:12;;;21506:43;21568:12;;;43629:245::o;43881:416::-;44081:2;44095:47;;;21819:2;44066:18;;;61248:19;21855:34;61288:14;;;21835:55;21924:34;21910:12;;;21903:56;-1:-1;;;21979:12;;;21972:25;22016:12;;;44052:245::o;44304:416::-;44504:2;44518:47;;;22267:2;44489:18;;;61248:19;22303:34;61288:14;;;22283:55;-1:-1;;;22358:12;;;22351:36;22406:12;;;44475:245::o;44727:416::-;44927:2;44941:47;;;22657:2;44912:18;;;61248:19;22693:34;61288:14;;;22673:55;22762:34;22748:12;;;22741:56;-1:-1;;;22817:12;;;22810:25;22854:12;;;44898:245::o;45150:416::-;45350:2;45364:47;;;23105:2;45335:18;;;61248:19;23141:34;61288:14;;;23121:55;23210:26;23196:12;;;23189:48;23256:12;;;45321:245::o;45573:416::-;45773:2;45787:47;;;23507:2;45758:18;;;61248:19;23543:34;61288:14;;;23523:55;-1:-1;;;23598:12;;;23591:34;23644:12;;;45744:245::o;45996:416::-;46196:2;46210:47;;;23895:2;46181:18;;;61248:19;-1:-1;;;;;;;;;;;61288:14;;;23911:55;24000:31;23986:12;;;23979:53;24051:12;;;46167:245::o;46419:416::-;46619:2;46633:47;;;24302:2;46604:18;;;61248:19;24338:34;61288:14;;;24318:55;-1:-1;;;24393:12;;;24386:29;24434:12;;;46590:245::o;46842:416::-;47042:2;47056:47;;;24685:2;47027:18;;;61248:19;24721:34;61288:14;;;24701:55;24790:34;24776:12;;;24769:56;-1:-1;;;24845:12;;;24838:46;24903:12;;;47013:245::o;47265:416::-;47465:2;47479:47;;;25525:2;47450:18;;;61248:19;25561:34;61288:14;;;25541:55;25630:25;25616:12;;;25609:47;25675:12;;;47436:245::o;47688:416::-;47888:2;47902:47;;;25926:2;47873:18;;;61248:19;25962:34;61288:14;;;25942:55;-1:-1;;;26017:12;;;26010:25;26054:12;;;47859:245::o;48111:416::-;48311:2;48325:47;;;26305:2;48296:18;;;61248:19;26341:34;61288:14;;;26321:55;-1:-1;;;26396:12;;;26389:36;26444:12;;;48282:245::o;48534:416::-;48734:2;48748:47;;;26695:2;48719:18;;;61248:19;26731:34;61288:14;;;26711:55;-1:-1;;;26786:12;;;26779:29;26827:12;;;48705:245::o;48957:416::-;49157:2;49171:47;;;27078:2;49142:18;;;61248:19;27114:31;61288:14;;;27094:52;27165:12;;;49128:245::o;49380:416::-;49580:2;49594:47;;;27416:2;49565:18;;;61248:19;27452:34;61288:14;;;27432:55;-1:-1;;;27507:12;;;27500:39;27558:12;;;49551:245::o;49803:416::-;50003:2;50017:47;;;27809:2;49988:18;;;61248:19;-1:-1;;;;;;;;;;;61288:14;;;27825:55;27914:31;27900:12;;;27893:53;27965:12;;;49974:245::o;50226:416::-;50426:2;50440:47;;;28216:2;50411:18;;;61248:19;28252:34;61288:14;;;28232:55;-1:-1;;;28307:12;;;28300:30;28349:12;;;50397:245::o;50649:416::-;50849:2;50863:47;;;28600:2;50834:18;;;61248:19;28636:34;61288:14;;;28616:55;28705:34;28691:12;;;28684:56;-1:-1;;;28760:12;;;28753:33;28805:12;;;50820:245::o;51072:416::-;51272:2;51286:47;;;29056:2;51257:18;;;61248:19;29092:34;61288:14;;;29072:55;29161:34;29147:12;;;29140:56;-1:-1;;;29216:12;;;29209:26;29254:12;;;51243:245::o;51495:416::-;51695:2;51709:47;;;29505:2;51680:18;;;61248:19;29541:34;61288:14;;;29521:55;-1:-1;;;29596:12;;;29589:41;29649:12;;;51666:245::o;51918:416::-;52118:2;52132:47;;;29900:2;52103:18;;;61248:19;29936:34;61288:14;;;29916:55;-1:-1;;;29991:12;;;29984:28;30031:12;;;52089:245::o;52341:318::-;30329:23;;63033:13;63026:21;13689:34;;30497:4;30486:16;;;30480:23;63033:13;63026:21;30551:14;;;13689:34;30646:4;30635:16;;;30629:23;30706:14;;;13917:37;;;;52516:2;52501:18;;52487:172::o;52895:1888::-;13917:37;;;-1:-1;;;;;63498:54;;53685:2;53670:18;;9797:58;53512:3;53722:2;53707:18;;53700:48;;;52895:1888;;53762:108;53497:19;;;53856:6;53762:108;:::i;:::-;53754:116;;53918:9;53912:4;53908:20;53903:2;53892:9;53888:18;53881:48;53943:108;54046:4;54037:6;53943:108;:::i;:::-;53935:116;;54100:9;54094:4;54090:20;54084:3;54073:9;54069:19;54062:49;54125:128;54248:4;54239:6;54125:128;:::i;:::-;54117:136;;54302:9;54296:4;54292:20;54286:3;54275:9;54271:19;54264:49;54327:126;54448:4;54439:6;54327:126;:::i;:::-;54319:134;;13947:5;54532:3;54521:9;54517:19;13917:37;13947:5;54616:3;54605:9;54601:19;13917:37;54670:9;54664:4;54660:20;54654:3;54643:9;54639:19;54632:49;54695:78;54768:4;54759:6;54695:78;:::i;:::-;54687:86;53483:1300;-1:-1;;;;;;;;;;;;53483:1300::o;54790:1092::-;13917:37;;;-1:-1;;;;;63498:54;;;;55294:2;55279:18;;9928:37;55377:2;55362:18;;13917:37;;;;55460:2;55445:18;;13917:37;;;;55543:3;55528:19;;13917:37;;;;63509:42;55612:19;;13917:37;55711:3;55696:19;;13917:37;63033:13;63026:21;55789:3;55774:19;;13689:34;63033:13;63026:21;55867:3;55852:19;;13689:34;55129:3;55114:19;;55100:782::o;55889:728::-;;13947:5;13924:3;13917:37;56138:3;56257:2;56246:9;56242:18;56235:48;56297:78;56138:3;56127:9;56123:19;56361:6;56297:78;:::i;:::-;56423:9;56417:4;56413:20;56408:2;56397:9;56393:18;56386:48;56448:76;56519:4;56510:6;56448:76;:::i;:::-;56440:84;;;13947:5;56603:2;56592:9;56588:18;13917:37;56109:508;;;;;;;:::o;56624:333::-;13917:37;;;56943:2;56928:18;;13917:37;56779:2;56764:18;;56750:207::o;56964:256::-;57026:2;57020:9;57052:17;;;57127:18;57112:34;;57148:22;;;57109:62;57106:2;;;57184:1;;57174:12;57106:2;57026;57193:22;57004:216;;-1:-1;57004:216::o;57227:304::-;;57386:18;57378:6;57375:30;57372:2;;;-1:-1;;57408:12;57372:2;-1:-1;57453:4;57441:17;;;57506:15;;57309:222::o;64700:268::-;64765:1;64772:101;64786:6;64783:1;64780:13;64772:101;;;64853:11;;;64847:18;64834:11;;;64827:39;64808:2;64801:10;64772:101;;;64888:6;64885:1;64882:13;64879:2;;;-1:-1;;64765:1;64935:16;;64928:27;64749:219::o;65781:111::-;65862:5;63033:13;63026:21;65840:5;65837:32;65827:2;;65883:1;;65873:12

Swarm Source

ipfs://4993589f0b2a7eb2a44993fdadbb2fc5da88839decc9e35305483929fcc5d54a
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading