ETH Price: $3,733.58 (+3.89%)

Token

ERC-20: FREELON MUSK (FREELON)
 

Overview

Max Total Supply

1,000,000,000,000 FREELON

Holders

149

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
543,042,921.036797987 FREELON

Value
$0.00
0x2027869fbc84a449d92d24b0d610ebc7df6b92f4
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TokenCutter

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-30
*/

// https://t.me/FreelonMuskTG
// https://twitter.com/FreelonMuskCoin



// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/contracts/utils/Context.sol

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/utils/math/SafeMath.sol

// OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol

// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @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.
 */
abstract 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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual 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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: contracts/ProofFactory.sol


pragma solidity ^0.8.0;





interface IBURNER {
    function burnEmUp() external payable;    
}

 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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
     function factory() external pure returns (address);
     function WETH() 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);
    function removeLiquidityETH(
      address token,
      uint liquidity,
      uint amountTokenMin,
      uint amountETHMin,
      address to,
      uint deadline
    ) external returns (uint amountToken, uint amountETH);     
 }

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

interface IWETH is IERC20 {
    function deposit() external payable;
}

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IUniswapV2Router02 router;
    IWETH public RewardToken; 

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 currentIndex;
    bool initialized;

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router, address _reflectionToken, address token) {
        router = IUniswapV2Router02(_router);
        RewardToken = IWETH(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
        _token = token;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

        RewardToken.deposit{value: msg.value}();

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
    
    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            RewardToken.transfer(shareholder, amount);            
        }
    }
    
    function claimDividend() external {
        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}








interface ITeamFinanceLocker {
        function lockTokens(address _tokenAddress, address _withdrawalAddress, uint256 _amount, uint256 _unlockTime) external payable returns (uint256 _id);
}

interface ITokenCutter {
    function swapTradingStatus() external;       
    function setLaunchedAt() external;       
    function cancelToken() external;       
}

library Fees {
    struct allFees {
        uint256 reflectionFee;
        uint256 reflectionFeeOnSell;
        uint256 lpFee;
        uint256 lpFeeOnSell;
        uint256 devFee;
        uint256 devFeeOnSell;
    }
}

