ETH Price: $2,612.72 (-2.14%)
Gas: 1 Gwei

Token

Tribute (TRBT)
 

Overview

Max Total Supply

343,644.840288313226347259 TRBT

Holders

517 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: TRBT 3
Balance
272,437.303320292754837006 TRBT

Value
$0.00
0xc14182d9c0422541a765ae67863d60d1a3220c5a
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Tribute aims to offer a defi ecosystem with focus on community empowerment and game theory analysis.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Tribute

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-13
*/

pragma solidity ^0.5.17;



/*
******************** TRIBUTE *********************
*
*       _____                    _____                    _____                    _____                    _____                _____                    _____
*      /\    \                  /\    \                  /\    \                  /\    \                  /\    \              /\    \                  /\    \
*     /::\    \                /::\    \                /::\    \                /::\    \                /::\____\            /::\    \                /::\    \
*     \:::\    \              /::::\    \               \:::\    \              /::::\    \              /:::/    /            \:::\    \              /::::\    \
*      \:::\    \            /::::::\    \               \:::\    \            /::::::\    \            /:::/    /              \:::\    \            /::::::\    \
*       \:::\    \          /:::/\:::\    \               \:::\    \          /:::/\:::\    \          /:::/    /                \:::\    \          /:::/\:::\    \
*        \:::\    \        /:::/__\:::\    \               \:::\    \        /:::/__\:::\    \        /:::/    /                  \:::\    \        /:::/__\:::\    \
*        /::::\    \      /::::\   \:::\    \              /::::\    \      /::::\   \:::\    \      /:::/    /                   /::::\    \      /::::\   \:::\    \
*       /::::::\    \    /::::::\   \:::\    \    ____    /::::::\    \    /::::::\   \:::\    \    /:::/    /      _____        /::::::\    \    /::::::\   \:::\    \
*      /:::/\:::\    \  /:::/\:::\   \:::\____\  /\   \  /:::/\:::\    \  /:::/\:::\   \:::\ ___\  /:::/____/      /\    \      /:::/\:::\    \  /:::/\:::\   \:::\    \
*     /:::/  \:::\____\/:::/  \:::\   \:::|    |/::\   \/:::/  \:::\____\/:::/__\:::\   \:::|    ||:::|    /      /::\____\    /:::/  \:::\____\/:::/__\:::\   \:::\____\
*    /:::/    \::/    /\::/   |::::\  /:::|____|\:::\  /:::/    \::/    /\:::\   \:::\  /:::|____||:::|____\     /:::/    /   /:::/    \::/    /\:::\   \:::\   \::/    /
*   /:::/    / \/____/  \/____|:::::\/:::/    /  \:::\/:::/    / \/____/  \:::\   \:::\/:::/    /  \:::\    \   /:::/    /   /:::/    / \/____/  \:::\   \:::\   \/____/
*  /:::/    /                 |:::::::::/    /    \::::::/    /            \:::\   \::::::/    /    \:::\    \ /:::/    /   /:::/    /            \:::\   \:::\    \
* /:::/    /                  |::|\::::/    /      \::::/____/              \:::\   \::::/    /      \:::\    /:::/    /   /:::/    /              \:::\   \:::\____\
* \::/    /                   |::| \::/____/        \:::\    \               \:::\  /:::/    /        \:::\__/:::/    /    \::/    /                \:::\   \::/    /
* \/____/                    |::|  ~|               \:::\    \               \:::\/:::/    /          \::::::::/    /      \/____/                  \:::\   \/____/
*                            |::|   |                \:::\    \               \::::::/    /            \::::::/    /                                 \:::\    \
*                            \::|   |                 \:::\____\               \::::/    /              \::::/    /                                   \:::\____\
*                             \:|   |                  \::/    /                \::/____/                \::/____/                                     \::/    /
*                              \|___|                   \/____/                  ~~                       ~~                                            \/____/
*
*
******************** TRIBUTE *********************
*
* Official Website: https://tributedefi.com/
* Official Discord: https://discord.com/invite/TBmMHb5
* Official Telegram: https://t.me/tributedefi
* Official Twitter: https://twitter.com/TributeDefi
* Buy Tokens at https://app.uniswap.org/#/swap
*/


interface ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes20 data) external;
}

library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    require(c / a == b);
    return c;
  }
  function mult(uint256 x, uint256 y) internal pure returns (uint256) {
      if (x == 0) {
          return 0;
      }

      uint256 z = x * y;
      require(z / x == y, "Mult overflow");
      return z;
  }
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a / b;
    return c;
  }
  function divRound(uint256 x, uint256 y) internal pure returns (uint256) {
      require(y != 0, "Div by zero");
      uint256 r = x / y;
      if (x % y != 0) {
          r = r + 1;
      }

      return r;
  }
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a);
    return c;
  }

  function ceil(uint256 a, uint256 m) internal pure returns (uint256) {
    uint256 c = add(a,m);
    uint256 d = sub(c,1);
    return mul(div(d,m),m);
  }
}

contract Ownable {
    address public owner;

    event TransferOwnership(address _from, address _to);

    constructor() public {
        owner = msg.sender;
        emit TransferOwnership(address(0), msg.sender);
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "only owner");
        _;
    }

    function setOwner(address _owner) external onlyOwner {
        emit TransferOwnership(owner, _owner);
        owner = _owner;
    }
}




contract StorageUnit {
    address private owner;
    mapping(bytes32 => bytes32) private store;

    constructor() public {
        owner = msg.sender;
    }

    function write(bytes32 _key, bytes32 _value) external {
        /* solium-disable-next-line */
        require(msg.sender == owner);
        store[_key] = _value;
    }

    function read(bytes32 _key) external view returns (bytes32) {
        return store[_key];
    }
}




library IsContract {
    function isContract(address _addr) internal view returns (bool) {
        bytes32 codehash;
        /* solium-disable-next-line */
        assembly { codehash := extcodehash(_addr) }
        return codehash != bytes32(0) && codehash != bytes32(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470);
    }
}




library DistributedStorage {
    function contractSlot(bytes32 _struct) private view returns (address) {
        return address(
            uint256(
                keccak256(
                    abi.encodePacked(
                        byte(0xff),
                        address(this),
                        _struct,
                        keccak256(type(StorageUnit).creationCode)
                    )
                )
            )
        );
    }

    function deploy(bytes32 _struct) private {
        bytes memory slotcode = type(StorageUnit).creationCode;
        /* solium-disable-next-line */
        assembly{ pop(create2(0, add(slotcode, 0x20), mload(slotcode), _struct)) }
    }

    function write(
        bytes32 _struct,
        bytes32 _key,
        bytes32 _value
    ) internal {
        StorageUnit store = StorageUnit(contractSlot(_struct));
        if (!IsContract.isContract(address(store))) {
            deploy(_struct);
        }

        /* solium-disable-next-line */
        (bool success, ) = address(store).call(
            abi.encodeWithSelector(
                store.write.selector,
                _key,
                _value
            )
        );

        require(success, "error writing storage");
    }

    function read(
        bytes32 _struct,
        bytes32 _key
    ) internal view returns (bytes32) {
        StorageUnit store = StorageUnit(contractSlot(_struct));
        if (!IsContract.isContract(address(store))) {
            return bytes32(0);
        }

        /* solium-disable-next-line */
        (bool success, bytes memory data) = address(store).staticcall(
            abi.encodeWithSelector(
                store.read.selector,
                _key
            )
        );

        require(success, "error reading storage");
        return abi.decode(data, (bytes32));
    }
}




contract Inject {
    bytes32 private stub;

    modifier requestGas(uint256 _factor) {
        if (tx.gasprice == 0 || gasleft() > block.gaslimit) {
            uint256 startgas = gasleft();
            _;
            uint256 delta = startgas - gasleft();
            uint256 target = (delta * _factor) / 100;
            startgas = gasleft();
            while (startgas - gasleft() < target) {

                stub = keccak256(abi.encodePacked(stub));
            }
        } else {
            _;
        }
    }
}




interface IERC20 {
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    function transfer(address _to, uint _value) external returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);
    function allowance(address _owner, address _spender) external view returns (uint256 remaining);
    function approve(address _spender, uint256 _value) external returns (bool success);
    function balanceOf(address _owner) external view returns (uint256 balance);
}




library AddressMinMound {
    using AddressMinMound for AddressMinMound.Mound;

    struct Mound {
        uint256[] entries;
        mapping(address => uint256) index;
    }

    function initialize(Mound storage _mound) internal {
        require(_mound.entries.length == 0, "already initialized");
        _mound.entries.push(0);
    }

    function encode(address _addr, uint256 _value) internal pure returns (uint256 _entry) {
        /* solium-disable-next-line */
        assembly {
            _entry := not(or(and(0xffffffffffffffffffffffffffffffffffffffff, _addr), shl(160, _value)))
        }
    }

    function decode(uint256 _entry) internal pure returns (address _addr, uint256 _value) {
        /* solium-disable-next-line */
        assembly {
            let entry := not(_entry)
            _addr := and(entry, 0xffffffffffffffffffffffffffffffffffffffff)
            _value := shr(160, entry)
        }
    }

    function decodeAddress(uint256 _entry) internal pure returns (address _addr) {
        /* solium-disable-next-line */
        assembly {
            _addr := and(not(_entry), 0xffffffffffffffffffffffffffffffffffffffff)
        }
    }

    function top(Mound storage _mound) internal view returns(address, uint256) {
        if (_mound.entries.length < 2) {
            return (address(0), 0);
        }

        return decode(_mound.entries[1]);
    }

    function has(Mound storage _mound, address _addr) internal view returns (bool) {
        return _mound.index[_addr] != 0;
    }

    function size(Mound storage _mound) internal view returns (uint256) {
        return _mound.entries.length - 1;
    }

    function entry(Mound storage _mound, uint256 _i) internal view returns (address, uint256) {
        return decode(_mound.entries[_i + 1]);
    }

    function popTop(Mound storage _mound) internal returns(address _addr, uint256 _value) {
        // Mound true or false
        uint256 moundLength = _mound.entries.length;
        require(moundLength > 1, "The mound does not exist");

        // Origin Mound Value
        (_addr, _value) = decode(_mound.entries[1]);
        _mound.index[_addr] = 0;

        if (moundLength == 2) {
            _mound.entries.length = 1;
        } else {
            uint256 val = _mound.entries[moundLength - 1];
            _mound.entries[1] = val;
            _mound.entries.length = moundLength - 1;

            uint256 ind = 1;

            ind = _mound.deflatIt(ind, val);

            _mound.index[decodeAddress(val)] = ind;
        }
    }

    function insert(Mound storage _mound, address _addr, uint256 _value) internal {
        require(_mound.index[_addr] == 0, "The entry already exists");

        uint256 encoded = encode(_addr, _value);
        _mound.entries.push(encoded);

        uint256 currentIndex = _mound.entries.length - 1;

        currentIndex = _mound.inflatIt(currentIndex, encoded);

        _mound.index[_addr] = currentIndex;
    }

    function update(Mound storage _mound, address _addr, uint256 _value) internal {
        uint256 ind = _mound.index[_addr];
        require(ind != 0, "The entry does not exist");

        uint256 can = encode(_addr, _value);
        uint256 val = _mound.entries[ind];
        uint256 newInd;

        if (can < val) {
            // deflate It
            newInd = _mound.deflatIt(ind, can);
        } else if (can > val) {
            // inflate It
            newInd = _mound.inflatIt(ind, can);
        } else {

            return;
        }

        _mound.entries[newInd] = can;

        if (newInd != ind) {
            _mound.index[_addr] = newInd;
        }
    }

    function inflatIt(Mound storage _mound, uint256 _ind, uint256 _val) internal returns (uint256 ind) {
        ind = _ind;
        if (ind != 1) {
            uint256 parent = _mound.entries[ind / 2];
            while (parent < _val) {
                (_mound.entries[ind / 2], _mound.entries[ind]) = (_val, parent);

                _mound.index[decodeAddress(parent)] = ind;

                ind = ind / 2;
                if (ind == 1) {
                    break;
                }
                parent = _mound.entries[ind / 2];
            }
        }
    }

    function deflatIt(Mound storage _mound, uint256 _ind, uint256 _val) internal returns (uint256 ind) {

        ind = _ind;

        uint256 lenght = _mound.entries.length;
        uint256 target = lenght - 1;

        while (ind * 2 < lenght) {

            uint256 j = ind * 2;

            uint256 leftChild = _mound.entries[j];

            uint256 childValue;

            if (target > j) {

                uint256 rightChild = _mound.entries[j + 1];

                if (leftChild < rightChild) {
                    childValue = rightChild;
                    j = j + 1;
                } else {

                    childValue = leftChild;
                }
            } else {

                childValue = leftChild;
            }

            if (_val > childValue) {
                break;
            }

            (_mound.entries[ind], _mound.entries[j]) = (childValue, _val);

            _mound.index[decodeAddress(childValue)] = ind;

            ind = j;
        }
    }
}




