ETH Price: $2,061.74 (-5.15%)

Contract

0x3a8Ff8b9DE3429EA84DFC8e8f13072C6838d51aF
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim125404532021-05-31 6:15:231760 days ago1622441723IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0015844615.53125
Withdraw114431052020-12-13 6:51:071929 days ago1607842267IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0017803216.61
Withdraw112559252020-11-14 12:46:041958 days ago1605357964IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0026740329
Withdraw111370732020-10-27 6:52:301976 days ago1603781550IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0020991319.58
Withdraw111272112020-10-25 18:34:131977 days ago1603650853IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0014841616.1
Withdraw110977512020-10-21 5:59:511982 days ago1603259991IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0021260920.1
Deposit110774142020-10-18 3:13:021985 days ago1602990782IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0025457124.2
Withdraw110571952020-10-15 0:45:571988 days ago1602722757IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0027977436.00000145
Claim110571832020-10-15 0:43:481988 days ago1602722628IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0032082436.00000145
Deposit110395192020-10-12 7:50:071991 days ago1602489007IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0036854448
Claim110395062020-10-12 7:47:061991 days ago1602488826IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0034828946
Claim110386672020-10-12 4:41:391991 days ago1602477699IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0023471631.00000145
Deposit110353512020-10-11 16:37:591992 days ago1602434279IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0032247642.00000156
Deposit110346742020-10-11 14:12:221992 days ago1602425542IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0054463951
Claim110330692020-10-11 8:18:381992 days ago1602404318IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0023170626
Deposit110290782020-10-10 17:39:051992 days ago1602351545IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0072626768.00000156
Withdraw110273752020-10-10 11:07:591993 days ago1602328079IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0021482545
Claim110273002020-10-10 10:51:381993 days ago1602327098IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0027321745
Withdraw110264822020-10-10 7:52:181993 days ago1602316338IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0015745933
Claim110264222020-10-10 7:38:231993 days ago1602315503IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0029935933.00000145
Withdraw110255552020-10-10 4:33:021993 days ago1602304382IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0047275860
Withdraw110252372020-10-10 3:22:221993 days ago1602300142IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0030060463.00000145
Withdraw110252352020-10-10 3:21:561993 days ago1602300116IN
0x3a8Ff8b9...6838d51aF
0 ETH0.004018263.00000145
Claim110252352020-10-10 3:21:561993 days ago1602300116IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0038760463.84
Withdraw110252332020-10-10 3:21:501993 days ago1602300110IN
0x3a8Ff8b9...6838d51aF
0 ETH0.0070634265.9
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KaniGovernance

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: Govern.sol
pragma solidity ^0.5.0;

import "./Math.sol";
import "./Ownable.sol";
import "./SafeERC20.sol";

interface Executor {
    function execute(uint, uint, uint, uint) external;
}

contract KaniGovernance is Ownable {
    using SafeERC20 for IERC20;
    using SafeMath for uint256;

    function seize(IERC20 _token, uint amount) external {
        require(msg.sender == governance, "!governance");
        require(_token != token, "reward");
        _token.safeTransfer(governance, amount);
    }

    bool public breaker = false;
    function setBreaker(bool _breaker) external {
        require(msg.sender == governance, "!governance");
        breaker = _breaker;
    }

    mapping(address => uint) public voteLock; // period that your sake it locked to keep it for voting

    struct Proposal {
        uint id;
        address proposer;
        mapping(address => uint) forVotes;
        mapping(address => uint) againstVotes;
        uint totalForVotes;
        uint totalAgainstVotes;
        uint start; // block start;
        uint end; // start + period
        address executor;
        string hash;
        uint totalVotesAvailable;
        uint quorum;
        uint quorumRequired;
        bool open;
    }

    mapping (uint => Proposal) public proposals;
    uint public proposalCount;
    uint public period = 17280; // voting period in blocks ~ 17280 3 days for 15s/block
    uint public lock = 17280; // vote lock in blocks ~ 17280 3 days for 15s/block
    uint public minimum = 1e18;
    uint public quorum = 2000;
    bool public config = true;


    address public governance;

    function setGovernance(address _governance) public {
        require(msg.sender == governance, "!governance");
        governance = _governance;
    }

    function setQuorum(uint _quorum) public {
        require(msg.sender == governance, "!governance");
        quorum = _quorum;
    }

    function setMinimum(uint _minimum) public {
        require(msg.sender == governance, "!governance");
        minimum = _minimum;
    }

    function setPeriod(uint _period) public {
        require(msg.sender == governance, "!governance");
        period = _period;
    }

    function setLock(uint _lock) public {
        require(msg.sender == governance, "!governance");
        lock = _lock;
    }

    function initialize(uint id) public {
        require(config == true, "!config");
        config = false;
        proposalCount = id;
        governance = 0x4384f49d5ABc78cD05dFe37E2FFc35A519262071;
    }

    event NewProposal(uint id, address creator, uint start, uint duration, address executor);
    event Vote(uint indexed id, address indexed voter, bool vote, uint weight);

    function propose(address executor, string memory hash) public {
        require(votesOf(msg.sender) > minimum, "<minimum");
        proposals[proposalCount++] = Proposal({
            id: proposalCount,
            proposer: msg.sender,
            totalForVotes: 0,
            totalAgainstVotes: 0,
            start: block.number,
            end: period.add(block.number),
            executor: executor,
            hash: hash,
            totalVotesAvailable: totalVotes,
            quorum: 0,
            quorumRequired: quorum,
            open: true
            });

        emit NewProposal(proposalCount, msg.sender, block.number, period, executor);
        voteLock[msg.sender] = lock.add(block.number);
    }

    function execute(uint id) public {
        (uint _for, uint _against, uint _quorum) = getStats(id);
        require(proposals[id].quorumRequired < _quorum, "!quorum");
        require(proposals[id].end < block.number , "!end");
        if (proposals[id].open == true) {
            tallyVotes(id);
        }
        Executor(proposals[id].executor).execute(id, _for, _against, _quorum);
    }

    function getStats(uint id) public view returns (uint _for, uint _against, uint _quorum) {
        _for = proposals[id].totalForVotes;
        _against = proposals[id].totalAgainstVotes;

        uint _total = _for.add(_against);
        _for = _for.mul(10000).div(_total);
        _against = _against.mul(10000).div(_total);

        _quorum = _total.mul(10000).div(proposals[id].totalVotesAvailable);
    }

    event ProposalFinished(uint indexed id, uint _for, uint _against, bool quorumReached);

    function tallyVotes(uint id) public {
        require(proposals[id].open == true, "!open");
        require(proposals[id].end < block.number, "!end");

        (uint _for, uint _against,) = getStats(id);
        bool _quorum = false;
        if (proposals[id].quorum >= proposals[id].quorumRequired) {
            _quorum = true;
        }
        proposals[id].open = false;
        emit ProposalFinished(id, _for, _against, _quorum);
    }

    function votesOf(address voter) public view returns (uint) {
        return votes[voter];
    }

    uint public totalVotes;
    mapping(address => uint) public votes;
    event RegisterVoter(address voter, uint votes, uint totalVotes);
    event RevokeVoter(address voter, uint votes, uint totalVotes);

    function register() public {
        require(voters[msg.sender] == false, "voter");
        voters[msg.sender] = true;
        votes[msg.sender] = plyr_[msg.sender].stake;
        totalVotes = totalVotes.add(votes[msg.sender]);
        emit RegisterVoter(msg.sender, votes[msg.sender], totalVotes);
    }


    function revoke() public {
        require(voters[msg.sender] == true, "!voter");
        voters[msg.sender] = false;
        if (totalVotes < votes[msg.sender]) {
            //edge case, should be impossible, but this is defi
            totalVotes = 0;
        } else {
            totalVotes = totalVotes.sub(votes[msg.sender]);
        }
        emit RevokeVoter(msg.sender, votes[msg.sender], totalVotes);
        votes[msg.sender] = 0;
    }

    mapping(address => bool) public voters;

    function voteFor(uint id) public {
        require(proposals[id].start < block.number , "<start");
        require(proposals[id].end > block.number , ">end");

        uint _against = proposals[id].againstVotes[msg.sender];
        if (_against > 0) {
            proposals[id].totalAgainstVotes = proposals[id].totalAgainstVotes.sub(_against);
            proposals[id].againstVotes[msg.sender] = 0;
        }

        uint vote = votesOf(msg.sender).sub(proposals[id].forVotes[msg.sender]);
        proposals[id].totalForVotes = proposals[id].totalForVotes.add(vote);
        proposals[id].forVotes[msg.sender] = votesOf(msg.sender);

        proposals[id].totalVotesAvailable = totalVotes;
        uint _votes = proposals[id].totalForVotes.add(proposals[id].totalAgainstVotes);
        proposals[id].quorum = _votes.mul(10000).div(totalVotes);

        voteLock[msg.sender] = lock.add(block.number);

        emit Vote(id, msg.sender, true, vote);
    }

    function voteAgainst(uint id) public {
        require(proposals[id].start < block.number , "<start");
        require(proposals[id].end > block.number , ">end");

        uint _for = proposals[id].forVotes[msg.sender];
        if (_for > 0) {
            proposals[id].totalForVotes = proposals[id].totalForVotes.sub(_for);
            proposals[id].forVotes[msg.sender] = 0;
        }

        uint vote = votesOf(msg.sender).sub(proposals[id].againstVotes[msg.sender]);
        proposals[id].totalAgainstVotes = proposals[id].totalAgainstVotes.add(vote);
        proposals[id].againstVotes[msg.sender] = votesOf(msg.sender);

        proposals[id].totalVotesAvailable = totalVotes;
        uint _votes = proposals[id].totalForVotes.add(proposals[id].totalAgainstVotes);
        proposals[id].quorum = _votes.mul(10000).div(totalVotes);

        voteLock[msg.sender] = lock.add(block.number);

        emit Vote(id, msg.sender, false, vote);
    }


    IERC20 public token = IERC20(0x790aCe920bAF3af2b773D4556A69490e077F6B4A);

    struct Player {
        uint256 stake; // 总质押总数
        uint256 payout; //
        uint256 total_out; // 已经领取的分红
    }
    mapping(address => Player) public plyr_; // (player => data) player data

    struct Global {
        uint256 total_stake; // 总质押总数
        uint256 total_out; //  总分红金额
        uint256 earnings_per_share; // 每股分红
    }
    mapping(uint256 => Global) public global_; // (global => data) global data
    mapping (address => uint256) public deposittime;
    uint256 constant internal magnitude = 10**40;

    uint256 constant internal extraReward = 500000*1e18;
    uint256 internal rewarded = 0;
    uint256 internal dailyReward = extraReward.div(365);
    uint256 internal lastUpdateTime = 0;

    event RewardAdded(uint256 reward);
    event Staked(address indexed user, uint256 amount);
    event Withdrawn(address indexed user, uint256 amount);
    event RewardPaid(address indexed user, uint256 reward);

    function make_profit(uint256 amount) public {
        require(amount>0,"not 0");
        token.safeTransferFrom(msg.sender, address(this), amount);
        make_profit_internal(amount);
    }
    
    function make_profit_internal(uint256 amount) internal{
        if (global_[0].total_stake > 0) {
            global_[0].earnings_per_share = global_[0].earnings_per_share.add(
                amount.mul(magnitude).div(global_[0].total_stake)
            );
        }
        global_[0].total_out = global_[0].total_out.add(amount);
        emit RewardAdded(amount);
    }

    function deposit(uint amount) external daily_reward {
        token.safeTransferFrom(msg.sender, address(this), amount);
        plyr_[msg.sender].stake = plyr_[msg.sender].stake.add(amount);
        if (global_[0].earnings_per_share != 0) {
            plyr_[msg.sender].payout = plyr_[msg.sender].payout.add(
                global_[0].earnings_per_share.mul(amount).sub(1).div(magnitude).add(1)
            );
        }
        global_[0].total_stake = global_[0].total_stake.add(amount);
        deposittime[msg.sender] = now;
        emit Staked(msg.sender, amount);
    }

    function cal_out(address user) public view returns (uint256) {
        uint256 _cal = global_[0].earnings_per_share.mul(plyr_[user].stake).div(magnitude);
        if (_cal < plyr_[user].payout) {
            return 0;
        } else {
            return _cal.sub(plyr_[user].payout);
        }
    }

    function cal_out_pending(uint256 _pendingBalance,address user) public view returns (uint256) {
        uint256 _earnings_per_share = global_[0].earnings_per_share.add(
            _pendingBalance.mul(magnitude).div(global_[0].total_stake)
        );
        uint256 _cal = _earnings_per_share.mul(plyr_[user].stake).div(magnitude);
        _cal = _cal.sub(cal_out(user));
        if (_cal < plyr_[user].payout) {
            return 0;
        } else {
            return _cal.sub(plyr_[user].payout);
        }
    }

    function claim() public daily_reward {
        uint256 out = cal_out(msg.sender);
        plyr_[msg.sender].payout = global_[0].earnings_per_share.mul(plyr_[msg.sender].stake).div(magnitude);
        plyr_[msg.sender].total_out = plyr_[msg.sender].total_out.add(out);

        if (out > 0) {
            uint256 _depositTime = now - deposittime[msg.sender];
            if (_depositTime < 1 days){ //deposit in 24h
                uint256 actually_out = _depositTime.mul(out).mul(1e18).div(1 days).div(1e18);
                uint256 back_to_profit = out.sub(actually_out);
                make_profit_internal(back_to_profit);
                out = actually_out;
            }
            token.safeTransfer(msg.sender, out);
            emit RewardPaid(msg.sender, out);
        }
    }

    function withdraw(uint amount) public daily_reward {
        claim();
        require(amount<=plyr_[msg.sender].stake,"!balance");
        uint r = amount;

        // Check balance
        uint b = token.balanceOf(address(this));
        if (b < r) {
            uint _withdraw = r.sub(b);
            // Controller(controller).withdraw(address(token), _withdraw);
            uint _after = token.balanceOf(address(this));
            uint _diff = _after.sub(b);
            if (_diff < _withdraw) {
                r = b.add(_diff);
            }
        }

        plyr_[msg.sender].payout = plyr_[msg.sender].payout.sub(
            global_[0].earnings_per_share.mul(amount).div(magnitude)
        );
        plyr_[msg.sender].stake = plyr_[msg.sender].stake.sub(amount);
        global_[0].total_stake = global_[0].total_stake.sub(amount);

        token.safeTransfer(msg.sender, r);
        emit Withdrawn(msg.sender, r);
    }

    modifier daily_reward(){
        require(lastUpdateTime > 0, "not start");
        if (block.timestamp.sub(lastUpdateTime) > 1 days &&
            rewarded < extraReward) {
            rewarded = rewarded.add(dailyReward);
            lastUpdateTime = block.timestamp;
            make_profit_internal(dailyReward);
        }
        _;
    }

    function notifyRewardAmount() public onlyOwner {
        require(lastUpdateTime == 0, "inited");
        token.mint(address(this),extraReward);
        lastUpdateTime = block.timestamp.sub(1 days);
        emit RewardAdded(extraReward);
    }

}

