Contract 0x5aC59d3DE6D16AEB38f872298D9e176817c656F4

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x7bda8ee9de2391adfc6499b4c8a49f6d7ae32c1177c7de00a5a9502ed25bd62d0x60806040100891522021-08-16 20:51:52113 days 16 hrs ago0xf87a9819ce260fb710c00bb841bf4b8b311ec741 IN  Contract Creation0 BNB0.00783069
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OTC

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-08-16
*/

//SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

interface IERC20 {
    function mint(address _to, uint256 _value) external;

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

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

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool);

    function transfer(address _to, uint256 _value)
        external
        returns (bool success);

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    ) external returns (bool success);

    function balanceOf(address _owner) external view returns (uint256 balance);
}


/// @title The interface for Graviton OTC contract
/// @notice Exchanges ERC20 token for GTON with a linear unlocking schedule
/// @author Anton Davydov - <[email protected]>
interface IOTC {
    /// @notice User that can grant access permissions and perform privileged actions
    function owner() external view returns (address);

    /// @notice Transfers ownership of the contract to a new account (`_owner`).
    /// @dev Can only be called by the current owner.
    function setOwner(address _owner) external;

    /// @notice Address of GTON
    function base() external view returns (IERC20);

    /// @notice Address of ERC20 token to sell GTON for
    function quote() external view returns (IERC20);

    /// @notice amount of quote tokens needed to receive one GTON
    function price() external view returns (uint256);

    /// @notice last time price was updated
    function setPriceLast() external view returns (uint256);

    /// @notice updates price
    function setPrice(uint256 _price) external;

    /// @notice Look up if `user` is allowed to set price
    function canSetPrice(address user) external view returns (bool);

    /// @notice Sets `setter` permission to open new governance balances to `_canSetPrice`
    /// @dev Can only be called by the current owner.
    function setCanSetPrice(address setter, bool _canSetPrice) external;

    /// @notice Minimum amount of GTON to exchange
    function lowerLimit() external view returns (uint256);

    /// @notice Maximum amount of GTON to exchange
    function upperLimit() external view returns (uint256);

    /// @notice last time limits were updated
    function setLimitsLast() external view returns (uint256);

    /// @notice updates exchange limits
    function setLimits(uint256 _lowerLimit, uint256 _upperLimit) external;

    /// @notice claim starting time to set for otc deals
    function cliffAdmin() external view returns (uint256);

    /// @notice total vesting period to set for otc deals
    function vestingTimeAdmin() external view returns (uint256);

    /// @notice number of claims over vesting period to set for otc deals
    function numberOfTranchesAdmin() external view returns (uint256);

    /// @notice last time vesting parameters were updated
    function setVestingParamsLast() external view returns (uint256);

    /// @notice updates vesting parameters
    /// @param _cliff claim starting time
    /// @param _vestingTimeAdmin total vesting period
    /// @param _numberOfTranchesAdmin number of claims over vesting period
    function setVestingParams(
        uint256 _cliff,
        uint256 _vestingTimeAdmin,
        uint256 _numberOfTranchesAdmin
    ) external;

    /// @notice beginning of vesting period for `account`
    function startTime(address account) external view returns (uint256);

    /// @notice claim starting time set for otc deal with `account`
    function cliff(address account) external view returns (uint256);

    /// @notice total vesting period set for otc deal with `account`
    function vestingTime(address account) external view returns (uint256);

    /// @notice number of claims over vesting period set for otc deal with `account`
    function numberOfTranches(address account) external view returns (uint256);

    /// @notice amount of GTON vested for `account`
    function vested(address account) external view returns (uint256);

    /// @notice amount of GTON claimed by `account`
    function claimed(address account) external view returns (uint256);

    /// @notice last time GTON was claimed by `account`
    function claimLast(address account) external view returns (uint256);

    /// @notice total amount of vested GTON
    function vestedTotal() external view returns (uint256);

    /// @notice amount of GTON claimed by all accounts
    function claimedTotal() external view returns (uint256);

    /// @notice exchanges quote tokens for vested GTON according to a set price
    /// @param amount amount of GTON to exchange
    function exchange(uint256 amount) external;

    /// @notice transfers a share of vested GTON to the caller
    function claim() external;

    /// @notice transfers quote tokens to the owner
    function collect() external;

    /// @notice Event emitted when the owner changes via `#setOwner`.
    /// @param ownerOld The account that was the previous owner of the contract
    /// @param ownerNew The account that became the owner of the contract
    event SetOwner(address indexed ownerOld, address indexed ownerNew);

    /// @notice Event emitted when the owner updates the price via `#setPrice`.
    /// @param _price amount of quote tokens needed to receive one GTON
    event SetPrice(uint256 _price);

    /// @notice Event emitted when the `setter` permission is updated via `#setCanSetPrice`
    /// @param owner The owner account at the time of change
    /// @param setter The account whose permission to set price was updated
    /// @param newBool Updated permission
    event SetCanSetPrice(
        address indexed owner,
        address indexed setter,
        bool indexed newBool
    );

    /// @notice Event emitted when the owner updates exchange limits via `#setLimits`.
    /// @param _lowerLimit minimum amount of GTON to exchange
    /// @param _upperLimit maximum amount of GTON to exchange
    event SetLimits(uint256 _lowerLimit, uint256 _upperLimit);

    /// @notice Event emitted when the owner updates vesting parameters via `#setVestingParams`.
    /// @param _cliffAdmin claim starting time to set for otc deals
    /// @param _vestingTimeAdmin total vesting period to set for otc deals
    /// @param _numberOfTranchesAdmin number of tranches to set for otc deals
    event SetVestingParams(uint256 _cliffAdmin, uint256 _vestingTimeAdmin, uint256 _numberOfTranchesAdmin);

    /// @notice Event emitted when OTC exchange is initiated via `#exchange`.
    /// @param account account that initiated the exchange
    /// @param amountQuote amount of quote tokens that `account`
    /// transfers to the contract
    /// @param amountBase amount of GTON vested for `account`
    /// in exchange for quote tokens
    event Exchange(address account, uint256 amountQuote, uint256 amountBase);

    /// @notice Event emitted when an account claims vested GTON via `#Claim`.
    /// @param account account that initiates OTC exchange
    /// @param amount amount of base tokens that the account claims
    event Claim(address account, uint256 amount);