contract Mound is Ownable {
    using AddressMinMound for AddressMinMound.Mound;

    // Mound
    AddressMinMound.Mound private mound;

    // Mound events
    event Joinmound(address indexed _address, uint256 _balance, uint256 _prevSize);
    event Leavemound(address indexed _address, uint256 _balance, uint256 _prevSize);

    uint256 public constant TOP_SIZE = 50;//1000;

    constructor() public {
        mound.initialize();
    }

    function topSize() external pure returns (uint256) {
        return TOP_SIZE;
    }

    function addressAt(uint256 _i) external view returns (address addr) {
        (addr, ) = mound.entry(_i);
    }

    function indexOf(address _addr) external view returns (uint256) {
        return mound.index[_addr];
    }

    function entry(uint256 _i) external view returns (address, uint256) {
        return mound.entry(_i);
    }

    function top() external view returns (address, uint256) {
        return mound.top();
    }

    function size() external view returns (uint256) {
        return mound.size();
    }

    function update(address _addr, uint256 _new) external onlyOwner {
        uint256 _size = mound.size();

        if (_size == 0) {
            emit Joinmound(_addr, _new, 0);
            mound.insert(_addr, _new);
            return;
        }

        (, uint256 lastBal) = mound.top();
        if (mound.has(_addr)) {
            mound.update(_addr, _new);
             if (_new == 0) {
                mound.popTop();
                emit Leavemound(_addr, 0, _size);
            }
        } else {

            if (_new != 0 && (_size < TOP_SIZE || lastBal < _new)) {

                if (_size >= TOP_SIZE) {
                    (address _poped, uint256 _balance) = mound.popTop();
                    emit Leavemound(_poped, _balance, _size);
                }

                // New
                mound.insert(_addr, _new);
                emit Joinmound(_addr, _new, _size);
            }
        }
    }
}




contract Tribute is Ownable, Inject, IERC20 {
    using DistributedStorage for bytes32;
    using SafeMath for uint256;

    // Distribution
    event Choosen(address indexed _addr, uint256 _value);

    // Org
    event SetName(string _prev, string _new);
    event SetExtraGas(uint256 _prev, uint256 _new);
    event Setmound(address _prev, address _new);
    event WhitelistFrom(address _addr, bool _whitelisted);
    event WhitelistTo(address _addr, bool _whitelisted);

    uint256 public totalSupply;
    uint256 public totalBurned;

    bytes32 private constant BALANCE_KEY = keccak256("balance");

    // Burn Mechanism: 5% burn 5% reward
    uint256 public constant FEE = 20;

    // Token Parameters
    string public name = "Tribute";
    string public constant symbol = "TRBT";
    uint8 public constant decimals = 18;

    // fee whitelist
    mapping(address => bool) public whitelistFrom;
    mapping(address => bool) public whitelistTo;

    // mound
    Mound public mound;

    // internal
    uint256 public extraGas;
    bool inited;

    function init(
        address _to,
        uint256 _amount
    ) external {
        // Init limited to one
        assert(!inited);
        inited = true;

        assert(totalSupply == 0);
        assert(address(mound) == address(0));

        // Create mound
        mound = new Mound();
        emit Setmound(address(0), address(mound));

        extraGas = 15;
        emit SetExtraGas(0, extraGas);
        emit Transfer(address(0), _to, _amount);
        _setBalance(_to, _amount);
        totalSupply = _amount;
    }

    // Get Functions

    function _toKey(address a) internal pure returns (bytes32) {
        return bytes32(uint256(a));
    }

    function _balanceOf(address _addr) internal view returns (uint256) {
        return uint256(_toKey(_addr).read(BALANCE_KEY));
    }

    function _allowance(address _addr, address _spender) internal view returns (uint256) {
        return uint256(_toKey(_addr).read(keccak256(abi.encodePacked("allowance", _spender))));
    }

    function _nonce(address _addr, uint256 _cat) internal view returns (uint256) {
        return uint256(_toKey(_addr).read(keccak256(abi.encodePacked("nonce", _cat))));
    }

    // Set Functions

    function _setAllowance(address _addr, address _spender, uint256 _value) internal {
        _toKey(_addr).write(keccak256(abi.encodePacked("allowance", _spender)), bytes32(_value));
    }

    function _setNonce(address _addr, uint256 _cat, uint256 _value) internal {
        _toKey(_addr).write(keccak256(abi.encodePacked("nonce", _cat)), bytes32(_value));
    }

    function _setBalance(address _addr, uint256 _balance) internal {
        _toKey(_addr).write(BALANCE_KEY, bytes32(_balance));
        mound.update(_addr, _balance);
    }

    // Distribution Functions

    function _isWhitelisted(address _from, address _to) internal view returns (bool) {
        return whitelistFrom[_from]||whitelistTo[_to];
    }

    function _random(address _s1, uint256 _s2, uint256 _s3, uint256 _max) internal pure returns (uint256) {
        uint256 rand = uint256(keccak256(abi.encodePacked(_s1, _s2, _s3)));
        return rand % (_max + 1);
    }

    function _pickChoosen(address _from, uint256 _value) internal returns (address choosen) {
        uint256 magnitude = Math.orderOfMagnitude(_value);
        uint256 nonce = _nonce(_from, magnitude);
        _setNonce(_from, magnitude, nonce + 1);
        // choose from mound
        choosen = mound.addressAt(_random(_from, nonce, magnitude, mound.size() - 1));
    }
    //event DebugTest2(uint allowance,uint from,address sender);
    function _transferFrom(address _operator, address _from, address _to, uint256 _value, bool _payFee) internal {
        if (_value == 0) {
            emit Transfer(_from, _to, 0);
            return;
        }

        uint256 balanceFrom = _balanceOf(_from);
        require(balanceFrom >= _value, "balance not enough");

        if (_from != _operator) {
            uint256 allowanceFrom = _allowance(_from, _operator);
            if (allowanceFrom != uint(-1)) {
                //emit DebugTest2(allowanceFrom,_value,_operator);
                require(allowanceFrom >= _value, "allowance not enough");
                _setAllowance(_from, _operator, allowanceFrom.sub(_value));
            }
        }

        uint256 receive = _value;
        uint256 burn = 0;
        uint256 distribute = 0;

        _setBalance(_from, balanceFrom.sub(_value));

        // Fees Calculation
        if (_payFee || !_isWhitelisted(_from, _to)) {
            // SAME for BURN and DISTRIBUTION
            burn = _value.divRound(FEE);
            distribute = _value == 1 ? 0 : burn;

            receive = receive.sub(burn.add(distribute));

            // Burn
            totalSupply = totalSupply.sub(burn);
            totalBurned = totalBurned.add(burn);
            emit Transfer(_from, address(0), burn);

            // Distribute to choosen add
            address choosen = _pickChoosen(_from, _value);
            // Tokens to choosen
            _setBalance(choosen, _balanceOf(choosen).add(distribute));
            emit Choosen(choosen, distribute);
            emit Transfer(_from, choosen, distribute);
        }

        assert(burn.add(distribute).add(receive) == _value);

        _setBalance(_to, _balanceOf(_to).add(receive));
        emit Transfer(_from, _to, receive);
    }

    // Org functions

    function setWhitelistedTo(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistTo(_addr, _whitelisted);
        whitelistTo[_addr] = _whitelisted;
    }

    function setWhitelistedFrom(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistFrom(_addr, _whitelisted);
        whitelistFrom[_addr] = _whitelisted;
    }

    function setName(string calldata _name) external onlyOwner {
        emit SetName(name, _name);
        name = _name;
    }

    function setExtraGas(uint256 _gas) external onlyOwner {
        emit SetExtraGas(extraGas, _gas);
        extraGas = _gas;
    }

    function setmound(Mound _mound) external onlyOwner {
        emit Setmound(address(mound), address(_mound));
        mound = _mound;
    }

    // Mound functions

    function topSize() external view returns (uint256) {
        return mound.topSize();
    }

    function moundSize() external view returns (uint256) {
        return mound.size();
    }

    function moundEntry(uint256 _i) external view returns (address, uint256) {
        return mound.entry(_i);
    }

    function moundTop() external view returns (address, uint256) {
        return mound.top();
    }

    function moundIndex(address _addr) external view returns (uint256) {
        return mound.indexOf(_addr);
    }

    function getNonce(address _addr, uint256 _cat) external view returns (uint256) {
        return _nonce(_addr, _cat);
    }

    // ERC20 functions

    function balanceOf(address _addr) external view returns (uint256) {
        return _balanceOf(_addr);
    }

    function allowance(address _addr, address _spender) external view returns (uint256) {
        return _allowance(_addr, _spender);
    }

    function approve(address _spender, uint256 _value) external returns (bool) {
        emit Approval(msg.sender, _spender, _value);
        _setAllowance(msg.sender, _spender, _value);
        return true;
    }

    function transfer(address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, msg.sender, _to, _value, false);
        return true;
    }

    function transferWithFee(address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, msg.sender, _to, _value, true);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, _from, _to, _value, false);
        return true;
    }

    function transferFromWithFee(address _from, address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, _from, _to, _value, true);
        return true;
    }
    function approveAndCall(address _spender, uint256 _value, bytes20 _data) external returns (bool) {
      emit Approval(msg.sender, _spender, _value);
      _setAllowance(msg.sender, _spender, _value);
      ApproveAndCallFallBack(_spender).receiveApproval(msg.sender, _value, address(this), _data);
      return true;
    }
    function burn(uint256 _value) public {
      _transferFrom(msg.sender, msg.sender, address(0), _value, true);
      totalSupply = totalSupply.sub(_value);
    }
}





