ETH Price: $2,356.17 (+0.64%)

Token

Heros Token (HEROS)
 

Overview

Max Total Supply

100,000,000,000,000,000 HEROS

Holders

396 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,089,482,953,263.733648617 HEROS

Value
$0.00
0x5a82513ae6483750178ac032c4b994cf31712f1e
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

HEROS TOKEN LLC is a philanthropic organization dedicated to resolving global concerns through charitable giving. Exclusive NFTs, accessible instructional materials, and an upcoming.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
HerosV2

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 5 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-10
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.6.12;

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract HerosV2 is Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => uint256) public _lastBuyTime;
    mapping (address => uint256) public _firstBuyTime;
    mapping (address => uint256) public _accountedRewardsPeriods;
    mapping (address => uint256) public _rewardsBasis;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;

    address[] private _excluded;

    address payable public dev;
    address payable public charity;
    address payable public marketing;
    address public rewards;
    address public _burnPool = 0x000000000000000000000000000000000000dEaD;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 100 * 10**15 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Heros Token";
    string private _symbol = "HEROS";
    uint8 private _decimals = 9;

    uint256 public _taxFee = 1;
    uint256 public _liquidityFee = 1;
    uint256 public _marketingBuyFee = 3;
    uint256 public _marketingSellFee = 4;
    uint256 public _developmentBuyFee = 3;
    uint256 public _developmentSellFee = 4;
    uint256 public _charityFee = 2;
    uint256 public _dayTraderMultiplicator = 20; // div by 10
    uint256 public _rewardRate = 1200; // 12%
    uint256 public _rewardPeriod = 7776000; // in unix seconds
    bool public transfersEnabled; //once enabled, transfers cannot be disabled

    uint256 public _pendingLiquidityFees;
    uint256 public _pendingCharityFees;
    uint256 public _pendingMarketingFees;
    uint256 public _pendingDevelopmentFees;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public _maxWalletHolding = 3 * 10**15 * 10**9;
    uint256 private numTokensSellToAddToLiquidity = 5 * 10**12 * 10**9;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

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

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor (address payable _devWallet, address payable _marketingWallet, address payable _charityWallet, address _rewardsWallet) public {
      dev = _devWallet;
      marketing = _marketingWallet;
      charity = _charityWallet;
      rewards = _rewardsWallet;

      IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
      uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
      uniswapV2Router = _uniswapV2Router;

      _isExcludedFromFee[owner()] = true;
      _isExcludedFromFee[address(this)] = true;
      _isExcludedFromFee[_burnPool] = true;
      _isExcludedFromFee[_rewardsWallet] = true;

      _isExcluded[_burnPool] = true;
      _excluded.push(_burnPool);

      _isExcluded[uniswapV2Pair] = true;
      _excluded.push(uniswapV2Pair);

      _isExcluded[address(this)] = true;
      _excluded.push(address(this));

      uint256 currentRate =  _getRate();
      uint256 burnPoolAllocation = _tTotal.div(10);
      _rOwned[_burnPool] = burnPoolAllocation.mul(currentRate);
      _tOwned[_burnPool] = burnPoolAllocation;

      currentRate = _getRate();
      uint256 rewardsAllocation = _tTotal.mul(30).div(100);
      _rOwned[_rewardsWallet] = rewardsAllocation.mul(currentRate);

      _rOwned[_msgSender()] = _rTotal - _rOwned[_rewardsWallet] - _rOwned[_burnPool];

      emit Transfer(address(0), _msgSender(), _tTotal);
      emit Transfer(_msgSender(), _rewardsWallet, rewardsAllocation);
      emit Transfer(_msgSender(), _burnPool, burnPoolAllocation);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view returns (uint256) {
        (uint256 totalBalance,) = pendingRewards(account);
        if (_isExcluded[account]) totalBalance = totalBalance + _tOwned[account];
        else totalBalance = totalBalance + tokenFromReflection(_rOwned[account]);
        return totalBalance;
    }

    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function manualSwapAndLiquify() public onlyOwner() {
        uint256 contractTokenBalance = balanceOf(address(this));
        swapAndLiquify(contractTokenBalance);
    }

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setTax(uint256 _taxType, uint _taxSize) external onlyOwner() {
      if (_taxType == 1) {
        _taxFee = _taxSize;
      }
      else if (_taxType == 2) {
        _liquidityFee = _taxSize;
      }
      else if (_taxType == 3) {
        _developmentBuyFee = _taxSize;
      }
      else if (_taxType == 4) {
        _developmentSellFee = _taxSize;
      }
      else if (_taxType == 5) {
        _charityFee = _taxSize;
      }
      else if (_taxType == 6) {
        _marketingBuyFee = _taxSize;
      }
      else if (_taxType == 7) {
        _marketingSellFee = _taxSize;
      }
      else if (_taxType == 8) {
        _dayTraderMultiplicator = _taxSize;
      }
      else if (_taxType == 9) {
        _rewardRate = _taxSize;
      }
      else if (_taxType == 10) {
        _rewardPeriod = _taxSize;
      }
    }

    function setSwapAndLiquifyEnabled(bool _enabled, uint256 _numTokensMin) public onlyOwner() {
        swapAndLiquifyEnabled = _enabled;
        numTokensSellToAddToLiquidity = _numTokensMin;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function enableTransfers() public onlyOwner() {
        transfersEnabled = true;
    }

    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function deliverReflections(uint256 tAmount) external {
        require(!_isExcluded[msg.sender], "Only holders that are not excluded from rewards can call this");
        uint256 currentRate =  _getRate();
        uint256 rAmount = tAmount.mul(currentRate);
        _rOwned[msg.sender] = _rOwned[msg.sender].sub(rAmount);
        _reflectFee(rAmount, tAmount);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeOperations(uint256 tAmount, uint256 feeType, bool isBuy) private returns (uint256) {
        uint256 currentRate =  _getRate();
        uint256 tTransferAmount = tAmount;
        uint256 taxMultiplicator = 10;

        if (feeType == 2) taxMultiplicator = _dayTraderMultiplicator;

        uint256 tFee = calculateFee(tAmount, _taxFee, taxMultiplicator);
        uint256 tLiquidity = calculateFee(tAmount, _liquidityFee, taxMultiplicator);
        uint256 tMarketing = calculateFee(tAmount, isBuy ? _marketingBuyFee : _marketingSellFee, taxMultiplicator);
        uint256 tCharity = calculateFee(tAmount, _charityFee, taxMultiplicator);
        uint256 tDevelopment = calculateFee(tAmount, isBuy ? _developmentBuyFee : _developmentSellFee, taxMultiplicator);

        _pendingLiquidityFees = _pendingLiquidityFees.add(tLiquidity);
        _pendingCharityFees = _pendingCharityFees.add(tCharity);
        _pendingMarketingFees = _pendingMarketingFees.add(tMarketing);
        _pendingDevelopmentFees = _pendingDevelopmentFees.add(tDevelopment);

        tTransferAmount = tAmount - tFee - tLiquidity;
        tTransferAmount = tTransferAmount - tMarketing - tCharity - tDevelopment;
        uint256 tTaxes = tLiquidity.add(tMarketing).add(tCharity).add(tDevelopment);

        _reflectFee(tFee.mul(currentRate), tFee);

        _rOwned[address(this)] = _rOwned[address(this)].add(tTaxes.mul(currentRate));
        _tOwned[address(this)] = _tOwned[address(this)].add(tTaxes);
        return tTransferAmount;
    }

    function calculateFee(uint256 _amount, uint256 _taxRate, uint256 _taxMultiplicator) private pure returns (uint256) {
        return _amount.mul(_taxRate).div(10**2).mul(_taxMultiplicator).div(10);
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function pendingRewards(address account) public view returns (uint256, uint256) {
        if (!_isExcluded[account]) {
          uint256 rewardTimespan = block.timestamp.sub(_firstBuyTime[account]);
          if (_firstBuyTime[account] == 0) rewardTimespan = 0;
          uint256 rewardPeriods = rewardTimespan.div(_rewardPeriod);
          if (rewardPeriods >= _accountedRewardsPeriods[account]) rewardPeriods = rewardPeriods - _accountedRewardsPeriods[account];
          else rewardPeriods = 0;
          uint256 _pendingRewards = rewardPeriods.mul(_rewardRate).mul(_rewardsBasis[account]).div(10**4);
          return (_pendingRewards, rewardPeriods);
        }
        return (0, 0);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer( address from, address to, uint256 amount ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;

        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            swapAndLiquify(contractTokenBalance);
        }

        _lastBuyTime[to] = block.timestamp;
        if (_firstBuyTime[to] == 0) _firstBuyTime[to] = block.timestamp;

        bool distributedFrom = distributeRewards(from);
        bool distributedTo = distributeRewards(to);

        //indicates if fee should be deducted from transfer
        uint256 feeType = 1;
        bool isBuy = from == uniswapV2Pair;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            feeType = 0;
        }
        else {
          require(transfersEnabled, "Transfers are not enabled now");
          if (to != uniswapV2Pair && from != uniswapV2Pair) {
            feeType = 0;
          }
          if (to == uniswapV2Pair || (to != uniswapV2Pair && from != uniswapV2Pair)) {
            if (_lastBuyTime[from] != 0 && (_lastBuyTime[from] + (24 hours) > block.timestamp) ) {
              feeType = 2;
            }
          }
        }

        _tokenTransfer(from, to, amount, feeType, isBuy);

        syncRewards(from, distributedFrom);
        syncRewards(to, distributedTo);

        if (!_isExcludedFromFee[to] && (to != uniswapV2Pair)) require(balanceOf(to) < _maxWalletHolding, "Max Wallet holding limit exceeded");
    }

    function distributeRewards(address account) private returns (bool) {
        (uint256 _rewards, uint256 _periods) = pendingRewards(account);
        if (_rewards > 0) {
          _accountedRewardsPeriods[account] = _accountedRewardsPeriods[account] + _periods;
          uint256 currentRate =  _getRate();
          uint256 rRewards = _rewards.mul(currentRate);
          if (_rOwned[rewards] > rRewards) {
            _rOwned[account] = _rOwned[account].add(rRewards);
            _rOwned[rewards] = _rOwned[rewards].sub(rRewards);
          }
          return true;
        }
        return false;
    }

    function syncRewards(address account, bool rewardsDistributed) private {
        uint256 accountBalance = balanceOf(account);
        if (_rewardsBasis[account] == 0 || accountBalance < _rewardsBasis[account] || rewardsDistributed ) _rewardsBasis[account] = accountBalance;
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 liquidityPart = 0;
        if (_pendingLiquidityFees < contractTokenBalance) liquidityPart = _pendingLiquidityFees;
        uint256 distributionPart = contractTokenBalance.sub(liquidityPart);
        uint256 totalPendingFees = _pendingLiquidityFees + _pendingCharityFees + _pendingMarketingFees + _pendingDevelopmentFees;
        uint256 liquidityHalfPart = liquidityPart.div(2);
        uint256 liquidityHalfTokenPart = liquidityPart.sub(liquidityHalfPart);

        //now swapping half of the liquidity part + all of the distribution part into ETH
        uint256 totalETHSwap = liquidityHalfPart.add(distributionPart);

        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(totalETHSwap);

        uint256 newBalance = address(this).balance.sub(initialBalance);
        uint256 liquidityBalance = liquidityHalfPart.mul(newBalance).div(totalETHSwap);

        // add liquidity to uniswap
        if (liquidityHalfTokenPart > 0 && liquidityBalance > 0) addLiquidity(liquidityHalfTokenPart, liquidityBalance);
        emit SwapAndLiquify(liquidityHalfPart, liquidityBalance, liquidityHalfPart);

        newBalance = address(this).balance;

        uint256 payMarketing = _pendingMarketingFees.mul(newBalance).div(totalPendingFees);
        uint256 payDevelopment = _pendingDevelopmentFees.mul(newBalance).div(totalPendingFees);

        if (payMarketing <= address(this).balance) marketing.call{ value: payMarketing }("");
        if (payDevelopment <= address(this).balance) dev.call{ value: payDevelopment }("");
        if (address(this).balance > 0) charity.call{ value: address(this).balance }("");

        _pendingLiquidityFees = 0;
        _pendingCharityFees = 0;
        _pendingMarketingFees = 0;
        _pendingDevelopmentFees = 0;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount, uint256 feeType, bool isBuy) private {
        uint256 currentRate =  _getRate();
        uint256 tTransferAmount = amount;
        if (feeType != 0) {
          tTransferAmount = _takeOperations(amount, feeType, isBuy);
        }
        uint256 rTransferAmount = tTransferAmount.mul(currentRate);
        uint256 rAmount = amount.mul(currentRate);
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, rAmount, amount, tTransferAmount, rTransferAmount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, rAmount, amount, tTransferAmount, rTransferAmount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, rAmount, amount, tTransferAmount, rTransferAmount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, rAmount, amount, tTransferAmount, rTransferAmount);
        } else {
            _transferStandard(sender, recipient, rAmount, amount, tTransferAmount, rTransferAmount);
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferStandard(address sender, address recipient, uint256 rAmount, uint256 tAmount, uint256 tTransferAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 rAmount, uint256 tAmount, uint256 tTransferAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 rAmount, uint256 tAmount, uint256 tTransferAmount, uint256 rTransferAmount) private {
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 rAmount, uint256 tAmount, uint256 tTransferAmount, uint256 rTransferAmount) private {
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_devWallet","type":"address"},{"internalType":"address payable","name":"_marketingWallet","type":"address"},{"internalType":"address payable","name":"_charityWallet","type":"address"},{"internalType":"address","name":"_rewardsWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_accountedRewardsPeriods","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dayTraderMultiplicator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_firstBuyTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastBuyTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingCharityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewardsBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charity","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliverReflections","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dev","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTransfers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewards","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_numTokensMin","type":"uint256"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxType","type":"uint256"},{"internalType":"uint256","name":"_taxSize","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transfersEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600f80546001600160a01b03191661dead1790556a52b7d2dcc80cd2e40000006010556a34f8e1f3adab5d4bffffff1960115560e0604052600b60a08190526a2432b937b9902a37b5b2b760a91b60c090815262000061916013919062000aad565b50604080518082019091526005808252644845524f5360d81b6020909201918252620000909160149162000aad565b506015805460ff19166009179055600160168190556017556003601881905560046019819055601a91909155601b556002601c556014601d556104b0601e556276a700601f556025805460ff60a81b1916600160a81b1790556a027b46536c66c8e300000060265569010f0cf064dd592000006027553480156200011357600080fd5b5060405162003c5a38038062003c5a833981810160405260808110156200013957600080fd5b508051602082015160408301516060909301519192909160006200015c620006cf565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b038087166001600160a01b031992831617909255600d8054868416908316179055600c8054858416908316179055600e8054928416929091169190911790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b1580156200023f57600080fd5b505afa15801562000254573d6000803e3d6000fd5b505050506040513d60208110156200026b57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015620002bc57600080fd5b505afa158015620002d1573d6000803e3d6000fd5b505050506040513d6020811015620002e857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200033b57600080fd5b505af115801562000350573d6000803e3d6000fd5b505050506040513d60208110156200036757600080fd5b5051602580546001600160a01b0319166001600160a01b03909216919091179055606081901b6001600160601b031916608052600160086000620003aa620006d3565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553080825260088552838220805487166001908117909155600f805485168452858420805489168317905589851684528584208054891683179055805485168452600990965284832080548816821790559454600a805480880182557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890810180546001600160a01b0319908116948816949094179055602580548716865287862080548b168a179055548254808a018455820180548516919097161790955582845294832080549097168617909655835494850184559281529201805490931617909155620004c6620006e2565b90506000620004e7600a6010546200071560201b620019e41790919060201c565b90506200050382826200076860201b62001a2a1790919060201c565b600f80546001600160a01b039081166000908152600160209081526040808320959095559254909116815260029091522081905562000541620006e2565b915060006200057c606462000568601e6010546200076860201b62001a2a1790919060201c565b6200071560201b620019e41790919060201c565b90506200059883826200076860201b62001a2a1790919060201c565b6001600160a01b038087166000818152600160208190526040808320869055600f54909416825292812054918152601154939093030391620005d9620006cf565b6001600160a01b03168152602081019190915260400160002055620005fd620006cf565b6001600160a01b031660006001600160a01b031660008051602062003c3a8339815191526010546040518082815260200191505060405180910390a36001600160a01b0385166200064d620006cf565b6001600160a01b031660008051602062003c3a833981519152836040518082815260200191505060405180910390a3600f546001600160a01b031662000692620006cf565b6001600160a01b031660008051602062003c3a833981519152846040518082815260200191505060405180910390a3505050505050505062000b49565b3390565b6000546001600160a01b031690565b60008080620006f0620007c6565b915091506200070e81836200071560201b620019e41790919060201c565b9250505090565b60006200075f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200095f60201b60201c565b90505b92915050565b600082620007795750600062000762565b828202828482816200078757fe5b04146200075f5760405162461bcd60e51b815260040180806020018281038252602181526020018062003c196021913960400191505060405180910390fd5b6011546010546000918291825b600a548110156200091c578260016000600a8481548110620007f157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200085857508160026000600a84815481106200083157fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200087157601154601054945094505050506200095b565b620008c060016000600a84815481106200088757fe5b60009182526020808320909101546001600160a01b03168352828101939093526040909101902054859162001a8362000a06821b17901c565b92506200091160026000600a8481548110620008d857fe5b60009182526020808320909101546001600160a01b03168352828101939093526040909101902054849162001a8362000a06821b17901c565b9150600101620007d3565b506200093b6010546011546200071560201b620019e41790919060201c565b82101562000955576011546010549350935050506200095b565b90925090505b9091565b60008183620009ef5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620009b357818101518382015260200162000999565b50505050905090810190601f168015620009e15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620009fc57fe5b0495945050505050565b60006200075f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000a5060201b60201c565b6000818484111562000aa55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620009b357818101518382015260200162000999565b505050900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000af057805160ff191683800117855562000b20565b8280016001018555821562000b20579182015b8281111562000b2057825182559160200191906001019062000b03565b5062000b2e92915062000b32565b5090565b5b8082111562000b2e576000815560010162000b33565b60805160601c61309962000b8060003980610b99528061286e5280612926528061294d5280612a3b5280612a6252506130996000f3fe60806040526004361061027f5760003560e01c806306fdde031461028b578063095ea7b314610315578063107a4d621461036257806313114a9d146103895780631694505e1461039e57806318160ddd146103cf57806323b872dd146103e4578063243299ba1461042757806328d2bc911461043c57806329bbb7bc146104515780632d3e474a146104845780632d83811914610499578063313ce567146104c35780633176dae2146104ee57806331d7a262146105035780633685d4191461054f57806339509351146105845780633b124fe7146105bd57806340f8007a146105d2578063437823ec146105e757806348df0dec1461061a57806349a734f01461064d57806349bd5a5e146106775780634a74bb021461068c57806352390c02146106a15780635342acb4146106d4578063667f65261461070757806368fd25cd1461073757806369240b861461074c5780636bc87c3a146107615780636f60efbc1461077657806370a08231146107a8578063715018a6146107db578063733b864f146107f0578063866435c51461080557806388f820201461081a5780638b5bdeb31461084d5780638da5cb5b1461086257806391cca3db14610877578063934aa0231461088c57806395d89b41146108a15780639ec5a894146108b6578063a457c2d7146108cb578063a639c05c14610904578063a87f9cec14610937578063a9059cbb1461096a578063a93a0fd0146109a3578063af35c6c7146109b8578063bef97c87146109cd578063c6494e7a146109e2578063dd62ed3e146109f7578063e3624bba14610a32578063ea2f0b3714610a47578063f1f75a1314610a7a578063f2fde38b14610a8f578063f499133514610ac257610286565b3661028657005b600080fd5b34801561029757600080fd5b506102a0610ad7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102da5781810151838201526020016102c2565b50505050905090810190601f1680156103075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032157600080fd5b5061034e6004803603604081101561033857600080fd5b506001600160a01b038135169060200135610b6d565b604080519115158252519081900360200190f35b34801561036e57600080fd5b50610377610b8b565b60408051918252519081900360200190f35b34801561039557600080fd5b50610377610b91565b3480156103aa57600080fd5b506103b3610b97565b604080516001600160a01b039092168252519081900360200190f35b3480156103db57600080fd5b50610377610bbb565b3480156103f057600080fd5b5061034e6004803603606081101561040757600080fd5b506001600160a01b03813581169160208101359091169060400135610bc1565b34801561043357600080fd5b50610377610c48565b34801561044857600080fd5b506103b3610c4e565b34801561045d57600080fd5b506103776004803603602081101561047457600080fd5b50356001600160a01b0316610c5d565b34801561049057600080fd5b506103b3610c6f565b3480156104a557600080fd5b50610377600480360360208110156104bc57600080fd5b5035610c7e565b3480156104cf57600080fd5b506104d8610ce0565b6040805160ff9092168252519081900360200190f35b3480156104fa57600080fd5b50610377610ce9565b34801561050f57600080fd5b506105366004803603602081101561052657600080fd5b50356001600160a01b0316610cef565b6040805192835260208301919091528051918290030190f35b34801561055b57600080fd5b506105826004803603602081101561057257600080fd5b50356001600160a01b0316610e0f565b005b34801561059057600080fd5b5061034e600480360360408110156105a757600080fd5b506001600160a01b038135169060200135610fca565b3480156105c957600080fd5b50610377611018565b3480156105de57600080fd5b5061037761101e565b3480156105f357600080fd5b506105826004803603602081101561060a57600080fd5b50356001600160a01b0316611024565b34801561062657600080fd5b506103776004803603602081101561063d57600080fd5b50356001600160a01b03166110a0565b34801561065957600080fd5b506105826004803603602081101561067057600080fd5b50356110b2565b34801561068357600080fd5b506103b3611155565b34801561069857600080fd5b5061034e611164565b3480156106ad57600080fd5b50610582600480360360208110156106c457600080fd5b50356001600160a01b0316611174565b3480156106e057600080fd5b5061034e600480360360208110156106f757600080fd5b50356001600160a01b03166112f8565b34801561071357600080fd5b506105826004803603604081101561072a57600080fd5b5080359060200135611316565b34801561074357600080fd5b50610377611428565b34801561075857600080fd5b5061037761142e565b34801561076d57600080fd5b50610377611434565b34801561078257600080fd5b506105826004803603604081101561079957600080fd5b5080351515906020013561143a565b3480156107b457600080fd5b50610377600480360360208110156107cb57600080fd5b50356001600160a01b03166114eb565b3480156107e757600080fd5b50610582611564565b3480156107fc57600080fd5b506105826115f4565b34801561081157600080fd5b50610377611665565b34801561082657600080fd5b5061034e6004803603602081101561083d57600080fd5b50356001600160a01b031661166b565b34801561085957600080fd5b50610377611689565b34801561086e57600080fd5b506103b361168f565b34801561088357600080fd5b506103b361169e565b34801561089857600080fd5b506103b36116ad565b3480156108ad57600080fd5b506102a06116bc565b3480156108c257600080fd5b506103b361171d565b3480156108d757600080fd5b5061034e600480360360408110156108ee57600080fd5b506001600160a01b03813516906020013561172c565b34801561091057600080fd5b506103776004803603602081101561092757600080fd5b50356001600160a01b0316611794565b34801561094357600080fd5b506103776004803603602081101561095a57600080fd5b50356001600160a01b03166117a6565b34801561097657600080fd5b5061034e6004803603604081101561098d57600080fd5b506001600160a01b0381351690602001356117b8565b3480156109af57600080fd5b506103776117cc565b3480156109c457600080fd5b506105826117d2565b3480156109d957600080fd5b5061034e611839565b3480156109ee57600080fd5b50610377611842565b348015610a0357600080fd5b5061037760048036036040811015610a1a57600080fd5b506001600160a01b0381358116916020013516611848565b348015610a3e57600080fd5b50610377611873565b348015610a5357600080fd5b5061058260048036036020811015610a6a57600080fd5b50356001600160a01b0316611879565b348015610a8657600080fd5b506103776118f2565b348015610a9b57600080fd5b5061058260048036036020811015610ab257600080fd5b50356001600160a01b03166118f8565b348015610ace57600080fd5b506103776119de565b60138054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b635780601f10610b3857610100808354040283529160200191610b63565b820191906000526020600020905b815481529060010190602001808311610b4657829003601f168201915b5050505050905090565b6000610b81610b7a611ac5565b8484611ac9565b5060015b92915050565b601a5481565b60125490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60105490565b6000610bce848484611bb5565b610c3e84610bda611ac5565b610c3985604051806060016040528060288152602001612f44602891396001600160a01b038a16600090815260036020526040812090610c18611ac5565b6001600160a01b031681526020810191909152604001600020549190611f33565b611ac9565b5060019392505050565b601d5481565b600f546001600160a01b031681565b60076020526000908152604090205481565b600d546001600160a01b031681565b6000601154821115610cc15760405162461bcd60e51b815260040180806020018281038252602a815260200180612e74602a913960400191505060405180910390fd5b6000610ccb611fca565b9050610cd783826119e4565b9150505b919050565b60155460ff1690565b60245481565b6001600160a01b038116600090815260096020526040812054819060ff16610e03576001600160a01b038316600090815260056020526040812054610d35904290611a83565b6001600160a01b038516600090815260056020526040902054909150610d59575060005b6000610d70601f54836119e490919063ffffffff16565b6001600160a01b0386166000908152600660205260409020549091508110610db2576001600160a01b0385166000908152600660205260409020549003610db6565b5060005b6001600160a01b038516600090815260076020526040812054601e54610df69161271091610df09190610dea908790611a2a565b90611a2a565b906119e4565b9450909250610e0a915050565b5060009050805b915091565b610e17611ac5565b6000546001600160a01b03908116911614610e67576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff16610ece576040805162461bcd60e51b81526020600482015260176024820152761058d8dbdd5b9d081a5cc81b9bdd08195e18db1d591959604a1b604482015290519081900360640190fd5b60005b600a54811015610fc657816001600160a01b0316600a8281548110610ef257fe5b6000918252602090912001546001600160a01b03161415610fbe57600a80546000198101908110610f1f57fe5b600091825260209091200154600a80546001600160a01b039092169183908110610f4557fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600990925220805460ff19169055600a805480610f9757fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610fc6565b600101610ed1565b5050565b6000610b81610fd7611ac5565b84610c398560036000610fe8611ac5565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611fed565b60165481565b601c5481565b61102c611ac5565b6000546001600160a01b0390811691161461107c576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b60046020526000908152604090205481565b3360009081526009602052604090205460ff16156111015760405162461bcd60e51b815260040180806020018281038252603d815260200180612ee6603d913960400191505060405180910390fd5b600061110b611fca565b905060006111198383611a2a565b336000908152600160205260409020549091506111369082611a83565b336000908152600160205260409020556111508184612045565b505050565b6025546001600160a01b031681565b602554600160a81b900460ff1681565b61117c611ac5565b6000546001600160a01b039081169116146111cc576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff1615611238576040805162461bcd60e51b815260206004820152601b60248201527a1058d8dbdd5b9d081a5cc8185b1c9958591e48195e18db1d591959602a1b604482015290519081900360640190fd5b6001600160a01b03811660009081526001602052604090205415611292576001600160a01b03811660009081526001602052604090205461127890610c7e565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b031660009081526008602052604090205460ff1690565b61131e611ac5565b6000546001600160a01b0390811691161461136e576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b8160011415611381576016819055610fc6565b8160021415611394576017819055610fc6565b81600314156113a757601a819055610fc6565b81600414156113ba57601b819055610fc6565b81600514156113cd57601c819055610fc6565b81600614156113e0576018819055610fc6565b81600714156113f3576019819055610fc6565b816008141561140657601d819055610fc6565b816009141561141957601e819055610fc6565b81600a1415610fc657601f5550565b601e5481565b60235481565b60175481565b611442611ac5565b6000546001600160a01b03908116911614611492576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b60258054831515600160a81b810260ff60a81b1990921691909117909155602782905560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a15050565b6000806114f783610cef565b506001600160a01b03841660009081526009602052604090205490915060ff161561153b576001600160a01b03831660009081526002602052604090205401610b85565b6001600160a01b03831660009081526001602052604090205461155d90610c7e565b0192915050565b61156c611ac5565b6000546001600160a01b039081169116146115bc576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020612f8c833981519152908390a3600080546001600160a01b0319169055565b6115fc611ac5565b6000546001600160a01b0390811691161461164c576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6000611657306114eb565b905061166281612069565b50565b60215481565b6001600160a01b031660009081526009602052604090205460ff1690565b60225481565b6000546001600160a01b031690565b600b546001600160a01b031681565b600c546001600160a01b031681565b60148054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b635780601f10610b3857610100808354040283529160200191610b63565b600e546001600160a01b031681565b6000610b81611739611ac5565b84610c398560405180606001604052806025815260200161301e6025913960036000611763611ac5565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611f33565b60056020526000908152604090205481565b60066020526000908152604090205481565b6000610b816117c5611ac5565b8484611bb5565b60185481565b6117da611ac5565b6000546001600160a01b0390811691161461182a576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6020805460ff19166001179055565b60205460ff1681565b601f5481565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b60195481565b611881611ac5565b6000546001600160a01b039081169116146118d1576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600860205260409020805460ff19169055565b601b5481565b611900611ac5565b6000546001600160a01b03908116911614611950576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6001600160a01b0381166119955760405162461bcd60e51b8152600401808060200182810382526026815260200180612e9e6026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020612f8c83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60265481565b6000611a2383836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b8152506122ee565b9392505050565b600082611a3957506000610b85565b82820282848281611a4657fe5b0414611a235760405162461bcd60e51b8152600401808060200182810382526021815260200180612f236021913960400191505060405180910390fd5b6000611a2383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f33565b3390565b6001600160a01b038316611b0e5760405162461bcd60e51b8152600401808060200182810382526024815260200180612ffa6024913960400191505060405180910390fd5b6001600160a01b038216611b535760405162461bcd60e51b8152600401808060200182810382526022815260200180612ec46022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611bfa5760405162461bcd60e51b8152600401808060200182810382526025815260200180612fd56025913960400191505060405180910390fd5b60008111611c395760405162461bcd60e51b8152600401808060200182810382526029815260200180612fac6029913960400191505060405180910390fd5b6000611c44306114eb565b60275490915081108015908190611c655750602554600160a01b900460ff16155b8015611c7f57506025546001600160a01b03868116911614155b8015611c945750602554600160a81b900460ff165b15611ca257611ca282612069565b6001600160a01b03841660009081526004602090815260408083204290556005909152902054611ce8576001600160a01b03841660009081526005602052604090204290555b6000611cf386612353565b90506000611d0086612353565b6025546001600160a01b03898116600081815260086020526040902054939450600193919092169091149060ff1680611d5157506001600160a01b03881660009081526008602052604090205460ff165b15611d5f5760009150611e83565b60205460ff16611db6576040805162461bcd60e51b815260206004820152601d60248201527f5472616e736665727320617265206e6f7420656e61626c6564206e6f77000000604482015290519081900360640190fd5b6025546001600160a01b03898116911614801590611de257506025546001600160a01b038a8116911614155b15611dec57600091505b6025546001600160a01b0389811691161480611e2f57506025546001600160a01b03898116911614801590611e2f57506025546001600160a01b038a8116911614155b15611e83576001600160a01b03891660009081526004602052604090205415801590611e7957506001600160a01b0389166000908152600460205260409020544262015180909101115b15611e8357600291505b611e90898989858561244d565b611e9a8985612644565b611ea48884612644565b6001600160a01b03881660009081526008602052604090205460ff16158015611edb57506025546001600160a01b03898116911614155b15611f2857602654611eec896114eb565b10611f285760405162461bcd60e51b81526004018080602001828103825260218152602001806130436021913960400191505060405180910390fd5b505050505050505050565b60008184841115611fc25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f87578181015183820152602001611f6f565b50505050905090810190601f168015611fb45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000611fd76126bb565b9092509050611fe682826119e4565b9250505090565b600082820183811015611a23576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6011546120529083611a83565b6011556012546120629082611fed565b6012555050565b6025805460ff60a01b1916600160a01b17905560215460009082111561208e57506021545b600061209a8383611a83565b90506000602454602354602254602154010101905060006120c56002856119e490919063ffffffff16565b905060006120d38583611a83565b905060006120e18386611fed565b9050476120ed8261281e565b60006120f94783611a83565b9050600061210b84610df08885611a2a565b905060008511801561211d5750600081115b1561212c5761212c8582612a35565b604080518781526020810183905280820188905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a1479150600061218a88610df085602354611a2a90919063ffffffff16565b905060006121a789610df086602454611a2a90919063ffffffff16565b905047821161220657600d546040516001600160a01b03909116908390600081818185875af1925050503d80600081146121fd576040519150601f19603f3d011682016040523d82523d6000602084013e612202565b606091505b5050505b47811161226357600b546040516001600160a01b03909116908290600081818185875af1925050503d806000811461225a576040519150601f19603f3d011682016040523d82523d6000602084013e61225f565b606091505b5050505b47156122bf57600c546040516001600160a01b03909116904790600081818185875af1925050503d80600081146122b6576040519150601f19603f3d011682016040523d82523d6000602084013e6122bb565b606091505b5050505b5050600060218190556022819055602381905560245550506025805460ff60a01b191690555050505050505050565b6000818361233d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611f87578181015183820152602001611f6f565b50600083858161234957fe5b0495945050505050565b600080600061236184610cef565b90925090508115612443576001600160a01b0384166000908152600660205260408120805483019055612392611fca565b905060006123a08483611a2a565b600e546001600160a01b0316600090815260016020526040902054909150811015612436576001600160a01b0386166000908152600160205260409020546123e89082611fed565b6001600160a01b0380881660009081526001602052604080822093909355600e549091168152205461241a9082611a83565b600e546001600160a01b03166000908152600160205260409020555b6001945050505050610cdb565b5060009392505050565b6000612457611fca565b905083831561246e5761246b858585612b39565b90505b600061247a8284611a2a565b905060006124888785611a2a565b6001600160a01b038a1660009081526009602052604090205490915060ff1680156124cc57506001600160a01b03881660009081526009602052604090205460ff16155b156124e4576124df8989838a8787612cb1565b6125ee565b6001600160a01b03891660009081526009602052604090205460ff1615801561252557506001600160a01b03881660009081526009602052604090205460ff165b15612538576124df8989838a8787612d56565b6001600160a01b03891660009081526009602052604090205460ff1615801561257a57506001600160a01b03881660009081526009602052604090205460ff16155b1561258d576124df8989838a8787612dde565b6001600160a01b03891660009081526009602052604090205460ff1680156125cd57506001600160a01b03881660009081526009602052604090205460ff165b156125e0576124df8989838a8787612e01565b6125ee8989838a8787612dde565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600061264f836114eb565b6001600160a01b038416600090815260076020526040902054909150158061268e57506001600160a01b03831660009081526007602052604090205481105b806126965750815b15611150576001600160a01b0383166000908152600760205260409020819055505050565b6011546010546000918291825b600a548110156127ec578260016000600a84815481106126e457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061274957508160026000600a848154811061272257fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612760576011546010549450945050505061281a565b6127a060016000600a848154811061277457fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611a83565b92506127e260026000600a84815481106127b657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611a83565b91506001016126c8565b506010546011546127fc916119e4565b8210156128145760115460105493509350505061281a565b90925090505b9091565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061284c57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128c557600080fd5b505afa1580156128d9573d6000803e3d6000fd5b505050506040513d60208110156128ef57600080fd5b505181518290600190811061290057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061294b307f000000000000000000000000000000000000000000000000000000000000000084611ac9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156129f05781810151838201526020016129d8565b505050509050019650505050505050600060405180830381600087803b158015612a1957600080fd5b505af1158015612a2d573d6000803e3d6000fd5b505050505050565b612a60307f000000000000000000000000000000000000000000000000000000000000000084611ac9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080612a9d61168f565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b158015612b0857600080fd5b505af1158015612b1c573d6000803e3d6000fd5b50505050506040513d6060811015612b3357600080fd5b50505050565b600080612b44611fca565b905084600a6002861415612b575750601d545b6000612b668860165484612e53565b90506000612b778960175485612e53565b90506000612b968a89612b8c57601954612b90565b6018545b86612e53565b90506000612ba78b601c5487612e53565b90506000612bc68c8b612bbc57601b54612bc0565b601a545b88612e53565b602154909150612bd69085611fed565b602155602254612be69083611fed565b602255602354612bf69084611fed565b602355602454612c069082611fed565b602455848c0384900383900382900381900396506000612c3282612c2c85818989611fed565b90611fed565b9050612c47612c41878b611a2a565b87612045565b612c6a612c54828b611a2a565b3060009081526001602052604090205490611fed565b30600090815260016020908152604080832093909355600290522054612c909082611fed565b3060009081526002602052604090205550959b9a5050505050505050505050565b6001600160a01b038616600090815260026020526040902054612cd49084611a83565b6001600160a01b038716600090815260026020908152604080832093909355600190522054612d039085611a83565b6001600160a01b038088166000908152600160205260408082209390935590871681522054612d329082611fed565b6001600160a01b039095166000908152600160205260409020949094555050505050565b6001600160a01b038616600090815260016020526040902054612d799085611a83565b6001600160a01b03808816600090815260016020908152604080832094909455918816815260029091522054612daf9083611fed565b6001600160a01b038616600090815260026020908152604080832093909355600190522054612d329082611fed565b6001600160a01b038616600090815260016020526040902054612d039085611a83565b6001600160a01b038616600090815260026020526040902054612e249084611a83565b6001600160a01b038716600090815260026020908152604080832093909355600190522054612d799085611a83565b6000612e6b600a610df084610dea6064838a8a611a2a565b94935050505056fe416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734f6e6c7920686f6c64657273207468617420617265206e6f74206578636c756465642066726f6d20726577617264732063616e2063616c6c2074686973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4d61782057616c6c657420686f6c64696e67206c696d6974206578636565646564a26469706673582212202a412f3db0489cccfe0cff451fd3d016822a339400fc0c3f3cb0a406ad332d6564736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000bc59499c8f677f43ce81593f7e571f8ea6fca84b00000000000000000000000099bd1f147482d88d424127bb7a1a0547f6f3460e0000000000000000000000001437f8a610a189365af3fc440ed67d78b7a3fe330000000000000000000000006df940052995798ab819acc750bd9ea371849b45

Deployed Bytecode

0x60806040526004361061027f5760003560e01c806306fdde031461028b578063095ea7b314610315578063107a4d621461036257806313114a9d146103895780631694505e1461039e57806318160ddd146103cf57806323b872dd146103e4578063243299ba1461042757806328d2bc911461043c57806329bbb7bc146104515780632d3e474a146104845780632d83811914610499578063313ce567146104c35780633176dae2146104ee57806331d7a262146105035780633685d4191461054f57806339509351146105845780633b124fe7146105bd57806340f8007a146105d2578063437823ec146105e757806348df0dec1461061a57806349a734f01461064d57806349bd5a5e146106775780634a74bb021461068c57806352390c02146106a15780635342acb4146106d4578063667f65261461070757806368fd25cd1461073757806369240b861461074c5780636bc87c3a146107615780636f60efbc1461077657806370a08231146107a8578063715018a6146107db578063733b864f146107f0578063866435c51461080557806388f820201461081a5780638b5bdeb31461084d5780638da5cb5b1461086257806391cca3db14610877578063934aa0231461088c57806395d89b41146108a15780639ec5a894146108b6578063a457c2d7146108cb578063a639c05c14610904578063a87f9cec14610937578063a9059cbb1461096a578063a93a0fd0146109a3578063af35c6c7146109b8578063bef97c87146109cd578063c6494e7a146109e2578063dd62ed3e146109f7578063e3624bba14610a32578063ea2f0b3714610a47578063f1f75a1314610a7a578063f2fde38b14610a8f578063f499133514610ac257610286565b3661028657005b600080fd5b34801561029757600080fd5b506102a0610ad7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102da5781810151838201526020016102c2565b50505050905090810190601f1680156103075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032157600080fd5b5061034e6004803603604081101561033857600080fd5b506001600160a01b038135169060200135610b6d565b604080519115158252519081900360200190f35b34801561036e57600080fd5b50610377610b8b565b60408051918252519081900360200190f35b34801561039557600080fd5b50610377610b91565b3480156103aa57600080fd5b506103b3610b97565b604080516001600160a01b039092168252519081900360200190f35b3480156103db57600080fd5b50610377610bbb565b3480156103f057600080fd5b5061034e6004803603606081101561040757600080fd5b506001600160a01b03813581169160208101359091169060400135610bc1565b34801561043357600080fd5b50610377610c48565b34801561044857600080fd5b506103b3610c4e565b34801561045d57600080fd5b506103776004803603602081101561047457600080fd5b50356001600160a01b0316610c5d565b34801561049057600080fd5b506103b3610c6f565b3480156104a557600080fd5b50610377600480360360208110156104bc57600080fd5b5035610c7e565b3480156104cf57600080fd5b506104d8610ce0565b6040805160ff9092168252519081900360200190f35b3480156104fa57600080fd5b50610377610ce9565b34801561050f57600080fd5b506105366004803603602081101561052657600080fd5b50356001600160a01b0316610cef565b6040805192835260208301919091528051918290030190f35b34801561055b57600080fd5b506105826004803603602081101561057257600080fd5b50356001600160a01b0316610e0f565b005b34801561059057600080fd5b5061034e600480360360408110156105a757600080fd5b506001600160a01b038135169060200135610fca565b3480156105c957600080fd5b50610377611018565b3480156105de57600080fd5b5061037761101e565b3480156105f357600080fd5b506105826004803603602081101561060a57600080fd5b50356001600160a01b0316611024565b34801561062657600080fd5b506103776004803603602081101561063d57600080fd5b50356001600160a01b03166110a0565b34801561065957600080fd5b506105826004803603602081101561067057600080fd5b50356110b2565b34801561068357600080fd5b506103b3611155565b34801561069857600080fd5b5061034e611164565b3480156106ad57600080fd5b50610582600480360360208110156106c457600080fd5b50356001600160a01b0316611174565b3480156106e057600080fd5b5061034e600480360360208110156106f757600080fd5b50356001600160a01b03166112f8565b34801561071357600080fd5b506105826004803603604081101561072a57600080fd5b5080359060200135611316565b34801561074357600080fd5b50610377611428565b34801561075857600080fd5b5061037761142e565b34801561076d57600080fd5b50610377611434565b34801561078257600080fd5b506105826004803603604081101561079957600080fd5b5080351515906020013561143a565b3480156107b457600080fd5b50610377600480360360208110156107cb57600080fd5b50356001600160a01b03166114eb565b3480156107e757600080fd5b50610582611564565b3480156107fc57600080fd5b506105826115f4565b34801561081157600080fd5b50610377611665565b34801561082657600080fd5b5061034e6004803603602081101561083d57600080fd5b50356001600160a01b031661166b565b34801561085957600080fd5b50610377611689565b34801561086e57600080fd5b506103b361168f565b34801561088357600080fd5b506103b361169e565b34801561089857600080fd5b506103b36116ad565b3480156108ad57600080fd5b506102a06116bc565b3480156108c257600080fd5b506103b361171d565b3480156108d757600080fd5b5061034e600480360360408110156108ee57600080fd5b506001600160a01b03813516906020013561172c565b34801561091057600080fd5b506103776004803603602081101561092757600080fd5b50356001600160a01b0316611794565b34801561094357600080fd5b506103776004803603602081101561095a57600080fd5b50356001600160a01b03166117a6565b34801561097657600080fd5b5061034e6004803603604081101561098d57600080fd5b506001600160a01b0381351690602001356117b8565b3480156109af57600080fd5b506103776117cc565b3480156109c457600080fd5b506105826117d2565b3480156109d957600080fd5b5061034e611839565b3480156109ee57600080fd5b50610377611842565b348015610a0357600080fd5b5061037760048036036040811015610a1a57600080fd5b506001600160a01b0381358116916020013516611848565b348015610a3e57600080fd5b50610377611873565b348015610a5357600080fd5b5061058260048036036020811015610a6a57600080fd5b50356001600160a01b0316611879565b348015610a8657600080fd5b506103776118f2565b348015610a9b57600080fd5b5061058260048036036020811015610ab257600080fd5b50356001600160a01b03166118f8565b348015610ace57600080fd5b506103776119de565b60138054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b635780601f10610b3857610100808354040283529160200191610b63565b820191906000526020600020905b815481529060010190602001808311610b4657829003601f168201915b5050505050905090565b6000610b81610b7a611ac5565b8484611ac9565b5060015b92915050565b601a5481565b60125490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60105490565b6000610bce848484611bb5565b610c3e84610bda611ac5565b610c3985604051806060016040528060288152602001612f44602891396001600160a01b038a16600090815260036020526040812090610c18611ac5565b6001600160a01b031681526020810191909152604001600020549190611f33565b611ac9565b5060019392505050565b601d5481565b600f546001600160a01b031681565b60076020526000908152604090205481565b600d546001600160a01b031681565b6000601154821115610cc15760405162461bcd60e51b815260040180806020018281038252602a815260200180612e74602a913960400191505060405180910390fd5b6000610ccb611fca565b9050610cd783826119e4565b9150505b919050565b60155460ff1690565b60245481565b6001600160a01b038116600090815260096020526040812054819060ff16610e03576001600160a01b038316600090815260056020526040812054610d35904290611a83565b6001600160a01b038516600090815260056020526040902054909150610d59575060005b6000610d70601f54836119e490919063ffffffff16565b6001600160a01b0386166000908152600660205260409020549091508110610db2576001600160a01b0385166000908152600660205260409020549003610db6565b5060005b6001600160a01b038516600090815260076020526040812054601e54610df69161271091610df09190610dea908790611a2a565b90611a2a565b906119e4565b9450909250610e0a915050565b5060009050805b915091565b610e17611ac5565b6000546001600160a01b03908116911614610e67576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff16610ece576040805162461bcd60e51b81526020600482015260176024820152761058d8dbdd5b9d081a5cc81b9bdd08195e18db1d591959604a1b604482015290519081900360640190fd5b60005b600a54811015610fc657816001600160a01b0316600a8281548110610ef257fe5b6000918252602090912001546001600160a01b03161415610fbe57600a80546000198101908110610f1f57fe5b600091825260209091200154600a80546001600160a01b039092169183908110610f4557fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600990925220805460ff19169055600a805480610f9757fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610fc6565b600101610ed1565b5050565b6000610b81610fd7611ac5565b84610c398560036000610fe8611ac5565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611fed565b60165481565b601c5481565b61102c611ac5565b6000546001600160a01b0390811691161461107c576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b60046020526000908152604090205481565b3360009081526009602052604090205460ff16156111015760405162461bcd60e51b815260040180806020018281038252603d815260200180612ee6603d913960400191505060405180910390fd5b600061110b611fca565b905060006111198383611a2a565b336000908152600160205260409020549091506111369082611a83565b336000908152600160205260409020556111508184612045565b505050565b6025546001600160a01b031681565b602554600160a81b900460ff1681565b61117c611ac5565b6000546001600160a01b039081169116146111cc576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff1615611238576040805162461bcd60e51b815260206004820152601b60248201527a1058d8dbdd5b9d081a5cc8185b1c9958591e48195e18db1d591959602a1b604482015290519081900360640190fd5b6001600160a01b03811660009081526001602052604090205415611292576001600160a01b03811660009081526001602052604090205461127890610c7e565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b031660009081526008602052604090205460ff1690565b61131e611ac5565b6000546001600160a01b0390811691161461136e576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b8160011415611381576016819055610fc6565b8160021415611394576017819055610fc6565b81600314156113a757601a819055610fc6565b81600414156113ba57601b819055610fc6565b81600514156113cd57601c819055610fc6565b81600614156113e0576018819055610fc6565b81600714156113f3576019819055610fc6565b816008141561140657601d819055610fc6565b816009141561141957601e819055610fc6565b81600a1415610fc657601f5550565b601e5481565b60235481565b60175481565b611442611ac5565b6000546001600160a01b03908116911614611492576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b60258054831515600160a81b810260ff60a81b1990921691909117909155602782905560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a15050565b6000806114f783610cef565b506001600160a01b03841660009081526009602052604090205490915060ff161561153b576001600160a01b03831660009081526002602052604090205401610b85565b6001600160a01b03831660009081526001602052604090205461155d90610c7e565b0192915050565b61156c611ac5565b6000546001600160a01b039081169116146115bc576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020612f8c833981519152908390a3600080546001600160a01b0319169055565b6115fc611ac5565b6000546001600160a01b0390811691161461164c576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6000611657306114eb565b905061166281612069565b50565b60215481565b6001600160a01b031660009081526009602052604090205460ff1690565b60225481565b6000546001600160a01b031690565b600b546001600160a01b031681565b600c546001600160a01b031681565b60148054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b635780601f10610b3857610100808354040283529160200191610b63565b600e546001600160a01b031681565b6000610b81611739611ac5565b84610c398560405180606001604052806025815260200161301e6025913960036000611763611ac5565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611f33565b60056020526000908152604090205481565b60066020526000908152604090205481565b6000610b816117c5611ac5565b8484611bb5565b60185481565b6117da611ac5565b6000546001600160a01b0390811691161461182a576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6020805460ff19166001179055565b60205460ff1681565b601f5481565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b60195481565b611881611ac5565b6000546001600160a01b039081169116146118d1576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600860205260409020805460ff19169055565b601b5481565b611900611ac5565b6000546001600160a01b03908116911614611950576040805162461bcd60e51b81526020600482018190526024820152600080516020612f6c833981519152604482015290519081900360640190fd5b6001600160a01b0381166119955760405162461bcd60e51b8152600401808060200182810382526026815260200180612e9e6026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020612f8c83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60265481565b6000611a2383836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b8152506122ee565b9392505050565b600082611a3957506000610b85565b82820282848281611a4657fe5b0414611a235760405162461bcd60e51b8152600401808060200182810382526021815260200180612f236021913960400191505060405180910390fd5b6000611a2383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f33565b3390565b6001600160a01b038316611b0e5760405162461bcd60e51b8152600401808060200182810382526024815260200180612ffa6024913960400191505060405180910390fd5b6001600160a01b038216611b535760405162461bcd60e51b8152600401808060200182810382526022815260200180612ec46022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611bfa5760405162461bcd60e51b8152600401808060200182810382526025815260200180612fd56025913960400191505060405180910390fd5b60008111611c395760405162461bcd60e51b8152600401808060200182810382526029815260200180612fac6029913960400191505060405180910390fd5b6000611c44306114eb565b60275490915081108015908190611c655750602554600160a01b900460ff16155b8015611c7f57506025546001600160a01b03868116911614155b8015611c945750602554600160a81b900460ff165b15611ca257611ca282612069565b6001600160a01b03841660009081526004602090815260408083204290556005909152902054611ce8576001600160a01b03841660009081526005602052604090204290555b6000611cf386612353565b90506000611d0086612353565b6025546001600160a01b03898116600081815260086020526040902054939450600193919092169091149060ff1680611d5157506001600160a01b03881660009081526008602052604090205460ff165b15611d5f5760009150611e83565b60205460ff16611db6576040805162461bcd60e51b815260206004820152601d60248201527f5472616e736665727320617265206e6f7420656e61626c6564206e6f77000000604482015290519081900360640190fd5b6025546001600160a01b03898116911614801590611de257506025546001600160a01b038a8116911614155b15611dec57600091505b6025546001600160a01b0389811691161480611e2f57506025546001600160a01b03898116911614801590611e2f57506025546001600160a01b038a8116911614155b15611e83576001600160a01b03891660009081526004602052604090205415801590611e7957506001600160a01b0389166000908152600460205260409020544262015180909101115b15611e8357600291505b611e90898989858561244d565b611e9a8985612644565b611ea48884612644565b6001600160a01b03881660009081526008602052604090205460ff16158015611edb57506025546001600160a01b03898116911614155b15611f2857602654611eec896114eb565b10611f285760405162461bcd60e51b81526004018080602001828103825260218152602001806130436021913960400191505060405180910390fd5b505050505050505050565b60008184841115611fc25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f87578181015183820152602001611f6f565b50505050905090810190601f168015611fb45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000611fd76126bb565b9092509050611fe682826119e4565b9250505090565b600082820183811015611a23576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6011546120529083611a83565b6011556012546120629082611fed565b6012555050565b6025805460ff60a01b1916600160a01b17905560215460009082111561208e57506021545b600061209a8383611a83565b90506000602454602354602254602154010101905060006120c56002856119e490919063ffffffff16565b905060006120d38583611a83565b905060006120e18386611fed565b9050476120ed8261281e565b60006120f94783611a83565b9050600061210b84610df08885611a2a565b905060008511801561211d5750600081115b1561212c5761212c8582612a35565b604080518781526020810183905280820188905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a1479150600061218a88610df085602354611a2a90919063ffffffff16565b905060006121a789610df086602454611a2a90919063ffffffff16565b905047821161220657600d546040516001600160a01b03909116908390600081818185875af1925050503d80600081146121fd576040519150601f19603f3d011682016040523d82523d6000602084013e612202565b606091505b5050505b47811161226357600b546040516001600160a01b03909116908290600081818185875af1925050503d806000811461225a576040519150601f19603f3d011682016040523d82523d6000602084013e61225f565b606091505b5050505b47156122bf57600c546040516001600160a01b03909116904790600081818185875af1925050503d80600081146122b6576040519150601f19603f3d011682016040523d82523d6000602084013e6122bb565b606091505b5050505b5050600060218190556022819055602381905560245550506025805460ff60a01b191690555050505050505050565b6000818361233d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611f87578181015183820152602001611f6f565b50600083858161234957fe5b0495945050505050565b600080600061236184610cef565b90925090508115612443576001600160a01b0384166000908152600660205260408120805483019055612392611fca565b905060006123a08483611a2a565b600e546001600160a01b0316600090815260016020526040902054909150811015612436576001600160a01b0386166000908152600160205260409020546123e89082611fed565b6001600160a01b0380881660009081526001602052604080822093909355600e549091168152205461241a9082611a83565b600e546001600160a01b03166000908152600160205260409020555b6001945050505050610cdb565b5060009392505050565b6000612457611fca565b905083831561246e5761246b858585612b39565b90505b600061247a8284611a2a565b905060006124888785611a2a565b6001600160a01b038a1660009081526009602052604090205490915060ff1680156124cc57506001600160a01b03881660009081526009602052604090205460ff16155b156124e4576124df8989838a8787612cb1565b6125ee565b6001600160a01b03891660009081526009602052604090205460ff1615801561252557506001600160a01b03881660009081526009602052604090205460ff165b15612538576124df8989838a8787612d56565b6001600160a01b03891660009081526009602052604090205460ff1615801561257a57506001600160a01b03881660009081526009602052604090205460ff16155b1561258d576124df8989838a8787612dde565b6001600160a01b03891660009081526009602052604090205460ff1680156125cd57506001600160a01b03881660009081526009602052604090205460ff165b156125e0576124df8989838a8787612e01565b6125ee8989838a8787612dde565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600061264f836114eb565b6001600160a01b038416600090815260076020526040902054909150158061268e57506001600160a01b03831660009081526007602052604090205481105b806126965750815b15611150576001600160a01b0383166000908152600760205260409020819055505050565b6011546010546000918291825b600a548110156127ec578260016000600a84815481106126e457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061274957508160026000600a848154811061272257fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612760576011546010549450945050505061281a565b6127a060016000600a848154811061277457fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611a83565b92506127e260026000600a84815481106127b657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611a83565b91506001016126c8565b506010546011546127fc916119e4565b8210156128145760115460105493509350505061281a565b90925090505b9091565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061284c57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128c557600080fd5b505afa1580156128d9573d6000803e3d6000fd5b505050506040513d60208110156128ef57600080fd5b505181518290600190811061290057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061294b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ac9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156129f05781810151838201526020016129d8565b505050509050019650505050505050600060405180830381600087803b158015612a1957600080fd5b505af1158015612a2d573d6000803e3d6000fd5b505050505050565b612a60307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ac9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080612a9d61168f565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b158015612b0857600080fd5b505af1158015612b1c573d6000803e3d6000fd5b50505050506040513d6060811015612b3357600080fd5b50505050565b600080612b44611fca565b905084600a6002861415612b575750601d545b6000612b668860165484612e53565b90506000612b778960175485612e53565b90506000612b968a89612b8c57601954612b90565b6018545b86612e53565b90506000612ba78b601c5487612e53565b90506000612bc68c8b612bbc57601b54612bc0565b601a545b88612e53565b602154909150612bd69085611fed565b602155602254612be69083611fed565b602255602354612bf69084611fed565b602355602454612c069082611fed565b602455848c0384900383900382900381900396506000612c3282612c2c85818989611fed565b90611fed565b9050612c47612c41878b611a2a565b87612045565b612c6a612c54828b611a2a565b3060009081526001602052604090205490611fed565b30600090815260016020908152604080832093909355600290522054612c909082611fed565b3060009081526002602052604090205550959b9a5050505050505050505050565b6001600160a01b038616600090815260026020526040902054612cd49084611a83565b6001600160a01b038716600090815260026020908152604080832093909355600190522054612d039085611a83565b6001600160a01b038088166000908152600160205260408082209390935590871681522054612d329082611fed565b6001600160a01b039095166000908152600160205260409020949094555050505050565b6001600160a01b038616600090815260016020526040902054612d799085611a83565b6001600160a01b03808816600090815260016020908152604080832094909455918816815260029091522054612daf9083611fed565b6001600160a01b038616600090815260026020908152604080832093909355600190522054612d329082611fed565b6001600160a01b038616600090815260016020526040902054612d039085611a83565b6001600160a01b038616600090815260026020526040902054612e249084611a83565b6001600160a01b038716600090815260026020908152604080832093909355600190522054612d799085611a83565b6000612e6b600a610df084610dea6064838a8a611a2a565b94935050505056fe416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734f6e6c7920686f6c64657273207468617420617265206e6f74206578636c756465642066726f6d20726577617264732063616e2063616c6c2074686973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4d61782057616c6c657420686f6c64696e67206c696d6974206578636565646564a26469706673582212202a412f3db0489cccfe0cff451fd3d016822a339400fc0c3f3cb0a406ad332d6564736f6c634300060c0033

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

000000000000000000000000bc59499c8f677f43ce81593f7e571f8ea6fca84b00000000000000000000000099bd1f147482d88d424127bb7a1a0547f6f3460e0000000000000000000000001437f8a610a189365af3fc440ed67d78b7a3fe330000000000000000000000006df940052995798ab819acc750bd9ea371849b45

-----Decoded View---------------
Arg [0] : _devWallet (address): 0xBc59499C8F677F43CE81593f7E571f8ea6fcA84B
Arg [1] : _marketingWallet (address): 0x99Bd1F147482D88d424127bB7A1A0547F6f3460e
Arg [2] : _charityWallet (address): 0x1437F8A610a189365Af3Fc440ed67d78b7A3Fe33
Arg [3] : _rewardsWallet (address): 0x6Df940052995798ab819acC750bd9eA371849b45

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000bc59499c8f677f43ce81593f7e571f8ea6fca84b
Arg [1] : 00000000000000000000000099bd1f147482d88d424127bb7a1a0547f6f3460e
Arg [2] : 0000000000000000000000001437f8a610a189365af3fc440ed67d78b7a3fe33
Arg [3] : 0000000000000000000000006df940052995798ab819acc750bd9ea371849b45


Deployed Bytecode Sourcemap

8147:22212:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12461:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13478:152;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13478:152:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;9466:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14581:87;;;;;;;;;;;;;:::i;10022:51::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;10022:51:0;;;;;;;;;;;;;;12738:86;;;;;;;;;;;;;:::i;13638:304::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13638:304:0;;;;;;;;;;;;;;;;;:::i;9592:43::-;;;;;;;;;;;;;:::i;8920:69::-;;;;;;;;;;;;;:::i;8575:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8575:49:0;-1:-1:-1;;;;;8575:49:0;;:::i;8852:32::-;;;;;;;;;;;;;:::i;14676:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14676:253:0;;:::i;12647:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9975:38;;;;;;;;;;;;;:::i;20615:705::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20615:705:0;-1:-1:-1;;;;;20615:705:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15458:475;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15458:475:0;-1:-1:-1;;;;;15458:475:0;;:::i;:::-;;13950:218;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13950:218:0;;;;;;;;:::i;9309:26::-;;;;;;;;;;;;;:::i;9555:30::-;;;;;;;;;;;;;:::i;15941:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15941:111:0;-1:-1:-1;;;;;15941:111:0;;:::i;8397:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8397:48:0;-1:-1:-1;;;;;8397:48:0;;:::i;17596:373::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17596:373:0;;:::i;10080:28::-;;;;;;;;;;;;;:::i;10145:40::-;;;;;;;;;;;;;:::i;15117:333::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15117:333:0;-1:-1:-1;;;;;15117:333:0;;:::i;20483:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20483:124:0;-1:-1:-1;;;;;20483:124:0;;:::i;16178:862::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16178:862:0;;;;;;;:::i;9655:33::-;;;;;;;;;;;;;:::i;9932:36::-;;;;;;;;;;;;;:::i;9342:32::-;;;;;;;;;;;;;:::i;17048:252::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17048:252:0;;;;;;;;;:::i;12832:330::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12832:330:0;-1:-1:-1;;;;;12832:330:0;;:::i;6829:148::-;;;;;;;;;;;;;:::i;14937:172::-;;;;;;;;;;;;;:::i;9848:36::-;;;;;;;;;;;;;:::i;14453:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14453:120:0;-1:-1:-1;;;;;14453:120:0;;:::i;9891:34::-;;;;;;;;;;;;;:::i;6186:79::-;;;;;;;;;;;;;:::i;8782:26::-;;;;;;;;;;;;;:::i;8815:30::-;;;;;;;;;;;;;:::i;12552:87::-;;;;;;;;;;;;;:::i;8891:22::-;;;;;;;;;;;;;:::i;14176:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14176:269:0;;;;;;;;:::i;8452:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8452:49:0;-1:-1:-1;;;;;8452:49:0;;:::i;8508:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8508:60:0;-1:-1:-1;;;;;8508:60:0;;:::i;13170:158::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13170:158:0;;;;;;;;:::i;9381:35::-;;;;;;;;;;;;;:::i;17308:88::-;;;;;;;;;;;;;:::i;9766:28::-;;;;;;;;;;;;;:::i;9702:38::-;;;;;;;;;;;;;:::i;13336:134::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13336:134:0;;;;;;;;;;:::i;9423:36::-;;;;;;;;;;;;;:::i;16060:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16060:110:0;-1:-1:-1;;;;;16060:110:0;;:::i;9510:38::-;;;;;;;;;;;;;:::i;7132:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7132:244:0;-1:-1:-1;;;;;7132:244:0;;:::i;10194:53::-;;;;;;;;;;;;;:::i;12461:83::-;12531:5;12524:12;;;;;;;;-1:-1:-1;;12524:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12498:13;;12524:12;;12531:5;;12524:12;;12531:5;12524:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12461:83;:::o;13478:152::-;13544:4;13561:39;13570:12;:10;:12::i;:::-;13584:7;13593:6;13561:8;:39::i;:::-;-1:-1:-1;13618:4:0;13478:152;;;;;:::o;9466:37::-;;;;:::o;14581:87::-;14650:10;;14581:87;:::o;10022:51::-;;;:::o;12738:86::-;12809:7;;12738:86;:::o;13638:304::-;13727:4;13744:36;13754:6;13762:9;13773:6;13744:9;:36::i;:::-;13791:121;13800:6;13808:12;:10;:12::i;:::-;13822:89;13860:6;13822:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13822:19:0;;;;;;:11;:19;;;;;;13842:12;:10;:12::i;:::-;-1:-1:-1;;;;;13822:33:0;;;;;;;;;;;;-1:-1:-1;13822:33:0;;;:89;:37;:89::i;:::-;13791:8;:121::i;:::-;-1:-1:-1;13930:4:0;13638:304;;;;;:::o;9592:43::-;;;;:::o;8920:69::-;;;-1:-1:-1;;;;;8920:69:0;;:::o;8575:49::-;;;;;;;;;;;;;:::o;8852:32::-;;;-1:-1:-1;;;;;8852:32:0;;:::o;14676:253::-;14742:7;14781;;14770;:18;;14762:73;;;;-1:-1:-1;;;14762:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14846:19;14869:10;:8;:10::i;:::-;14846:33;-1:-1:-1;14897:24:0;:7;14846:33;14897:11;:24::i;:::-;14890:31;;;14676:253;;;;:::o;12647:83::-;12713:9;;;;12647:83;:::o;9975:38::-;;;;:::o;20615:705::-;-1:-1:-1;;;;;20711:20:0;;20677:7;20711:20;;;:11;:20;;;;;;20677:7;;20711:20;;20706:583;;-1:-1:-1;;;;;20791:22:0;;20746;20791;;;:13;:22;;;;;;20771:43;;:15;;:19;:43::i;:::-;-1:-1:-1;;;;;20831:22:0;;;;;;:13;:22;;;;;;20746:68;;-1:-1:-1;20827:51:0;;-1:-1:-1;20877:1:0;20827:51;20891:21;20915:33;20934:13;;20915:14;:18;;:33;;;;:::i;:::-;-1:-1:-1;;;;;20982:33:0;;;;;;:24;:33;;;;;;20891:57;;-1:-1:-1;20965:50:0;;20961:156;;-1:-1:-1;;;;;21049:33:0;;;;;;:24;:33;;;;;;21033:49;;20961:156;;;-1:-1:-1;21116:1:0;20961:156;-1:-1:-1;;;;;21191:22:0;;21130:23;21191:22;;;:13;:22;;;;;;21174:11;;21156:69;;21219:5;;21156:58;;21191:22;21156:30;;:13;;:17;:30::i;:::-;:34;;:58::i;:::-;:62;;:69::i;:::-;21130:95;-1:-1:-1;21263:13:0;;-1:-1:-1;21238:39:0;;-1:-1:-1;;21238:39:0;20706:583;-1:-1:-1;21307:1:0;;-1:-1:-1;21307:1:0;20615:705;;;;:::o;15458:475::-;6408:12;:10;:12::i;:::-;6398:6;;-1:-1:-1;;;;;6398:6:0;;;:22;;;6390:67;;;;;-1:-1:-1;;;6390:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6390:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15540:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;15532:56;;;::::0;;-1:-1:-1;;;15532:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15532:56:0;;;;;;;;;;;;;::::1;;15604:9;15599:327;15623:9;:16:::0;15619:20;::::1;15599:327;;;15681:7;-1:-1:-1::0;;;;;15665:23:0::1;:9;15675:1;15665:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;15665:12:0::1;:23;15661:254;;;15724:9;15734:16:::0;;-1:-1:-1;;15734:20:0;;;15724:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;15709:9:::1;:12:::0;;-1:-1:-1;;;;;15724:31:0;;::::1;::::0;15719:1;;15709:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;15709:46:0::1;-1:-1:-1::0;;;;;15709:46:0;;::::1;;::::0;;15774:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;15813:11:::1;:20:::0;;;;:28;;-1:-1:-1;;15813:28:0::1;::::0;;15860:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;15860:15:0;;;;;-1:-1:-1;;;;;;15860:15:0::1;::::0;;;;;15894:5:::1;;15661:254;15641:3;;15599:327;;;;15458:475:::0;:::o;13950:218::-;14038:4;14055:83;14064:12;:10;:12::i;:::-;14078:7;14087:50;14126:10;14087:11;:25;14099:12;:10;:12::i;:::-;-1:-1:-1;;;;;14087:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;14087:25:0;;;:34;;;;;;;;;;;:38;:50::i;9309:26::-;;;;:::o;9555:30::-;;;;:::o;15941:111::-;6408:12;:10;:12::i;:::-;6398:6;;-1:-1:-1;;;;;6398:6:0;;;:22;;;6390:67;;;;;-1:-1:-1;;;6390:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6390:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16010:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;16010:34:0::1;16040:4;16010:34;::::0;;15941:111::o;8397:48::-;;;;;;;;;;;;;:::o;17596:373::-;17682:10;17670:23;;;;:11;:23;;;;;;;;17669:24;17661:98;;;;-1:-1:-1;;;17661:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17770:19;17793:10;:8;:10::i;:::-;17770:33;-1:-1:-1;17814:15:0;17832:24;:7;17770:33;17832:11;:24::i;:::-;17897:10;17889:19;;;;:7;:19;;;;;;17814:42;;-1:-1:-1;17889:32:0;;17814:42;17889:23;:32::i;:::-;17875:10;17867:19;;;;:7;:19;;;;;:54;17932:29;17944:7;17953;17932:11;:29::i;:::-;17596:373;;;:::o;10080:28::-;;;-1:-1:-1;;;;;10080:28:0;;:::o;10145:40::-;;;-1:-1:-1;;;10145:40:0;;;;;:::o;15117:333::-;6408:12;:10;:12::i;:::-;6398:6;;-1:-1:-1;;;;;6398:6:0;;;:22;;;6390:67;;;;;-1:-1:-1;;;6390:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6390:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15200:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;15199:21;15191:61;;;::::0;;-1:-1:-1;;;15191:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15191:61:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;15266:16:0;::::1;15285:1;15266:16:::0;;;:7:::1;:16;::::0;;;;;:20;15263:108:::1;;-1:-1:-1::0;;;;;15342:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;15322:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;15303:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;15263:108:::1;-1:-1:-1::0;;;;;15381:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;15381:27:0::1;15404:4;15381:27:::0;;::::1;::::0;;;15419:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;15419:23:0::1;::::0;;::::1;::::0;;15117:333::o;20483:124::-;-1:-1:-1;;;;;20572:27:0;20548:4;20572:27;;;:18;:27;;;;;;;;;20483:124::o;16178:862::-;6408:12;:10;:12::i;:::-;6398:6;;-1:-1:-1;;;;;6398:6:0;;;:22;;;6390:67;;;;;-1:-1:-1;;;6390:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6390:67:0;;;;;;;;;;;;;;;16261:8:::1;16273:1;16261:13;16257:776;;;16287:7;:18:::0;;;16257:776:::1;;;16332:8;16344:1;16332:13;16328:705;;;16358:13;:24:::0;;;16328:705:::1;;;16409:8;16421:1;16409:13;16405:628;;;16435:18;:29:::0;;;16405:628:::1;;;16491:8;16503:1;16491:13;16487:546;;;16517:19;:30:::0;;;16487:546:::1;;;16574:8;16586:1;16574:13;16570:463;;;16600:11;:22:::0;;;16570:463:::1;;;16649:8;16661:1;16649:13;16645:388;;;16675:16;:27:::0;;;16645:388:::1;;;16729:8;16741:1;16729:13;16725:308;;;16755:17;:28:::0;;;16725:308:::1;;;16810:8;16822:1;16810:13;16806:227;;;16836:23;:34:::0;;;16806:227:::1;;;16897:8;16909:1;16897:13;16893:140;;;16923:11;:22:::0;;;16893:140:::1;;;16972:8;16984:2;16972:14;16968:65;;;16999:13;:24:::0;-1:-1:-1;16178:862:0:o;9655:33::-;;;;:::o;9932:36::-;;;;:::o;9342:32::-;;;;:::o;17048:252::-;6408:12;:10;:12::i;:::-;6398:6;;-1:-1:-1;;;;;6398:6:0;;;:22;;;6390:67;;;;;-1:-1:-1;;;6390:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6390:67:0;;;;;;;;;;;;;;;17150:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;17150:32:0;::::1;-1:-1:-1::0;;;;17150:32:0;;::::1;::::0;;;::::1;::::0;;;17193:29:::1;:45:::0;;;17254:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;17048:252:::0;;:::o;12832:330::-;12889:7;12910:20;12935:23;12950:7;12935:14;:23::i;:::-;-1:-1:-1;;;;;;12973:20:0;;;;;;:11;:20;;;;;;12909:49;;-1:-1:-1;12973:20:0;;12969:155;;;-1:-1:-1;;;;;13025:16:0;;;;;;:7;:16;;;;;;13010:31;12969:155;;;-1:-1:-1;;;;;13107:16:0;;;;;;:7;:16;;;;;;13087:37;;:19;:37::i;:::-;13072:52;13142:12;12832:330;-1:-1:-1;;12832:330:0:o;6829:148::-;6408:12;:10;:12::i;:::-;6398:6;;-1:-1:-1;;;;;6398:6:0;;;:22;;;6390:67;;;;;-1:-1:-1;;;6390:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6390:67:0;;;;;;;;;;;;;;;6936:1:::1;6920:6:::0;;6899:40:::1;::::0;-1:-1:-1;;;;;6920:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6899:40:0;6936:1;;6899:40:::1;6967:1;6950:19:::0;;-1:-1:-1;;;;;;6950:19:0::1;::::0;;6829:148::o;14937:172::-;6408:12;:10;:12::i;:::-;6398:6;;-1:-1:-1;;;;;6398:6:0;;;:22;;;6390:67;;;;;-1:-1:-1;;;6390:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6390:67:0;;;;;;;;;;;;;;;14999:28:::1;15030:24;15048:4;15030:9;:24::i;:::-;14999:55;;15065:36;15080:20;15065:14;:36::i;:::-;6468:1;14937:172::o:0;9848:36::-;;;;:::o;14453:120::-;-1:-1:-1;;;;;14545:20:0;14521:4;14545:20;;;:11;:20;;;;;;;;;14453:120::o;9891:34::-;;;;:::o;6186:79::-;6224:7;6251:6;-1:-1:-1;;;;;6251:6:0;6186:79;:::o;8782:26::-;;;-1:-1:-1;;;;;8782:26:0;;:::o;8815:30::-;;;-1:-1:-1;;;;;8815:30:0;;:::o;12552:87::-;12624:7;12617:14;;;;;;;;-1:-1:-1;;12617:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12591:13;;12617:14;;12624:7;;12617:14;;12624:7;12617:14;;;;;;;;;;;;;;;;;;;;;;;;8891:22;;;-1:-1:-1;;;;;8891:22:0;;:::o;14176:269::-;14269:4;14286:129;14295:12;:10;:12::i;:::-;14309:7;14318:96;14357:15;14318:96;;;;;;;;;;;;;;;;;:11;:25;14330:12;:10;:12::i;:::-;-1:-1:-1;;;;;14318:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;14318:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;8452:49::-;;;;;;;;;;;;;:::o;8508:60::-;;;;;;;;;;;;;:::o;13170:158::-;13239:4;13256:42;13266:12;:10;:12::i;:::-;13280:9;13291:6;13256:9;:42::i;9381:35::-;;;;:::o;17308:88::-;6408:12;:10;:12::i;:::-;6398:6;;-1:-1:-1;;;;;6398:6:0;;;:22;;;6390:67;;;;;-1:-1:-1;;;6390:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6390:67:0;;;;;;;;;;;;;;;17365:16:::1;:23:::0;;-1:-1:-1;;17365:23:0::1;17384:4;17365:23;::::0;;17308:88::o;9766:28::-;;;;;;:::o;9702:38::-;;;;:::o;13336:134::-;-1:-1:-1;;;;;13435:18:0;;;13408:7;13435:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13336:134::o;9423:36::-;;;;:::o;16060:110::-;6408:12;:10;:12::i;:::-;6398:6;;-1:-1:-1;;;;;6398:6:0;;;:22;;;6390:67;;;;;-1:-1:-1;;;6390:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6390:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16127:27:0::1;16157:5;16127:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;16127:35:0::1;::::0;;16060:110::o;9510:38::-;;;;:::o;7132:244::-;6408:12;:10;:12::i;:::-;6398:6;;-1:-1:-1;;;;;6398:6:0;;;:22;;;6390:67;;;;;-1:-1:-1;;;6390:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6390:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7221:22:0;::::1;7213:73;;;;-1:-1:-1::0;;;7213:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7323:6;::::0;;7302:38:::1;::::0;-1:-1:-1;;;;;7302:38:0;;::::1;::::0;7323:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;7302:38:0;::::1;7351:6;:17:::0;;-1:-1:-1;;;;;;7351:17:0::1;-1:-1:-1::0;;;;;7351:17:0;;;::::1;::::0;;;::::1;::::0;;7132:244::o;10194:53::-;;;;:::o;2632:132::-;2690:7;2717:39;2721:1;2724;2717:39;;;;;;;;;;;;;-1:-1:-1;;;2717:39:0;;;:3;:39::i;:::-;2710:46;2632:132;-1:-1:-1;;;2632:132:0:o;1685:471::-;1743:7;1988:6;1984:47;;-1:-1:-1;2018:1:0;2011:8;;1984:47;2055:5;;;2059:1;2055;:5;:1;2079:5;;;;;:10;2071:56;;;;-1:-1:-1;;;2071:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;795:136;853:7;880:43;884:1;887;880:43;;;;;;;;;;;;;;;;;:3;:43::i;4824:106::-;4912:10;4824:106;:::o;21328:337::-;-1:-1:-1;;;;;21421:19:0;;21413:68;;;;-1:-1:-1;;;21413:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21500:21:0;;21492:68;;;;-1:-1:-1;;;21492:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21573:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21625:32;;;;;;;;;;;;;;;;;21328:337;;;:::o;21673:1842::-;-1:-1:-1;;;;;21763:18:0;;21755:68;;;;-1:-1:-1;;;21755:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21851:1;21842:6;:10;21834:64;;;;-1:-1:-1;;;21834:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21911:28;21942:24;21960:4;21942:9;:24::i;:::-;22028:29;;21911:55;;-1:-1:-1;22004:53:0;;;;;;;22088;;-1:-1:-1;22125:16:0;;-1:-1:-1;;;22125:16:0;;;;22124:17;22088:53;:91;;;;-1:-1:-1;22166:13:0;;-1:-1:-1;;;;;22158:21:0;;;22166:13;;22158:21;;22088:91;:129;;;;-1:-1:-1;22196:21:0;;-1:-1:-1;;;22196:21:0;;;;22088:129;22070:222;;;22244:36;22259:20;22244:14;:36::i;:::-;-1:-1:-1;;;;;22304:16:0;;;;;;:12;:16;;;;;;;;22323:15;22304:34;;22353:13;:17;;;;;;22349:63;;-1:-1:-1;;;;;22377:17:0;;;;;;:13;:17;;;;;22397:15;22377:35;;22349:63;22425:20;22448:23;22466:4;22448:17;:23::i;:::-;22425:46;;22482:18;22503:21;22521:2;22503:17;:21::i;:::-;22649:13;;-1:-1:-1;;;;;22641:21:0;;;22598:15;22679:24;;;:18;:24;;;;;;22482:42;;-1:-1:-1;22616:1:0;;22649:13;;;;22641:21;;;;22679:24;;;:50;;-1:-1:-1;;;;;;22707:22:0;;;;;;:18;:22;;;;;;;;22679:50;22675:538;;;22756:1;22746:11;;22675:538;;;22805:16;;;;22797:58;;;;;-1:-1:-1;;;22797:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22878:13;;-1:-1:-1;;;;;22872:19:0;;;22878:13;;22872:19;;;;:44;;-1:-1:-1;22903:13:0;;-1:-1:-1;;;;;22895:21:0;;;22903:13;;22895:21;;22872:44;22868:90;;;22943:1;22933:11;;22868:90;22980:13;;-1:-1:-1;;;;;22974:19:0;;;22980:13;;22974:19;;:69;;-1:-1:-1;23004:13:0;;-1:-1:-1;;;;;22998:19:0;;;23004:13;;22998:19;;;;:44;;-1:-1:-1;23029:13:0;;-1:-1:-1;;;;;23021:21:0;;;23029:13;;23021:21;;22998:44;22970:232;;;-1:-1:-1;;;;;23064:18:0;;;;;;:12;:18;;;;;;:23;;;;:78;;-1:-1:-1;;;;;;23092:18:0;;;;;;:12;:18;;;;;;23126:15;23114:8;23092:31;;;:49;23064:78;23060:129;;;23172:1;23162:11;;23060:129;23225:48;23240:4;23246:2;23250:6;23258:7;23267:5;23225:14;:48::i;:::-;23286:34;23298:4;23304:15;23286:11;:34::i;:::-;23331:30;23343:2;23347:13;23331:11;:30::i;:::-;-1:-1:-1;;;;;23379:22:0;;;;;;:18;:22;;;;;;;;23378:23;:48;;;;-1:-1:-1;23412:13:0;;-1:-1:-1;;;;;23406:19:0;;;23412:13;;23406:19;;23378:48;23374:133;;;23452:17;;23436:13;23446:2;23436:9;:13::i;:::-;:33;23428:79;;;;-1:-1:-1;;;23428:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21673:1842;;;;;;;;;:::o;1234:192::-;1320:7;1356:12;1348:6;;;;1340:29;;;;-1:-1:-1;;;1340:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1392:5:0;;;1234:192::o;17977:163::-;18018:7;18039:15;18056;18075:19;:17;:19::i;:::-;18038:56;;-1:-1:-1;18038:56:0;-1:-1:-1;18112:20:0;18038:56;;18112:11;:20::i;:::-;18105:27;;;;17977:163;:::o;331:181::-;389:7;421:5;;;445:6;;;;437:46;;;;;-1:-1:-1;;;437:46:0;;;;;;;;;;;;-1:-1:-1;;;437:46:0;;;;;;;;;;;;;;17441:147;17519:7;;:17;;17531:4;17519:11;:17::i;:::-;17509:7;:27;17560:10;;:20;;17575:4;17560:14;:20::i;:::-;17547:10;:33;-1:-1:-1;;17441:147:0:o;24439:1938::-;10716:16;:23;;-1:-1:-1;;;;10716:23:0;-1:-1:-1;;;10716:23:0;;;24564:21:::1;::::0;10716:23;;24564:44;-1:-1:-1;24560:87:0::1;;;-1:-1:-1::0;24626:21:0::1;::::0;24560:87:::1;24658:24;24685:39;:20:::0;24710:13;24685:24:::1;:39::i;:::-;24658:66;;24735:24;24832:23;;24808:21;;24786:19;;24762:21;;:43;:67;:93;24735:120;;24866:25;24894:20;24912:1;24894:13;:17;;:20;;;;:::i;:::-;24866:48:::0;-1:-1:-1;24925:30:0::1;24958:36;:13:::0;24866:48;24958:17:::1;:36::i;:::-;24925:69:::0;-1:-1:-1;25098:20:0::1;25121:39;:17:::0;25143:16;25121:21:::1;:39::i;:::-;25098:62:::0;-1:-1:-1;25198:21:0::1;25264:30;25098:62:::0;25264:16:::1;:30::i;:::-;25307:18;25328:41;:21;25354:14:::0;25328:25:::1;:41::i;:::-;25307:62:::0;-1:-1:-1;25380:24:0::1;25407:51;25445:12:::0;25407:33:::1;:17:::0;25307:62;25407:21:::1;:33::i;:51::-;25380:78;;25537:1;25512:22;:26;:50;;;;;25561:1;25542:16;:20;25512:50;25508:110;;;25564:54;25577:22;25601:16;25564:12;:54::i;:::-;25634:70;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;25730:21;25717:34;;25764:20;25787:59;25829:16;25787:37;25813:10;25787:21;;:25;;:37;;;;:::i;:59::-;25764:82;;25857:22;25882:61;25926:16;25882:39;25910:10;25882:23;;:27;;:39;;;;:::i;:61::-;25857:86;;25976:21;25960:12;:37;25956:84;;25999:9;::::0;:41:::1;::::0;-1:-1:-1;;;;;25999:9:0;;::::1;::::0;26022:12;;25999:9:::1;:41:::0;:9;:41;26022:12;25999:9;:41:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25956:84;26073:21;26055:14;:39;26051:82;;26096:3;::::0;:37:::1;::::0;-1:-1:-1;;;;;26096:3:0;;::::1;::::0;26113:14;;26096:3:::1;:37:::0;:3;:37;26113:14;26096:3;:37:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26051:82;26148:21;:25:::0;26144:79:::1;;26175:7;::::0;:48:::1;::::0;-1:-1:-1;;;;;26175:7:0;;::::1;::::0;26196:21:::1;::::0;26175:7:::1;:48:::0;:7;:48;26196:21;26175:7;:48:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26144:79;-1:-1:-1::0;;26260:1:0::1;26236:21;:25:::0;;;26272:19:::1;:23:::0;;;26306:21:::1;:25:::0;;;26342:23:::1;:27:::0;-1:-1:-1;;10762:16:0;:24;;-1:-1:-1;;;;10762:24:0;;;-1:-1:-1;;;;;;;;24439:1938:0:o;3260:278::-;3346:7;3381:12;3374:5;3366:28;;;;-1:-1:-1;;;3366:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3405:9;3421:1;3417;:5;;;;;;;3260:278;-1:-1:-1;;;;;3260:278:0:o;23523:618::-;23584:4;23602:16;23620;23640:23;23655:7;23640:14;:23::i;:::-;23601:62;;-1:-1:-1;23601:62:0;-1:-1:-1;23678:12:0;;23674:437;;-1:-1:-1;;;;;23741:33:0;;;;;;:24;:33;;;;;;;:44;;23705:80;;23821:10;:8;:10::i;:::-;23798:33;-1:-1:-1;23844:16:0;23863:25;:8;23798:33;23863:12;:25::i;:::-;23913:7;;-1:-1:-1;;;;;23913:7:0;23905:16;;;;:7;:16;;;;;;23844:44;;-1:-1:-1;23905:27:0;-1:-1:-1;23901:175:0;;;-1:-1:-1;;;;;23968:16:0;;;;;;:7;:16;;;;;;:30;;23989:8;23968:20;:30::i;:::-;-1:-1:-1;;;;;23949:16:0;;;;;;;:7;:16;;;;;;:49;;;;24040:7;;;;;24032:16;;;;:30;;24053:8;24032:20;:30::i;:::-;24021:7;;-1:-1:-1;;;;;24021:7:0;24013:16;;;;:7;:16;;;;;:49;23901:175;24095:4;24088:11;;;;;;;;23674:437;-1:-1:-1;24128:5:0;;23523:618;-1:-1:-1;;;23523:618:0:o;27576:1320::-;27699:19;27722:10;:8;:10::i;:::-;27699:33;-1:-1:-1;27769:6:0;27790:12;;27786:100;;27835:39;27851:6;27859:7;27868:5;27835:15;:39::i;:::-;27817:57;;27786:100;27896:23;27922:32;:15;27942:11;27922:19;:32::i;:::-;27896:58;-1:-1:-1;27965:15:0;27983:23;:6;27994:11;27983:10;:23::i;:::-;-1:-1:-1;;;;;28021:19:0;;;;;;:11;:19;;;;;;27965:41;;-1:-1:-1;28021:19:0;;:46;;;;-1:-1:-1;;;;;;28045:22:0;;;;;;:11;:22;;;;;;;;28044:23;28021:46;28017:812;;;28084:91;28106:6;28114:9;28125:7;28134:6;28142:15;28159;28084:21;:91::i;:::-;28017:812;;;-1:-1:-1;;;;;28198:19:0;;;;;;:11;:19;;;;;;;;28197:20;:46;;;;-1:-1:-1;;;;;;28221:22:0;;;;;;:11;:22;;;;;;;;28197:46;28193:636;;;28260:89;28280:6;28288:9;28299:7;28308:6;28316:15;28333;28260:19;:89::i;28193:636::-;-1:-1:-1;;;;;28372:19:0;;;;;;:11;:19;;;;;;;;28371:20;:47;;;;-1:-1:-1;;;;;;28396:22:0;;;;;;:11;:22;;;;;;;;28395:23;28371:47;28367:462;;;28435:87;28453:6;28461:9;28472:7;28481:6;28489:15;28506;28435:17;:87::i;28367:462::-;-1:-1:-1;;;;;28544:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;28567:22:0;;;;;;:11;:22;;;;;;;;28544:45;28540:289;;;28606:91;28628:6;28636:9;28647:7;28656:6;28664:15;28681;28606:21;:91::i;28540:289::-;28730:87;28748:6;28756:9;28767:7;28776:6;28784:15;28801;28730:17;:87::i;:::-;28861:9;-1:-1:-1;;;;;28844:44:0;28853:6;-1:-1:-1;;;;;28844:44:0;;28872:15;28844:44;;;;;;;;;;;;;;;;;;27576:1320;;;;;;;;;:::o;24149:282::-;24231:22;24256:18;24266:7;24256:9;:18::i;:::-;-1:-1:-1;;;;;24289:22:0;;;;;;:13;:22;;;;;;24231:43;;-1:-1:-1;24289:27:0;;:70;;-1:-1:-1;;;;;;24337:22:0;;;;;;:13;:22;;;;;;24320:39;;24289:70;:92;;;;24363:18;24289:92;24285:138;;;-1:-1:-1;;;;;24384:22:0;;;;;;:13;:22;;;;;:39;;;24149:282;;;:::o;18148:555::-;18245:7;;18281;;18198;;;;;18299:289;18323:9;:16;18319:20;;18299:289;;;18389:7;18365;:21;18373:9;18383:1;18373:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18373:12:0;18365:21;;;;;;;;;;;;;:31;;:66;;;18424:7;18400;:21;18408:9;18418:1;18408:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18408:12:0;18400:21;;;;;;;;;;;;;:31;18365:66;18361:97;;;18441:7;;18450;;18433:25;;;;;;;;;18361:97;18483:34;18495:7;:21;18503:9;18513:1;18503:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18503:12:0;18495:21;;;;;;;;;;;;;18483:7;;:11;:34::i;:::-;18473:44;;18542:34;18554:7;:21;18562:9;18572:1;18562:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18562:12:0;18554:21;;;;;;;;;;;;;18542:7;;:11;:34::i;:::-;18532:44;-1:-1:-1;18341:3:0;;18299:289;;;-1:-1:-1;18624:7:0;;18612;;:20;;:11;:20::i;:::-;18602:7;:30;18598:61;;;18642:7;;18651;;18634:25;;;;;;;;18598:61;18678:7;;-1:-1:-1;18687:7:0;-1:-1:-1;18148:555:0;;;:::o;26385:589::-;26535:16;;;26549:1;26535:16;;;26511:21;26535:16;;;;;26511:21;26535:16;;;;;;;;;;-1:-1:-1;26535:16:0;26511:40;;26580:4;26562;26567:1;26562:7;;;;;;;;;;;;;:23;-1:-1:-1;;;;;26562:23:0;;;-1:-1:-1;;;;;26562:23:0;;;;;26606:15;-1:-1:-1;;;;;26606:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26606:22:0;26596:7;;:4;;26601:1;;26596:7;;;;;;;;;;;:32;-1:-1:-1;;;;;26596:32:0;;;-1:-1:-1;;;;;26596:32:0;;;;;26641:62;26658:4;26673:15;26691:11;26641:8;:62::i;:::-;26742:15;-1:-1:-1;;;;;26742:66:0;;26823:11;26849:1;26893:4;26920;26940:15;26742:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26742:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26385:589;;:::o;26982:513::-;27130:62;27147:4;27162:15;27180:11;27130:8;:62::i;:::-;27235:15;-1:-1:-1;;;;;27235:31:0;;27274:9;27307:4;27327:11;27353:1;27396;27439:7;:5;:7::i;:::-;27461:15;27235:252;;;;;;;;;;;;;-1:-1:-1;;;;;27235:252:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27235:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;26982:513:0:o;18711:1552::-;18799:7;18819:19;18842:10;:8;:10::i;:::-;18819:33;-1:-1:-1;18889:7:0;18934:2;18964:1;18953:12;;18949:60;;;-1:-1:-1;18986:23:0;;18949:60;19022:12;19037:48;19050:7;19059;;19068:16;19037:12;:48::i;:::-;19022:63;;19096:18;19117:54;19130:7;19139:13;;19154:16;19117:12;:54::i;:::-;19096:75;;19182:18;19203:85;19216:7;19225:5;:44;;19252:17;;19225:44;;;19233:16;;19225:44;19271:16;19203:12;:85::i;:::-;19182:106;;19299:16;19318:52;19331:7;19340:11;;19353:16;19318:12;:52::i;:::-;19299:71;;19381:20;19404:89;19417:7;19426:5;:48;;19455:19;;19426:48;;;19434:18;;19426:48;19476:16;19404:12;:89::i;:::-;19530:21;;19381:112;;-1:-1:-1;19530:37:0;;19556:10;19530:25;:37::i;:::-;19506:21;:61;19600:19;;:33;;19624:8;19600:23;:33::i;:::-;19578:19;:55;19668:21;;:37;;19694:10;19668:25;:37::i;:::-;19644:21;:61;19742:23;;:41;;19770:12;19742:27;:41::i;:::-;19716:23;:67;19814:14;;;:27;;;19870:28;;;:39;;;:54;;;;-1:-1:-1;19935:14:0;19952:58;19912:12;19952:40;19901:8;19952:40;19831:10;19888;19952:14;:26::i;:::-;:30;;:40::i;:58::-;19935:75;-1:-1:-1;20023:40:0;20035:21;:4;20044:11;20035:8;:21::i;:::-;20058:4;20023:11;:40::i;:::-;20101:51;20128:23;:6;20139:11;20128:10;:23::i;:::-;20117:4;20101:22;;;;:7;:22;;;;;;;:26;:51::i;:::-;20092:4;20076:22;;;;:7;:22;;;;;;;;:76;;;;20188:7;:22;;;;:34;;20215:6;20188:26;:34::i;:::-;20179:4;20163:22;;;;:7;:22;;;;;:59;-1:-1:-1;20240:15:0;;18711:1552;-1:-1:-1;;;;;;;;;;;18711:1552:0:o;29573:351::-;-1:-1:-1;;;;;29760:15:0;;;;;;:7;:15;;;;;;:28;;29780:7;29760:19;:28::i;:::-;-1:-1:-1;;;;;29742:15:0;;;;;;:7;:15;;;;;;;;:46;;;;29817:7;:15;;;;:28;;29837:7;29817:19;:28::i;:::-;-1:-1:-1;;;;;29799:15:0;;;;;;;:7;:15;;;;;;:46;;;;29877:18;;;;;;;:39;;29900:15;29877:22;:39::i;:::-;-1:-1:-1;;;;;29856:18:0;;;;;;;:7;:18;;;;;:60;;;;-1:-1:-1;;;;;29573:351:0:o;29202:363::-;-1:-1:-1;;;;;29387:15:0;;;;;;:7;:15;;;;;;:28;;29407:7;29387:19;:28::i;:::-;-1:-1:-1;;;;;29369:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;29447:18;;;;;:7;:18;;;;;:39;;29470:15;29447:22;:39::i;:::-;-1:-1:-1;;;;;29426:18:0;;;;;;:7;:18;;;;;;;;:60;;;;29518:7;:18;;;;:39;;29541:15;29518:22;:39::i;28904:290::-;-1:-1:-1;;;;;29087:15:0;;;;;;:7;:15;;;;;;:28;;29107:7;29087:19;:28::i;29932:422::-;-1:-1:-1;;;;;30119:15:0;;;;;;:7;:15;;;;;;:28;;30139:7;30119:19;:28::i;:::-;-1:-1:-1;;;;;30101:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30176:7;:15;;;;:28;;30196:7;30176:19;:28::i;20271:204::-;20377:7;20404:63;20464:2;20404:55;20441:17;20404:32;20430:5;20404:55;:7;20416:8;20404:11;:21::i;:63::-;20397:70;20271:204;-1:-1:-1;;;;20271:204:0:o

Swarm Source

ipfs://2a412f3db0489cccfe0cff451fd3d016822a339400fc0c3f3cb0a406ad332d65
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.