Contract 0xF9506dD2d34e589f415c8eBadeb251139Ac479B0

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5088c66799e50d8cea1526f9b611077e8e096398b83562fab64f5106175ca074Vote161739422022-06-18 0:41:59103 days 11 hrs ago0x268db4cdbea3966885f0ebaf9400ee81949120c2 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828932 26.5
0xe38755edc52356d48e059ff5ca0cebf5078e6e767f370dbddf6fe57630daaeddVote161675042022-06-17 21:06:15103 days 14 hrs ago0x2808370606f07a16442a77ba45b9994beec6aed2 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828932 26.5
0xdb2fb4a61ff899a9b580f72919b74b58b4cd27ebfaa87b583a3e001d8391ba7fVote161618212022-06-17 17:56:48103 days 18 hrs ago0x483251e8ff51c72078ae97885a203a8e23fd9522 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828932 26.5
0x63ee8089a928d962bf4e46f413207f2d88be40176425b7f8b8c113dff50f01bdVote161618032022-06-17 17:56:12103 days 18 hrs ago0x483251e8ff51c72078ae97885a203a8e23fd9522 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828614 26.5
0xfb428b987e30c62ecff175607652d61c7d40a2a4d9cf568e101910977859d013Vote161565152022-06-17 15:00:09103 days 20 hrs ago0x5e1ddbf30651d056d744ba2124a1ab9183cb74c9 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828932 26.5
0xb30b085fb239125a22bd86e39410367cdcca356197bedce775c83bac2e18d1b2Vote161397052022-06-17 5:40:08104 days 6 hrs ago0xac9be1372ab5fc54cdf4dd2afe7a678e94706e82 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828932 26.5
0x0e31e5d1a919eff60ede459dc16f313981f35d592acc13b5a346958ceafc6effVote161391832022-06-17 5:22:56104 days 6 hrs ago0x8906b2b1a2bdc52dbaf8939a7f6017fdd178ba69 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828932 26.5
0x758a0956b802f3b821763090abab1cc2bbc5a69ae94264ecad19d743bb501472Vote161177822022-06-16 17:33:51104 days 18 hrs ago0xbe4feae32210f682a41e1c41e3eaf4f8204cd29e IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828932 26.5
0x77d7452ddcd279c7938ffb09ca5e810bc79594691f07e1eb53b9053097ff0325Vote161098372022-06-16 13:14:25104 days 22 hrs ago0x1a1e852f970a231d32271c88162e222a09c1650a IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.00375668826
0x681c660bda9a7111133c3fede4b42ca5f8d9fb929940dbf60dbac4aed72d5ee1Vote161010632022-06-16 8:25:03105 days 3 hrs ago0x41227a3f9df302d6fbdf7dd1b3261928ba789d47 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003756688 26
0x5cd9b61a5bcbbacf587ed4bfbb8e3c46f544dd3e866fc41ffbbec6e12da73aeaVote160957832022-06-16 5:26:34105 days 6 hrs ago0x6fe797a05359c9d91b1f85d418e2ed4ea6c65a8f IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828932 26.5
0xbd6eedfbcf6bed6d0eb6282aa3d7512ed8f24aa3e1e933e2473127a926791d48Vote160808042022-06-15 21:07:43105 days 14 hrs ago0x59c188a168510c874f92a2e8d08ddc6885be442b IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.00313616109 26.41
0x96768412ee984e577c3c72c7c35f352a5e64a56095f1277d05a9fe8002472ae1Vote160746552022-06-15 17:57:44105 days 18 hrs ago0xdd426f2650b357cc337a755debbce82e51917d65 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.005883170678 40.717365305
0xfee6825d8d0db949a1bc1cbc0cf6ec0caba176c916e3f064dc2ad522853c6b4dVote160744852022-06-15 17:52:50105 days 18 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.0042336056 26.2
0x4275970d4593dffc98fb6ff02d6ac1c8509fc5adae170561510c8b13c33237120x7cc7b87a160741482022-06-15 17:41:35105 days 18 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.0113820136 26.2
0x875738e576a2c01ba290e98f756951d9f7c69da5f71d490a8dc8a35f2c1d5cd5Vote160690702022-06-15 14:54:20105 days 21 hrs ago0x1dddd5e5cd54175a8d63082217c6e7b6efbee90c IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828614 26.5
0xbb2d370356f0e1777d2bb46f7ba50a50934f660bf5fbab54eae1af23fc347811Vote160521712022-06-15 5:38:37106 days 6 hrs ago0x1a1e852f970a231d32271c88162e222a09c1650a IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.00295591426
0x8eba495f117e988551116e6378483ebc57b5d31ec9efaafb7f55413b73db5e88Vote160521042022-06-15 5:36:24106 days 6 hrs ago0x1a1e852f970a231d32271c88162e222a09c1650a IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.00414122828
0xe2b444b1d8a1da0f227cb1039e2721e11acafc195a20bb23568a8fd816a438cbVote160338432022-06-14 19:29:42106 days 16 hrs ago0x6fe797a05359c9d91b1f85d418e2ed4ea6c65a8f IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.0039622543 27.425
0xa6bc6b7be03c6a1807b374e2cb2112dc82d3314aa17b7a3c2f77183651e5cc5fVote160245212022-06-14 14:22:11106 days 21 hrs ago0x6f7bf13e057305d04abd72e637e491cc30569f43 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828614 26.5
0x08acf9cbf078e87c9ce518ba312312bc70ba20ffba8785b2ea72f3636b1ef4e4Vote159618392022-06-13 4:29:25108 days 7 hrs ago0xac9be1372ab5fc54cdf4dd2afe7a678e94706e82 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828614 26.5
0xb2c4c209c811a994498101dad6df72a15180c75dd5e8d6d1390ed6acf1af44a9Vote159520672022-06-12 23:15:44108 days 12 hrs ago0x2808370606f07a16442a77ba45b9994beec6aed2 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828614 26.5
0x071382ba901780409c7a3a5cbb96c4c02ef674379562523e5d72077f041d0a94Vote159414282022-06-12 17:21:16108 days 18 hrs ago0xbe4feae32210f682a41e1c41e3eaf4f8204cd29e IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003828614 26.5
0xa26b60b334a5b7a18917cbf10eae43c01a8361f211a380f5416279f401bb3855Vote159376442022-06-12 15:16:17108 days 20 hrs ago0x1377c6dbb7f35766e5243464c17e5223817eecac IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.00381561116 26.41
0x93f39eae8867131be27707a3b7110763bd86ddcb72d56e39b82b38330bf137c1Vote159063442022-06-11 22:00:24109 days 13 hrs ago0x268db4cdbea3966885f0ebaf9400ee81949120c2 IN  0xf9506dd2d34e589f415c8ebadeb251139ac479b00 AVAX0.003867707128 26.77058562
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Governance

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at snowtrace.io on 2022-06-09
*/

/**
 *Submitted for verification at snowtrace.io on 2022-05-23
*/

// Sources flattened with hardhat v2.9.6 https://hardhat.org

// File @openzeppelin/contracts/security/[email protected]

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

pragma solidity ^0.8.0;

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

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

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

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

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

        _;

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


// File @openzeppelin/contracts/utils/[email protected]


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// File contracts/Governance.sol


pragma solidity 0.8.9;

/// @title A governance contract for proposals, voting, and execution
/// @author Auroter
/// @notice Uses the StakedAxial contract to determine users voting power
/// @notice Multiple executions can be included in a single yes/no proposal
/// @notice Multiple-choice proposals are also valid and can be used to select a specific execution context
// import "hardhat/console.sol";

interface IsAxial {
  function balanceOf(address _account) external view returns (uint256);
}