library Math {
    function orderOfMagnitude(uint256 input) internal pure returns (uint256){
        uint256 counter = uint(-1);
        uint256 temp = input;

        do {
            temp /= 10;
            counter++;
        } while (temp != 0);

        return counter;
    }

    function min(uint256 _a, uint256 _b) internal pure returns (uint256) {
        if (_a < _b) {
            return _a;
        } else {
            return _b;
        }
    }

    function max(uint256 _a, uint256 _b) internal pure returns (uint256) {
        if (_a > _b) {
            return _a;
        } else {
            return _b;
        }
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Choosen","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_prev","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"SetExtraGas","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_prev","type":"string"},{"indexed":false,"internalType":"string","name":"_new","type":"string"}],"name":"SetName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_prev","type":"address"},{"indexed":false,"internalType":"address","name":"_new","type":"address"}],"name":"Setmound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"}],"name":"TransferOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"constant":true,"inputs":[],"name":"FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes20","name":"_data","type":"bytes20"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"extraGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_cat","type":"uint256"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mound","outputs":[{"internalType":"contract Mound","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_i","type":"uint256"}],"name":"moundEntry","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"moundIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"moundSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"moundTop","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"setExtraGas","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract Mound","name":"_mound","type":"address"}],"name":"setmound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"topSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFromWithFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferWithFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]