    /// @notice Event emitted when the owner collects quote tokens via `#Collect`.
    /// @param amount amount of quote tokens that the owner collects
    event Collect(uint256 amount);
}


/// @title OTC
/// @author Anton Davydov - <[email protected]>
contract OTC is IOTC {
    /// @inheritdoc IOTC
    address public override owner;

    modifier isOwner() {
        require(msg.sender == owner, "ACW");
        _;
    }

    /// @inheritdoc IOTC
    IERC20 public override base;
    /// @inheritdoc IOTC
    IERC20 public override quote;

    uint256 public quoteDecimals;
    /// @inheritdoc IOTC
    uint256 public override price;
    /// @inheritdoc IOTC
    uint256 public override setPriceLast;
    /// @inheritdoc IOTC
    mapping (address => bool) public override canSetPrice;
    /// @inheritdoc IOTC
    uint256 public override lowerLimit;
    /// @inheritdoc IOTC
    uint256 public override upperLimit;
    /// @inheritdoc IOTC
    uint256 public override setLimitsLast;
    /// @inheritdoc IOTC
    uint256 public override cliffAdmin;
    /// @inheritdoc IOTC
    uint256 public override vestingTimeAdmin;
    /// @inheritdoc IOTC
    uint256 public override numberOfTranchesAdmin;
    /// @inheritdoc IOTC
    uint256 public override setVestingParamsLast;

    string public VERSION;

    struct Deal {
        uint256 startTime;
        uint256 cliff;
        uint256 vestingTime;
        uint256 numberOfTranches;
        uint256 vested;
        uint256 claimed;
        uint256 claimLast;
    }

    mapping(address => Deal) internal deals;
    /// @inheritdoc IOTC
    uint256 public override vestedTotal;
    /// @inheritdoc IOTC
    uint256 public override claimedTotal;

    uint256 DAY = 86400;

    constructor(
        IERC20 _base,
        IERC20 _quote,
        uint256 _quoteDecimals,
        uint256 _price,
        uint256 _lowerLimit,
        uint256 _upperLimit,
        uint256 _cliffAdmin,
        uint256 _vestingTimeAdmin,
        uint256 _numberOfTranchesAdmin,
        string memory _VERSION
    ) {
        owner = msg.sender;
        base = _base;
        quote = _quote;
        quoteDecimals = _quoteDecimals;
        price = _price;
        lowerLimit = _lowerLimit;
        upperLimit = _upperLimit;
        setPriceLast = _blockTimestamp();
        setLimitsLast = _blockTimestamp();
        setVestingParamsLast = _blockTimestamp();
        canSetPrice[msg.sender] = true;
        cliffAdmin = _cliffAdmin;
        vestingTimeAdmin = _vestingTimeAdmin;
        numberOfTranchesAdmin = _numberOfTranchesAdmin;
        VERSION = _VERSION;
    }

    /// @inheritdoc IOTC
    function startTime(address account) external view override returns (uint256) {
        return deals[account].startTime;
    }

    /// @inheritdoc IOTC
    function cliff(address account) external view override returns (uint256) {
        return deals[account].cliff;
    }

    /// @inheritdoc IOTC
    function vestingTime(address account) external view override returns (uint256) {
        return deals[account].vestingTime;
    }

    /// @inheritdoc IOTC
    function numberOfTranches(address account) external view override returns (uint256) {
        return deals[account].numberOfTranches;
    }

    /// @inheritdoc IOTC
    function vested(address account) external view override returns (uint256) {
        return deals[account].vested;
    }

    /// @inheritdoc IOTC
    function claimed(address account) external view override returns (uint256) {
        return deals[account].claimed;
    }

    /// @inheritdoc IOTC
    function claimLast(address account) external view override returns (uint256) {
        return deals[account].claimLast;
    }

    /// @dev Returns the block timestamp. This method is overridden in tests.
    function _blockTimestamp() internal view virtual returns (uint256) {
        return block.timestamp;
    }

    /// @inheritdoc IOTC
    function setOwner(address _owner) external override isOwner {
        address ownerOld = owner;
        owner = _owner;
        emit SetOwner(ownerOld, _owner);
    }

    /// @inheritdoc IOTC
    function setPrice(uint256 _price) external override {
        require(_blockTimestamp()-setPriceLast > DAY, "OTC1");
        require(canSetPrice[msg.sender], "ACS");
        setPriceLast = _blockTimestamp();
        price = _price;
        emit SetPrice(_price);
    }

    /// @inheritdoc IOTC
    function setCanSetPrice(address setter, bool _canSetPrice)
        external
        override
        isOwner
    {
        canSetPrice[setter] = _canSetPrice;
        emit SetCanSetPrice(msg.sender, setter, canSetPrice[setter]);
    }

    /// @inheritdoc IOTC
    function setLimits(uint256 _lowerLimit, uint256 _upperLimit) external override isOwner {
        require(_blockTimestamp()-setLimitsLast > DAY, "OTC2");
        setLimitsLast = _blockTimestamp();
        lowerLimit = _lowerLimit;
        upperLimit = _upperLimit;
        emit SetLimits(_lowerLimit, _upperLimit);
    }

    /// @inheritdoc IOTC
    function setVestingParams(
        uint256 _cliffAdmin,
        uint256 _vestingTimeAdmin,
        uint256 _numberOfTranchesAdmin
    ) external override isOwner {
        require(_blockTimestamp()-setVestingParamsLast > DAY, "OTC3");
        setVestingParamsLast = _blockTimestamp();
        cliffAdmin = _cliffAdmin;
        vestingTimeAdmin = _vestingTimeAdmin;
        numberOfTranchesAdmin = _numberOfTranchesAdmin;
        emit SetVestingParams(_cliffAdmin, _vestingTimeAdmin, _numberOfTranchesAdmin);
    }

    /// @inheritdoc IOTC
    function exchange(uint256 amountBase) external override {
        // assigning a struct is cheaper
        // than calling values from mapping multiple times like deals[msg.sender].vested
        Deal memory deal = deals[msg.sender];
        require(deal.vested == 0, "OTC4");
        uint256 undistributed = base.balanceOf(address(this)) - (vestedTotal - claimedTotal);
        require(amountBase <= undistributed, "OTC5");
        require(lowerLimit <= amountBase && amountBase <= upperLimit, "OTC6");
        deal.vested = amountBase;
        vestedTotal += amountBase;
        uint256 amountQuote = ((amountBase*price)/100)/(10**(18-quoteDecimals));
        require(amountQuote > 0, "OTC7");
        deal.cliff = cliffAdmin;
        deal.vestingTime = vestingTimeAdmin;
        deal.numberOfTranches = numberOfTranchesAdmin;
        deal.startTime = _blockTimestamp();
        deals[msg.sender] = deal;
        quote.transferFrom(msg.sender, address(this), amountQuote);
        emit Exchange(msg.sender, amountQuote, amountBase);
    }

    /// @inheritdoc IOTC
    function claim() external override {
        // assigning a struct is cheaper
        // than calling values from mapping multiple times like deals[msg.sender].vested
        Deal memory deal = deals[msg.sender];
        uint256 interval = deal.vestingTime / deal.numberOfTranches;
        require(_blockTimestamp()-deal.startTime > deal.cliff, "OTC8");
        require(_blockTimestamp()-deal.claimLast > interval, "OTC9");
        uint256 intervals = ((_blockTimestamp() - deal.startTime) / interval) + 1; // +1 to claim first interval right after the cliff
        uint256 intervalsAccrued = intervals < deal.numberOfTranches ? intervals : deal.numberOfTranches; // min to cap after vesting time is over
        uint256 amount = ((deal.vested * intervalsAccrued) / deal.numberOfTranches) - deal.claimed;
        deal.claimed += amount;
        claimedTotal += amount;
        deal.claimLast = _blockTimestamp();
        deals[msg.sender] = deal;
        base.transfer(msg.sender, amount);
        emit Claim(msg.sender, amount);
    }

    /// @inheritdoc IOTC
    function collect() external override isOwner {
        uint256 amount = quote.balanceOf(address(this));
        quote.transfer(msg.sender, amount);
        emit Collect(amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_base","type":"address"},{"internalType":"contract IERC20","name":"_quote","type":"address"},{"internalType":"uint256","name":"_quoteDecimals","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_lowerLimit","type":"uint256"},{"internalType":"uint256","name":"_upperLimit","type":"uint256"},{"internalType":"uint256","name":"_cliffAdmin","type":"uint256"},{"internalType":"uint256","name":"_vestingTimeAdmin","type":"uint256"},{"internalType":"uint256","name":"_numberOfTranchesAdmin","type":"uint256"},{"internalType":"string","name":"_VERSION","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountQuote","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBase","type":"uint256"}],"name":"Exchange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"indexed":true,"internalType":"bool","name":"newBool","type":"bool"}],"name":"SetCanSetPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_lowerLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_upperLimit","type":"uint256"}],"name":"SetLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"ownerOld","type":"address"},{"indexed":true,"internalType":"address","name":"ownerNew","type":"address"}],"name":"SetOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_price","type":"uint256"}],"name":"SetPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_cliffAdmin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_vestingTimeAdmin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_numberOfTranchesAdmin","type":"uint256"}],"name":"SetVestingParams","type":"event"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"base","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"canSetPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"cliff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cliffAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountBase","type":"uint256"}],"name":"exchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lowerLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numberOfTranches","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfTranchesAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quote","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quoteDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"setter","type":"address"},{"internalType":"bool","name":"_canSetPrice","type":"bool"}],"name":"setCanSetPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lowerLimit","type":"uint256"},{"internalType":"uint256","name":"_upperLimit","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLimitsLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPriceLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cliffAdmin","type":"uint256"},{"internalType":"uint256","name":"_vestingTimeAdmin","type":"uint256"},{"internalType":"uint256","name":"_numberOfTranchesAdmin","type":"uint256"}],"name":"setVestingParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setVestingParamsLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"upperLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"vested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"vestingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingTimeAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052620151806012553480156200001857600080fd5b50604051620018f7380380620018f78339810160408190526200003b91620001c8565b60008054336001600160a01b0319918216179091556001805482166001600160a01b038d81169190911790915560028054909216908b1617905560038890556004879055600786905560088590556200009362000101565b600555620000a062000101565b600955620000ad62000101565b600d55336000908152600660209081526040909120805460ff19166001179055600a859055600b849055600c8390558151620000f091600e919084019062000105565b50505050505050505050506200035d565b4290565b82805462000113906200030a565b90600052602060002090601f01602090048101928262000137576000855562000182565b82601f106200015257805160ff191683800117855562000182565b8280016001018555821562000182579182015b828111156200018257825182559160200191906001019062000165565b506200019092915062000194565b5090565b5b8082111562000190576000815560010162000195565b80516001600160a01b0381168114620001c357600080fd5b919050565b6000806000806000806000806000806101408b8d031215620001e8578586fd5b620001f38b620001ab565b99506200020360208c01620001ab565b985060408b0151975060608b0151965060808b0151955060a08b0151945060c08b0151935060e08b015192506101008b015191506101208b015160018060401b038082111562000251578283fd5b818d0191508d601f83011262000265578283fd5b8151818111156200027a576200027a62000347565b604051601f8201601f191681016020018381118282101715620002a157620002a162000347565b80604052508181528f6020838601011115620002bb578485fd5b8492505b81831015620002e2576020838501015160208483010152602083019250620002bf565b81831115620002f45784602083830101525b809450505050509295989b9194979a5092959850565b6002810460018216806200031f57607f821691505b602082108114156200034157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61158a806200036d6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638da5cb5b1161010f578063c4590d3f116100a2578063cdce101b11610071578063cdce101b14610396578063e5225381146103a9578063f71a2f2f146103b1578063ffa1ad74146103b9576101f0565b8063c4590d3f14610355578063c5aef53314610368578063c6fc65c31461037b578063c884ef8314610383576101f0565b8063999b93af116100de578063999b93af1461031d578063a035b1fe14610325578063a386c7361461032d578063b45b18d91461034d576101f0565b80638da5cb5b146102e757806391b7f5ed146102ef5780639731d9f614610302578063986e2fcc1461030a576101f0565b80635664789f116101875780637023b701116101565780637023b701146102b15780637102b728146102b9578063809ff690146102cc57806382cde13b146102d4576101f0565b80635664789f1461027b5780635d847d2b146102835780636e1dc66e1461028b5780636f410ea01461029e576101f0565b80633fd1e2bd116101c35780633fd1e2bd146102435780634e71d92d1461024b5780635001f3b5146102535780635355655914610268576101f0565b806313af4035146101f55780632b2f4d841461020a57806338392c401461021d5780633d316a991461023b575b600080fd5b61020861020336600461103c565b6103ce565b005b610208610218366004611100565b610451565b61022561050b565b6040516102329190611343565b60405180910390f35b610225610511565b610225610517565b61020861051d565b61025b6107d0565b604051610232919061112b565b6102086102763660046110af565b6107df565b610225610b10565b610225610b16565b61022561029936600461103c565b610b1c565b6102256102ac36600461103c565b610b3b565b610225610b59565b6102256102c736600461103c565b610b5f565b610225610b7d565b6102256102e236600461103c565b610b83565b61025b610ba1565b6102086102fd3660046110af565b610bb0565b610225610c5f565b61020861031836600461105d565b610c65565b61025b610ceb565b610225610cfa565b61034061033b36600461103c565b610d00565b604051610232919061119d565b610225610d15565b6102086103633660046110df565b610d1b565b61022561037636600461103c565b610dcd565b610225610deb565b61022561039136600461103c565b610df1565b6102256103a436600461103c565b610e0f565b610208610e2d565b610225610f8d565b6103c1610f93565b60405161023291906111a8565b6000546001600160a01b031633146104015760405162461bcd60e51b81526004016103f8906112ea565b60405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fcbf985117192c8f614a58aaf97226bb80a754772f5f6edf06f87c675f2e6c6639190a35050565b6000546001600160a01b0316331461047b5760405162461bcd60e51b81526004016103f8906112ea565b601254600d54610489611021565b61049391906114db565b116104b05760405162461bcd60e51b81526004016103f890611237565b6104b8611021565b600d55600a839055600b829055600c8190556040517fb2c473651bf0d98b7935f0a45d2e04d804b1d00c3131bf824fb1944ff9ae8e3c906104fe9085908590859061135a565b60405180910390a1505050565b60085481565b600a5481565b60035481565b336000908152600f60209081526040808320815160e08101835281548152600182015493810193909352600281015491830182905260038101546060840181905260048201546080850152600582015460a085015260069091015460c084015291929161058991611388565b90508160200151826000015161059d611021565b6105a791906114db565b116105c45760405162461bcd60e51b81526004016103f890611290565b808260c001516105d2611021565b6105dc91906114db565b116105f95760405162461bcd60e51b81526004016103f890611325565b6000818360000151610609611021565b61061391906114db565b61061d9190611388565b610628906001611370565b9050600083606001518210610641578360600151610643565b815b905060008460a00151856060015183876080015161066191906114bc565b61066b9190611388565b61067591906114db565b9050808560a0018181516106899190611370565b905250601180548291906000906106a1908490611370565b909155506106af9050611021565b60c08601908152336000818152600f60209081526040918290208951815590890151600180830191909155828a0151600283015560608a0151600383015560808a015160048084019190915560a08b01516005840155945160069092019190915554905163a9059cbb60e01b81526001600160a01b039091169263a9059cbb9261073d929091869101611163565b602060405180830381600087803b15801561075757600080fd5b505af115801561076b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078f9190611093565b507f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d433826040516107c1929190611163565b60405180910390a15050505050565b6001546001600160a01b031681565b336000908152600f6020908152604091829020825160e0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600482015460808201819052600583015460a083015260069092015460c0820152901561085f5760405162461bcd60e51b81526004016103f890611272565b600060115460105461087191906114db565b6001546040516370a0823160e01b81526001600160a01b03909116906370a08231906108a190309060040161112b565b60206040518083038186803b1580156108b957600080fd5b505afa1580156108cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f191906110c7565b6108fb91906114db565b90508083111561091d5760405162461bcd60e51b81526004016103f8906112ae565b826007541115801561093157506008548311155b61094d5760405162461bcd60e51b81526004016103f890611219565b8282608001818152505082601060008282546109699190611370565b909155505060035460009061097f9060126114db565b61098a90600a6113ee565b60646004548661099a91906114bc565b6109a49190611388565b6109ae9190611388565b9050600081116109d05760405162461bcd60e51b81526004016103f8906111fb565b600a546020840152600b546040840152600c5460608401526109f0611021565b8352336000818152600f6020908152604091829020865181559086015160018201558186015160028083019190915560608701516003830155608087015160048084019190915560a0880151600584015560c08801516006909301929092555491516323b872dd60e01b81526001600160a01b03909216926323b872dd92610a7c92309187910161113f565b602060405180830381600087803b158015610a9657600080fd5b505af1158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace9190611093565b507f26981b9aefbb0f732b0264bd34c255e831001eb50b06bc85b32cc39e14389721338286604051610b029392919061117c565b60405180910390a150505050565b60095481565b600d5481565b6001600160a01b0381166000908152600f60205260409020545b919050565b6001600160a01b03166000908152600f602052604090206006015490565b600c5481565b6001600160a01b03166000908152600f602052604090206004015490565b600b5481565b6001600160a01b03166000908152600f602052604090206003015490565b6000546001600160a01b031681565b601254600554610bbe611021565b610bc891906114db565b11610be55760405162461bcd60e51b81526004016103f890611307565b3360009081526006602052604090205460ff16610c145760405162461bcd60e51b81526004016103f890611255565b610c1c611021565b60055560048190556040517f4f5539c0409dfc4cb06f64cbd31237e1fbfe443f531584bf4dd77ec7fc5ba7b190610c54908390611343565b60405180910390a150565b60075481565b6000546001600160a01b03163314610c8f5760405162461bcd60e51b81526004016103f8906112ea565b6001600160a01b038216600081815260066020526040808220805460ff19168515151790819055905160ff9091161515929133917fb93addd29bd5ffb6091b0ea6af596a5c04652381280dd04ca2a6903f4776adaa9190a45050565b6002546001600160a01b031681565b60045481565b60066020526000908152604090205460ff1681565b60055481565b6000546001600160a01b03163314610d455760405162461bcd60e51b81526004016103f8906112ea565b601254600954610d53611021565b610d5d91906114db565b11610d7a5760405162461bcd60e51b81526004016103f8906112cc565b610d82611021565b600955600782905560088190556040517f6edefa108617056bef120162b4dc9ced4920b9a10f2dcc512c4c60fee6e7e69390610dc1908490849061134c565b60405180910390a15050565b6001600160a01b03166000908152600f602052604090206002015490565b60115481565b6001600160a01b03166000908152600f602052604090206005015490565b6001600160a01b03166000908152600f602052604090206001015490565b6000546001600160a01b03163314610e575760405162461bcd60e51b81526004016103f8906112ea565b6002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610e8890309060040161112b565b60206040518083038186803b158015610ea057600080fd5b505afa158015610eb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed891906110c7565b60025460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb90610f0b9033908590600401611163565b602060405180830381600087803b158015610f2557600080fd5b505af1158015610f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5d9190611093565b507f3fe43822de4d3a1b02686a8e69e74f7a32cf7667d2a432a27326ec43a3b3bfd781604051610c549190611343565b60105481565b600e8054610fa0906114f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610fcc906114f2565b80156110195780601f10610fee57610100808354040283529160200191611019565b820191906000526020600020905b815481529060010190602001808311610ffc57829003601f168201915b505050505081565b4290565b80356001600160a01b0381168114610b3657600080fd5b60006020828403121561104d578081fd5b61105682611025565b9392505050565b6000806040838503121561106f578081fd5b61107883611025565b9150602083013561108881611543565b809150509250929050565b6000602082840312156110a4578081fd5b815161105681611543565b6000602082840312156110c0578081fd5b5035919050565b6000602082840312156110d8578081fd5b5051919050565b600080604083850312156110f1578182fd5b50508035926020909101359150565b600080600060608486031215611114578081fd5b505081359360208301359350604090920135919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b901515815260200190565b6000602080835283518082850152825b818110156111d4578581018301518582016040015282016111b8565b818111156111e55783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600490820152634f54433760e01b604082015260600190565b60208082526004908201526327aa219b60e11b604082015260600190565b6020808252600490820152634f54433360e01b604082015260600190565b60208082526003908201526241435360e81b604082015260600190565b60208082526004908201526313d510cd60e21b604082015260600190565b60208082526004908201526309ea886760e31b604082015260600190565b6020808252600490820152634f54433560e01b604082015260600190565b60208082526004908201526327aa219960e11b604082015260600190565b60208082526003908201526241435760e81b604082015260600190565b6020808252600490820152634f54433160e01b604082015260600190565b6020808252600490820152634f54433960e01b604082015260600190565b90815260200190565b918252602082015260400190565b9283526020830191909152604082015260600190565b600082198211156113835761138361152d565b500190565b6000826113a357634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116113ba57506113e5565b8187048211156113cc576113cc61152d565b808616156113d957918102915b9490941c9380026113ab565b94509492505050565b6000611056600019848460008261140757506001611056565b8161141457506000611056565b816001811461142a576002811461143457611461565b6001915050611056565b60ff8411156114455761144561152d565b6001841b91508482111561145b5761145b61152d565b50611056565b5060208310610133831016604e8410600b8410161715611494575081810a8381111561148f5761148f61152d565b611056565b6114a184848460016113a8565b8086048211156114b3576114b361152d565b02949350505050565b60008160001904831182151516156114d6576114d661152d565b500290565b6000828210156114ed576114ed61152d565b500390565b60028104600182168061150657607f821691505b6020821081141561152757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b801515811461155157600080fd5b5056fea264697066735822122082cfb5bacea25909c2a47129eb3257f1decaa997846db5c028b572dc5b84afb564736f6c6343000800003300000000000000000000000064d5baf5ac030e2b7c435add967f787ae94d0205000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d5600000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000258000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003635c9adc5dea000000000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000076336343033346300000000000000000000000000000000000000000000000000

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