contract TokenCutter is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    IDividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;


    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    address payable public hldBurnerAddress;
    address public hldAdmin;

    bool public restrictWhales = true;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public launchedAt;
    uint256 public hldFee = 2;

    uint256 public reflectionFee;
    uint256 public lpFee;
    uint256 public devFee;

    uint256 public reflectionFeeOnSell;
    uint256 public lpFeeOnSell;
    uint256 public devFeeOnSell;

    uint256 public totalFee;
    uint256 public totalFeeIfSelling;

    IUniswapV2Router02 public router;
    address public pair;
    address public factory;
    address public tokenOwner;
    address payable public devWallet;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingStatus = true;

    mapping (address => bool) private bots;    

    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    uint256 public swapThreshold;
    
    constructor(string memory tokenName, string memory tokenSymbol, uint256 initialSupply, address owner, address reflectionToken
                ,address routerAddress, address initialHldAdmin, address initialHldBurner, Fees.allFees memory fees) {    
        _name = tokenName;
        _symbol = tokenSymbol;
        _totalSupply += initialSupply;
        _balances[msg.sender] += initialSupply;        

        _maxTxAmount = initialSupply * 2 / 200;
        _walletMax = initialSupply * 3 / 100;    
        swapThreshold = initialSupply * 5 / 4000;

        router = IUniswapV2Router02(routerAddress);
        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        
        dividendDistributor = new DividendDistributor(routerAddress, reflectionToken, address(this));

        factory = msg.sender;

        isFeeExempt[address(this)] = true;
        isFeeExempt[factory] = true;

        isTxLimitExempt[owner] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[factory] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true; 

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true; 

        reflectionFee = fees.reflectionFee;
        lpFee = fees.lpFee;
        devFee = fees.devFee;

        reflectionFeeOnSell = fees.reflectionFeeOnSell;
        lpFeeOnSell = fees.lpFeeOnSell;
        devFeeOnSell = fees.devFeeOnSell;

        totalFee = devFee.add(lpFee).add(reflectionFee).add(hldFee);
        totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(reflectionFeeOnSell).add(hldFee);         

        require(totalFee <= 12, "Too high fee");
        require(totalFeeIfSelling <= 17, "Too high fee");

        tokenOwner = owner;
        devWallet = payable(owner);
        hldBurnerAddress = payable(initialHldBurner);
        hldAdmin = initialHldAdmin;

    }

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

    modifier onlyHldAdmin() {
        require(hldAdmin == _msgSender(), "Ownable: caller is not the hldAdmin");
        _;
    }

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

    modifier onlyFactory() {
        require(factory == _msgSender(), "Ownable: caller is not the factory");
        _;
    }



    //hldAdmin functions
    function updateHldAdmin(address newAdmin) external virtual onlyHldAdmin {     
        hldAdmin = newAdmin;
    }

    function updateHldBurnerAddress(address newhldBurnerAddress) external onlyHldAdmin {     
        hldBurnerAddress = payable(newhldBurnerAddress);
    }    
    
    function setBots(address[] memory bots_) external onlyHldAdmin {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
        
    //Factory functions
    function swapTradingStatus() external onlyFactory {
        tradingStatus = !tradingStatus;
    }

    function setLaunchedAt() external onlyFactory {
        require(launchedAt == 0, "already launched");
        launchedAt = block.timestamp;
    }          
 
    function cancelToken() external onlyFactory {
        isFeeExempt[address(router)] = true;
        isTxLimitExempt[address(router)] = true;
        isTxLimitExempt[tokenOwner] = true;
        tradingStatus = true;
    }         
 

    //Owner functions
    function changeFees(uint256 initialReflectionFee, uint256 initialReflectionFeeOnSell, uint256 initialLpFee, uint256 initialLpFeeOnSell,
        uint256 initialDevFee, uint256 initialDevFeeOnSell) external onlyOwner {

        reflectionFee = initialReflectionFee;
        lpFee = initialLpFee;
        devFee = initialDevFee;

        reflectionFeeOnSell = initialReflectionFeeOnSell;
        lpFeeOnSell = initialLpFeeOnSell;
        devFeeOnSell = initialDevFeeOnSell;

        totalFee = devFee.add(lpFee).add(reflectionFee).add(hldFee);
        totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(reflectionFeeOnSell).add(hldFee);

        require(totalFee <= 12, "Too high fee");
        require(totalFeeIfSelling <= 17, "Too high fee");
    }     

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        require(launchedAt != 0, "!launched");
        require(block.timestamp >= launchedAt + 24 hours, "too soon");
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        require(launchedAt != 0, "!launched");
        require(block.timestamp >= launchedAt + 24 hours, "too soon");        
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external onlyOwner {
        require(launchedAt != 0, "!launched");        
        require(block.timestamp >= launchedAt + 24 hours, "too soon");                
        restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        require(launchedAt != 0, "!launched");        
        require(block.timestamp >= launchedAt + 24 hours, "too soon");        
        isTxLimitExempt[holder] = exempt;
    }


    function changeDistributorGas(uint256 _distributorGas) external onlyOwner {
        distributorGas = _distributorGas;
    }


    function reduceHldFee() external onlyOwner {
        require(hldFee == 2, "!already reduced");                
        require(launchedAt != 0, "!launched");        
        require(block.timestamp >= launchedAt + 72 hours, "too soon");

        hldFee = 1;
        totalFee = devFee.add(lpFee).add(reflectionFee).add(hldFee);
        totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(reflectionFeeOnSell).add(hldFee); 
    }    


    function setDevWallet(address payable newDevWallet) external onlyOwner {
        devWallet = payable(newDevWallet);
    } 

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        dividendDistributor.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    function delBot(address notbot) external onlyOwner {
        bots[notbot] = false;
    }       

    function getCirculatingSupply() external view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() external view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() external view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() external view virtual override returns (uint8) {
        return 9;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() external view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) external virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) external virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     *
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        
        require(tradingStatus, "!trading");
        require(!bots[sender] && !bots[recipient]);

        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "tx");

        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax, "wallet");
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try dividendDistributor.process(distributorGas) {} catch {}


        emit Transfer(sender, recipient, finalAmount);
        return true;
    }    

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }    

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */



    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    /**
     * @dev Spend `amount` form the allowance of `owner` toward `spender`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(lpFee).div(totalFee).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 devBalance = amountETH.mul(devFee).div(totalFee);
        uint256 hldBalance = amountETH.mul(hldFee).div(totalFee);

        uint256 amountEthLiquidity = amountETH.mul(lpFee).div(totalFee).div(2);
        uint256 amountEthReflection = amountETH.sub(devBalance).sub(hldBalance).sub(amountEthLiquidity);


        if(amountETH > 0){
            IBURNER(hldBurnerAddress).burnEmUp{value: hldBalance}();            
            devWallet.transfer(devBalance);
        }        

        try dividendDistributor.deposit{value: amountEthReflection}() {} catch {}

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountEthLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                0x000000000000000000000000000000000000dEaD,
                block.timestamp
            );
        }      
    
    }

    receive() external payable { }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"reflectionToken","type":"address"},{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"initialHldAdmin","type":"address"},{"internalType":"address","name":"initialHldBurner","type":"address"},{"components":[{"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"internalType":"uint256","name":"reflectionFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"lpFee","type":"uint256"},{"internalType":"uint256","name":"lpFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"devFeeOnSell","type":"uint256"}],"internalType":"struct Fees.allFees","name":"fees","type":"tuple"}],"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":"cancelToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"changeDistributorGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialReflectionFee","type":"uint256"},{"internalType":"uint256","name":"initialReflectionFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialLpFee","type":"uint256"},{"internalType":"uint256","name":"initialLpFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialDevFee","type":"uint256"},{"internalType":"uint256","name":"initialDevFeeOnSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","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":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract IDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldBurnerAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceHldFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLaunchedAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"updateHldAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newhldBurnerAddress","type":"address"}],"name":"updateHldBurnerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526207a1206001556008805460ff60a01b1916600160a01b1790556002600d55601a805460ff60b01b1960ff60a81b19909116600160a81b1716600160b01b1790553480156200005257600080fd5b50604051620043643803806200436483398101604081905262000075916200079e565b88516200008a9060059060208c01906200061f565b508751620000a09060069060208b01906200061f565b508660046000828254620000b5919062000979565b90915550503360009081526002602052604081208054899290620000db90849062000979565b9091555060c89050620000f0886002620009b5565b620000fc919062000994565b601c5560646200010e886003620009b5565b6200011a919062000994565b601d55610fa06200012d886005620009b5565b62000139919062000994565b601e55601680546001600160a01b0319166001600160a01b0386811691909117918290556040805163c45a015560e01b81529051929091169163c45a015591600480820192602092909190829003018186803b1580156200019957600080fd5b505afa158015620001ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d4919062000781565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023157600080fd5b505afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c919062000781565b306040518363ffffffff1660e01b81526004016200028c929190620008ea565b602060405180830381600087803b158015620002a757600080fd5b505af1158015620002bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e2919062000781565b601780546001600160a01b0319166001600160a01b03928316179055306000818152600360209081526040808320601654909516835293905282902060001990559051859187916200033490620006ae565b620003429392919062000904565b604051809103906000f0801580156200035f573d6000803e3d6000fd5b50600080546001600160a01b039283166001600160a01b0319918216178255601880549091163317815530808352600960209081526040808520805460ff19908116600190811790925585548816875282872080548216831790558d88168752600a845282872080548216831790556017805489168852838820805483168417905595548816875282872080548216831790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80548216831790557f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3805482168317905594549096168552600b8252808520805485168717905591845281842080548416861790557f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac341580548416861790559280527fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76805490921690931790558251600e81905591830151600f8190556080840151601081905584830151601155606085015160125560a0850151601355600d54620005289490936200051493919284929091620016b86200060a821b17901c565b6200060a60201b620016b81790919060201c565b6014819055506200055a600d5462000514601154620005146012546013546200060a60201b620016b81790919060201c565b601555601454600c10156200058c5760405162461bcd60e51b8152600401620005839062000927565b60405180910390fd5b60116015541115620005b25760405162461bcd60e51b8152600401620005839062000927565b50601980546001600160a01b039687166001600160a01b03199182168117909255601a80548216909217909155600780549287169282169290921790915560088054929095169116179092555062000a409350505050565b600062000618828462000979565b9392505050565b8280546200062d90620009d7565b90600052602060002090601f0160209004810192826200065157600085556200069c565b82601f106200066c57805160ff19168380011785556200069c565b828001600101855582156200069c579182015b828111156200069c5782518255916020019190600101906200067f565b50620006aa929150620006bc565b5090565b610ea480620034c083390190565b5b80821115620006aa5760008155600101620006bd565b80516001600160a01b0381168114620006eb57600080fd5b919050565b600082601f83011262000701578081fd5b81516001600160401b038111156200071d576200071d62000a2a565b602062000733601f8301601f191682016200094d565b828152858284870101111562000747578384fd5b835b838110156200076657858101830151828201840152820162000749565b838111156200077757848385840101525b5095945050505050565b60006020828403121562000793578081fd5b6200061882620006d3565b6000806000806000806000806000898b036101c0811215620007be578586fd5b8a516001600160401b0380821115620007d5578788fd5b620007e38e838f01620006f0565b9b5060208d0151915080821115620007f9578788fd5b620008078e838f01620006f0565b9a5060408d015199506200081e60608e01620006d3565b98506200082e60808e01620006d3565b97506200083e60a08e01620006d3565b96506200084e60c08e01620006d3565b95506200085e60e08e01620006d3565b945060c060ff198401121562000872578384fd5b604051925060c083019150828210818311171562000894576200089462000a2a565b5080604052506101008b015181526101208b015160208201526101408b015160408201526101608b015160608201526101808b015160808201526101a08b015160a0820152809150509295985092959850929598565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6020808252600c908201526b546f6f20686967682066656560a01b604082015260600190565b6040518181016001600160401b038111828210171562000971576200097162000a2a565b604052919050565b600082198211156200098f576200098f62000a14565b500190565b600082620009b057634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615620009d257620009d262000a14565b500290565b600281046001821680620009ec57607f821691505b6020821081141562000a0e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b612a708062000a506000396000f3fe6080604052600436106103855760003560e01c806383ad7994116101d1578063c45a015511610102578063dd62ed3e116100a0578063f7c722051161006f578063f7c7220514610948578063f887ea4014610968578063fabe62831461097d578063fbd757531461099d5761038c565b8063dd62ed3e146108de578063e5d85108146108fe578063e66b1d1e14610913578063ede1588f146109335761038c565b8063cc6badb3116100dc578063cc6badb31461087f578063d1db380914610894578063d4fb9a01146108a9578063d920334e146108be5761038c565b8063c45a015514610835578063ca987b0e1461084a578063cb29813c1461085f5761038c565b8063a457c2d71161016f578063b515566a11610149578063b515566a146107cb578063bad3ea6a146107eb578063bb542ef014610800578063bf56b371146108205761038c565b8063a457c2d714610776578063a8aa1b3114610796578063a9059cbb146107ab5761038c565b80639502c426116101ab5780639502c4261461071757806395d89b411461072c578063a3a2e89e14610741578063a3e67610146107615761038c565b806383ad7994146106cd5780638b42507f146106e25780638ea5220f146107025761038c565b80633dab5269116102b65780636827e764116102545780637c0ff205116102235780637c0ff2051461066e5780637d1db4a5146106835780637db1342c14610698578063807c2d9c146106b85761038c565b80636827e76414610602578063704ce43e1461061757806370a082311461062c578063774b58471461064c5761038c565b806343d49dda1161029057806343d49dda146105a357806344de2e4c146105c35780634a74bb02146105d8578063546a8811146105ed5761038c565b80633dab5269146105435780633f4218e0146105635780634355855a146105835761038c565b806323b872dd116103235780632b112e49116102fd5780632b112e49146104cc5780632d48e896146104e1578063313ce5671461050157806339509351146105235761038c565b806323b872dd1461047757806327193bc414610497578063273123b7146104ac5761038c565b806316d9962b1161035f57806316d9962b1461040b57806318160ddd1461042d5780631df4ccfc146104425780631f53ac02146104575761038c565b80630445b6671461039157806306fdde03146103bc578063095ea7b3146103de5761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a66109b2565b6040516103b3919061289d565b60405180910390f35b3480156103c857600080fd5b506103d16109b8565b6040516103b39190612571565b3480156103ea57600080fd5b506103fe6103f9366004612335565b610a4a565b6040516103b39190612566565b34801561041757600080fd5b5061042b610426366004612456565b610a6c565b005b34801561043957600080fd5b506103a6610aaf565b34801561044e57600080fd5b506103a6610ab5565b34801561046357600080fd5b5061042b610472366004612251565b610abb565b34801561048357600080fd5b506103fe6104923660046122c1565b610b12565b3480156104a357600080fd5b5061042b610b43565b3480156104b857600080fd5b5061042b6104c7366004612251565b610b9e565b3480156104d857600080fd5b506103a6610bf4565b3480156104ed57600080fd5b5061042b6104fc36600461246e565b610c25565b34801561050d57600080fd5b50610516610cc2565b6040516103b39190612924565b34801561052f57600080fd5b506103fe61053e366004612335565b610cc7565b34801561054f57600080fd5b5061042b61055e36600461243b565b610d13565b34801561056f57600080fd5b506103fe61057e366004612251565b610d6a565b34801561058f57600080fd5b506103fe61059e366004612251565b610d7f565b3480156105af57600080fd5b5061042b6105be366004612251565b610d94565b3480156105cf57600080fd5b506103fe610deb565b3480156105e457600080fd5b506103fe610dfb565b3480156105f957600080fd5b5061042b610e0b565b34801561060e57600080fd5b506103a6610eae565b34801561062357600080fd5b506103a6610eb4565b34801561063857600080fd5b506103a6610647366004612251565b610eba565b34801561065857600080fd5b50610661610ed9565b6040516103b391906124fe565b34801561067a57600080fd5b506103a6610ee8565b34801561068f57600080fd5b506103a6610eee565b3480156106a457600080fd5b5061042b6106b3366004612456565b610ef4565b3480156106c457600080fd5b506103a6610f7c565b3480156106d957600080fd5b506103a6610f82565b3480156106ee57600080fd5b506103fe6106fd366004612251565b610f88565b34801561070e57600080fd5b50610661610f9d565b34801561072357600080fd5b506103a6610fac565b34801561073857600080fd5b506103d1610fb2565b34801561074d57600080fd5b5061042b61075c366004612301565b610fc1565b34801561076d57600080fd5b50610661611021565b34801561078257600080fd5b506103fe610791366004612335565b611030565b3480156107a257600080fd5b5061066161109c565b3480156107b757600080fd5b506103fe6107c6366004612335565b6110ab565b3480156107d757600080fd5b5061042b6107e6366004612360565b6110c3565b3480156107f757600080fd5b50610661611172565b34801561080c57600080fd5b5061042b61081b366004612251565b611181565b34801561082c57600080fd5b506103a66111d8565b34801561084157600080fd5b506106616111de565b34801561085657600080fd5b506103a66111ed565b34801561086b57600080fd5b5061042b61087a3660046124bc565b6111f3565b34801561088b57600080fd5b506103a66112d1565b3480156108a057600080fd5b5061042b6112d7565b3480156108b557600080fd5b506103fe6113d5565b3480156108ca57600080fd5b5061042b6108d9366004612456565b6113e5565b3480156108ea57600080fd5b506103a66108f9366004612289565b61146d565b34801561090a57600080fd5b506103a6611498565b34801561091f57600080fd5b5061042b61092e366004612421565b61149e565b34801561093f57600080fd5b5061066161153f565b34801561095457600080fd5b5061042b610963366004612251565b61154e565b34801561097457600080fd5b506106616115a5565b34801561098957600080fd5b5061042b610998366004612301565b6115b4565b3480156109a957600080fd5b5061042b611662565b601e5481565b6060600580546109c7906129a0565b80601f01602080910402602001604051908101604052809291908181526020018280546109f3906129a0565b8015610a405780601f10610a1557610100808354040283529160200191610a40565b820191906000526020600020905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b600080610a556116c4565b9050610a628185856116c8565b5060019392505050565b610a746116c4565b6019546001600160a01b03908116911614610aaa5760405162461bcd60e51b8152600401610aa190612707565b60405180910390fd5b600155565b60045490565b60145481565b610ac36116c4565b6019546001600160a01b03908116911614610af05760405162461bcd60e51b8152600401610aa190612707565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b600080610b1d6116c4565b9050610b2a85828561177c565b610b358585856117c6565b5060019150505b9392505050565b610b4b6116c4565b6018546001600160a01b03908116911614610b785760405162461bcd60e51b8152600401610aa190612816565b600c5415610b985760405162461bcd60e51b8152600401610aa19061273c565b42600c55565b610ba66116c4565b6019546001600160a01b03908116911614610bd35760405162461bcd60e51b8152600401610aa190612707565b6001600160a01b03166000908152601b60205260409020805460ff19169055565b6000610c20610c036000610eba565b610c1a610c1161dead610eba565b60045490611c45565b90611c45565b905090565b610c2d6116c4565b6019546001600160a01b03908116911614610c5a5760405162461bcd60e51b8152600401610aa190612707565b6000546040516316a4744b60e11b81526001600160a01b0390911690632d48e89690610c8c9085908590600401612916565b600060405180830381600087803b158015610ca657600080fd5b505af1158015610cba573d6000803e3d6000fd5b505050505050565b600990565b600080610cd26116c4565b6001600160a01b03808216600090815260036020908152604080832093891683529290522054909150610a629082908690610d0e908790612932565b6116c8565b610d1b6116c4565b6019546001600160a01b03908116911614610d485760405162461bcd60e51b8152600401610aa190612707565b601a8054921515600160a81b0260ff60a81b1990931692909217909155601e55565b60096020526000908152604090205460ff1681565b600b6020526000908152604090205460ff1681565b610d9c6116c4565b6008546001600160a01b03908116911614610dc95760405162461bcd60e51b8152600401610aa1906126c4565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600854600160a01b900460ff1681565b601a54600160a81b900460ff1681565b610e136116c4565b6018546001600160a01b03908116911614610e405760405162461bcd60e51b8152600401610aa190612816565b601680546001600160a01b039081166000908152600960209081526040808320805460ff199081166001908117909255955485168452600a909252808320805486168317905560195490931682529190208054909216179055601a805460ff60b01b1916600160b01b179055565b60105481565b600f5481565b6001600160a01b0381166000908152600260205260409020545b919050565b6007546001600160a01b031681565b60125481565b601c5481565b610efc6116c4565b6019546001600160a01b03908116911614610f295760405162461bcd60e51b8152600401610aa190612707565b600c54610f485760405162461bcd60e51b8152600401610aa1906126a1565b600c54610f589062015180612932565b421015610f775760405162461bcd60e51b8152600401610aa19061265f565b601d55565b601d5481565b600e5481565b600a6020526000908152604090205460ff1681565b601a546001600160a01b031681565b60135481565b6060600680546109c7906129a0565b610fc96116c4565b6019546001600160a01b03908116911614610ff65760405162461bcd60e51b8152600401610aa190612707565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6019546001600160a01b031681565b60008061103b6116c4565b6001600160a01b03808216600090815260036020908152604080832093891683529290522054909150838110156110845760405162461bcd60e51b8152600401610aa190612858565b61109182868684036116c8565b506001949350505050565b6017546001600160a01b031681565b6000806110b66116c4565b90506110918185856117c6565b6110cb6116c4565b6008546001600160a01b039081169116146110f85760405162461bcd60e51b8152600401610aa1906126c4565b60005b815181101561116e576001601b600084848151811061112a57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611166816129db565b9150506110fb565b5050565b6000546001600160a01b031681565b6111896116c4565b6019546001600160a01b039081169116146111b65760405162461bcd60e51b8152600401610aa190612707565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600c5481565b6018546001600160a01b031681565b60155481565b6111fb6116c4565b6019546001600160a01b039081169116146112285760405162461bcd60e51b8152600401610aa190612707565b600e869055600f8490556010829055601185905560128390556013819055600d5461125f90611259888186896116b8565b906116b8565b601481905550611288600d546112596011546112596012546013546116b890919063ffffffff16565b601555601454600c10156112ae5760405162461bcd60e51b8152600401610aa190612766565b60116015541115610cba5760405162461bcd60e51b8152600401610aa190612766565b60115481565b6112df6116c4565b6019546001600160a01b0390811691161461130c5760405162461bcd60e51b8152600401610aa190612707565b600d5460021461132e5760405162461bcd60e51b8152600401610aa19061278c565b600c5461134d5760405162461bcd60e51b8152600401610aa1906126a1565b600c5461135d906203f480612932565b42101561137c5760405162461bcd60e51b8152600401610aa19061265f565b6001600d819055506113a7600d54611259600e54611259600f546010546116b890919063ffffffff16565b6014819055506113d0600d546112596011546112596012546013546116b890919063ffffffff16565b601555565b601a54600160b01b900460ff1681565b6113ed6116c4565b6019546001600160a01b0390811691161461141a5760405162461bcd60e51b8152600401610aa190612707565b600c546114395760405162461bcd60e51b8152600401610aa1906126a1565b600c546114499062015180612932565b4210156114685760405162461bcd60e51b8152600401610aa19061265f565b601c55565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b600d5481565b6114a66116c4565b6019546001600160a01b039081169116146114d35760405162461bcd60e51b8152600401610aa190612707565b600c546114f25760405162461bcd60e51b8152600401610aa1906126a1565b600c546115029062015180612932565b4210156115215760405162461bcd60e51b8152600401610aa19061265f565b60088054911515600160a01b0260ff60a01b19909216919091179055565b6008546001600160a01b031681565b6115566116c4565b6008546001600160a01b039081169116146115835760405162461bcd60e51b8152600401610aa1906126c4565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b031681565b6115bc6116c4565b6019546001600160a01b039081169116146115e95760405162461bcd60e51b8152600401610aa190612707565b600c546116085760405162461bcd60e51b8152600401610aa1906126a1565b600c546116189062015180612932565b4210156116375760405162461bcd60e51b8152600401610aa19061265f565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b61166a6116c4565b6018546001600160a01b039081169116146116975760405162461bcd60e51b8152600401610aa190612816565b601a805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6000610b3c8284612932565b3390565b6001600160a01b0383166116ee5760405162461bcd60e51b8152600401610aa1906127d2565b6001600160a01b0382166117145760405162461bcd60e51b8152600401610aa1906125e6565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061176f90859061289d565b60405180910390a3505050565b6000611788848461146d565b905060001981146117c057818110156117b35760405162461bcd60e51b8152600401610aa190612628565b6117c084848484036116c8565b50505050565b601a54600090600160b01b900460ff166117f25760405162461bcd60e51b8152600401610aa1906125c4565b6001600160a01b0384166000908152601b602052604090205460ff1615801561183457506001600160a01b0383166000908152601b602052604090205460ff16155b61183d57600080fd5b601a54600160a01b900460ff16156118615761185a848484611c51565b9050610b3c565b601c548211158061188a57506001600160a01b0384166000908152600a602052604090205460ff165b6118a65760405162461bcd60e51b8152600401610aa1906127b6565b6001600160a01b0383166000908152600a602052604090205460ff161580156118d85750600854600160a01b900460ff165b1561192157601d546001600160a01b03841660009081526002602052604090205461190390846116b8565b11156119215760405162461bcd60e51b8152600401610aa190612681565b6017546001600160a01b031633148015906119465750601a54600160a01b900460ff16155b801561195b5750601a54600160a81b900460ff165b80156119785750601e543060009081526002602052604090205410155b1561198557611985611d35565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600290915291909120546119d7918490612131565b6001600160a01b038516600090815260026020908152604080832093909355600990529081205460ff16158015611a2757506001600160a01b03841660009081526009602052604090205460ff16155b611a315782611a3c565b611a3c85858561215d565b6001600160a01b038516600090815260026020526040902054909150611a6290826116b8565b6001600160a01b038086166000908152600260209081526040808320949094559188168152600b909152205460ff16611b0257600080546001600160a01b0387811683526002602052604092839020549251630a5b654b60e11b81529116916314b6ca9691611ad5918991600401612512565b600060405180830381600087803b158015611aef57600080fd5b505af1925050508015611b00575060015b505b6001600160a01b0384166000908152600b602052604090205460ff16611b8f57600080546001600160a01b0386811683526002602052604092839020549251630a5b654b60e11b81529116916314b6ca9691611b62918891600401612512565b600060405180830381600087803b158015611b7c57600080fd5b505af1925050508015611b8d575060015b505b6000546001546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611bc39160040161289d565b600060405180830381600087803b158015611bdd57600080fd5b505af1925050508015611bee575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c32919061289d565b60405180910390a3506001949350505050565b6000610b3c8284612989565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600290915291822054611ca2918490612131565b6001600160a01b038086166000908152600260205260408082209390935590851681522054611cd190836116b8565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d2390869061289d565b60405180910390a35060019392505050565b601a805460ff60a01b1916600160a01b179055306000908152600260208190526040822054601454600f54919392611d7c929091611d76918290879061221e565b9061222a565b90506000611d8a8383611c45565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611dd257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e2657600080fd5b505afa158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e919061226d565b81600181518110611e7f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790611ec59085906000908690309042906004016128a6565b600060405180830381600087803b158015611edf57600080fd5b505af1158015611ef3573d6000803e3d6000fd5b5050505060004790506000611f19601454611d766010548561221e90919063ffffffff16565b90506000611f38601454611d76600d548661221e90919063ffffffff16565b90506000611f5c6002611d76601454611d76600f548961221e90919063ffffffff16565b90506000611f7082610c1a85818989611c45565b9050841561201d57600760009054906101000a90046001600160a01b03166001600160a01b0316630c50f89d846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611fc857600080fd5b505af1158015611fdc573d6000803e3d6000fd5b5050601a546040516001600160a01b03909116935087156108fc0292508791506000818181858888f1935050505015801561201b573d6000803e3d6000fd5b505b60008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206b57600080fd5b505af19350505050801561207d575060015b5087156121195760165460405163f305d71960e01b81526001600160a01b039091169063f305d7199084906120c39030908d90600090819061dead90429060040161252b565b6060604051808303818588803b1580156120dc57600080fd5b505af11580156120f0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612115919061248f565b5050505b5050601a805460ff60a01b1916905550505050505050565b600081848411156121555760405162461bcd60e51b8152600401610aa19190612571565b505050900390565b60175460009081906001600160a01b0385811691161461217f57601454612183565b6015545b905060006121966064611d76868561221e565b306000908152600260205260409020549091506121b390826116b8565b30600081815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061220290859061289d565b60405180910390a36122148482611c45565b9695505050505050565b6000610b3c828461296a565b6000610b3c828461294a565b8035610ed481612a22565b80358015158114610ed457600080fd5b600060208284031215612262578081fd5b8135610b3c81612a22565b60006020828403121561227e578081fd5b8151610b3c81612a22565b6000806040838503121561229b578081fd5b82356122a681612a22565b915060208301356122b681612a22565b809150509250929050565b6000806000606084860312156122d5578081fd5b83356122e081612a22565b925060208401356122f081612a22565b929592945050506040919091013590565b60008060408385031215612313578182fd5b823561231e81612a22565b915061232c60208401612241565b90509250929050565b60008060408385031215612347578182fd5b823561235281612a22565b946020939093013593505050565b60006020808385031215612372578182fd5b823567ffffffffffffffff80821115612389578384fd5b818501915085601f83011261239c578384fd5b8135818111156123ae576123ae612a0c565b838102604051858282010181811085821117156123cd576123cd612a0c565b604052828152858101935084860182860187018a10156123eb578788fd5b8795505b838610156124145761240081612236565b8552600195909501949386019386016123ef565b5098975050505050505050565b600060208284031215612432578081fd5b610b3c82612241565b6000806040838503121561244d578182fd5b61235283612241565b600060208284031215612467578081fd5b5035919050565b60008060408385031215612480578182fd5b50508035926020909101359150565b6000806000606084860312156124a3578283fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156124d4578182fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b8181101561259d57858101830151858201604001528201612581565b818111156125ae5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600890820152672174726164696e6760c01b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601d908201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604082015260600190565b6020808252600890820152673a37b79039b7b7b760c11b604082015260600190565b6020808252600690820152651dd85b1b195d60d21b604082015260600190565b602080825260099082015268085b185d5b98da195960ba1b604082015260600190565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460408201526236b4b760e91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f185b1c9958591e481b185d5b98da195960821b604082015260600190565b6020808252600c908201526b546f6f20686967682066656560a01b604082015260600190565b60208082526010908201526f08585b1c9958591e481c99591d58d95960821b604082015260600190565b6020808252600290820152610e8f60f31b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526022908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520666163746f604082015261727960f01b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156128f55784516001600160a01b0316835293830193918301916001016128d0565b50506001600160a01b03969096166060850152505050608001529392505050565b918252602082015260400190565b60ff91909116815260200190565b60008219821115612945576129456129f6565b500190565b60008261296557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612984576129846129f6565b500290565b60008282101561299b5761299b6129f6565b500390565b6002810460018216806129b457607f821691505b602082108114156129d557634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129ef576129ef6129f6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612a3757600080fd5b5056fea264697066735822122045c8e4597e2cef128783525999cb653a073f266cc735ef0e3d1fffc248e5fade64736f6c6343000800003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610ea4380380610ea4833981016040819052610054916100c1565b600180546001600160a01b039485166001600160a01b03199182161790915560028054821673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2179055600080549290941691161790915550610103565b80516001600160a01b03811681146100bc57600080fd5b919050565b6000806000606084860312156100d5578283fd5b6100de846100a5565b92506100ec602085016100a5565b91506100fa604085016100a5565b90509250925092565b610d92806101126000396000f3fe6080604052600436106100e85760003560e01c8063ce7c2ac21161008a578063f0fc6bca11610059578063f0fc6bca1461021a578063f1e9f1e51461022f578063ffb2c47914610251578063ffd49c8414610271576100e8565b8063ce7c2ac2146101b9578063d0e30db0146101e8578063e2d2e219146101f0578063efca2eed14610205576100e8565b80632d48e896116100c65780632d48e8961461015a5780633a98ef391461017a5780634fab0ae81461018f578063997664d7146101a4576100e8565b806311ce023d146100ed57806314b6ca961461011857806328fd31981461013a575b600080fd5b3480156100f957600080fd5b50610102610286565b60405161010f9190610c9e565b60405180910390f35b34801561012457600080fd5b50610138610133366004610ba0565b61028c565b005b34801561014657600080fd5b50610102610155366004610b86565b6103b1565b34801561016657600080fd5b50610138610175366004610c19565b61043d565b34801561018657600080fd5b5061010261045f565b34801561019b57600080fd5b50610102610465565b3480156101b057600080fd5b5061010261046b565b3480156101c557600080fd5b506101d96101d4366004610b86565b610471565b60405161010f93929190610ca7565b610138610492565b3480156101fc57600080fd5b50610102610665565b34801561021157600080fd5b5061010261066b565b34801561022657600080fd5b50610138610671565b34801561023b57600080fd5b506102446106aa565b60405161010f9190610c3a565b34801561025d57600080fd5b5061013861026c366004610be9565b6106b9565b34801561027d57600080fd5b506101026107d8565b600b5481565b6000546001600160a01b031633146102a357600080fd5b6001600160a01b038216600090815260066020526040902054156102ca576102ca826107de565b6000811180156102f057506001600160a01b038216600090815260066020526040902054155b15610303576102fe82610922565b610336565b8015801561032857506001600160a01b03821660009081526006602052604090205415155b156103365761033682610983565b6001600160a01b03821660009081526006602052604090205460075461036791839161036191610ad0565b90610ae3565b6007556001600160a01b038216600090815260066020526040902081905561038e81610aef565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b0381166000908152600660205260408120546103d657506000610438565b6001600160a01b0382166000908152600660205260408120546103f890610aef565b6001600160a01b03841660009081526006602052604090206001015490915080821161042957600092505050610438565b6104338282610ad0565b925050505b919050565b6000546001600160a01b0316331461045457600080fd5b600c91909155600d55565b60075481565b600d5481565b60085481565b60066020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104a957600080fd5b6002546040516370a0823160e01b81526000916001600160a01b0316906370a08231906104da903090600401610c3a565b60206040518083038186803b1580156104f257600080fd5b505afa158015610506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052a9190610c01565b9050600260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561057c57600080fd5b505af1158015610590573d6000803e3d6000fd5b50506002546040516370a0823160e01b81526000945061062493508592506001600160a01b03909116906370a08231906105ce903090600401610c3a565b60206040518083038186803b1580156105e657600080fd5b505afa1580156105fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061e9190610c01565b90610ad0565b6008549091506106349082610ae3565b600855600754600b5461065e916106559161064f9085610b12565b90610b1e565b600a5490610ae3565b600a555050565b600a5481565b60095481565b61067a33610b2a565b61069f5760405162461bcd60e51b815260040161069690610c67565b60405180910390fd5b6106a8336107de565b565b6002546001600160a01b031681565b6000546001600160a01b031633146106d057600080fd5b600354806106de57506107d5565b60008060005a90505b84821080156106f557508383105b156107d05783600e5410610709576000600e555b6107496003600e548154811061072f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316610b2a565b1561078e5761078e6003600e548154811061077457634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03166107de565b6107a361079c5a8390610ad0565b8390610ae3565b91505a600e805491925060006107b883610d2b565b919050555082806107c890610d2b565b9350506106e7565b505050505b50565b600c5481565b6001600160a01b038116600090815260066020526040902054610800576107d5565b600061080b826103b1565b9050801561091e576009546108209082610ae3565b6009556001600160a01b038216600090815260056020908152604080832042905560069091529020600201546108569082610ae3565b6001600160a01b038316600090815260066020526040902060028101919091555461088090610aef565b6001600160a01b038084166000908152600660205260409081902060010192909255600254915163a9059cbb60e01b815291169063a9059cbb906108ca9085908590600401610c4e565b602060405180830381600087803b1580156108e457600080fd5b505af11580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190610bc9565b505b5050565b600380546001600160a01b039092166000818152600460205260408120849055600184018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180546001600160a01b0319169091179055565b6003805461099390600190610d14565b815481106109b157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03848116845260049092526040909220546003805492909316929181106109fd57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610a4990600190610d14565b81548110610a6757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610aab57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610adc8284610d14565b9392505050565b6000610adc8284610cbd565b6000610b0c600b5461064f600a5485610b1290919063ffffffff16565b92915050565b6000610adc8284610cf5565b6000610adc8284610cd5565b600c546001600160a01b03821660009081526005602052604081205490914291610b549190610cbd565b108015610b0c5750600d54610b68836103b1565b1192915050565b80356001600160a01b038116811461043857600080fd5b600060208284031215610b97578081fd5b610adc82610b6f565b60008060408385031215610bb2578081fd5b610bbb83610b6f565b946020939093013593505050565b600060208284031215610bda578081fd5b81518015158114610adc578182fd5b600060208284031215610bfa578081fd5b5035919050565b600060208284031215610c12578081fd5b5051919050565b60008060408385031215610c2b578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b60208082526017908201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60008219821115610cd057610cd0610d46565b500190565b600082610cf057634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610d0f57610d0f610d46565b500290565b600082821015610d2657610d26610d46565b500390565b6000600019821415610d3f57610d3f610d46565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212201c2623fe53867b0df83e779e22ba13a56d49f81065e6799e74a46db689295b4f64736f6c6343000800003300000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000003635c9adc5dea000000000000000000000000000007cb822416b52b50d41a412c3b32966a0a4771d31000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000719183de756077eea0b389abea18f64b5caa17270000000000000000000000007a94943ca0aae417105c27787750aaa8bb978c50000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c465245454c4f4e204d55534b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007465245454c4f4e00000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106103855760003560e01c806383ad7994116101d1578063c45a015511610102578063dd62ed3e116100a0578063f7c722051161006f578063f7c7220514610948578063f887ea4014610968578063fabe62831461097d578063fbd757531461099d5761038c565b8063dd62ed3e146108de578063e5d85108146108fe578063e66b1d1e14610913578063ede1588f146109335761038c565b8063cc6badb3116100dc578063cc6badb31461087f578063d1db380914610894578063d4fb9a01146108a9578063d920334e146108be5761038c565b8063c45a015514610835578063ca987b0e1461084a578063cb29813c1461085f5761038c565b8063a457c2d71161016f578063b515566a11610149578063b515566a146107cb578063bad3ea6a146107eb578063bb542ef014610800578063bf56b371146108205761038c565b8063a457c2d714610776578063a8aa1b3114610796578063a9059cbb146107ab5761038c565b80639502c426116101ab5780639502c4261461071757806395d89b411461072c578063a3a2e89e14610741578063a3e67610146107615761038c565b806383ad7994146106cd5780638b42507f146106e25780638ea5220f146107025761038c565b80633dab5269116102b65780636827e764116102545780637c0ff205116102235780637c0ff2051461066e5780637d1db4a5146106835780637db1342c14610698578063807c2d9c146106b85761038c565b80636827e76414610602578063704ce43e1461061757806370a082311461062c578063774b58471461064c5761038c565b806343d49dda1161029057806343d49dda146105a357806344de2e4c146105c35780634a74bb02146105d8578063546a8811146105ed5761038c565b80633dab5269146105435780633f4218e0146105635780634355855a146105835761038c565b806323b872dd116103235780632b112e49116102fd5780632b112e49146104cc5780632d48e896146104e1578063313ce5671461050157806339509351146105235761038c565b806323b872dd1461047757806327193bc414610497578063273123b7146104ac5761038c565b806316d9962b1161035f57806316d9962b1461040b57806318160ddd1461042d5780631df4ccfc146104425780631f53ac02146104575761038c565b80630445b6671461039157806306fdde03146103bc578063095ea7b3146103de5761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a66109b2565b6040516103b3919061289d565b60405180910390f35b3480156103c857600080fd5b506103d16109b8565b6040516103b39190612571565b3480156103ea57600080fd5b506103fe6103f9366004612335565b610a4a565b6040516103b39190612566565b34801561041757600080fd5b5061042b610426366004612456565b610a6c565b005b34801561043957600080fd5b506103a6610aaf565b34801561044e57600080fd5b506103a6610ab5565b34801561046357600080fd5b5061042b610472366004612251565b610abb565b34801561048357600080fd5b506103fe6104923660046122c1565b610b12565b3480156104a357600080fd5b5061042b610b43565b3480156104b857600080fd5b5061042b6104c7366004612251565b610b9e565b3480156104d857600080fd5b506103a6610bf4565b3480156104ed57600080fd5b5061042b6104fc36600461246e565b610c25565b34801561050d57600080fd5b50610516610cc2565b6040516103b39190612924565b34801561052f57600080fd5b506103fe61053e366004612335565b610cc7565b34801561054f57600080fd5b5061042b61055e36600461243b565b610d13565b34801561056f57600080fd5b506103fe61057e366004612251565b610d6a565b34801561058f57600080fd5b506103fe61059e366004612251565b610d7f565b3480156105af57600080fd5b5061042b6105be366004612251565b610d94565b3480156105cf57600080fd5b506103fe610deb565b3480156105e457600080fd5b506103fe610dfb565b3480156105f957600080fd5b5061042b610e0b565b34801561060e57600080fd5b506103a6610eae565b34801561062357600080fd5b506103a6610eb4565b34801561063857600080fd5b506103a6610647366004612251565b610eba565b34801561065857600080fd5b50610661610ed9565b6040516103b391906124fe565b34801561067a57600080fd5b506103a6610ee8565b34801561068f57600080fd5b506103a6610eee565b3480156106a457600080fd5b5061042b6106b3366004612456565b610ef4565b3480156106c457600080fd5b506103a6610f7c565b3480156106d957600080fd5b506103a6610f82565b3480156106ee57600080fd5b506103fe6106fd366004612251565b610f88565b34801561070e57600080fd5b50610661610f9d565b34801561072357600080fd5b506103a6610fac565b34801561073857600080fd5b506103d1610fb2565b34801561074d57600080fd5b5061042b61075c366004612301565b610fc1565b34801561076d57600080fd5b50610661611021565b34801561078257600080fd5b506103fe610791366004612335565b611030565b3480156107a257600080fd5b5061066161109c565b3480156107b757600080fd5b506103fe6107c6366004612335565b6110ab565b3480156107d757600080fd5b5061042b6107e6366004612360565b6110c3565b3480156107f757600080fd5b50610661611172565b34801561080c57600080fd5b5061042b61081b366004612251565b611181565b34801561082c57600080fd5b506103a66111d8565b34801561084157600080fd5b506106616111de565b34801561085657600080fd5b506103a66111ed565b34801561086b57600080fd5b5061042b61087a3660046124bc565b6111f3565b34801561088b57600080fd5b506103a66112d1565b3480156108a057600080fd5b5061042b6112d7565b3480156108b557600080fd5b506103fe6113d5565b3480156108ca57600080fd5b5061042b6108d9366004612456565b6113e5565b3480156108ea57600080fd5b506103a66108f9366004612289565b61146d565b34801561090a57600080fd5b506103a6611498565b34801561091f57600080fd5b5061042b61092e366004612421565b61149e565b34801561093f57600080fd5b5061066161153f565b34801561095457600080fd5b5061042b610963366004612251565b61154e565b34801561097457600080fd5b506106616115a5565b34801561098957600080fd5b5061042b610998366004612301565b6115b4565b3480156109a957600080fd5b5061042b611662565b601e5481565b6060600580546109c7906129a0565b80601f01602080910402602001604051908101604052809291908181526020018280546109f3906129a0565b8015610a405780601f10610a1557610100808354040283529160200191610a40565b820191906000526020600020905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b600080610a556116c4565b9050610a628185856116c8565b5060019392505050565b610a746116c4565b6019546001600160a01b03908116911614610aaa5760405162461bcd60e51b8152600401610aa190612707565b60405180910390fd5b600155565b60045490565b60145481565b610ac36116c4565b6019546001600160a01b03908116911614610af05760405162461bcd60e51b8152600401610aa190612707565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b600080610b1d6116c4565b9050610b2a85828561177c565b610b358585856117c6565b5060019150505b9392505050565b610b4b6116c4565b6018546001600160a01b03908116911614610b785760405162461bcd60e51b8152600401610aa190612816565b600c5415610b985760405162461bcd60e51b8152600401610aa19061273c565b42600c55565b610ba66116c4565b6019546001600160a01b03908116911614610bd35760405162461bcd60e51b8152600401610aa190612707565b6001600160a01b03166000908152601b60205260409020805460ff19169055565b6000610c20610c036000610eba565b610c1a610c1161dead610eba565b60045490611c45565b90611c45565b905090565b610c2d6116c4565b6019546001600160a01b03908116911614610c5a5760405162461bcd60e51b8152600401610aa190612707565b6000546040516316a4744b60e11b81526001600160a01b0390911690632d48e89690610c8c9085908590600401612916565b600060405180830381600087803b158015610ca657600080fd5b505af1158015610cba573d6000803e3d6000fd5b505050505050565b600990565b600080610cd26116c4565b6001600160a01b03808216600090815260036020908152604080832093891683529290522054909150610a629082908690610d0e908790612932565b6116c8565b610d1b6116c4565b6019546001600160a01b03908116911614610d485760405162461bcd60e51b8152600401610aa190612707565b601a8054921515600160a81b0260ff60a81b1990931692909217909155601e55565b60096020526000908152604090205460ff1681565b600b6020526000908152604090205460ff1681565b610d9c6116c4565b6008546001600160a01b03908116911614610dc95760405162461bcd60e51b8152600401610aa1906126c4565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600854600160a01b900460ff1681565b601a54600160a81b900460ff1681565b610e136116c4565b6018546001600160a01b03908116911614610e405760405162461bcd60e51b8152600401610aa190612816565b601680546001600160a01b039081166000908152600960209081526040808320805460ff199081166001908117909255955485168452600a909252808320805486168317905560195490931682529190208054909216179055601a805460ff60b01b1916600160b01b179055565b60105481565b600f5481565b6001600160a01b0381166000908152600260205260409020545b919050565b6007546001600160a01b031681565b60125481565b601c5481565b610efc6116c4565b6019546001600160a01b03908116911614610f295760405162461bcd60e51b8152600401610aa190612707565b600c54610f485760405162461bcd60e51b8152600401610aa1906126a1565b600c54610f589062015180612932565b421015610f775760405162461bcd60e51b8152600401610aa19061265f565b601d55565b601d5481565b600e5481565b600a6020526000908152604090205460ff1681565b601a546001600160a01b031681565b60135481565b6060600680546109c7906129a0565b610fc96116c4565b6019546001600160a01b03908116911614610ff65760405162461bcd60e51b8152600401610aa190612707565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6019546001600160a01b031681565b60008061103b6116c4565b6001600160a01b03808216600090815260036020908152604080832093891683529290522054909150838110156110845760405162461bcd60e51b8152600401610aa190612858565b61109182868684036116c8565b506001949350505050565b6017546001600160a01b031681565b6000806110b66116c4565b90506110918185856117c6565b6110cb6116c4565b6008546001600160a01b039081169116146110f85760405162461bcd60e51b8152600401610aa1906126c4565b60005b815181101561116e576001601b600084848151811061112a57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611166816129db565b9150506110fb565b5050565b6000546001600160a01b031681565b6111896116c4565b6019546001600160a01b039081169116146111b65760405162461bcd60e51b8152600401610aa190612707565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600c5481565b6018546001600160a01b031681565b60155481565b6111fb6116c4565b6019546001600160a01b039081169116146112285760405162461bcd60e51b8152600401610aa190612707565b600e869055600f8490556010829055601185905560128390556013819055600d5461125f90611259888186896116b8565b906116b8565b601481905550611288600d546112596011546112596012546013546116b890919063ffffffff16565b601555601454600c10156112ae5760405162461bcd60e51b8152600401610aa190612766565b60116015541115610cba5760405162461bcd60e51b8152600401610aa190612766565b60115481565b6112df6116c4565b6019546001600160a01b0390811691161461130c5760405162461bcd60e51b8152600401610aa190612707565b600d5460021461132e5760405162461bcd60e51b8152600401610aa19061278c565b600c5461134d5760405162461bcd60e51b8152600401610aa1906126a1565b600c5461135d906203f480612932565b42101561137c5760405162461bcd60e51b8152600401610aa19061265f565b6001600d819055506113a7600d54611259600e54611259600f546010546116b890919063ffffffff16565b6014819055506113d0600d546112596011546112596012546013546116b890919063ffffffff16565b601555565b601a54600160b01b900460ff1681565b6113ed6116c4565b6019546001600160a01b0390811691161461141a5760405162461bcd60e51b8152600401610aa190612707565b600c546114395760405162461bcd60e51b8152600401610aa1906126a1565b600c546114499062015180612932565b4210156114685760405162461bcd60e51b8152600401610aa19061265f565b601c55565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b600d5481565b6114a66116c4565b6019546001600160a01b039081169116146114d35760405162461bcd60e51b8152600401610aa190612707565b600c546114f25760405162461bcd60e51b8152600401610aa1906126a1565b600c546115029062015180612932565b4210156115215760405162461bcd60e51b8152600401610aa19061265f565b60088054911515600160a01b0260ff60a01b19909216919091179055565b6008546001600160a01b031681565b6115566116c4565b6008546001600160a01b039081169116146115835760405162461bcd60e51b8152600401610aa1906126c4565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b031681565b6115bc6116c4565b6019546001600160a01b039081169116146115e95760405162461bcd60e51b8152600401610aa190612707565b600c546116085760405162461bcd60e51b8152600401610aa1906126a1565b600c546116189062015180612932565b4210156116375760405162461bcd60e51b8152600401610aa19061265f565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b61166a6116c4565b6018546001600160a01b039081169116146116975760405162461bcd60e51b8152600401610aa190612816565b601a805460ff60b01b198116600160b01b9182900460ff1615909102179055565b6000610b3c8284612932565b3390565b6001600160a01b0383166116ee5760405162461bcd60e51b8152600401610aa1906127d2565b6001600160a01b0382166117145760405162461bcd60e51b8152600401610aa1906125e6565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061176f90859061289d565b60405180910390a3505050565b6000611788848461146d565b905060001981146117c057818110156117b35760405162461bcd60e51b8152600401610aa190612628565b6117c084848484036116c8565b50505050565b601a54600090600160b01b900460ff166117f25760405162461bcd60e51b8152600401610aa1906125c4565b6001600160a01b0384166000908152601b602052604090205460ff1615801561183457506001600160a01b0383166000908152601b602052604090205460ff16155b61183d57600080fd5b601a54600160a01b900460ff16156118615761185a848484611c51565b9050610b3c565b601c548211158061188a57506001600160a01b0384166000908152600a602052604090205460ff165b6118a65760405162461bcd60e51b8152600401610aa1906127b6565b6001600160a01b0383166000908152600a602052604090205460ff161580156118d85750600854600160a01b900460ff165b1561192157601d546001600160a01b03841660009081526002602052604090205461190390846116b8565b11156119215760405162461bcd60e51b8152600401610aa190612681565b6017546001600160a01b031633148015906119465750601a54600160a01b900460ff16155b801561195b5750601a54600160a81b900460ff165b80156119785750601e543060009081526002602052604090205410155b1561198557611985611d35565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600290915291909120546119d7918490612131565b6001600160a01b038516600090815260026020908152604080832093909355600990529081205460ff16158015611a2757506001600160a01b03841660009081526009602052604090205460ff16155b611a315782611a3c565b611a3c85858561215d565b6001600160a01b038516600090815260026020526040902054909150611a6290826116b8565b6001600160a01b038086166000908152600260209081526040808320949094559188168152600b909152205460ff16611b0257600080546001600160a01b0387811683526002602052604092839020549251630a5b654b60e11b81529116916314b6ca9691611ad5918991600401612512565b600060405180830381600087803b158015611aef57600080fd5b505af1925050508015611b00575060015b505b6001600160a01b0384166000908152600b602052604090205460ff16611b8f57600080546001600160a01b0386811683526002602052604092839020549251630a5b654b60e11b81529116916314b6ca9691611b62918891600401612512565b600060405180830381600087803b158015611b7c57600080fd5b505af1925050508015611b8d575060015b505b6000546001546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611bc39160040161289d565b600060405180830381600087803b158015611bdd57600080fd5b505af1925050508015611bee575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c32919061289d565b60405180910390a3506001949350505050565b6000610b3c8284612989565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600290915291822054611ca2918490612131565b6001600160a01b038086166000908152600260205260408082209390935590851681522054611cd190836116b8565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d2390869061289d565b60405180910390a35060019392505050565b601a805460ff60a01b1916600160a01b179055306000908152600260208190526040822054601454600f54919392611d7c929091611d76918290879061221e565b9061222a565b90506000611d8a8383611c45565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611dd257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e2657600080fd5b505afa158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e919061226d565b81600181518110611e7f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790611ec59085906000908690309042906004016128a6565b600060405180830381600087803b158015611edf57600080fd5b505af1158015611ef3573d6000803e3d6000fd5b5050505060004790506000611f19601454611d766010548561221e90919063ffffffff16565b90506000611f38601454611d76600d548661221e90919063ffffffff16565b90506000611f5c6002611d76601454611d76600f548961221e90919063ffffffff16565b90506000611f7082610c1a85818989611c45565b9050841561201d57600760009054906101000a90046001600160a01b03166001600160a01b0316630c50f89d846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611fc857600080fd5b505af1158015611fdc573d6000803e3d6000fd5b5050601a546040516001600160a01b03909116935087156108fc0292508791506000818181858888f1935050505015801561201b573d6000803e3d6000fd5b505b60008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206b57600080fd5b505af19350505050801561207d575060015b5087156121195760165460405163f305d71960e01b81526001600160a01b039091169063f305d7199084906120c39030908d90600090819061dead90429060040161252b565b6060604051808303818588803b1580156120dc57600080fd5b505af11580156120f0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612115919061248f565b5050505b5050601a805460ff60a01b1916905550505050505050565b600081848411156121555760405162461bcd60e51b8152600401610aa19190612571565b505050900390565b60175460009081906001600160a01b0385811691161461217f57601454612183565b6015545b905060006121966064611d76868561221e565b306000908152600260205260409020549091506121b390826116b8565b30600081815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061220290859061289d565b60405180910390a36122148482611c45565b9695505050505050565b6000610b3c828461296a565b6000610b3c828461294a565b8035610ed481612a22565b80358015158114610ed457600080fd5b600060208284031215612262578081fd5b8135610b3c81612a22565b60006020828403121561227e578081fd5b8151610b3c81612a22565b6000806040838503121561229b578081fd5b82356122a681612a22565b915060208301356122b681612a22565b809150509250929050565b6000806000606084860312156122d5578081fd5b83356122e081612a22565b925060208401356122f081612a22565b929592945050506040919091013590565b60008060408385031215612313578182fd5b823561231e81612a22565b915061232c60208401612241565b90509250929050565b60008060408385031215612347578182fd5b823561235281612a22565b946020939093013593505050565b60006020808385031215612372578182fd5b823567ffffffffffffffff80821115612389578384fd5b818501915085601f83011261239c578384fd5b8135818111156123ae576123ae612a0c565b838102604051858282010181811085821117156123cd576123cd612a0c565b604052828152858101935084860182860187018a10156123eb578788fd5b8795505b838610156124145761240081612236565b8552600195909501949386019386016123ef565b5098975050505050505050565b600060208284031215612432578081fd5b610b3c82612241565b6000806040838503121561244d578182fd5b61235283612241565b600060208284031215612467578081fd5b5035919050565b60008060408385031215612480578182fd5b50508035926020909101359150565b6000806000606084860312156124a3578283fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156124d4578182fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b8181101561259d57858101830151858201604001528201612581565b818111156125ae5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600890820152672174726164696e6760c01b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601d908201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604082015260600190565b6020808252600890820152673a37b79039b7b7b760c11b604082015260600190565b6020808252600690820152651dd85b1b195d60d21b604082015260600190565b602080825260099082015268085b185d5b98da195960ba1b604082015260600190565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460408201526236b4b760e91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f185b1c9958591e481b185d5b98da195960821b604082015260600190565b6020808252600c908201526b546f6f20686967682066656560a01b604082015260600190565b60208082526010908201526f08585b1c9958591e481c99591d58d95960821b604082015260600190565b6020808252600290820152610e8f60f31b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526022908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520666163746f604082015261727960f01b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156128f55784516001600160a01b0316835293830193918301916001016128d0565b50506001600160a01b03969096166060850152505050608001529392505050565b918252602082015260400190565b60ff91909116815260200190565b60008219821115612945576129456129f6565b500190565b60008261296557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612984576129846129f6565b500290565b60008282101561299b5761299b6129f6565b500390565b6002810460018216806129b457607f821691505b602082108114156129d557634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129ef576129ef6129f6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612a3757600080fd5b5056fea264697066735822122045c8e4597e2cef128783525999cb653a073f266cc735ef0e3d1fffc248e5fade64736f6c63430008000033

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

00000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000003635c9adc5dea000000000000000000000000000007cb822416b52b50d41a412c3b32966a0a4771d31000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000719183de756077eea0b389abea18f64b5caa17270000000000000000000000007a94943ca0aae417105c27787750aaa8bb978c50000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c465245454c4f4e204d55534b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007465245454c4f4e00000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : tokenName (string): FREELON MUSK
Arg [1] : tokenSymbol (string): FREELON
Arg [2] : initialSupply (uint256): 1000000000000000000000
Arg [3] : owner (address): 0x7cB822416b52B50d41A412C3b32966A0A4771D31
Arg [4] : reflectionToken (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [5] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [6] : initialHldAdmin (address): 0x719183De756077eea0b389aBea18F64B5CAa1727
Arg [7] : initialHldBurner (address): 0x7A94943ca0AaE417105c27787750Aaa8bB978c50
Arg [8] : fees (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
18 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000200
Arg [2] : 00000000000000000000000000000000000000000000003635c9adc5dea00000
Arg [3] : 0000000000000000000000007cb822416b52b50d41a412c3b32966a0a4771d31
Arg [4] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [5] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [6] : 000000000000000000000000719183de756077eea0b389abea18f64b5caa1727
Arg [7] : 0000000000000000000000007a94943ca0aae417105c27787750aaa8bb978c50
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [14] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [15] : 465245454c4f4e204d55534b0000000000000000000000000000000000000000
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [17] : 465245454c4f4e00000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

21893:19582:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23479:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30723:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;33083:203::-;;;;;;;;;;-1:-1:-1;33083:203:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;29136:125::-;;;;;;;;;;-1:-1:-1;29136:125:0;;;;;:::i;:::-;;:::i;:::-;;31848:110;;;;;;;;;;;;;:::i;23008:23::-;;;;;;;;;;;;;:::i;29722:123::-;;;;;;;;;;-1:-1:-1;29722:123:0;;;;;:::i;:::-;;:::i;33876:297::-;;;;;;;;;;-1:-1:-1;33876:297:0;;;;;:::i;:::-;;:::i;26782:148::-;;;;;;;;;;;;;:::i;30404:90::-;;;;;;;;;;-1:-1:-1;30404:90:0;;;;;:::i;:::-;;:::i;30509:144::-;;;;;;;;;;;;;:::i;30190:206::-;;;;;;;;;;-1:-1:-1;30190:206:0;;;;;:::i;:::-;;:::i;31689:94::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;34582:242::-;;;;;;;;;;-1:-1:-1;34582:242:0;;;;;:::i;:::-;;:::i;29983:199::-;;;;;;;;;;-1:-1:-1;29983:199:0;;;;;:::i;:::-;;:::i;22576:44::-;;;;;;;;;;-1:-1:-1;22576:44:0;;;;;:::i;:::-;;:::i;22682:49::-;;;;;;;;;;-1:-1:-1;22682:49:0;;;;;:::i;:::-;;:::i;26172:115::-;;;;;;;;;;-1:-1:-1;26172:115:0;;;;;:::i;:::-;;:::i;22534:33::-;;;;;;;;;;;;;:::i;23274:40::-;;;;;;;;;;;;;:::i;26949:224::-;;;;;;;;;;;;;:::i;22868:21::-;;;;;;;;;;;;;:::i;22841:20::-;;;;;;;;;;;;;:::i;32021:127::-;;;;;;;;;;-1:-1:-1;32021:127:0;;;;;:::i;:::-;;:::i;22456:39::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;22939:26::-;;;;;;;;;;;;;:::i;23413:27::-;;;;;;;;;;;;;:::i;28225:233::-;;;;;;;;;;-1:-1:-1;28225:233:0;;;;;:::i;:::-;;:::i;23447:25::-;;;;;;;;;;;;;:::i;22806:28::-;;;;;;;;;;;;;:::i;22627:48::-;;;;;;;;;;-1:-1:-1;22627:48:0;;;;;:::i;:::-;;:::i;23205:32::-;;;;;;;;;;;;;:::i;22972:27::-;;;;;;;;;;;;;:::i;30944:106::-;;;;;;;;;;;;;:::i;28730:122::-;;;;;;;;;;-1:-1:-1;28730:122:0;;;;;:::i;:::-;;:::i;23173:25::-;;;;;;;;;;;;;:::i;35327:440::-;;;;;;;;;;-1:-1:-1;35327:440:0;;;;;:::i;:::-;;:::i;23118:19::-;;;;;;;;;;;;;:::i;32354:195::-;;;;;;;;;;-1:-1:-1;32354:195:0;;;;;:::i;:::-;;:::i;26465:169::-;;;;;;;;;;-1:-1:-1;26465:169:0;;;;;:::i;:::-;;:::i;21991:47::-;;;;;;;;;;;;;:::i;29854:121::-;;;;;;;;;;-1:-1:-1;29854:121:0;;;;;:::i;:::-;;:::i;22740:25::-;;;;;;;;;;;;;:::i;23144:22::-;;;;;;;;;;;;;:::i;23038:32::-;;;;;;;;;;;;;:::i;27216:766::-;;;;;;;;;;-1:-1:-1;27216:766:0;;;;;:::i;:::-;;:::i;22898:34::-;;;;;;;;;;;;;:::i;29271:437::-;;;;;;;;;;;;;:::i;23321:32::-;;;;;;;;;;;;;:::i;27995:222::-;;;;;;;;;;-1:-1:-1;27995:222:0;;;;;:::i;:::-;;:::i;32612:151::-;;;;;;;;;;-1:-1:-1;32612:151:0;;;;;:::i;:::-;;:::i;22772:25::-;;;;;;;;;;;;;:::i;28466:252::-;;;;;;;;;;-1:-1:-1;28466:252:0;;;;;:::i;:::-;;:::i;22502:23::-;;;;;;;;;;;;;:::i;26295:154::-;;;;;;;;;;-1:-1:-1;26295:154:0;;;;;:::i;:::-;;:::i;23079:32::-;;;;;;;;;;;;;:::i;28860:266::-;;;;;;;;;;-1:-1:-1;28860:266:0;;;;;:::i;:::-;;:::i;26675:99::-;;;;;;;;;;;;;:::i;23479:28::-;;;;:::o;30723:102::-;30779:13;30812:5;30805:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30723:102;:::o;33083:203::-;33168:4;33185:13;33201:12;:10;:12::i;:::-;33185:28;;33224:32;33233:5;33240:7;33249:6;33224:8;:32::i;:::-;-1:-1:-1;33274:4:0;;33083:203;-1:-1:-1;;;33083:203:0:o;29136:125::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;;;;;;;;;29221:14:::1;:32:::0;29136:125::o;31848:110::-;31938:12;;31848:110;:::o;23008:23::-;;;;:::o;29722:123::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;29804:9:::1;:33:::0;;-1:-1:-1;;;;;;29804:33:0::1;-1:-1:-1::0;;;;;29804:33:0;;;::::1;::::0;;;::::1;::::0;;29722:123::o;33876:297::-;34009:4;34026:15;34044:12;:10;:12::i;:::-;34026:30;;34067:38;34083:4;34089:7;34098:6;34067:15;:38::i;:::-;34116:27;34126:4;34132:2;34136:6;34116:9;:27::i;:::-;;34161:4;34154:11;;;33876:297;;;;;;:::o;26782:148::-;26063:12;:10;:12::i;:::-;26052:7;;-1:-1:-1;;;;;26052:7:0;;;:23;;;26044:70;;;;-1:-1:-1;;;26044:70:0;;;;;;;:::i;:::-;26847:10:::1;::::0;:15;26839:44:::1;;;;-1:-1:-1::0;;;26839:44:0::1;;;;;;;:::i;:::-;26907:15;26894:10;:28:::0;26782:148::o;30404:90::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30466:12:0::1;30481:5;30466:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;30466:20:0::1;::::0;;30404:90::o;30509:144::-;30564:7;30591:54;30629:15;22407:42;30629:9;:15::i;:::-;30591:33;30608:15;22334:42;30608:9;:15::i;:::-;30591:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;30584:61;;30509:144;:::o;30190:206::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;30303:19:::1;::::0;:77:::1;::::0;-1:-1:-1;;;30303:77:0;;-1:-1:-1;;;;;30303:19:0;;::::1;::::0;:43:::1;::::0;:77:::1;::::0;30347:12;;30361:18;;30303:77:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30190:206:::0;;:::o;31689:94::-;31774:1;31689:94;:::o;34582:242::-;34672:4;34689:13;34705:12;:10;:12::i;:::-;-1:-1:-1;;;;;34753:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;34689:28;;-1:-1:-1;34728:66:0;;34689:28;;34744:7;;34753:40;;34783:10;;34753:40;:::i;:::-;34728:8;:66::i;29983:199::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;30092:21:::1;:39:::0;;;::::1;;-1:-1:-1::0;;;30092:39:0::1;-1:-1:-1::0;;;;30092:39:0;;::::1;::::0;;;::::1;::::0;;;30142:13:::1;:32:::0;29983:199::o;22576:44::-;;;;;;;;;;;;;;;:::o;22682:49::-;;;;;;;;;;;;;;;:::o;26172:115::-;25799:12;:10;:12::i;:::-;25787:8;;-1:-1:-1;;;;;25787:8:0;;;:24;;;25779:72;;;;-1:-1:-1;;;25779:72:0;;;;;;;:::i;:::-;26260:8:::1;:19:::0;;-1:-1:-1;;;;;;26260:19:0::1;-1:-1:-1::0;;;;;26260:19:0;;;::::1;::::0;;;::::1;::::0;;26172:115::o;22534:33::-;;;-1:-1:-1;;;22534:33:0;;;;;:::o;23274:40::-;;;-1:-1:-1;;;23274:40:0;;;;;:::o;26949:224::-;26063:12;:10;:12::i;:::-;26052:7;;-1:-1:-1;;;;;26052:7:0;;;:23;;;26044:70;;;;-1:-1:-1;;;26044:70:0;;;;;;;:::i;:::-;27024:6:::1;::::0;;-1:-1:-1;;;;;27024:6:0;;::::1;27004:28;::::0;;;:11:::1;:28;::::0;;;;;;;:35;;-1:-1:-1;;27004:35:0;;::::1;27035:4;27004:35:::0;;::::1;::::0;;;27074:6;;;::::1;27050:32:::0;;:15:::1;:32:::0;;;;;;:39;;;::::1;::::0;::::1;::::0;;27116:10:::1;::::0;;;::::1;27100:27:::0;;;;;:34;;;;::::1;;::::0;;27145:13:::1;:20:::0;;-1:-1:-1;;;;27145:20:0::1;-1:-1:-1::0;;;27145:20:0::1;::::0;;26949:224::o;22868:21::-;;;;:::o;22841:20::-;;;;:::o;32021:127::-;-1:-1:-1;;;;;32122:18:0;;32095:7;32122:18;;;:9;:18;;;;;;32021:127;;;;:::o;22456:39::-;;;-1:-1:-1;;;;;22456:39:0;;:::o;22939:26::-;;;;:::o;23413:27::-;;;;:::o;28225:233::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;28308:10:::1;::::0;28300:37:::1;;;;-1:-1:-1::0;;;28300:37:0::1;;;;;;;:::i;:::-;28375:10;::::0;:21:::1;::::0;28388:8:::1;28375:21;:::i;:::-;28356:15;:40;;28348:61;;;;-1:-1:-1::0;;;28348:61:0::1;;;;;;;:::i;:::-;28428:10;:22:::0;28225:233::o;23447:25::-;;;;:::o;22806:28::-;;;;:::o;22627:48::-;;;;;;;;;;;;;;;:::o;23205:32::-;;;-1:-1:-1;;;;;23205:32:0;;:::o;22972:27::-;;;;:::o;30944:106::-;31002:13;31035:7;31028:14;;;;;:::i;28730:122::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28816:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;28816:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28730:122::o;23173:25::-;;;-1:-1:-1;;;;;23173:25:0;;:::o;35327:440::-;35422:4;35439:13;35455:12;:10;:12::i;:::-;-1:-1:-1;;;;;35505:18:0;;;35478:24;35505:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;35439:28;;-1:-1:-1;35551:35:0;;;;35543:85;;;;-1:-1:-1;;;35543:85:0;;;;;;;:::i;:::-;35664:60;35673:5;35680:7;35708:15;35689:16;:34;35664:8;:60::i;:::-;-1:-1:-1;35755:4:0;;35327:440;-1:-1:-1;;;;35327:440:0:o;23118:19::-;;;-1:-1:-1;;;;;23118:19:0;;:::o;32354:195::-;32435:4;32452:13;32468:12;:10;:12::i;:::-;32452:28;;32491;32501:5;32508:2;32512:6;32491:9;:28::i;26465:169::-;25799:12;:10;:12::i;:::-;25787:8;;-1:-1:-1;;;;;25787:8:0;;;:24;;;25779:72;;;;-1:-1:-1;;;25779:72:0;;;;;;;:::i;:::-;26544:6:::1;26539:88;26560:5;:12;26556:1;:16;26539:88;;;26611:4;26594;:14;26599:5;26605:1;26599:8;;;;;;-1:-1:-1::0;;;26599:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26594:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26594:14:0;:21;;-1:-1:-1;;26594:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26574:3;::::1;::::0;::::1;:::i;:::-;;;;26539:88;;;;26465:169:::0;:::o;21991:47::-;;;-1:-1:-1;;;;;21991:47:0;;:::o;29854:121::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;29940:10:::1;:27:::0;;-1:-1:-1;;;;;;29940:27:0::1;-1:-1:-1::0;;;;;29940:27:0;;;::::1;::::0;;;::::1;::::0;;29854:121::o;22740:25::-;;;;:::o;23144:22::-;;;-1:-1:-1;;;;;23144:22:0;;:::o;23038:32::-;;;;:::o;27216:766::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;27445:13:::1;:36:::0;;;27492:5:::1;:20:::0;;;27523:6:::1;:22:::0;;;27558:19:::1;:48:::0;;;27617:11:::1;:32:::0;;;27660:12:::1;:34:::0;;;27759:6:::1;::::0;27718:48:::1;::::0;:36:::1;27461:20:::0;27718:36;27532:13;27500:12;27718:10:::1;:17::i;:::-;:21:::0;::::1;:36::i;:48::-;27707:8;:59;;;;27797:66;27856:6;;27797:54;27831:19;;27797:29;27814:11;;27797:12;;:16;;:29;;;;:::i;:66::-;27777:17;:86:::0;27884:8:::1;::::0;27896:2:::1;-1:-1:-1::0;27884:14:0::1;27876:39;;;;-1:-1:-1::0;;;27876:39:0::1;;;;;;;:::i;:::-;27955:2;27934:17;;:23;;27926:48;;;;-1:-1:-1::0;;;27926:48:0::1;;;;;;;:::i;22898:34::-:0;;;;:::o;29271:437::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;29333:6:::1;;29343:1;29333:11;29325:40;;;;-1:-1:-1::0;;;29325:40:0::1;;;;;;;:::i;:::-;29400:10;::::0;29392:37:::1;;;;-1:-1:-1::0;;;29392:37:0::1;;;;;;;:::i;:::-;29475:10;::::0;:21:::1;::::0;29488:8:::1;29475:21;:::i;:::-;29456:15;:40;;29448:61;;;;-1:-1:-1::0;;;29448:61:0::1;;;;;;;:::i;:::-;29531:1;29522:6;:10;;;;29554:48;29595:6;;29554:36;29576:13;;29554:17;29565:5;;29554:6;;:10;;:17;;;;:::i;:48::-;29543:8;:59;;;;29633:66;29692:6;;29633:54;29667:19;;29633:29;29650:11;;29633:12;;:16;;:29;;;;:::i;:66::-;29613:17;:86:::0;29271:437::o;23321:32::-;;;-1:-1:-1;;;23321:32:0;;;;;:::o;27995:222::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;28074:10:::1;::::0;28066:37:::1;;;;-1:-1:-1::0;;;28066:37:0::1;;;;;;;:::i;:::-;28141:10;::::0;:21:::1;::::0;28154:8:::1;28141:21;:::i;:::-;28122:15;:40;;28114:61;;;;-1:-1:-1::0;;;28114:61:0::1;;;;;;;:::i;:::-;28186:12;:23:::0;27995:222::o;32612:151::-;-1:-1:-1;;;;;32728:18:0;;;32701:7;32728:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;32612:151::o;22772:25::-;;;;:::o;28466:252::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;28549:10:::1;::::0;28541:37:::1;;;;-1:-1:-1::0;;;28541:37:0::1;;;;;;;:::i;:::-;28624:10;::::0;:21:::1;::::0;28637:8:::1;28624:21;:::i;:::-;28605:15;:40;;28597:61;;;;-1:-1:-1::0;;;28597:61:0::1;;;;;;;:::i;:::-;28685:14;:25:::0;;;::::1;;-1:-1:-1::0;;;28685:25:0::1;-1:-1:-1::0;;;;28685:25:0;;::::1;::::0;;;::::1;::::0;;28466:252::o;22502:23::-;;;-1:-1:-1;;;;;22502:23:0;;:::o;26295:154::-;25799:12;:10;:12::i;:::-;25787:8;;-1:-1:-1;;;;;25787:8:0;;;:24;;;25779:72;;;;-1:-1:-1;;;25779:72:0;;;;;;;:::i;:::-;26394:16:::1;:47:::0;;-1:-1:-1;;;;;;26394:47:0::1;-1:-1:-1::0;;;;;26394:47:0;;;::::1;::::0;;;::::1;::::0;;26295:154::o;23079:32::-;;;-1:-1:-1;;;;;23079:32:0;;:::o;28860:266::-;25933:12;:10;:12::i;:::-;25919:10;;-1:-1:-1;;;;;25919:10:0;;;:26;;;25911:71;;;;-1:-1:-1;;;25911:71:0;;;;;;;:::i;:::-;28958:10:::1;::::0;28950:37:::1;;;;-1:-1:-1::0;;;28950:37:0::1;;;;;;;:::i;:::-;29033:10;::::0;:21:::1;::::0;29046:8:::1;29033:21;:::i;:::-;29014:15;:40;;29006:61;;;;-1:-1:-1::0;;;29006:61:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29086:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;29086:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28860:266::o;26675:99::-;26063:12;:10;:12::i;:::-;26052:7;;-1:-1:-1;;;;;26052:7:0;;;:23;;;26044:70;;;;-1:-1:-1;;;26044:70:0;;;;;;;:::i;:::-;26753:13:::1;::::0;;-1:-1:-1;;;;26736:30:0;::::1;-1:-1:-1::0;;;26753:13:0;;;::::1;;;26752:14;26736:30:::0;;::::1;;::::0;;26675:99::o;7486:98::-;7544:7;7571:5;7575:1;7571;:5;:::i;4412:98::-;4492:10;4412:98;:::o;38282:380::-;-1:-1:-1;;;;;38418:19:0;;38410:68;;;;-1:-1:-1;;;38410:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38497:21:0;;38489:68;;;;-1:-1:-1;;;38489:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38570:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;38622:32;;;;;38600:6;;38622:32;:::i;:::-;;;;;;;;38282:380;;;:::o;38949:453::-;39084:24;39111:25;39121:5;39128:7;39111:9;:25::i;:::-;39084:52;;-1:-1:-1;;39151:16:0;:37;39147:248;;39233:6;39213:16;:26;;39205:68;;;;-1:-1:-1;;;39205:68:0;;;;;;;:::i;:::-;39317:51;39326:5;39333:7;39361:6;39342:16;:25;39317:8;:51::i;:::-;38949:453;;;;:::o;35775:1438::-;35898:13;;35863:4;;-1:-1:-1;;;35898:13:0;;;;35890:34;;;;-1:-1:-1;;;35890:34:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35944:12:0;;;;;;:4;:12;;;;;;;;35943:13;:33;;;;-1:-1:-1;;;;;;35961:15:0;;;;;;:4;:15;;;;;;;;35960:16;35943:33;35935:42;;;;;;35993:16;;-1:-1:-1;;;35993:16:0;;;;35990:73;;;36019:41;36034:6;36042:9;36053:6;36019:14;:41::i;:::-;36012:48;;;;35990:73;36093:12;;36083:6;:22;;:49;;;-1:-1:-1;;;;;;36109:23:0;;;;;;:15;:23;;;;;;;;36083:49;36075:64;;;;-1:-1:-1;;;36075:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36156:26:0;;;;;;:15;:26;;;;;;;;36155:27;:45;;;;-1:-1:-1;36186:14:0;;-1:-1:-1;;;36186:14:0;;;;36155:45;36152:151;;;36270:10;;-1:-1:-1;;;;;36234:20:0;;;;;;:9;:20;;;;;;:32;;36259:6;36234:24;:32::i;:::-;:46;;36226:65;;;;-1:-1:-1;;;36226:65:0;;;;;;;:::i;:::-;36332:4;;-1:-1:-1;;;;;36332:4:0;36318:10;:18;;;;:39;;-1:-1:-1;36341:16:0;;-1:-1:-1;;;36341:16:0;;;;36340:17;36318:39;:64;;;;-1:-1:-1;36361:21:0;;-1:-1:-1;;;36361:21:0;;;;36318:64;:109;;;;-1:-1:-1;36414:13:0;;36404:4;36386:24;;;;:9;:24;;;;;;:41;;36318:109;36315:128;;;36430:10;:8;:10::i;:::-;36475:53;;;;;;;;;;;-1:-1:-1;;;36475:53:0;;;;;;;;-1:-1:-1;;;;;36475:17:0;;-1:-1:-1;36475:17:0;;;:9;:17;;;;;;;;:53;;36497:6;;36475:21;:53::i;:::-;-1:-1:-1;;;;;36455:17:0;;;;;;:9;:17;;;;;;;;:73;;;;36572:11;:19;;;;;;;;36571:20;:47;;;;-1:-1:-1;;;;;;36596:22:0;;;;;;:11;:22;;;;;;;;36595:23;36571:47;:93;;36658:6;36571:93;;;36621:34;36629:6;36637:9;36648:6;36621:7;:34::i;:::-;-1:-1:-1;;;;;36698:20:0;;;;;;:9;:20;;;;;;36549:115;;-1:-1:-1;36698:37:0;;36549:115;36698:24;:37::i;:::-;-1:-1:-1;;;;;36675:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;36781:24;;;;;:16;:24;;;;;;;36777:127;;36826:19;;;-1:-1:-1;;;;;36863:17:0;;;;;:9;:17;;;;;;;;36826:55;;-1:-1:-1;;;36826:55:0;;:19;;;:28;;:55;;36855:6;;36826:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36822:71;;-1:-1:-1;;;;;36920:27:0;;;;;;:16;:27;;;;;;;;36916:137;;36968:19;;;-1:-1:-1;;;;;37008:20:0;;;;;:9;:20;;;;;;;;36968:61;;-1:-1:-1;;;36968:61:0;;:19;;;:28;;:61;;36997:9;;36968:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36964:77;;37069:19;;;37097:14;37069:43;;-1:-1:-1;;;;;;37069:43:0;;-1:-1:-1;;;;;37069:19:0;;;;:27;;:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37065:59;37160:9;-1:-1:-1;;;;;37143:40:0;37152:6;-1:-1:-1;;;;;37143:40:0;;37171:11;37143:40;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;37201:4:0;;35775:1438;-1:-1:-1;;;;35775:1438:0:o;7867:98::-;7925:7;7952:5;7956:1;7952;:5;:::i;37225:330::-;37355:53;;;;;;;;;;;-1:-1:-1;;;37355:53:0;;;;;;;;-1:-1:-1;;;;;37355:17:0;;37318:4;37355:17;;;:9;:17;;;;;;;:53;;37377:6;;37355:21;:53::i;:::-;-1:-1:-1;;;;;37335:17:0;;;;;;;:9;:17;;;;;;:73;;;;37442:20;;;;;;;:32;;37467:6;37442:24;:32::i;:::-;-1:-1:-1;;;;;37419:20:0;;;;;;;:9;:20;;;;;;;:55;;;;37490:35;;;;;;;;;;37518:6;;37490:35;:::i;:::-;;;;;;;;-1:-1:-1;37543:4:0;37225:330;;;;;:::o;39857:1575::-;25658:16;:23;;-1:-1:-1;;;;25658:23:0;-1:-1:-1;;;25658:23:0;;;39963:4:::1;25658:23:::0;39945:24;;;:9:::1;:24;::::0;;;;;;;25658:16;40037:8;40026:5:::1;::::0;39945:24;;25658:23;40006:47:::1;::::0;39945:9;;40006:40:::1;::::0;;;39945:24;;40006:19:::1;:26::i;:::-;:30:::0;::::1;:40::i;:47::-;39980:73:::0;-1:-1:-1;40064:20:0::1;40087:36;:15:::0;39980:73;40087:19:::1;:36::i;:::-;40160:16;::::0;;40174:1:::1;40160:16:::0;;;;;::::1;::::0;;40064:59;;-1:-1:-1;40136:21:0::1;::::0;40160:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;40160:16:0::1;40136:40;;40205:4;40187;40192:1;40187:7;;;;;;-1:-1:-1::0;;;40187:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;40187:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;40231:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;40231:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;40187:7;;40231:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40221:4;40226:1;40221:7;;;;;;-1:-1:-1::0;;;40221:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;40221:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;40257:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;40257:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;40329:12;;40257:6:::1;::::0;40372:4;;40399::::1;::::0;40419:15:::1;::::0;40257:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;40458:17;40478:21;40458:41;;40510:18;40531:35;40557:8;;40531:21;40545:6;;40531:9;:13;;:21;;;;:::i;:35::-;40510:56;;40577:18;40598:35;40624:8;;40598:21;40612:6;;40598:9;:13;;:21;;;;:::i;:35::-;40577:56;;40646:26;40675:41;40714:1;40675:34;40700:8;;40675:20;40689:5;;40675:9;:13;;:20;;;;:::i;:41::-;40646:70:::0;-1:-1:-1;40727:27:0::1;40757:65;40646:70:::0;40757:41:::1;40787:10:::0;40757:41;:9;40771:10;40757:13:::1;:25::i;:65::-;40727:95:::0;-1:-1:-1;40840:13:0;;40837:156:::1;;40877:16;;;;;;;;;-1:-1:-1::0;;;;;40877:16:0::1;-1:-1:-1::0;;;;;40869:34:0::1;;40911:10;40869:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;40951:9:0::1;::::0;:30:::1;::::0;-1:-1:-1;;;;;40951:9:0;;::::1;::::0;-1:-1:-1;40951:30:0;::::1;;;::::0;-1:-1:-1;40970:10:0;;-1:-1:-1;40951:9:0::1;:30:::0;:9;:30;40970:10;40951:9;:30;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;40837:156;41017:19;::::0;::::1;;;;;;-1:-1:-1::0;;;;;41017:19:0::1;-1:-1:-1::0;;;;;41017:27:0::1;;41052:19;41017:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;41013:73:::0;41101:19;;41098:315:::1;;41136:6;::::0;:265:::1;::::0;-1:-1:-1;;;41136:265:0;;-1:-1:-1;;;;;41136:6:0;;::::1;::::0;:22:::1;::::0;41166:18;;41136:265:::1;::::0;41212:4:::1;::::0;41236:15;;41136:6:::1;::::0;;;41310:42:::1;::::0;41371:15:::1;::::0;41136:265:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;41098:315;-1:-1:-1::0;;25704:16:0;:24;;-1:-1:-1;;;;25704:24:0;;;-1:-1:-1;;;;;;;39857:1575:0:o;9765:240::-;9885:7;9946:12;9938:6;;;;9930:29;;;;-1:-1:-1;;;9930:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;9981:5:0;;;9765:240::o;39410:439::-;39550:4;;39496:7;;;;-1:-1:-1;;;;;39550:17:0;;;:4;;:17;:48;;39590:8;;39550:48;;;39570:17;;39550:48;39526:72;-1:-1:-1;39609:17:0;39629:34;39659:3;39629:25;:6;39526:72;39629:10;:25::i;:34::-;39721:4;39703:24;;;;:9;:24;;;;;;39609:54;;-1:-1:-1;39703:39:0;;39609:54;39703:28;:39::i;:::-;39694:4;39676:24;;;;:9;:24;;;;;;;:66;;;;39758:42;;-1:-1:-1;;;;;39758:42:0;;;;;;;39790:9;;39758:42;:::i;:::-;;;;;;;;39820:21;:6;39831:9;39820:10;:21::i;:::-;39813:28;39410:439;-1:-1:-1;;;;;;39410:439:0:o;8224:98::-;8282:7;8309:5;8313:1;8309;:5;:::i;8623:98::-;8681:7;8708:5;8712:1;8708;:5;:::i;14:138:1:-;84:20;;113:33;84:20;113:33;:::i;157:162::-;224:20;;280:13;;273:21;263:32;;253:2;;309:1;306;299:12;324:259;;436:2;424:9;415:7;411:23;407:32;404:2;;;457:6;449;442:22;404:2;501:9;488:23;520:33;547:5;520:33;:::i;588:263::-;;711:2;699:9;690:7;686:23;682:32;679:2;;;732:6;724;717:22;679:2;769:9;763:16;788:33;815:5;788:33;:::i;1128:402::-;;;1257:2;1245:9;1236:7;1232:23;1228:32;1225:2;;;1278:6;1270;1263:22;1225:2;1322:9;1309:23;1341:33;1368:5;1341:33;:::i;:::-;1393:5;-1:-1:-1;1450:2:1;1435:18;;1422:32;1463:35;1422:32;1463:35;:::i;:::-;1517:7;1507:17;;;1215:315;;;;;:::o;1535:470::-;;;;1681:2;1669:9;1660:7;1656:23;1652:32;1649:2;;;1702:6;1694;1687:22;1649:2;1746:9;1733:23;1765:33;1792:5;1765:33;:::i;:::-;1817:5;-1:-1:-1;1874:2:1;1859:18;;1846:32;1887:35;1846:32;1887:35;:::i;:::-;1639:366;;1941:7;;-1:-1:-1;;;1995:2:1;1980:18;;;;1967:32;;1639:366::o;2010:329::-;;;2136:2;2124:9;2115:7;2111:23;2107:32;2104:2;;;2157:6;2149;2142:22;2104:2;2201:9;2188:23;2220:33;2247:5;2220:33;:::i;:::-;2272:5;-1:-1:-1;2296:37:1;2329:2;2314:18;;2296:37;:::i;:::-;2286:47;;2094:245;;;;;:::o;2344:327::-;;;2473:2;2461:9;2452:7;2448:23;2444:32;2441:2;;;2494:6;2486;2479:22;2441:2;2538:9;2525:23;2557:33;2584:5;2557:33;:::i;:::-;2609:5;2661:2;2646:18;;;;2633:32;;-1:-1:-1;;;2431:240:1:o;2676:1166::-;;2791:2;2834;2822:9;2813:7;2809:23;2805:32;2802:2;;;2855:6;2847;2840:22;2802:2;2900:9;2887:23;2929:18;2970:2;2962:6;2959:14;2956:2;;;2991:6;2983;2976:22;2956:2;3034:6;3023:9;3019:22;3009:32;;3079:7;3072:4;3068:2;3064:13;3060:27;3050:2;;3106:6;3098;3091:22;3050:2;3147;3134:16;3169:2;3165;3162:10;3159:2;;;3175:18;;:::i;:::-;3222:2;3218;3214:11;3254:2;3248:9;3305:2;3300;3292:6;3288:15;3284:24;3358:6;3346:10;3343:22;3338:2;3326:10;3323:18;3320:46;3317:2;;;3369:18;;:::i;:::-;3405:2;3398:22;3455:18;;;3489:15;;;;-1:-1:-1;3524:11:1;;;3554;;;3550:20;;3547:33;-1:-1:-1;3544:2:1;;;3598:6;3590;3583:22;3544:2;3625:6;3616:15;;3640:171;3654:2;3651:1;3648:9;3640:171;;;3711:25;3732:3;3711:25;:::i;:::-;3699:38;;3672:1;3665:9;;;;;3757:12;;;;3789;;3640:171;;;-1:-1:-1;3830:6:1;2771:1071;-1:-1:-1;;;;;;;;2771:1071:1:o;3847:192::-;;3956:2;3944:9;3935:7;3931:23;3927:32;3924:2;;;3977:6;3969;3962:22;3924:2;4005:28;4023:9;4005:28;:::i;4044:260::-;;;4170:2;4158:9;4149:7;4145:23;4141:32;4138:2;;;4191:6;4183;4176:22;4138:2;4219:28;4237:9;4219:28;:::i;4309:190::-;;4421:2;4409:9;4400:7;4396:23;4392:32;4389:2;;;4442:6;4434;4427:22;4389:2;-1:-1:-1;4470:23:1;;4379:120;-1:-1:-1;4379:120:1:o;4504:258::-;;;4633:2;4621:9;4612:7;4608:23;4604:32;4601:2;;;4654:6;4646;4639:22;4601:2;-1:-1:-1;;4682:23:1;;;4752:2;4737:18;;;4724:32;;-1:-1:-1;4591:171:1:o;4767:316::-;;;;4924:2;4912:9;4903:7;4899:23;4895:32;4892:2;;;4945:6;4937;4930:22;4892:2;4979:9;4973:16;4963:26;;5029:2;5018:9;5014:18;5008:25;4998:35;;5073:2;5062:9;5058:18;5052:25;5042:35;;4882:201;;;;;:::o;5088:533::-;;;;;;;5285:3;5273:9;5264:7;5260:23;5256:33;5253:2;;;5307:6;5299;5292:22;5253:2;-1:-1:-1;;5335:23:1;;;5405:2;5390:18;;5377:32;;-1:-1:-1;5456:2:1;5441:18;;5428:32;;5507:2;5492:18;;5479:32;;-1:-1:-1;5558:3:1;5543:19;;5530:33;;-1:-1:-1;5610:3:1;5595:19;5582:33;;-1:-1:-1;5243:378:1;-1:-1:-1;5243:378:1:o;5626:203::-;-1:-1:-1;;;;;5790:32:1;;;;5772:51;;5760:2;5745:18;;5727:102::o;6058:274::-;-1:-1:-1;;;;;6250:32:1;;;;6232:51;;6314:2;6299:18;;6292:34;6220:2;6205:18;;6187:145::o;6337:607::-;-1:-1:-1;;;;;6696:15:1;;;6678:34;;6743:2;6728:18;;6721:34;;;;6786:2;6771:18;;6764:34;;;;6829:2;6814:18;;6807:34;;;;6878:15;;;6872:3;6857:19;;6850:44;6658:3;6910:19;;6903:35;;;;6627:3;6612:19;;6594:350::o;6949:187::-;7114:14;;7107:22;7089:41;;7077:2;7062:18;;7044:92::o;7611:603::-;;7752:2;7781;7770:9;7763:21;7813:6;7807:13;7856:6;7851:2;7840:9;7836:18;7829:34;7881:4;7894:140;7908:6;7905:1;7902:13;7894:140;;;8003:14;;;7999:23;;7993:30;7969:17;;;7988:2;7965:26;7958:66;7923:10;;7894:140;;;8052:6;8049:1;8046:13;8043:2;;;8122:4;8117:2;8108:6;8097:9;8093:22;8089:31;8082:45;8043:2;-1:-1:-1;8198:2:1;8177:15;-1:-1:-1;;8173:29:1;8158:45;;;;8205:2;8154:54;;7732:482;-1:-1:-1;;;7732:482:1:o;8219:331::-;8421:2;8403:21;;;8460:1;8440:18;;;8433:29;-1:-1:-1;;;8493:2:1;8478:18;;8471:38;8541:2;8526:18;;8393:157::o;8555:398::-;8757:2;8739:21;;;8796:2;8776:18;;;8769:30;8835:34;8830:2;8815:18;;8808:62;-1:-1:-1;;;8901:2:1;8886:18;;8879:32;8943:3;8928:19;;8729:224::o;8958:353::-;9160:2;9142:21;;;9199:2;9179:18;;;9172:30;9238:31;9233:2;9218:18;;9211:59;9302:2;9287:18;;9132:179::o;9316:331::-;9518:2;9500:21;;;9557:1;9537:18;;;9530:29;-1:-1:-1;;;9590:2:1;9575:18;;9568:38;9638:2;9623:18;;9490:157::o;9652:329::-;9854:2;9836:21;;;9893:1;9873:18;;;9866:29;-1:-1:-1;;;9926:2:1;9911:18;;9904:36;9972:2;9957:18;;9826:155::o;9986:332::-;10188:2;10170:21;;;10227:1;10207:18;;;10200:29;-1:-1:-1;;;10260:2:1;10245:18;;10238:39;10309:2;10294:18;;10160:158::o;10323:399::-;10525:2;10507:21;;;10564:2;10544:18;;;10537:30;10603:34;10598:2;10583:18;;10576:62;-1:-1:-1;;;10669:2:1;10654:18;;10647:33;10712:3;10697:19;;10497:225::o;10727:356::-;10929:2;10911:21;;;10948:18;;;10941:30;11007:34;11002:2;10987:18;;10980:62;11074:2;11059:18;;10901:182::o;11088:340::-;11290:2;11272:21;;;11329:2;11309:18;;;11302:30;-1:-1:-1;;;11363:2:1;11348:18;;11341:46;11419:2;11404:18;;11262:166::o;11433:336::-;11635:2;11617:21;;;11674:2;11654:18;;;11647:30;-1:-1:-1;;;11708:2:1;11693:18;;11686:42;11760:2;11745:18;;11607:162::o;11774:340::-;11976:2;11958:21;;;12015:2;11995:18;;;11988:30;-1:-1:-1;;;12049:2:1;12034:18;;12027:46;12105:2;12090:18;;11948:166::o;12119:325::-;12321:2;12303:21;;;12360:1;12340:18;;;12333:29;-1:-1:-1;;;12393:2:1;12378:18;;12371:32;12435:2;12420:18;;12293:151::o;12449:400::-;12651:2;12633:21;;;12690:2;12670:18;;;12663:30;12729:34;12724:2;12709:18;;12702:62;-1:-1:-1;;;12795:2:1;12780:18;;12773:34;12839:3;12824:19;;12623:226::o;12854:398::-;13056:2;13038:21;;;13095:2;13075:18;;;13068:30;13134:34;13129:2;13114:18;;13107:62;-1:-1:-1;;;13200:2:1;13185:18;;13178:32;13242:3;13227:19;;13028:224::o;13257:401::-;13459:2;13441:21;;;13498:2;13478:18;;;13471:30;13537:34;13532:2;13517:18;;13510:62;-1:-1:-1;;;13603:2:1;13588:18;;13581:35;13648:3;13633:19;;13431:227::o;13663:177::-;13809:25;;;13797:2;13782:18;;13764:76::o;13845:983::-;;14155:3;14144:9;14140:19;14186:6;14175:9;14168:25;14212:2;14250:6;14245:2;14234:9;14230:18;14223:34;14293:3;14288:2;14277:9;14273:18;14266:31;14317:6;14352;14346:13;14383:6;14375;14368:22;14421:3;14410:9;14406:19;14399:26;;14460:2;14452:6;14448:15;14434:29;;14481:4;14494:195;14508:6;14505:1;14502:13;14494:195;;;14573:13;;-1:-1:-1;;;;;14569:39:1;14557:52;;14664:15;;;;14629:12;;;;14605:1;14523:9;14494:195;;;-1:-1:-1;;;;;;;14745:32:1;;;;14740:2;14725:18;;14718:60;-1:-1:-1;;;14809:3:1;14794:19;14787:35;14706:3;14116:712;-1:-1:-1;;;14116:712:1:o;14833:248::-;15007:25;;;15063:2;15048:18;;15041:34;14995:2;14980:18;;14962:119::o;15086:184::-;15258:4;15246:17;;;;15228:36;;15216:2;15201:18;;15183:87::o;15275:128::-;;15346:1;15342:6;15339:1;15336:13;15333:2;;;15352:18;;:::i;:::-;-1:-1:-1;15388:9:1;;15323:80::o;15408:217::-;;15474:1;15464:2;;-1:-1:-1;;;15499:31:1;;15553:4;15550:1;15543:15;15581:4;15506:1;15571:15;15464:2;-1:-1:-1;15610:9:1;;15454:171::o;15630:168::-;;15736:1;15732;15728:6;15724:14;15721:1;15718:21;15713:1;15706:9;15699:17;15695:45;15692:2;;;15743:18;;:::i;:::-;-1:-1:-1;15783:9:1;;15682:116::o;15803:125::-;;15871:1;15868;15865:8;15862:2;;;15876:18;;:::i;:::-;-1:-1:-1;15913:9:1;;15852:76::o;15933:380::-;16018:1;16008:12;;16065:1;16055:12;;;16076:2;;16130:4;16122:6;16118:17;16108:27;;16076:2;16183;16175:6;16172:14;16152:18;16149:38;16146:2;;;16229:10;16224:3;16220:20;16217:1;16210:31;16264:4;16261:1;16254:15;16292:4;16289:1;16282:15;16146:2;;15988:325;;;:::o;16318:135::-;;-1:-1:-1;;16378:17:1;;16375:2;;;16398:18;;:::i;:::-;-1:-1:-1;16445:1:1;16434:13;;16365:88::o;16458:127::-;16519:10;16514:3;16510:20;16507:1;16500:31;16550:4;16547:1;16540:15;16574:4;16571:1;16564:15;16590:127;16651:10;16646:3;16642:20;16639:1;16632:31;16682:4;16679:1;16672:15;16706:4;16703:1;16696:15;16722:133;-1:-1:-1;;;;;16799:31:1;;16789:42;;16779:2;;16845:1;16842;16835:12;16779:2;16769:86;:::o

Swarm Source

ipfs://1c2623fe53867b0df83e779e22ba13a56d49f81065e6799e74a46db689295b4f
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.