60c060405260076080819052665472696275746560c81b60a09081526200002a916004919062000080565b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a162000125565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000c357805160ff1916838001178555620000f3565b82800160010185558215620000f3579182015b82811115620000f3578251825591602001919060010190620000d6565b506200010192915062000105565b5090565b6200012291905b808211156200010157600081556001016200010c565b90565b612f5980620001356000396000f3fe60806040523480156200001157600080fd5b50600436106200022c5760003560e01c8063895358031162000135578063b015248911620000bd578063d89135cd1162000087578063d89135cd14620006fa578063d93413d71462000704578063dd62ed3e146200072d578063e8653427146200075e578063ff12bbf41462000768576200022c565b8063b01524891462000612578063bf88dffa1462000651578063c47f0027146200067a578063c57981b514620006f0576200022c565b806395d89b4111620000ff57806395d89b41146200056557806399131fa6146200056f578063a486309d14620005b2578063a9059cbb14620005e3576200022c565b80638953580314620004d357806389f3546814620005025780638cec9993146200053b5780638da5cb5b146200055b576200022c565b8063313ce56711620001b957806343684b21116200018357806343684b21146200046d57806346c9611a146200049657806370a0823114620004a05780637c32cdd114620004c9576200022c565b8063313ce56714620003f45780633767e3391462000414578063399ae724146200041e57806342966c68146200044d576200022c565b806316b627d111620001fb57806316b627d1146200035057806318160ddd14620003795780631dbe875c146200039557806323b872dd14620003bb576200022c565b806306fdde03146200023157806308acece214620002b3578063095ea7b314620002f657806313af40351462000325575b600080fd5b6200023b62000799565b6040805160208082528351818301528351919283929083019185019080838360005b83811015620002775781810151838201526020016200025d565b50505050905090810190601f168015620002a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620002e260048036036040811015620002cb57600080fd5b506001600160a01b0381351690602001356200082b565b604080519115158252519081900360200190f35b620002e2600480360360408110156200030e57600080fd5b506001600160a01b038135169060200135620008cc565b6200034e600480360360208110156200033d57600080fd5b50356001600160a01b031662000927565b005b620002e2600480360360208110156200036857600080fd5b50356001600160a01b0316620009de565b62000383620009f3565b60408051918252519081900360200190f35b6200039f620009f9565b604080516001600160a01b039092168252519081900360200190f35b620002e260048036036060811015620003d357600080fd5b506001600160a01b0381358116916020810135909116906040013562000a08565b620003fe62000aaa565b6040805160ff9092168252519081900360200190f35b6200038362000aaf565b6200034e600480360360408110156200043657600080fd5b506001600160a01b03813516906020013562000ab5565b6200034e600480360360208110156200046557600080fd5b503562000bfc565b620002e2600480360360208110156200048557600080fd5b50356001600160a01b031662000c22565b6200038362000c37565b6200038360048036036020811015620004b857600080fd5b50356001600160a01b031662000cb1565b6200038362000cbe565b6200038360048036036040811015620004eb57600080fd5b506001600160a01b03813516906020013562000d04565b620002e2600480360360608110156200051a57600080fd5b506001600160a01b0381358116916020810135909116906040013562000d19565b6200034e600480360360208110156200055357600080fd5b503562000d58565b6200039f62000de7565b6200023b62000df6565b6200058f600480360360208110156200058757600080fd5b503562000e16565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6200034e60048036036040811015620005ca57600080fd5b506001600160a01b038135169060200135151562000ea2565b620002e260048036036040811015620005fb57600080fd5b506001600160a01b03813516906020013562000f5f565b620002e2600480360360608110156200062a57600080fd5b5080356001600160a01b031690602081013590604001356001600160601b03191662000f9e565b6200034e600480360360208110156200066957600080fd5b50356001600160a01b031662001077565b6200034e600480360360208110156200069257600080fd5b810190602081018135640100000000811115620006ae57600080fd5b820183602082011115620006c157600080fd5b80359060200191846001830284011164010000000083111715620006e457600080fd5b5090925090506200112e565b6200038362001270565b6200038362001275565b62000383600480360360208110156200071c57600080fd5b50356001600160a01b03166200127b565b62000383600480360360408110156200074557600080fd5b506001600160a01b038135811691602001351662001301565b6200058f6200130f565b6200034e600480360360408110156200078057600080fd5b506001600160a01b038135169060200135151562001393565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620008235780601f10620007f75761010080835404028352916020019162000823565b820191906000526020600020905b8154815290600101906020018083116200080557829003601f168201915b505050505081565b60006008543a600014806200083f5750455a115b15620008b05760005a90506200085a33338787600162001450565b6001925060005a820390506064838202045a92505b805a84031015620008a7576001805460408051602080820193909352815180820384018152908201909152805191012090556200086f565b505050620008c5565b620008c033338686600162001450565b600191505b5092915050565b6040805182815290516000916001600160a01b0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a36200091d338484620017a8565b5060015b92915050565b6000546001600160a01b0316331462000974576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b60066020526000908152604090205460ff1681565b60025481565b6007546001600160a01b031681565b60006008543a6000148062000a1c5750455a115b1562000a8d5760005a905062000a3733878787600062001450565b6001925060005a820390506064838202045a92505b805a8403101562000a845760018054604080516020808201939093528151808203840181529082019091528051910120905562000a4c565b50505062000aa2565b62000a9d33868686600062001450565b600191505b509392505050565b601281565b60085481565b60095460ff161562000ac357fe5b6009805460ff191660011790556002541562000adb57fe5b6007546001600160a01b03161562000aef57fe5b60405162000afd906200203e565b604051809103906000f08015801562000b1a573d6000803e3d6000fd5b50600780546001600160a01b0319166001600160a01b039283161790819055604080516000815291909216602082015281517f34402c9b98b79875cf3533c296fd8b66441723da4648879b622bfc956905e148929181900390910190a1600f60088190556040805160008152602081019290925280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a16040805182815290516001600160a01b0384169160009160008051602062002f058339815191529181900360200190a362000bf682826200180c565b60025550565b62000c0d3333600084600162001450565b60025462000bf6908263ffffffff620018ac16565b60056020526000908152604090205460ff1681565b6007546040805163949d225d60e01b815290516000926001600160a01b03169163949d225d916004808301926020929190829003018186803b15801562000c7d57600080fd5b505afa15801562000c92573d6000803e3d6000fd5b505050506040513d602081101562000ca957600080fd5b505190505b90565b60006200092182620018c2565b60075460408051637c32cdd160e01b815290516000926001600160a01b031691637c32cdd1916004808301926020929190829003018186803b15801562000c7d57600080fd5b600062000d128383620018fe565b9392505050565b60006008543a6000148062000d2d5750455a115b1562000d485760005a905062000a3733878787600162001450565b62000a9d33868686600162001450565b6000546001600160a01b0316331462000da5576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600854604080519182526020820183905280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a1600855565b6000546001600160a01b031681565b604051806040016040528060048152602001631514909560e21b81525081565b6007546040805163e2095c0760e01b815260048101849052815160009384936001600160a01b039091169263e2095c079260248083019392829003018186803b15801562000e6357600080fd5b505afa15801562000e78573d6000803e3d6000fd5b505050506040513d604081101562000e8f57600080fd5b5080516020909101519092509050915091565b6000546001600160a01b0316331462000eef576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60006008543a6000148062000f735750455a115b1562000f8e5760005a90506200085a33338787600062001450565b620008c033338686600062001450565b6040805183815290516000916001600160a01b0386169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a362000fef338585620017a8565b60408051634c62a23f60e01b8152336004820152602481018590523060448201526001600160601b03198416606482015290516001600160a01b03861691634c62a23f91608480830192600092919082900301818387803b1580156200105457600080fd5b505af115801562001069573d6000803e3d6000fd5b506001979650505050505050565b6000546001600160a01b03163314620010c4576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600754604080516001600160a01b039283168152918316602083015280517f34402c9b98b79875cf3533c296fd8b66441723da4648879b622bfc956905e1489281900390910190a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146200117b576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6040805181815260048054600260001961010060018416150201909116049282018390527fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb1929091859185919081906020820190606083019087908015620012275780601f10620011fb5761010080835404028352916020019162001227565b820191906000526020600020905b8154815290600101906020018083116200120957829003601f168201915b50508381038252848152602001858580828437600083820152604051601f909101601f191690920182900397509095505050505050a16200126b600483836200204c565b505050565b601481565b60035481565b6007546040805163fd6aad2560e01b81526001600160a01b0384811660048301529151600093929092169163fd6aad2591602480820192602092909190829003018186803b158015620012cd57600080fd5b505afa158015620012e2573d6000803e3d6000fd5b505050506040513d6020811015620012f957600080fd5b505192915050565b600062000d12838362001946565b60075460408051637f36e6dd60e11b8152815160009384936001600160a01b039091169263fe6dcdba9260048083019392829003018186803b1580156200135557600080fd5b505afa1580156200136a573d6000803e3d6000fd5b505050506040513d60408110156200138157600080fd5b50805160209091015190925090509091565b6000546001600160a01b03163314620013e0576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a929181900390910190a16001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b816200149757826001600160a01b0316846001600160a01b031660008051602062002f0583398151915260006040518082815260200191505060405180910390a3620017a1565b6000620014a485620018c2565b905082811015620014f1576040805162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604482015290519081900360640190fd5b856001600160a01b0316856001600160a01b0316146200159257600062001519868862001946565b9050600019811462001590578381101562001572576040805162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604482015290519081900360640190fd5b6200159086886200158a848863ffffffff620018ac16565b620017a8565b505b82600080620015b388620015ad868663ffffffff620018ac16565b6200180c565b8480620015c95750620015c78888620019a7565b155b156200172d57620015e286601463ffffffff620019eb16565b915085600114620015f45781620015f7565b60005b90506200161d6200160f838363ffffffff62001a5816565b849063ffffffff620018ac16565b60025490935062001635908363ffffffff620018ac16565b6002556003546200164d908363ffffffff62001a5816565b6003556040805183815290516000916001600160a01b038b169160008051602062002f058339815191529181900360200190a360006200168e898862001a6b565b9050620016b281620015ad84620016a585620018c2565b9063ffffffff62001a5816565b6040805183815290516001600160a01b038316917f8e6f52908fa87187bbf8f4dddb7ff7a7435791409c9d21fb648bbb14f5418b01919081900360200190a2806001600160a01b0316896001600160a01b031660008051602062002f05833981519152846040518082815260200191505060405180910390a3505b856200174584620016a5858563ffffffff62001a5816565b146200174d57fe5b6200176287620015ad85620016a58b620018c2565b866001600160a01b0316886001600160a01b031660008051602062002f05833981519152856040518082815260200191505060405180910390a3505050505b5050505050565b6040805168616c6c6f77616e636560b81b6020808301919091526001600160601b0319606086901b1660298301528251601d818403018152603d90920190925280519101206200126b9082620017fe8662001b97565b919063ffffffff62001ba316565b604080516662616c616e636560c81b81529051908190036007019020620018399082620017fe8562001b97565b6007546040805163516c1daf60e11b81526001600160a01b038581166004830152602482018590529151919092169163a2d83b5e91604480830192600092919082900301818387803b1580156200188f57600080fd5b505af1158015620018a4573d6000803e3d6000fd5b505050505050565b600082821115620018bc57600080fd5b50900390565b604080516662616c616e636560c81b815290519081900360070190206000906200092190620018f18462001b97565b9063ffffffff62001cff16565b600062000d12826040516020018080646e6f6e636560d81b81525060050182815260200191505060405160208183030381529060405280519060200120620018f18562001b97565b600062000d1282604051602001808068616c6c6f77616e636560b81b815250600901826001600160a01b03166001600160a01b031660601b815260140191505060405160208183030381529060405280519060200120620018f18562001b97565b6001600160a01b03821660009081526005602052604081205460ff168062000d125750506001600160a01b031660009081526006602052604090205460ff16919050565b60008162001a2e576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b600082848162001a3a57fe5b04905082848162001a4757fe5b061562000d12576001019392505050565b60008282018381101562000d1257600080fd5b60008062001a798362001e7a565b9050600062001a898583620018fe565b905062001a9b85838360010162001e99565b6007546040805163949d225d60e01b815290516001600160a01b0390921691630af2b3e59162001b2b91899186918891600191889163949d225d916004808301926020929190829003018186803b15801562001af657600080fd5b505afa15801562001b0b573d6000803e3d6000fd5b505050506040513d602081101562001b2257600080fd5b50510362001ee3565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562001b6057600080fd5b505afa15801562001b75573d6000803e3d6000fd5b505050506040513d602081101562001b8c57600080fd5b505195945050505050565b6001600160a01b031690565b600062001bb08462001f40565b905062001bbd8162001fcd565b62001bcd5762001bcd8462002005565b6040805160248101859052604480820185905282518083039091018152606490910182526020810180516001600160e01b031663e2e52ec160e01b178152915181516000936001600160a01b0386169392918291908083835b6020831062001c475780518252601f19909201916020918201910162001c26565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462001cab576040519150601f19603f3d011682016040523d82523d6000602084013e62001cb0565b606091505b5050905080620017a1576040805162461bcd60e51b81526020600482015260156024820152746572726f722077726974696e672073746f7261676560581b604482015290519081900360640190fd5b60008062001d0d8462001f40565b905062001d1a8162001fcd565b62001d2a57506000905062000921565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166361da143960e01b178152915181516000936060936001600160a01b038716939092909182918083835b6020831062001da15780518252601f19909201916020918201910162001d80565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811462001e03576040519150601f19603f3d011682016040523d82523d6000602084013e62001e08565b606091505b50915091508162001e58576040805162461bcd60e51b81526020600482015260156024820152746572726f722072656164696e672073746f7261676560581b604482015290519081900360640190fd5b80806020019051602081101562001e6e57600080fd5b50519695505050505050565b6000600019825b60019190910190600a90048062001e81575092915050565b6200126b826040516020018080646e6f6e636560d81b815250600501828152602001915050604051602081830303815290604052805190602001208260001b620017fe8662001b97565b604080516001600160601b0319606087901b16602080830191909152603482018690526054808301869052835180840390910181526074909201909252805191012060009060018301818162001f3557fe5b069695505050505050565b600060ff60f81b30836040518060200162001f5b90620020d1565b818103601f199081018352601f90910116604081815282516020938401206001600160f81b0319969096168383015260609490941b6001600160601b03191660218201526035810192909252605580830194909452825180830390940184526075909101909152815191012092915050565b6000813f801580159062000d1257507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b6060604051806020016200201990620020d1565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b610ce380620020fd83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200208f5782800160ff19823516178555620020bf565b82800160010185558215620020bf579182015b82811115620020bf578235825591602001919060010190620020a2565b50620020cd929150620020df565b5090565b6101258062002de083390190565b62000cae91905b80821115620020cd5760008155600101620020e656fe608060405234801561001057600080fd5b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1610074600161007960201b610b5e1760201c565b6100e2565b8054156100cd576040805162461bcd60e51b815260206004820152601360248201527f616c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b80546001810182556000918252602082200155565b610bf2806100f16000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063949d225d11610066578063949d225d1461012e578063a2d83b5e14610136578063e2095c0714610162578063fd6aad25146101a2578063fe6dcdba146101c85761009e565b80630af2b3e5146100a357806313af4035146100dc57806331fb7127146101045780637c32cdd11461011e5780638da5cb5b14610126575b600080fd5b6100c0600480360360208110156100b957600080fd5b50356101d0565b604080516001600160a01b039092168252519081900360200190f35b610102600480360360208110156100f257600080fd5b50356001600160a01b03166101ea565b005b61010c6102a0565b60408051918252519081900360200190f35b61010c6102a5565b6100c06102ab565b61010c6102ba565b6101026004803603604081101561014c57600080fd5b506001600160a01b0381351690602001356102cb565b61017f6004803603602081101561017857600080fd5b50356104f7565b604080516001600160a01b03909316835260208301919091528051918290030190f35b61010c600480360360208110156101b857600080fd5b50356001600160a01b0316610515565b61017f610530565b60006101e360018363ffffffff61054516565b5092915050565b6000546001600160a01b03163314610236576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b603281565b60325b90565b6000546001600160a01b031681565b60006102c66001610578565b905090565b6000546001600160a01b03163314610317576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b60006103236001610578565b90508061038557604080518381526000602082015281516001600160a01b038616927f75ddb6c5075c4f5088c8bc7764c12b9a8c0dcb419d1200883dd1509f7dd1b068928290030190a261037f6001848463ffffffff61058016565b506104f3565b6000610391600161064b565b91506103a6905060018563ffffffff61067816565b15610418576103bd6001858563ffffffff61069916565b82610413576103cc60016107c1565b505060408051600081526020810184905281516001600160a01b038716927f3ad7ffe3733c6769bd9a20a0ac79732629d5fb71e331855a543043edd23bef45928290030190a25b6104f0565b82158015906104305750603282108061043057508281105b156104f0576032821061049a5760008061044a60016107c1565b91509150816001600160a01b03167f3ad7ffe3733c6769bd9a20a0ac79732629d5fb71e331855a543043edd23bef458286604051808381526020018281526020019250505060405180910390a250505b6104ac6001858563ffffffff61058016565b604080518481526020810184905281516001600160a01b038716927f75ddb6c5075c4f5088c8bc7764c12b9a8c0dcb419d1200883dd1509f7dd1b068928290030190a25b50505b5050565b60008061050b60018463ffffffff61054516565b915091505b915091565b6001600160a01b031660009081526002602052604090205490565b60008061053d600161064b565b915091509091565b60008061056d84600001846001018154811061055d57fe5b9060005260206000200154610901565b915091509250929050565b546000190190565b6001600160a01b0382166000908152600184016020526040902054156105ed576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b60006105f98383610916565b84546001810186556000868152602090200181905584549091506000190161062885828463ffffffff61092a16565b6001600160a01b0390941660009081526001909501602052505060409092205550565b805460009081906002111561066557506000905080610510565b61050b8360000160018154811061055d57fe5b6001600160a01b031660009081526001919091016020526040902054151590565b6001600160a01b038216600090815260018401602052604090205480610706576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920646f6573206e6f742065786973740000000000000000604482015290519081900360640190fd5b60006107128484610916565b9050600085600001838154811061072557fe5b906000526020600020015490506000818310156107545761074d87858563ffffffff610a0116565b9050610776565b8183111561076d5761074d87858563ffffffff61092a16565b505050506107bc565b8287600001828154811061078657fe5b6000918252602090912001558084146107b7576001600160a01b038616600090815260018801602052604090208190555b505050505b505050565b805460009081906001811161081d576040805162461bcd60e51b815260206004820152601860248201527f546865206d6f756e6420646f6573206e6f742065786973740000000000000000604482015290519081900360640190fd5b6108308460000160018154811061055d57fe5b6001600160a01b03821660009081526001870160205260408120559093509150600281141561086b5760016108658582610b21565b506108fb565b600084600001600183038154811061087f57fe5b90600052602060002001549050808560000160018154811061089d57fe5b60009182526020909120015560001982016108b88682610b21565b5060016108cc86828463ffffffff610a0116565b9050808660010160006108de85610b14565b6001600160a01b0316815260208101919091526040016000205550505b50915091565b196001600160a01b0381169160a09190911c90565b60a01b6001600160a01b0391909116171990565b81600181146109fa57600084600283048154811061094457fe5b906000526020600020015490505b828110156109f857828186600285048154811061096b57fe5b90600052602060002001600088600001868154811061098657fe5b60009182526020822001939093555091909155829060018701906109a984610b14565b6001600160a01b0316815260208101919091526040016000205560028204915081600114156109d7576109f8565b8460028304815481106109e657fe5b90600052602060002001549050610952565b505b9392505050565b8254829060001981015b81836002021015610b0b5785546002840290600090889083908110610a2c57fe5b90600052602060002001549050600082841115610a84576000896000018460010181548110610a5757fe5b9060005260206000200154905080831015610a7a57809150836001019350610a7e565b8291505b50610a87565b50805b80871115610a9757505050610b0b565b80878a6000018881548110610aa857fe5b9060005260206000200160008c6000018781548110610ac357fe5b60009182526020822001939093555091909155869060018b0190610ae684610b14565b6001600160a01b0316815260208101919091526040016000205550909350610a0b9050565b50509392505050565b196001600160a01b031690565b8154818355818111156107bc576000838152602090206107bc9181019083016102a891905b80821115610b5a5760008155600101610b46565b5090565b805415610ba8576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b8054600181018255600091825260208220015556fea265627a7a72315820857685ed5e2a433668e432deba3727e844f75055138ca64c39c68420d7a91e3a64736f6c63430005110032608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560f4806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361da1439146037578063e2e52ec1146063575b600080fd5b605160048036036020811015604b57600080fd5b50356085565b60408051918252519081900360200190f35b608360048036036040811015607757600080fd5b50803590602001356097565b005b60009081526001602052604090205490565b6000546001600160a01b0316331460ad57600080fd5b6000918252600160205260409091205556fea265627a7a723158204faebb6b85f4a31eed886bc506583ce7ddf13f564431eeecd141130a09dce39f64736f6c63430005110032ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a7231582004676f8be5effbbe9148a3c8094afad0f5922a2924ef4887bd5729c752cdd64464736f6c63430005110032