contract Governance is ReentrancyGuard, Ownable {

    /// @notice Lower bound for the voting period
    uint256 public minimumVotingPeriod = 3 days;
    uint256 public constant VOTING_PERIOD_MINIMUM = 1 days;
    uint256 public constant VOTING_PERIOD_MAXIMUM = 30 days;

    /// @notice Seconds since the end of the voting period before the proposal can be executed
    uint256 public executionDelay = 24 hours;
    uint256 public constant EXECUTION_DELAY_MINIMUM = 30 seconds;
    uint256 public constant EXECUTION_DELAY_MAXIMUM = 30 days;

    /// @notice Seconds since the proposal could be executed until it is considered expired
    uint256 public constant EXPIRATION_PERIOD = 14 days;

    /// @notice The required minimum number of votes in support of a proposal for it to succeed
    uint256 public quorumVotes = 10_000_000 * 1e18;
    uint256 public constant QUORUM_VOTES_MINIMUM = 3_650_000 * 1e18;
    uint256 public constant QUORUM_VOTES_MAXIMUM = 365_000_000 * 1e18;

    /// @notice The minimum number of votes required for an account to create a proposal
    uint256 public proposalThreshold = 200_000 * 1e18;
    uint256 public constant PROPOSAL_THRESHOLD_MINIMUM = 100_000 * 1e18;
    uint256 public constant PROPOSAL_THRESHOLD_MAXIMUM = 180_000_000 * 1e18;

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

    /// @notice The record of all proposals ever proposed
    mapping(uint256 => Proposal) public proposals;
    mapping(uint256 => mapping(address => Receipt)) public receipts;
    mapping(address => uint256) public lastProposalByAddress;

    /// @notice Non-tradeable sAXIAL used to represent votes
    IsAxial public sAXIAL;

    struct Proposal {
        string title;
        string metadata;
        address proposer;
        address executor;
        uint256 startTime;
        uint256 votingPeriod;
        uint256 quorumVotes;
        uint256 executionDelay;
        uint256[] votes;
        bool isBoolean;
        ProposalExecutionContextList executionContexts;
    }

    struct ProposalExecutionContext {
        string label; // Description of execution context
        address target; // The contract we wish to manipulate
        uint256 value; // We set this if the function requires native AVAX
        bytes data; // *encoded* function and parameters being executed at target
    }

    struct ProposalExecutionContextList {
        uint256 length;
        ProposalExecutionContext[] contexts;
    }

    struct Receipt {
        bool hasVoted; // did the user vote
        uint256 support; // what did user vote for?
        uint256 votes; // weight of the users vote
    }

    enum ProposalState {
        Active,
        Defeated,
        PendingExecution,
        ReadyForExecution,
        Executed,
        Expired
    }

    // emitted whenever a user votes
    event NewVote(
        uint256 proposalId,
        address voter,
        uint256 support,
        uint256 votes
    );

    event ProposalCreated(uint256 proposalId, address proposer, string title);
    event ProposalExecuted(uint256 proposalId, address executor);
    event MinimumVotingPeriodChanged(uint256 newMinimumVotingPeriod);
    event ExecutionDelayChanged(uint256 newExecutionDelay);
    event QuorumVotesChanges(uint256 newQuorumVotes);
    event ProposalThresholdChanged(uint256 newProposalThreshold);

    /// @notice Constructor
    /// @param _sAXIAL the address of the contract which determines each users voting power
    /// @dev This token must not be tradeable
    constructor(address _sAXIAL) {
        sAXIAL = IsAxial(_sAXIAL);
    }

    function getProposalVotes(uint256 proposalId) public view returns (uint256[] memory) {
        return proposals[proposalId].votes;
    }

    // Setters

    function setMinimumVotingPeriod(uint256 _seconds) public onlyOwner {
        require(
            _seconds >= VOTING_PERIOD_MINIMUM,
            "Governance::setMinimumVotingPeriod: TOO_SMALL"
        );
        require(
            _seconds <= VOTING_PERIOD_MAXIMUM,
            "Governance::setMinimumVotingPeriod: TOO_LARGE"
        );
        minimumVotingPeriod = _seconds;
        emit MinimumVotingPeriodChanged(_seconds);
    }

    function setExecutionDelay(uint256 _seconds) public onlyOwner {
        require(
            _seconds >= EXECUTION_DELAY_MINIMUM,
            "Governance::setExecutionDelay: TOO_SMALL"
        );
        require(
            _seconds <= EXECUTION_DELAY_MAXIMUM,
            "Governance::setExecutionDelay: TOO_LARGE"
        );
        executionDelay = _seconds;
        emit ExecutionDelayChanged(_seconds);
    }

    function setQuorumVotes(uint256 _votes) public onlyOwner {
        require(
            _votes >= QUORUM_VOTES_MINIMUM,
            "Governance::setQuorumVotes: TOO_SMALL"
        );
        require(
            _votes <= QUORUM_VOTES_MAXIMUM,
            "Governance::setQuorumVotes: TOO_LARGE"
        );
        quorumVotes = _votes;
        emit QuorumVotesChanges(_votes);
    }

    function setProposalThreshold(uint256 _votes) public onlyOwner {
        require(
            _votes >= PROPOSAL_THRESHOLD_MINIMUM,
            "Governance::setProposalThreshold: TOO_SMALL"
        );
        require(
            _votes <= PROPOSAL_THRESHOLD_MAXIMUM,
            "Governance::setProposalThreshold: TOO_LARGE"
        );
        proposalThreshold = _votes;
        emit ProposalThresholdChanged(_votes);
    }

    /// @notice View the current status of any proposal
    /// @param _proposalId the index of the proposal we wish to view the State of
    /// @return ProposalState enum representing the status of the selected proposal
    function state(uint256 _proposalId) public view returns (ProposalState) {
        require(
            _proposalId < proposalCount,
            "Governance::state: invalid proposal id"
        );

        Proposal memory proposal = proposals[_proposalId];

        // These states are each being a precondition of the next state

        // The proposal is currently allowing votes
        if (block.timestamp <= proposal.startTime + proposal.votingPeriod) {
            return ProposalState.Active;
        }

        // The proposal is no longer allowing votes and has been executed
        if (proposal.executor != address(0)) {
            return ProposalState.Executed;
        }

        // The proposal is yes/no and the yes votes did not exceed the no votes, or the yes notes did not exceed quorum
        if (proposal.isBoolean && (proposal.votes[1] <= proposal.votes[0] || proposal.votes[1] < proposal.quorumVotes)) {
            return ProposalState.Defeated;
        }

        // The proposal is multiple choice and none of the choices exceeded quorum
        if (!proposal.isBoolean) {
            bool multipleChoiceDefeated = true;
            for (uint256 i = 0; i < proposal.votes.length; ++i) {
                if (proposal.votes[i] >= proposal.quorumVotes) {
                    multipleChoiceDefeated = false;
                }
            }
            if (multipleChoiceDefeated) {
                return ProposalState.Defeated;
            }
        }

        // We are still in the execution delay window
        if (block.timestamp < proposal.startTime + proposal.votingPeriod + proposal.executionDelay) {
            return ProposalState.PendingExecution;
        }

        // We have not yet exceeded the expiration period
        if (block.timestamp < proposal.startTime + proposal.votingPeriod + proposal.executionDelay + EXPIRATION_PERIOD) {
            return ProposalState.ReadyForExecution;
        }

        // None of the previous conditions were met therefore the proposal has expired
        return ProposalState.Expired;
    }

    /// @param _proposalId the index of the proposal we wish to view the receipt for
    /// @param _voter the user we wish to view the receipt for
    /// @return Receipt A copy of the voters selection for the provided proposal
    function getReceipt(uint256 _proposalId, address _voter) public view returns (Receipt memory) {
        return receipts[_proposalId][_voter];
    }

    function constructProposalExecutionContexts(string[] calldata _labels, 
                                               address[] calldata _targets, 
                                               uint256[] calldata _values, 
                                               bytes[] calldata _data) 
                                               public pure returns (ProposalExecutionContextList memory) {
        require(_labels.length == _targets.length && _targets.length == _values.length && _values.length == _data.length, "!length");
        uint256 length = _labels.length;
        ProposalExecutionContextList memory list;
        list.length = length;
        list.contexts = new ProposalExecutionContext[](length);
            for (uint256 i = 0; i < length; ++i) {
                ProposalExecutionContext memory newProposalExecutionContext = ProposalExecutionContext({
                    label: _labels[i],
                    target: _targets[i],
                    value: _values[i],
                    data: _data[i]
                });

                list.contexts[i] = newProposalExecutionContext;
            }
        return list;
    }

    function constructProposalMetadata(string calldata _title, 
                                       string calldata _metadata, 
                                       uint256 _votingPeriod, 
                                       bool _isBoolean) 
                                       public pure returns (Proposal memory) {
        Proposal memory metaData;
        metaData.title = _title;
        metaData.metadata = _metadata;
        metaData.votingPeriod = _votingPeriod;
        metaData.isBoolean = _isBoolean;
        return metaData;
    }

    /// @notice Allows any user with sufficient priviledges to propose a new vote
    /// @param _metaData Metadata struct generated via constructProposalMetadata
    /// @param _executionContexts Execution struct generated via constructExecutionContexts
    function propose(
        Proposal memory _metaData,
        ProposalExecutionContextList memory _executionContexts
    ) public  {
        require(_executionContexts.length == _executionContexts.contexts.length,
            "Governance::propose: Malformed execution contexts list"
        );

        require(
            _metaData.votingPeriod >= minimumVotingPeriod,
            "Governance::propose: voting period too short"
        );

        require(
            _metaData.votingPeriod <= VOTING_PERIOD_MAXIMUM,
            "Governance::propose: voting period too long"
        );

        uint256 lastProposalId = lastProposalByAddress[msg.sender];

        // Prevent the same person from having concurrent proposals
        if (lastProposalId > 0) {
            ProposalState proposalState = state(lastProposalId);
            require(
                proposalState == ProposalState.Executed ||
                proposalState == ProposalState.Defeated ||
                proposalState == ProposalState.Expired,
                "Governance::propose: proposer already has a proposal in progress"
            );
        }

        uint256 votes = sAXIAL.balanceOf(msg.sender);

        // user needs to have enough voting power to be allowed to propose
        require(
            votes > proposalThreshold,
            "Governance::propose: proposer votes below proposal threshold"
        );

        // Allocate voting options
        uint256[] memory isMultipleChoice;
        if (!_metaData.isBoolean) {
            isMultipleChoice = new uint256[](_executionContexts.length);
        } else {
            isMultipleChoice = new uint256[](2); // 0: No, 1: Yes
        }

        Proposal storage newProposal = proposals[proposalCount];
        // newProposal.votes = new uint256[](0);

        // if (!_metaData.isBoolean) {
        //     for (uint256 i = 0; i < _executionContexts.length; ++i) {
        //         newProposal.votes.push(0); // A, B, C ...
        //     }
        // } else {
        //     newProposal.votes.push(0); // No
        //     newProposal.votes.push(0); // Yes
        // }

        newProposal.title = _metaData.title;
        newProposal.metadata = _metaData.metadata;
        newProposal.proposer = msg.sender;
        newProposal.executor = address(0);
        newProposal.startTime = block.timestamp;
        newProposal.votingPeriod = _metaData.votingPeriod;
        newProposal.quorumVotes = quorumVotes;
        newProposal.executionDelay = executionDelay;
        newProposal.votes = isMultipleChoice;
        newProposal.isBoolean = _metaData.isBoolean;
        for (uint256 i = 0; i < _executionContexts.length; ++i) {
            newProposal.executionContexts.contexts.push(_executionContexts.contexts[i]);
        }
        newProposal.executionContexts.length = _executionContexts.length;


        //Save new proposal to state
        //proposals[proposalCount] = newProposal;
        lastProposalByAddress[msg.sender] = proposalCount;

        ++proposalCount;

        emit ProposalCreated(proposalCount, newProposal.proposer, newProposal.title);
    }

    /// @notice Vote for selected option
    /// @param _proposalId the index of the proposal the user wishes to vote for or against
    /// @param _support index of the option the user wishes to cast their vote for
    /// @dev If the proposal is binary, 0 means No and 1 means Yes
    function vote(uint256 _proposalId, uint256 _support) public nonReentrant {
        require(
            state(_proposalId) == ProposalState.Active,
            "Governance::vote: voting is closed"
        );

        // directly talk to state memory
        Proposal storage proposal = proposals[_proposalId];
        Receipt storage receipt = receipts[_proposalId][msg.sender];

        uint256 votes = sAXIAL.balanceOf(msg.sender);

        // Remove any previous votes if the user cast them already
        if (receipt.hasVoted) {
            proposal.votes[receipt.support] -= receipt.votes;
        }

        // Increment votes for option user has now selected
        proposal.votes[_support] += votes;

        // Update users receipt
        receipt.hasVoted = true;
        receipt.support = _support;
        receipt.votes = votes;

        emit NewVote(_proposalId, msg.sender, _support, votes);
    }

    /// @notice Allow any user to execute the proposal if it is in the execution stage
    /// @param _proposalId the index of the proposal we wish to execute
    /// @return bytes array the executed function/s returned
    function execute(uint256 _proposalId) public payable nonReentrant returns (bytes[] memory) {
        require(
            state(_proposalId) == ProposalState.ReadyForExecution,
            "Governance::execute: cannot be executed"
        );

        Proposal storage proposal = proposals[_proposalId];

        ProposalExecutionContextList storage proposalExecution = proposal.executionContexts;

        bytes[] memory returnDatas;

        // If yes/no options were given, execute all
        if (proposal.isBoolean) {
            returnDatas = new bytes[](proposalExecution.length);
            for (uint256 i = 0; i < proposalExecution.length; ++i) {
                (bool success, bytes memory returnData) = proposalExecution.contexts[i].target.call{
                                                   value: proposalExecution.contexts[i].value}(
                                                          proposalExecution.contexts[i].data);
                require(
                    success,
                    "Governance::execute: transaction execution reverted."
                );
                returnDatas[i] = returnData;
            }
        } else {
            // If multiple choice, execute the option with the most votes
            returnDatas = new bytes[](1);
            uint256 contextToExecute = 0;
            uint256 maxVotes = proposal.quorumVotes;
            for (uint256 i = 0; i < proposal.votes.length; ++i) {
                if (proposal.votes[i] > maxVotes) {
                    maxVotes = proposal.votes[i];
                    contextToExecute = i;
                }
            }
            (bool success, bytes memory returnData) = proposalExecution.contexts[contextToExecute].target.call{
                                               value: proposalExecution.contexts[contextToExecute].value}(
                                                      proposalExecution.contexts[contextToExecute].data);
            require(
                success,
                "Governance::execute: transaction execution reverted."
            );
            returnDatas[0] = returnData;
        }

        proposal.executor = msg.sender;

        emit ProposalExecuted(_proposalId, proposal.executor);

        return returnDatas;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_sAXIAL","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newExecutionDelay","type":"uint256"}],"name":"ExecutionDelayChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMinimumVotingPeriod","type":"uint256"}],"name":"MinimumVotingPeriodChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"support","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"NewVote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"string","name":"title","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"executor","type":"address"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"ProposalThresholdChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newQuorumVotes","type":"uint256"}],"name":"QuorumVotesChanges","type":"event"},{"inputs":[],"name":"EXECUTION_DELAY_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTION_DELAY_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXPIRATION_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSAL_THRESHOLD_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSAL_THRESHOLD_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUORUM_VOTES_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUORUM_VOTES_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_PERIOD_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_PERIOD_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"_labels","type":"string[]"},{"internalType":"address[]","name":"_targets","type":"address[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"},{"internalType":"bytes[]","name":"_data","type":"bytes[]"}],"name":"constructProposalExecutionContexts","outputs":[{"components":[{"internalType":"uint256","name":"length","type":"uint256"},{"components":[{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Governance.ProposalExecutionContext[]","name":"contexts","type":"tuple[]"}],"internalType":"struct Governance.ProposalExecutionContextList","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"_title","type":"string"},{"internalType":"string","name":"_metadata","type":"string"},{"internalType":"uint256","name":"_votingPeriod","type":"uint256"},{"internalType":"bool","name":"_isBoolean","type":"bool"}],"name":"constructProposalMetadata","outputs":[{"components":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"metadata","type":"string"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"votingPeriod","type":"uint256"},{"internalType":"uint256","name":"quorumVotes","type":"uint256"},{"internalType":"uint256","name":"executionDelay","type":"uint256"},{"internalType":"uint256[]","name":"votes","type":"uint256[]"},{"internalType":"bool","name":"isBoolean","type":"bool"},{"components":[{"internalType":"uint256","name":"length","type":"uint256"},{"components":[{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Governance.ProposalExecutionContext[]","name":"contexts","type":"tuple[]"}],"internalType":"struct Governance.ProposalExecutionContextList","name":"executionContexts","type":"tuple"}],"internalType":"struct Governance.Proposal","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"executionDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getProposalVotes","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"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":"uint256","name":"support","type":"uint256"},{"internalType":"uint256","name":"votes","type":"uint256"}],"internalType":"struct Governance.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastProposalByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumVotingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","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":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"metadata","type":"string"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"votingPeriod","type":"uint256"},{"internalType":"uint256","name":"quorumVotes","type":"uint256"},{"internalType":"uint256","name":"executionDelay","type":"uint256"},{"internalType":"bool","name":"isBoolean","type":"bool"},{"components":[{"internalType":"uint256","name":"length","type":"uint256"},{"components":[{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Governance.ProposalExecutionContext[]","name":"contexts","type":"tuple[]"}],"internalType":"struct Governance.ProposalExecutionContextList","name":"executionContexts","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"metadata","type":"string"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"votingPeriod","type":"uint256"},{"internalType":"uint256","name":"quorumVotes","type":"uint256"},{"internalType":"uint256","name":"executionDelay","type":"uint256"},{"internalType":"uint256[]","name":"votes","type":"uint256[]"},{"internalType":"bool","name":"isBoolean","type":"bool"},{"components":[{"internalType":"uint256","name":"length","type":"uint256"},{"components":[{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Governance.ProposalExecutionContext[]","name":"contexts","type":"tuple[]"}],"internalType":"struct Governance.ProposalExecutionContextList","name":"executionContexts","type":"tuple"}],"internalType":"struct Governance.Proposal","name":"_metaData","type":"tuple"},{"components":[{"internalType":"uint256","name":"length","type":"uint256"},{"components":[{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Governance.ProposalExecutionContext[]","name":"contexts","type":"tuple[]"}],"internalType":"struct Governance.ProposalExecutionContextList","name":"_executionContexts","type":"tuple"}],"name":"propose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"receipts","outputs":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"uint256","name":"support","type":"uint256"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sAXIAL","outputs":[{"internalType":"contract IsAxial","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"setExecutionDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"setMinimumVotingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_votes","type":"uint256"}],"name":"setProposalThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_votes","type":"uint256"}],"name":"setQuorumVotes","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_support","type":"uint256"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526203f480600255620151806003556a084595161401484a000000600455692a5a058fc295ed0000006005553480156200003c57600080fd5b50604051620058b6380380620058b683398181016040528101906200006291906200020a565b60016000819055506200008a6200007e620000d260201b60201c565b620000da60201b60201c565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200023c565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001d282620001a5565b9050919050565b620001e481620001c5565b8114620001f057600080fd5b50565b6000815190506200020481620001d9565b92915050565b600060208284031215620002235762000222620001a0565b5b60006200023384828501620001f3565b91505092915050565b61566a806200024c6000396000f3fe6080604052600436106101ee5760003560e01c806387ce23f51161010d578063ca75960b116100a0578063ea014f481161006f578063ea014f4814610724578063ece40cc11461074f578063f2fde38b14610778578063fdfd7d44146107a1578063fe0d94c1146107cc576101ee565b8063ca75960b14610668578063da35c66414610693578063e23a9a52146106be578063e4917d9f146106fb576101ee565b80638e19855e116100dc5780638e19855e146105be578063b1c360ed146105e9578063b384abef14610614578063b58131b01461063d576101ee565b806387ce23f5146105005780638ac56a531461053d5780638b257989146105685780638da5cb5b14610593576101ee565b806347c66140116101855780636dedc06e116101545780636dedc06e1461046a578063715018a6146104955780637ba456af146104ac5780637cc7b87a146104d7576101ee565b806347c661401461039a5780635a1daf73146103d7578063645c71511461040257806368c671431461042d576101ee565b806334e5e95a116101c157806334e5e95a146102b857806338249a49146102f55780633e4f49e61461031e5780634178b2491461035b576101ee565b8063013cf08b146101f357806302ec8f9e1461023957806324bc1a64146102625780632e54929c1461028d575b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190613195565b6107fc565b6040516102309a999897969594939291906134ec565b60405180910390f35b34801561024557600080fd5b50610260600480360381019061025b9190613195565b610ba4565b005b34801561026e57600080fd5b50610277610cfe565b604051610284919061359d565b60405180910390f35b34801561029957600080fd5b506102a2610d04565b6040516102af919061359d565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613649565b610d0b565b6040516102ec91906138ef565b60405180910390f35b34801561030157600080fd5b5061031c60048036038101906103179190613195565b610dde565b005b34801561032a57600080fd5b5061034560048036038101906103409190613195565b610f27565b6040516103529190613988565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d91906139cf565b6115e7565b60405161039193929190613a0f565b60405180910390f35b3480156103a657600080fd5b506103c160048036038101906103bc9190613195565b61162b565b6040516103ce9190613ab5565b60405180910390f35b3480156103e357600080fd5b506103ec611699565b6040516103f9919061359d565b60405180910390f35b34801561040e57600080fd5b506104176116a0565b604051610424919061359d565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190613ad7565b6116af565b604051610461919061359d565b60405180910390f35b34801561047657600080fd5b5061047f6116c7565b60405161048c919061359d565b60405180910390f35b3480156104a157600080fd5b506104aa6116ce565b005b3480156104b857600080fd5b506104c1611756565b6040516104ce919061359d565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f9919061411b565b611766565b005b34801561050c57600080fd5b50610527600480360381019061052291906142eb565b611e19565b60405161053491906143d4565b60405180910390f35b34801561054957600080fd5b5061055261209c565b60405161055f919061359d565b60405180910390f35b34801561057457600080fd5b5061057d6120ab565b60405161058a919061359d565b60405180910390f35b34801561059f57600080fd5b506105a86120b1565b6040516105b591906143f6565b60405180910390f35b3480156105ca57600080fd5b506105d36120db565b6040516105e0919061359d565b60405180910390f35b3480156105f557600080fd5b506105fe6120e9565b60405161060b919061359d565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190614411565b6120ef565b005b34801561064957600080fd5b506106526123cf565b60405161065f919061359d565b60405180910390f35b34801561067457600080fd5b5061067d6123d5565b60405161068a919061359d565b60405180910390f35b34801561069f57600080fd5b506106a86123dc565b6040516106b5919061359d565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e091906139cf565b6123e2565b6040516106f29190614493565b60405180910390f35b34801561070757600080fd5b50610722600480360381019061071d9190613195565b61247c565b005b34801561073057600080fd5b506107396125c3565b604051610746919061359d565b60405180910390f35b34801561075b57600080fd5b5061077660048036038101906107719190613195565b6125c8565b005b34801561078457600080fd5b5061079f600480360381019061079a9190613ad7565b612720565b005b3480156107ad57600080fd5b506107b6612818565b6040516107c3919061450d565b60405180910390f35b6107e660048036038101906107e19190613195565b61283e565b6040516107f391906145ea565b60405180910390f35b600760205280600052604060002060009150905080600001805461081f9061463b565b80601f016020809104026020016040519081016040528092919081815260200182805461084b9061463b565b80156108985780601f1061086d57610100808354040283529160200191610898565b820191906000526020600020905b81548152906001019060200180831161087b57829003601f168201915b5050505050908060010180546108ad9061463b565b80601f01602080910402602001604051908101604052809291908181526020018280546108d99061463b565b80156109265780601f106108fb57610100808354040283529160200191610926565b820191906000526020600020905b81548152906001019060200180831161090957829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154908060050154908060060154908060070154908060090160009054906101000a900460ff169080600a016040518060400160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610b975783829060005260206000209060040201604051806080016040529081600082018054610a149061463b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a409061463b565b8015610a8d5780601f10610a6257610100808354040283529160200191610a8d565b820191906000526020600020905b815481529060010190602001808311610a7057829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382018054610b069061463b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b329061463b565b8015610b7f5780601f10610b5457610100808354040283529160200191610b7f565b820191906000526020600020905b815481529060010190602001808311610b6257829003601f168201915b505050505081525050815260200190600101906109e1565b505050508152505090508a565b610bac612dfe565b73ffffffffffffffffffffffffffffffffffffffff16610bca6120b1565b73ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c17906146b9565b60405180910390fd5b6a0304eae57f9f3025400000811015610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c659061474b565b60405180910390fd5b6b012debc1a5da2ece8d000000811115610cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb4906147dd565b60405180910390fd5b806004819055507f4d82feec215c8e1f4d904b7268dd6499d866a96685c31f1e394e6663715f76e181604051610cf3919061359d565b60405180910390a150565b60045481565b62278d0081565b610d13612ecc565b610d1b612ecc565b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050816000018190525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508160200181905250838160a00181815250508281610120019015159081151581525050809150509695505050505050565b610de6612dfe565b73ffffffffffffffffffffffffffffffffffffffff16610e046120b1565b73ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e51906146b9565b60405180910390fd5b62015180811015610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e979061486f565b60405180910390fd5b62278d00811115610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd90614901565b60405180910390fd5b806002819055507ff4f36c6d71e6dce23fde1248bfb40024041297ac1665de2840339f8a6b32e54581604051610f1c919061359d565b60405180910390a150565b60006006548210610f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6490614993565b60405180910390fd5b60006007600084815260200190815260200160002060405180610160016040529081600082018054610f9e9061463b565b80601f0160208091040260200160405190810160405280929190818152602001828054610fca9061463b565b80156110175780601f10610fec57610100808354040283529160200191611017565b820191906000526020600020905b815481529060010190602001808311610ffa57829003601f168201915b505050505081526020016001820180546110309061463b565b80601f016020809104026020016040519081016040528092919081815260200182805461105c9061463b565b80156110a95780601f1061107e576101008083540402835291602001916110a9565b820191906000526020600020905b81548152906001019060200180831161108c57829003601f168201915b505050505081526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882018054806020026020016040519081016040528092919081815260200182805480156111d557602002820191906000526020600020905b8154815260200190600101908083116111c1575b505050505081526020016009820160009054906101000a900460ff16151515158152602001600a82016040518060400160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156113ee578382906000526020600020906004020160405180608001604052908160008201805461126b9061463b565b80601f01602080910402602001604051908101604052809291908181526020018280546112979061463b565b80156112e45780601f106112b9576101008083540402835291602001916112e4565b820191906000526020600020905b8154815290600101906020018083116112c757829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201805461135d9061463b565b80601f01602080910402602001604051908101604052809291908181526020018280546113899061463b565b80156113d65780601f106113ab576101008083540402835291602001916113d6565b820191906000526020600020905b8154815290600101906020018083116113b957829003601f168201915b50505050508152505081526020019060010190611238565b50505050815250508152505090508060a00151816080015161141091906149e2565b42116114205760009150506115e2565b600073ffffffffffffffffffffffffffffffffffffffff16816060015173ffffffffffffffffffffffffffffffffffffffff16146114625760049150506115e2565b80610120015180156114e2575080610100015160008151811061148857611487614a38565b5b60200260200101518161010001516001815181106114a9576114a8614a38565b5b60200260200101511115806114e157508060c001518161010001516001815181106114d7576114d6614a38565b5b6020026020010151105b5b156114f15760019150506115e2565b8061012001516115665760006001905060005b82610100015151811015611552578260c00151836101000151828151811061152f5761152e614a38565b5b60200260200101511061154157600091505b8061154b90614a67565b9050611504565b508015611564576001925050506115e2565b505b8060e001518160a00151826080015161157f91906149e2565b61158991906149e2565b42101561159a5760029150506115e2565b621275008160e001518260a0015183608001516115b791906149e2565b6115c191906149e2565b6115cb91906149e2565b4210156115dc5760039150506115e2565b60059150505b919050565b6008602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900460ff16908060010154908060020154905083565b60606007600083815260200190815260200160002060080180548060200260200160405190810160405280929190818152602001828054801561168d57602002820191906000526020600020905b815481526020019060010190808311611679575b50505050509050919050565b62278d0081565b6a0304eae57f9f302540000081565b60096020528060005260406000206000915090505481565b6201518081565b6116d6612dfe565b73ffffffffffffffffffffffffffffffffffffffff166116f46120b1565b73ffffffffffffffffffffffffffffffffffffffff161461174a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611741906146b9565b60405180910390fd5b6117546000612e06565b565b6b012debc1a5da2ece8d00000081565b8060200151518160000151146117b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a890614b22565b60405180910390fd5b6002548260a0015110156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190614bb4565b60405180910390fd5b62278d008260a001511115611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90614c46565b60405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561196457600061189c82610f27565b9050600460058111156118b2576118b1613911565b5b8160058111156118c5576118c4613911565b5b14806118f55750600160058111156118e0576118df613911565b5b8160058111156118f3576118f2613911565b5b145b80611923575060058081111561190e5761190d613911565b5b81600581111561192157611920613911565b5b145b611962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195990614cd8565b60405180910390fd5b505b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016119c191906143f6565b60206040518083038186803b1580156119d957600080fd5b505afa1580156119ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a119190614d0d565b90506005548111611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90614dac565b60405180910390fd5b6060846101200151611ab757836000015167ffffffffffffffff811115611a8157611a80613b09565b5b604051908082528060200260200182016040528015611aaf5781602001602082028036833780820191505090505b509050611b04565b600267ffffffffffffffff811115611ad257611ad1613b09565b5b604051908082528060200260200182016040528015611b005781602001602082028036833780820191505090505b5090505b600060076000600654815260200190815260200160002090508560000151816000019080519060200190611b39929190612f5a565b508560200151816001019080519060200190611b56929190612f5a565b50338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504281600401819055508560a0015181600501819055506004548160060181905550600354816007018190555081816008019080519060200190611c22929190612fe0565b508561012001518160090160006101000a81548160ff02191690831515021790555060005b8560000151811015611d405781600a0160010186602001518281518110611c7157611c70614a38565b5b602002602001015190806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019080519060200190611cbe929190612f5a565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611d2c92919061302d565b50505080611d3990614a67565b9050611c47565b50846000015181600a0160000181905550600654600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660008154611da690614a67565b919050819055507f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd636006548260020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600001604051611e0993929190614e61565b60405180910390a1505050505050565b611e216130b3565b8686905089899050148015611e3b57508484905087879050145b8015611e4c57508282905085859050145b611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290614eeb565b60405180910390fd5b6000898990509050611e9b6130b3565b818160000181815250508167ffffffffffffffff811115611ebf57611ebe613b09565b5b604051908082528060200260200182016040528015611ef857816020015b611ee56130cd565b815260200190600190039081611edd5790505b50816020018190525060005b8281101561208a57600060405180608001604052808e8e85818110611f2c57611f2b614a38565b5b9050602002810190611f3e9190614f1a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018c8c85818110611f9957611f98614a38565b5b9050602002016020810190611fae9190613ad7565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a8a85818110611fdc57611fdb614a38565b5b905060200201358152602001888885818110611ffb57611ffa614a38565b5b905060200281019061200d9190614f7d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152509050808360200151838151811061206d5761206c614a38565b5b6020026020010181905250508061208390614a67565b9050611f04565b50809250505098975050505050505050565b6a94e47b8d6817153400000081565b60035481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b69152d02c7e14af680000081565b60025481565b60026000541415612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c9061502c565b60405180910390fd5b60026000819055506000600581111561215157612150613911565b5b61215a83610f27565b600581111561216c5761216b613911565b5b146121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a3906150be565b60405180910390fd5b600060076000848152602001908152602001600020905060006008600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161227491906143f6565b60206040518083038186803b15801561228c57600080fd5b505afa1580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c49190614d0d565b90508160000160009054906101000a900460ff161561231d578160020154836008018360010154815481106122fc576122fb614a38565b5b90600052602060002001600082825461231591906150de565b925050819055505b8083600801858154811061233457612333614a38565b5b90600052602060002001600082825461234d91906149e2565b9250508190555060018260000160006101000a81548160ff0219169083151502179055508382600101819055508082600201819055507f30fc966e088e5d91399acda87c233b87ed99de5ab4e137c1fbc19a3bb9a87bff853386846040516123b89493929190615112565b60405180910390a150505060016000819055505050565b60055481565b6212750081565b60065481565b6123ea61310b565b6008600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff1615151515815260200160018201548152602001600282015481525050905092915050565b612484612dfe565b73ffffffffffffffffffffffffffffffffffffffff166124a26120b1565b73ffffffffffffffffffffffffffffffffffffffff16146124f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ef906146b9565b60405180910390fd5b601e81101561253c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612533906151c9565b60405180910390fd5b62278d00811115612582576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125799061525b565b60405180910390fd5b806003819055507f193d917ecb8a5c0270b102b28be14cc9ee25763c29c0b87e980a0bc65d485e75816040516125b8919061359d565b60405180910390a150565b601e81565b6125d0612dfe565b73ffffffffffffffffffffffffffffffffffffffff166125ee6120b1565b73ffffffffffffffffffffffffffffffffffffffff1614612644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263b906146b9565b60405180910390fd5b69152d02c7e14af6800000811015612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906152ed565b60405180910390fd5b6a94e47b8d681715340000008111156126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d69061537f565b60405180910390fd5b806005819055507f0553c1e1d490599cc62884d38bddf3b538bf26581e3d5a830cb2aa0a54fc563381604051612715919061359d565b60405180910390a150565b612728612dfe565b73ffffffffffffffffffffffffffffffffffffffff166127466120b1565b73ffffffffffffffffffffffffffffffffffffffff161461279c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612793906146b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561280c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280390615411565b60405180910390fd5b61281581612e06565b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060026000541415612886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287d9061502c565b60405180910390fd5b6002600081905550600360058111156128a2576128a1613911565b5b6128ab83610f27565b60058111156128bd576128bc613911565b5b146128fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f4906154a3565b60405180910390fd5b6000600760008481526020019081526020016000209050600081600a01905060608260090160009054906101000a900460ff1615612b1457816000015467ffffffffffffffff81111561295357612952613b09565b5b60405190808252806020026020018201604052801561298657816020015b60608152602001906001900390816129715790505b50905060005b8260000154811015612b0e576000808460010183815481106129b1576129b0614a38565b5b906000526020600020906004020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16856001018481548110612a0f57612a0e614a38565b5b906000526020600020906004020160020154866001018581548110612a3757612a36614a38565b5b9060005260206000209060040201600301604051612a559190615562565b60006040518083038185875af1925050503d8060008114612a92576040519150601f19603f3d011682016040523d82523d6000602084013e612a97565b606091505b509150915081612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad3906155eb565b60405180910390fd5b80848481518110612af057612aef614a38565b5b6020026020010181905250505080612b0790614a67565b905061298c565b50612d4b565b600167ffffffffffffffff811115612b2f57612b2e613b09565b5b604051908082528060200260200182016040528015612b6257816020015b6060815260200190600190039081612b4d5790505b5090506000808460060154905060005b8560080180549050811015612be15781866008018281548110612b9857612b97614a38565b5b90600052602060002001541115612bd057856008018181548110612bbf57612bbe614a38565b5b906000526020600020015491508092505b80612bda90614a67565b9050612b72565b50600080856001018481548110612bfb57612bfa614a38565b5b906000526020600020906004020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16866001018581548110612c5957612c58614a38565b5b906000526020600020906004020160020154876001018681548110612c8157612c80614a38565b5b9060005260206000209060040201600301604051612c9f9190615562565b60006040518083038185875af1925050503d8060008114612cdc576040519150601f19603f3d011682016040523d82523d6000602084013e612ce1565b606091505b509150915081612d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1d906155eb565b60405180910390fd5b8085600081518110612d3b57612d3a614a38565b5b6020026020010181905250505050505b338360030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9c85b616f29fca57a17eafe71cf9ff82ffef41766e2cf01ea7f8f7878dd3ec24858460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051612de392919061560b565b60405180910390a18093505050506001600081905550919050565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6040518061016001604052806060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160608152602001600015158152602001612f546130b3565b81525090565b828054612f669061463b565b90600052602060002090601f016020900481019282612f885760008555612fcf565b82601f10612fa157805160ff1916838001178555612fcf565b82800160010185558215612fcf579182015b82811115612fce578251825591602001919060010190612fb3565b5b509050612fdc919061312e565b5090565b82805482825590600052602060002090810192821561301c579160200282015b8281111561301b578251825591602001919060010190613000565b5b509050613029919061312e565b5090565b8280546130399061463b565b90600052602060002090601f01602090048101928261305b57600085556130a2565b82601f1061307457805160ff19168380011785556130a2565b828001600101855582156130a2579182015b828111156130a1578251825591602001919060010190613086565b5b5090506130af919061312e565b5090565b604051806040016040528060008152602001606081525090565b604051806080016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604051806060016040528060001515815260200160008152602001600081525090565b5b8082111561314757600081600090555060010161312f565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6131728161315f565b811461317d57600080fd5b50565b60008135905061318f81613169565b92915050565b6000602082840312156131ab576131aa613155565b5b60006131b984828501613180565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131fc5780820151818401526020810190506131e1565b8381111561320b576000848401525b50505050565b6000601f19601f8301169050919050565b600061322d826131c2565b61323781856131cd565b93506132478185602086016131de565b61325081613211565b840191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132868261325b565b9050919050565b6132968161327b565b82525050565b6132a58161315f565b82525050565b60008115159050919050565b6132c0816132ab565b82525050565b6132cf8161315f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061331d826131c2565b6133278185613301565b93506133378185602086016131de565b61334081613211565b840191505092915050565b6133548161327b565b82525050565b600081519050919050565b600082825260208201905092915050565b60006133818261335a565b61338b8185613365565b935061339b8185602086016131de565b6133a481613211565b840191505092915050565b600060808301600083015184820360008601526133cc8282613312565b91505060208301516133e1602086018261334b565b5060408301516133f460408601826132c6565b506060830151848203606086015261340c8282613376565b9150508091505092915050565b600061342583836133af565b905092915050565b6000602082019050919050565b6000613445826132d5565b61344f81856132e0565b935083602082028501613461856132f1565b8060005b8581101561349d578484038952815161347e8582613419565b94506134898361342d565b925060208a01995050600181019050613465565b50829750879550505050505092915050565b60006040830160008301516134c760008601826132c6565b50602083015184820360208601526134df828261343a565b9150508091505092915050565b6000610140820190508181036000830152613507818d613222565b9050818103602083015261351b818c613222565b905061352a604083018b61328d565b613537606083018a61328d565b613544608083018961329c565b61355160a083018861329c565b61355e60c083018761329c565b61356b60e083018661329c565b6135796101008301856132b7565b81810361012083015261358c81846134af565b90509b9a5050505050505050505050565b60006020820190506135b2600083018461329c565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126135dd576135dc6135b8565b5b8235905067ffffffffffffffff8111156135fa576135f96135bd565b5b602083019150836001820283011115613616576136156135c2565b5b9250929050565b613626816132ab565b811461363157600080fd5b50565b6000813590506136438161361d565b92915050565b6000806000806000806080878903121561366657613665613155565b5b600087013567ffffffffffffffff8111156136845761368361315a565b5b61369089828a016135c7565b9650965050602087013567ffffffffffffffff8111156136b3576136b261315a565b5b6136bf89828a016135c7565b945094505060406136d289828a01613180565b92505060606136e389828a01613634565b9150509295509295509295565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061372883836132c6565b60208301905092915050565b6000602082019050919050565b600061374c826136f0565b61375681856136fb565b93506137618361370c565b8060005b83811015613792578151613779888261371c565b975061378483613734565b925050600181019050613765565b5085935050505092915050565b6137a8816132ab565b82525050565b60006040830160008301516137c660008601826132c6565b50602083015184820360208601526137de828261343a565b9150508091505092915050565b60006101608301600083015184820360008601526138098282613312565b915050602083015184820360208601526138238282613312565b9150506040830151613838604086018261334b565b50606083015161384b606086018261334b565b50608083015161385e60808601826132c6565b5060a083015161387160a08601826132c6565b5060c083015161388460c08601826132c6565b5060e083015161389760e08601826132c6565b506101008301518482036101008601526138b18282613741565b9150506101208301516138c861012086018261379f565b506101408301518482036101408601526138e282826137ae565b9150508091505092915050565b6000602082019050818103600083015261390981846137eb565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6006811061395157613950613911565b5b50565b600081905061396282613940565b919050565b600061397282613954565b9050919050565b61398281613967565b82525050565b600060208201905061399d6000830184613979565b92915050565b6139ac8161327b565b81146139b757600080fd5b50565b6000813590506139c9816139a3565b92915050565b600080604083850312156139e6576139e5613155565b5b60006139f485828601613180565b9250506020613a05858286016139ba565b9150509250929050565b6000606082019050613a2460008301866132b7565b613a31602083018561329c565b613a3e604083018461329c565b949350505050565b600082825260208201905092915050565b6000613a62826136f0565b613a6c8185613a46565b9350613a778361370c565b8060005b83811015613aa8578151613a8f888261371c565b9750613a9a83613734565b925050600181019050613a7b565b5085935050505092915050565b60006020820190508181036000830152613acf8184613a57565b905092915050565b600060208284031215613aed57613aec613155565b5b6000613afb848285016139ba565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613b4182613211565b810181811067ffffffffffffffff82111715613b6057613b5f613b09565b5b80604052505050565b6000613b7361314b565b9050613b7f8282613b38565b919050565b600080fd5b600080fd5b600067ffffffffffffffff821115613ba957613ba8613b09565b5b613bb282613211565b9050602081019050919050565b82818337600083830152505050565b6000613be1613bdc84613b8e565b613b69565b905082815260208101848484011115613bfd57613bfc613b89565b5b613c08848285613bbf565b509392505050565b600082601f830112613c2557613c246135b8565b5b8135613c35848260208601613bce565b91505092915050565b600067ffffffffffffffff821115613c5957613c58613b09565b5b602082029050602081019050919050565b6000613c7d613c7884613c3e565b613b69565b90508083825260208201905060208402830185811115613ca057613c9f6135c2565b5b835b81811015613cc95780613cb58882613180565b845260208401935050602081019050613ca2565b5050509392505050565b600082601f830112613ce857613ce76135b8565b5b8135613cf8848260208601613c6a565b91505092915050565b600067ffffffffffffffff821115613d1c57613d1b613b09565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613d4857613d47613b09565b5b613d5182613211565b9050602081019050919050565b6000613d71613d6c84613d2d565b613b69565b905082815260208101848484011115613d8d57613d8c613b89565b5b613d98848285613bbf565b509392505050565b600082601f830112613db557613db46135b8565b5b8135613dc5848260208601613d5e565b91505092915050565b600060808284031215613de457613de3613b04565b5b613dee6080613b69565b9050600082013567ffffffffffffffff811115613e0e57613e0d613b84565b5b613e1a84828501613c10565b6000830152506020613e2e848285016139ba565b6020830152506040613e4284828501613180565b604083015250606082013567ffffffffffffffff811115613e6657613e65613b84565b5b613e7284828501613da0565b60608301525092915050565b6000613e91613e8c84613d01565b613b69565b90508083825260208201905060208402830185811115613eb457613eb36135c2565b5b835b81811015613efb57803567ffffffffffffffff811115613ed957613ed86135b8565b5b808601613ee68982613dce565b85526020850194505050602081019050613eb6565b5050509392505050565b600082601f830112613f1a57613f196135b8565b5b8135613f2a848260208601613e7e565b91505092915050565b600060408284031215613f4957613f48613b04565b5b613f536040613b69565b90506000613f6384828501613180565b600083015250602082013567ffffffffffffffff811115613f8757613f86613b84565b5b613f9384828501613f05565b60208301525092915050565b60006101608284031215613fb657613fb5613b04565b5b613fc1610160613b69565b9050600082013567ffffffffffffffff811115613fe157613fe0613b84565b5b613fed84828501613c10565b600083015250602082013567ffffffffffffffff81111561401157614010613b84565b5b61401d84828501613c10565b6020830152506040614031848285016139ba565b6040830152506060614045848285016139ba565b606083015250608061405984828501613180565b60808301525060a061406d84828501613180565b60a08301525060c061408184828501613180565b60c08301525060e061409584828501613180565b60e08301525061010082013567ffffffffffffffff8111156140ba576140b9613b84565b5b6140c684828501613cd3565b610100830152506101206140dc84828501613634565b6101208301525061014082013567ffffffffffffffff81111561410257614101613b84565b5b61410e84828501613f33565b6101408301525092915050565b6000806040838503121561413257614131613155565b5b600083013567ffffffffffffffff8111156141505761414f61315a565b5b61415c85828601613f9f565b925050602083013567ffffffffffffffff81111561417d5761417c61315a565b5b61418985828601613f33565b9150509250929050565b60008083601f8401126141a9576141a86135b8565b5b8235905067ffffffffffffffff8111156141c6576141c56135bd565b5b6020830191508360208202830111156141e2576141e16135c2565b5b9250929050565b60008083601f8401126141ff576141fe6135b8565b5b8235905067ffffffffffffffff81111561421c5761421b6135bd565b5b602083019150836020820283011115614238576142376135c2565b5b9250929050565b60008083601f840112614255576142546135b8565b5b8235905067ffffffffffffffff811115614272576142716135bd565b5b60208301915083602082028301111561428e5761428d6135c2565b5b9250929050565b60008083601f8401126142ab576142aa6135b8565b5b8235905067ffffffffffffffff8111156142c8576142c76135bd565b5b6020830191508360208202830111156142e4576142e36135c2565b5b9250929050565b6000806000806000806000806080898b03121561430b5761430a613155565b5b600089013567ffffffffffffffff8111156143295761432861315a565b5b6143358b828c01614193565b9850985050602089013567ffffffffffffffff8111156143585761435761315a565b5b6143648b828c016141e9565b9650965050604089013567ffffffffffffffff8111156143875761438661315a565b5b6143938b828c0161423f565b9450945050606089013567ffffffffffffffff8111156143b6576143b561315a565b5b6143c28b828c01614295565b92509250509295985092959890939650565b600060208201905081810360008301526143ee81846134af565b905092915050565b600060208201905061440b600083018461328d565b92915050565b6000806040838503121561442857614427613155565b5b600061443685828601613180565b925050602061444785828601613180565b9150509250929050565b606082016000820151614467600085018261379f565b50602082015161447a60208501826132c6565b50604082015161448d60408501826132c6565b50505050565b60006060820190506144a86000830184614451565b92915050565b6000819050919050565b60006144d36144ce6144c98461325b565b6144ae565b61325b565b9050919050565b60006144e5826144b8565b9050919050565b60006144f7826144da565b9050919050565b614507816144ec565b82525050565b600060208201905061452260008301846144fe565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006145608383613376565b905092915050565b6000602082019050919050565b600061458082614528565b61458a8185614533565b93508360208202850161459c85614544565b8060005b858110156145d857848403895281516145b98582614554565b94506145c483614568565b925060208a019950506001810190506145a0565b50829750879550505050505092915050565b600060208201905081810360008301526146048184614575565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061465357607f821691505b602082108114156146675761466661460c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146a36020836131cd565b91506146ae8261466d565b602082019050919050565b600060208201905081810360008301526146d281614696565b9050919050565b7f476f7665726e616e63653a3a73657451756f72756d566f7465733a20544f4f5f60008201527f534d414c4c000000000000000000000000000000000000000000000000000000602082015250565b60006147356025836131cd565b9150614740826146d9565b604082019050919050565b6000602082019050818103600083015261476481614728565b9050919050565b7f476f7665726e616e63653a3a73657451756f72756d566f7465733a20544f4f5f60008201527f4c41524745000000000000000000000000000000000000000000000000000000602082015250565b60006147c76025836131cd565b91506147d28261476b565b604082019050919050565b600060208201905081810360008301526147f6816147ba565b9050919050565b7f476f7665726e616e63653a3a7365744d696e696d756d566f74696e675065726960008201527f6f643a20544f4f5f534d414c4c00000000000000000000000000000000000000602082015250565b6000614859602d836131cd565b9150614864826147fd565b604082019050919050565b600060208201905081810360008301526148888161484c565b9050919050565b7f476f7665726e616e63653a3a7365744d696e696d756d566f74696e675065726960008201527f6f643a20544f4f5f4c4152474500000000000000000000000000000000000000602082015250565b60006148eb602d836131cd565b91506148f68261488f565b604082019050919050565b6000602082019050818103600083015261491a816148de565b9050919050565b7f476f7665726e616e63653a3a73746174653a20696e76616c69642070726f706f60008201527f73616c2069640000000000000000000000000000000000000000000000000000602082015250565b600061497d6026836131cd565b915061498882614921565b604082019050919050565b600060208201905081810360008301526149ac81614970565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149ed8261315f565b91506149f88361315f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a2d57614a2c6149b3565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a728261315f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614aa557614aa46149b3565b5b600182019050919050565b7f476f7665726e616e63653a3a70726f706f73653a204d616c666f726d6564206560008201527f7865637574696f6e20636f6e7465787473206c69737400000000000000000000602082015250565b6000614b0c6036836131cd565b9150614b1782614ab0565b604082019050919050565b60006020820190508181036000830152614b3b81614aff565b9050919050565b7f476f7665726e616e63653a3a70726f706f73653a20766f74696e67207065726960008201527f6f6420746f6f2073686f72740000000000000000000000000000000000000000602082015250565b6000614b9e602c836131cd565b9150614ba982614b42565b604082019050919050565b60006020820190508181036000830152614bcd81614b91565b9050919050565b7f476f7665726e616e63653a3a70726f706f73653a20766f74696e67207065726960008201527f6f6420746f6f206c6f6e67000000000000000000000000000000000000000000602082015250565b6000614c30602b836131cd565b9150614c3b82614bd4565b604082019050919050565b60006020820190508181036000830152614c5f81614c23565b9050919050565b7f476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220616c60008201527f72656164792068617320612070726f706f73616c20696e2070726f6772657373602082015250565b6000614cc26040836131cd565b9150614ccd82614c66565b604082019050919050565b60006020820190508181036000830152614cf181614cb5565b9050919050565b600081519050614d0781613169565b92915050565b600060208284031215614d2357614d22613155565b5b6000614d3184828501614cf8565b91505092915050565b7f476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220766f60008201527f7465732062656c6f772070726f706f73616c207468726573686f6c6400000000602082015250565b6000614d96603c836131cd565b9150614da182614d3a565b604082019050919050565b60006020820190508181036000830152614dc581614d89565b9050919050565b60008190508160005260206000209050919050565b60008154614dee8161463b565b614df881866131cd565b94506001821660008114614e135760018114614e2557614e58565b60ff1983168652602086019350614e58565b614e2e85614dcc565b60005b83811015614e5057815481890152600182019150602081019050614e31565b808801955050505b50505092915050565b6000606082019050614e76600083018661329c565b614e83602083018561328d565b8181036040830152614e958184614de1565b9050949350505050565b7f216c656e67746800000000000000000000000000000000000000000000000000600082015250565b6000614ed56007836131cd565b9150614ee082614e9f565b602082019050919050565b60006020820190508181036000830152614f0481614ec8565b9050919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112614f3757614f36614f0b565b5b80840192508235915067ffffffffffffffff821115614f5957614f58614f10565b5b602083019250600182023603831315614f7557614f74614f15565b5b509250929050565b60008083356001602003843603038112614f9a57614f99614f0b565b5b80840192508235915067ffffffffffffffff821115614fbc57614fbb614f10565b5b602083019250600182023603831315614fd857614fd7614f15565b5b509250929050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000615016601f836131cd565b915061502182614fe0565b602082019050919050565b6000602082019050818103600083015261504581615009565b9050919050565b7f476f7665726e616e63653a3a766f74653a20766f74696e6720697320636c6f7360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006150a86022836131cd565b91506150b38261504c565b604082019050919050565b600060208201905081810360008301526150d78161509b565b9050919050565b60006150e98261315f565b91506150f48361315f565b925082821015615107576151066149b3565b5b828203905092915050565b6000608082019050615127600083018761329c565b615134602083018661328d565b615141604083018561329c565b61514e606083018461329c565b95945050505050565b7f476f7665726e616e63653a3a736574457865637574696f6e44656c61793a205460008201527f4f4f5f534d414c4c000000000000000000000000000000000000000000000000602082015250565b60006151b36028836131cd565b91506151be82615157565b604082019050919050565b600060208201905081810360008301526151e2816151a6565b9050919050565b7f476f7665726e616e63653a3a736574457865637574696f6e44656c61793a205460008201527f4f4f5f4c41524745000000000000000000000000000000000000000000000000602082015250565b60006152456028836131cd565b9150615250826151e9565b604082019050919050565b6000602082019050818103600083015261527481615238565b9050919050565b7f476f7665726e616e63653a3a73657450726f706f73616c5468726573686f6c6460008201527f3a20544f4f5f534d414c4c000000000000000000000000000000000000000000602082015250565b60006152d7602b836131cd565b91506152e28261527b565b604082019050919050565b60006020820190508181036000830152615306816152ca565b9050919050565b7f476f7665726e616e63653a3a73657450726f706f73616c5468726573686f6c6460008201527f3a20544f4f5f4c41524745000000000000000000000000000000000000000000602082015250565b6000615369602b836131cd565b91506153748261530d565b604082019050919050565b600060208201905081810360008301526153988161535c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006153fb6026836131cd565b91506154068261539f565b604082019050919050565b6000602082019050818103600083015261542a816153ee565b9050919050565b7f476f7665726e616e63653a3a657865637574653a2063616e6e6f74206265206560008201527f7865637574656400000000000000000000000000000000000000000000000000602082015250565b600061548d6027836131cd565b915061549882615431565b604082019050919050565b600060208201905081810360008301526154bc81615480565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546154f08161463b565b6154fa81866154c3565b94506001821660008114615515576001811461552657615559565b60ff19831686528186019350615559565b61552f856154ce565b60005b8381101561555157815481890152600182019150602081019050615532565b838801955050505b50505092915050565b600061556e82846154e3565b915081905092915050565b7f476f7665726e616e63653a3a657865637574653a207472616e73616374696f6e60008201527f20657865637574696f6e2072657665727465642e000000000000000000000000602082015250565b60006155d56034836131cd565b91506155e082615579565b604082019050919050565b60006020820190508181036000830152615604816155c8565b9050919050565b6000604082019050615620600083018561329c565b61562d602083018461328d565b939250505056fea2646970667358221220b503ad7f832adcffd0c6f76a4c3fe14d44b54b4a3e0c7828de491d961d85849e64736f6c63430008090033000000000000000000000000ed7f93c8fd3b96b53c924f601b3948175d2820d8

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

000000000000000000000000ed7f93c8fd3b96b53c924f601b3948175d2820d8

-----Decoded View---------------
Arg [0] : _sAXIAL (address): 0xed7f93c8fd3b96b53c924f601b3948175d2820d8

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


Deployed ByteCode Sourcemap

6922:17348:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8371:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;11684:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7731:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7415:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16457:561;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10797:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12755:2118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8423:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;10633:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7141:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7784:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8493:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7080:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5551:103;;;;;;;;;;;;;:::i;:::-;;7854:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17284:3195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15270:1179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8148:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7301:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4900:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8074:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7030:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20774:939;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8018:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7574:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8275:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15113:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11251:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7348:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12086:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5809:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8620:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21944:2323;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8371:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11684:394::-;5131:12;:10;:12::i;:::-;5120:23;;:7;:5;:7::i;:::-;:23;;;5112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7831:16:::1;11774:6;:30;;11752:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;7901:18;11902:6;:30;;11880:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;12022:6;12008:11;:20;;;;12044:26;12063:6;12044:26;;;;;;:::i;:::-;;;;;;;;11684:394:::0;:::o;7731:46::-;;;;:::o;7415:57::-;7465:7;7415:57;:::o;16457:561::-;16768:15;;:::i;:::-;16796:24;;:::i;:::-;16848:6;;16831:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8;:14;;:23;;;;16885:9;;16865:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8;:17;;:29;;;;16929:13;16905:8;:21;;:37;;;;;16974:10;16953:8;:18;;:31;;;;;;;;;;;17002:8;16995:15;;;16457:561;;;;;;;;:::o;10797:446::-;5131:12;:10;:12::i;:::-;5120:23;;:7;:5;:7::i;:::-;:23;;;5112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7128:6:::1;10897:8;:33;;10875:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;7189:7;11036:8;:33;;11014:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;11175:8;11153:19;:30;;;;11199:36;11226:8;11199:36;;;;;;:::i;:::-;;;;;;;;10797:446:::0;:::o;12755:2118::-;12812:13;12874;;12860:11;:27;12838:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;12966:24;12993:9;:22;13003:11;12993:22;;;;;;;;;;;12966:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13200:8;:21;;;13179:8;:18;;;:42;;;;:::i;:::-;13160:15;:61;13156:121;;13245:20;13238:27;;;;;13156:121;13397:1;13368:31;;:8;:17;;;:31;;;13364:93;;13423:22;13416:29;;;;;13364:93;13594:8;:18;;;:106;;;;;13638:8;:14;;;13653:1;13638:17;;;;;;;;:::i;:::-;;;;;;;;13617:8;:14;;;13632:1;13617:17;;;;;;;;:::i;:::-;;;;;;;;:38;;:82;;;;13679:8;:20;;;13659:8;:14;;;13674:1;13659:17;;;;;;;;:::i;:::-;;;;;;;;:40;13617:82;13594:106;13590:168;;;13724:22;13717:29;;;;;13590:168;13859:8;:18;;;13854:412;;13894:27;13924:4;13894:34;;13948:9;13943:206;13967:8;:14;;;:21;13963:1;:25;13943:206;;;14039:8;:20;;;14018:8;:14;;;14033:1;14018:17;;;;;;;;:::i;:::-;;;;;;;;:41;14014:120;;14109:5;14084:30;;14014:120;13990:3;;;;:::i;:::-;;;13943:206;;;;14167:22;14163:92;;;14217:22;14210:29;;;;;;14163:92;13879:387;13854:412;14400:8;:23;;;14376:8;:21;;;14355:8;:18;;;:42;;;;:::i;:::-;:68;;;;:::i;:::-;14337:15;:86;14333:156;;;14447:30;14440:37;;;;;14333:156;7618:7;14627:8;:23;;;14603:8;:21;;;14582:8;:18;;;:42;;;;:::i;:::-;:68;;;;:::i;:::-;:88;;;;:::i;:::-;14564:15;:106;14560:177;;;14694:31;14687:38;;;;;14560:177;14844:21;14837:28;;;12755:2118;;;;:::o;8423:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10633:138::-;10700:16;10736:9;:21;10746:10;10736:21;;;;;;;;;;;:27;;10729:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10633:138;;;:::o;7141:55::-;7189:7;7141:55;:::o;7784:63::-;7831:16;7784:63;:::o;8493:56::-;;;;;;;;;;;;;;;;;:::o;7080:54::-;7128:6;7080:54;:::o;5551:103::-;5131:12;:10;:12::i;:::-;5120:23;;:7;:5;:7::i;:::-;:23;;;5112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5616:30:::1;5643:1;5616:18;:30::i;:::-;5551:103::o:0;7854:65::-;7901:18;7854:65;:::o;17284:3195::-;17465:18;:27;;;:34;17436:18;:25;;;:63;17428:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;17642:19;;17616:9;:22;;;:45;;17594:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;7189:7;17768:9;:22;;;:47;;17746:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;17899:22;17924:21;:33;17946:10;17924:33;;;;;;;;;;;;;;;;17899:58;;18060:1;18043:14;:18;18039:401;;;18078:27;18108:21;18114:14;18108:5;:21::i;:::-;18078:51;;18187:22;18170:39;;;;;;;;:::i;:::-;;:13;:39;;;;;;;;:::i;:::-;;;:99;;;;18247:22;18230:39;;;;;;;;:::i;:::-;;:13;:39;;;;;;;;:::i;:::-;;;18170:99;:158;;;;18307:21;18290:38;;;;;;;;:::i;:::-;;:13;:38;;;;;;;;:::i;:::-;;;18170:158;18144:284;;;;;;;;;;;;:::i;:::-;;;;;;;;;18063:377;18039:401;18452:13;18468:6;;;;;;;;;;;:16;;;18485:10;18468:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18452:44;;18615:17;;18607:5;:25;18585:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;18769:33;18818:9;:19;;;18813:197;;18887:18;:25;;;18873:40;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18854:59;;18813:197;;;18979:1;18965:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18946:35;;18813:197;19022:28;19053:9;:24;19063:13;;19053:24;;;;;;;;;;;19022:55;;19490:9;:15;;;19470:11;:17;;:35;;;;;;;;;;;;:::i;:::-;;19539:9;:18;;;19516:11;:20;;:41;;;;;;;;;;;;:::i;:::-;;19591:10;19568:11;:20;;;:33;;;;;;;;;;;;;;;;;;19643:1;19612:11;:20;;;:33;;;;;;;;;;;;;;;;;;19680:15;19656:11;:21;;:39;;;;19733:9;:22;;;19706:11;:24;;:49;;;;19792:11;;19766;:23;;:37;;;;19843:14;;19814:11;:26;;:43;;;;19888:16;19868:11;:17;;:36;;;;;;;;;;;;:::i;:::-;;19939:9;:19;;;19915:11;:21;;;:43;;;;;;;;;;;;;;;;;;19974:9;19969:158;19993:18;:25;;;19989:1;:29;19969:158;;;20040:11;:29;;:38;;20084:18;:27;;;20112:1;20084:30;;;;;;;;:::i;:::-;;;;;;;;20040:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20020:3;;;;:::i;:::-;;;19969:158;;;;20176:18;:25;;;20137:11;:29;;:36;;:64;;;;20341:13;;20305:21;:33;20327:10;20305:33;;;;;;;;;;;;;;;:49;;;;20369:13;;20367:15;;;;;:::i;:::-;;;;;;;;20400:71;20416:13;;20431:11;:20;;;;;;;;;;;;20453:11;:17;;20400:71;;;;;;;;:::i;:::-;;;;;;;;17417:3062;;;;17284:3195;;:::o;15270:1179::-;15639:35;;:::i;:::-;15713:8;;:15;;15695:7;;:14;;:33;:70;;;;;15751:7;;:14;;15732:8;;:15;;:33;15695:70;:104;;;;;15787:5;;:12;;15769:7;;:14;;:30;15695:104;15687:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;15822:14;15839:7;;:14;;15822:31;;15864:40;;:::i;:::-;15929:6;15915:4;:11;;:20;;;;;15993:6;15962:38;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;15946:4;:13;;:54;;;;16020:9;16015:405;16039:6;16035:1;:10;16015:405;;;16071:59;16133:204;;;;;;;;16188:7;;16196:1;16188:10;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16133:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16229:8;;16238:1;16229:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16133:204;;;;;;16270:7;;16278:1;16270:10;;;;;;;:::i;:::-;;;;;;;;16133:204;;;;16309:5;;16315:1;16309:8;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16133:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16071:266;;16377:27;16358:4;:13;;;16372:1;16358:16;;;;;;;;:::i;:::-;;;;;;;:46;;;;16052:368;16047:3;;;;:::i;:::-;;;16015:405;;;;16437:4;16430:11;;;;15270:1179;;;;;;;;;;:::o;8148:71::-;8201:18;8148:71;:::o;7301:40::-;;;;:::o;4900:87::-;4946:7;4973:6;;;;;;;;;;;4966:13;;4900:87;:::o;8074:67::-;8127:14;8074:67;:::o;7030:43::-;;;;:::o;20774:939::-;1984:1;2582:7;;:19;;2574:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1984:1;2715:7;:18;;;;20902:20:::1;20880:42;;;;;;;;:::i;:::-;;:18;20886:11;20880:5;:18::i;:::-;:42;;;;;;;;:::i;:::-;;;20858:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;21039:25;21067:9;:22;21077:11;21067:22;;;;;;;;;;;21039:50;;21100:23;21126:8;:21;21135:11;21126:21;;;;;;;;;;;:33;21148:10;21126:33;;;;;;;;;;;;;;;21100:59;;21172:13;21188:6;;;;;;;;;;;:16;;;21205:10;21188:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21172:44;;21301:7;:16;;;;;;;;;;;;21297:97;;;21369:7;:13;;;21334:8;:14;;21349:7;:15;;;21334:31;;;;;;;;:::i;:::-;;;;;;;;;;:48;;;;;;;:::i;:::-;;;;;;;;21297:97;21495:5;21467:8;:14;;21482:8;21467:24;;;;;;;;:::i;:::-;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;21565:4;21546:7;:16;;;:23;;;;;;;;;;;;;;;;;;21598:8;21580:7;:15;;:26;;;;21633:5;21617:7;:13;;:21;;;;21656:49;21664:11;21677:10;21689:8;21699:5;21656:49;;;;;;;;;:::i;:::-;;;;;;;;20847:866;;;1940:1:::0;2894:7;:22;;;;20774:939;;:::o;8018:49::-;;;;:::o;7574:51::-;7618:7;7574:51;:::o;8275:28::-;;;;:::o;15113:149::-;15191:14;;:::i;:::-;15225:8;:21;15234:11;15225:21;;;;;;;;;;;:29;15247:6;15225:29;;;;;;;;;;;;;;;15218:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15113:149;;;;:::o;11251:425::-;5131:12;:10;:12::i;:::-;5120:23;;:7;:5;:7::i;:::-;:23;;;5112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7398:10:::1;11346:8;:35;;11324:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;7465:7;11482:8;:35;;11460:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;11613:8;11596:14;:25;;;;11637:31;11659:8;11637:31;;;;;;:::i;:::-;;;;;;;;11251:425:::0;:::o;7348:60::-;7398:10;7348:60;:::o;12086:436::-;5131:12;:10;:12::i;:::-;5120:23;;:7;:5;:7::i;:::-;:23;;;5112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8127:14:::1;12182:6;:36;;12160:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;8201:18;12322:6;:36;;12300:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;12460:6;12440:17;:26;;;;12482:32;12507:6;12482:32;;;;;;:::i;:::-;;;;;;;;12086:436:::0;:::o;5809:201::-;5131:12;:10;:12::i;:::-;5120:23;;:7;:5;:7::i;:::-;:23;;;5112:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5918:1:::1;5898:22;;:8;:22;;;;5890:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5974:28;5993:8;5974:18;:28::i;:::-;5809:201:::0;:::o;8620:21::-;;;;;;;;;;;;;:::o;21944:2323::-;22019:14;1984:1;2582:7;;:19;;2574:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1984:1;2715:7;:18;;;;22090:31:::1;22068:53;;;;;;;;:::i;:::-;;:18;22074:11;22068:5;:18::i;:::-;:53;;;;;;;;:::i;:::-;;;22046:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;22201:25;22229:9;:22;22239:11;22229:22;;;;;;;;;;;22201:50;;22264:54;22321:8;:26;;22264:83;;22360:26;22457:8;:18;;;;;;;;;;;;22453:1667;;;22518:17;:24;;;22506:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22492:51;;22563:9;22558:564;22582:17;:24;;;22578:1;:28;22558:564;;;22633:12;22647:23:::0;22674:17:::1;:26;;22701:1;22674:29;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;;;;;;;;;:41;;22776:17;:26;;22803:1;22776:29;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;22873:17;:26;;22900:1;22873:29;;;;;;;;:::i;:::-;;;;;;;;;;;;:34;;22674:234;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22632:276;;;;22957:7;22927:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;23096:10;23079:11;23091:1;23079:14;;;;;;;;:::i;:::-;;;;;;;:27;;;;22613:509;;22608:3;;;;:::i;:::-;;;22558:564;;;;22453:1667;;;23255:1;23243:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23229:28;;23272:24;23315:16:::0;23334:8:::1;:20;;;23315:39;;23374:9;23369:234;23393:8;:14;;:21;;;;23389:1;:25;23369:234;;;23464:8;23444;:14;;23459:1;23444:17;;;;;;;;:::i;:::-;;;;;;;;;;:28;23440:148;;;23508:8;:14;;23523:1;23508:17;;;;;;;;:::i;:::-;;;;;;;;;;23497:28;;23567:1;23548:20;;23440:148;23416:3;;;;:::i;:::-;;;23369:234;;;;23618:12;23632:23:::0;23659:17:::1;:26;;23686:16;23659:44;;;;;;;;:::i;:::-;;;;;;;;;;;;:51;;;;;;;;;;;;:56;;23772:17;:26;;23799:16;23772:44;;;;;;;;:::i;:::-;;;;;;;;;;;;:50;;;23880:17;:26;;23907:16;23880:44;;;;;;;;:::i;:::-;;;;;;;;;;;;:49;;23659:271;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23617:313;;;;23971:7;23945:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;24098:10;24081:11;24093:1;24081:14;;;;;;;;:::i;:::-;;;;;;;:27;;;;23139:981;;;;22453:1667;24152:10;24132:8;:17;;;:30;;;;;;;;;;;;;;;;;;24180:48;24197:11;24210:8;:17;;;;;;;;;;;;24180:48;;;;;;;:::i;:::-;;;;;;;;24248:11;24241:18;;;;;1940:1:::0;2894:7;:22;;;;21944:2323;;;:::o;3618:98::-;3671:7;3698:10;3691:17;;3618:98;:::o;6170:191::-;6244:16;6263:6;;;;;;;;;;;6244:25;;6289:8;6280:6;;:17;;;;;;;;;;;;;;;;;;6344:8;6313:40;;6334:8;6313:40;;;;;;;;;;;;6233:128;6170:191;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:126::-;2133:7;2173:42;2166:5;2162:54;2151:65;;2096:126;;;:::o;2228:96::-;2265:7;2294:24;2312:5;2294:24;:::i;:::-;2283:35;;2228:96;;;:::o;2330:118::-;2417:24;2435:5;2417:24;:::i;:::-;2412:3;2405:37;2330:118;;:::o;2454:::-;2541:24;2559:5;2541:24;:::i;:::-;2536:3;2529:37;2454:118;;:::o;2578:90::-;2612:7;2655:5;2648:13;2641:21;2630:32;;2578:90;;;:::o;2674:109::-;2755:21;2770:5;2755:21;:::i;:::-;2750:3;2743:34;2674:109;;:::o;2789:108::-;2866:24;2884:5;2866:24;:::i;:::-;2861:3;2854:37;2789:108;;:::o;2903:155::-;3011:6;3045:5;3039:12;3029:22;;2903:155;;;:::o;3064:215::-;3194:11;3228:6;3223:3;3216:19;3268:4;3263:3;3259:14;3244:29;;3064:215;;;;:::o;3285:173::-;3393:4;3416:3;3408:11;;3446:4;3441:3;3437:14;3429:22;;3285:173;;;:::o;3464:159::-;3538:11;3572:6;3567:3;3560:19;3612:4;3607:3;3603:14;3588:29;;3464:159;;;;:::o;3629:344::-;3707:3;3735:39;3768:5;3735:39;:::i;:::-;3790:61;3844:6;3839:3;3790:61;:::i;:::-;3783:68;;3860:52;3905:6;3900:3;3893:4;3886:5;3882:16;3860:52;:::i;:::-;3937:29;3959:6;3937:29;:::i;:::-;3932:3;3928:39;3921:46;;3711:262;3629:344;;;;:::o;3979:108::-;4056:24;4074:5;4056:24;:::i;:::-;4051:3;4044:37;3979:108;;:::o;4093:98::-;4144:6;4178:5;4172:12;4162:22;;4093:98;;;:::o;4197:158::-;4270:11;4304:6;4299:3;4292:19;4344:4;4339:3;4335:14;4320:29;;4197:158;;;;:::o;4361:340::-;4437:3;4465:38;4497:5;4465:38;:::i;:::-;4519:60;4572:6;4567:3;4519:60;:::i;:::-;4512:67;;4588:52;4633:6;4628:3;4621:4;4614:5;4610:16;4588:52;:::i;:::-;4665:29;4687:6;4665:29;:::i;:::-;4660:3;4656:39;4649:46;;4441:260;4361:340;;;;:::o;4803:1049::-;4944:3;4980:4;4975:3;4971:14;5068:4;5061:5;5057:16;5051:23;5121:3;5115:4;5111:14;5104:4;5099:3;5095:14;5088:38;5147:73;5215:4;5201:12;5147:73;:::i;:::-;5139:81;;4995:236;5315:4;5308:5;5304:16;5298:23;5334:63;5391:4;5386:3;5382:14;5368:12;5334:63;:::i;:::-;5241:166;5490:4;5483:5;5479:16;5473:23;5509:63;5566:4;5561:3;5557:14;5543:12;5509:63;:::i;:::-;5417:165;5664:4;5657:5;5653:16;5647:23;5717:3;5711:4;5707:14;5700:4;5695:3;5691:14;5684:38;5743:71;5809:4;5795:12;5743:71;:::i;:::-;5735:79;;5592:233;5842:4;5835:11;;4949:903;4803:1049;;;;:::o;5858:320::-;6009:10;6044:128;6168:3;6160:6;6044:128;:::i;:::-;6030:142;;5858:320;;;;:::o;6184:154::-;6295:4;6327;6322:3;6318:14;6310:22;;6184:154;;;:::o;6444:1219::-;6635:3;6664:95;6753:5;6664:95;:::i;:::-;6775:117;6885:6;6880:3;6775:117;:::i;:::-;6768:124;;6918:3;6963:4;6955:6;6951:17;6946:3;6942:27;6993:97;7084:5;6993:97;:::i;:::-;7113:7;7144:1;7129:489;7154:6;7151:1;7148:13;7129:489;;;7225:9;7219:4;7215:20;7210:3;7203:33;7276:6;7270:13;7304:146;7445:4;7430:13;7304:146;:::i;:::-;7296:154;;7473:101;7567:6;7473:101;:::i;:::-;7463:111;;7603:4;7598:3;7594:14;7587:21;;7189:429;7176:1;7173;7169:9;7164:14;;7129:489;;;7133:14;7634:4;7627:11;;7654:3;7647:10;;6640:1023;;;;;6444:1219;;;;:::o;7773:764::-;7932:3;7968:4;7963:3;7959:14;8057:4;8050:5;8046:16;8040:23;8076:63;8133:4;8128:3;8124:14;8110:12;8076:63;:::i;:::-;7983:166;8235:4;8228:5;8224:16;8218:23;8288:3;8282:4;8278:14;8271:4;8266:3;8262:14;8255:38;8314:185;8494:4;8480:12;8314:185;:::i;:::-;8306:193;;8159:351;8527:4;8520:11;;7937:600;7773:764;;;;:::o;8543:1620::-;9012:4;9050:3;9039:9;9035:19;9027:27;;9100:9;9094:4;9090:20;9086:1;9075:9;9071:17;9064:47;9128:78;9201:4;9192:6;9128:78;:::i;:::-;9120:86;;9253:9;9247:4;9243:20;9238:2;9227:9;9223:18;9216:48;9281:78;9354:4;9345:6;9281:78;:::i;:::-;9273:86;;9369:72;9437:2;9426:9;9422:18;9413:6;9369:72;:::i;:::-;9451;9519:2;9508:9;9504:18;9495:6;9451:72;:::i;:::-;9533:73;9601:3;9590:9;9586:19;9577:6;9533:73;:::i;:::-;9616;9684:3;9673:9;9669:19;9660:6;9616:73;:::i;:::-;9699;9767:3;9756:9;9752:19;9743:6;9699:73;:::i;:::-;9782;9850:3;9839:9;9835:19;9826:6;9782:73;:::i;:::-;9865:67;9927:3;9916:9;9912:19;9903:6;9865:67;:::i;:::-;9980:9;9974:4;9970:20;9964:3;9953:9;9949:19;9942:49;10008:148;10151:4;10142:6;10008:148;:::i;:::-;10000:156;;8543:1620;;;;;;;;;;;;;:::o;10169:222::-;10262:4;10300:2;10289:9;10285:18;10277:26;;10313:71;10381:1;10370:9;10366:17;10357:6;10313:71;:::i;:::-;10169:222;;;;:::o;10397:117::-;10506:1;10503;10496:12;10520:117;10629:1;10626;10619:12;10643:117;10752:1;10749;10742:12;10780:553;10838:8;10848:6;10898:3;10891:4;10883:6;10879:17;10875:27;10865:122;;10906:79;;:::i;:::-;10865:122;11019:6;11006:20;10996:30;;11049:18;11041:6;11038:30;11035:117;;;11071:79;;:::i;:::-;11035:117;11185:4;11177:6;11173:17;11161:29;;11239:3;11231:4;11223:6;11219:17;11209:8;11205:32;11202:41;11199:128;;;11246:79;;:::i;:::-;11199:128;10780:553;;;;;:::o;11339:116::-;11409:21;11424:5;11409:21;:::i;:::-;11402:5;11399:32;11389:60;;11445:1;11442;11435:12;11389:60;11339:116;:::o;11461:133::-;11504:5;11542:6;11529:20;11520:29;;11558:30;11582:5;11558:30;:::i;:::-;11461:133;;;;:::o;11600:1159::-;11707:6;11715;11723;11731;11739;11747;11796:3;11784:9;11775:7;11771:23;11767:33;11764:120;;;11803:79;;:::i;:::-;11764:120;11951:1;11940:9;11936:17;11923:31;11981:18;11973:6;11970:30;11967:117;;;12003:79;;:::i;:::-;11967:117;12116:65;12173:7;12164:6;12153:9;12149:22;12116:65;:::i;:::-;12098:83;;;;11894:297;12258:2;12247:9;12243:18;12230:32;12289:18;12281:6;12278:30;12275:117;;;12311:79;;:::i;:::-;12275:117;12424:65;12481:7;12472:6;12461:9;12457:22;12424:65;:::i;:::-;12406:83;;;;12201:298;12538:2;12564:53;12609:7;12600:6;12589:9;12585:22;12564:53;:::i;:::-;12554:63;;12509:118;12666:2;12692:50;12734:7;12725:6;12714:9;12710:22;12692:50;:::i;:::-;12682:60;;12637:115;11600:1159;;;;;;;;:::o;12765:114::-;12832:6;12866:5;12860:12;12850:22;;12765:114;;;:::o;12885:174::-;12974:11;13008:6;13003:3;12996:19;13048:4;13043:3;13039:14;13024:29;;12885:174;;;;:::o;13065:132::-;13132:4;13155:3;13147:11;;13185:4;13180:3;13176:14;13168:22;;13065:132;;;:::o;13203:179::-;13272:10;13293:46;13335:3;13327:6;13293:46;:::i;:::-;13371:4;13366:3;13362:14;13348:28;;13203:179;;;;:::o;13388:113::-;13458:4;13490;13485:3;13481:14;13473:22;;13388:113;;;:::o;13537:712::-;13646:3;13675:54;13723:5;13675:54;:::i;:::-;13745:76;13814:6;13809:3;13745:76;:::i;:::-;13738:83;;13845:56;13895:5;13845:56;:::i;:::-;13924:7;13955:1;13940:284;13965:6;13962:1;13959:13;13940:284;;;14041:6;14035:13;14068:63;14127:3;14112:13;14068:63;:::i;:::-;14061:70;;14154:60;14207:6;14154:60;:::i;:::-;14144:70;;14000:224;13987:1;13984;13980:9;13975:14;;13940:284;;;13944:14;14240:3;14233:10;;13651:598;;;13537:712;;;;:::o;14255:99::-;14326:21;14341:5;14326:21;:::i;:::-;14321:3;14314:34;14255:99;;:::o;14464:754::-;14613:3;14649:4;14644:3;14640:14;14738:4;14731:5;14727:16;14721:23;14757:63;14814:4;14809:3;14805:14;14791:12;14757:63;:::i;:::-;14664:166;14916:4;14909:5;14905:16;14899:23;14969:3;14963:4;14959:14;14952:4;14947:3;14943:14;14936:38;14995:185;15175:4;15161:12;14995:185;:::i;:::-;14987:193;;14840:351;15208:4;15201:11;;14618:600;14464:754;;;;:::o;15288:2555::-;15407:3;15443:6;15438:3;15434:16;15533:4;15526:5;15522:16;15516:23;15586:3;15580:4;15576:14;15569:4;15564:3;15560:14;15553:38;15612:73;15680:4;15666:12;15612:73;:::i;:::-;15604:81;;15460:236;15782:4;15775:5;15771:16;15765:23;15835:3;15829:4;15825:14;15818:4;15813:3;15809:14;15802:38;15861:73;15929:4;15915:12;15861:73;:::i;:::-;15853:81;;15706:239;16031:4;16024:5;16020:16;16014:23;16050:63;16107:4;16102:3;16098:14;16084:12;16050:63;:::i;:::-;15955:168;16209:4;16202:5;16198:16;16192:23;16228:63;16285:4;16280:3;16276:14;16262:12;16228:63;:::i;:::-;16133:168;16388:4;16381:5;16377:16;16371:23;16407:63;16464:4;16459:3;16455:14;16441:12;16407:63;:::i;:::-;16311:169;16570:4;16563:5;16559:16;16553:23;16589:63;16646:4;16641:3;16637:14;16623:12;16589:63;:::i;:::-;16490:172;16751:4;16744:5;16740:16;16734:23;16770:63;16827:4;16822:3;16818:14;16804:12;16770:63;:::i;:::-;16672:171;16935:4;16928:5;16924:16;16918:23;16954:63;17011:4;17006:3;17002:14;16988:12;16954:63;:::i;:::-;16853:174;17110:6;17103:5;17099:18;17093:25;17167:3;17161:4;17157:14;17148:6;17143:3;17139:16;17132:40;17193:103;17291:4;17277:12;17193:103;:::i;:::-;17185:111;;17037:270;17394:6;17387:5;17383:18;17377:25;17415:59;17466:6;17461:3;17457:16;17443:12;17415:59;:::i;:::-;17317:167;17579:6;17572:5;17568:18;17562:25;17636:3;17630:4;17626:14;17617:6;17612:3;17608:16;17601:40;17662:143;17800:4;17786:12;17662:143;:::i;:::-;17654:151;;17494:322;17833:4;17826:11;;15412:2431;15288:2555;;;;:::o;17849:373::-;17992:4;18030:2;18019:9;18015:18;18007:26;;18079:9;18073:4;18069:20;18065:1;18054:9;18050:17;18043:47;18107:108;18210:4;18201:6;18107:108;:::i;:::-;18099:116;;17849:373;;;;:::o;18228:180::-;18276:77;18273:1;18266:88;18373:4;18370:1;18363:15;18397:4;18394:1;18387:15;18414:122;18504:1;18497:5;18494:12;18484:46;;18510:18;;:::i;:::-;18484:46;18414:122;:::o;18542:145::-;18596:7;18625:5;18614:16;;18631:50;18675:5;18631:50;:::i;:::-;18542:145;;;:::o;18693:::-;18758:9;18791:41;18826:5;18791:41;:::i;:::-;18778:54;;18693:145;;;:::o;18844:161::-;18946:52;18992:5;18946:52;:::i;:::-;18941:3;18934:65;18844:161;;:::o;19011:252::-;19119:4;19157:2;19146:9;19142:18;19134:26;;19170:86;19253:1;19242:9;19238:17;19229:6;19170:86;:::i;:::-;19011:252;;;;:::o;19269:122::-;19342:24;19360:5;19342:24;:::i;:::-;19335:5;19332:35;19322:63;;19381:1;19378;19371:12;19322:63;19269:122;:::o;19397:139::-;19443:5;19481:6;19468:20;19459:29;;19497:33;19524:5;19497:33;:::i;:::-;19397:139;;;;:::o;19542:474::-;19610:6;19618;19667:2;19655:9;19646:7;19642:23;19638:32;19635:119;;;19673:79;;:::i;:::-;19635:119;19793:1;19818:53;19863:7;19854:6;19843:9;19839:22;19818:53;:::i;:::-;19808:63;;19764:117;19920:2;19946:53;19991:7;19982:6;19971:9;19967:22;19946:53;:::i;:::-;19936:63;;19891:118;19542:474;;;;;:::o;20022:430::-;20165:4;20203:2;20192:9;20188:18;20180:26;;20216:65;20278:1;20267:9;20263:17;20254:6;20216:65;:::i;:::-;20291:72;20359:2;20348:9;20344:18;20335:6;20291:72;:::i;:::-;20373;20441:2;20430:9;20426:18;20417:6;20373:72;:::i;:::-;20022:430;;;;;;:::o;20458:184::-;20557:11;20591:6;20586:3;20579:19;20631:4;20626:3;20622:14;20607:29;;20458:184;;;;:::o;20678:732::-;20797:3;20826:54;20874:5;20826:54;:::i;:::-;20896:86;20975:6;20970:3;20896:86;:::i;:::-;20889:93;;21006:56;21056:5;21006:56;:::i;:::-;21085:7;21116:1;21101:284;21126:6;21123:1;21120:13;21101:284;;;21202:6;21196:13;21229:63;21288:3;21273:13;21229:63;:::i;:::-;21222:70;;21315:60;21368:6;21315:60;:::i;:::-;21305:70;;21161:224;21148:1;21145;21141:9;21136:14;;21101:284;;;21105:14;21401:3;21394:10;;20802:608;;;20678:732;;;;:::o;21416:373::-;21559:4;21597:2;21586:9;21582:18;21574:26;;21646:9;21640:4;21636:20;21632:1;21621:9;21617:17;21610:47;21674:108;21777:4;21768:6;21674:108;:::i;:::-;21666:116;;21416:373;;;;:::o;21795:329::-;21854:6;21903:2;21891:9;21882:7;21878:23;21874:32;21871:119;;;21909:79;;:::i;:::-;21871:119;22029:1;22054:53;22099:7;22090:6;22079:9;22075:22;22054:53;:::i;:::-;22044:63;;22000:117;21795:329;;;;:::o;22130:117::-;22239:1;22236;22229:12;22253:180;22301:77;22298:1;22291:88;22398:4;22395:1;22388:15;22422:4;22419:1;22412:15;22439:281;22522:27;22544:4;22522:27;:::i;:::-;22514:6;22510:40;22652:6;22640:10;22637:22;22616:18;22604:10;22601:34;22598:62;22595:88;;;22663:18;;:::i;:::-;22595:88;22703:10;22699:2;22692:22;22482:238;22439:281;;:::o;22726:129::-;22760:6;22787:20;;:::i;:::-;22777:30;;22816:33;22844:4;22836:6;22816:33;:::i;:::-;22726:129;;;:::o;22861:117::-;22970:1;22967;22960:12;22984:117;23093:1;23090;23083:12;23107:308;23169:4;23259:18;23251:6;23248:30;23245:56;;;23281:18;;:::i;:::-;23245:56;23319:29;23341:6;23319:29;:::i;:::-;23311:37;;23403:4;23397;23393:15;23385:23;;23107:308;;;:::o;23421:154::-;23505:6;23500:3;23495;23482:30;23567:1;23558:6;23553:3;23549:16;23542:27;23421:154;;;:::o;23581:412::-;23659:5;23684:66;23700:49;23742:6;23700:49;:::i;:::-;23684:66;:::i;:::-;23675:75;;23773:6;23766:5;23759:21;23811:4;23804:5;23800:16;23849:3;23840:6;23835:3;23831:16;23828:25;23825:112;;;23856:79;;:::i;:::-;23825:112;23946:41;23980:6;23975:3;23970;23946:41;:::i;:::-;23665:328;23581:412;;;;;:::o;24013:340::-;24069:5;24118:3;24111:4;24103:6;24099:17;24095:27;24085:122;;24126:79;;:::i;:::-;24085:122;24243:6;24230:20;24268:79;24343:3;24335:6;24328:4;24320:6;24316:17;24268:79;:::i;:::-;24259:88;;24075:278;24013:340;;;;:::o;24359:311::-;24436:4;24526:18;24518:6;24515:30;24512:56;;;24548:18;;:::i;:::-;24512:56;24598:4;24590:6;24586:17;24578:25;;24658:4;24652;24648:15;24640:23;;24359:311;;;:::o;24693:710::-;24789:5;24814:81;24830:64;24887:6;24830:64;:::i;:::-;24814:81;:::i;:::-;24805:90;;24915:5;24944:6;24937:5;24930:21;24978:4;24971:5;24967:16;24960:23;;25031:4;25023:6;25019:17;25011:6;25007:30;25060:3;25052:6;25049:15;25046:122;;;25079:79;;:::i;:::-;25046:122;25194:6;25177:220;25211:6;25206:3;25203:15;25177:220;;;25286:3;25315:37;25348:3;25336:10;25315:37;:::i;:::-;25310:3;25303:50;25382:4;25377:3;25373:14;25366:21;;25253:144;25237:4;25232:3;25228:14;25221:21;;25177:220;;;25181:21;24795:608;;24693:710;;;;;:::o;25426:370::-;25497:5;25546:3;25539:4;25531:6;25527:17;25523:27;25513:122;;25554:79;;:::i;:::-;25513:122;25671:6;25658:20;25696:94;25786:3;25778:6;25771:4;25763:6;25759:17;25696:94;:::i;:::-;25687:103;;25503:293;25426:370;;;;:::o;25802:352::-;25920:4;26010:18;26002:6;25999:30;25996:56;;;26032:18;;:::i;:::-;25996:56;26082:4;26074:6;26070:17;26062:25;;26142:4;26136;26132:15;26124:23;;25802:352;;;:::o;26160:307::-;26221:4;26311:18;26303:6;26300:30;26297:56;;;26333:18;;:::i;:::-;26297:56;26371:29;26393:6;26371:29;:::i;:::-;26363:37;;26455:4;26449;26445:15;26437:23;;26160:307;;;:::o;26473:410::-;26550:5;26575:65;26591:48;26632:6;26591:48;:::i;:::-;26575:65;:::i;:::-;26566:74;;26663:6;26656:5;26649:21;26701:4;26694:5;26690:16;26739:3;26730:6;26725:3;26721:16;26718:25;26715:112;;;26746:79;;:::i;:::-;26715:112;26836:41;26870:6;26865:3;26860;26836:41;:::i;:::-;26556:327;26473:410;;;;;:::o;26902:338::-;26957:5;27006:3;26999:4;26991:6;26987:17;26983:27;26973:122;;27014:79;;:::i;:::-;26973:122;27131:6;27118:20;27156:78;27230:3;27222:6;27215:4;27207:6;27203:17;27156:78;:::i;:::-;27147:87;;26963:277;26902:338;;;;:::o;27296:1255::-;27386:5;27430:4;27418:9;27413:3;27409:19;27405:30;27402:117;;;27438:79;;:::i;:::-;27402:117;27537:21;27553:4;27537:21;:::i;:::-;27528:30;;27646:1;27635:9;27631:17;27618:31;27676:18;27668:6;27665:30;27662:117;;;27698:79;;:::i;:::-;27662:117;27818:59;27873:3;27864:6;27853:9;27849:22;27818:59;:::i;:::-;27811:4;27804:5;27800:16;27793:85;27568:321;27950:2;27991:49;28036:3;28027:6;28016:9;28012:22;27991:49;:::i;:::-;27984:4;27977:5;27973:16;27966:75;27899:153;28112:2;28153:49;28198:3;28189:6;28178:9;28174:22;28153:49;:::i;:::-;28146:4;28139:5;28135:16;28128:75;28062:152;28301:2;28290:9;28286:18;28273:32;28332:18;28324:6;28321:30;28318:117;;;28354:79;;:::i;:::-;28318:117;28474:58;28528:3;28519:6;28508:9;28504:22;28474:58;:::i;:::-;28467:4;28460:5;28456:16;28449:84;28224:320;27296:1255;;;;:::o;28609:1038::-;28746:5;28771:122;28787:105;28885:6;28787:105;:::i;:::-;28771:122;:::i;:::-;28762:131;;28913:5;28942:6;28935:5;28928:21;28976:4;28969:5;28965:16;28958:23;;29029:4;29021:6;29017:17;29009:6;29005:30;29058:3;29050:6;29047:15;29044:122;;;29077:79;;:::i;:::-;29044:122;29192:6;29175:466;29209:6;29204:3;29201:15;29175:466;;;29298:3;29285:17;29334:18;29321:11;29318:35;29315:122;;;29356:79;;:::i;:::-;29315:122;29480:11;29472:6;29468:24;29518:78;29592:3;29580:10;29518:78;:::i;:::-;29513:3;29506:91;29626:4;29621:3;29617:14;29610:21;;29251:390;;29235:4;29230:3;29226:14;29219:21;;29175:466;;;29179:21;28752:895;;28609:1038;;;;;:::o;29705:452::-;29817:5;29866:3;29859:4;29851:6;29847:17;29843:27;29833:122;;29874:79;;:::i;:::-;29833:122;29991:6;29978:20;30016:135;30147:3;30139:6;30132:4;30124:6;30120:17;30016:135;:::i;:::-;30007:144;;29823:334;29705:452;;;;:::o;30217:826::-;30311:5;30355:4;30343:9;30338:3;30334:19;30330:30;30327:117;;;30363:79;;:::i;:::-;30327:117;30462:21;30478:4;30462:21;:::i;:::-;30453:30;;30544:1;30584:49;30629:3;30620:6;30609:9;30605:22;30584:49;:::i;:::-;30577:4;30570:5;30566:16;30559:75;30493:152;30736:2;30725:9;30721:18;30708:32;30767:18;30759:6;30756:30;30753:117;;;30789:79;;:::i;:::-;30753:117;30909:115;31020:3;31011:6;31000:9;30996:22;30909:115;:::i;:::-;30902:4;30895:5;30891:16;30884:141;30655:381;30217:826;;;;:::o;31083:2829::-;31157:5;31201:6;31189:9;31184:3;31180:19;31176:32;31173:119;;;31211:79;;:::i;:::-;31173:119;31310:23;31326:6;31310:23;:::i;:::-;31301:32;;31421:1;31410:9;31406:17;31393:31;31451:18;31443:6;31440:30;31437:117;;;31473:79;;:::i;:::-;31437:117;31593:59;31648:3;31639:6;31628:9;31624:22;31593:59;:::i;:::-;31586:4;31579:5;31575:16;31568:85;31343:321;31755:2;31744:9;31740:18;31727:32;31786:18;31778:6;31775:30;31772:117;;;31808:79;;:::i;:::-;31772:117;31928:59;31983:3;31974:6;31963:9;31959:22;31928:59;:::i;:::-;31921:4;31914:5;31910:16;31903:85;31674:325;32062:2;32103:49;32148:3;32139:6;32128:9;32124:22;32103:49;:::i;:::-;32096:4;32089:5;32085:16;32078:75;32009:155;32227:2;32268:49;32313:3;32304:6;32293:9;32289:22;32268:49;:::i;:::-;32261:4;32254:5;32250:16;32243:75;32174:155;32393:3;32435:49;32480:3;32471:6;32460:9;32456:22;32435:49;:::i;:::-;32428:4;32421:5;32417:16;32410:75;32339:157;32563:3;32605:49;32650:3;32641:6;32630:9;32626:22;32605:49;:::i;:::-;32598:4;32591:5;32587:16;32580:75;32506:160;32732:3;32774:49;32819:3;32810:6;32799:9;32795:22;32774:49;:::i;:::-;32767:4;32760:5;32756:16;32749:75;32676:159;32904:3;32946:49;32991:3;32982:6;32971:9;32967:22;32946:49;:::i;:::-;32939:4;32932:5;32928:16;32921:75;32845:162;33095:3;33084:9;33080:19;33067:33;33127:18;33119:6;33116:30;33113:117;;;33149:79;;:::i;:::-;33113:117;33271:74;33341:3;33332:6;33321:9;33317:22;33271:74;:::i;:::-;33262:6;33255:5;33251:18;33244:102;33017:340;33421:3;33465:46;33507:3;33498:6;33487:9;33483:22;33465:46;:::i;:::-;33456:6;33449:5;33445:18;33438:74;33367:156;33623:3;33612:9;33608:19;33595:33;33655:18;33647:6;33644:30;33641:117;;;33677:79;;:::i;:::-;33641:117;33799:94;33889:3;33880:6;33869:9;33865:22;33799:94;:::i;:::-;33790:6;33783:5;33779:18;33772:122;33533:372;31083:2829;;;;:::o;33918:934::-;34056:6;34064;34113:2;34101:9;34092:7;34088:23;34084:32;34081:119;;;34119:79;;:::i;:::-;34081:119;34267:1;34256:9;34252:17;34239:31;34297:18;34289:6;34286:30;34283:117;;;34319:79;;:::i;:::-;34283:117;34424:78;34494:7;34485:6;34474:9;34470:22;34424:78;:::i;:::-;34414:88;;34210:302;34579:2;34568:9;34564:18;34551:32;34610:18;34602:6;34599:30;34596:117;;;34632:79;;:::i;:::-;34596:117;34737:98;34827:7;34818:6;34807:9;34803:22;34737:98;:::i;:::-;34727:108;;34522:323;33918:934;;;;;:::o;34874:580::-;34959:8;34969:6;35019:3;35012:4;35004:6;35000:17;34996:27;34986:122;;35027:79;;:::i;:::-;34986:122;35140:6;35127:20;35117:30;;35170:18;35162:6;35159:30;35156:117;;;35192:79;;:::i;:::-;35156:117;35306:4;35298:6;35294:17;35282:29;;35360:3;35352:4;35344:6;35340:17;35330:8;35326:32;35323:41;35320:128;;;35367:79;;:::i;:::-;35320:128;34874:580;;;;;:::o;35477:568::-;35550:8;35560:6;35610:3;35603:4;35595:6;35591:17;35587:27;35577:122;;35618:79;;:::i;:::-;35577:122;35731:6;35718:20;35708:30;;35761:18;35753:6;35750:30;35747:117;;;35783:79;;:::i;:::-;35747:117;35897:4;35889:6;35885:17;35873:29;;35951:3;35943:4;35935:6;35931:17;35921:8;35917:32;35914:41;35911:128;;;35958:79;;:::i;:::-;35911:128;35477:568;;;;;:::o;36068:::-;36141:8;36151:6;36201:3;36194:4;36186:6;36182:17;36178:27;36168:122;;36209:79;;:::i;:::-;36168:122;36322:6;36309:20;36299:30;;36352:18;36344:6;36341:30;36338:117;;;36374:79;;:::i;:::-;36338:117;36488:4;36480:6;36476:17;36464:29;;36542:3;36534:4;36526:6;36522:17;36512:8;36508:32;36505:41;36502:128;;;36549:79;;:::i;:::-;36502:128;36068:568;;;;;:::o;36657:579::-;36741:8;36751:6;36801:3;36794:4;36786:6;36782:17;36778:27;36768:122;;36809:79;;:::i;:::-;36768:122;36922:6;36909:20;36899:30;;36952:18;36944:6;36941:30;36938:117;;;36974:79;;:::i;:::-;36938:117;37088:4;37080:6;37076:17;37064:29;;37142:3;37134:4;37126:6;37122:17;37112:8;37108:32;37105:41;37102:128;;;37149:79;;:::i;:::-;37102:128;36657:579;;;;;:::o;37242:1731::-;37459:6;37467;37475;37483;37491;37499;37507;37515;37564:3;37552:9;37543:7;37539:23;37535:33;37532:120;;;37571:79;;:::i;:::-;37532:120;37719:1;37708:9;37704:17;37691:31;37749:18;37741:6;37738:30;37735:117;;;37771:79;;:::i;:::-;37735:117;37884:92;37968:7;37959:6;37948:9;37944:22;37884:92;:::i;:::-;37866:110;;;;37662:324;38053:2;38042:9;38038:18;38025:32;38084:18;38076:6;38073:30;38070:117;;;38106:79;;:::i;:::-;38070:117;38219:80;38291:7;38282:6;38271:9;38267:22;38219:80;:::i;:::-;38201:98;;;;37996:313;38376:2;38365:9;38361:18;38348:32;38407:18;38399:6;38396:30;38393:117;;;38429:79;;:::i;:::-;38393:117;38542:80;38614:7;38605:6;38594:9;38590:22;38542:80;:::i;:::-;38524:98;;;;38319:313;38699:2;38688:9;38684:18;38671:32;38730:18;38722:6;38719:30;38716:117;;;38752:79;;:::i;:::-;38716:117;38865:91;38948:7;38939:6;38928:9;38924:22;38865:91;:::i;:::-;38847:109;;;;38642:324;37242:1731;;;;;;;;;;;:::o;38979:453::-;39162:4;39200:2;39189:9;39185:18;39177:26;;39249:9;39243:4;39239:20;39235:1;39224:9;39220:17;39213:47;39277:148;39420:4;39411:6;39277:148;:::i;:::-;39269:156;;38979:453;;;;:::o;39438:222::-;39531:4;39569:2;39558:9;39554:18;39546:26;;39582:71;39650:1;39639:9;39635:17;39626:6;39582:71;:::i;:::-;39438:222;;;;:::o;39666:474::-;39734:6;39742;39791:2;39779:9;39770:7;39766:23;39762:32;39759:119;;;39797:79;;:::i;:::-;39759:119;39917:1;39942:53;39987:7;39978:6;39967:9;39963:22;39942:53;:::i;:::-;39932:63;;39888:117;40044:2;40070:53;40115:7;40106:6;40095:9;40091:22;40070:53;:::i;:::-;40060:63;;40015:118;39666:474;;;;;:::o;40208:681::-;40353:4;40348:3;40344:14;40444:4;40437:5;40433:16;40427:23;40463:57;40514:4;40509:3;40505:14;40491:12;40463:57;:::i;:::-;40368:162;40615:4;40608:5;40604:16;40598:23;40634:63;40691:4;40686:3;40682:14;40668:12;40634:63;:::i;:::-;40540:167;40790:4;40783:5;40779:16;40773:23;40809:63;40866:4;40861:3;40857:14;40843:12;40809:63;:::i;:::-;40717:165;40322:567;40208:681;;:::o;40895:318::-;41036:4;41074:2;41063:9;41059:18;41051:26;;41087:119;41203:1;41192:9;41188:17;41179:6;41087:119;:::i;:::-;40895:318;;;;:::o;41219:60::-;41247:3;41268:5;41261:12;;41219:60;;;:::o;41285:142::-;41335:9;41368:53;41386:34;41395:24;41413:5;41395:24;:::i;:::-;41386:34;:::i;:::-;41368:53;:::i;:::-;41355:66;;41285:142;;;:::o;41433:126::-;41483:9;41516:37;41547:5;41516:37;:::i;:::-;41503:50;;41433:126;;;:::o;41565:141::-;41630:9;41663:37;41694:5;41663:37;:::i;:::-;41650:50;;41565:141;;;:::o;41712:161::-;41814:52;41860:5;41814:52;:::i;:::-;41809:3;41802:65;41712:161;;:::o;41879:252::-;41987:4;42025:2;42014:9;42010:18;42002:26;;42038:86;42121:1;42110:9;42106:17;42097:6;42038:86;:::i;:::-;41879:252;;;;:::o;42137:123::-;42213:6;42247:5;42241:12;42231:22;;42137:123;;;:::o;42266:193::-;42374:11;42408:6;42403:3;42396:19;42448:4;42443:3;42439:14;42424:29;;42266:193;;;;:::o;42465:141::-;42541:4;42564:3;42556:11;;42594:4;42589:3;42585:14;42577:22;;42465:141;;;:::o;42612:192::-;42699:10;42734:64;42794:3;42786:6;42734:64;:::i;:::-;42720:78;;42612:192;;;;:::o;42810:122::-;42889:4;42921;42916:3;42912:14;42904:22;;42810:122;;;:::o;42964:983::-;43101:3;43130:63;43187:5;43130:63;:::i;:::-;43209:95;43297:6;43292:3;43209:95;:::i;:::-;43202:102;;43330:3;43375:4;43367:6;43363:17;43358:3;43354:27;43405:65;43464:5;43405:65;:::i;:::-;43493:7;43524:1;43509:393;43534:6;43531:1;43528:13;43509:393;;;43605:9;43599:4;43595:20;43590:3;43583:33;43656:6;43650:13;43684:82;43761:4;43746:13;43684:82;:::i;:::-;43676:90;;43789:69;43851:6;43789:69;:::i;:::-;43779:79;;43887:4;43882:3;43878:14;43871:21;;43569:333;43556:1;43553;43549:9;43544:14;;43509:393;;;43513:14;43918:4;43911:11;;43938:3;43931:10;;43106:841;;;;;42964:983;;;;:::o;43953:409::-;44114:4;44152:2;44141:9;44137:18;44129:26;;44201:9;44195:4;44191:20;44187:1;44176:9;44172:17;44165:47;44229:126;44350:4;44341:6;44229:126;:::i;:::-;44221:134;;43953:409;;;;:::o;44368:180::-;44416:77;44413:1;44406:88;44513:4;44510:1;44503:15;44537:4;44534:1;44527:15;44554:320;44598:6;44635:1;44629:4;44625:12;44615:22;;44682:1;44676:4;44672:12;44703:18;44693:81;;44759:4;44751:6;44747:17;44737:27;;44693:81;44821:2;44813:6;44810:14;44790:18;44787:38;44784:84;;;44840:18;;:::i;:::-;44784:84;44605:269;44554:320;;;:::o;44880:182::-;45020:34;45016:1;45008:6;45004:14;44997:58;44880:182;:::o;45068:366::-;45210:3;45231:67;45295:2;45290:3;45231:67;:::i;:::-;45224:74;;45307:93;45396:3;45307:93;:::i;:::-;45425:2;45420:3;45416:12;45409:19;;45068:366;;;:::o;45440:419::-;45606:4;45644:2;45633:9;45629:18;45621:26;;45693:9;45687:4;45683:20;45679:1;45668:9;45664:17;45657:47;45721:131;45847:4;45721:131;:::i;:::-;45713:139;;45440:419;;;:::o;45865:224::-;46005:34;46001:1;45993:6;45989:14;45982:58;46074:7;46069:2;46061:6;46057:15;46050:32;45865:224;:::o;46095:366::-;46237:3;46258:67;46322:2;46317:3;46258:67;:::i;:::-;46251:74;;46334:93;46423:3;46334:93;:::i;:::-;46452:2;46447:3;46443:12;46436:19;;46095:366;;;:::o;46467:419::-;46633:4;46671:2;46660:9;46656:18;46648:26;;46720:9;46714:4;46710:20;46706:1;46695:9;46691:17;46684:47;46748:131;46874:4;46748:131;:::i;:::-;46740:139;;46467:419;;;:::o;46892:224::-;47032:34;47028:1;47020:6;47016:14;47009:58;47101:7;47096:2;47088:6;47084:15;47077:32;46892:224;:::o;47122:366::-;47264:3;47285:67;47349:2;47344:3;47285:67;:::i;:::-;47278:74;;47361:93;47450:3;47361:93;:::i;:::-;47479:2;47474:3;47470:12;47463:19;;47122:366;;;:::o;47494:419::-;47660:4;47698:2;47687:9;47683:18;47675:26;;47747:9;47741:4;47737:20;47733:1;47722:9;47718:17;47711:47;47775:131;47901:4;47775:131;:::i;:::-;47767:139;;47494:419;;;:::o;47919:232::-;48059:34;48055:1;48047:6;48043:14;48036:58;48128:15;48123:2;48115:6;48111:15;48104:40;47919:232;:::o;48157:366::-;48299:3;48320:67;48384:2;48379:3;48320:67;:::i;:::-;48313:74;;48396:93;48485:3;48396:93;:::i;:::-;48514:2;48509:3;48505:12;48498:19;;48157:366;;;:::o;48529:419::-;48695:4;48733:2;48722:9;48718:18;48710:26;;48782:9;48776:4;48772:20;48768:1;48757:9;48753:17;48746:47;48810:131;48936:4;48810:131;:::i;:::-;48802:139;;48529:419;;;:::o;48954:232::-;49094:34;49090:1;49082:6;49078:14;49071:58;49163:15;49158:2;49150:6;49146:15;49139:40;48954:232;:::o;49192:366::-;49334:3;49355:67;49419:2;49414:3;49355:67;:::i;:::-;49348:74;;49431:93;49520:3;49431:93;:::i;:::-;49549:2;49544:3;49540:12;49533:19;;49192:366;;;:::o;49564:419::-;49730:4;49768:2;49757:9;49753:18;49745:26;;49817:9;49811:4;49807:20;49803:1;49792:9;49788:17;49781:47;49845:131;49971:4;49845:131;:::i;:::-;49837:139;;49564:419;;;:::o;49989:225::-;50129:34;50125:1;50117:6;50113:14;50106:58;50198:8;50193:2;50185:6;50181:15;50174:33;49989:225;:::o;50220:366::-;50362:3;50383:67;50447:2;50442:3;50383:67;:::i;:::-;50376:74;;50459:93;50548:3;50459:93;:::i;:::-;50577:2;50572:3;50568:12;50561:19;;50220:366;;;:::o;50592:419::-;50758:4;50796:2;50785:9;50781:18;50773:26;;50845:9;50839:4;50835:20;50831:1;50820:9;50816:17;50809:47;50873:131;50999:4;50873:131;:::i;:::-;50865:139;;50592:419;;;:::o;51017:180::-;51065:77;51062:1;51055:88;51162:4;51159:1;51152:15;51186:4;51183:1;51176:15;51203:305;51243:3;51262:20;51280:1;51262:20;:::i;:::-;51257:25;;51296:20;51314:1;51296:20;:::i;:::-;51291:25;;51450:1;51382:66;51378:74;51375:1;51372:81;51369:107;;;51456:18;;:::i;:::-;51369:107;51500:1;51497;51493:9;51486:16;;51203:305;;;;:::o;51514:180::-;51562:77;51559:1;51552:88;51659:4;51656:1;51649:15;51683:4;51680:1;51673:15;51700:233;51739:3;51762:24;51780:5;51762:24;:::i;:::-;51753:33;;51808:66;51801:5;51798:77;51795:103;;;51878:18;;:::i;:::-;51795:103;51925:1;51918:5;51914:13;51907:20;;51700:233;;;:::o;51939:241::-;52079:34;52075:1;52067:6;52063:14;52056:58;52148:24;52143:2;52135:6;52131:15;52124:49;51939:241;:::o;52186:366::-;52328:3;52349:67;52413:2;52408:3;52349:67;:::i;:::-;52342:74;;52425:93;52514:3;52425:93;:::i;:::-;52543:2;52538:3;52534:12;52527:19;;52186:366;;;:::o;52558:419::-;52724:4;52762:2;52751:9;52747:18;52739:26;;52811:9;52805:4;52801:20;52797:1;52786:9;52782:17;52775:47;52839:131;52965:4;52839:131;:::i;:::-;52831:139;;52558:419;;;:::o;52983:231::-;53123:34;53119:1;53111:6;53107:14;53100:58;53192:14;53187:2;53179:6;53175:15;53168:39;52983:231;:::o;53220:366::-;53362:3;53383:67;53447:2;53442:3;53383:67;:::i;:::-;53376:74;;53459:93;53548:3;53459:93;:::i;:::-;53577:2;53572:3;53568:12;53561:19;;53220:366;;;:::o;53592:419::-;53758:4;53796:2;53785:9;53781:18;53773:26;;53845:9;53839:4;53835:20;53831:1;53820:9;53816:17;53809:47;53873:131;53999:4;53873:131;:::i;:::-;53865:139;;53592:419;;;:::o;54017:230::-;54157:34;54153:1;54145:6;54141:14;54134:58;54226:13;54221:2;54213:6;54209:15;54202:38;54017:230;:::o;54253:366::-;54395:3;54416:67;54480:2;54475:3;54416:67;:::i;:::-;54409:74;;54492:93;54581:3;54492:93;:::i;:::-;54610:2;54605:3;54601:12;54594:19;;54253:366;;;:::o;54625:419::-;54791:4;54829:2;54818:9;54814:18;54806:26;;54878:9;54872:4;54868:20;54864:1;54853:9;54849:17;54842:47;54906:131;55032:4;54906:131;:::i;:::-;54898:139;;54625:419;;;:::o;55050:251::-;55190:34;55186:1;55178:6;55174:14;55167:58;55259:34;55254:2;55246:6;55242:15;55235:59;55050:251;:::o;55307:366::-;55449:3;55470:67;55534:2;55529:3;55470:67;:::i;:::-;55463:74;;55546:93;55635:3;55546:93;:::i;:::-;55664:2;55659:3;55655:12;55648:19;;55307:366;;;:::o;55679:419::-;55845:4;55883:2;55872:9;55868:18;55860:26;;55932:9;55926:4;55922:20;55918:1;55907:9;55903:17;55896:47;55960:131;56086:4;55960:131;:::i;:::-;55952:139;;55679:419;;;:::o;56104:143::-;56161:5;56192:6;56186:13;56177:22;;56208:33;56235:5;56208:33;:::i;:::-;56104:143;;;;:::o;56253:351::-;56323:6;56372:2;56360:9;56351:7;56347:23;56343:32;56340:119;;;56378:79;;:::i;:::-;56340:119;56498:1;56523:64;56579:7;56570:6;56559:9;56555:22;56523:64;:::i;:::-;56513:74;;56469:128;56253:351;;;;:::o;56610:247::-;56750:34;56746:1;56738:6;56734:14;56727:58;56819:30;56814:2;56806:6;56802:15;56795:55;56610:247;:::o;56863:366::-;57005:3;57026:67;57090:2;57085:3;57026:67;:::i;:::-;57019:74;;57102:93;57191:3;57102:93;:::i;:::-;57220:2;57215:3;57211:12;57204:19;;56863:366;;;:::o;57235:419::-;57401:4;57439:2;57428:9;57424:18;57416:26;;57488:9;57482:4;57478:20;57474:1;57463:9;57459:17;57452:47;57516:131;57642:4;57516:131;:::i;:::-;57508:139;;57235:419;;;:::o;57660:141::-;57709:4;57732:3;57724:11;;57755:3;57752:1;57745:14;57789:4;57786:1;57776:18;57768:26;;57660:141;;;:::o;57831:802::-;57916:3;57953:5;57947:12;57982:36;58008:9;57982:36;:::i;:::-;58034:71;58098:6;58093:3;58034:71;:::i;:::-;58027:78;;58136:1;58125:9;58121:17;58152:1;58147:135;;;;58296:1;58291:336;;;;58114:513;;58147:135;58231:4;58227:9;58216;58212:25;58207:3;58200:38;58267:4;58262:3;58258:14;58251:21;;58147:135;;58291:336;58358:38;58390:5;58358:38;:::i;:::-;58418:1;58432:154;58446:6;58443:1;58440:13;58432:154;;;58520:7;58514:14;58510:1;58505:3;58501:11;58494:35;58570:1;58561:7;58557:15;58546:26;;58468:4;58465:1;58461:12;58456:17;;58432:154;;;58615:1;58610:3;58606:11;58599:18;;58298:329;;58114:513;;57920:713;;57831:802;;;;:::o;58639:527::-;58805:4;58843:2;58832:9;58828:18;58820:26;;58856:71;58924:1;58913:9;58909:17;58900:6;58856:71;:::i;:::-;58937:72;59005:2;58994:9;58990:18;58981:6;58937:72;:::i;:::-;59056:9;59050:4;59046:20;59041:2;59030:9;59026:18;59019:48;59084:75;59154:4;59145:6;59084:75;:::i;:::-;59076:83;;58639:527;;;;;;:::o;59172:157::-;59312:9;59308:1;59300:6;59296:14;59289:33;59172:157;:::o;59335:365::-;59477:3;59498:66;59562:1;59557:3;59498:66;:::i;:::-;59491:73;;59573:93;59662:3;59573:93;:::i;:::-;59691:2;59686:3;59682:12;59675:19;;59335:365;;;:::o;59706:419::-;59872:4;59910:2;59899:9;59895:18;59887:26;;59959:9;59953:4;59949:20;59945:1;59934:9;59930:17;59923:47;59987:131;60113:4;59987:131;:::i;:::-;59979:139;;59706:419;;;:::o;60131:117::-;60240:1;60237;60230:12;60254:117;60363:1;60360;60353:12;60377:117;60486:1;60483;60476:12;60500:725;60578:4;60584:6;60640:11;60627:25;60740:1;60734:4;60730:12;60719:8;60703:14;60699:29;60695:48;60675:18;60671:73;60661:168;;60748:79;;:::i;:::-;60661:168;60860:18;60850:8;60846:33;60838:41;;60912:4;60899:18;60889:28;;60940:18;60932:6;60929:30;60926:117;;;60962:79;;:::i;:::-;60926:117;61070:2;61064:4;61060:13;61052:21;;61127:4;61119:6;61115:17;61099:14;61095:38;61089:4;61085:49;61082:136;;;61137:79;;:::i;:::-;61082:136;60591:634;60500:725;;;;;:::o;61231:724::-;61308:4;61314:6;61370:11;61357:25;61470:1;61464:4;61460:12;61449:8;61433:14;61429:29;61425:48;61405:18;61401:73;61391:168;;61478:79;;:::i;:::-;61391:168;61590:18;61580:8;61576:33;61568:41;;61642:4;61629:18;61619:28;;61670:18;61662:6;61659:30;61656:117;;;61692:79;;:::i;:::-;61656:117;61800:2;61794:4;61790:13;61782:21;;61857:4;61849:6;61845:17;61829:14;61825:38;61819:4;61815:49;61812:136;;;61867:79;;:::i;:::-;61812:136;61321:634;61231:724;;;;;:::o;61961:181::-;62101:33;62097:1;62089:6;62085:14;62078:57;61961:181;:::o;62148:366::-;62290:3;62311:67;62375:2;62370:3;62311:67;:::i;:::-;62304:74;;62387:93;62476:3;62387:93;:::i;:::-;62505:2;62500:3;62496:12;62489:19;;62148:366;;;:::o;62520:419::-;62686:4;62724:2;62713:9;62709:18;62701:26;;62773:9;62767:4;62763:20;62759:1;62748:9;62744:17;62737:47;62801:131;62927:4;62801:131;:::i;:::-;62793:139;;62520:419;;;:::o;62945:221::-;63085:34;63081:1;63073:6;63069:14;63062:58;63154:4;63149:2;63141:6;63137:15;63130:29;62945:221;:::o;63172:366::-;63314:3;63335:67;63399:2;63394:3;63335:67;:::i;:::-;63328:74;;63411:93;63500:3;63411:93;:::i;:::-;63529:2;63524:3;63520:12;63513:19;;63172:366;;;:::o;63544:419::-;63710:4;63748:2;63737:9;63733:18;63725:26;;63797:9;63791:4;63787:20;63783:1;63772:9;63768:17;63761:47;63825:131;63951:4;63825:131;:::i;:::-;63817:139;;63544:419;;;:::o;63969:191::-;64009:4;64029:20;64047:1;64029:20;:::i;:::-;64024:25;;64063:20;64081:1;64063:20;:::i;:::-;64058:25;;64102:1;64099;64096:8;64093:34;;;64107:18;;:::i;:::-;64093:34;64152:1;64149;64145:9;64137:17;;63969:191;;;;:::o;64166:553::-;64343:4;64381:3;64370:9;64366:19;64358:27;;64395:71;64463:1;64452:9;64448:17;64439:6;64395:71;:::i;:::-;64476:72;64544:2;64533:9;64529:18;64520:6;64476:72;:::i;:::-;64558;64626:2;64615:9;64611:18;64602:6;64558:72;:::i;:::-;64640;64708:2;64697:9;64693:18;64684:6;64640:72;:::i;:::-;64166:553;;;;;;;:::o;64725:227::-;64865:34;64861:1;64853:6;64849:14;64842:58;64934:10;64929:2;64921:6;64917:15;64910:35;64725:227;:::o;64958:366::-;65100:3;65121:67;65185:2;65180:3;65121:67;:::i;:::-;65114:74;;65197:93;65286:3;65197:93;:::i;:::-;65315:2;65310:3;65306:12;65299:19;;64958:366;;;:::o;65330:419::-;65496:4;65534:2;65523:9;65519:18;65511:26;;65583:9;65577:4;65573:20;65569:1;65558:9;65554:17;65547:47;65611:131;65737:4;65611:131;:::i;:::-;65603:139;;65330:419;;;:::o;65755:227::-;65895:34;65891:1;65883:6;65879:14;65872:58;65964:10;65959:2;65951:6;65947:15;65940:35;65755:227;:::o;65988:366::-;66130:3;66151:67;66215:2;66210:3;66151:67;:::i;:::-;66144:74;;66227:93;66316:3;66227:93;:::i;:::-;66345:2;66340:3;66336:12;66329:19;;65988:366;;;:::o;66360:419::-;66526:4;66564:2;66553:9;66549:18;66541:26;;66613:9;66607:4;66603:20;66599:1;66588:9;66584:17;66577:47;66641:131;66767:4;66641:131;:::i;:::-;66633:139;;66360:419;;;:::o;66785:230::-;66925:34;66921:1;66913:6;66909:14;66902:58;66994:13;66989:2;66981:6;66977:15;66970:38;66785:230;:::o;67021:366::-;67163:3;67184:67;67248:2;67243:3;67184:67;:::i;:::-;67177:74;;67260:93;67349:3;67260:93;:::i;:::-;67378:2;67373:3;67369:12;67362:19;;67021:366;;;:::o;67393:419::-;67559:4;67597:2;67586:9;67582:18;67574:26;;67646:9;67640:4;67636:20;67632:1;67621:9;67617:17;67610:47;67674:131;67800:4;67674:131;:::i;:::-;67666:139;;67393:419;;;:::o;67818:230::-;67958:34;67954:1;67946:6;67942:14;67935:58;68027:13;68022:2;68014:6;68010:15;68003:38;67818:230;:::o;68054:366::-;68196:3;68217:67;68281:2;68276:3;68217:67;:::i;:::-;68210:74;;68293:93;68382:3;68293:93;:::i;:::-;68411:2;68406:3;68402:12;68395:19;;68054:366;;;:::o;68426:419::-;68592:4;68630:2;68619:9;68615:18;68607:26;;68679:9;68673:4;68669:20;68665:1;68654:9;68650:17;68643:47;68707:131;68833:4;68707:131;:::i;:::-;68699:139;;68426:419;;;:::o;68851:225::-;68991:34;68987:1;68979:6;68975:14;68968:58;69060:8;69055:2;69047:6;69043:15;69036:33;68851:225;:::o;69082:366::-;69224:3;69245:67;69309:2;69304:3;69245:67;:::i;:::-;69238:74;;69321:93;69410:3;69321:93;:::i;:::-;69439:2;69434:3;69430:12;69423:19;;69082:366;;;:::o;69454:419::-;69620:4;69658:2;69647:9;69643:18;69635:26;;69707:9;69701:4;69697:20;69693:1;69682:9;69678:17;69671:47;69735:131;69861:4;69735:131;:::i;:::-;69727:139;;69454:419;;;:::o;69879:226::-;70019:34;70015:1;70007:6;70003:14;69996:58;70088:9;70083:2;70075:6;70071:15;70064:34;69879:226;:::o;70111:366::-;70253:3;70274:67;70338:2;70333:3;70274:67;:::i;:::-;70267:74;;70350:93;70439:3;70350:93;:::i;:::-;70468:2;70463:3;70459:12;70452:19;;70111:366;;;:::o;70483:419::-;70649:4;70687:2;70676:9;70672:18;70664:26;;70736:9;70730:4;70726:20;70722:1;70711:9;70707:17;70700:47;70764:131;70890:4;70764:131;:::i;:::-;70756:139;;70483:419;;;:::o;70908:147::-;71009:11;71046:3;71031:18;;70908:147;;;;:::o;71061:140::-;71109:4;71132:3;71124:11;;71155:3;71152:1;71145:14;71189:4;71186:1;71176:18;71168:26;;71061:140;;;:::o;71229:841::-;71330:3;71367:5;71361:12;71396:36;71422:9;71396:36;:::i;:::-;71448:88;71529:6;71524:3;71448:88;:::i;:::-;71441:95;;71567:1;71556:9;71552:17;71583:1;71578:137;;;;71729:1;71724:340;;;;71545:519;;71578:137;71662:4;71658:9;71647;71643:25;71638:3;71631:38;71698:6;71693:3;71689:16;71682:23;;71578:137;;71724:340;71791:37;71822:5;71791:37;:::i;:::-;71850:1;71864:154;71878:6;71875:1;71872:13;71864:154;;;71952:7;71946:14;71942:1;71937:3;71933:11;71926:35;72002:1;71993:7;71989:15;71978:26;;71900:4;71897:1;71893:12;71888:17;;71864:154;;;72047:6;72042:3;72038:16;72031:23;;71731:333;;71545:519;;71334:736;;71229:841;;;;:::o;72076:265::-;72203:3;72225:90;72311:3;72302:6;72225:90;:::i;:::-;72218:97;;72332:3;72325:10;;72076:265;;;;:::o;72347:239::-;72487:34;72483:1;72475:6;72471:14;72464:58;72556:22;72551:2;72543:6;72539:15;72532:47;72347:239;:::o;72592:366::-;72734:3;72755:67;72819:2;72814:3;72755:67;:::i;:::-;72748:74;;72831:93;72920:3;72831:93;:::i;:::-;72949:2;72944:3;72940:12;72933:19;;72592:366;;;:::o;72964:419::-;73130:4;73168:2;73157:9;73153:18;73145:26;;73217:9;73211:4;73207:20;73203:1;73192:9;73188:17;73181:47;73245:131;73371:4;73245:131;:::i;:::-;73237:139;;72964:419;;;:::o;73389:332::-;73510:4;73548:2;73537:9;73533:18;73525:26;;73561:71;73629:1;73618:9;73614:17;73605:6;73561:71;:::i;:::-;73642:72;73710:2;73699:9;73695:18;73686:6;73642:72;:::i;:::-;73389:332;;;;;:::o

Swarm Source

ipfs://b503ad7f832adcffd0c6f76a4c3fe14d44b54b4a3e0c7828de491d961d85849e
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.