ETH Price: $3,239.19 (-9.73%)
Gas: 51 Gwei

Contract

0xd87c869f4672363eF2367bb817b086A25735626B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
0x60806040106482012020-08-12 23:43:411314 days ago1597275821IN
 Create: GovernorAlpha
0 ETH0.95424671265

Advanced mode:
Parent Txn Hash Block From To Value
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GovernorAlpha

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 50000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-12
*/

pragma solidity ^0.5.17;
pragma experimental ABIEncoderV2;

// SAVE YAM.



interface TimelockInterface {
    function delay() external view returns (uint256);
    function GRACE_PERIOD() external view returns (uint256);
    function acceptAdmin() external;
    function queuedTransactions(bytes32 hash) external view returns (bool);
    function queueTransaction(address target, uint256 value, string calldata signature, bytes calldata data, uint256 eta) external returns (bytes32);
    function cancelTransaction(address target, uint256 value, string calldata signature, bytes calldata data, uint256 eta) external;
    function executeTransaction(address target, uint256 value, string calldata signature, bytes calldata data, uint256 eta) external payable returns (bytes memory);
}

interface YAMInterface {
    function getPriorVotes(address account, uint256 blockNumber) external view returns (uint256);
    function initSupply() external view returns (uint256);
    function _acceptGov() external;
}


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

        return c;
    }

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

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

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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