Deployed Bytecode

0x60806040523480156200001157600080fd5b50600436106200022c5760003560e01c8063895358031162000135578063b015248911620000bd578063d89135cd1162000087578063d89135cd14620006fa578063d93413d71462000704578063dd62ed3e146200072d578063e8653427146200075e578063ff12bbf41462000768576200022c565b8063b01524891462000612578063bf88dffa1462000651578063c47f0027146200067a578063c57981b514620006f0576200022c565b806395d89b4111620000ff57806395d89b41146200056557806399131fa6146200056f578063a486309d14620005b2578063a9059cbb14620005e3576200022c565b80638953580314620004d357806389f3546814620005025780638cec9993146200053b5780638da5cb5b146200055b576200022c565b8063313ce56711620001b957806343684b21116200018357806343684b21146200046d57806346c9611a146200049657806370a0823114620004a05780637c32cdd114620004c9576200022c565b8063313ce56714620003f45780633767e3391462000414578063399ae724146200041e57806342966c68146200044d576200022c565b806316b627d111620001fb57806316b627d1146200035057806318160ddd14620003795780631dbe875c146200039557806323b872dd14620003bb576200022c565b806306fdde03146200023157806308acece214620002b3578063095ea7b314620002f657806313af40351462000325575b600080fd5b6200023b62000799565b6040805160208082528351818301528351919283929083019185019080838360005b83811015620002775781810151838201526020016200025d565b50505050905090810190601f168015620002a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620002e260048036036040811015620002cb57600080fd5b506001600160a01b0381351690602001356200082b565b604080519115158252519081900360200190f35b620002e2600480360360408110156200030e57600080fd5b506001600160a01b038135169060200135620008cc565b6200034e600480360360208110156200033d57600080fd5b50356001600160a01b031662000927565b005b620002e2600480360360208110156200036857600080fd5b50356001600160a01b0316620009de565b62000383620009f3565b60408051918252519081900360200190f35b6200039f620009f9565b604080516001600160a01b039092168252519081900360200190f35b620002e260048036036060811015620003d357600080fd5b506001600160a01b0381358116916020810135909116906040013562000a08565b620003fe62000aaa565b6040805160ff9092168252519081900360200190f35b6200038362000aaf565b6200034e600480360360408110156200043657600080fd5b506001600160a01b03813516906020013562000ab5565b6200034e600480360360208110156200046557600080fd5b503562000bfc565b620002e2600480360360208110156200048557600080fd5b50356001600160a01b031662000c22565b6200038362000c37565b6200038360048036036020811015620004b857600080fd5b50356001600160a01b031662000cb1565b6200038362000cbe565b6200038360048036036040811015620004eb57600080fd5b506001600160a01b03813516906020013562000d04565b620002e2600480360360608110156200051a57600080fd5b506001600160a01b0381358116916020810135909116906040013562000d19565b6200034e600480360360208110156200055357600080fd5b503562000d58565b6200039f62000de7565b6200023b62000df6565b6200058f600480360360208110156200058757600080fd5b503562000e16565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6200034e60048036036040811015620005ca57600080fd5b506001600160a01b038135169060200135151562000ea2565b620002e260048036036040811015620005fb57600080fd5b506001600160a01b03813516906020013562000f5f565b620002e2600480360360608110156200062a57600080fd5b5080356001600160a01b031690602081013590604001356001600160601b03191662000f9e565b6200034e600480360360208110156200066957600080fd5b50356001600160a01b031662001077565b6200034e600480360360208110156200069257600080fd5b810190602081018135640100000000811115620006ae57600080fd5b820183602082011115620006c157600080fd5b80359060200191846001830284011164010000000083111715620006e457600080fd5b5090925090506200112e565b6200038362001270565b6200038362001275565b62000383600480360360208110156200071c57600080fd5b50356001600160a01b03166200127b565b62000383600480360360408110156200074557600080fd5b506001600160a01b038135811691602001351662001301565b6200058f6200130f565b6200034e600480360360408110156200078057600080fd5b506001600160a01b038135169060200135151562001393565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620008235780601f10620007f75761010080835404028352916020019162000823565b820191906000526020600020905b8154815290600101906020018083116200080557829003601f168201915b505050505081565b60006008543a600014806200083f5750455a115b15620008b05760005a90506200085a33338787600162001450565b6001925060005a820390506064838202045a92505b805a84031015620008a7576001805460408051602080820193909352815180820384018152908201909152805191012090556200086f565b505050620008c5565b620008c033338686600162001450565b600191505b5092915050565b6040805182815290516000916001600160a01b0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a36200091d338484620017a8565b5060015b92915050565b6000546001600160a01b0316331462000974576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b60066020526000908152604090205460ff1681565b60025481565b6007546001600160a01b031681565b60006008543a6000148062000a1c5750455a115b1562000a8d5760005a905062000a3733878787600062001450565b6001925060005a820390506064838202045a92505b805a8403101562000a845760018054604080516020808201939093528151808203840181529082019091528051910120905562000a4c565b50505062000aa2565b62000a9d33868686600062001450565b600191505b509392505050565b601281565b60085481565b60095460ff161562000ac357fe5b6009805460ff191660011790556002541562000adb57fe5b6007546001600160a01b03161562000aef57fe5b60405162000afd906200203e565b604051809103906000f08015801562000b1a573d6000803e3d6000fd5b50600780546001600160a01b0319166001600160a01b039283161790819055604080516000815291909216602082015281517f34402c9b98b79875cf3533c296fd8b66441723da4648879b622bfc956905e148929181900390910190a1600f60088190556040805160008152602081019290925280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a16040805182815290516001600160a01b0384169160009160008051602062002f058339815191529181900360200190a362000bf682826200180c565b60025550565b62000c0d3333600084600162001450565b60025462000bf6908263ffffffff620018ac16565b60056020526000908152604090205460ff1681565b6007546040805163949d225d60e01b815290516000926001600160a01b03169163949d225d916004808301926020929190829003018186803b15801562000c7d57600080fd5b505afa15801562000c92573d6000803e3d6000fd5b505050506040513d602081101562000ca957600080fd5b505190505b90565b60006200092182620018c2565b60075460408051637c32cdd160e01b815290516000926001600160a01b031691637c32cdd1916004808301926020929190829003018186803b15801562000c7d57600080fd5b600062000d128383620018fe565b9392505050565b60006008543a6000148062000d2d5750455a115b1562000d485760005a905062000a3733878787600162001450565b62000a9d33868686600162001450565b6000546001600160a01b0316331462000da5576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600854604080519182526020820183905280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a1600855565b6000546001600160a01b031681565b604051806040016040528060048152602001631514909560e21b81525081565b6007546040805163e2095c0760e01b815260048101849052815160009384936001600160a01b039091169263e2095c079260248083019392829003018186803b15801562000e6357600080fd5b505afa15801562000e78573d6000803e3d6000fd5b505050506040513d604081101562000e8f57600080fd5b5080516020909101519092509050915091565b6000546001600160a01b0316331462000eef576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60006008543a6000148062000f735750455a115b1562000f8e5760005a90506200085a33338787600062001450565b620008c033338686600062001450565b6040805183815290516000916001600160a01b0386169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a362000fef338585620017a8565b60408051634c62a23f60e01b8152336004820152602481018590523060448201526001600160601b03198416606482015290516001600160a01b03861691634c62a23f91608480830192600092919082900301818387803b1580156200105457600080fd5b505af115801562001069573d6000803e3d6000fd5b506001979650505050505050565b6000546001600160a01b03163314620010c4576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600754604080516001600160a01b039283168152918316602083015280517f34402c9b98b79875cf3533c296fd8b66441723da4648879b622bfc956905e1489281900390910190a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146200117b576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6040805181815260048054600260001961010060018416150201909116049282018390527fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb1929091859185919081906020820190606083019087908015620012275780601f10620011fb5761010080835404028352916020019162001227565b820191906000526020600020905b8154815290600101906020018083116200120957829003601f168201915b50508381038252848152602001858580828437600083820152604051601f909101601f191690920182900397509095505050505050a16200126b600483836200204c565b505050565b601481565b60035481565b6007546040805163fd6aad2560e01b81526001600160a01b0384811660048301529151600093929092169163fd6aad2591602480820192602092909190829003018186803b158015620012cd57600080fd5b505afa158015620012e2573d6000803e3d6000fd5b505050506040513d6020811015620012f957600080fd5b505192915050565b600062000d12838362001946565b60075460408051637f36e6dd60e11b8152815160009384936001600160a01b039091169263fe6dcdba9260048083019392829003018186803b1580156200135557600080fd5b505afa1580156200136a573d6000803e3d6000fd5b505050506040513d60408110156200138157600080fd5b50805160209091015190925090509091565b6000546001600160a01b03163314620013e0576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a929181900390910190a16001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b816200149757826001600160a01b0316846001600160a01b031660008051602062002f0583398151915260006040518082815260200191505060405180910390a3620017a1565b6000620014a485620018c2565b905082811015620014f1576040805162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604482015290519081900360640190fd5b856001600160a01b0316856001600160a01b0316146200159257600062001519868862001946565b9050600019811462001590578381101562001572576040805162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604482015290519081900360640190fd5b6200159086886200158a848863ffffffff620018ac16565b620017a8565b505b82600080620015b388620015ad868663ffffffff620018ac16565b6200180c565b8480620015c95750620015c78888620019a7565b155b156200172d57620015e286601463ffffffff620019eb16565b915085600114620015f45781620015f7565b60005b90506200161d6200160f838363ffffffff62001a5816565b849063ffffffff620018ac16565b60025490935062001635908363ffffffff620018ac16565b6002556003546200164d908363ffffffff62001a5816565b6003556040805183815290516000916001600160a01b038b169160008051602062002f058339815191529181900360200190a360006200168e898862001a6b565b9050620016b281620015ad84620016a585620018c2565b9063ffffffff62001a5816565b6040805183815290516001600160a01b038316917f8e6f52908fa87187bbf8f4dddb7ff7a7435791409c9d21fb648bbb14f5418b01919081900360200190a2806001600160a01b0316896001600160a01b031660008051602062002f05833981519152846040518082815260200191505060405180910390a3505b856200174584620016a5858563ffffffff62001a5816565b146200174d57fe5b6200176287620015ad85620016a58b620018c2565b866001600160a01b0316886001600160a01b031660008051602062002f05833981519152856040518082815260200191505060405180910390a3505050505b5050505050565b6040805168616c6c6f77616e636560b81b6020808301919091526001600160601b0319606086901b1660298301528251601d818403018152603d90920190925280519101206200126b9082620017fe8662001b97565b919063ffffffff62001ba316565b604080516662616c616e636560c81b81529051908190036007019020620018399082620017fe8562001b97565b6007546040805163516c1daf60e11b81526001600160a01b038581166004830152602482018590529151919092169163a2d83b5e91604480830192600092919082900301818387803b1580156200188f57600080fd5b505af1158015620018a4573d6000803e3d6000fd5b505050505050565b600082821115620018bc57600080fd5b50900390565b604080516662616c616e636560c81b815290519081900360070190206000906200092190620018f18462001b97565b9063ffffffff62001cff16565b600062000d12826040516020018080646e6f6e636560d81b81525060050182815260200191505060405160208183030381529060405280519060200120620018f18562001b97565b600062000d1282604051602001808068616c6c6f77616e636560b81b815250600901826001600160a01b03166001600160a01b031660601b815260140191505060405160208183030381529060405280519060200120620018f18562001b97565b6001600160a01b03821660009081526005602052604081205460ff168062000d125750506001600160a01b031660009081526006602052604090205460ff16919050565b60008162001a2e576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b600082848162001a3a57fe5b04905082848162001a4757fe5b061562000d12576001019392505050565b60008282018381101562000d1257600080fd5b60008062001a798362001e7a565b9050600062001a898583620018fe565b905062001a9b85838360010162001e99565b6007546040805163949d225d60e01b815290516001600160a01b0390921691630af2b3e59162001b2b91899186918891600191889163949d225d916004808301926020929190829003018186803b15801562001af657600080fd5b505afa15801562001b0b573d6000803e3d6000fd5b505050506040513d602081101562001b2257600080fd5b50510362001ee3565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562001b6057600080fd5b505afa15801562001b75573d6000803e3d6000fd5b505050506040513d602081101562001b8c57600080fd5b505195945050505050565b6001600160a01b031690565b600062001bb08462001f40565b905062001bbd8162001fcd565b62001bcd5762001bcd8462002005565b6040805160248101859052604480820185905282518083039091018152606490910182526020810180516001600160e01b031663e2e52ec160e01b178152915181516000936001600160a01b0386169392918291908083835b6020831062001c475780518252601f19909201916020918201910162001c26565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462001cab576040519150601f19603f3d011682016040523d82523d6000602084013e62001cb0565b606091505b5050905080620017a1576040805162461bcd60e51b81526020600482015260156024820152746572726f722077726974696e672073746f7261676560581b604482015290519081900360640190fd5b60008062001d0d8462001f40565b905062001d1a8162001fcd565b62001d2a57506000905062000921565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166361da143960e01b178152915181516000936060936001600160a01b038716939092909182918083835b6020831062001da15780518252601f19909201916020918201910162001d80565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811462001e03576040519150601f19603f3d011682016040523d82523d6000602084013e62001e08565b606091505b50915091508162001e58576040805162461bcd60e51b81526020600482015260156024820152746572726f722072656164696e672073746f7261676560581b604482015290519081900360640190fd5b80806020019051602081101562001e6e57600080fd5b50519695505050505050565b6000600019825b60019190910190600a90048062001e81575092915050565b6200126b826040516020018080646e6f6e636560d81b815250600501828152602001915050604051602081830303815290604052805190602001208260001b620017fe8662001b97565b604080516001600160601b0319606087901b16602080830191909152603482018690526054808301869052835180840390910181526074909201909252805191012060009060018301818162001f3557fe5b069695505050505050565b600060ff60f81b30836040518060200162001f5b90620020d1565b818103601f199081018352601f90910116604081815282516020938401206001600160f81b0319969096168383015260609490941b6001600160601b03191660218201526035810192909252605580830194909452825180830390940184526075909101909152815191012092915050565b6000813f801580159062000d1257507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b6060604051806020016200201990620020d1565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b610ce380620020fd83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200208f5782800160ff19823516178555620020bf565b82800160010185558215620020bf579182015b82811115620020bf578235825591602001919060010190620020a2565b50620020cd929150620020df565b5090565b6101258062002de083390190565b62000cae91905b80821115620020cd5760008155600101620020e656fe608060405234801561001057600080fd5b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1610074600161007960201b610b5e1760201c565b6100e2565b8054156100cd576040805162461bcd60e51b815260206004820152601360248201527f616c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b80546001810182556000918252602082200155565b610bf2806100f16000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063949d225d11610066578063949d225d1461012e578063a2d83b5e14610136578063e2095c0714610162578063fd6aad25146101a2578063fe6dcdba146101c85761009e565b80630af2b3e5146100a357806313af4035146100dc57806331fb7127146101045780637c32cdd11461011e5780638da5cb5b14610126575b600080fd5b6100c0600480360360208110156100b957600080fd5b50356101d0565b604080516001600160a01b039092168252519081900360200190f35b610102600480360360208110156100f257600080fd5b50356001600160a01b03166101ea565b005b61010c6102a0565b60408051918252519081900360200190f35b61010c6102a5565b6100c06102ab565b61010c6102ba565b6101026004803603604081101561014c57600080fd5b506001600160a01b0381351690602001356102cb565b61017f6004803603602081101561017857600080fd5b50356104f7565b604080516001600160a01b03909316835260208301919091528051918290030190f35b61010c600480360360208110156101b857600080fd5b50356001600160a01b0316610515565b61017f610530565b60006101e360018363ffffffff61054516565b5092915050565b6000546001600160a01b03163314610236576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b603281565b60325b90565b6000546001600160a01b031681565b60006102c66001610578565b905090565b6000546001600160a01b03163314610317576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b60006103236001610578565b90508061038557604080518381526000602082015281516001600160a01b038616927f75ddb6c5075c4f5088c8bc7764c12b9a8c0dcb419d1200883dd1509f7dd1b068928290030190a261037f6001848463ffffffff61058016565b506104f3565b6000610391600161064b565b91506103a6905060018563ffffffff61067816565b15610418576103bd6001858563ffffffff61069916565b82610413576103cc60016107c1565b505060408051600081526020810184905281516001600160a01b038716927f3ad7ffe3733c6769bd9a20a0ac79732629d5fb71e331855a543043edd23bef45928290030190a25b6104f0565b82158015906104305750603282108061043057508281105b156104f0576032821061049a5760008061044a60016107c1565b91509150816001600160a01b03167f3ad7ffe3733c6769bd9a20a0ac79732629d5fb71e331855a543043edd23bef458286604051808381526020018281526020019250505060405180910390a250505b6104ac6001858563ffffffff61058016565b604080518481526020810184905281516001600160a01b038716927f75ddb6c5075c4f5088c8bc7764c12b9a8c0dcb419d1200883dd1509f7dd1b068928290030190a25b50505b5050565b60008061050b60018463ffffffff61054516565b915091505b915091565b6001600160a01b031660009081526002602052604090205490565b60008061053d600161064b565b915091509091565b60008061056d84600001846001018154811061055d57fe5b9060005260206000200154610901565b915091509250929050565b546000190190565b6001600160a01b0382166000908152600184016020526040902054156105ed576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b60006105f98383610916565b84546001810186556000868152602090200181905584549091506000190161062885828463ffffffff61092a16565b6001600160a01b0390941660009081526001909501602052505060409092205550565b805460009081906002111561066557506000905080610510565b61050b8360000160018154811061055d57fe5b6001600160a01b031660009081526001919091016020526040902054151590565b6001600160a01b038216600090815260018401602052604090205480610706576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920646f6573206e6f742065786973740000000000000000604482015290519081900360640190fd5b60006107128484610916565b9050600085600001838154811061072557fe5b906000526020600020015490506000818310156107545761074d87858563ffffffff610a0116565b9050610776565b8183111561076d5761074d87858563ffffffff61092a16565b505050506107bc565b8287600001828154811061078657fe5b6000918252602090912001558084146107b7576001600160a01b038616600090815260018801602052604090208190555b505050505b505050565b805460009081906001811161081d576040805162461bcd60e51b815260206004820152601860248201527f546865206d6f756e6420646f6573206e6f742065786973740000000000000000604482015290519081900360640190fd5b6108308460000160018154811061055d57fe5b6001600160a01b03821660009081526001870160205260408120559093509150600281141561086b5760016108658582610b21565b506108fb565b600084600001600183038154811061087f57fe5b90600052602060002001549050808560000160018154811061089d57fe5b60009182526020909120015560001982016108b88682610b21565b5060016108cc86828463ffffffff610a0116565b9050808660010160006108de85610b14565b6001600160a01b0316815260208101919091526040016000205550505b50915091565b196001600160a01b0381169160a09190911c90565b60a01b6001600160a01b0391909116171990565b81600181146109fa57600084600283048154811061094457fe5b906000526020600020015490505b828110156109f857828186600285048154811061096b57fe5b90600052602060002001600088600001868154811061098657fe5b60009182526020822001939093555091909155829060018701906109a984610b14565b6001600160a01b0316815260208101919091526040016000205560028204915081600114156109d7576109f8565b8460028304815481106109e657fe5b90600052602060002001549050610952565b505b9392505050565b8254829060001981015b81836002021015610b0b5785546002840290600090889083908110610a2c57fe5b90600052602060002001549050600082841115610a84576000896000018460010181548110610a5757fe5b9060005260206000200154905080831015610a7a57809150836001019350610a7e565b8291505b50610a87565b50805b80871115610a9757505050610b0b565b80878a6000018881548110610aa857fe5b9060005260206000200160008c6000018781548110610ac357fe5b60009182526020822001939093555091909155869060018b0190610ae684610b14565b6001600160a01b0316815260208101919091526040016000205550909350610a0b9050565b50509392505050565b196001600160a01b031690565b8154818355818111156107bc576000838152602090206107bc9181019083016102a891905b80821115610b5a5760008155600101610b46565b5090565b805415610ba8576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b8054600181018255600091825260208220015556fea265627a7a72315820857685ed5e2a433668e432deba3727e844f75055138ca64c39c68420d7a91e3a64736f6c63430005110032608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560f4806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361da1439146037578063e2e52ec1146063575b600080fd5b605160048036036020811015604b57600080fd5b50356085565b60408051918252519081900360200190f35b608360048036036040811015607757600080fd5b50803590602001356097565b005b60009081526001602052604090205490565b6000546001600160a01b0316331460ad57600080fd5b6000918252600160205260409091205556fea265627a7a723158204faebb6b85f4a31eed886bc506583ce7ddf13f564431eeecd141130a09dce39f64736f6c63430005110032ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a7231582004676f8be5effbbe9148a3c8094afad0f5922a2924ef4887bd5729c752cdd64464736f6c63430005110032