00000000000000000000000064d5baf5ac030e2b7c435add967f787ae94d0205000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d5600000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000258000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003635c9adc5dea000000000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000076336343033346300000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _base (address): 0x64d5baf5ac030e2b7c435add967f787ae94d0205
Arg [1] : _quote (address): 0xe9e7cea3dedca5984780bafc599bd69add087d56
Arg [2] : _quoteDecimals (uint256): 18
Arg [3] : _price (uint256): 600
Arg [4] : _lowerLimit (uint256): 0
Arg [5] : _upperLimit (uint256): 1000000000000000000000
Arg [6] : _cliffAdmin (uint256): 3600
Arg [7] : _vestingTimeAdmin (uint256): 86400
Arg [8] : _numberOfTranchesAdmin (uint256): 24
Arg [9] : _VERSION (string): c64034c

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 00000000000000000000000064d5baf5ac030e2b7c435add967f787ae94d0205
Arg [1] : 000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000258
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 00000000000000000000000000000000000000000000003635c9adc5dea00000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000e10
Arg [7] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000018
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [11] : 6336343033346300000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

7677:7849:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11453:170;;;;;;:::i;:::-;;:::i;:::-;;12599:524;;;;;;:::i;:::-;;:::i;8330:34::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8467;;;:::i;7985:28::-;;;:::i;14250:1052::-;;;:::i;7888:27::-;;;:::i;:::-;;;;;;;:::i;13157:1059::-;;;;;;:::i;:::-;;:::i;8397:37::-;;;:::i;8685:44::-;;;:::i;10131:127::-;;;;;;:::i;:::-;;:::i;11097:::-;;;;;;:::i;:::-;;:::i;8607:45::-;;;:::i;10785:121::-;;;;;;:::i;:::-;;:::i;8534:40::-;;;:::i;10610:141::-;;;;;;:::i;:::-;;:::i;7731:29::-;;;:::i;11657:274::-;;;;;;:::i;:::-;;:::i;8263:34::-;;;:::i;11965:241::-;;;;;;:::i;:::-;;:::i;7948:28::-;;;:::i;8046:29::-;;;:::i;8177:53::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8108:36::-;;;:::i;12240:325::-;;;;;;:::i;:::-;;:::i;10445:131::-;;;;;;:::i;:::-;;:::i;9132:36::-;;;:::i;10940:123::-;;;;;;:::i;:::-;;:::i;10292:119::-;;;;;;:::i;:::-;;:::i;15336:187::-;;;:::i;9064:35::-;;;:::i;8738:21::-;;;:::i;:::-;;;;;;;:::i;11453:170::-;7821:5;;-1:-1:-1;;;;;7821:5:0;7807:10;:19;7799:35;;;;-1:-1:-1;;;7799:35:0;;;;;;;:::i;:::-;;;;;;;;;11524:16:::1;11543:5:::0;;-1:-1:-1;;;;;11559:14:0;;::::1;-1:-1:-1::0;;;;;;11559:14:0;::::1;::::0;::::1;::::0;;11589:26:::1;::::0;11543:5;;;::::1;::::0;;;11589:26:::1;::::0;11524:16;11589:26:::1;7845:1;11453:170:::0;:::o;12599:524::-;7821:5;;-1:-1:-1;;;;;7821:5:0;7807:10;:19;7799:35;;;;-1:-1:-1;;;7799:35:0;;;;;;;:::i;:::-;12825:3:::1;;12802:20;;12784:17;:15;:17::i;:::-;:38;;;;:::i;:::-;:44;12776:61;;;;-1:-1:-1::0;;;12776:61:0::1;;;;;;;:::i;:::-;12871:17;:15;:17::i;:::-;12848:20;:40:::0;12899:10:::1;:24:::0;;;12934:16:::1;:36:::0;;;12981:21:::1;:46:::0;;;13043:72:::1;::::0;::::1;::::0;::::1;::::0;12912:11;;12953:17;;13005:22;;13043:72:::1;:::i;:::-;;;;;;;;12599:524:::0;;;:::o;8330:34::-;;;;:::o;8467:::-;;;;:::o;7985:28::-;;;;:::o;14250:1052::-;14453:10;14428:16;14447:17;;;:5;:17;;;;;;;;14428:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:16;14494:40;;;:::i;:::-;14475:59;;14588:4;:10;;;14571:4;:14;;;14553:17;:15;:17::i;:::-;:32;;;;:::i;:::-;:45;14545:62;;;;-1:-1:-1;;;14545:62:0;;;;;;;:::i;:::-;14661:8;14644:4;:14;;;14626:17;:15;:17::i;:::-;:32;;;;:::i;:::-;:43;14618:60;;;;-1:-1:-1;;;14618:60:0;;;;;;;:::i;:::-;14689:17;14749:8;14731:4;:14;;;14711:17;:15;:17::i;:::-;:34;;;;:::i;:::-;14710:47;;;;:::i;:::-;14709:53;;14761:1;14709:53;:::i;:::-;14689:73;;14825:24;14864:4;:21;;;14852:9;:33;:69;;14900:4;:21;;;14852:69;;;14888:9;14852:69;14825:96;;14973:14;15051:4;:12;;;15026:4;:21;;;15006:16;14992:4;:11;;;:30;;;;:::i;:::-;14991:56;;;;:::i;:::-;14990:73;;;;:::i;:::-;14973:90;;15090:6;15074:4;:12;;:22;;;;;;;:::i;:::-;;;-1:-1:-1;15107:12:0;:22;;15123:6;;15107:12;;;:22;;15123:6;;15107:22;:::i;:::-;;;;-1:-1:-1;15157:17:0;;-1:-1:-1;15157:15:0;:17::i;:::-;15140:14;;;:34;;;15191:10;15185:17;;;;:5;:17;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15220:4;:33;;-1:-1:-1;;;15220:33:0;;-1:-1:-1;;;;;15220:4:0;;;;:13;;:33;;15191:10;;15246:6;;15220:33;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15269:25;15275:10;15287:6;15269:25;;;;;;;:::i;:::-;;;;;;;;14250:1052;;;;;:::o;7888:27::-;;;-1:-1:-1;;;;;7888:27:0;;:::o;13157:1059::-;13381:10;13356:16;13375:17;;;:5;:17;;;;;;;;;13356:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13411:16;13403:33;;;;-1:-1:-1;;;13403:33:0;;;;;;;:::i;:::-;13447:21;13518:12;;13504:11;;:26;;;;:::i;:::-;13471:4;;:29;;-1:-1:-1;;;13471:29:0;;-1:-1:-1;;;;;13471:4:0;;;;:14;;:29;;13494:4;;13471:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;;;;:::i;:::-;13447:84;;13564:13;13550:10;:27;;13542:44;;;;-1:-1:-1;;;13542:44:0;;;;;;;:::i;:::-;13619:10;13605;;:24;;:52;;;;;13647:10;;13633;:24;;13605:52;13597:69;;;;-1:-1:-1;;;13597:69:0;;;;;;;:::i;:::-;13691:10;13677:4;:11;;:24;;;;;13727:10;13712:11;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;13804:13:0;;13748:19;;13801:16;;:2;:16;:::i;:::-;13796:22;;:2;:22;:::i;:::-;13790:3;13783:5;;13772:10;:16;;;;:::i;:::-;13771:22;;;;:::i;:::-;13770:49;;;;:::i;:::-;13748:71;;13852:1;13838:11;:15;13830:32;;;;-1:-1:-1;;;13830:32:0;;;;;;;:::i;:::-;13886:10;;13873;;;:23;13926:16;;13907;;;:35;13977:21;;13953;;;:45;14026:17;:15;:17::i;:::-;14009:34;;14060:10;14009:14;14054:17;;;:5;:17;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14089:5;:58;;-1:-1:-1;;;14089:58:0;;-1:-1:-1;;;;;14089:5:0;;;;:18;;:58;;14128:4;;14135:11;;14089:58;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14163:45;14172:10;14184:11;14197:10;14163:45;;;;;;;;:::i;:::-;;;;;;;;13157:1059;;;;:::o;8397:37::-;;;;:::o;8685:44::-;;;;:::o;10131:127::-;-1:-1:-1;;;;;10226:14:0;;10199:7;10226:14;;;:5;:14;;;;;:24;10131:127;;;;:::o;11097:::-;-1:-1:-1;;;;;11192:14:0;11165:7;11192:14;;;:5;:14;;;;;:24;;;;11097:127::o;8607:45::-;;;;:::o;10785:121::-;-1:-1:-1;;;;;10877:14:0;10850:7;10877:14;;;:5;:14;;;;;:21;;;;10785:121::o;8534:40::-;;;;:::o;10610:141::-;-1:-1:-1;;;;;10712:14:0;10685:7;10712:14;;;:5;:14;;;;;:31;;;;10610:141::o;7731:29::-;;;-1:-1:-1;;;;;7731:29:0;;:::o;11657:274::-;11761:3;;11746:12;;11728:17;:15;:17::i;:::-;:30;;;;:::i;:::-;:36;11720:53;;;;-1:-1:-1;;;11720:53:0;;;;;;;:::i;:::-;11804:10;11792:23;;;;:11;:23;;;;;;;;11784:39;;;;-1:-1:-1;;;11784:39:0;;;;;;;:::i;:::-;11849:17;:15;:17::i;:::-;11834:12;:32;11877:5;:14;;;11907:16;;;;;;11885:6;;11907:16;:::i;:::-;;;;;;;;11657:274;:::o;8263:34::-;;;;:::o;11965:241::-;7821:5;;-1:-1:-1;;;;;7821:5:0;7807:10;:19;7799:35;;;;-1:-1:-1;;;7799:35:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12093:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;:34;;-1:-1:-1;;12093:34:0::1;::::0;::::1;;;::::0;;;;12143:55;;12093:34:::1;12178:19:::0;;::::1;12143:55;;::::0;12093:19;12158:10:::1;::::0;12143:55:::1;::::0;12093:19;12143:55:::1;11965:241:::0;;:::o;7948:28::-;;;-1:-1:-1;;;;;7948:28:0;;:::o;8046:29::-;;;;:::o;8177:53::-;;;;;;;;;;;;;;;:::o;8108:36::-;;;;:::o;12240:325::-;7821:5;;-1:-1:-1;;;;;7821:5:0;7807:10;:19;7799:35;;;;-1:-1:-1;;;7799:35:0;;;;;;;:::i;:::-;12380:3:::1;;12364:13;;12346:17;:15;:17::i;:::-;:31;;;;:::i;:::-;:37;12338:54;;;;-1:-1:-1::0;;;12338:54:0::1;;;;;;;:::i;:::-;12419:17;:15;:17::i;:::-;12403:13;:33:::0;12447:10:::1;:24:::0;;;12482:10:::1;:24:::0;;;12522:35:::1;::::0;::::1;::::0;::::1;::::0;12460:11;;12495;;12522:35:::1;:::i;:::-;;;;;;;;12240:325:::0;;:::o;10445:131::-;-1:-1:-1;;;;;10542:14:0;10515:7;10542:14;;;:5;:14;;;;;:26;;;;10445:131::o;9132:36::-;;;;:::o;10940:123::-;-1:-1:-1;;;;;11033:14:0;11006:7;11033:14;;;:5;:14;;;;;:22;;;;10940:123::o;10292:119::-;-1:-1:-1;;;;;10383:14:0;10356:7;10383:14;;;:5;:14;;;;;:20;;;;10292:119::o;15336:187::-;7821:5;;-1:-1:-1;;;;;7821:5:0;7807:10;:19;7799:35;;;;-1:-1:-1;;;7799:35:0;;;;;;;:::i;:::-;15409:5:::1;::::0;:30:::1;::::0;-1:-1:-1;;;15409:30:0;;15392:14:::1;::::0;-1:-1:-1;;;;;15409:5:0::1;::::0;:15:::1;::::0;:30:::1;::::0;15433:4:::1;::::0;15409:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15450:5;::::0;:34:::1;::::0;-1:-1:-1;;;15450:34:0;;15392:47;;-1:-1:-1;;;;;;15450:5:0::1;::::0;:14:::1;::::0;:34:::1;::::0;15465:10:::1;::::0;15392:47;;15450:34:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15500:15;15508:6;15500:15;;;;;;:::i;9064:35::-:0;;;;:::o;8738:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11311:108::-;11396:15;11311:108;:::o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;:::-;345:41;264:128;-1:-1:-1;;;264:128:1:o;397:329::-;;;523:2;511:9;502:7;498:23;494:32;491:2;;;544:6;536;529:22;491:2;572:31;593:9;572:31;:::i;:::-;562:41;;653:2;642:9;638:18;625:32;666:30;690:5;666:30;:::i;:::-;715:5;705:15;;;481:245;;;;;:::o;731:257::-;;851:2;839:9;830:7;826:23;822:32;819:2;;;872:6;864;857:22;819:2;909:9;903:16;928:30;952:5;928:30;:::i;993:190::-;;1105:2;1093:9;1084:7;1080:23;1076:32;1073:2;;;1126:6;1118;1111:22;1073:2;-1:-1:-1;1154:23:1;;1063:120;-1:-1:-1;1063:120:1:o;1188:194::-;;1311:2;1299:9;1290:7;1286:23;1282:32;1279:2;;;1332:6;1324;1317:22;1279:2;-1:-1:-1;1360:16:1;;1269:113;-1:-1:-1;1269:113:1:o;1387:258::-;;;1516:2;1504:9;1495:7;1491:23;1487:32;1484:2;;;1537:6;1529;1522:22;1484:2;-1:-1:-1;;1565:23:1;;;1635:2;1620:18;;;1607:32;;-1:-1:-1;1474:171:1:o;1650:326::-;;;;1796:2;1784:9;1775:7;1771:23;1767:32;1764:2;;;1817:6;1809;1802:22;1764:2;-1:-1:-1;;1845:23:1;;;1915:2;1900:18;;1887:32;;-1:-1:-1;1966:2:1;1951:18;;;1938:32;;1754:222;-1:-1:-1;1754:222:1:o;1981:203::-;-1:-1:-1;;;;;2145:32:1;;;;2127:51;;2115:2;2100:18;;2082:102::o;2189:375::-;-1:-1:-1;;;;;2447:15:1;;;2429:34;;2499:15;;;;2494:2;2479:18;;2472:43;2546:2;2531:18;;2524:34;;;;2379:2;2364:18;;2346:218::o;2569:274::-;-1:-1:-1;;;;;2761:32:1;;;;2743:51;;2825:2;2810:18;;2803:34;2731:2;2716:18;;2698:145::o;2848:345::-;-1:-1:-1;;;;;3068:32:1;;;;3050:51;;3132:2;3117:18;;3110:34;;;;3175:2;3160:18;;3153:34;3038:2;3023:18;;3005:188::o;3198:187::-;3363:14;;3356:22;3338:41;;3326:2;3311:18;;3293:92::o;3611:603::-;;3752:2;3781;3770:9;3763:21;3813:6;3807:13;3856:6;3851:2;3840:9;3836:18;3829:34;3881:4;3894:140;3908:6;3905:1;3902:13;3894:140;;;4003:14;;;3999:23;;3993:30;3969:17;;;3988:2;3965:26;3958:66;3923:10;;3894:140;;;4052:6;4049:1;4046:13;4043:2;;;4122:4;4117:2;4108:6;4097:9;4093:22;4089:31;4082:45;4043:2;-1:-1:-1;4198:2:1;4177:15;-1:-1:-1;;4173:29:1;4158:45;;;;4205:2;4154:54;;3732:482;-1:-1:-1;;;3732:482:1:o;4219:327::-;4421:2;4403:21;;;4460:1;4440:18;;;4433:29;-1:-1:-1;;;4493:2:1;4478:18;;4471:34;4537:2;4522:18;;4393:153::o;4551:327::-;4753:2;4735:21;;;4792:1;4772:18;;;4765:29;-1:-1:-1;;;4825:2:1;4810:18;;4803:34;4869:2;4854:18;;4725:153::o;4883:327::-;5085:2;5067:21;;;5124:1;5104:18;;;5097:29;-1:-1:-1;;;5157:2:1;5142:18;;5135:34;5201:2;5186:18;;5057:153::o;5215:326::-;5417:2;5399:21;;;5456:1;5436:18;;;5429:29;-1:-1:-1;;;5489:2:1;5474:18;;5467:33;5532:2;5517:18;;5389:152::o;5546:327::-;5748:2;5730:21;;;5787:1;5767:18;;;5760:29;-1:-1:-1;;;5820:2:1;5805:18;;5798:34;5864:2;5849:18;;5720:153::o;5878:327::-;6080:2;6062:21;;;6119:1;6099:18;;;6092:29;-1:-1:-1;;;6152:2:1;6137:18;;6130:34;6196:2;6181:18;;6052:153::o;6210:327::-;6412:2;6394:21;;;6451:1;6431:18;;;6424:29;-1:-1:-1;;;6484:2:1;6469:18;;6462:34;6528:2;6513:18;;6384:153::o;6542:327::-;6744:2;6726:21;;;6783:1;6763:18;;;6756:29;-1:-1:-1;;;6816:2:1;6801:18;;6794:34;6860:2;6845:18;;6716:153::o;6874:326::-;7076:2;7058:21;;;7115:1;7095:18;;;7088:29;-1:-1:-1;;;7148:2:1;7133:18;;7126:33;7191:2;7176:18;;7048:152::o;7205:327::-;7407:2;7389:21;;;7446:1;7426:18;;;7419:29;-1:-1:-1;;;7479:2:1;7464:18;;7457:34;7523:2;7508:18;;7379:153::o;7537:327::-;7739:2;7721:21;;;7778:1;7758:18;;;7751:29;-1:-1:-1;;;7811:2:1;7796:18;;7789:34;7855:2;7840:18;;7711:153::o;7869:177::-;8015:25;;;8003:2;7988:18;;7970:76::o;8051:248::-;8225:25;;;8281:2;8266:18;;8259:34;8213:2;8198:18;;8180:119::o;8304:319::-;8506:25;;;8562:2;8547:18;;8540:34;;;;8605:2;8590:18;;8583:34;8494:2;8479:18;;8461:162::o;8628:128::-;;8699:1;8695:6;8692:1;8689:13;8686:2;;;8705:18;;:::i;:::-;-1:-1:-1;8741:9:1;;8676:80::o;8761:217::-;;8827:1;8817:2;;-1:-1:-1;;;8852:31:1;;8906:4;8903:1;8896:15;8934:4;8859:1;8924:15;8817:2;-1:-1:-1;8963:9:1;;8807:171::o;8983:453::-;9079:6;9102:5;9116:314;9165:1;9202:2;9192:8;9189:16;9179:2;;9209:5;;;9179:2;9250:4;9245:3;9241:14;9235:4;9232:24;9229:2;;;9259:18;;:::i;:::-;9309:2;9299:8;9295:17;9292:2;;;9324:16;;;;9292:2;9403:17;;;;;9363:15;;9116:314;;;9060:376;;;;;;;:::o;9441:139::-;;9530:44;-1:-1:-1;;9557:8:1;9551:4;9585:922;9669:8;9659:2;;-1:-1:-1;9710:1:1;9724:5;;9659:2;9758:4;9748:2;;-1:-1:-1;9795:1:1;9809:5;;9748:2;9840:4;9858:1;9853:59;;;;9926:1;9921:183;;;;9833:271;;9853:59;9883:1;9874:10;;9897:5;;;9921:183;9958:3;9948:8;9945:17;9942:2;;;9965:18;;:::i;:::-;10021:1;10011:8;10007:16;9998:25;;10049:3;10042:5;10039:14;10036:2;;;10056:18;;:::i;:::-;10089:5;;;9833:271;;10188:2;10178:8;10175:16;10169:3;10163:4;10160:13;10156:36;10150:2;10140:8;10137:16;10132:2;10126:4;10123:12;10119:35;10116:77;10113:2;;;-1:-1:-1;10225:19:1;;;10260:14;;;10257:2;;;10277:18;;:::i;:::-;10310:5;;10113:2;10357:42;10395:3;10385:8;10379:4;10376:1;10357:42;:::i;:::-;10432:6;10427:3;10423:16;10414:7;10411:29;10408:2;;;10443:18;;:::i;:::-;10481:20;;9649:858;-1:-1:-1;;;;9649:858:1:o;10512:168::-;;10618:1;10614;10610:6;10606:14;10603:1;10600:21;10595:1;10588:9;10581:17;10577:45;10574:2;;;10625:18;;:::i;:::-;-1:-1:-1;10665:9:1;;10564:116::o;10685:125::-;;10753:1;10750;10747:8;10744:2;;;10758:18;;:::i;:::-;-1:-1:-1;10795:9:1;;10734:76::o;10815:380::-;10900:1;10890:12;;10947:1;10937:12;;;10958:2;;11012:4;11004:6;11000:17;10990:27;;10958:2;11065;11057:6;11054:14;11034:18;11031:38;11028:2;;;11111:10;11106:3;11102:20;11099:1;11092:31;11146:4;11143:1;11136:15;11174:4;11171:1;11164:15;11028:2;;10870:325;;;:::o;11200:127::-;11261:10;11256:3;11252:20;11249:1;11242:31;11292:4;11289:1;11282:15;11316:4;11313:1;11306:15;11332:120;11420:5;11413:13;11406:21;11399:5;11396:32;11386:2;;11442:1;11439;11432:12;11386:2;11376:76;:::o

Swarm Source

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