File 2 of 8: Address.sol
pragma solidity ^0.5.5;

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }

    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

File 3 of 8: Context.sol
pragma solidity ^0.5.0;

contract Context {
    constructor () internal { }
    
    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

File 4 of 8: IERC20.sol
pragma solidity ^0.5.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);
    function mint(address account, uint amount) external;

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 5 of 8: Math.sol
pragma solidity ^0.5.0;

library Math {
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}

File 6 of 8: Ownable.sol
pragma solidity ^0.5.0;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;

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

    constructor () internal {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 7 of 8: SafeERC20.sol
pragma solidity ^0.5.0;

import "./IERC20.sol";
import "./SafeMath.sol";
import "./Address.sol";

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

File 8 of 8: SafeMath.sol
pragma solidity ^0.5.0;

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"start","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"},{"indexed":false,"internalType":"address","name":"executor","type":"address"}],"name":"NewProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_for","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_against","type":"uint256"},{"indexed":false,"internalType":"bool","name":"quorumReached","type":"bool"}],"name":"ProposalFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalVotes","type":"uint256"}],"name":"RegisterVoter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalVotes","type":"uint256"}],"name":"RevokeVoter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"bool","name":"vote","type":"bool"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"}],"name":"Vote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"constant":true,"inputs":[],"name":"breaker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"cal_out","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_pendingBalance","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"cal_out_pending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"config","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deposittime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"execute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getStats","outputs":[{"internalType":"uint256","name":"_for","type":"uint256"},{"internalType":"uint256","name":"_against","type":"uint256"},{"internalType":"uint256","name":"_quorum","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"global_","outputs":[{"internalType":"uint256","name":"total_stake","type":"uint256"},{"internalType":"uint256","name":"total_out","type":"uint256"},{"internalType":"uint256","name":"earnings_per_share","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"make_profit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"notifyRewardAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"plyr_","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"total_out","type":"uint256"}],"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"totalForVotes","type":"uint256"},{"internalType":"uint256","name":"totalAgainstVotes","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"string","name":"hash","type":"string"},{"internalType":"uint256","name":"totalVotesAvailable","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"quorumRequired","type":"uint256"},{"internalType":"bool","name":"open","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"executor","type":"address"},{"internalType":"string","name":"hash","type":"string"}],"name":"propose","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"revoke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"seize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_breaker","type":"bool"}],"name":"setBreaker","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_lock","type":"uint256"}],"name":"setLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_minimum","type":"uint256"}],"name":"setMinimum","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setPeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_quorum","type":"uint256"}],"name":"setQuorum","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tallyVotes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"voteAgainst","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"voteFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voteLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"votes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"voter","type":"address"}],"name":"votesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526000805460ff60a01b191681556143806004819055600555670de0b6b3a76400006006556107d06007556008805460ff19166001179055600c805473790ace920baf3af2b773d4556a69490e077f6b4a6001600160a01b03199091161790556010556200008a6969e10de76676d080000061016d620000f3602090811b620028fd17901c565b6011556000601255620000a56001600160e01b036200014416565b600080546001600160a01b0319166001600160a01b03928316178082556040519216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620001ef565b60006200013d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200014860201b60201c565b9392505050565b3390565b60008183620001d85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200019c57818101518382015260200162000182565b50505050905090810190601f168015620001ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620001e557fe5b0495945050505050565b612f0880620001ff6000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c806386a505351161015c578063d6f0948c116100ce578063ef78d4fd11610087578063ef78d4fd14610819578063f2fde38b14610821578063f83d08ba14610847578063fc0c546a1461084f578063fe0d94c114610857578063fe4b84df146108745761027f565b8063d6f0948c146106c6578063d7e8e85b1461077c578063d8bff5a5146107a2578063da35c664146107c8578063da4745b3146107d0578063eb9253c0146107ed5761027f565b8063b6549f7511610120578063b6549f7514610624578063b6b55f251461062c578063c1ba4e5914610649578063c68b0cd414610666578063d20a31d81461068c578063d3e15747146106a95761027f565b806386a50535146105ab5780638da5cb5b146105c85780638f32d59b146105d0578063a3ec138d146105d8578063ab033ea9146105fe5761027f565b80634e71d92d116101f5578063715018a6116101b9578063715018a6146104f7578063750e443a146104ff57806378ce591d1461051c57806379502c551461054257806379ec5d3a1461054a5780637b303965146105705761027f565b80634e71d92d1461047857806352d6804d146104805780635aa6e675146104885780635c0aeb0e146104ac57806360a9f458146104cb5761027f565b80631703a018116102475780631703a018146103eb5780631aa3a008146103f35780632e1a7d4d146103fb5780633209e9e6146104185780634d318b0e146104355780634e27e916146104525761027f565b8063013cf08b146102845780630c51dde41461038e5780630d15fd77146103985780630f3a9f65146103b25780630f41e0d2146103cf575b600080fd5b6102a16004803603602081101561029a57600080fd5b5035610891565b604051808d81526020018c6001600160a01b03166001600160a01b031681526020018b81526020018a8152602001898152602001888152602001876001600160a01b03166001600160a01b031681526020018060200186815260200185815260200184815260200183151515158152602001828103825287818151815260200191508051906020019080838360005b83811015610348578181015183820152602001610330565b50505050905090810190601f1680156103755780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b610396610989565b005b6103a0610aec565b60408051918252519081900360200190f35b610396600480360360208110156103c857600080fd5b5035610af2565b6103d7610b49565b604080519115158252519081900360200190f35b6103a0610b59565b610396610b5f565b6103966004803603602081101561041157600080fd5b5035610c45565b6103966004803603602081101561042e57600080fd5b5035610fc8565b6103966004803603602081101561044b57600080fd5b503561101f565b6103a06004803603602081101561046857600080fd5b50356001600160a01b031661115a565b61039661116c565b6103a0611378565b61049061137e565b604080516001600160a01b039092168252519081900360200190f35b610396600480360360208110156104c257600080fd5b50351515611392565b6103a0600480360360408110156104e157600080fd5b50803590602001356001600160a01b0316611402565b610396611531565b6103966004803603602081101561051557600080fd5b50356115d4565b6103a06004803603602081101561053257600080fd5b50356001600160a01b0316611837565b6103d76118f7565b6103a06004803603602081101561056057600080fd5b50356001600160a01b0316611900565b61058d6004803603602081101561058657600080fd5b503561191b565b60408051938452602084019290925282820152519081900360600190f35b610396600480360360208110156105c157600080fd5b50356119ab565b610490611c03565b6103d7611c13565b6103d7600480360360208110156105ee57600080fd5b50356001600160a01b0316611c37565b6103966004803603602081101561061457600080fd5b50356001600160a01b0316611c4c565b610396611cc6565b6103966004803603602081101561064257600080fd5b5035611dd3565b6103966004803603602081101561065f57600080fd5b5035611ff3565b61058d6004803603602081101561067c57600080fd5b50356001600160a01b031661204a565b61058d600480360360208110156106a257600080fd5b503561206b565b610396600480360360208110156106bf57600080fd5b503561208c565b610396600480360360408110156106dc57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561070757600080fd5b82018360208201111561071957600080fd5b8035906020019184600183028401116401000000008311171561073b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506120e3945050505050565b6103a06004803603602081101561079257600080fd5b50356001600160a01b031661233a565b6103a0600480360360208110156107b857600080fd5b50356001600160a01b031661234c565b6103a061235e565b610396600480360360208110156107e657600080fd5b5035612364565b6103966004803603604081101561080357600080fd5b506001600160a01b0381351690602001356123c8565b6103a061248f565b6103966004803603602081101561083757600080fd5b50356001600160a01b0316612495565b6103a06124f7565b6104906124fd565b6103966004803603602081101561086d57600080fd5b503561250c565b6103966004803603602081101561088a57600080fd5b5035612670565b6002602081815260009283526040928390208054600180830154600484015460058501546006860154600787015460088801546009890180548d51610100998216159990990260001901169b909b04601f81018b90048b0288018b01909c528b8752969a6001600160a01b039586169a94999398929791969590911694919391928301828280156109635780601f1061093857610100808354040283529160200191610963565b820191906000526020600020905b81548152906001019060200180831161094657829003601f168201915b50505050600a830154600b840154600c850154600d909501549394919390925060ff168c565b610991611c13565b6109e2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60125415610a20576040805162461bcd60e51b81526020600482015260066024820152651a5b9a5d195960d21b604482015290519081900360640190fd5b600c54604080516340c10f1960e01b81523060048201526969e10de76676d0800000602482015290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015610a7c57600080fd5b505af1158015610a90573d6000803e3d6000fd5b50505050610aaa62015180426126e790919063ffffffff16565b601255604080516969e10de76676d0800000815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1565b60095481565b60085461010090046001600160a01b03163314610b44576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600455565b600054600160a01b900460ff1681565b60075481565b336000908152600b602052604090205460ff1615610bac576040805162461bcd60e51b81526020600482015260056024820152643b37ba32b960d91b604482015290519081900360640190fd5b336000908152600b60209081526040808320805460ff19166001179055600d825280832054600a909252909120819055600954610bee9163ffffffff61273016565b6009819055336000818152600a6020908152604091829020548251938452908301528181019290925290517f42bd0b21218b5114f60361fe686fe499033f14f22cb728a08cf9df9b4e60f8cc9181900360600190a1565b600060125411610c88576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b62015180610ca1601254426126e790919063ffffffff16565b118015610cb957506969e10de76676d0800000601054105b15610ce657601154601054610cd39163ffffffff61273016565b60105542601255601154610ce69061278a565b610cee61116c565b336000908152600d6020526040902054811115610d3d576040805162461bcd60e51b81526020600482015260086024820152672162616c616e636560c01b604482015290519081900360640190fd5b600c54604080516370a0823160e01b8152306004820152905183926000926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d6020811015610db757600080fd5b5051905081811015610e87576000610dd5838363ffffffff6126e716565b600c54604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e2657600080fd5b505afa158015610e3a573d6000803e3d6000fd5b505050506040513d6020811015610e5057600080fd5b505190506000610e66828563ffffffff6126e716565b905082811015610e8357610e80848263ffffffff61273016565b94505b5050505b60008052600e602052600080516020612e4983398151915254610ef490610ed5906b1d6329f1c35ca4bfabb9f56160281b90610ec9908763ffffffff6128a416565b9063ffffffff6128fd16565b336000908152600d60205260409020600101549063ffffffff6126e716565b336000908152600d60205260409020600181019190915554610f1c908463ffffffff6126e716565b336000908152600d602090815260408220929092558052600e9052600080516020612eb483398151915254610f57908463ffffffff6126e716565b60008052600e602052600080516020612eb483398151915255600c54610f8d906001600160a01b0316338463ffffffff61293f16565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a2505050565b60085461010090046001600160a01b0316331461101a576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600655565b6000818152600260205260409020600d015460ff161515600114611072576040805162461bcd60e51b815260206004820152600560248201526410b7b832b760d91b604482015290519081900360640190fd5b60008181526002602052604090206007015443116110c0576040805162461bcd60e51b8152602060048083019190915260248201526308595b9960e21b604482015290519081900360640190fd5b6000806110cc8361191b565b506000858152600260205260408120600c810154600b9091015493955091935091106110f6575060015b600084815260026020908152604091829020600d01805460ff19169055815185815290810184905282151581830152905185917f66ab4d2a1f6db1c01d1d46ab61a9c333b5a4de5e75cc7a68e1495b4badbd009b919081900360600190a250505050565b60016020526000908152604090205481565b6000601254116111af576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b620151806111c8601254426126e790919063ffffffff16565b1180156111e057506969e10de76676d0800000601054105b1561120d576011546010546111fa9163ffffffff61273016565b6010554260125560115461120d9061278a565b600061121833611837565b336000908152600d60209081526040822054918052600e9052600080516020612e4983398151915254919250611269916b1d6329f1c35ca4bfabb9f56160281b91610ec9919063ffffffff6128a416565b336000908152600d60205260409020600181019190915560020154611294908263ffffffff61273016565b336000908152600d6020526040902060020155801561137557336000908152600f60205260409020544203620151808110156113205760006112fd670de0b6b3a7640000610ec96201518081836112f1888a63ffffffff6128a416565b9063ffffffff6128a416565b90506000611311848363ffffffff6126e716565b905061131c8161278a565b5091505b600c5461133d906001600160a01b0316338463ffffffff61293f16565b60408051838152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a2505b50565b60065481565b60085461010090046001600160a01b031681565b60085461010090046001600160a01b031633146113e4576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b60008054911515600160a01b0260ff60a01b19909216919091179055565b6000808052600e602052600080516020612eb483398151915254819061146a9061144590610ec9876b1d6329f1c35ca4bfabb9f56160281b63ffffffff6128a416565b60008052600e602052600080516020612e49833981519152549063ffffffff61273016565b6001600160a01b0384166000908152600d6020526040812054919250906114ad906b1d6329f1c35ca4bfabb9f56160281b90610ec990859063ffffffff6128a416565b90506114c86114bb85611837565b829063ffffffff6126e716565b6001600160a01b0385166000908152600d60205260409020600101549091508110156114f95760009250505061152b565b6001600160a01b0384166000908152600d602052604090206001015461152690829063ffffffff6126e716565b925050505b92915050565b611539611c13565b61158a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000818152600260205260409020600601544311611622576040805162461bcd60e51b81526020600482015260066024820152650f1cdd185c9d60d21b604482015290519081900360640190fd5b6000818152600260205260409020600701544310611670576040805162461bcd60e51b815260206004808301919091526024820152630f995b9960e21b604482015290519081900360640190fd5b6000818152600260208181526040808420338552909201905290205480156116db576000828152600260205260409020600401546116b4908263ffffffff6126e716565b60008381526002602081815260408084206004810195909555338452939091019052908120555b60008281526002602090815260408083203380855260039091019092528220546117149161170890611900565b9063ffffffff6126e716565b600084815260026020526040902060050154909150611739908263ffffffff61273016565b60008481526002602052604090206005015561175433611900565b600084815260026020818152604080842033855260038101835290842094909455600954878452919052600a830155600582015460049092015490916117a0919063ffffffff61273016565b6009549091506117bc90610ec98361271063ffffffff6128a416565b6000858152600260205260409020600b01556005546117e1904363ffffffff61273016565b33600081815260016020908152604080832094909455835191825281018590528251919287927f88d35328232823f54954b6627e9f732371656f6daa40cb1b01b27dc7875a7b479281900390910190a350505050565b6001600160a01b0381166000908152600d60209081526040822054828052600e909152600080516020612e49833981519152548291611891916b1d6329f1c35ca4bfabb9f56160281b91610ec9919063ffffffff6128a416565b6001600160a01b0384166000908152600d60205260409020600101549091508110156118c15760009150506118f2565b6001600160a01b0383166000908152600d60205260409020600101546118ee90829063ffffffff6126e716565b9150505b919050565b60085460ff1681565b6001600160a01b03166000908152600a602052604090205490565b60008181526002602052604081206004810154600590910154909180611947848463ffffffff61273016565b905061195f81610ec98661271063ffffffff6128a416565b935061197781610ec98561271063ffffffff6128a416565b6000868152600260205260409020600a01549093506119a290610ec98361271063ffffffff6128a416565b93959294505050565b60008181526002602052604090206006015443116119f9576040805162461bcd60e51b81526020600482015260066024820152650f1cdd185c9d60d21b604482015290519081900360640190fd5b6000818152600260205260409020600701544310611a47576040805162461bcd60e51b815260206004808301919091526024820152630f995b9960e21b604482015290519081900360640190fd5b60008181526002602090815260408083203384526003019091529020548015611ab457600082815260026020526040902060050154611a8c908263ffffffff6126e716565b6000838152600260209081526040808320600581019490945533835260039093019052908120555b6000828152600260208181526040808420338086529301909152822054611ade9161170890611900565b600084815260026020526040902060040154909150611b03908263ffffffff61273016565b600084815260026020526040902060040155611b1e33611900565b6000848152600260208181526040808420338552808401835290842094909455600954878452919052600a83015560058201546004909201549091611b69919063ffffffff61273016565b600954909150611b8590610ec98361271063ffffffff6128a416565b6000858152600260205260409020600b0155600554611baa904363ffffffff61273016565b336000818152600160208181526040928390209490945581519081529283018590528051919287927f88d35328232823f54954b6627e9f732371656f6daa40cb1b01b27dc7875a7b47929181900390910190a350505050565b6000546001600160a01b03165b90565b600080546001600160a01b0316611c28612996565b6001600160a01b031614905090565b600b6020526000908152604090205460ff1681565b60085461010090046001600160a01b03163314611c9e576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b336000908152600b602052604090205460ff161515600114611d18576040805162461bcd60e51b815260206004820152600660248201526510bb37ba32b960d11b604482015290519081900360640190fd5b336000908152600b60209081526040808320805460ff19169055600a9091529020546009541015611d4d576000600955611d73565b336000908152600a6020526040902054600954611d6f9163ffffffff6126e716565b6009555b336000818152600a60209081526040918290205460095483519485529184015282820152517e330fa0724b41c0d187cfad0aa7ff5fa2ff7e742995886f55fda6f5909914b89181900360600190a1336000908152600a6020526040812055565b600060125411611e16576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b62015180611e2f601254426126e790919063ffffffff16565b118015611e4757506969e10de76676d0800000601054105b15611e7457601154601054611e619163ffffffff61273016565b60105542601255601154611e749061278a565b600c54611e92906001600160a01b031633308463ffffffff61299a16565b336000908152600d6020526040902054611eb2908263ffffffff61273016565b336000908152600d602090815260408220929092558052600e9052600080516020612e498339815191525415611f705760008052600e602052600080516020612e4983398151915254611f5c90611f3d90600190611f31906b1d6329f1c35ca4bfabb9f56160281b90610ec9908490611708908963ffffffff6128a416565b9063ffffffff61273016565b336000908152600d60205260409020600101549063ffffffff61273016565b336000908152600d60205260409020600101555b60008052600e602052600080516020612eb483398151915254611f99908263ffffffff61273016565b600080516020612eb483398151915255336000818152600f6020908152604091829020429055815184815291517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9281900390910190a250565b60085461010090046001600160a01b03163314612045576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600755565b600d6020526000908152604090208054600182015460029092015490919083565b600e6020526000908152604090208054600182015460029092015490919083565b60085461010090046001600160a01b031633146120de576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600555565b6006546120ef33611900565b1161212c576040805162461bcd60e51b81526020600482015260086024820152673c6d696e696d756d60c01b604482015290519081900360640190fd5b6040518061018001604052806003548152602001336001600160a01b0316815260200160008152602001600081526020014381526020016121784360045461273090919063ffffffff16565b8152602001836001600160a01b0316815260200182815260200160095481526020016000815260200160075481526020016001151581525060026000600360008154809291906001019190505581526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160040155606082015181600501556080820151816006015560a0820151816007015560c08201518160080160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e082015181600901908051906020019061227b929190612d8a565b50610100820151600a820155610120820151600b820155610140820151600c82015561016090910151600d909101805460ff191691151591909117905560035460045460408051928352336020840152438382015260608301919091526001600160a01b0384166080830152517ff3aa81c2323a935a3e72c018c519b8d8b432eeebaa15cbbe5c8305f0f9df6f4d9160a0908290030190a1600554612326904363ffffffff61273016565b336000908152600160205260409020555050565b600f6020526000908152604090205481565b600a6020526000908152604090205481565b60035481565b600081116123a1576040805162461bcd60e51b815260206004820152600560248201526406e6f7420360dc1b604482015290519081900360640190fd5b600c546123bf906001600160a01b031633308463ffffffff61299a16565b6113758161278a565b60085461010090046001600160a01b0316331461241a576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600c546001600160a01b0383811691161415612466576040805162461bcd60e51b81526020600482015260066024820152651c995dd85c9960d21b604482015290519081900360640190fd5b60085461248b906001600160a01b03848116916101009004168363ffffffff61293f16565b5050565b60045481565b61249d611c13565b6124ee576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611375816129fa565b60055481565b600c546001600160a01b031681565b600080600061251a8461191b565b6000878152600260205260409020600c015492955090935091508111612571576040805162461bcd60e51b81526020600482015260076024820152662171756f72756d60c81b604482015290519081900360640190fd5b60008481526002602052604090206007015443116125bf576040805162461bcd60e51b8152602060048083019190915260248201526308595b9960e21b604482015290519081900360640190fd5b6000848152600260205260409020600d015460ff161515600114156125e7576125e78461101f565b600084815260026020526040808220600801548151636009bfbd60e11b81526004810188905260248101879052604481018690526064810185905291516001600160a01b039091169263c0137f7a926084808201939182900301818387803b15801561265257600080fd5b505af1158015612666573d6000803e3d6000fd5b5050505050505050565b60085460ff1615156001146126b6576040805162461bcd60e51b815260206004820152600760248201526621636f6e66696760c81b604482015290519081900360640190fd5b600880546003929092556001600160a81b0319909116744384f49d5abc78cd05dfe37e2ffc35a51926207100179055565b600061272983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a9a565b9392505050565b600082820183811015612729576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008052600e602052600080516020612eb483398151915254156128025760008052600e602052600080516020612eb4833981519152546127e89061144590610ec9846b1d6329f1c35ca4bfabb9f56160281b63ffffffff6128a416565b60008052600e602052600080516020612e49833981519152555b60008052600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881d5461283d908263ffffffff61273016565b60008052600e60209081527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881d919091556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d929181900390910190a150565b6000826128b35750600061152b565b828202828482816128c057fe5b04146127295760405162461bcd60e51b8152600401808060200182810382526021815260200180612e696021913960400191505060405180910390fd5b600061272983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b31565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612991908490612b96565b505050565b3390565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526129f4908590612b96565b50505050565b6001600160a01b038116612a3f5760405162461bcd60e51b8152600401808060200182810382526026815260200180612e236026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115612b295760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612aee578181015183820152602001612ad6565b50505050905090810190601f168015612b1b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183612b805760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612aee578181015183820152602001612ad6565b506000838581612b8c57fe5b0495945050505050565b612ba8826001600160a01b0316612d4e565b612bf9576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310612c375780518252601f199092019160209182019101612c18565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612c99576040519150601f19603f3d011682016040523d82523d6000602084013e612c9e565b606091505b509150915081612cf5576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156129f457808060200190516020811015612d1157600080fd5b50516129f45760405162461bcd60e51b815260040180806020018281038252602a815260200180612e8a602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590612d825750808214155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612dcb57805160ff1916838001178555612df8565b82800160010185558215612df8579182015b82811115612df8578251825591602001919060010190612ddd565b50612e04929150612e08565b5090565b611c1091905b80821115612e045760008155600101612e0e56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373e710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564e710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881ca265627a7a72315820208ddb8199555647e895dfaf6fc573f4a2b69ec1268809c9988f6bcc136ad03864736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061027f5760003560e01c806386a505351161015c578063d6f0948c116100ce578063ef78d4fd11610087578063ef78d4fd14610819578063f2fde38b14610821578063f83d08ba14610847578063fc0c546a1461084f578063fe0d94c114610857578063fe4b84df146108745761027f565b8063d6f0948c146106c6578063d7e8e85b1461077c578063d8bff5a5146107a2578063da35c664146107c8578063da4745b3146107d0578063eb9253c0146107ed5761027f565b8063b6549f7511610120578063b6549f7514610624578063b6b55f251461062c578063c1ba4e5914610649578063c68b0cd414610666578063d20a31d81461068c578063d3e15747146106a95761027f565b806386a50535146105ab5780638da5cb5b146105c85780638f32d59b146105d0578063a3ec138d146105d8578063ab033ea9146105fe5761027f565b80634e71d92d116101f5578063715018a6116101b9578063715018a6146104f7578063750e443a146104ff57806378ce591d1461051c57806379502c551461054257806379ec5d3a1461054a5780637b303965146105705761027f565b80634e71d92d1461047857806352d6804d146104805780635aa6e675146104885780635c0aeb0e146104ac57806360a9f458146104cb5761027f565b80631703a018116102475780631703a018146103eb5780631aa3a008146103f35780632e1a7d4d146103fb5780633209e9e6146104185780634d318b0e146104355780634e27e916146104525761027f565b8063013cf08b146102845780630c51dde41461038e5780630d15fd77146103985780630f3a9f65146103b25780630f41e0d2146103cf575b600080fd5b6102a16004803603602081101561029a57600080fd5b5035610891565b604051808d81526020018c6001600160a01b03166001600160a01b031681526020018b81526020018a8152602001898152602001888152602001876001600160a01b03166001600160a01b031681526020018060200186815260200185815260200184815260200183151515158152602001828103825287818151815260200191508051906020019080838360005b83811015610348578181015183820152602001610330565b50505050905090810190601f1680156103755780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b610396610989565b005b6103a0610aec565b60408051918252519081900360200190f35b610396600480360360208110156103c857600080fd5b5035610af2565b6103d7610b49565b604080519115158252519081900360200190f35b6103a0610b59565b610396610b5f565b6103966004803603602081101561041157600080fd5b5035610c45565b6103966004803603602081101561042e57600080fd5b5035610fc8565b6103966004803603602081101561044b57600080fd5b503561101f565b6103a06004803603602081101561046857600080fd5b50356001600160a01b031661115a565b61039661116c565b6103a0611378565b61049061137e565b604080516001600160a01b039092168252519081900360200190f35b610396600480360360208110156104c257600080fd5b50351515611392565b6103a0600480360360408110156104e157600080fd5b50803590602001356001600160a01b0316611402565b610396611531565b6103966004803603602081101561051557600080fd5b50356115d4565b6103a06004803603602081101561053257600080fd5b50356001600160a01b0316611837565b6103d76118f7565b6103a06004803603602081101561056057600080fd5b50356001600160a01b0316611900565b61058d6004803603602081101561058657600080fd5b503561191b565b60408051938452602084019290925282820152519081900360600190f35b610396600480360360208110156105c157600080fd5b50356119ab565b610490611c03565b6103d7611c13565b6103d7600480360360208110156105ee57600080fd5b50356001600160a01b0316611c37565b6103966004803603602081101561061457600080fd5b50356001600160a01b0316611c4c565b610396611cc6565b6103966004803603602081101561064257600080fd5b5035611dd3565b6103966004803603602081101561065f57600080fd5b5035611ff3565b61058d6004803603602081101561067c57600080fd5b50356001600160a01b031661204a565b61058d600480360360208110156106a257600080fd5b503561206b565b610396600480360360208110156106bf57600080fd5b503561208c565b610396600480360360408110156106dc57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561070757600080fd5b82018360208201111561071957600080fd5b8035906020019184600183028401116401000000008311171561073b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506120e3945050505050565b6103a06004803603602081101561079257600080fd5b50356001600160a01b031661233a565b6103a0600480360360208110156107b857600080fd5b50356001600160a01b031661234c565b6103a061235e565b610396600480360360208110156107e657600080fd5b5035612364565b6103966004803603604081101561080357600080fd5b506001600160a01b0381351690602001356123c8565b6103a061248f565b6103966004803603602081101561083757600080fd5b50356001600160a01b0316612495565b6103a06124f7565b6104906124fd565b6103966004803603602081101561086d57600080fd5b503561250c565b6103966004803603602081101561088a57600080fd5b5035612670565b6002602081815260009283526040928390208054600180830154600484015460058501546006860154600787015460088801546009890180548d51610100998216159990990260001901169b909b04601f81018b90048b0288018b01909c528b8752969a6001600160a01b039586169a94999398929791969590911694919391928301828280156109635780601f1061093857610100808354040283529160200191610963565b820191906000526020600020905b81548152906001019060200180831161094657829003601f168201915b50505050600a830154600b840154600c850154600d909501549394919390925060ff168c565b610991611c13565b6109e2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60125415610a20576040805162461bcd60e51b81526020600482015260066024820152651a5b9a5d195960d21b604482015290519081900360640190fd5b600c54604080516340c10f1960e01b81523060048201526969e10de76676d0800000602482015290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015610a7c57600080fd5b505af1158015610a90573d6000803e3d6000fd5b50505050610aaa62015180426126e790919063ffffffff16565b601255604080516969e10de76676d0800000815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1565b60095481565b60085461010090046001600160a01b03163314610b44576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600455565b600054600160a01b900460ff1681565b60075481565b336000908152600b602052604090205460ff1615610bac576040805162461bcd60e51b81526020600482015260056024820152643b37ba32b960d91b604482015290519081900360640190fd5b336000908152600b60209081526040808320805460ff19166001179055600d825280832054600a909252909120819055600954610bee9163ffffffff61273016565b6009819055336000818152600a6020908152604091829020548251938452908301528181019290925290517f42bd0b21218b5114f60361fe686fe499033f14f22cb728a08cf9df9b4e60f8cc9181900360600190a1565b600060125411610c88576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b62015180610ca1601254426126e790919063ffffffff16565b118015610cb957506969e10de76676d0800000601054105b15610ce657601154601054610cd39163ffffffff61273016565b60105542601255601154610ce69061278a565b610cee61116c565b336000908152600d6020526040902054811115610d3d576040805162461bcd60e51b81526020600482015260086024820152672162616c616e636560c01b604482015290519081900360640190fd5b600c54604080516370a0823160e01b8152306004820152905183926000926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d6020811015610db757600080fd5b5051905081811015610e87576000610dd5838363ffffffff6126e716565b600c54604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e2657600080fd5b505afa158015610e3a573d6000803e3d6000fd5b505050506040513d6020811015610e5057600080fd5b505190506000610e66828563ffffffff6126e716565b905082811015610e8357610e80848263ffffffff61273016565b94505b5050505b60008052600e602052600080516020612e4983398151915254610ef490610ed5906b1d6329f1c35ca4bfabb9f56160281b90610ec9908763ffffffff6128a416565b9063ffffffff6128fd16565b336000908152600d60205260409020600101549063ffffffff6126e716565b336000908152600d60205260409020600181019190915554610f1c908463ffffffff6126e716565b336000908152600d602090815260408220929092558052600e9052600080516020612eb483398151915254610f57908463ffffffff6126e716565b60008052600e602052600080516020612eb483398151915255600c54610f8d906001600160a01b0316338463ffffffff61293f16565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a2505050565b60085461010090046001600160a01b0316331461101a576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600655565b6000818152600260205260409020600d015460ff161515600114611072576040805162461bcd60e51b815260206004820152600560248201526410b7b832b760d91b604482015290519081900360640190fd5b60008181526002602052604090206007015443116110c0576040805162461bcd60e51b8152602060048083019190915260248201526308595b9960e21b604482015290519081900360640190fd5b6000806110cc8361191b565b506000858152600260205260408120600c810154600b9091015493955091935091106110f6575060015b600084815260026020908152604091829020600d01805460ff19169055815185815290810184905282151581830152905185917f66ab4d2a1f6db1c01d1d46ab61a9c333b5a4de5e75cc7a68e1495b4badbd009b919081900360600190a250505050565b60016020526000908152604090205481565b6000601254116111af576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b620151806111c8601254426126e790919063ffffffff16565b1180156111e057506969e10de76676d0800000601054105b1561120d576011546010546111fa9163ffffffff61273016565b6010554260125560115461120d9061278a565b600061121833611837565b336000908152600d60209081526040822054918052600e9052600080516020612e4983398151915254919250611269916b1d6329f1c35ca4bfabb9f56160281b91610ec9919063ffffffff6128a416565b336000908152600d60205260409020600181019190915560020154611294908263ffffffff61273016565b336000908152600d6020526040902060020155801561137557336000908152600f60205260409020544203620151808110156113205760006112fd670de0b6b3a7640000610ec96201518081836112f1888a63ffffffff6128a416565b9063ffffffff6128a416565b90506000611311848363ffffffff6126e716565b905061131c8161278a565b5091505b600c5461133d906001600160a01b0316338463ffffffff61293f16565b60408051838152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a2505b50565b60065481565b60085461010090046001600160a01b031681565b60085461010090046001600160a01b031633146113e4576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b60008054911515600160a01b0260ff60a01b19909216919091179055565b6000808052600e602052600080516020612eb483398151915254819061146a9061144590610ec9876b1d6329f1c35ca4bfabb9f56160281b63ffffffff6128a416565b60008052600e602052600080516020612e49833981519152549063ffffffff61273016565b6001600160a01b0384166000908152600d6020526040812054919250906114ad906b1d6329f1c35ca4bfabb9f56160281b90610ec990859063ffffffff6128a416565b90506114c86114bb85611837565b829063ffffffff6126e716565b6001600160a01b0385166000908152600d60205260409020600101549091508110156114f95760009250505061152b565b6001600160a01b0384166000908152600d602052604090206001015461152690829063ffffffff6126e716565b925050505b92915050565b611539611c13565b61158a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000818152600260205260409020600601544311611622576040805162461bcd60e51b81526020600482015260066024820152650f1cdd185c9d60d21b604482015290519081900360640190fd5b6000818152600260205260409020600701544310611670576040805162461bcd60e51b815260206004808301919091526024820152630f995b9960e21b604482015290519081900360640190fd5b6000818152600260208181526040808420338552909201905290205480156116db576000828152600260205260409020600401546116b4908263ffffffff6126e716565b60008381526002602081815260408084206004810195909555338452939091019052908120555b60008281526002602090815260408083203380855260039091019092528220546117149161170890611900565b9063ffffffff6126e716565b600084815260026020526040902060050154909150611739908263ffffffff61273016565b60008481526002602052604090206005015561175433611900565b600084815260026020818152604080842033855260038101835290842094909455600954878452919052600a830155600582015460049092015490916117a0919063ffffffff61273016565b6009549091506117bc90610ec98361271063ffffffff6128a416565b6000858152600260205260409020600b01556005546117e1904363ffffffff61273016565b33600081815260016020908152604080832094909455835191825281018590528251919287927f88d35328232823f54954b6627e9f732371656f6daa40cb1b01b27dc7875a7b479281900390910190a350505050565b6001600160a01b0381166000908152600d60209081526040822054828052600e909152600080516020612e49833981519152548291611891916b1d6329f1c35ca4bfabb9f56160281b91610ec9919063ffffffff6128a416565b6001600160a01b0384166000908152600d60205260409020600101549091508110156118c15760009150506118f2565b6001600160a01b0383166000908152600d60205260409020600101546118ee90829063ffffffff6126e716565b9150505b919050565b60085460ff1681565b6001600160a01b03166000908152600a602052604090205490565b60008181526002602052604081206004810154600590910154909180611947848463ffffffff61273016565b905061195f81610ec98661271063ffffffff6128a416565b935061197781610ec98561271063ffffffff6128a416565b6000868152600260205260409020600a01549093506119a290610ec98361271063ffffffff6128a416565b93959294505050565b60008181526002602052604090206006015443116119f9576040805162461bcd60e51b81526020600482015260066024820152650f1cdd185c9d60d21b604482015290519081900360640190fd5b6000818152600260205260409020600701544310611a47576040805162461bcd60e51b815260206004808301919091526024820152630f995b9960e21b604482015290519081900360640190fd5b60008181526002602090815260408083203384526003019091529020548015611ab457600082815260026020526040902060050154611a8c908263ffffffff6126e716565b6000838152600260209081526040808320600581019490945533835260039093019052908120555b6000828152600260208181526040808420338086529301909152822054611ade9161170890611900565b600084815260026020526040902060040154909150611b03908263ffffffff61273016565b600084815260026020526040902060040155611b1e33611900565b6000848152600260208181526040808420338552808401835290842094909455600954878452919052600a83015560058201546004909201549091611b69919063ffffffff61273016565b600954909150611b8590610ec98361271063ffffffff6128a416565b6000858152600260205260409020600b0155600554611baa904363ffffffff61273016565b336000818152600160208181526040928390209490945581519081529283018590528051919287927f88d35328232823f54954b6627e9f732371656f6daa40cb1b01b27dc7875a7b47929181900390910190a350505050565b6000546001600160a01b03165b90565b600080546001600160a01b0316611c28612996565b6001600160a01b031614905090565b600b6020526000908152604090205460ff1681565b60085461010090046001600160a01b03163314611c9e576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b336000908152600b602052604090205460ff161515600114611d18576040805162461bcd60e51b815260206004820152600660248201526510bb37ba32b960d11b604482015290519081900360640190fd5b336000908152600b60209081526040808320805460ff19169055600a9091529020546009541015611d4d576000600955611d73565b336000908152600a6020526040902054600954611d6f9163ffffffff6126e716565b6009555b336000818152600a60209081526040918290205460095483519485529184015282820152517e330fa0724b41c0d187cfad0aa7ff5fa2ff7e742995886f55fda6f5909914b89181900360600190a1336000908152600a6020526040812055565b600060125411611e16576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b62015180611e2f601254426126e790919063ffffffff16565b118015611e4757506969e10de76676d0800000601054105b15611e7457601154601054611e619163ffffffff61273016565b60105542601255601154611e749061278a565b600c54611e92906001600160a01b031633308463ffffffff61299a16565b336000908152600d6020526040902054611eb2908263ffffffff61273016565b336000908152600d602090815260408220929092558052600e9052600080516020612e498339815191525415611f705760008052600e602052600080516020612e4983398151915254611f5c90611f3d90600190611f31906b1d6329f1c35ca4bfabb9f56160281b90610ec9908490611708908963ffffffff6128a416565b9063ffffffff61273016565b336000908152600d60205260409020600101549063ffffffff61273016565b336000908152600d60205260409020600101555b60008052600e602052600080516020612eb483398151915254611f99908263ffffffff61273016565b600080516020612eb483398151915255336000818152600f6020908152604091829020429055815184815291517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9281900390910190a250565b60085461010090046001600160a01b03163314612045576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600755565b600d6020526000908152604090208054600182015460029092015490919083565b600e6020526000908152604090208054600182015460029092015490919083565b60085461010090046001600160a01b031633146120de576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600555565b6006546120ef33611900565b1161212c576040805162461bcd60e51b81526020600482015260086024820152673c6d696e696d756d60c01b604482015290519081900360640190fd5b6040518061018001604052806003548152602001336001600160a01b0316815260200160008152602001600081526020014381526020016121784360045461273090919063ffffffff16565b8152602001836001600160a01b0316815260200182815260200160095481526020016000815260200160075481526020016001151581525060026000600360008154809291906001019190505581526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160040155606082015181600501556080820151816006015560a0820151816007015560c08201518160080160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e082015181600901908051906020019061227b929190612d8a565b50610100820151600a820155610120820151600b820155610140820151600c82015561016090910151600d909101805460ff191691151591909117905560035460045460408051928352336020840152438382015260608301919091526001600160a01b0384166080830152517ff3aa81c2323a935a3e72c018c519b8d8b432eeebaa15cbbe5c8305f0f9df6f4d9160a0908290030190a1600554612326904363ffffffff61273016565b336000908152600160205260409020555050565b600f6020526000908152604090205481565b600a6020526000908152604090205481565b60035481565b600081116123a1576040805162461bcd60e51b815260206004820152600560248201526406e6f7420360dc1b604482015290519081900360640190fd5b600c546123bf906001600160a01b031633308463ffffffff61299a16565b6113758161278a565b60085461010090046001600160a01b0316331461241a576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600c546001600160a01b0383811691161415612466576040805162461bcd60e51b81526020600482015260066024820152651c995dd85c9960d21b604482015290519081900360640190fd5b60085461248b906001600160a01b03848116916101009004168363ffffffff61293f16565b5050565b60045481565b61249d611c13565b6124ee576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611375816129fa565b60055481565b600c546001600160a01b031681565b600080600061251a8461191b565b6000878152600260205260409020600c015492955090935091508111612571576040805162461bcd60e51b81526020600482015260076024820152662171756f72756d60c81b604482015290519081900360640190fd5b60008481526002602052604090206007015443116125bf576040805162461bcd60e51b8152602060048083019190915260248201526308595b9960e21b604482015290519081900360640190fd5b6000848152600260205260409020600d015460ff161515600114156125e7576125e78461101f565b600084815260026020526040808220600801548151636009bfbd60e11b81526004810188905260248101879052604481018690526064810185905291516001600160a01b039091169263c0137f7a926084808201939182900301818387803b15801561265257600080fd5b505af1158015612666573d6000803e3d6000fd5b5050505050505050565b60085460ff1615156001146126b6576040805162461bcd60e51b815260206004820152600760248201526621636f6e66696760c81b604482015290519081900360640190fd5b600880546003929092556001600160a81b0319909116744384f49d5abc78cd05dfe37e2ffc35a51926207100179055565b600061272983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a9a565b9392505050565b600082820183811015612729576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008052600e602052600080516020612eb483398151915254156128025760008052600e602052600080516020612eb4833981519152546127e89061144590610ec9846b1d6329f1c35ca4bfabb9f56160281b63ffffffff6128a416565b60008052600e602052600080516020612e49833981519152555b60008052600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881d5461283d908263ffffffff61273016565b60008052600e60209081527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881d919091556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d929181900390910190a150565b6000826128b35750600061152b565b828202828482816128c057fe5b04146127295760405162461bcd60e51b8152600401808060200182810382526021815260200180612e696021913960400191505060405180910390fd5b600061272983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b31565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612991908490612b96565b505050565b3390565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526129f4908590612b96565b50505050565b6001600160a01b038116612a3f5760405162461bcd60e51b8152600401808060200182810382526026815260200180612e236026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115612b295760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612aee578181015183820152602001612ad6565b50505050905090810190601f168015612b1b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183612b805760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612aee578181015183820152602001612ad6565b506000838581612b8c57fe5b0495945050505050565b612ba8826001600160a01b0316612d4e565b612bf9576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310612c375780518252601f199092019160209182019101612c18565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612c99576040519150601f19603f3d011682016040523d82523d6000602084013e612c9e565b606091505b509150915081612cf5576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156129f457808060200190516020811015612d1157600080fd5b50516129f45760405162461bcd60e51b815260040180806020018281038252602a815260200180612e8a602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590612d825750808214155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612dcb57805160ff1916838001178555612df8565b82800160010185558215612df8579182015b82811115612df8578251825591602001919060010190612ddd565b50612e04929150612e08565b5090565b611c1091905b80821115612e045760008155600101612e0e56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373e710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564e710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881ca265627a7a72315820208ddb8199555647e895dfaf6fc573f4a2b69ec1268809c9988f6bcc136ad03864736f6c63430005110032