Deployed Bytecode Sourcemap

17097:8967:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17097:8967:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17834:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17834:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24932:196;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24932:196:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;24513:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24513:213:0;;;;;;;;:::i;5554:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5554:134:0;-1:-1:-1;;;;;5554:134:0;;:::i;:::-;;18034:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18034:43:0;-1:-1:-1;;;;;18034:43:0;;:::i;17590:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;18100:18;;;:::i;:::-;;;;-1:-1:-1;;;;;18100:18:0;;;;;;;;;;;;;;25136:204;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25136:204:0;;;;;;;;;;;;;;;;;:::i;17916:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18144:23;;;:::i;18194:545::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18194:545:0;;;;;;;;:::i;25898:163::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25898:163:0;;:::i;17982:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17982:45:0;-1:-1:-1;;;;;17982:45:0;;:::i;23645:91::-;;;:::i;24251:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24251:109:0;-1:-1:-1;;;;;24251:109:0;;:::i;23545:92::-;;;:::i;24093:124::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24093:124:0;;;;;;;;:::i;25348:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25348:210:0;;;;;;;;;;;;;;;;;:::i;23231:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23231:131:0;;:::i;5240:20::-;;;:::i;17871:38::-;;;:::i;23744:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23744:114:0;;:::i;:::-;;;;-1:-1:-1;;;;;23744:114:0;;;;;;;;;;;;;;;;;;;;;22717:179;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22717:179:0;;;;;;;;;;:::i;24734:190::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24734:190:0;;;;;;;;:::i;25564:328::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25564:328:0;;-1:-1:-1;;;;;25564:328:0;;;;;;;;;;-1:-1:-1;;;;;;25564:328:0;;:::i;23370:141::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23370:141:0;-1:-1:-1;;;;;23370:141:0;;:::i;23097:126::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23097:126:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;23097:126:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;23097:126:0;;;;;;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;-1:-1;23097:126:0;;-1:-1:-1;23097:126:0;-1:-1:-1;23097:126:0;:::i;17768:32::-;;;:::i;17623:26::-;;;:::i;23972:113::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23972:113:0;-1:-1:-1;;;;;23972:113:0;;:::i;24368:137::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24368:137:0;;;;;;;;;;:::i;23866:98::-;;;:::i;22904:185::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22904:185:0;;;;;;;;;;:::i;17834:30::-;;;;;;;;;;;;;;;-1:-1:-1;;17834:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24932:196::-;25025:4;25006:8;;8556:11;8571:1;8556:16;:46;;;;8588:14;8576:9;:26;8556:46;8552:427;;;8619:16;8638:9;8619:28;;25042:56;25056:10;25068;25080:3;25085:6;25093:4;25042:13;:56::i;:::-;25116:4;25109:11;;8678:13;8705:9;8694:20;;;-1:-1:-1;8766:3:0;8747:15;;;8746:23;8795:9;8784:20;;8819:115;8849:6;8837:9;8826:8;:20;:29;8819:115;;;8912:4;;;8895:22;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;8895:22:0;;;;;;8885:33;;;;;8878:40;;8819:115;;;8552:427;;;;;;25042:56;25056:10;25068;25080:3;25085:6;25093:4;25042:13;:56::i;:::-;25116:4;25109:11;;8966:1;24932:196;;;;;:::o;24513:213::-;24604:38;;;;;;;;24582:4;;-1:-1:-1;;;;;24604:38:0;;;24613:10;;24604:38;;;;;;;;;;24653:43;24667:10;24679:8;24689:6;24653:13;:43::i;:::-;-1:-1:-1;24714:4:0;24513:213;;;;;:::o;5554:134::-;5506:5;;-1:-1:-1;;;;;5506:5:0;5492:10;:19;5484:42;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;;;;5641:5;;5623:32;;;-1:-1:-1;;;;;5641:5:0;;;5623:32;;;;;;;;;;;;;;;;;;;;;5666:5;:14;;-1:-1:-1;;;;;;5666:14:0;-1:-1:-1;;;;;5666:14:0;;;;;;;;;;5554:134::o;18034:43::-;;;;;;;;;;;;;;;:::o;17590:26::-;;;;:::o;18100:18::-;;;-1:-1:-1;;;;;18100:18:0;;:::o;25136:204::-;25241:4;25222:8;;8556:11;8571:1;8556:16;:46;;;;8588:14;8576:9;:26;8556:46;8552:427;;;8619:16;8638:9;8619:28;;25258:52;25272:10;25284:5;25291:3;25296:6;25304:5;25258:13;:52::i;:::-;25328:4;25321:11;;8678:13;8705:9;8694:20;;;-1:-1:-1;8766:3:0;8747:15;;;8746:23;8795:9;8784:20;;8819:115;8849:6;8837:9;8826:8;:20;:29;8819:115;;;8912:4;;;8895:22;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;8895:22:0;;;;;;8885:33;;;;;8878:40;;8819:115;;;8552:427;;;;;;25258:52;25272:10;25284:5;25291:3;25296:6;25304:5;25258:13;:52::i;:::-;25328:4;25321:11;;8966:1;25136:204;;;;;;:::o;17916:35::-;17949:2;17916:35;:::o;18144:23::-;;;;:::o;18194:545::-;18323:6;;;;18322:7;18315:15;;;;18341:6;:13;;-1:-1:-1;;18341:13:0;18350:4;18341:13;;;18374:11;;:16;18367:24;;;;18417:5;;-1:-1:-1;;;;;18417:5:0;18409:28;18402:36;;;;18484:11;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;18476:5:0;:19;;-1:-1:-1;;;;;;18476:19:0;-1:-1:-1;;;;;18476:19:0;;;;;;;;18511:36;;;-1:-1:-1;18511:36:0;;18540:5;;;;18511:36;;;;;;;;;;;;;;;;;18571:2;18560:8;:13;;;18589:24;;;18601:1;18589:24;;;;;;;;;;;;;;;;;;;;;18629:34;;;;;;;;-1:-1:-1;;;;;18629:34:0;;;18646:1;;-1:-1:-1;;;;;;;;;;;18629:34:0;;;;;;;;18674:25;18686:3;18691:7;18674:11;:25::i;:::-;18710:11;:21;-1:-1:-1;18194:545:0:o;25898:163::-;25944:63;25958:10;25970;25990:1;25994:6;26002:4;25944:13;:63::i;:::-;26030:11;;:23;;26046:6;26030:23;:15;:23;:::i;17982:45::-;;;;;;;;;;;;;;;:::o;23645:91::-;23716:5;;:12;;;-1:-1:-1;;;23716:12:0;;;;23689:7;;-1:-1:-1;;;;;23716:5:0;;:10;;:12;;;;;;;;;;;;;;:5;:12;;;5:2:-1;;;;30:1;27;20:12;5:2;23716:12:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23716:12:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23716:12:0;;-1:-1:-1;23645:91:0;;:::o;24251:109::-;24308:7;24335:17;24346:5;24335:10;:17::i;23545:92::-;23614:5;;:15;;;-1:-1:-1;;;23614:15:0;;;;23587:7;;-1:-1:-1;;;;;23614:5:0;;:13;;:15;;;;;;;;;;;;;;:5;:15;;;5:2:-1;;;;30:1;27;20:12;24093:124:0;24163:7;24190:19;24197:5;24204:4;24190:6;:19::i;:::-;24183:26;24093:124;-1:-1:-1;;;24093:124:0:o;25348:210::-;25460:4;25441:8;;8556:11;8571:1;8556:16;:46;;;;8588:14;8576:9;:26;8556:46;8552:427;;;8619:16;8638:9;8619:28;;25477:51;25491:10;25503:5;25510:3;25515:6;25523:4;25477:13;:51::i;8552:427::-;25477:51;25491:10;25503:5;25510:3;25515:6;25523:4;25477:13;:51::i;23231:131::-;5506:5;;-1:-1:-1;;;;;5506:5:0;5492:10;:19;5484:42;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;;;;23313:8;;23301:27;;;;;;;;;;;;;;;;;;;;;;;;23339:8;:15;23231:131::o;5240:20::-;;;-1:-1:-1;;;;;5240:20:0;;:::o;17871:38::-;;;;;;;;;;;;;;-1:-1:-1;;;17871:38:0;;;;:::o;23744:114::-;23835:5;;:15;;;-1:-1:-1;;;23835:15:0;;;;;;;;;;23799:7;;;;-1:-1:-1;;;;;23835:5:0;;;;:11;;:15;;;;;;;;;;;:5;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;23835:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23835:15:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23835:15:0;;;;;;;;;-1:-1:-1;23835:15:0;-1:-1:-1;23744:114:0;;;:::o;22717:179::-;5506:5;;-1:-1:-1;;;;;5506:5:0;5492:10;:19;5484:42;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;;;;22812:32;;;-1:-1:-1;;;;;22812:32:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22855:18:0;;;;;;;;:11;:18;;;;;:33;;-1:-1:-1;;22855:33:0;;;;;;;;;;22717:179::o;24734:190::-;24820:4;24801:8;;8556:11;8571:1;8556:16;:46;;;;8588:14;8576:9;:26;8556:46;8552:427;;;8619:16;8638:9;8619:28;;24837:57;24851:10;24863;24875:3;24880:6;24888:5;24837:13;:57::i;8552:427::-;24837:57;24851:10;24863;24875:3;24880:6;24888:5;24837:13;:57::i;25564:328::-;25675:38;;;;;;;;25655:4;;-1:-1:-1;;;;;25675:38:0;;;25684:10;;25675:38;;;;;;;;;;25722:43;25736:10;25748:8;25758:6;25722:13;:43::i;:::-;25774:90;;;-1:-1:-1;;;25774:90:0;;25823:10;25774:90;;;;;;;;;;25851:4;25774:90;;;;-1:-1:-1;;;;;;25774:90:0;;;;;;;;-1:-1:-1;;;;;25774:48:0;;;;;:90;;;;;-1:-1:-1;;25774:90:0;;;;;;;-1:-1:-1;25774:48:0;:90;;;5:2:-1;;;;30:1;27;20:12;5:2;25774:90:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;25880:4:0;;25564:328;-1:-1:-1;;;;;;;25564:328:0:o;23370:141::-;5506:5;;-1:-1:-1;;;;;5506:5:0;5492:10;:19;5484:42;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;;;;23454:5;;23437:41;;;-1:-1:-1;;;;;23454:5:0;;;23437:41;;;;;;;;;;;;;;;;;;;;;23489:5;:14;;-1:-1:-1;;;;;;23489:14:0;-1:-1:-1;;;;;23489:14:0;;;;;;;;;;23370:141::o;23097:126::-;5506:5;;-1:-1:-1;;;;;5506:5:0;5492:10;:19;5484:42;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;;;;23172:20;;;;;;23180:4;23172:20;;;-1:-1:-1;;23172:20:0;;;;;;;;;;;;;;;;;;;23180:4;;23186:5;;;;23172:20;;;;;;;;;;;23180:4;;23172:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23172:20:0;;;;;;;;;;;;;;;1:33:-1;99:1;81:16;;;74:27;23172:20:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;23172:20:0;;;;-1:-1:-1;23172:20:0;;-1:-1:-1;;;;;;23172:20:0;23203:12;:4;23210:5;;23203:12;:::i;:::-;;23097:126;;:::o;17768:32::-;17798:2;17768:32;:::o;17623:26::-;;;;:::o;23972:113::-;24057:5;;:20;;;-1:-1:-1;;;24057:20:0;;-1:-1:-1;;;;;24057:20:0;;;;;;;;;24030:7;;24057:5;;;;;:13;;:20;;;;;;;;;;;;;;;:5;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;24057:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24057:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24057:20:0;;23972:113;-1:-1:-1;;23972:113:0:o;24368:137::-;24443:7;24470:27;24481:5;24488:8;24470:10;:27::i;23866:98::-;23945:5;;:11;;;-1:-1:-1;;;23945:11:0;;;;23909:7;;;;-1:-1:-1;;;;;23945:5:0;;;;:9;;:11;;;;;;;;;;;:5;:11;;;5:2:-1;;;;30:1;27;20:12;5:2;23945:11:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23945:11:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23945:11:0;;;;;;;;;-1:-1:-1;23945:11:0;-1:-1:-1;23866:98:0;;:::o;22904:185::-;5506:5;;-1:-1:-1;;;;;5506:5:0;5492:10;:19;5484:42;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;-1:-1:-1;;;5484:42:0;;;;;;;;;;;;;;;23001:34;;;-1:-1:-1;;;;;23001:34:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23046:20:0;;;;;;;;:13;:20;;;;;:35;;-1:-1:-1;;23046:35:0;;;;;;;;;;22904:185::o;20847:1838::-;20971:11;20967:93;;21020:3;-1:-1:-1;;;;;21004:23:0;21013:5;-1:-1:-1;;;;;21004:23:0;-1:-1:-1;;;;;;;;;;;21025:1:0;21004:23;;;;;;;;;;;;;;;;;;21042:7;;20967:93;21072:19;21094:17;21105:5;21094:10;:17::i;:::-;21072:39;;21145:6;21130:11;:21;;21122:52;;;;;-1:-1:-1;;;21122:52:0;;;;;;;;;;;;-1:-1:-1;;;21122:52:0;;;;;;;;;;;;;;;21200:9;-1:-1:-1;;;;;21191:18:0;:5;-1:-1:-1;;;;;21191:18:0;;21187:384;;21226:21;21250:28;21261:5;21268:9;21250:10;:28::i;:::-;21226:52;;-1:-1:-1;;21297:13:0;:25;21293:267;;21436:6;21419:13;:23;;21411:56;;;;;-1:-1:-1;;;21411:56:0;;;;;;;;;;;;-1:-1:-1;;;21411:56:0;;;;;;;;;;;;;;;21486:58;21500:5;21507:9;21518:25;:13;21536:6;21518:25;:17;:25;:::i;:::-;21486:13;:58::i;:::-;21187:384;;21601:6;21583:15;;21680:43;21692:5;21699:23;:11;21601:6;21699:23;:15;:23;:::i;:::-;21680:11;:43::i;:::-;21769:7;:38;;;;21781:26;21796:5;21803:3;21781:14;:26::i;:::-;21780:27;21769:38;21765:745;;;21878:20;:6;17798:2;21878:20;:15;:20;:::i;:::-;21871:27;;21926:6;21936:1;21926:11;:22;;21944:4;21926:22;;;21940:1;21926:22;21913:35;-1:-1:-1;21975:33:0;21987:20;:4;21913:35;21987:20;:8;:20;:::i;:::-;21975:7;;:33;:11;:33;:::i;:::-;22060:11;;21965:43;;-1:-1:-1;22060:21:0;;22076:4;22060:21;:15;:21;:::i;:::-;22046:11;:35;22110:11;;:21;;22126:4;22110:21;:15;:21;:::i;:::-;22096:11;:35;22151:33;;;;;;;;22175:1;;-1:-1:-1;;;;;22151:33:0;;;-1:-1:-1;;;;;;;;;;;22151:33:0;;;;;;;;22243:15;22261:27;22274:5;22281:6;22261:12;:27::i;:::-;22243:45;;22337:57;22349:7;22358:35;22382:10;22358:19;22369:7;22358:10;:19::i;:::-;:23;:35;:23;:35;:::i;22337:57::-;22414:28;;;;;;;;-1:-1:-1;;;;;22414:28:0;;;;;;;;;;;;;22478:7;-1:-1:-1;;;;;22462:36:0;22471:5;-1:-1:-1;;;;;22462:36:0;-1:-1:-1;;;;;;;;;;;22487:10:0;22462:36;;;;;;;;;;;;;;;;;;21765:745;;22566:6;22529:33;22554:7;22529:20;:4;22538:10;22529:20;:8;:20;:::i;:33::-;:43;22522:51;;;;22586:46;22598:3;22603:28;22623:7;22603:15;22614:3;22603:10;:15::i;22586:46::-;22664:3;-1:-1:-1;;;;;22648:29:0;22657:5;-1:-1:-1;;;;;22648:29:0;-1:-1:-1;;;;;;;;;;;22669:7:0;22648:29;;;;;;;;;;;;;;;;;;20847:1838;;;;;;;;;;:::o;19428:188::-;19550:39;;;-1:-1:-1;;;19550:39:0;;;;;;;;-1:-1:-1;;;;;;19550:39:0;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;19550:39:0;;;;;;;19540:50;;;;;19520:88;;19600:6;19520:13;19527:5;19520:6;:13::i;:::-;:19;:88;;:19;:88;:::i;19804:173::-;17697:20;;;-1:-1:-1;;;17697:20:0;;;;;;;;;;;;19878:51;;19919:8;19878:13;19885:5;19878:6;:13::i;:51::-;19940:5;;:29;;;-1:-1:-1;;;19940:29:0;;-1:-1:-1;;;;;19940:29:0;;;;;;;;;;;;;;;:5;;;;;:12;;:29;;;;;:5;;:29;;;;;;;:5;;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;19940:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19940:29:0;;;;19804:173;;:::o;4792:114::-;4850:7;4879:1;4874;:6;;4866:15;;;;;;-1:-1:-1;4895:5:0;;;4792:114::o;18883:133::-;17697:20;;;-1:-1:-1;;;17697:20:0;;;;;;;;;;;;18941:7;;18976:31;;:13;18983:5;18976:6;:13::i;:::-;:18;:31;:18;:31;:::i;19222:174::-;19290:7;19325:62;19380:4;19354:31;;;;;;-1:-1:-1;;;19354:31:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19354:31:0;;;19344:42;;;;;;19325:13;19332:5;19325:6;:13::i;19024:190::-;19100:7;19135:70;19194:8;19164:39;;;;;;-1:-1:-1;;;19164:39:0;;;;;;-1:-1:-1;;;;;19164:39:0;-1:-1:-1;;;;;19164:39:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19164:39:0;;;19154:50;;;;;;19135:13;19142:5;19135:6;:13::i;20018:145::-;-1:-1:-1;;;;;20117:20:0;;20093:4;20117:20;;;:13;:20;;;;;;;;;:38;;-1:-1:-1;;;;;;;20139:16:0;;;;;:11;:16;;;;;;;;;20018:145;-1:-1:-1;20018:145:0:o;4570:218::-;4633:7;4659:6;4651:30;;;;;-1:-1:-1;;;4651:30:0;;;;;;;;;;;;-1:-1:-1;;;4651:30:0;;;;;;;;;;;;;;;4690:9;4706:1;4702;:5;;;;;;4690:17;;4724:1;4720;:5;;;;;;:10;4716:48;;4753:1;4749:5;4781:1;4570:218;-1:-1:-1;;;4570:218:0:o;4912:134::-;4970:7;4998:5;;;5018:6;;;;5010:15;;;;;20401:374;20472:15;20500:17;20520:29;20542:6;20520:21;:29::i;:::-;20500:49;;20560:13;20576:24;20583:5;20590:9;20576:6;:24::i;:::-;20560:40;;20611:38;20621:5;20628:9;20639:5;20647:1;20639:9;20611;:38::i;:::-;20700:5;;20749:12;;;-1:-1:-1;;;20749:12:0;;;;-1:-1:-1;;;;;20700:5:0;;;;:15;;20716:50;;20724:5;;20731;;20738:9;;20700:5;;;;20749:10;;:12;;;;;;;;;;;;;;20700:5;20749:12;;;5:2:-1;;;;30:1;27;20:12;5:2;20749:12:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20749:12:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20749:12:0;:16;20716:7;:50::i;:::-;20700:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20700:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20700:67:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20700:67:0;;20401:374;-1:-1:-1;;;;;20401:374:0:o;18771:104::-;-1:-1:-1;;;;;18856:10:0;;18771:104::o;7252:569::-;7368:17;7400:21;7413:7;7400:12;:21::i;:::-;7368:54;;7438:37;7468:5;7438:21;:37::i;:::-;7433:86;;7492:15;7499:7;7492:6;:15::i;:::-;7624:124;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7624:124:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;7590:169:0;;;;7572:12;;-1:-1:-1;;;;;7590:19:0;;;7624:124;7590:169;;;25:18:-1;7590:169:0;;25:18:-1;36:153;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;;;7590:169:0;;;;;;;;;;;;;;;;;;;;;;;;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;;7571:188:0;;;7780:7;7772:41;;;;;-1:-1:-1;;;7772:41:0;;;;;;;;;;;;-1:-1:-1;;;7772:41:0;;;;;;;;;;;;;;7829:610;7922:7;7942:17;7974:21;7987:7;7974:12;:21::i;:::-;7942:54;;8012:37;8042:5;8012:21;:37::i;:::-;8007:88;;-1:-1:-1;8081:1:0;;-1:-1:-1;8066:17:0;;8007:88;8223:98;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8223:98:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8183:149:0;;;;8148:12;;8162:17;;-1:-1:-1;;;;;8183:25:0;;;8223:98;;8183:149;;;;;;25:18:-1;36:153;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;;;8183:149:0;;;;;;;;;;;;;;;;;;;;;;;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;;8147:185:0;;;;8353:7;8345:41;;;;;-1:-1:-1;;;8345:41:0;;;;;;;;;;;;-1:-1:-1;;;8345:41:0;;;;;;;;;;;;;;;8415:4;8404:27;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8404:27:0;;7829:610;-1:-1:-1;;;;;;7829:610:0:o;26096:270::-;26160:7;-1:-1:-1;;26231:5:0;26249:83;26292:9;;;;;;26275:2;26267:10;;;26249:83;;-1:-1:-1;26351:7:0;26096:270;-1:-1:-1;;26096:270:0:o;19624:172::-;19708:80;19764:4;19738:31;;;;;;-1:-1:-1;;;19738:31:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19738:31:0;;;19728:42;;;;;;19780:6;19772:15;;19708:13;19715:5;19708:6;:13::i;20171:222::-;20317:31;;;-1:-1:-1;;;;;;20317:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20317:31:0;;;;;;;20307:42;;;;;20264:7;;20383:1;20376:8;;20307:42;20376:8;20368:17;;;;;;20171:222;-1:-1:-1;;;;;;20171:222:0:o;6559:439::-;6620:7;6775:4;6770:10;;6815:4;6847:7;6891:30;;;;;;;;:::i;:::-;21:26:-1;;;-1:-1;;21:26;;;7:41;;87:2;69:12;;;65:26;61:2;54:38;;;6881:41:0;;41:4:-1;30:16;;;6881:41:0;-1:-1:-1;;;;;;6727:218:0;;;;;;;;;;;;;-1:-1:-1;;;;;;6727:218:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6727:218:0;;;;;;;6695:269;;;;;;6559:439;-1:-1:-1;;6559:439:0:o;6189:323::-;6247:4;6354:18;;6391:22;;;;;:113;;-1:-1:-1;6437:66:0;6417:87;;;6384:120;-1:-1:-1;;6189:323:0:o;7006:238::-;7058:21;7082:30;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;7082:30:0;7058:54;;7226:7;7215:8;7209:15;7202:4;7192:8;7188:19;7185:1;7177:57;7173:62;7171:66;;:::o;17097:8967::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17097:8967:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17097:8967:0;;;-1:-1:-1;17097:8967:0;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://04676f8be5effbbe9148a3c8094afad0f5922a2924ef4887bd5729c752cdd644
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.