contract GovernorAlpha {
    /// @notice The name of this contract
    string public constant name = "YAM Governor Alpha";

    /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed
    function quorumVotes() public view returns (uint256) { return 35000*10**24; } // 1% of inital YAM

    /// @notice The number of votes required in order for a voter to become a proposer
    function proposalThreshold() public view returns (uint256) { return 10000*10**24; } // .5% of initial YAM

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

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

    /// @notice The duration of voting on a proposal, in blocks
    function votingPeriod() public pure returns (uint256) { return 1920; } // ~8 hours

    /// @notice The address of the Compound Protocol Timelock
    TimelockInterface public timelock;

    /// @notice The address of the Compound governance token
    YAMInterface public yam;

    /// @notice The address of the Governor Guardian
    address public guardian;

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

    struct Proposal {
        /// @notice Unique id for looking up a proposal
        uint256 id;

        /// @notice Creator of the proposal
        address proposer;

        /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds
        uint256 eta;

        /// @notice the ordered list of target addresses for calls to be made
        address[] targets;

        /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made
        uint[] values;

        /// @notice The ordered list of function signatures to be called
        string[] signatures;

        /// @notice The ordered list of calldata to be passed to each call
        bytes[] calldatas;

        /// @notice The block at which voting begins: holders must delegate their votes prior to this block
        uint256 startBlock;

        /// @notice The block at which voting ends: votes must be cast prior to this block
        uint256 endBlock;

        /// @notice Current number of votes in favor of this proposal
        uint256 forVotes;

        /// @notice Current number of votes in opposition to this proposal
        uint256 againstVotes;

        /// @notice Flag marking whether the proposal has been canceled
        bool canceled;

        /// @notice Flag marking whether the proposal has been executed
        bool executed;

        /// @notice Receipts of ballots for the entire set of voters
        mapping (address => Receipt) receipts;
    }

    /// @notice Ballot receipt record for a voter
    struct Receipt {
        /// @notice Whether or not a vote has been cast
        bool hasVoted;

        /// @notice Whether or not the voter supports the proposal
        bool support;

        /// @notice The number of votes the voter had, which were cast
        uint256 votes;
    }

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

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

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

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

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

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

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

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

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

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

    constructor(address timelock_, address yam_) public {
        timelock = TimelockInterface(timelock_);
        yam = YAMInterface(yam_);
        guardian = msg.sender;
    }

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

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

        uint256 startBlock = add256(block.number, votingDelay());
        uint256 endBlock = add256(startBlock, votingPeriod());

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

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

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

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

    function _queueOrRevert(
        address target,
        uint256 value,
        string memory signature,
        bytes memory data,
        uint256 eta
    )
        internal
    {
        require(!timelock.queuedTransactions(
              keccak256(
                  abi.encode(
                      target,
                      value,
                      signature,
                      data,
                      eta
                  )
              )
          ),
          "GovernorAlpha::_queueOrRevert: proposal action already queued at eta"
        );

        timelock.queueTransaction(target, value, signature, data, eta);
    }

    function execute(uint256 proposalId)
        public
        payable
    {
        require(state(proposalId) == ProposalState.Queued, "GovernorAlpha::execute: proposal can only be executed if it is queued");
        Proposal storage proposal = proposals[proposalId];
        proposal.executed = true;
        for (uint256 i = 0; i < proposal.targets.length; i++) {
            timelock.executeTransaction.value(proposal.values[i])(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);
        }
        emit ProposalExecuted(proposalId);
    }

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

        Proposal storage proposal = proposals[proposalId];
        require(msg.sender == guardian || yam.getPriorVotes(proposal.proposer, sub256(block.number, 1)) < proposalThreshold(), "GovernorAlpha::cancel: proposer above threshold");

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

        emit ProposalCanceled(proposalId);
    }

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

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

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

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

    function castVoteBySig(
        uint256 proposalId,
        bool support,
        uint8 v,
        bytes32 r,
        bytes32 s
    )
        public
    {
        bytes32 domainSeparator = keccak256(
            abi.encode(
                DOMAIN_TYPEHASH,
                keccak256(bytes(name)),
                getChainId(),
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                BALLOT_TYPEHASH,
                proposalId,
                support
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                "\x19\x01",
                domainSeparator,
                structHash
            )
        );

        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "GovernorAlpha::castVoteBySig: invalid signature");
        return _castVote(signatory, proposalId, support);
    }

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

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

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

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

    function __acceptAdmin()
        public
    {
        require(msg.sender == guardian, "GovernorAlpha::__acceptAdmin: sender must be gov guardian");
        timelock.acceptAdmin();
    }

    function __abdicate()
        public
    {
        require(msg.sender == guardian, "GovernorAlpha::__abdicate: sender must be gov guardian");
        guardian = address(0);
    }

    function __queueSetTimelockPendingAdmin(
        address newPendingAdmin,
        uint256 eta
    )
        public
    {
        require(msg.sender == guardian, "GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian");
        timelock.queueTransaction(address(timelock), 0, "setPendingAdmin(address)", abi.encode(newPendingAdmin), eta);
    }

    function __executeSetTimelockPendingAdmin(
        address newPendingAdmin,
        uint256 eta
    )
        public
    {
        require(msg.sender == guardian, "GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian");
        timelock.executeTransaction(address(timelock), 0, "setPendingAdmin(address)", abi.encode(newPendingAdmin), eta);
    }

    function add256(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "addition overflow");
        return c;
    }

    function sub256(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "subtraction underflow");
        return a - b;
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"timelock_","type":"address"},{"internalType":"address","name":"yam_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"VoteCast","type":"event"},{"constant":true,"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"__abdicate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"__acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"__executeSetTimelockPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"__queueSetTimelockPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint256","name":"votes","type":"uint256"}],"internalType":"struct GovernorAlpha.Receipt","name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalMaxOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum GovernorAlpha.ProposalState","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timelock","outputs":[{"internalType":"contract TimelockInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"yam","outputs":[{"internalType":"contract YAMInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040516200403f3803806200403f833981016040819052620000349162000089565b600080546001600160a01b039384166001600160a01b0319918216179091556001805492909316918116919091179091556002805490911633179055620000f4565b80516200008381620000da565b92915050565b600080604083850312156200009d57600080fd5b6000620000ab858562000076565b9250506020620000be8582860162000076565b9150509250929050565b60006001600160a01b03821662000083565b620000e581620000c8565b8114620000f157600080fd5b50565b613f3b80620001046000396000f3fe6080604052600436106101ac5760003560e01c8063452a9320116100ec578063d33219b41161008a578063ddf0b00911610064578063ddf0b00914610473578063deaaa7cc14610493578063e23a9a52146104a8578063fe0d94c1146104d5576101ac565b8063d33219b414610429578063da35c6641461043e578063da95691a14610453576101ac565b80637bdbe4d0116100c65780637bdbe4d0146103ca57806391500671146103df578063b58131b0146103ff578063b9a6196114610414576101ac565b8063452a9320146103735780634634c61f14610395578063760fbc13146103b5576101ac565b806320606b7011610159578063328dd98211610133578063328dd982146102e15780633932abb1146103115780633e4f49e61461032657806340e58ee514610353576101ac565b806320606b701461029757806321f43e42146102ac57806324bc1a64146102cc576101ac565b8063071c03321161018a578063071c03321461023357806315373e3d1461025557806317977c6114610277576101ac565b8063013cf08b146101b157806302a251a3146101ef57806306fdde0314610211575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004612a0a565b6104e8565b6040516101e699989796959493929190613cbd565b60405180910390f35b3480156101fb57600080fd5b5061020461054e565b6040516101e691906139f7565b34801561021d57600080fd5b50610226610555565b6040516101e69190613aa6565b34801561023f57600080fd5b5061024861058e565b6040516101e69190613a8a565b34801561026157600080fd5b50610275610270366004612a58565b6105aa565b005b34801561028357600080fd5b5061020461029236600461284d565b6105b9565b3480156102a357600080fd5b506102046105cb565b3480156102b857600080fd5b506102756102c7366004612873565b6105e2565b3480156102d857600080fd5b5061020461071b565b3480156102ed57600080fd5b506103016102fc366004612a0a565b61072b565b6040516101e694939291906139aa565b34801561031d57600080fd5b50610204610a03565b34801561033257600080fd5b50610346610341366004612a0a565b610a08565b6040516101e69190613a98565b34801561035f57600080fd5b5061027561036e366004612a0a565b610bca565b34801561037f57600080fd5b50610388610eb0565b6040516101e69190613854565b3480156103a157600080fd5b506102756103b0366004612a88565b610ecc565b3480156103c157600080fd5b506102756110ae565b3480156103d657600080fd5b50610204611129565b3480156103eb57600080fd5b506102756103fa366004612873565b61112e565b34801561040b57600080fd5b50610204611237565b34801561042057600080fd5b50610275611247565b34801561043557600080fd5b50610248611319565b34801561044a57600080fd5b50610204611335565b34801561045f57600080fd5b5061020461046e3660046128ad565b61133b565b34801561047f57600080fd5b5061027561048e366004612a0a565b61183e565b34801561049f57600080fd5b50610204611b31565b3480156104b457600080fd5b506104c86104c3366004612a28565b611b3d565b6040516101e69190613c07565b6102756104e3366004612a0a565b611bae565b6004602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b6107805b90565b6040518060400160405280601281526020017f59414d20476f7665726e6f7220416c706861000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6105b5338383611de2565b5050565b60056020526000908152604090205481565b6040516105d79061383e565b604051809103902081565b60025473ffffffffffffffffffffffffffffffffffffffff16331461063c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613ae7565b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff90911691630825f38f91839190610673908790602001613854565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016106a2949392919061387d565b600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261071691908101906129d5565b505050565b6b71175249d9818853b800000090565b606080606080600060046000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156107ba57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161078f575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561080c57602002820191906000526020600020905b8154815260200190600101908083116107f8575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156108fd5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156108e95780601f106108be576101008083540402835291602001916108e9565b820191906000526020600020905b8154815290600101906020018083116108cc57829003601f168201915b505050505081526020019060010190610834565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156109ed5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156109d95780601f106109ae576101008083540402835291602001916109d9565b820191906000526020600020905b8154815290600101906020018083116109bc57829003601f168201915b505050505081526020019060010190610924565b5050505090509450945094509450509193509193565b600190565b60008160035410158015610a1c5750600082115b610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613af7565b6000828152600460205260409020600b81015460ff1615610a77576002915050610bc5565b80600701544311610a8c576000915050610bc5565b80600801544311610aa1576001915050610bc5565b80600a01548160090154111580610ac25750610abb61071b565b8160090154105b15610ad1576003915050610bc5565b6002810154610ae4576004915050610bc5565b600b810154610100900460ff1615610b00576007915050610bc5565b6002810154600054604080517fc1a287e20000000000000000000000000000000000000000000000000000000081529051610baf939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b158015610b7257600080fd5b505afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610baa91908101906129b7565b612020565b4210610bbf576006915050610bc5565b60059150505b919050565b6000610bd582610a08565b90506007816007811115610be557fe5b1415610c1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613bc7565b600082815260046020526040902060025473ffffffffffffffffffffffffffffffffffffffff16331480610cf95750610c54611237565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610c8a904390612066565b6040518363ffffffff1660e01b8152600401610ca79291906138cc565b60206040518083038186803b158015610cbf57600080fd5b505afa158015610cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf791908101906129b7565b105b610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b67565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610e735760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610d9e57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610dd357fe5b9060005260206000200154856005018581548110610ded57fe5b90600052602060002001866006018681548110610e0657fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610e35959493929190613969565b600060405180830381600087803b158015610e4f57600080fd5b505af1158015610e63573d6000803e3d6000fd5b505060019092019150610d5f9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610ea391906139f7565b60405180910390a1505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000604051610eda9061383e565b60408051918290038220828201909152601282527f59414d20476f7665726e6f7220416c70686100000000000000000000000000006020909201919091527f63e44b07eb663d132f3b867c12624d91b2a07d728ab5358df3bb5d0d12341eb9610f416120a8565b30604051602001610f559493929190613a05565b6040516020818303038152906040528051906020012090506000604051610f7b90613849565b604051908190038120610f949189908990602001613a3a565b60405160208183030381529060405280519060200120905060008282604051602001610fc192919061380d565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610ffe9493929190613a62565b6020604051602081039080840390855afa158015611020573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613ba7565b6110a3818a8a611de2565b505050505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146110ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613bf7565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600a90565b60025473ffffffffffffffffffffffffffffffffffffffff16331461117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b27565b6000805460405173ffffffffffffffffffffffffffffffffffffffff90911691633a66f901918391906111b6908790602001613854565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016111e5949392919061387d565b602060405180830381600087803b1580156111ff57600080fd5b505af1158015611213573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061071691908101906129b7565b6b204fce5e3e2502611000000090565b60025473ffffffffffffffffffffffffffffffffffffffff163314611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613ab7565b60008054604080517f0e18b681000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692630e18b6819260048084019382900301818387803b1580156112ff57600080fd5b505af1158015611313573d6000803e3d6000fd5b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6000611345611237565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390611373904390612066565b6040518363ffffffff1660e01b8152600401611390929190613862565b60206040518083038186803b1580156113a857600080fd5b505afa1580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113e091908101906129b7565b11611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b97565b84518651148015611429575083518651145b8015611436575082518651145b61146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b57565b85516114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b87565b6114ac611129565b865111156114e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b37565b33600090815260056020526040902054801561159757600061150782610a08565b9050600181600781111561151757fe5b141561154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613bb7565b600081600781111561155d57fe5b1415611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b17565b505b60006115a543610baa610a03565b905060006115b582610baa61054e565b60038054600101905590506115c8612258565b604051806101a0016040528060035481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060046000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030190805190602001906116d29291906122da565b50608082015180516116ee916004840191602090910190612364565b5060a0820151805161170a9160058401916020909101906123ab565b5060c08201518051611726916006840191602090910190612404565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160056000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161182699989796959493929190613c15565b60405180910390a15193505050505b95945050505050565b600461184982610a08565b600781111561185457fe5b1461188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613ac7565b6000818152600460208181526040808420845482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191959461190694429473ffffffffffffffffffffffffffffffffffffffff90931693636a42b8f8938084019390829003018186803b158015610b7257600080fd5b905060005b6003830154811015611af757611aef83600301828154811061192957fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff909216918490811061195e57fe5b906000526020600020015485600501848154811061197857fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015611a245780601f106119f957610100808354040283529160200191611a24565b820191906000526020600020905b815481529060010190602001808311611a0757829003601f168201915b5050505050866006018581548110611a3857fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015611ae45780601f10611ab957610100808354040283529160200191611ae4565b820191906000526020600020905b815481529060010190602001808311611ac757829003601f168201915b5050505050866120ac565b60010161190b565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610ea39085908490613d43565b6040516105d790613849565b611b4561245d565b50600082815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452815460ff808216151583526101009091041615159281019290925260010154918101919091525b92915050565b6005611bb982610a08565b6007811115611bc457fe5b14611bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613ad7565b6000818152600460205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b6003820154811015611da65760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f919084908110611c7857fe5b9060005260206000200154846003018481548110611c9257fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff9092169186908110611cc757fe5b9060005260206000200154866005018681548110611ce157fe5b90600052602060002001876006018781548110611cfa57fe5b9060005260206000200188600201546040518763ffffffff1660e01b8152600401611d29959493929190613969565b6000604051808303818588803b158015611d4257600080fd5b505af1158015611d56573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d9d91908101906129d5565b50600101611c39565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611dd691906139f7565b60405180910390a15050565b6001611ded83610a08565b6007811115611df857fe5b14611e2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613bd7565b600082815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b07565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611efb918a916004016138cc565b60206040518083038186803b158015611f1357600080fd5b505afa158015611f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f4b91908101906129b7565b90508315611f6b57611f61836009015482612020565b6009840155611f7f565b611f7983600a015482612020565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911681177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c46906120109088908890889086906138da565b60405180910390a1505050505050565b60008282018381101561205f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b47565b9392505050565b6000828211156120a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613be7565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b06537906120e7908890889088908890889060200161390f565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161211991906139f7565b60206040518083038186803b15801561213157600080fd5b505afa158015612145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121699190810190612999565b156121a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b77565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f901906121fe908890889088908890889060040161390f565b602060405180830381600087803b15801561221857600080fd5b505af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061225091908101906129b7565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215612354579160200282015b8281111561235457825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906122fa565b5061236092915061247d565b5090565b82805482825590600052602060002090810192821561239f579160200282015b8281111561239f578251825591602001919060010190612384565b506123609291506124b9565b8280548282559060005260206000209081019282156123f8579160200282015b828111156123f857825180516123e89184916020909101906124d3565b50916020019190600101906123cb565b50612360929150612540565b828054828255906000526020600020908101928215612451579160200282015b8281111561245157825180516124419184916020909101906124d3565b5091602001919060010190612424565b50612360929150612563565b604080516060810182526000808252602082018190529181019190915290565b61055291905b808211156123605780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612483565b61055291905b8082111561236057600081556001016124bf565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061251457805160ff191683800117855561239f565b8280016001018555821561239f579182018281111561239f578251825591602001919060010190612384565b61055291905b8082111561236057600061255a8282612586565b50600101612546565b61055291905b8082111561236057600061257d8282612586565b50600101612569565b50805460018160011615610100020316600290046000825580601f106125ac57506125ca565b601f0160209004906000526020600020908101906125ca91906124b9565b50565b8035611ba881613ec9565b600082601f8301126125e957600080fd5b81356125fc6125f782613d78565b613d51565b9150818183526020840193506020810190508385602084028201111561262157600080fd5b60005b8381101561264d578161263788826125cd565b8452506020928301929190910190600101612624565b5050505092915050565b600082601f83011261266857600080fd5b81356126766125f782613d78565b81815260209384019390925082018360005b8381101561264d578135860161269e88826127ad565b8452506020928301929190910190600101612688565b600082601f8301126126c557600080fd5b81356126d36125f782613d78565b81815260209384019390925082018360005b8381101561264d57813586016126fb88826127ad565b84525060209283019291909101906001016126e5565b600082601f83011261272257600080fd5b81356127306125f782613d78565b9150818183526020840193506020810190508385602084028201111561275557600080fd5b60005b8381101561264d578161276b8882612797565b8452506020928301929190910190600101612758565b8035611ba881613edd565b8051611ba881613edd565b8035611ba881613ee6565b8051611ba881613ee6565b600082601f8301126127be57600080fd5b81356127cc6125f782613d99565b915080825260208301602083018583830111156127e857600080fd5b6127f3838284613e5f565b50505092915050565b600082601f83011261280d57600080fd5b815161281b6125f782613d99565b9150808252602083016020830185838301111561283757600080fd5b6127f3838284613e6b565b8035611ba881613eef565b60006020828403121561285f57600080fd5b600061286b84846125cd565b949350505050565b6000806040838503121561288657600080fd5b600061289285856125cd565b92505060206128a385828601612797565b9150509250929050565b600080600080600060a086880312156128c557600080fd5b853567ffffffffffffffff8111156128dc57600080fd5b6128e8888289016125d8565b955050602086013567ffffffffffffffff81111561290557600080fd5b61291188828901612711565b945050604086013567ffffffffffffffff81111561292e57600080fd5b61293a888289016126b4565b935050606086013567ffffffffffffffff81111561295757600080fd5b61296388828901612657565b925050608086013567ffffffffffffffff81111561298057600080fd5b61298c888289016127ad565b9150509295509295909350565b6000602082840312156129ab57600080fd5b600061286b848461278c565b6000602082840312156129c957600080fd5b600061286b84846127a2565b6000602082840312156129e757600080fd5b815167ffffffffffffffff8111156129fe57600080fd5b61286b848285016127fc565b600060208284031215612a1c57600080fd5b600061286b8484612797565b60008060408385031215612a3b57600080fd5b6000612a478585612797565b92505060206128a3858286016125cd565b60008060408385031215612a6b57600080fd5b6000612a778585612797565b92505060206128a385828601612781565b600080600080600060a08688031215612aa057600080fd5b6000612aac8888612797565b9550506020612abd88828901612781565b9450506040612ace88828901612842565b9350506060612adf88828901612797565b925050608061298c88828901612797565b6000612afc8383612b2b565b505060200190565b600061205f8383612ccd565b6000612afc8383612cb3565b612b2581613e37565b82525050565b612b2581613dfe565b6000612b3f82613df1565b612b498185613df5565b9350612b5483613ddf565b8060005b83811015612b82578151612b6c8882612af0565b9750612b7783613ddf565b925050600101612b58565b509495945050505050565b6000612b9882613df1565b612ba28185613df5565b935083602082028501612bb485613ddf565b8060005b85811015612bee5784840389528151612bd18582612b04565b9450612bdc83613ddf565b60209a909a0199925050600101612bb8565b5091979650505050505050565b6000612c0682613df1565b612c108185613df5565b935083602082028501612c2285613ddf565b8060005b85811015612bee5784840389528151612c3f8582612b04565b9450612c4a83613ddf565b60209a909a0199925050600101612c26565b6000612c6782613df1565b612c718185613df5565b9350612c7c83613ddf565b8060005b83811015612b82578151612c948882612b10565b9750612c9f83613ddf565b925050600101612c80565b612b2581613e09565b612b2581610552565b612b25612cc882610552565b610552565b6000612cd882613df1565b612ce28185613df5565b9350612cf2818560208601613e6b565b612cfb81613e97565b9093019392505050565b600081546001811660008114612d225760018114612d6657612da5565b607f6002830416612d338187613df5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612da5565b60028204612d748187613df5565b9550612d7f85613de5565b60005b82811015612d9e57815488820152600190910190602001612d82565b8701945050505b505092915050565b612b2581613e3e565b612b2581613e49565b612b2581613e54565b6000612dd5603983613df5565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b6000612e34604483613df5565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612eb9604583613df5565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612f3e600283610bc5565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612f77604c83613df5565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201527f676f7620677561726469616e0000000000000000000000000000000000000000604082015260600192915050565b6000612ffc601883613df5565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b6000613035602983613df5565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000613094602d83613df5565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b60006130f3605983613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000613178604a83613df5565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f60208201527f7620677561726469616e00000000000000000000000000000000000000000000604082015260600192915050565b60006131fd602883613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b600061325c601183613df5565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000613295604383610bc5565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b600061331a602783610bc5565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000613379604483613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b60006133fe602f83613df5565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b600061345d604483613df5565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b60006134e2602c83613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000613541603f83613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b60006135a0602f83613df5565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b60006135ff605883613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b6000613684603683613df5565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b60006136e3602a83613df5565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b6000613742601583613df5565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b600061377b603683613df5565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646581527f72206d75737420626520676f7620677561726469616e00000000000000000000602082015260400192915050565b805160608301906137de8482612caa565b5060208201516137f16020850182612caa565b5060408201516113136040850182612cb3565b612b2581613e31565b600061381882612f31565b91506138248285612cbc565b6020820191506138348284612cbc565b5060200192915050565b6000611ba882613288565b6000611ba88261330d565b60208101611ba88284612b2b565b604081016138708285612b1c565b61205f6020830184612cb3565b60a0810161388b8287612b2b565b6138986020830186612dbf565b81810360408301526138a981612fef565b905081810360608301526138bd8185612ccd565b90506118356080830184612cb3565b604081016138708285612b2b565b608081016138e88287612b2b565b6138f56020830186612cb3565b6139026040830185612caa565b6118356060830184612cb3565b60a0810161391d8288612b2b565b61392a6020830187612cb3565b818103604083015261393c8186612ccd565b905081810360608301526139508185612ccd565b905061395f6080830184612cb3565b9695505050505050565b60a081016139778288612b2b565b6139846020830187612cb3565b81810360408301526139968186612d05565b905081810360608301526139508185612d05565b608080825281016139bb8187612b34565b905081810360208301526139cf8186612c5c565b905081810360408301526139e38185612bfb565b9050818103606083015261395f8184612b8d565b60208101611ba88284612cb3565b60808101613a138287612cb3565b613a206020830186612cb3565b613a2d6040830185612cb3565b6118356060830184612b2b565b60608101613a488286612cb3565b613a556020830185612cb3565b61286b6040830184612caa565b60808101613a708287612cb3565b613a7d6020830186613804565b6139026040830185612cb3565b60208101611ba88284612dad565b60208101611ba88284612db6565b6020808252810161205f8184612ccd565b60208082528101611ba881612dc8565b60208082528101611ba881612e27565b60208082528101611ba881612eac565b60208082528101611ba881612f6a565b60208082528101611ba881613028565b60208082528101611ba881613087565b60208082528101611ba8816130e6565b60208082528101611ba88161316b565b60208082528101611ba8816131f0565b60208082528101611ba88161324f565b60208082528101611ba88161336c565b60208082528101611ba8816133f1565b60208082528101611ba881613450565b60208082528101611ba8816134d5565b60208082528101611ba881613534565b60208082528101611ba881613593565b60208082528101611ba8816135f2565b60208082528101611ba881613677565b60208082528101611ba8816136d6565b60208082528101611ba881613735565b60208082528101611ba88161376e565b60608101611ba882846137cd565b6101208101613c24828c612cb3565b613c31602083018b612b1c565b8181036040830152613c43818a612b34565b90508181036060830152613c578189612c5c565b90508181036080830152613c6b8188612bfb565b905081810360a0830152613c7f8187612b8d565b9050613c8e60c0830186612cb3565b613c9b60e0830185612cb3565b818103610100830152613cae8184612ccd565b9b9a5050505050505050505050565b6101208101613ccc828c612cb3565b613cd9602083018b612b2b565b613ce6604083018a612cb3565b613cf36060830189612cb3565b613d006080830188612cb3565b613d0d60a0830187612cb3565b613d1a60c0830186612cb3565b613d2760e0830185612caa565b613d35610100830184612caa565b9a9950505050505050505050565b604081016138708285612cb3565b60405181810167ffffffffffffffff81118282101715613d7057600080fd5b604052919050565b600067ffffffffffffffff821115613d8f57600080fd5b5060209081020190565b600067ffffffffffffffff821115613db057600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611ba882613e18565b151590565b80610bc581613ebf565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6000611ba8825b6000611ba882613dfe565b6000611ba882613e0e565b6000611ba882610552565b82818337506000910152565b60005b83811015613e86578181015183820152602001613e6e565b838111156113135750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600881106125ca57fe5b613ed281613dfe565b81146125ca57600080fd5b613ed281613e09565b613ed281610552565b613ed281613e3156fea365627a7a72315820f51612633ca1ff3a12b06e0bf3009d4f673becde4f8c1ca5bb2e97d6e8c407766c6578706572696d656e74616cf564736f6c63430005110040000000000000000000000000ae99ff8fe2236af5083ea979ecf1dbaa0efd07e30000000000000000000000000e2298e3b3390e3b945a5456fbf59ecc3f55da16

Deployed Bytecode

0x6080604052600436106101ac5760003560e01c8063452a9320116100ec578063d33219b41161008a578063ddf0b00911610064578063ddf0b00914610473578063deaaa7cc14610493578063e23a9a52146104a8578063fe0d94c1146104d5576101ac565b8063d33219b414610429578063da35c6641461043e578063da95691a14610453576101ac565b80637bdbe4d0116100c65780637bdbe4d0146103ca57806391500671146103df578063b58131b0146103ff578063b9a6196114610414576101ac565b8063452a9320146103735780634634c61f14610395578063760fbc13146103b5576101ac565b806320606b7011610159578063328dd98211610133578063328dd982146102e15780633932abb1146103115780633e4f49e61461032657806340e58ee514610353576101ac565b806320606b701461029757806321f43e42146102ac57806324bc1a64146102cc576101ac565b8063071c03321161018a578063071c03321461023357806315373e3d1461025557806317977c6114610277576101ac565b8063013cf08b146101b157806302a251a3146101ef57806306fdde0314610211575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004612a0a565b6104e8565b6040516101e699989796959493929190613cbd565b60405180910390f35b3480156101fb57600080fd5b5061020461054e565b6040516101e691906139f7565b34801561021d57600080fd5b50610226610555565b6040516101e69190613aa6565b34801561023f57600080fd5b5061024861058e565b6040516101e69190613a8a565b34801561026157600080fd5b50610275610270366004612a58565b6105aa565b005b34801561028357600080fd5b5061020461029236600461284d565b6105b9565b3480156102a357600080fd5b506102046105cb565b3480156102b857600080fd5b506102756102c7366004612873565b6105e2565b3480156102d857600080fd5b5061020461071b565b3480156102ed57600080fd5b506103016102fc366004612a0a565b61072b565b6040516101e694939291906139aa565b34801561031d57600080fd5b50610204610a03565b34801561033257600080fd5b50610346610341366004612a0a565b610a08565b6040516101e69190613a98565b34801561035f57600080fd5b5061027561036e366004612a0a565b610bca565b34801561037f57600080fd5b50610388610eb0565b6040516101e69190613854565b3480156103a157600080fd5b506102756103b0366004612a88565b610ecc565b3480156103c157600080fd5b506102756110ae565b3480156103d657600080fd5b50610204611129565b3480156103eb57600080fd5b506102756103fa366004612873565b61112e565b34801561040b57600080fd5b50610204611237565b34801561042057600080fd5b50610275611247565b34801561043557600080fd5b50610248611319565b34801561044a57600080fd5b50610204611335565b34801561045f57600080fd5b5061020461046e3660046128ad565b61133b565b34801561047f57600080fd5b5061027561048e366004612a0a565b61183e565b34801561049f57600080fd5b50610204611b31565b3480156104b457600080fd5b506104c86104c3366004612a28565b611b3d565b6040516101e69190613c07565b6102756104e3366004612a0a565b611bae565b6004602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b90970154959673ffffffffffffffffffffffffffffffffffffffff90951695939492939192909160ff8082169161010090041689565b6107805b90565b6040518060400160405280601281526020017f59414d20476f7665726e6f7220416c706861000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6105b5338383611de2565b5050565b60056020526000908152604090205481565b6040516105d79061383e565b604051809103902081565b60025473ffffffffffffffffffffffffffffffffffffffff16331461063c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613ae7565b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff90911691630825f38f91839190610673908790602001613854565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016106a2949392919061387d565b600060405180830381600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261071691908101906129d5565b505050565b6b71175249d9818853b800000090565b606080606080600060046000878152602001908152602001600020905080600301816004018260050183600601838054806020026020016040519081016040528092919081815260200182805480156107ba57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161078f575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561080c57602002820191906000526020600020905b8154815260200190600101908083116107f8575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156108fd5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156108e95780601f106108be576101008083540402835291602001916108e9565b820191906000526020600020905b8154815290600101906020018083116108cc57829003601f168201915b505050505081526020019060010190610834565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156109ed5760008481526020908190208301805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001871615020190941693909304928301859004850281018501909152818152928301828280156109d95780601f106109ae576101008083540402835291602001916109d9565b820191906000526020600020905b8154815290600101906020018083116109bc57829003601f168201915b505050505081526020019060010190610924565b5050505090509450945094509450509193509193565b600190565b60008160035410158015610a1c5750600082115b610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613af7565b6000828152600460205260409020600b81015460ff1615610a77576002915050610bc5565b80600701544311610a8c576000915050610bc5565b80600801544311610aa1576001915050610bc5565b80600a01548160090154111580610ac25750610abb61071b565b8160090154105b15610ad1576003915050610bc5565b6002810154610ae4576004915050610bc5565b600b810154610100900460ff1615610b00576007915050610bc5565b6002810154600054604080517fc1a287e20000000000000000000000000000000000000000000000000000000081529051610baf939273ffffffffffffffffffffffffffffffffffffffff169163c1a287e2916004808301926020929190829003018186803b158015610b7257600080fd5b505afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610baa91908101906129b7565b612020565b4210610bbf576006915050610bc5565b60059150505b919050565b6000610bd582610a08565b90506007816007811115610be557fe5b1415610c1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613bc7565b600082815260046020526040902060025473ffffffffffffffffffffffffffffffffffffffff16331480610cf95750610c54611237565b600180548382015473ffffffffffffffffffffffffffffffffffffffff9182169263782d6fe19290911690610c8a904390612066565b6040518363ffffffff1660e01b8152600401610ca79291906138cc565b60206040518083038186803b158015610cbf57600080fd5b505afa158015610cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf791908101906129b7565b105b610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b67565b600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560005b6003820154811015610e735760005460038301805473ffffffffffffffffffffffffffffffffffffffff9092169163591fcdfe919084908110610d9e57fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff9092169185908110610dd357fe5b9060005260206000200154856005018581548110610ded57fe5b90600052602060002001866006018681548110610e0657fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610e35959493929190613969565b600060405180830381600087803b158015610e4f57600080fd5b505af1158015610e63573d6000803e3d6000fd5b505060019092019150610d5f9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610ea391906139f7565b60405180910390a1505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000604051610eda9061383e565b60408051918290038220828201909152601282527f59414d20476f7665726e6f7220416c70686100000000000000000000000000006020909201919091527f63e44b07eb663d132f3b867c12624d91b2a07d728ab5358df3bb5d0d12341eb9610f416120a8565b30604051602001610f559493929190613a05565b6040516020818303038152906040528051906020012090506000604051610f7b90613849565b604051908190038120610f949189908990602001613a3a565b60405160208183030381529060405280519060200120905060008282604051602001610fc192919061380d565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610ffe9493929190613a62565b6020604051602081039080840390855afa158015611020573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613ba7565b6110a3818a8a611de2565b505050505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146110ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613bf7565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600a90565b60025473ffffffffffffffffffffffffffffffffffffffff16331461117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b27565b6000805460405173ffffffffffffffffffffffffffffffffffffffff90911691633a66f901918391906111b6908790602001613854565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016111e5949392919061387d565b602060405180830381600087803b1580156111ff57600080fd5b505af1158015611213573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061071691908101906129b7565b6b204fce5e3e2502611000000090565b60025473ffffffffffffffffffffffffffffffffffffffff163314611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613ab7565b60008054604080517f0e18b681000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692630e18b6819260048084019382900301818387803b1580156112ff57600080fd5b505af1158015611313573d6000803e3d6000fd5b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6000611345611237565b6001805473ffffffffffffffffffffffffffffffffffffffff169063782d6fe1903390611373904390612066565b6040518363ffffffff1660e01b8152600401611390929190613862565b60206040518083038186803b1580156113a857600080fd5b505afa1580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113e091908101906129b7565b11611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b97565b84518651148015611429575083518651145b8015611436575082518651145b61146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b57565b85516114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b87565b6114ac611129565b865111156114e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b37565b33600090815260056020526040902054801561159757600061150782610a08565b9050600181600781111561151757fe5b141561154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613bb7565b600081600781111561155d57fe5b1415611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b17565b505b60006115a543610baa610a03565b905060006115b582610baa61054e565b60038054600101905590506115c8612258565b604051806101a0016040528060035481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060046000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030190805190602001906116d29291906122da565b50608082015180516116ee916004840191602090910190612364565b5060a0820151805161170a9160058401916020909101906123ab565b5060c08201518051611726916006840191602090910190612404565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160056000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161182699989796959493929190613c15565b60405180910390a15193505050505b95945050505050565b600461184982610a08565b600781111561185457fe5b1461188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613ac7565b6000818152600460208181526040808420845482517f6a42b8f8000000000000000000000000000000000000000000000000000000008152925191959461190694429473ffffffffffffffffffffffffffffffffffffffff90931693636a42b8f8938084019390829003018186803b158015610b7257600080fd5b905060005b6003830154811015611af757611aef83600301828154811061192957fe5b60009182526020909120015460048501805473ffffffffffffffffffffffffffffffffffffffff909216918490811061195e57fe5b906000526020600020015485600501848154811061197857fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015611a245780601f106119f957610100808354040283529160200191611a24565b820191906000526020600020905b815481529060010190602001808311611a0757829003601f168201915b5050505050866006018581548110611a3857fe5b600091825260209182902001805460408051601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600187161502019094169390930492830185900485028101850190915281815292830182828015611ae45780601f10611ab957610100808354040283529160200191611ae4565b820191906000526020600020905b815481529060010190602001808311611ac757829003601f168201915b5050505050866120ac565b60010161190b565b50600282018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610ea39085908490613d43565b6040516105d790613849565b611b4561245d565b50600082815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452600c018252918290208251606081018452815460ff808216151583526101009091041615159281019290925260010154918101919091525b92915050565b6005611bb982610a08565b6007811115611bc457fe5b14611bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613ad7565b6000818152600460205260408120600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055905b6003820154811015611da65760005460048301805473ffffffffffffffffffffffffffffffffffffffff90921691630825f38f919084908110611c7857fe5b9060005260206000200154846003018481548110611c9257fe5b60009182526020909120015460048601805473ffffffffffffffffffffffffffffffffffffffff9092169186908110611cc757fe5b9060005260206000200154866005018681548110611ce157fe5b90600052602060002001876006018781548110611cfa57fe5b9060005260206000200188600201546040518763ffffffff1660e01b8152600401611d29959493929190613969565b6000604051808303818588803b158015611d4257600080fd5b505af1158015611d56573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d9d91908101906129d5565b50600101611c39565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611dd691906139f7565b60405180910390a15050565b6001611ded83610a08565b6007811115611df857fe5b14611e2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613bd7565b600082815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452600c8101909252909120805460ff1615611e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b07565b60015460078301546040517f782d6fe100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff169163782d6fe191611efb918a916004016138cc565b60206040518083038186803b158015611f1357600080fd5b505afa158015611f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f4b91908101906129b7565b90508315611f6b57611f61836009015482612020565b6009840155611f7f565b611f7983600a015482612020565b600a8401555b815460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911681177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008615150217835582018190556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c46906120109088908890889086906138da565b60405180910390a1505050505050565b60008282018381101561205f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b47565b9392505050565b6000828211156120a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613be7565b50900390565b4690565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091169063f2b06537906120e7908890889088908890889060200161390f565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161211991906139f7565b60206040518083038186803b15801561213157600080fd5b505afa158015612145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121699190810190612999565b156121a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063390613b77565b6000546040517f3a66f90100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633a66f901906121fe908890889088908890889060040161390f565b602060405180830381600087803b15801561221857600080fd5b505af115801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061225091908101906129b7565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215612354579160200282015b8281111561235457825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906122fa565b5061236092915061247d565b5090565b82805482825590600052602060002090810192821561239f579160200282015b8281111561239f578251825591602001919060010190612384565b506123609291506124b9565b8280548282559060005260206000209081019282156123f8579160200282015b828111156123f857825180516123e89184916020909101906124d3565b50916020019190600101906123cb565b50612360929150612540565b828054828255906000526020600020908101928215612451579160200282015b8281111561245157825180516124419184916020909101906124d3565b5091602001919060010190612424565b50612360929150612563565b604080516060810182526000808252602082018190529181019190915290565b61055291905b808211156123605780547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101612483565b61055291905b8082111561236057600081556001016124bf565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061251457805160ff191683800117855561239f565b8280016001018555821561239f579182018281111561239f578251825591602001919060010190612384565b61055291905b8082111561236057600061255a8282612586565b50600101612546565b61055291905b8082111561236057600061257d8282612586565b50600101612569565b50805460018160011615610100020316600290046000825580601f106125ac57506125ca565b601f0160209004906000526020600020908101906125ca91906124b9565b50565b8035611ba881613ec9565b600082601f8301126125e957600080fd5b81356125fc6125f782613d78565b613d51565b9150818183526020840193506020810190508385602084028201111561262157600080fd5b60005b8381101561264d578161263788826125cd565b8452506020928301929190910190600101612624565b5050505092915050565b600082601f83011261266857600080fd5b81356126766125f782613d78565b81815260209384019390925082018360005b8381101561264d578135860161269e88826127ad565b8452506020928301929190910190600101612688565b600082601f8301126126c557600080fd5b81356126d36125f782613d78565b81815260209384019390925082018360005b8381101561264d57813586016126fb88826127ad565b84525060209283019291909101906001016126e5565b600082601f83011261272257600080fd5b81356127306125f782613d78565b9150818183526020840193506020810190508385602084028201111561275557600080fd5b60005b8381101561264d578161276b8882612797565b8452506020928301929190910190600101612758565b8035611ba881613edd565b8051611ba881613edd565b8035611ba881613ee6565b8051611ba881613ee6565b600082601f8301126127be57600080fd5b81356127cc6125f782613d99565b915080825260208301602083018583830111156127e857600080fd5b6127f3838284613e5f565b50505092915050565b600082601f83011261280d57600080fd5b815161281b6125f782613d99565b9150808252602083016020830185838301111561283757600080fd5b6127f3838284613e6b565b8035611ba881613eef565b60006020828403121561285f57600080fd5b600061286b84846125cd565b949350505050565b6000806040838503121561288657600080fd5b600061289285856125cd565b92505060206128a385828601612797565b9150509250929050565b600080600080600060a086880312156128c557600080fd5b853567ffffffffffffffff8111156128dc57600080fd5b6128e8888289016125d8565b955050602086013567ffffffffffffffff81111561290557600080fd5b61291188828901612711565b945050604086013567ffffffffffffffff81111561292e57600080fd5b61293a888289016126b4565b935050606086013567ffffffffffffffff81111561295757600080fd5b61296388828901612657565b925050608086013567ffffffffffffffff81111561298057600080fd5b61298c888289016127ad565b9150509295509295909350565b6000602082840312156129ab57600080fd5b600061286b848461278c565b6000602082840312156129c957600080fd5b600061286b84846127a2565b6000602082840312156129e757600080fd5b815167ffffffffffffffff8111156129fe57600080fd5b61286b848285016127fc565b600060208284031215612a1c57600080fd5b600061286b8484612797565b60008060408385031215612a3b57600080fd5b6000612a478585612797565b92505060206128a3858286016125cd565b60008060408385031215612a6b57600080fd5b6000612a778585612797565b92505060206128a385828601612781565b600080600080600060a08688031215612aa057600080fd5b6000612aac8888612797565b9550506020612abd88828901612781565b9450506040612ace88828901612842565b9350506060612adf88828901612797565b925050608061298c88828901612797565b6000612afc8383612b2b565b505060200190565b600061205f8383612ccd565b6000612afc8383612cb3565b612b2581613e37565b82525050565b612b2581613dfe565b6000612b3f82613df1565b612b498185613df5565b9350612b5483613ddf565b8060005b83811015612b82578151612b6c8882612af0565b9750612b7783613ddf565b925050600101612b58565b509495945050505050565b6000612b9882613df1565b612ba28185613df5565b935083602082028501612bb485613ddf565b8060005b85811015612bee5784840389528151612bd18582612b04565b9450612bdc83613ddf565b60209a909a0199925050600101612bb8565b5091979650505050505050565b6000612c0682613df1565b612c108185613df5565b935083602082028501612c2285613ddf565b8060005b85811015612bee5784840389528151612c3f8582612b04565b9450612c4a83613ddf565b60209a909a0199925050600101612c26565b6000612c6782613df1565b612c718185613df5565b9350612c7c83613ddf565b8060005b83811015612b82578151612c948882612b10565b9750612c9f83613ddf565b925050600101612c80565b612b2581613e09565b612b2581610552565b612b25612cc882610552565b610552565b6000612cd882613df1565b612ce28185613df5565b9350612cf2818560208601613e6b565b612cfb81613e97565b9093019392505050565b600081546001811660008114612d225760018114612d6657612da5565b607f6002830416612d338187613df5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168152955050602085019250612da5565b60028204612d748187613df5565b9550612d7f85613de5565b60005b82811015612d9e57815488820152600190910190602001612d82565b8701945050505b505092915050565b612b2581613e3e565b612b2581613e49565b612b2581613e54565b6000612dd5603983613df5565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b6000612e34604483613df5565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c792062652071756575656420696620697420697320737563636560208201527f6564656400000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612eb9604583613df5565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208201527f7565756564000000000000000000000000000000000000000000000000000000604082015260600192915050565b6000612f3e600283610bc5565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000612f77604c83613df5565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201527f676f7620677561726469616e0000000000000000000000000000000000000000604082015260600192915050565b6000612ffc601883613df5565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b6000613035602983613df5565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707281527f6f706f73616c2069640000000000000000000000000000000000000000000000602082015260400192915050565b6000613094602d83613df5565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081527f616c726561647920766f74656400000000000000000000000000000000000000602082015260400192915050565b60006130f3605983613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b6000613178604a83613df5565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f60208201527f7620677561726469616e00000000000000000000000000000000000000000000604082015260600192915050565b60006131fd602883613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981527f20616374696f6e73000000000000000000000000000000000000000000000000602082015260400192915050565b600061325c601183613df5565b7f6164646974696f6e206f766572666c6f77000000000000000000000000000000815260200192915050565b6000613295604383610bc5565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b600061331a602783610bc5565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207381527f7570706f72742900000000000000000000000000000000000000000000000000602082015260270192915050565b6000613379604483613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208201527f6174636800000000000000000000000000000000000000000000000000000000604082015260600192915050565b60006133fe602f83613df5565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722081527f61626f7665207468726573686f6c640000000000000000000000000000000000602082015260400192915050565b600061345d604483613df5565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208201527f2065746100000000000000000000000000000000000000000000000000000000604082015260600192915050565b60006134e2602c83613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81527f7669646520616374696f6e730000000000000000000000000000000000000000602082015260400192915050565b6000613541603f83613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b60006135a0602f83613df5565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81527f76616c6964207369676e61747572650000000000000000000000000000000000602082015260400192915050565b60006135ff605883613df5565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b6000613684603683613df5565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636181527f6e63656c2065786563757465642070726f706f73616c00000000000000000000602082015260400192915050565b60006136e3602a83613df5565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6781527f20697320636c6f73656400000000000000000000000000000000000000000000602082015260400192915050565b6000613742601583613df5565b7f7375627472616374696f6e20756e646572666c6f770000000000000000000000815260200192915050565b600061377b603683613df5565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e646581527f72206d75737420626520676f7620677561726469616e00000000000000000000602082015260400192915050565b805160608301906137de8482612caa565b5060208201516137f16020850182612caa565b5060408201516113136040850182612cb3565b612b2581613e31565b600061381882612f31565b91506138248285612cbc565b6020820191506138348284612cbc565b5060200192915050565b6000611ba882613288565b6000611ba88261330d565b60208101611ba88284612b2b565b604081016138708285612b1c565b61205f6020830184612cb3565b60a0810161388b8287612b2b565b6138986020830186612dbf565b81810360408301526138a981612fef565b905081810360608301526138bd8185612ccd565b90506118356080830184612cb3565b604081016138708285612b2b565b608081016138e88287612b2b565b6138f56020830186612cb3565b6139026040830185612caa565b6118356060830184612cb3565b60a0810161391d8288612b2b565b61392a6020830187612cb3565b818103604083015261393c8186612ccd565b905081810360608301526139508185612ccd565b905061395f6080830184612cb3565b9695505050505050565b60a081016139778288612b2b565b6139846020830187612cb3565b81810360408301526139968186612d05565b905081810360608301526139508185612d05565b608080825281016139bb8187612b34565b905081810360208301526139cf8186612c5c565b905081810360408301526139e38185612bfb565b9050818103606083015261395f8184612b8d565b60208101611ba88284612cb3565b60808101613a138287612cb3565b613a206020830186612cb3565b613a2d6040830185612cb3565b6118356060830184612b2b565b60608101613a488286612cb3565b613a556020830185612cb3565b61286b6040830184612caa565b60808101613a708287612cb3565b613a7d6020830186613804565b6139026040830185612cb3565b60208101611ba88284612dad565b60208101611ba88284612db6565b6020808252810161205f8184612ccd565b60208082528101611ba881612dc8565b60208082528101611ba881612e27565b60208082528101611ba881612eac565b60208082528101611ba881612f6a565b60208082528101611ba881613028565b60208082528101611ba881613087565b60208082528101611ba8816130e6565b60208082528101611ba88161316b565b60208082528101611ba8816131f0565b60208082528101611ba88161324f565b60208082528101611ba88161336c565b60208082528101611ba8816133f1565b60208082528101611ba881613450565b60208082528101611ba8816134d5565b60208082528101611ba881613534565b60208082528101611ba881613593565b60208082528101611ba8816135f2565b60208082528101611ba881613677565b60208082528101611ba8816136d6565b60208082528101611ba881613735565b60208082528101611ba88161376e565b60608101611ba882846137cd565b6101208101613c24828c612cb3565b613c31602083018b612b1c565b8181036040830152613c43818a612b34565b90508181036060830152613c578189612c5c565b90508181036080830152613c6b8188612bfb565b905081810360a0830152613c7f8187612b8d565b9050613c8e60c0830186612cb3565b613c9b60e0830185612cb3565b818103610100830152613cae8184612ccd565b9b9a5050505050505050505050565b6101208101613ccc828c612cb3565b613cd9602083018b612b2b565b613ce6604083018a612cb3565b613cf36060830189612cb3565b613d006080830188612cb3565b613d0d60a0830187612cb3565b613d1a60c0830186612cb3565b613d2760e0830185612caa565b613d35610100830184612caa565b9a9950505050505050505050565b604081016138708285612cb3565b60405181810167ffffffffffffffff81118282101715613d7057600080fd5b604052919050565b600067ffffffffffffffff821115613d8f57600080fd5b5060209081020190565b600067ffffffffffffffff821115613db057600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b60009081526020902090565b5190565b90815260200190565b6000611ba882613e18565b151590565b80610bc581613ebf565b73ffffffffffffffffffffffffffffffffffffffff1690565b60ff1690565b6000611ba8825b6000611ba882613dfe565b6000611ba882613e0e565b6000611ba882610552565b82818337506000910152565b60005b83811015613e86578181015183820152602001613e6e565b838111156113135750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b600881106125ca57fe5b613ed281613dfe565b81146125ca57600080fd5b613ed281613e09565b613ed281610552565b613ed281613e3156fea365627a7a72315820f51612633ca1ff3a12b06e0bf3009d4f673becde4f8c1ca5bb2e97d6e8c407766c6578706572696d656e74616cf564736f6c63430005110040

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

000000000000000000000000ae99ff8fe2236af5083ea979ecf1dbaa0efd07e30000000000000000000000000e2298e3b3390e3b945a5456fbf59ecc3f55da16

-----Decoded View---------------
Arg [0] : timelock_ (address): 0xaE99fF8fe2236AF5083Ea979Ecf1DbAA0EFD07E3
Arg [1] : yam_ (address): 0x0e2298E3B3390e3b945a5456fBf59eCc3f55DA16

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ae99ff8fe2236af5083ea979ecf1dbaa0efd07e3
Arg [1] : 0000000000000000000000000e2298e3b3390e3b945a5456fbf59ecc3f55da16


Deployed Bytecode Sourcemap

5758:15732:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9424:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9424:46:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6745:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6745:70:0;;;:::i;:::-;;;;;;;;5831:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5831:50:0;;;:::i;:::-;;;;;;;;7002:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7002:23:0;;;:::i;:::-;;;;;;;;17795:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17795:141:0;;;;;;;;:::i;:::-;;9534:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9534:53:0;;;;;;;;:::i;9660:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9660:122:0;;;:::i;20605:378::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20605:378:0;;;;;;;;:::i;6023:77::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6023:77:0;;;:::i;16119:385::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16119:385:0;;;;;;;;:::i;:::-;;;;;;;;;;;6595:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6595:66:0;;;:::i;16707:1080::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16707:1080:0;;;;;;;;:::i;:::-;;;;;;;;15343:768;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15343:768:0;;;;;;;;:::i;7088:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7088:23:0;;;:::i;:::-;;;;;;;;17944:987;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17944:987:0;;;;;;;;:::i;20034:183::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20034:183:0;;;:::i;6411:77::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6411:77:0;;;:::i;20225:372::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20225:372:0;;;;;;;;:::i;6216:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6216:83:0;;;:::i;19836:190::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19836:190:0;;;:::i;6898:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6898:33:0;;;:::i;7167:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7167:28:0;;;:::i;10952:2386::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10952:2386:0;;;;;;;;:::i;13346:700::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13346:700:0;;;;;;;;:::i;9872:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9872:94:0;;;:::i;16512:187::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16512:187:0;;;;;;;;:::i;:::-;;;;;;;;14733:602;;;;;;;;;:::i;9424:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6745:70::-;6808:4;6745:70;;:::o;5831:50::-;;;;;;;;;;;;;;;;;;;:::o;7002:23::-;;;;;;:::o;17795:141::-;17886:42;17896:10;17908;17920:7;17886:9;:42::i;:::-;17795:141;;:::o;9534:53::-;;;;;;;;;;;;;:::o;9660:122::-;9702:80;;;;;;;;;;;;;;9660:122;:::o;20605:378::-;20764:8;;;;20750:10;:22;20742:111;;;;;;;;;;;;;;;;;;;;;;20864:8;;;20942:27;;20864:8;;;;;:27;;:8;;;20942:27;;20953:15;;20942:27;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20942:27:0;;;20971:3;20864:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20864:111:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20864:111:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;20864:111:0;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;20864:111:0;;;;;;;;;;20605:378;;:::o;6023:77::-;6085:12;6023:77;:::o;16119:385::-;16221:24;16260:20;16295:26;16336:24;16388:18;16409:9;:21;16419:10;16409:21;;;;;;;;;;;16388:42;;16449:1;:9;;16460:1;:8;;16470:1;:12;;16484:1;:11;;16441:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16119:385;;;;;:::o;6595:66::-;6657:1;6595:66;:::o;16707:1080::-;16790:13;16846:10;16829:13;;:27;;:45;;;;;16873:1;16860:10;:14;16829:45;16821:99;;;;;;;;;;;;;;16931:25;16959:21;;;:9;:21;;;;;16995:17;;;;;;16991:789;;;17036:22;17029:29;;;;;16991:789;17096:8;:19;;;17080:12;:35;17076:704;;17139:21;17132:28;;;;;17076:704;17198:8;:17;;;17182:12;:33;17178:602;;17239:20;17232:27;;;;;17178:602;17302:8;:21;;;17281:8;:17;;;:42;;:79;;;;17347:13;:11;:13::i;:::-;17327:8;:17;;;:33;17281:79;17277:503;;;17384:22;17377:29;;;;;17277:503;17428:12;;;;17424:356;;17469:23;17462:30;;;;;17424:356;17514:17;;;;;;;;;17510:270;;;17555:22;17548:29;;;;;17510:270;17625:12;;;;17639:8;;:23;;;;;;;;17618:45;;17625:12;17639:8;;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;17639:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17639:23:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17639:23:0;;;;;;;;;17618:6;:45::i;:::-;17599:15;:64;17595:185;;17687:21;17680:28;;;;;17595:185;17748:20;17741:27;;;16707:1080;;;;:::o;15343:768::-;15411:19;15433:17;15439:10;15433:5;:17::i;:::-;15411:39;-1:-1:-1;15478:22:0;15469:5;:31;;;;;;;;;;15461:98;;;;;;;;;;;;;;15572:25;15600:21;;;:9;:21;;;;;15654:8;;;;15640:10;:22;;:109;;;15730:19;:17;:19::i;:::-;15666:3;;;15684:17;;;;15666:3;;;;;:17;;15684;;;;15703:23;;15710:12;;15703:6;:23::i;:::-;15666:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15666:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15666:61:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15666:61:0;;;;;;;;;:83;15640:109;15632:169;;;;;;;;;;;;;;15814:17;;;:24;;;;15834:4;15814:24;;;:17;15849:209;15873:16;;;:23;15869:27;;15849:209;;;15918:8;;15945:16;;;:19;;15918:8;;;;;:26;;15945:16;15962:1;;15945:19;;;;;;;;;;;;;;;;15966:15;;;:18;;15945:19;;;;;15982:1;;15966:18;;;;;;;;;;;;;;15986:8;:19;;16006:1;15986:22;;;;;;;;;;;;;;;16010:8;:18;;16029:1;16010:21;;;;;;;;;;;;;;;16033:8;:12;;;15918:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15918:128:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15898:3:0;;;;;-1:-1:-1;15849:209:0;;-1:-1:-1;15849:209:0;;;16075:28;16092:10;16075:28;;;;;;;;;;;;;;;15343:768;;;:::o;7088:23::-;;;;;;:::o;17944:987::-;18116:23;9702:80;;;;;;;;;;;;;;;;18245:4;;;;;;;;;;;;;;;;;;18229:22;18270:12;:10;:12::i;:::-;18309:4;18166:163;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18166:163:0;;;18142:198;;;;;;18116:224;;18353:18;9914:52;;;;;;;;;;;;;;;18398:114;;18461:10;;18490:7;;18398:114;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18398:114:0;;;18374:149;;;;;;18353:170;;18536:14;18641:15;18675:10;18577:123;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18577:123:0;;;18553:158;;;;;;18536:175;;18724:17;18744:26;18754:6;18762:1;18765;18768;18744:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;18744:26:0;;;;;;-1:-1:-1;;18789:23:0;;;18781:83;;;;;;;;;;;;;;18882:41;18892:9;18903:10;18915:7;18882:9;:41::i;:::-;18875:48;;;;17944:987;;;;;:::o;20034:183::-;20110:8;;;;20096:10;:22;20088:89;;;;;;;;;;;;;;20188:8;:21;;;;;;20034:183::o;6411:77::-;6483:2;6411:77;:::o;20225:372::-;20382:8;;;;20368:10;:22;20360:109;;;;;;;;;;;;;;20480:8;;;20556:27;;20480:8;;;;;:25;;:8;;;20556:27;;20567:15;;20556:27;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20556:27:0;;;20585:3;20480:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20480:109:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20480:109:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;20480:109:0;;;;;;;;6216:83;6284:12;6216:83;:::o;19836:190::-;19915:8;;;;19901:10;:22;19893:92;;;;;;;;;;;;;;19996:8;;;:22;;;;;;;;:8;;;;;:20;;:22;;;;;;;;;;:8;;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;19996:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19996:22:0;;;;19836:190::o;6898:33::-;;;;;;:::o;7167:28::-;;;;:::o;10952:2386::-;11184:7;11274:19;:17;:19::i;:::-;11217:3;;;;;;:17;;11235:10;;11247:23;;11254:12;;11247:6;:23::i;:::-;11217:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11217:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11217:54:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11217:54:0;;;;;;;;;:76;11209:152;;;;;;;;;;;;;;11398:6;:13;11380:7;:14;:31;:70;;;;;11433:10;:17;11415:7;:14;:35;11380:70;:108;;;;;11472:9;:16;11454:7;:14;:34;11380:108;11372:189;;;;;;;;;;;;;;11580:14;;11572:76;;;;;;;;;;;;;;11685:23;:21;:23::i;:::-;11667:7;:14;:41;;11659:94;;;;;;;;;;;;;;11811:10;11766:24;11793:29;;;:17;:29;;;;;;11837:21;;11833:454;;11873:42;11918:23;11924:16;11918:5;:23::i;:::-;11873:68;-1:-1:-1;11994:20:0;11962:28;:52;;;;;;;;;;11954:153;;;;;;;;;;;;;;12160:21;12128:28;:53;;;;;;;;;;12120:155;;;;;;;;;;;;;;11833:454;;12299:18;12320:35;12327:12;12341:13;:11;:13::i;12320:35::-;12299:56;;12366:16;12385:34;12392:10;12404:14;:12;:14::i;12385:34::-;12432:13;:15;;;;;;12366:53;-1:-1:-1;12458:27:0;;:::i;:::-;12488:427;;;;;;;;12516:13;;12488:427;;;;12554:10;12488:427;;;;;;12584:1;12488:427;;;;12609:7;12488:427;;;;12639:6;12488:427;;;;12672:10;12488:427;;;;12708:9;12488:427;;;;12744:10;12488:427;;;;12779:8;12488:427;;;;12812:1;12488:427;;;;12842:1;12488:427;;;;12868:5;12488:427;;;;;;12898:5;12488:427;;;;;12458:457;;12956:11;12928:9;:25;12938:11;:14;;;12928:25;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12928:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12928:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12928:39:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13020:11;:14;;;12978:17;:39;12996:11;:20;;;12978:39;;;;;;;;;;;;;;;:56;;;;13052:246;13082:11;:14;;;13111:10;13136:7;13158:6;13179:10;13204:9;13228:10;13253:8;13276:11;13052:246;;;;;;;;;;;;;;;;;;;;;;;13316:14;;-1:-1:-1;;;;10952:2386:0;;;;;;;;:::o;13346:700::-;13442:23;13421:17;13427:10;13421:5;:17::i;:::-;:44;;;;;;;;;13413:125;;;;;;;;;;;;;;13549:25;13577:21;;;:9;:21;;;;;;;;13647:8;;:16;;;;;;;13577:21;;13549:25;13623:41;;13630:15;;13647:8;;;;;:14;;:16;;;;;;;;;;:8;:16;;;5:2:-1;;;;30:1;27;20:12;13623:41:0;13609:55;-1:-1:-1;13680:9:0;13675:288;13699:16;;;:23;13695:27;;13675:288;;;13744:207;13777:8;:16;;13794:1;13777:19;;;;;;;;;;;;;;;;;;13815:15;;;:18;;13777:19;;;;;13831:1;;13815:18;;;;;;;;;;;;;;13852:8;:19;;13872:1;13852:22;;;;;;;;;;;;;;;;;;13744:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13852:22;13744:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13893:8;:18;;13912:1;13893:21;;;;;;;;;;;;;;;;;;13744:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13893:21;13744:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13933:3;13744:14;:207::i;:::-;13724:3;;13675:288;;;-1:-1:-1;13973:12:0;;;:18;;;14007:31;;;;;;14022:10;;13988:3;;14007:31;;9872:94;9914:52;;;;;;16512:187;16615:14;;:::i;:::-;-1:-1:-1;16654:21:0;;;;:9;:21;;;;;;;;:37;;;;;:30;;:37;;;;;;16647:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16512:187;;;;;:::o;14733:602::-;14848:20;14827:17;14833:10;14827:5;:17::i;:::-;:41;;;;;;;;;14819:123;;;;;;;;;;;;;;14953:25;14981:21;;;:9;:21;;;;;15013:17;;;:24;;;;;;;;14981:21;15048:236;15072:16;;;:23;15068:27;;15048:236;;;15117:8;;15151:15;;;:18;;15117:8;;;;;:27;;15151:15;15167:1;;15151:18;;;;;;;;;;;;;;15171:8;:16;;15188:1;15171:19;;;;;;;;;;;;;;;;;;15192:15;;;:18;;15171:19;;;;;15208:1;;15192:18;;;;;;;;;;;;;;15212:8;:19;;15232:1;15212:22;;;;;;;;;;;;;;;15236:8;:18;;15255:1;15236:21;;;;;;;;;;;;;;;15259:8;:12;;;15117:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15117:155:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15117:155:0;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;15117:155:0;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;15117:155:0;;;;;;;;;-1:-1:-1;15097:3:0;;15048:236;;;;15299:28;15316:10;15299:28;;;;;;;;;;;;;;;14733:602;;:::o;18939:889::-;19104:20;19083:17;19089:10;19083:5;:17::i;:::-;:41;;;;;;;;;19075:96;;;;;;;;;;;;;;19182:25;19210:21;;;:9;:21;;;;;;;;19268:24;;;;;:17;;;:24;;;;;;19311:16;;;;:25;19303:83;;;;;;;;;;;;;;19413:3;;19438:19;;;;19413:45;;;;;19397:13;;19413:3;;;:17;;:45;;19431:5;;19413:45;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19413:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19413:45:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;19413:45:0;;;;;;;;;19397:61;;19475:7;19471:185;;;19519:32;19526:8;:17;;;19545:5;19519:6;:32::i;:::-;19499:17;;;:52;19471:185;;;19608:36;19615:8;:21;;;19638:5;19608:6;:36::i;:::-;19584:21;;;:60;19471:185;19668:23;;19687:4;19668:23;;;;;;19702:25;;19668:23;19702:25;;;;;;;19738:13;;:21;;;19777:43;;;;;;19786:5;;19793:10;;19702:25;;19738:21;;19777:43;;;;;;;;;;18939:889;;;;;;:::o;20991:172::-;21052:7;21084:5;;;21108:6;;;;21100:36;;;;;;;;;;;;;;21154:1;20991:172;-1:-1:-1;;;20991:172:0:o;21171:152::-;21232:7;21265:1;21260;:6;;21252:40;;;;;;;;;;;;;;-1:-1:-1;21310:5:0;;;21171:152::o;21331:156::-;21444:9;21331:156;:::o;14054:671::-;14261:8;;14335:183;;14261:8;;;;;:27;;14335:183;;14370:6;;14401:5;;14431:9;;14465:4;;14494:3;;14335:183;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14335:183:0;;;14305:230;;;;;;14261:287;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14261:287:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14261:287:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14261:287:0;;;;;;;;;14260:288;14252:390;;;;;;;;;;;;;;14655:8;;:62;;;;;:8;;;;;:25;;:62;;14681:6;;14689:5;;14696:9;;14707:4;;14713:3;;14655:62;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14655:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14655:62:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14655:62:0;;;;;;;;;;14054:671;;;;;:::o;5758:15732::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5758:15732:0;;;;;;;-1:-1:-1;5758:15732:0;;;-1:-1:-1;5758:15732:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5758:15732:0;;;-1:-1:-1;5758:15732:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;5758:15732:0;;;-1:-1:-1;5758:15732:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;5758:15732:0;;;-1:-1:-1;5758:15732:0;:::i;:::-;;;;;;;;;-1:-1:-1;5758:15732:0;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;891:693;;1013:3;1006:4;998:6;994:17;990:27;980:2;;1031:1;1028;1021:12;980:2;1068:6;1055:20;1090:85;1105:69;1167:6;1105:69;;1090:85;1203:21;;;1247:4;1235:17;;;;1081:94;;-1:-1;1260:14;;1235:17;1355:1;1340:238;1365:6;1362:1;1359:13;1340:238;;;1448:3;1435:17;1427:6;1423:30;1472:42;1510:3;1498:10;1472:42;;;1460:55;;-1:-1;1538:4;1529:14;;;;1557;;;;;1387:1;1380:9;1340:238;;1609:696;;1732:3;1725:4;1717:6;1713:17;1709:27;1699:2;;1750:1;1747;1740:12;1699:2;1787:6;1774:20;1809:86;1824:70;1887:6;1824:70;;1809:86;1923:21;;;1967:4;1955:17;;;;1800:95;;-1:-1;1980:14;;1955:17;2075:1;2060:239;2085:6;2082:1;2079:13;2060:239;;;2168:3;2155:17;2147:6;2143:30;2192:43;2231:3;2219:10;2192:43;;;2180:56;;-1:-1;2259:4;2250:14;;;;2278;;;;;2107:1;2100:9;2060:239;;2331:707;;2448:3;2441:4;2433:6;2429:17;2425:27;2415:2;;2466:1;2463;2456:12;2415:2;2503:6;2490:20;2525:80;2540:64;2597:6;2540:64;;2525:80;2516:89;;2622:5;2647:6;2640:5;2633:21;2677:4;2669:6;2665:17;2655:27;;2699:4;2694:3;2690:14;2683:21;;2752:6;2799:3;2791:4;2783:6;2779:17;2774:3;2770:27;2767:36;2764:2;;;2816:1;2813;2806:12;2764:2;2841:1;2826:206;2851:6;2848:1;2845:13;2826:206;;;2909:3;2931:37;2964:3;2952:10;2931:37;;;2919:50;;-1:-1;2992:4;2983:14;;;;3011;;;;;2873:1;2866:9;2826:206;;3046:124;3110:20;;3135:30;3110:20;3135:30;;3177:128;3252:13;;3270:30;3252:13;3270:30;;3312:130;3379:20;;3404:33;3379:20;3404:33;;3449:134;3527:13;;3545:33;3527:13;3545:33;;3591:432;;3688:3;3681:4;3673:6;3669:17;3665:27;3655:2;;3706:1;3703;3696:12;3655:2;3743:6;3730:20;3765:60;3780:44;3817:6;3780:44;;3765:60;3756:69;;3845:6;3838:5;3831:21;3881:4;3873:6;3869:17;3914:4;3907:5;3903:16;3949:3;3940:6;3935:3;3931:16;3928:25;3925:2;;;3966:1;3963;3956:12;3925:2;3976:41;4010:6;4005:3;4000;3976:41;;;3648:375;;;;;;;;4032:442;;4144:3;4137:4;4129:6;4125:17;4121:27;4111:2;;4162:1;4159;4152:12;4111:2;4192:6;4186:13;4214:64;4229:48;4270:6;4229:48;;4214:64;4205:73;;4298:6;4291:5;4284:21;4334:4;4326:6;4322:17;4367:4;4360:5;4356:16;4402:3;4393:6;4388:3;4384:16;4381:25;4378:2;;;4419:1;4416;4409:12;4378:2;4429:39;4461:6;4456:3;4451;4429:39;;5654:126;5719:20;;5744:31;5719:20;5744:31;;5787:241;;5891:2;5879:9;5870:7;5866:23;5862:32;5859:2;;;5907:1;5904;5897:12;5859:2;5942:1;5959:53;6004:7;5984:9;5959:53;;;5949:63;5853:175;-1:-1;;;;5853:175;6035:366;;;6156:2;6144:9;6135:7;6131:23;6127:32;6124:2;;;6172:1;6169;6162:12;6124:2;6207:1;6224:53;6269:7;6249:9;6224:53;;;6214:63;;6186:97;6314:2;6332:53;6377:7;6368:6;6357:9;6353:22;6332:53;;;6322:63;;6293:98;6118:283;;;;;;6408:1415;;;;;;6701:3;6689:9;6680:7;6676:23;6672:33;6669:2;;;6718:1;6715;6708:12;6669:2;6753:31;;6804:18;6793:30;;6790:2;;;6836:1;6833;6826:12;6790:2;6856:78;6926:7;6917:6;6906:9;6902:22;6856:78;;;6846:88;;6732:208;6999:2;6988:9;6984:18;6971:32;7023:18;7015:6;7012:30;7009:2;;;7055:1;7052;7045:12;7009:2;7075:78;7145:7;7136:6;7125:9;7121:22;7075:78;;;7065:88;;6950:209;7218:2;7207:9;7203:18;7190:32;7242:18;7234:6;7231:30;7228:2;;;7274:1;7271;7264:12;7228:2;7294:84;7370:7;7361:6;7350:9;7346:22;7294:84;;;7284:94;;7169:215;7443:2;7432:9;7428:18;7415:32;7467:18;7459:6;7456:30;7453:2;;;7499:1;7496;7489:12;7453:2;7519:83;7594:7;7585:6;7574:9;7570:22;7519:83;;;7509:93;;7394:214;7667:3;7656:9;7652:19;7639:33;7692:18;7684:6;7681:30;7678:2;;;7724:1;7721;7714:12;7678:2;7744:63;7799:7;7790:6;7779:9;7775:22;7744:63;;;7734:73;;7618:195;6663:1160;;;;;;;;;7830:257;;7942:2;7930:9;7921:7;7917:23;7913:32;7910:2;;;7958:1;7955;7948:12;7910:2;7993:1;8010:61;8063:7;8043:9;8010:61;;8094:263;;8209:2;8197:9;8188:7;8184:23;8180:32;8177:2;;;8225:1;8222;8215:12;8177:2;8260:1;8277:64;8333:7;8313:9;8277:64;;8364:360;;8488:2;8476:9;8467:7;8463:23;8459:32;8456:2;;;8504:1;8501;8494:12;8456:2;8539:24;;8583:18;8572:30;;8569:2;;;8615:1;8612;8605:12;8569:2;8635:73;8700:7;8691:6;8680:9;8676:22;8635:73;;8731:241;;8835:2;8823:9;8814:7;8810:23;8806:32;8803:2;;;8851:1;8848;8841:12;8803:2;8886:1;8903:53;8948:7;8928:9;8903:53;;9249:366;;;9370:2;9358:9;9349:7;9345:23;9341:32;9338:2;;;9386:1;9383;9376:12;9338:2;9421:1;9438:53;9483:7;9463:9;9438:53;;;9428:63;;9400:97;9528:2;9546:53;9591:7;9582:6;9571:9;9567:22;9546:53;;9622:360;;;9740:2;9728:9;9719:7;9715:23;9711:32;9708:2;;;9756:1;9753;9746:12;9708:2;9791:1;9808:53;9853:7;9833:9;9808:53;;;9798:63;;9770:97;9898:2;9916:50;9958:7;9949:6;9938:9;9934:22;9916:50;;9989:733;;;;;;10156:3;10144:9;10135:7;10131:23;10127:33;10124:2;;;10173:1;10170;10163:12;10124:2;10208:1;10225:53;10270:7;10250:9;10225:53;;;10215:63;;10187:97;10315:2;10333:50;10375:7;10366:6;10355:9;10351:22;10333:50;;;10323:60;;10294:95;10420:2;10438:51;10481:7;10472:6;10461:9;10457:22;10438:51;;;10428:61;;10399:96;10526:2;10544:53;10589:7;10580:6;10569:9;10565:22;10544:53;;;10534:63;;10505:98;10634:3;10653:53;10698:7;10689:6;10678:9;10674:22;10653:53;;10730:173;;10817:46;10859:3;10851:6;10817:46;;;-1:-1;;10892:4;10883:14;;10810:93;10912:177;;11023:60;11079:3;11071:6;11023:60;;11288:173;;11375:46;11417:3;11409:6;11375:46;;11469:142;11560:45;11599:5;11560:45;;;11555:3;11548:58;11542:69;;;11618:103;11691:24;11709:5;11691:24;;11879:690;;12024:54;12072:5;12024:54;;;12091:86;12170:6;12165:3;12091:86;;;12084:93;;12198:56;12248:5;12198:56;;;12274:7;12302:1;12287:260;12312:6;12309:1;12306:13;12287:260;;;12379:6;12373:13;12400:63;12459:3;12444:13;12400:63;;;12393:70;;12480:60;12533:6;12480:60;;;12470:70;-1:-1;;12334:1;12327:9;12287:260;;;-1:-1;12560:3;;12003:566;-1:-1;;;;;12003:566;12604:888;;12759:59;12812:5;12759:59;;;12831:91;12915:6;12910:3;12831:91;;;12824:98;;12945:3;12987:4;12979:6;12975:17;12970:3;12966:27;13014:61;13069:5;13014:61;;;13095:7;13123:1;13108:345;13133:6;13130:1;13127:13;13108:345;;;13195:9;13189:4;13185:20;13180:3;13173:33;13240:6;13234:13;13262:74;13331:4;13316:13;13262:74;;;13254:82;;13353:65;13411:6;13353:65;;;13441:4;13432:14;;;;;13343:75;-1:-1;;13155:1;13148:9;13108:345;;;-1:-1;13466:4;;12738:754;-1:-1;;;;;;;12738:754;13529:896;;13686:60;13740:5;13686:60;;;13759:92;13844:6;13839:3;13759:92;;;13752:99;;13874:3;13916:4;13908:6;13904:17;13899:3;13895:27;13943:62;13999:5;13943:62;;;14025:7;14053:1;14038:348;14063:6;14060:1;14057:13;14038:348;;;14125:9;14119:4;14115:20;14110:3;14103:33;14170:6;14164:13;14192:76;14263:4;14248:13;14192:76;;;14184:84;;14285:66;14344:6;14285:66;;;14374:4;14365:14;;;;;14275:76;-1:-1;;14085:1;14078:9;14038:348;;14464:690;;14609:54;14657:5;14609:54;;;14676:86;14755:6;14750:3;14676:86;;;14669:93;;14783:56;14833:5;14783:56;;;14859:7;14887:1;14872:260;14897:6;14894:1;14891:13;14872:260;;;14964:6;14958:13;14985:63;15044:3;15029:13;14985:63;;;14978:70;;15065:60;15118:6;15065:60;;;15055:70;-1:-1;;14919:1;14912:9;14872:260;;15162:94;15229:21;15244:5;15229:21;;15374:113;15457:24;15475:5;15457:24;;15494:152;15595:45;15615:24;15633:5;15615:24;;;15595:45;;15653:343;;15763:38;15795:5;15763:38;;;15813:70;15876:6;15871:3;15813:70;;;15806:77;;15888:52;15933:6;15928:3;15921:4;15914:5;15910:16;15888:52;;;15961:29;15983:6;15961:29;;;15952:39;;;;15743:253;-1:-1;;;15743:253;16348:818;;16465:5;16459:12;16499:1;16488:9;16484:17;16512:1;16507:247;;;;16765:1;16760:400;;;;16477:683;;16507:247;16585:4;16581:1;16570:9;16566:17;16562:28;16604:70;16667:6;16662:3;16604:70;;;16708:9;16693:25;;16681:38;;16597:77;-1:-1;;16742:4;16733:14;;;-1:-1;16507:247;;16760:400;16829:1;16818:9;16814:17;16845:70;16908:6;16903:3;16845:70;;;16838:77;;16937:37;16968:5;16937:37;;;16990:1;16998:130;17012:6;17009:1;17006:13;16998:130;;;17071:14;;17058:11;;;17051:35;17118:1;17105:15;;;;17034:4;17027:12;16998:130;;;17142:11;;;-1:-1;;;16477:683;;16435:731;;;;;;17174:174;17281:61;17336:5;17281:61;;17526:156;17624:52;17670:5;17624:52;;17689:142;17780:45;17819:5;17780:45;;19721:394;;19881:67;19945:2;19940:3;19881:67;;;19981:34;19961:55;;20050:27;20045:2;20036:12;;20029:49;20106:2;20097:12;;19867:248;-1:-1;;19867:248;20124:442;;20284:67;20348:2;20343:3;20284:67;;;20384:34;20364:55;;20453:34;20448:2;20439:12;;20432:56;20522:6;20517:2;20508:12;;20501:28;20557:2;20548:12;;20270:296;-1:-1;;20270:296;20575:443;;20735:67;20799:2;20794:3;20735:67;;;20835:34;20815:55;;20904:34;20899:2;20890:12;;20883:56;20973:7;20968:2;20959:12;;20952:29;21009:2;21000:12;;20721:297;-1:-1;;20721:297;21027:398;;21205:84;21287:1;21282:3;21205:84;;;21322:66;21302:87;;21417:1;21408:11;;21191:234;-1:-1;;21191:234;21434:450;;21594:67;21658:2;21653:3;21594:67;;;21694:34;21674:55;;21763:34;21758:2;21749:12;;21742:56;21832:14;21827:2;21818:12;;21811:36;21875:2;21866:12;;21580:304;-1:-1;;21580:304;21893:324;;22053:67;22117:2;22112:3;22053:67;;;22153:26;22133:47;;22208:2;22199:12;;22039:178;-1:-1;;22039:178;22226:378;;22386:67;22450:2;22445:3;22386:67;;;22486:34;22466:55;;22555:11;22550:2;22541:12;;22534:33;22595:2;22586:12;;22372:232;-1:-1;;22372:232;22613:382;;22773:67;22837:2;22832:3;22773:67;;;22873:34;22853:55;;22942:15;22937:2;22928:12;;22921:37;22986:2;22977:12;;22759:236;-1:-1;;22759:236;23004:463;;23164:67;23228:2;23223:3;23164:67;;;23264:34;23244:55;;23333:34;23328:2;23319:12;;23312:56;23402:27;23397:2;23388:12;;23381:49;23458:2;23449:12;;23150:317;-1:-1;;23150:317;23476:448;;23636:67;23700:2;23695:3;23636:67;;;23736:34;23716:55;;23805:34;23800:2;23791:12;;23784:56;23874:12;23869:2;23860:12;;23853:34;23915:2;23906:12;;23622:302;-1:-1;;23622:302;23933:377;;24093:67;24157:2;24152:3;24093:67;;;24193:34;24173:55;;24262:10;24257:2;24248:12;;24241:32;24301:2;24292:12;;24079:231;-1:-1;;24079:231;24319:317;;24479:67;24543:2;24538:3;24479:67;;;24579:19;24559:40;;24627:2;24618:12;;24465:171;-1:-1;;24465:171;24645:477;;24823:85;24905:2;24900:3;24823:85;;;24941:34;24921:55;;25010:34;25005:2;24996:12;;24989:56;25079:5;25074:2;25065:12;;25058:27;25113:2;25104:12;;24809:313;-1:-1;;24809:313;25131:412;;25309:85;25391:2;25386:3;25309:85;;;25427:34;25407:55;;25496:9;25491:2;25482:12;;25475:31;25534:2;25525:12;;25295:248;-1:-1;;25295:248;25552:442;;25712:67;25776:2;25771:3;25712:67;;;25812:34;25792:55;;25881:34;25876:2;25867:12;;25860:56;25950:6;25945:2;25936:12;;25929:28;25985:2;25976:12;;25698:296;-1:-1;;25698:296;26003:384;;26163:67;26227:2;26222:3;26163:67;;;26263:34;26243:55;;26332:17;26327:2;26318:12;;26311:39;26378:2;26369:12;;26149:238;-1:-1;;26149:238;26396:442;;26556:67;26620:2;26615:3;26556:67;;;26656:34;26636:55;;26725:34;26720:2;26711:12;;26704:56;26794:6;26789:2;26780:12;;26773:28;26829:2;26820:12;;26542:296;-1:-1;;26542:296;26847:381;;27007:67;27071:2;27066:3;27007:67;;;27107:34;27087:55;;27176:14;27171:2;27162:12;;27155:36;27219:2;27210:12;;26993:235;-1:-1;;26993:235;27237:400;;27397:67;27461:2;27456:3;27397:67;;;27497:34;27477:55;;27566:33;27561:2;27552:12;;27545:55;27628:2;27619:12;;27383:254;-1:-1;;27383:254;27646:384;;27806:67;27870:2;27865:3;27806:67;;;27906:34;27886:55;;27975:17;27970:2;27961:12;;27954:39;28021:2;28012:12;;27792:238;-1:-1;;27792:238;28039:462;;28199:67;28263:2;28258:3;28199:67;;;28299:34;28279:55;;28368:34;28363:2;28354:12;;28347:56;28437:26;28432:2;28423:12;;28416:48;28492:2;28483:12;;28185:316;-1:-1;;28185:316;28510:391;;28670:67;28734:2;28729:3;28670:67;;;28770:34;28750:55;;28839:24;28834:2;28825:12;;28818:46;28892:2;28883:12;;28656:245;-1:-1;;28656:245;28910:379;;29070:67;29134:2;29129:3;29070:67;;;29170:34;29150:55;;29239:12;29234:2;29225:12;;29218:34;29280:2;29271:12;;29056:233;-1:-1;;29056:233;29298:321;;29458:67;29522:2;29517:3;29458:67;;;29558:23;29538:44;;29610:2;29601:12;;29444:175;-1:-1;;29444:175;29628:391;;29788:67;29852:2;29847:3;29788:67;;;29888:34;29868:55;;29957:24;29952:2;29943:12;;29936:46;30010:2;30001:12;;29774:245;-1:-1;;29774:245;30094:624;30305:23;;30235:4;30226:14;;;30334:57;30230:3;30305:23;30334:57;;;30255:142;30473:4;30466:5;30462:16;30456:23;30485:57;30536:4;30531:3;30527:14;30513:12;30485:57;;;30407:141;30622:4;30615:5;30611:16;30605:23;30634:63;30691:4;30686:3;30682:14;30668:12;30634:63;;30955:107;31034:22;31050:5;31034:22;;31069:650;;31324:148;31468:3;31324:148;;;31317:155;;31483:75;31554:3;31545:6;31483:75;;;31580:2;31575:3;31571:12;31564:19;;31594:75;31665:3;31656:6;31594:75;;;-1:-1;31691:2;31682:12;;31305:414;-1:-1;;31305:414;31726:372;;31925:148;32069:3;31925:148;;32105:372;;32304:148;32448:3;32304:148;;32484:213;32602:2;32587:18;;32616:71;32591:9;32660:6;32616:71;;32704:340;32858:2;32843:18;;32872:79;32847:9;32924:6;32872:79;;;32962:72;33030:2;33019:9;33015:18;33006:6;32962:72;;33051:953;33380:3;33365:19;;33395:71;33369:9;33439:6;33395:71;;;33477:80;33553:2;33542:9;33538:18;33529:6;33477:80;;;33605:9;33599:4;33595:20;33590:2;33579:9;33575:18;33568:48;33630:131;33756:4;33630:131;;;33622:139;;33809:9;33803:4;33799:20;33794:2;33783:9;33779:18;33772:48;33834:76;33905:4;33896:6;33834:76;;;33826:84;;33921:73;33989:3;33978:9;33974:19;33965:6;33921:73;;34011:324;34157:2;34142:18;;34171:71;34146:9;34215:6;34171:71;;34342:535;34538:3;34523:19;;34553:71;34527:9;34597:6;34553:71;;;34635:72;34703:2;34692:9;34688:18;34679:6;34635:72;;;34718:66;34780:2;34769:9;34765:18;34756:6;34718:66;;;34795:72;34863:2;34852:9;34848:18;34839:6;34795:72;;34884:831;35152:3;35137:19;;35167:71;35141:9;35211:6;35167:71;;;35249:72;35317:2;35306:9;35302:18;35293:6;35249:72;;;35369:9;35363:4;35359:20;35354:2;35343:9;35339:18;35332:48;35394:78;35467:4;35458:6;35394:78;;;35386:86;;35520:9;35514:4;35510:20;35505:2;35494:9;35490:18;35483:48;35545:76;35616:4;35607:6;35545:76;;;35537:84;;35632:73;35700:3;35689:9;35685:19;35676:6;35632:73;;;35123:592;;;;;;;;;35722:819;35984:3;35969:19;;35999:71;35973:9;36043:6;35999:71;;;36081:72;36149:2;36138:9;36134:18;36125:6;36081:72;;;36201:9;36195:4;36191:20;36186:2;36175:9;36171:18;36164:48;36226:75;36296:4;36287:6;36226:75;;;36218:83;;36349:9;36343:4;36339:20;36334:2;36323:9;36319:18;36312:48;36374:73;36442:4;36433:6;36374:73;;36548:1183;36972:3;36987:47;;;36957:19;;37048:108;36957:19;37142:6;37048:108;;;37040:116;;37204:9;37198:4;37194:20;37189:2;37178:9;37174:18;37167:48;37229:108;37332:4;37323:6;37229:108;;;37221:116;;37385:9;37379:4;37375:20;37370:2;37359:9;37355:18;37348:48;37410:120;37525:4;37516:6;37410:120;;;37402:128;;37578:9;37572:4;37568:20;37563:2;37552:9;37548:18;37541:48;37603:118;37716:4;37707:6;37603:118;;37738:213;37856:2;37841:18;;37870:71;37845:9;37914:6;37870:71;;37958:547;38160:3;38145:19;;38175:71;38149:9;38219:6;38175:71;;;38257:72;38325:2;38314:9;38310:18;38301:6;38257:72;;;38340;38408:2;38397:9;38393:18;38384:6;38340:72;;;38423;38491:2;38480:9;38476:18;38467:6;38423:72;;38512:423;38680:2;38665:18;;38694:71;38669:9;38738:6;38694:71;;;38776:72;38844:2;38833:9;38829:18;38820:6;38776:72;;;38859:66;38921:2;38910:9;38906:18;38897:6;38859:66;;38942:539;39140:3;39125:19;;39155:71;39129:9;39199:6;39155:71;;;39237:68;39301:2;39290:9;39286:18;39277:6;39237:68;;;39316:72;39384:2;39373:9;39369:18;39360:6;39316:72;;39488:261;39630:2;39615:18;;39644:95;39619:9;39712:6;39644:95;;40014:243;40147:2;40132:18;;40161:86;40136:9;40220:6;40161:86;;40264:293;40398:2;40412:47;;;40383:18;;40473:74;40383:18;40533:6;40473:74;;40564:407;40755:2;40769:47;;;40740:18;;40830:131;40740:18;40830:131;;40978:407;41169:2;41183:47;;;41154:18;;41244:131;41154:18;41244:131;;41392:407;41583:2;41597:47;;;41568:18;;41658:131;41568:18;41658:131;;41806:407;41997:2;42011:47;;;41982:18;;42072:131;41982:18;42072:131;;42220:407;42411:2;42425:47;;;42396:18;;42486:131;42396:18;42486:131;;42634:407;42825:2;42839:47;;;42810:18;;42900:131;42810:18;42900:131;;43048:407;43239:2;43253:47;;;43224:18;;43314:131;43224:18;43314:131;;43462:407;43653:2;43667:47;;;43638:18;;43728:131;43638:18;43728:131;;43876:407;44067:2;44081:47;;;44052:18;;44142:131;44052:18;44142:131;;44290:407;44481:2;44495:47;;;44466:18;;44556:131;44466:18;44556:131;;44704:407;44895:2;44909:47;;;44880:18;;44970:131;44880:18;44970:131;;45118:407;45309:2;45323:47;;;45294:18;;45384:131;45294:18;45384:131;;45532:407;45723:2;45737:47;;;45708:18;;45798:131;45708:18;45798:131;;45946:407;46137:2;46151:47;;;46122:18;;46212:131;46122:18;46212:131;;46360:407;46551:2;46565:47;;;46536:18;;46626:131;46536:18;46626:131;;46774:407;46965:2;46979:47;;;46950:18;;47040:131;46950:18;47040:131;;47188:407;47379:2;47393:47;;;47364:18;;47454:131;47364:18;47454:131;;47602:407;47793:2;47807:47;;;47778:18;;47868:131;47778:18;47868:131;;48016:407;48207:2;48221:47;;;48192:18;;48282:131;48192:18;48282:131;;48430:407;48621:2;48635:47;;;48606:18;;48696:131;48606:18;48696:131;;48844:407;49035:2;49049:47;;;49020:18;;49110:131;49020:18;49110:131;;49258:309;49424:2;49409:18;;49438:119;49413:9;49530:6;49438:119;;49794:1847;50386:3;50371:19;;50401:71;50375:9;50445:6;50401:71;;;50483:80;50559:2;50548:9;50544:18;50535:6;50483:80;;;50611:9;50605:4;50601:20;50596:2;50585:9;50581:18;50574:48;50636:108;50739:4;50730:6;50636:108;;;50628:116;;50792:9;50786:4;50782:20;50777:2;50766:9;50762:18;50755:48;50817:108;50920:4;50911:6;50817:108;;;50809:116;;50974:9;50968:4;50964:20;50958:3;50947:9;50943:19;50936:49;50999:120;51114:4;51105:6;50999:120;;;50991:128;;51168:9;51162:4;51158:20;51152:3;51141:9;51137:19;51130:49;51193:118;51306:4;51297:6;51193:118;;;51185:126;;51322:73;51390:3;51379:9;51375:19;51366:6;51322:73;;;51406;51474:3;51463:9;51459:19;51450:6;51406:73;;;51528:9;51522:4;51518:20;51512:3;51501:9;51497:19;51490:49;51553:78;51626:4;51617:6;51553:78;;;51545:86;50357:1284;-1:-1;;;;;;;;;;;50357:1284;51648:1083;51978:3;51963:19;;51993:71;51967:9;52037:6;51993:71;;;52075:72;52143:2;52132:9;52128:18;52119:6;52075:72;;;52158;52226:2;52215:9;52211:18;52202:6;52158:72;;;52241;52309:2;52298:9;52294:18;52285:6;52241:72;;;52324:73;52392:3;52381:9;52377:19;52368:6;52324:73;;;52408;52476:3;52465:9;52461:19;52452:6;52408:73;;;52492;52560:3;52549:9;52545:19;52536:6;52492:73;;;52576:67;52638:3;52627:9;52623:19;52614:6;52576:67;;;52654;52716:3;52705:9;52701:19;52692:6;52654:67;;;51949:782;;;;;;;;;;;;;52738:324;52884:2;52869:18;;52898:71;52873:9;52942:6;52898:71;;53069:256;53131:2;53125:9;53157:17;;;53232:18;53217:34;;53253:22;;;53214:62;53211:2;;;53289:1;53286;53279:12;53211:2;53305;53298:22;53109:216;;-1:-1;53109:216;53332:304;;53491:18;53483:6;53480:30;53477:2;;;53523:1;53520;53513:12;53477:2;-1:-1;53558:4;53546:17;;;53611:15;;53414:222;54587:317;;54726:18;54718:6;54715:30;54712:2;;;54758:1;54755;54748:12;54712:2;-1:-1;54889:4;54825;54802:17;;;;54821:9;54798:33;54879:15;;54649:255;55893:151;56017:4;56008:14;;55965:79;56536:157;;56630:14;;;56672:4;56659:18;;;56589:104;56865:137;56968:12;;56939:63;58430:178;58548:19;;;58597:4;58588:14;;58541:67;60008:91;;60070:24;60088:5;60070:24;;60106:85;60172:13;60165:21;;60148:43;60277:140;60356:5;60362:50;60356:5;60362:50;;60424:121;60497:42;60486:54;;60469:76;60631:81;60702:4;60691:16;;60674:38;60719:129;;60806:37;60837:5;60855:169;;60958:61;61013:5;60958:61;;61470:140;;61564:41;61599:5;61564:41;;61617:116;;61704:24;61722:5;61704:24;;61984:145;62065:6;62060:3;62055;62042:30;-1:-1;62121:1;62103:16;;62096:27;62035:94;62138:268;62203:1;62210:101;62224:6;62221:1;62218:13;62210:101;;;62291:11;;;62285:18;62272:11;;;62265:39;62246:2;62239:10;62210:101;;;62326:6;62323:1;62320:13;62317:2;;;-1:-1;;62391:1;62373:16;;62366:27;62187:219;62495:97;62583:2;62563:14;62579:7;62559:28;;62543:49;62600:108;62686:1;62679:5;62676:12;62666:2;;62692:9;62715:117;62784:24;62802:5;62784:24;;;62777:5;62774:35;62764:2;;62823:1;62820;62813:12;62839:111;62905:21;62920:5;62905:21;;62957:117;63026:24;63044:5;63026:24;;63205:113;63272:22;63288:5;63272:22;

Swarm Source

bzzr://f51612633ca1ff3a12b06e0bf3009d4f673becde4f8c1ca5bb2e97d6e8c40776

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.