Deployed Bytecode Sourcemap

176:13004:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;176:13004:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1222:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1222:43:2;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1222:43:2;-1:-1:-1;;;;;1222:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1222:43:2;-1:-1:-1;;;;;1222:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1222:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12935:242;;;:::i;:::-;;4864:22;;;:::i;:::-;;;;;;;;;;;;;;;;2034:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2034:131:2;;:::i;498:27::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;1504:25;;;:::i;5072:304::-;;;:::i;11648:933::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11648:933:2;;:::i;1893:135::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1893:135:2;;:::i;4316:441::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4316:441:2;;:::i;674:40::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;674:40:2;-1:-1:-1;;;;;674:40:2;;:::i;10855:787::-;;;:::i;1472:26::-;;;:::i;1568:25::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1568:25:2;;;;;;;;;;;;;;531:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;531:137:2;;;;:::i;10333:516::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10333:516:2;;;;;;-1:-1:-1;;;;;10333:516:2;;:::i;616:137:5:-;;;:::i;6844:949:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6844:949:2;;:::i;10028:299::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10028:299:2;-1:-1:-1;;;;;10028:299:2;;:::i;1535:25::-;;;:::i;4763:95::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4763:95:2;-1:-1:-1;;;;;4763:95:2;;:::i;3811:407::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3811:407:2;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5882:956;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5882:956:2;;:::i;326:77:5:-;;;:::i;518:92::-;;;:::i;5837:38:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5837:38:2;-1:-1:-1;;;;;5837:38:2;;:::i;1600:150::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1600:150:2;-1:-1:-1;;;;;1600:150:2;;:::i;5383:448::-;;;:::i;9445:577::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9445:577:2;;:::i;1756:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1756:131:2;;:::i;8026:39::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8026:39:2;-1:-1:-1;;;;;8026:39:2;;:::i;8277:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8277:41:2;;:::i;2171:123::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2171:123:2;;:::i;2685:722::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;2685:722:2;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2685:722:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2685:722:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2685:722:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2685:722:2;;-1:-1:-1;2685:722:2;;-1:-1:-1;;;;;2685:722:2:i;8356:47::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8356:47:2;-1:-1:-1;;;;;8356:47:2;;:::i;4892:37::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4892:37:2;-1:-1:-1;;;;;4892:37:2;;:::i;1271:25::-;;;:::i;8866:191::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8866:191:2;;:::i;282:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;282:210:2;;;;;;;;:::i;1302:26::-;;;:::i;759:107:5:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;759:107:5;-1:-1:-1;;;;;759:107:5;;:::i;1390:24:2:-;;;:::i;7800:72::-;;;:::i;3413:392::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3413:392:2;;:::i;2300:204::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2300:204:2;;:::i;1222:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1222:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1222:43:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1222:43:2;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1222:43:2;;;:::o;12935:242::-;448:9:5;:7;:9::i;:::-;440:54;;;;;-1:-1:-1;;;440:54:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13000:14:2;;:19;12992:38;;;;;-1:-1:-1;;;12992:38:2;;;;;;;;;;;;-1:-1:-1;;;12992:38:2;;;;;;;;;;;;;;;13040:5;;:37;;;-1:-1:-1;;;13040:37:2;;13059:4;13040:37;;;;8500:11;13040:37;;;;;;-1:-1:-1;;;;;13040:5:2;;;;:10;;:37;;;;;:5;;:37;;;;;;;;:5;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;13040:37:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13040:37:2;;;;13104:27;13124:6;13104:15;:19;;:27;;;;:::i;:::-;13087:14;:44;13146:24;;;8500:11;13146:24;;;;;;;;;;;;;12935:242::o;4864:22::-;;;;:::o;2034:131::-;2106:10;;;;;-1:-1:-1;;;;;2106:10:2;2092;:24;2084:48;;;;;-1:-1:-1;;;2084:48:2;;;;;;;;;;;;-1:-1:-1;;;2084:48:2;;;;;;;;;;;;;;;2142:6;:16;2034:131::o;498:27::-;;;-1:-1:-1;;;498:27:2;;;;;:::o;1504:25::-;;;;:::o;5072:304::-;5124:10;5117:18;;;;:6;:18;;;;;;;;:27;5109:45;;;;;-1:-1:-1;;;5109:45:2;;;;;;;;;;;;-1:-1:-1;;;5109:45:2;;;;;;;;;;;;;;;5171:10;5164:18;;;;:6;:18;;;;;;;;:25;;-1:-1:-1;;5164:25:2;5185:4;5164:25;;;5219:5;:17;;;;;:23;5199:5;:17;;;;;;:43;;;5265:10;;:33;;;:14;:33;:::i;:::-;5252:10;:46;;;5327:10;5339:17;;;;:5;:17;;;;;;;;;;5313:56;;;;;;;;;;;;;;;;;;;;;;;;;;;5072:304::o;11648:933::-;12645:1;12628:14;;:18;12620:40;;;;;-1:-1:-1;;;12620:40:2;;;;;;;;;;;;-1:-1:-1;;;12620:40:2;;;;;;;;;;;;;;;12712:6;12674:35;12694:14;;12674:15;:19;;:35;;;;:::i;:::-;:44;:82;;;;;8500:11;12734:8;;:22;12674:82;12670:242;;;12796:11;;12783:8;;:25;;;:12;:25;:::i;:::-;12772:8;:36;12839:15;12822:14;:32;12889:11;;12868:33;;:20;:33::i;:::-;11709:7;:5;:7::i;:::-;11748:10;11742:17;;;;:5;:17;;;;;:23;11734:31;;;11726:51;;;;;-1:-1:-1;;;11726:51:2;;;;;;;;;;;;-1:-1:-1;;;11726:51:2;;;;;;;;;;;;;;;11847:5;;:30;;;-1:-1:-1;;;11847:30:2;;11871:4;11847:30;;;;;;11796:6;;11787;;-1:-1:-1;;;;;11847:5:2;;;;:15;;:30;;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;11847:30:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11847:30:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11847:30:2;;-1:-1:-1;11891:5:2;;;11887:319;;;11912:14;11929:8;:1;11935;11929:8;:5;:8;:::i;:::-;12040:5;;:30;;;-1:-1:-1;;;12040:30:2;;12064:4;12040:30;;;;;;11912:25;;-1:-1:-1;12026:11:2;;-1:-1:-1;;;;;12040:5:2;;;;:15;;:30;;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;12040:30:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12040:30:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12040:30:2;;-1:-1:-1;12084:10:2;12097:13;12040:30;12108:1;12097:13;:10;:13;:::i;:::-;12084:26;;12136:9;12128:5;:17;12124:72;;;12169:12;:1;12175:5;12169:12;:5;:12;:::i;:::-;12165:16;;12124:72;11887:319;;;;12285:10;;;:7;:10;;-1:-1:-1;;;;;;;;;;;12285:29:2;12243:108;;12285:56;;-1:-1:-1;;;8447:6:2;12285:41;;12319:6;12285:41;:33;:41;:::i;:::-;:45;:56;:45;:56;:::i;:::-;12249:10;12243:17;;;;:5;:17;;;;;:24;;;;:108;:28;:108;:::i;:::-;12222:10;12216:17;;;;:5;:17;;;;;:24;;;:135;;;;12387:23;:35;;12415:6;12387:35;:27;:35;:::i;:::-;12367:10;12361:17;;;;:5;:17;;;;;;;:61;;;;12457:10;;:7;:10;;-1:-1:-1;;;;;;;;;;;12457:22:2;:34;;12484:6;12457:34;:26;:34;:::i;:::-;12432:10;;;:7;:10;;-1:-1:-1;;;;;;;;;;;12432:59:2;12502:5;;:33;;-1:-1:-1;;;;;12502:5:2;12521:10;12533:1;12502:33;:18;:33;:::i;:::-;12550:24;;;;;;;;12560:10;;12550:24;;;;;;;;;;12921:1;;11648:933;:::o;1893:135::-;1967:10;;;;;-1:-1:-1;;;;;1967:10:2;1953;:24;1945:48;;;;;-1:-1:-1;;;1945:48:2;;;;;;;;;;;;-1:-1:-1;;;1945:48:2;;;;;;;;;;;;;;;2003:7;:18;1893:135::o;4316:441::-;4370:13;;;;:9;:13;;;;;:18;;;;;:26;;:18;:26;4362:44;;;;;-1:-1:-1;;;4362:44:2;;;;;;;;;;;;-1:-1:-1;;;4362:44:2;;;;;;;;;;;;;;;4424:13;;;;:9;:13;;;;;:17;;;4444:12;-1:-1:-1;4416:49:2;;;;;-1:-1:-1;;;4416:49:2;;;;;;;;;;;;;;;-1:-1:-1;;;4416:49:2;;;;;;;;;;;;;;;4477:9;4488:13;4506:12;4515:2;4506:8;:12::i;:::-;-1:-1:-1;4528:12:2;4586:13;;;:9;:13;;;;;:28;;;;4562:20;;;;;4476:42;;-1:-1:-1;4476:42:2;;-1:-1:-1;4528:12:2;4562:52;4558:97;;-1:-1:-1;4640:4:2;4558:97;4685:5;4664:13;;;:9;:13;;;;;;;;;:18;;:26;;-1:-1:-1;;4664:26:2;;;4705:45;;;;;;;;;;;;;;;;;;;;4674:2;;4705:45;;;;;;;;;;4316:441;;;;:::o;674:40::-;;;;;;;;;;;;;:::o;10855:787::-;12645:1;12628:14;;:18;12620:40;;;;;-1:-1:-1;;;12620:40:2;;;;;;;;;;;;-1:-1:-1;;;12620:40:2;;;;;;;;;;;;;;;12712:6;12674:35;12694:14;;12674:15;:19;;:35;;;;:::i;:::-;:44;:82;;;;;8500:11;12734:8;;:22;12674:82;12670:242;;;12796:11;;12783:8;;:25;;;:12;:25;:::i;:::-;12772:8;:36;12839:15;12822:14;:32;12889:11;;12868:33;;:20;:33::i;:::-;10902:11;10916:19;10924:10;10916:7;:19::i;:::-;11012:10;11006:17;;;;:5;:17;;;;;;;:23;10972:10;;;:7;:10;;-1:-1:-1;;;;;;;;;;;10972:29:2;10902:33;;-1:-1:-1;10972:73:2;;-1:-1:-1;;;8447:6:2;10972:58;;:29;:58;:33;:58;:::i;:73::-;10951:10;10945:17;;;;:5;:17;;;;;:24;;;:100;;;;11085:27;;;:36;;11117:3;11085:36;:31;:36;:::i;:::-;11061:10;11055:17;;;;:5;:17;;;;;:27;;:66;11136:7;;11132:504;;11200:10;11159:20;11188:23;;;:11;:23;;;;;;11182:3;:29;11244:6;11229:21;;11225:306;;;11286:20;11309:53;11357:4;11309:43;11345:6;11309:43;11357:4;11309:21;:12;11326:3;11309:21;:16;:21;:::i;:::-;:25;:31;:25;:31;:::i;:53::-;11286:76;-1:-1:-1;11380:22:2;11405:21;:3;11286:76;11405:21;:7;:21;:::i;:::-;11380:46;;11444:36;11465:14;11444:20;:36::i;:::-;-1:-1:-1;11504:12:2;-1:-1:-1;11225:306:2;11544:5;;:35;;-1:-1:-1;;;;;11544:5:2;11563:10;11575:3;11544:35;:18;:35;:::i;:::-;11598:27;;;;;;;;11609:10;;11598:27;;;;;;;;;;11132:504;;12921:1;10855:787::o;1472:26::-;;;;:::o;1568:25::-;;;;;;-1:-1:-1;;;;;1568:25:2;;:::o;531:137::-;607:10;;;;;-1:-1:-1;;;;;607:10:2;593;:24;585:48;;;;;-1:-1:-1;;;585:48:2;;;;;;;;;;;;-1:-1:-1;;;585:48:2;;;;;;;;;;;;;;;643:7;:18;;;;;-1:-1:-1;;;643:18:2;-1:-1:-1;;;;643:18:2;;;;;;;;;531:137::o;10333:516::-;10417:7;10548:10;;;:7;:10;;-1:-1:-1;;;;;;;;;;;10548:22:2;10417:7;;10466:115;;10513:58;;:30;:15;-1:-1:-1;;;10513:30:2;:19;:30;:::i;:58::-;10466:10;;;:7;:10;;-1:-1:-1;;;;;;;;;;;10466:29:2;;:115;:33;:115;:::i;:::-;-1:-1:-1;;;;;10630:11:2;;10591:12;10630:11;;;:5;:11;;;;;:17;10436:145;;-1:-1:-1;10591:12:2;10606:57;;-1:-1:-1;;;8447:6:2;10606:42;;10436:145;;10606:42;:23;:42;:::i;:57::-;10591:72;;10680:23;10689:13;10697:4;10689:7;:13::i;:::-;10680:4;;:23;:8;:23;:::i;:::-;-1:-1:-1;;;;;10724:11:2;;;;;;:5;:11;;;;;:18;;;10673:30;;-1:-1:-1;10717:25:2;;10713:130;;;10765:1;10758:8;;;;;;10713:130;-1:-1:-1;;;;;10813:11:2;;;;;;:5;:11;;;;;:18;;;10804:28;;:4;;:28;:8;:28;:::i;:::-;10797:35;;;;10333:516;;;;;:::o;616:137:5:-;448:9;:7;:9::i;:::-;440:54;;;;;-1:-1:-1;;;440:54:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;714:1;698:6;;677:40;;-1:-1:-1;;;;;698:6:5;;;;677:40;;714:1;;677:40;744:1;727:19;;-1:-1:-1;;;;;;727:19:5;;;616:137::o;6844:949:2:-;6899:13;;;;:9;:13;;;;;:19;;;6921:12;-1:-1:-1;6891:54:2;;;;;-1:-1:-1;;;6891:54:2;;;;;;;;;;;;-1:-1:-1;;;6891:54:2;;;;;;;;;;;;;;;6963:13;;;;:9;:13;;;;;:17;;;6983:12;-1:-1:-1;6955:50:2;;;;;-1:-1:-1;;;6955:50:2;;;;;;;;;;;;;;;-1:-1:-1;;;6955:50:2;;;;;;;;;;;;;;;7016:9;7028:13;;;:9;:13;;;;;;;;7051:10;7028:34;;:22;;;:34;;;;;7076:8;;7072:158;;7130:13;;;;:9;:13;;;;;:27;;;:37;;7162:4;7130:37;:31;:37;:::i;:::-;7100:13;;;;:9;:13;;;;;;;;:27;;;:67;;;;7204:10;7181:34;;:22;;;;:34;;;;;:38;7072:158;7240:9;7276:13;;;:9;:13;;;;;;;;7303:10;7276:38;;;:26;;;;:38;;;;;;7252:63;;:19;;:7;:19::i;:::-;:23;:63;:23;:63;:::i;:::-;7359:13;;;;:9;:13;;;;;:31;;;7240:75;;-1:-1:-1;7359:41:2;;7240:75;7359:41;:35;:41;:::i;:::-;7325:13;;;;:9;:13;;;;;:31;;:75;7451:19;7459:10;7451:7;:19::i;:::-;7410:13;;;;:9;:13;;;;;;;;7437:10;7410:38;;:26;;;:38;;;;;:60;;;;7517:10;;7481:13;;;;;;:33;;;:46;7583:31;;;;7551:27;;;;;7410:13;;7551:64;;:27;:64;:31;:64;:::i;:::-;7670:10;;7537:78;;-1:-1:-1;7648:33:2;;:17;7537:78;7659:5;7648:17;:10;:17;:::i;:33::-;7625:13;;;;:9;:13;;;;;:20;;:56;7715:4;;:22;;7724:12;7715:22;:8;:22;:::i;:::-;7701:10;7692:20;;;;:8;:20;;;;;;;;:45;;;;7753:33;;;;;;;;;;;;7701:10;;7758:2;;7753:33;;;;;;;;;;6844:949;;;;:::o;10028:299::-;-1:-1:-1;;;;;10148:11:2;;10080:7;10148:11;;;:5;:11;;;;;;;:17;10114:10;;;:7;:10;;;-1:-1:-1;;;;;;;;;;;10114:29:2;10080:7;;10114:67;;-1:-1:-1;;;8447:6:2;10114:52;;:29;:52;:33;:52;:::i;:67::-;-1:-1:-1;;;;;10202:11:2;;;;;;:5;:11;;;;;:18;;;10099:82;;-1:-1:-1;10195:25:2;;10191:130;;;10243:1;10236:8;;;;;10191:130;-1:-1:-1;;;;;10291:11:2;;;;;;:5;:11;;;;;:18;;;10282:28;;:4;;:28;:8;:28;:::i;:::-;10275:35;;;10028:299;;;;:::o;1535:25::-;;;;;;:::o;4763:95::-;-1:-1:-1;;;;;4839:12:2;4816:4;4839:12;;;:5;:12;;;;;;;4763:95::o;3811:407::-;3859:9;3916:13;;;:9;:13;;;;;:27;;;;3964:31;;;;;3916:27;;3859:9;4020:18;3916:27;3964:31;4020:18;:8;:18;:::i;:::-;4006:32;-1:-1:-1;4055:27:2;4006:32;4055:15;:4;4064:5;4055:15;:8;:15;:::i;:27::-;4048:34;-1:-1:-1;4103:31:2;4127:6;4103:19;:8;4116:5;4103:19;:12;:19;:::i;:31::-;4177:13;;;;:9;:13;;;;;:33;;;4092:42;;-1:-1:-1;4155:56:2;;:17;:6;4166:5;4155:17;:10;:17;:::i;:56::-;3811:407;;;;-1:-1:-1;;;3811:407:2:o;5882:956::-;5933:13;;;;:9;:13;;;;;:19;;;5955:12;-1:-1:-1;5925:54:2;;;;;-1:-1:-1;;;5925:54:2;;;;;;;;;;;;-1:-1:-1;;;5925:54:2;;;;;;;;;;;;;;;5997:13;;;;:9;:13;;;;;:17;;;6017:12;-1:-1:-1;5989:50:2;;;;;-1:-1:-1;;;5989:50:2;;;;;;;;;;;;;;;-1:-1:-1;;;5989:50:2;;;;;;;;;;;;;;;6050:13;6066;;;:9;:13;;;;;;;;6093:10;6066:38;;:26;;:38;;;;;;6118:12;;6114:178;;6180:13;;;;:9;:13;;;;;:31;;;:45;;6216:8;6180:45;:35;:45;:::i;:::-;6146:13;;;;:9;:13;;;;;;;;:31;;;:79;;;;6266:10;6239:38;;:26;;;;:38;;;;;:42;6114:178;6302:9;6338:13;;;:9;:13;;;;;;;;6361:10;6338:34;;;:22;;:34;;;;;;6314:59;;:19;;:7;:19::i;:59::-;6413:13;;;;:9;:13;;;;;:27;;;6302:71;;-1:-1:-1;6413:37:2;;6302:71;6413:37;:31;:37;:::i;:::-;6383:13;;;;:9;:13;;;;;:27;;:67;6497:19;6505:10;6497:7;:19::i;:::-;6460:13;;;;:9;:13;;;;;;;;6483:10;6460:34;;:22;;;:34;;;;;:56;;;;6563:10;;6527:13;;;;;;:33;;;:46;6629:31;;;;6597:27;;;;;6460:13;;6597:64;;:27;:64;:31;:64;:::i;:::-;6716:10;;6583:78;;-1:-1:-1;6694:33:2;;:17;6583:78;6705:5;6694:17;:10;:17;:::i;:33::-;6671:13;;;;:9;:13;;;;;:20;;:56;6761:4;;:22;;6770:12;6761:22;:8;:22;:::i;:::-;6747:10;6738:20;;;;:8;:20;;;;;;;;;:45;;;;6799:32;;;;;;;;;;;;;6747:10;;6804:2;;6799:32;;;;;;;;;;;5882:956;;;;:::o;326:77:5:-;364:7;390:6;-1:-1:-1;;;;;390:6:5;326:77;;:::o;518:92::-;558:4;597:6;;-1:-1:-1;;;;;597:6:5;581:12;:10;:12::i;:::-;-1:-1:-1;;;;;581:22:5;;574:29;;518:92;:::o;5837:38:2:-;;;;;;;;;;;;;;;:::o;1600:150::-;1683:10;;;;;-1:-1:-1;;;;;1683:10:2;1669;:24;1661:48;;;;;-1:-1:-1;;;1661:48:2;;;;;;;;;;;;-1:-1:-1;;;1661:48:2;;;;;;;;;;;;;;;1719:10;:24;;-1:-1:-1;;;;;1719:24:2;;;;;-1:-1:-1;;;;;;1719:24:2;;;;;;;;;1600:150::o;5383:448::-;5433:10;5426:18;;;;:6;:18;;;;;;;;:26;;:18;:26;5418:45;;;;;-1:-1:-1;;;5418:45:2;;;;;;;;;;;;-1:-1:-1;;;5418:45:2;;;;;;;;;;;;;;;5480:10;5494:5;5473:18;;;:6;:18;;;;;;;;:26;;-1:-1:-1;;5473:26:2;;;5526:5;:17;;;;;;5513:10;;:30;5509:216;;;5636:1;5623:10;:14;5509:216;;;5702:10;5696:17;;;;:5;:17;;;;;;5681:10;;:33;;;:14;:33;:::i;:::-;5668:10;:46;5509:216;5751:10;5763:17;;;;:5;:17;;;;;;;;;;5782:10;;5739:54;;;;;;;;;;;;;;;;;;;;;;;5809:10;5823:1;5803:17;;;:5;:17;;;;;:21;5383:448::o;9445:577::-;12645:1;12628:14;;:18;12620:40;;;;;-1:-1:-1;;;12620:40:2;;;;;;;;;;;;-1:-1:-1;;;12620:40:2;;;;;;;;;;;;;;;12712:6;12674:35;12694:14;;12674:15;:19;;:35;;;;:::i;:::-;:44;:82;;;;;8500:11;12734:8;;:22;12674:82;12670:242;;;12796:11;;12783:8;;:25;;;:12;:25;:::i;:::-;12772:8;:36;12839:15;12822:14;:32;12889:11;;12868:33;;:20;:33::i;:::-;9507:5;;:57;;-1:-1:-1;;;;;9507:5:2;9530:10;9550:4;9557:6;9507:57;:22;:57;:::i;:::-;9606:10;9600:17;;;;:5;:17;;;;;:23;:35;;9628:6;9600:35;:27;:35;:::i;:::-;9580:10;9574:17;;;;:5;:17;;;;;;;:61;;;;9649:10;;:7;:10;;-1:-1:-1;;;;;;;;;;;9649:29:2;:34;9645:222;;9772:10;;;:7;:10;;-1:-1:-1;;;;;;;;;;;9772:29:2;9726:130;;9772:70;;9840:1;;9772:63;;-1:-1:-1;;;8447:6:2;9772:48;;9840:1;;9772:41;;9806:6;9772:41;:33;:41;:::i;:63::-;:67;:70;:67;:70;:::i;:::-;9732:10;9726:17;;;;:5;:17;;;;;:24;;;;:130;:28;:130;:::i;:::-;9705:10;9699:17;;;;:5;:17;;;;;:24;;:157;9645:222;9901:10;;;:7;:10;;-1:-1:-1;;;;;;;;;;;9901:22:2;:34;;9928:6;9901:34;:26;:34;:::i;:::-;-1:-1:-1;;;;;;;;;;;9876:59:2;9957:10;9876;9945:23;;;:11;9876:10;9945:23;;;9876:10;9945:23;;;;9971:3;9945:29;;9989:26;;;;;;;;;;;;;;;;;9445:577;:::o;1756:131::-;1828:10;;;;;-1:-1:-1;;;;;1828:10:2;1814;:24;1806:48;;;;;-1:-1:-1;;;1806:48:2;;;;;;;;;;;;-1:-1:-1;;;1806:48:2;;;;;;;;;;;;;;;1864:6;:16;1756:131::o;8026:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8277:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2171:123::-;2239:10;;;;;-1:-1:-1;;;;;2239:10:2;2225;:24;2217:48;;;;;-1:-1:-1;;;2217:48:2;;;;;;;;;;;;-1:-1:-1;;;2217:48:2;;;;;;;;;;;;;;;2275:4;:12;2171:123::o;2685:722::-;2787:7;;2765:19;2773:10;2765:7;:19::i;:::-;:29;2757:50;;;;;-1:-1:-1;;;2757:50:2;;;;;;;;;;;;-1:-1:-1;;;2757:50:2;;;;;;;;;;;;;;;2846:413;;;;;;;;2873:13;;2846:413;;;;2910:10;-1:-1:-1;;;;;2846:413:2;;;;;2949:1;2846:413;;;;2983:1;2846:413;;;;3005:12;2846:413;;;;3036:24;3047:12;3036:6;;:10;;:24;;;;:::i;:::-;2846:413;;;;3084:8;-1:-1:-1;;;;;2846:413:2;;;;;3112:4;2846:413;;;;3151:10;;2846:413;;;;3183:1;2846:413;;;;3214:6;;2846:413;;;;3240:4;2846:413;;;;;2817:9;:26;2827:13;;:15;;;;;;;;;;;;2817:26;;;;;;;;;;;:442;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2817:442:2;;;;;-1:-1:-1;;;;;2817:442:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2817:442:2;;;;;-1:-1:-1;;;;;2817:442:2;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2817:442:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2817:442:2;;;;;;;;;;3287:13;;3328:6;;3275:70;;;;;;3302:10;3275:70;;;;3314:12;3275:70;;;;;;;;;;;-1:-1:-1;;;;;3275:70:2;;;;;;;;;;;;;;;;;3378:4;;:22;;3387:12;3378:22;:8;:22;:::i;:::-;3364:10;3355:20;;;;:8;:20;;;;;:45;-1:-1:-1;;2685:722:2:o;8356:47::-;;;;;;;;;;;;;:::o;4892:37::-;;;;;;;;;;;;;:::o;1271:25::-;;;;:::o;8866:191::-;8935:1;8928:6;:8;8920:25;;;;;-1:-1:-1;;;8920:25:2;;;;;;;;;;;;-1:-1:-1;;;8920:25:2;;;;;;;;;;;;;;;8955:5;;:57;;-1:-1:-1;;;;;8955:5:2;8978:10;8998:4;9005:6;8955:57;:22;:57;:::i;:::-;9022:28;9043:6;9022:20;:28::i;282:210::-;366:10;;;;;-1:-1:-1;;;;;366:10:2;352;:24;344:48;;;;;-1:-1:-1;;;344:48:2;;;;;;;;;;;;-1:-1:-1;;;344:48:2;;;;;;;;;;;;;;;420:5;;-1:-1:-1;;;;;410:15:2;;;420:5;;410:15;;402:34;;;;;-1:-1:-1;;;402:34:2;;;;;;;;;;;;-1:-1:-1;;;402:34:2;;;;;;;;;;;;;;;466:10;;446:39;;-1:-1:-1;;;;;446:19:2;;;;466:10;;;;478:6;446:39;:19;:39;:::i;:::-;282:210;;:::o;1302:26::-;;;;:::o;759:107:5:-;448:9;:7;:9::i;:::-;440:54;;;;;-1:-1:-1;;;440:54:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;831:28;850:8;831:18;:28::i;1390:24:2:-;;;;:::o;7800:72::-;;;-1:-1:-1;;;;;7800:72:2;;:::o;3413:392::-;3457:9;3468:13;3483:12;3499;3508:2;3499:8;:12::i;:::-;3529:13;;;;:9;:13;;;;;:28;;;3456:55;;-1:-1:-1;3456:55:2;;-1:-1:-1;3456:55:2;-1:-1:-1;3529:38:2;-1:-1:-1;3521:58:2;;;;;-1:-1:-1;;;3521:58:2;;;;;;;;;;;;-1:-1:-1;;;3521:58:2;;;;;;;;;;;;;;;3597:13;;;;:9;:13;;;;;:17;;;3617:12;-1:-1:-1;3589:50:2;;;;;-1:-1:-1;;;3589:50:2;;;;;;;;;;;;;;;-1:-1:-1;;;3589:50:2;;;;;;;;;;;;;;;3653:13;;;;:9;:13;;;;;:18;;;;;:26;;:18;:26;3649:71;;;3695:14;3706:2;3695:10;:14::i;:::-;3738:13;;;;:9;:13;;;;;;:22;;;3729:69;;-1:-1:-1;;;3729:69:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3738:22:2;;;;3729:40;;:69;;;;;;;;;;;3738:13;:22;3729:69;;;5:2:-1;;;;30:1;27;20:12;5:2;3729:69:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3729:69:2;;;;3413:392;;;;:::o;2300:204::-;2354:6;;;;:14;;:6;:14;2346:34;;;;;-1:-1:-1;;;2346:34:2;;;;;;;;;;;;-1:-1:-1;;;2346:34:2;;;;;;;;;;;;;;;2390:6;:14;;2414:13;:18;;;;-1:-1:-1;;;;;;2442:55:2;;;;;;;2300:204::o;230:134:7:-;288:7;314:43;318:1;321;314:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;307:50;230:134;-1:-1:-1;;;230:134:7:o;48:176::-;106:7;137:5;;;160:6;;;;152:46;;;;;-1:-1:-1;;;152:46:7;;;;;;;;;;;;;;;;;;;;;;;;;;;9067:372:2;9160:1;9135:10;;:7;:10;;-1:-1:-1;;;;;;;;;;;9135:22:2;:26;9131:203;;9286:10;;;:7;:10;;-1:-1:-1;;;;;;;;;;;9286:22:2;9209:114;;9260:49;;:21;:6;-1:-1:-1;;;9260:21:2;:10;:21;:::i;9209:114::-;9177:10;;;:7;:10;;-1:-1:-1;;;;;;;;;;;9177:146:2;9131:203;9366:10;;;:7;:10;;:20;;:32;;9391:6;9366:32;:24;:32;:::i;:::-;9343:10;;;:7;:10;;;;:20;:55;;;;:10;9413:19;;;;;;;;;;;;;;;;;;9067:372;:::o;563:241:7:-;621:7;644:6;640:45;;-1:-1:-1;673:1:7;666:8;;640:45;707:5;;;711:1;707;:5;:1;730:5;;;;;:10;722:56;;;;-1:-1:-1;;;722:56:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;810:130;868:7;894:39;898:1;901;894:39;;;;;;;;;;;;;;;;;:3;:39::i;186:174:6:-;294:58;;;-1:-1:-1;;;;;294:58:6;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;294:58:6;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;268:85:6;;287:5;;268:18;:85::i;:::-;186:174;;;:::o;85:96:1:-;164:10;85:96;:::o;366:202:6:-;492:68;;;-1:-1:-1;;;;;492:68:6;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;492:68:6;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;466:95:6;;485:5;;466:18;:95::i;:::-;366:202;;;;:::o;872:225:5:-;-1:-1:-1;;;;;945:22:5;;937:73;;;;-1:-1:-1;;;937:73:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1046:6;;;1025:38;;-1:-1:-1;;;;;1025:38:5;;;;1046:6;;;1025:38;;;1073:6;:17;;-1:-1:-1;;;;;;1073:17:5;-1:-1:-1;;;;;1073:17:5;;;;;;;;;;872:225::o;370:187:7:-;456:7;491:12;483:6;;;;475:29;;;;-1:-1:-1;;;475:29:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;475:29:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;526:5:7;;;370:187::o;946:338::-;1032:7;1132:12;1125:5;1117:28;;;;-1:-1:-1;;;1117:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1117:28:7;;1155:9;1171:1;1167;:5;;;;;;;946:338;-1:-1:-1;;;;;946:338:7:o;1543:444:6:-;1630:27;1638:5;-1:-1:-1;;;;;1630:25:6;;:27::i;:::-;1622:71;;;;;-1:-1:-1;;;1622:71:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1705:12;1719:23;1754:5;-1:-1:-1;;;;;1746:19:6;1766:4;1746:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1746:25:6;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1704:67:6;;;;1789:7;1781:52;;;;;-1:-1:-1;;;1781:52:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1848:17;;:21;1844:137;;1904:10;1893:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1893:30:6;1885:85;;;;-1:-1:-1;;;1885:85:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47:312:0;107:4;270:20;;171:66;309:15;;;;;:42;;;340:11;328:8;:23;;309:42;301:51;47:312;-1:-1:-1;;;;47:312:0:o;176:13004:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;176:13004:2;;;-1:-1:-1;176:13004:2;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://208ddb8199555647e895dfaf6fc573f4a2b69ec1268809c9988f6bcc136ad038

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.