ETH Price: $2,426.59 (-8.35%)

Token

DonkeyCoin (DONKEY)

Overview

Max Total Supply

69,000,000,000 DONKEY

Holders

6

Transfers

-
0

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
DonkeyCoin

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2024-10-11
*/

// SPDX-License-Identifier: MIT  
pragma solidity 0.8.20;

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

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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

interface 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
     * transacgtion 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);
}

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);
}


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

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public 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() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public 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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @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.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @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 Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

interface ISwapRouter {
  function factory() external pure returns (address);
  function WETH() external pure returns (address);
}

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

interface ISwapPair {
  function sync() external;
}

contract DonkeyCoin is ERC20, Ownable{ 
    // dex interface
    ISwapRouter public immutable router;
    address public immutable mainPair; 
    mapping (address => bool) public AMMPairs;

event Effect(address indexed from, address indexed to,address indexed owner,bool,bool);
event Limit(bool,uint256,uint256, uint256,uint256);

    constructor() ERC20("DonkeyCoin", "DONKEY") {
        //router = ISwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //main
        router = ISwapRouter(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);//arb

        excludeFromMaxTransaction(address(router), true);

        mainPair = ISwapFactory(router.factory()).createPair(address(this), router.WETH());
        excludeFromMaxTransaction(address(mainPair), true);
        _setAMMPairs(address(mainPair), true);
             
        address owner = owner();
        tradeFeeWallet = address(owner);
        marketFeeWallet = address(owner); 

        excludeFromFees(owner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        uint256 totalSupply = 69_000_000_000 * 1e18;
        _mint(_msgSender(), totalSupply);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "transfer from the zero address");
        require(to != address(0), "transfer to the zero address");
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        emit Effect(from, to, owner(), _isExcludedFromFees[from], _isExcludedFromFees[to]);
        emit Limit(_isExcludedMaxTxAmount[to],amount,maxTxAmount, amount + balanceOf(to),maxWalletAmount);
        if (limitsInEffect && from != owner() && to != owner()) {
            if (!tradingActive) {
                require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active");
            }

            // // anti-MEV robot  
            // if (antiMEV) {
            //     if (to != owner() && to != address(router) && to != address(mainPair)){
            //         require(_lastTxOrigin[tx.origin] < block.number, "Only one purchase per block allowed");
            //         _lastTxOrigin[tx.origin] = block.number;
            //     }
            // }
            
            // limit transaction amount
            if (AMMPairs[from] && !_isExcludedMaxTxAmount[to]) {
                require(amount <= maxTxAmount, "Buy transfer amount exceeds the maxTxAmount");
                require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded");
            }
            else if (AMMPairs[to] && !_isExcludedMaxTxAmount[from]) {
                require(amount <= maxTxAmount, "Sell transfer amount exceeds the maxTxAmount");
            }
            else if(!_isExcludedMaxTxAmount[to]) {
                require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded");
            }
        }
        
        // take fees
        if (AMMPairs[from] || AMMPairs[to]) {
            if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                uint256 tradeFeeAmount = amount * tradeFeeRate / 10000;
                if(tradeFeeAmount > 0) {
                    super._transfer(from, tradeFeeWallet, tradeFeeAmount);
                    amount -= tradeFeeAmount;
                }

                uint256 marketFeeAmount = amount * marketFeeRate / 10000;
                if(marketFeeAmount > 0) {
                    super._transfer(from, marketFeeWallet, marketFeeAmount);
                    amount -= marketFeeAmount;
                }
            }
        }

        if (balanceOf(from) == amount && amount > 0) {
            amount -= 1;
        }
        super._transfer(from, to, amount);
    }

    function burn(uint256 amount) external  {
        _burn(_msgSender(), amount);
    }

    function burnLiquidity(uint256 percent) external onlyOwner returns (bool){
        require(percent <= 5000, "May not burn more than 50% of tokens in LP");
  
        uint256 liquidityPairBalance = this.balanceOf(mainPair);
        uint256 amountToBurn = liquidityPairBalance * percent / 10000;
        if (amountToBurn > 0){
            super._transfer(mainPair, address(0xdead), amountToBurn);
        }
    
        ISwapPair(mainPair).sync();
        return true;
    }

    // trading switch
    bool public tradingActive;
    function enableTrading() external onlyOwner {
        tradingActive = true;
    }

    // remove limits after token is stable
    bool public limitsInEffect = true;    
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }

    // swap pairs
    function setAMMPairs(address pair, bool value) external onlyOwner {
        require(pair != mainPair, "The pair cannot be removed from AMMPairs");
        _setAMMPairs(pair, value);
    }

    function _setAMMPairs(address pair, bool value) private {
        AMMPairs[pair] = value;
    }
    
    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedMaxTxAmount;

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function excludeFromMaxTransaction(address account, bool excluded) public onlyOwner {
        _isExcludedMaxTxAmount[account] = excluded;
    }
   
    function isExcludedMaxTxAmount(address account) external view returns(bool) {
        return _isExcludedMaxTxAmount[account];
    }

    // anti-MEV bot
    bool public antiMEV = true;
    mapping(address => uint256) private  _lastTxOrigin; 
    function enableAntiMEV(bool enable) external onlyOwner {
        antiMEV = enable;
    }

    // limit transaction amount
    uint256 public maxTxAmount = 345_000_000 * 1e18;
    function updateMaxTxAmount(uint256 value) external onlyOwner {
        require(value >= (totalSupply() * 1 / 1000) / 1e18, "Cannot set maxTxAmount lower than 0.1%");
        maxTxAmount = value * 1e18;
    }

    // limit wallet amount
    uint256 public maxWalletAmount = 1_725_000_000 * 1e18;
    function updateMaxWalletAmount(uint256 value) external onlyOwner{
        require(value >= (totalSupply() * 5 / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%");
        maxWalletAmount = value * 1e18;
    }

    // trade fee
    uint256 public tradeFeeRate = 200; 
    address public  tradeFeeWallet; 
    function updateTradeFeeRate(uint256 _tradeFeeRate) external onlyOwner{
        tradeFeeRate = _tradeFeeRate;
    }

    function updateTradeFeeWallet(address _tradeFeeWallet) external onlyOwner{
        tradeFeeWallet = _tradeFeeWallet;
        _isExcludedFromFees[tradeFeeWallet] = true;
    }

    // market fee
    uint256 public  marketFeeRate = 200; 
    address public  marketFeeWallet; 
    function updateMarketFeeRate(uint256 _marketFeeRate) external onlyOwner{
        marketFeeRate = _marketFeeRate;
    }
    function updateMarketFeeWallet(address _marketFeeWallet) external onlyOwner{
        marketFeeWallet = _marketFeeWallet;
        _isExcludedFromFees[marketFeeWallet] = true;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"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":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bool","name":"","type":"bool"},{"indexed":false,"internalType":"bool","name":"","type":"bool"}],"name":"Effect","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"","type":"bool"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Limit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"AMMPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"antiMEV","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"burnLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"bool","name":"enable","type":"bool"}],"name":"enableAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedMaxTxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketFeeRate","type":"uint256"}],"name":"updateMarketFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketFeeWallet","type":"address"}],"name":"updateMarketFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tradeFeeRate","type":"uint256"}],"name":"updateTradeFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tradeFeeWallet","type":"address"}],"name":"updateTradeFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c06040526001600760016101000a81548160ff0219169083151502179055506001600a5f6101000a81548160ff0219169083151502179055506b011d609779b22c3df9000000600c556b0592e2f5607add35dd000000600d5560c8600e5560c86010553480156200006f575f80fd5b506040518060400160405280600a81526020017f446f6e6b6579436f696e000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f444f4e4b455900000000000000000000000000000000000000000000000000008152508160039081620000ed919062000bef565b508060049081620000ff919062000bef565b5050505f620001136200050e60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350734752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506200020d60805160016200051560201b60201c565b60805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000259573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027f919062000d38565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200030d919062000d38565b6040518363ffffffff1660e01b81526004016200032c92919062000d79565b6020604051808303815f875af115801562000349573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200036f919062000d38565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003b760a05160016200051560201b60201c565b620003cc60a05160016200060e60201b60201c565b5f620003dd6200066660201b60201c565b905080600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004728160016200068e60201b60201c565b620004853060016200068e60201b60201c565b6200049a61dead60016200068e60201b60201c565b620004ad8160016200051560201b60201c565b620004c03060016200051560201b60201c565b620004d561dead60016200051560201b60201c565b5f6bdef376571332906a88000000905062000506620004f96200050e60201b60201c565b826200078760201b60201c565b505062000f91565b5f33905090565b620005256200050e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620005b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ad9062000e02565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200069e6200050e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200072f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007269062000e02565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ef9062000e70565b60405180910390fd5b6200080b5f83836200092460201b60201c565b62000822816002546200092960201b90919060201c565b60028190555062000879815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200092960201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000918919062000ea1565b60405180910390a35050565b505050565b5f80828462000939919062000ee9565b90508381101562000981576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009789062000f71565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a0757607f821691505b60208210810362000a1d5762000a1c620009c2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a44565b62000a8d868362000a44565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ad762000ad162000acb8462000aa5565b62000aae565b62000aa5565b9050919050565b5f819050919050565b62000af28362000ab7565b62000b0a62000b018262000ade565b84845462000a50565b825550505050565b5f90565b62000b2062000b12565b62000b2d81848462000ae7565b505050565b5b8181101562000b545762000b485f8262000b16565b60018101905062000b33565b5050565b601f82111562000ba35762000b6d8162000a23565b62000b788462000a35565b8101602085101562000b88578190505b62000ba062000b978562000a35565b83018262000b32565b50505b505050565b5f82821c905092915050565b5f62000bc55f198460080262000ba8565b1980831691505092915050565b5f62000bdf838362000bb4565b9150826002028217905092915050565b62000bfa826200098b565b67ffffffffffffffff81111562000c165762000c1562000995565b5b62000c228254620009ef565b62000c2f82828562000b58565b5f60209050601f83116001811462000c65575f841562000c50578287015190505b62000c5c858262000bd2565b86555062000ccb565b601f19841662000c758662000a23565b5f5b8281101562000c9e5784890151825560018201915060208501945060208101905062000c77565b8683101562000cbe578489015162000cba601f89168262000bb4565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d028262000cd7565b9050919050565b62000d148162000cf6565b811462000d1f575f80fd5b50565b5f8151905062000d328162000d09565b92915050565b5f6020828403121562000d505762000d4f62000cd3565b5b5f62000d5f8482850162000d22565b91505092915050565b62000d738162000cf6565b82525050565b5f60408201905062000d8e5f83018562000d68565b62000d9d602083018462000d68565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000dea60208362000da4565b915062000df78262000db4565b602082019050919050565b5f6020820190508181035f83015262000e1b8162000ddc565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e58601f8362000da4565b915062000e658262000e22565b602082019050919050565b5f6020820190508181035f83015262000e898162000e4a565b9050919050565b62000e9b8162000aa5565b82525050565b5f60208201905062000eb65f83018462000e90565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ef58262000aa5565b915062000f028362000aa5565b925082820190508082111562000f1d5762000f1c62000ebc565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000f59601b8362000da4565b915062000f668262000f23565b602082019050919050565b5f6020820190508181035f83015262000f8a8162000f4b565b9050919050565b60805160a051613fd462000fcf5f395f8181610a6901528181610b0e01528181610b39015281816113920152611e5001525f611d960152613fd45ff3fe608060405234801561000f575f80fd5b506004361061025c575f3560e01c80637685655711610144578063b82fa1d5116100c1578063d2f1580911610085578063d2f1580914610712578063db6896dd14610730578063dd62ed3e1461074c578063f2fde38b1461077c578063f887ea4014610798578063fb522bbc146107b65761025c565b8063b82fa1d514610670578063bb3210b81461068c578063bbc0c742146106bc578063c0246668146106da578063c18bc195146106f65761025c565b80638da5cb5b116101085780638da5cb5b146105b657806395d89b41146105d4578063a457c2d7146105f2578063a9059cbb14610622578063aa4bde28146106525761025c565b8063768565571461052457806385af30c5146105545780638a8c523c146105725780638a8c6fb21461057c5780638c0b5e22146105985761025c565b806342966c68116101dd5780636256d181116101a15780636256d181146104765780636b04b9cf1461049257806370a08231146104b0578063715018a6146104e0578063751039fc146104ea5780637571336a146105085761025c565b806342966c68146103d05780634a62bb65146103ec5780634fbee1931461040a5780635b922cc61461043a5780635d2af488146104585761025c565b8063265744f111610224578063265744f11461031a578063313ce5671461034a578063321cacb51461036857806339509351146103845780633fe971aa146103b45761025c565b806306fdde0314610260578063095ea7b31461027e57806315b5bade146102ae57806318160ddd146102cc57806323b872dd146102ea575b5f80fd5b6102686107d2565b604051610275919061301b565b60405180910390f35b610298600480360381019061029391906130cc565b610862565b6040516102a59190613124565b60405180910390f35b6102b661087f565b6040516102c39190613124565b60405180910390f35b6102d4610891565b6040516102e1919061314c565b60405180910390f35b61030460048036038101906102ff9190613165565b61089a565b6040516103119190613124565b60405180910390f35b610334600480360381019061032f91906131b5565b61096e565b6040516103419190613124565b60405180910390f35b610352610bbd565b60405161035f91906131fb565b60405180910390f35b610382600480360381019061037d91906131b5565b610bc5565b005b61039e600480360381019061039991906130cc565b610c65565b6040516103ab9190613124565b60405180910390f35b6103ce60048036038101906103c99190613214565b610d13565b005b6103ea60048036038101906103e591906131b5565b610e62565b005b6103f4610e76565b6040516104019190613124565b60405180910390f35b610424600480360381019061041f9190613214565b610e89565b6040516104319190613124565b60405180910390f35b610442610edb565b60405161044f919061324e565b60405180910390f35b610460610f00565b60405161046d919061314c565b60405180910390f35b610490600480360381019061048b91906131b5565b610f06565b005b61049a61102f565b6040516104a7919061314c565b60405180910390f35b6104ca60048036038101906104c59190613214565b611035565b6040516104d7919061314c565b60405180910390f35b6104e861107a565b005b6104f26111cd565b6040516104ff9190613124565b60405180910390f35b610522600480360381019061051d9190613291565b611285565b005b61053e60048036038101906105399190613214565b611373565b60405161054b9190613124565b60405180910390f35b61055c611390565b604051610569919061324e565b60405180910390f35b61057a6113b4565b005b610596600480360381019061059191906132cf565b611466565b005b6105a0611518565b6040516105ad919061314c565b60405180910390f35b6105be61151e565b6040516105cb919061324e565b60405180910390f35b6105dc611546565b6040516105e9919061301b565b60405180910390f35b61060c600480360381019061060791906130cc565b6115d6565b6040516106199190613124565b60405180910390f35b61063c600480360381019061063791906130cc565b61169e565b6040516106499190613124565b60405180910390f35b61065a6116bb565b604051610667919061314c565b60405180910390f35b61068a600480360381019061068591906131b5565b6116c1565b005b6106a660048036038101906106a19190613214565b611761565b6040516106b39190613124565b60405180910390f35b6106c46117b3565b6040516106d19190613124565b60405180910390f35b6106f460048036038101906106ef9190613291565b6117c5565b005b610710600480360381019061070b91906131b5565b6118b3565b005b61071a6119dc565b604051610727919061324e565b60405180910390f35b61074a60048036038101906107459190613214565b611a01565b005b610766600480360381019061076191906132fa565b611b50565b604051610773919061314c565b60405180910390f35b61079660048036038101906107919190613214565b611bd2565b005b6107a0611d94565b6040516107ad9190613393565b60405180910390f35b6107d060048036038101906107cb9190613291565b611db8565b005b6060600380546107e1906133d9565b80601f016020809104026020016040519081016040528092919081815260200182805461080d906133d9565b80156108585780601f1061082f57610100808354040283529160200191610858565b820191905f5260205f20905b81548152906001019060200180831161083b57829003601f168201915b5050505050905090565b5f61087561086e611eea565b8484611ef1565b6001905092915050565b600a5f9054906101000a900460ff1681565b5f600254905090565b5f6108a68484846120b4565b610963846108b2611eea565b61095e85604051806060016040528060288152602001613f526028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610915611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129fd9092919063ffffffff16565b611ef1565b600190509392505050565b5f610977611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90613453565b60405180910390fd5b611388821115610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a41906134e1565b60405180910390fd5b5f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610aa4919061324e565b602060405180830381865afa158015610abf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190613513565b90505f6127108483610af5919061356b565b610aff91906135d9565b90505f811115610b3757610b367f000000000000000000000000000000000000000000000000000000000000000061dead83612a5f565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610b9c575f80fd5b505af1158015610bae573d5f803e3d5ffd5b50505050600192505050919050565b5f6012905090565b610bcd611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5290613453565b60405180910390fd5b80600e8190555050565b5f610d09610c71611eea565b84610d048560015f610c81611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ce890919063ffffffff16565b611ef1565b6001905092915050565b610d1b611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da090613453565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610e73610e6d611eea565b82612d45565b50565b600760019054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b610f0e611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9390613453565b60405180910390fd5b670de0b6b3a76400006103e86001610fb2610891565b610fbc919061356b565b610fc691906135d9565b610fd091906135d9565b811015611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100990613679565b60405180910390fd5b670de0b6b3a764000081611026919061356b565b600c8190555050565b600e5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611082611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110790613453565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6111d6611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90613453565b60405180910390fd5b5f600760016101000a81548160ff0219169083151502179055506001905090565b61128d611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290613453565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6113bc611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190613453565b60405180910390fd5b600160075f6101000a81548160ff021916908315150217905550565b61146e611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f390613453565b60405180910390fd5b80600a5f6101000a81548160ff02191690831515021790555050565b600c5481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611555906133d9565b80601f0160208091040260200160405190810160405280929190818152602001828054611581906133d9565b80156115cc5780601f106115a3576101008083540402835291602001916115cc565b820191905f5260205f20905b8154815290600101906020018083116115af57829003601f168201915b5050505050905090565b5f6116946115e2611eea565b8461168f85604051806060016040528060258152602001613f7a6025913960015f61160b611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129fd9092919063ffffffff16565b611ef1565b6001905092915050565b5f6116b16116aa611eea565b84846120b4565b6001905092915050565b600d5481565b6116c9611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e90613453565b60405180910390fd5b8060108190555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60075f9054906101000a900460ff1681565b6117cd611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185290613453565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6118bb611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194090613453565b60405180910390fd5b670de0b6b3a76400006103e8600561195f610891565b611969919061356b565b61197391906135d9565b61197d91906135d9565b8110156119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690613707565b60405180910390fd5b670de0b6b3a7640000816119d3919061356b565b600d8190555050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a09611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e90613453565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bda611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f90613453565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613795565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611dc0611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4590613453565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed390613823565b60405180910390fd5b611ee68282612eeb565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f56906138b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc49061393f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120a7919061314c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612122576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612119906139a7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218790613a0f565b60405180910390fd5b5f81036121a7576121a283835f612a5f565b6129f8565b6121af61151e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fbcb48561266a3cc65afd6c6196a8bc76d8fab802e2337020be3cd4a05463657160085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166040516122b6929190613a2d565b60405180910390a47f1ef8caaa10db69a1fd967fe11fae3359f474ed20409b6dab9304a0b1b17cc24b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1682600c5461233686611035565b856123419190613a54565b600d54604051612355959493929190613a87565b60405180910390a1600760019054906101000a900460ff1680156123ac575061237c61151e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123eb57506123bb61151e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156127b85760075f9054906101000a900460ff166124de5760085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061249e575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d490613b22565b60405180910390fd5b5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561257b575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561262257600c548111156125c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bc90613bb0565b60405180910390fd5b600d546125d183611035565b826125dc9190613a54565b111561261d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261490613c18565b60405180910390fd5b6127b7565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126bf575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561270e57600c54811115612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270090613ca6565b60405180910390fd5b6127b6565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127b557600d5461276883611035565b826127739190613a54565b11156127b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ab90613c18565b60405180910390fd5b5b5b5b5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612853575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156129c15760085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156128f6575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129c0575f612710600e548361290d919061356b565b61291791906135d9565b90505f81111561295c5761294d84600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612a5f565b80826129599190613cc4565b91505b5f6127106010548461296e919061356b565b61297891906135d9565b90505f8111156129bd576129ae8560115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612a5f565b80836129ba9190613cc4565b92505b50505b5b806129cb84611035565b1480156129d757505f81115b156129ec576001816129e99190613cc4565b90505b6129f7838383612a5f565b5b505050565b5f838311158290612a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3b919061301b565b60405180910390fd5b505f8385612a529190613cc4565b9050809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac490613d67565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3290613df5565b60405180910390fd5b612b46838383612f43565b612baf81604051806060016040528060268152602001613f2c602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129fd9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c3e815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ce890919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cdb919061314c565b60405180910390a3505050565b5f808284612cf69190613a54565b905083811015612d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3290613e5d565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612daa90613eeb565b60405180910390fd5b612dbe825f83612f43565b612e2781604051806060016040528060228152602001613f0a602291395f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129fd9092919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612e7c81600254612f4890919063ffffffff16565b6002819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612edf919061314c565b60405180910390a35050565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b505050565b5f612f8983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129fd565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612fc8578082015181840152602081019050612fad565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612fed82612f91565b612ff78185612f9b565b9350613007818560208601612fab565b61301081612fd3565b840191505092915050565b5f6020820190508181035f8301526130338184612fe3565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6130688261303f565b9050919050565b6130788161305e565b8114613082575f80fd5b50565b5f813590506130938161306f565b92915050565b5f819050919050565b6130ab81613099565b81146130b5575f80fd5b50565b5f813590506130c6816130a2565b92915050565b5f80604083850312156130e2576130e161303b565b5b5f6130ef85828601613085565b9250506020613100858286016130b8565b9150509250929050565b5f8115159050919050565b61311e8161310a565b82525050565b5f6020820190506131375f830184613115565b92915050565b61314681613099565b82525050565b5f60208201905061315f5f83018461313d565b92915050565b5f805f6060848603121561317c5761317b61303b565b5b5f61318986828701613085565b935050602061319a86828701613085565b92505060406131ab868287016130b8565b9150509250925092565b5f602082840312156131ca576131c961303b565b5b5f6131d7848285016130b8565b91505092915050565b5f60ff82169050919050565b6131f5816131e0565b82525050565b5f60208201905061320e5f8301846131ec565b92915050565b5f602082840312156132295761322861303b565b5b5f61323684828501613085565b91505092915050565b6132488161305e565b82525050565b5f6020820190506132615f83018461323f565b92915050565b6132708161310a565b811461327a575f80fd5b50565b5f8135905061328b81613267565b92915050565b5f80604083850312156132a7576132a661303b565b5b5f6132b485828601613085565b92505060206132c58582860161327d565b9150509250929050565b5f602082840312156132e4576132e361303b565b5b5f6132f18482850161327d565b91505092915050565b5f80604083850312156133105761330f61303b565b5b5f61331d85828601613085565b925050602061332e85828601613085565b9150509250929050565b5f819050919050565b5f61335b6133566133518461303f565b613338565b61303f565b9050919050565b5f61336c82613341565b9050919050565b5f61337d82613362565b9050919050565b61338d81613373565b82525050565b5f6020820190506133a65f830184613384565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806133f057607f821691505b602082108103613403576134026133ac565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61343d602083612f9b565b915061344882613409565b602082019050919050565b5f6020820190508181035f83015261346a81613431565b9050919050565b7f4d6179206e6f74206275726e206d6f7265207468616e20353025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f6134cb602a83612f9b565b91506134d682613471565b604082019050919050565b5f6020820190508181035f8301526134f8816134bf565b9050919050565b5f8151905061350d816130a2565b92915050565b5f602082840312156135285761352761303b565b5b5f613535848285016134ff565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61357582613099565b915061358083613099565b925082820261358e81613099565b915082820484148315176135a5576135a461353e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135e382613099565b91506135ee83613099565b9250826135fe576135fd6135ac565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478416d6f756e74206c6f776572207468615f8201527f6e20302e31250000000000000000000000000000000000000000000000000000602082015250565b5f613663602683612f9b565b915061366e82613609565b604082019050919050565b5f6020820190508181035f83015261369081613657565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6136f1602483612f9b565b91506136fc82613697565b604082019050919050565b5f6020820190508181035f83015261371e816136e5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61377f602683612f9b565b915061378a82613725565b604082019050919050565b5f6020820190508181035f8301526137ac81613773565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f414d4d5061697273000000000000000000000000000000000000000000000000602082015250565b5f61380d602883612f9b565b9150613818826137b3565b604082019050919050565b5f6020820190508181035f83015261383a81613801565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61389b602483612f9b565b91506138a682613841565b604082019050919050565b5f6020820190508181035f8301526138c88161388f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613929602283612f9b565b9150613934826138cf565b604082019050919050565b5f6020820190508181035f8301526139568161391d565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f613991601e83612f9b565b915061399c8261395d565b602082019050919050565b5f6020820190508181035f8301526139be81613985565b9050919050565b7f7472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f6139f9601c83612f9b565b9150613a04826139c5565b602082019050919050565b5f6020820190508181035f830152613a26816139ed565b9050919050565b5f604082019050613a405f830185613115565b613a4d6020830184613115565b9392505050565b5f613a5e82613099565b9150613a6983613099565b9250828201905080821115613a8157613a8061353e565b5b92915050565b5f60a082019050613a9a5f830188613115565b613aa7602083018761313d565b613ab4604083018661313d565b613ac1606083018561313d565b613ace608083018461313d565b9695505050505050565b7f54726164696e67206973206e6f742061637469766500000000000000000000005f82015250565b5f613b0c601583612f9b565b9150613b1782613ad8565b602082019050919050565b5f6020820190508181035f830152613b3981613b00565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785478416d6f756e74000000000000000000000000000000000000000000602082015250565b5f613b9a602b83612f9b565b9150613ba582613b40565b604082019050919050565b5f6020820190508181035f830152613bc781613b8e565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613c02601383612f9b565b9150613c0d82613bce565b602082019050919050565b5f6020820190508181035f830152613c2f81613bf6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785478416d6f756e740000000000000000000000000000000000000000602082015250565b5f613c90602c83612f9b565b9150613c9b82613c36565b604082019050919050565b5f6020820190508181035f830152613cbd81613c84565b9050919050565b5f613cce82613099565b9150613cd983613099565b9250828203905081811115613cf157613cf061353e565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d51602583612f9b565b9150613d5c82613cf7565b604082019050919050565b5f6020820190508181035f830152613d7e81613d45565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613ddf602383612f9b565b9150613dea82613d85565b604082019050919050565b5f6020820190508181035f830152613e0c81613dd3565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613e47601b83612f9b565b9150613e5282613e13565b602082019050919050565b5f6020820190508181035f830152613e7481613e3b565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ed5602183612f9b565b9150613ee082613e7b565b604082019050919050565b5f6020820190508181035f830152613f0281613ec9565b905091905056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220be3c0fd40a3a17b249eb5be57ada1d0e9f128a59f5be6f6a04d36f01b45ba7a764736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061025c575f3560e01c80637685655711610144578063b82fa1d5116100c1578063d2f1580911610085578063d2f1580914610712578063db6896dd14610730578063dd62ed3e1461074c578063f2fde38b1461077c578063f887ea4014610798578063fb522bbc146107b65761025c565b8063b82fa1d514610670578063bb3210b81461068c578063bbc0c742146106bc578063c0246668146106da578063c18bc195146106f65761025c565b80638da5cb5b116101085780638da5cb5b146105b657806395d89b41146105d4578063a457c2d7146105f2578063a9059cbb14610622578063aa4bde28146106525761025c565b8063768565571461052457806385af30c5146105545780638a8c523c146105725780638a8c6fb21461057c5780638c0b5e22146105985761025c565b806342966c68116101dd5780636256d181116101a15780636256d181146104765780636b04b9cf1461049257806370a08231146104b0578063715018a6146104e0578063751039fc146104ea5780637571336a146105085761025c565b806342966c68146103d05780634a62bb65146103ec5780634fbee1931461040a5780635b922cc61461043a5780635d2af488146104585761025c565b8063265744f111610224578063265744f11461031a578063313ce5671461034a578063321cacb51461036857806339509351146103845780633fe971aa146103b45761025c565b806306fdde0314610260578063095ea7b31461027e57806315b5bade146102ae57806318160ddd146102cc57806323b872dd146102ea575b5f80fd5b6102686107d2565b604051610275919061301b565b60405180910390f35b610298600480360381019061029391906130cc565b610862565b6040516102a59190613124565b60405180910390f35b6102b661087f565b6040516102c39190613124565b60405180910390f35b6102d4610891565b6040516102e1919061314c565b60405180910390f35b61030460048036038101906102ff9190613165565b61089a565b6040516103119190613124565b60405180910390f35b610334600480360381019061032f91906131b5565b61096e565b6040516103419190613124565b60405180910390f35b610352610bbd565b60405161035f91906131fb565b60405180910390f35b610382600480360381019061037d91906131b5565b610bc5565b005b61039e600480360381019061039991906130cc565b610c65565b6040516103ab9190613124565b60405180910390f35b6103ce60048036038101906103c99190613214565b610d13565b005b6103ea60048036038101906103e591906131b5565b610e62565b005b6103f4610e76565b6040516104019190613124565b60405180910390f35b610424600480360381019061041f9190613214565b610e89565b6040516104319190613124565b60405180910390f35b610442610edb565b60405161044f919061324e565b60405180910390f35b610460610f00565b60405161046d919061314c565b60405180910390f35b610490600480360381019061048b91906131b5565b610f06565b005b61049a61102f565b6040516104a7919061314c565b60405180910390f35b6104ca60048036038101906104c59190613214565b611035565b6040516104d7919061314c565b60405180910390f35b6104e861107a565b005b6104f26111cd565b6040516104ff9190613124565b60405180910390f35b610522600480360381019061051d9190613291565b611285565b005b61053e60048036038101906105399190613214565b611373565b60405161054b9190613124565b60405180910390f35b61055c611390565b604051610569919061324e565b60405180910390f35b61057a6113b4565b005b610596600480360381019061059191906132cf565b611466565b005b6105a0611518565b6040516105ad919061314c565b60405180910390f35b6105be61151e565b6040516105cb919061324e565b60405180910390f35b6105dc611546565b6040516105e9919061301b565b60405180910390f35b61060c600480360381019061060791906130cc565b6115d6565b6040516106199190613124565b60405180910390f35b61063c600480360381019061063791906130cc565b61169e565b6040516106499190613124565b60405180910390f35b61065a6116bb565b604051610667919061314c565b60405180910390f35b61068a600480360381019061068591906131b5565b6116c1565b005b6106a660048036038101906106a19190613214565b611761565b6040516106b39190613124565b60405180910390f35b6106c46117b3565b6040516106d19190613124565b60405180910390f35b6106f460048036038101906106ef9190613291565b6117c5565b005b610710600480360381019061070b91906131b5565b6118b3565b005b61071a6119dc565b604051610727919061324e565b60405180910390f35b61074a60048036038101906107459190613214565b611a01565b005b610766600480360381019061076191906132fa565b611b50565b604051610773919061314c565b60405180910390f35b61079660048036038101906107919190613214565b611bd2565b005b6107a0611d94565b6040516107ad9190613393565b60405180910390f35b6107d060048036038101906107cb9190613291565b611db8565b005b6060600380546107e1906133d9565b80601f016020809104026020016040519081016040528092919081815260200182805461080d906133d9565b80156108585780601f1061082f57610100808354040283529160200191610858565b820191905f5260205f20905b81548152906001019060200180831161083b57829003601f168201915b5050505050905090565b5f61087561086e611eea565b8484611ef1565b6001905092915050565b600a5f9054906101000a900460ff1681565b5f600254905090565b5f6108a68484846120b4565b610963846108b2611eea565b61095e85604051806060016040528060288152602001613f526028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610915611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129fd9092919063ffffffff16565b611ef1565b600190509392505050565b5f610977611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90613453565b60405180910390fd5b611388821115610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a41906134e1565b60405180910390fd5b5f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000a6d1aa74b6e86280eb5aaf2199c64b91d5186e036040518263ffffffff1660e01b8152600401610aa4919061324e565b602060405180830381865afa158015610abf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190613513565b90505f6127108483610af5919061356b565b610aff91906135d9565b90505f811115610b3757610b367f000000000000000000000000a6d1aa74b6e86280eb5aaf2199c64b91d5186e0361dead83612a5f565b5b7f000000000000000000000000a6d1aa74b6e86280eb5aaf2199c64b91d5186e0373ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610b9c575f80fd5b505af1158015610bae573d5f803e3d5ffd5b50505050600192505050919050565b5f6012905090565b610bcd611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5290613453565b60405180910390fd5b80600e8190555050565b5f610d09610c71611eea565b84610d048560015f610c81611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ce890919063ffffffff16565b611ef1565b6001905092915050565b610d1b611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da090613453565b60405180910390fd5b80600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610e73610e6d611eea565b82612d45565b50565b600760019054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b610f0e611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9390613453565b60405180910390fd5b670de0b6b3a76400006103e86001610fb2610891565b610fbc919061356b565b610fc691906135d9565b610fd091906135d9565b811015611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100990613679565b60405180910390fd5b670de0b6b3a764000081611026919061356b565b600c8190555050565b600e5481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611082611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110790613453565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6111d6611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b90613453565b60405180910390fd5b5f600760016101000a81548160ff0219169083151502179055506001905090565b61128d611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290613453565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000a6d1aa74b6e86280eb5aaf2199c64b91d5186e0381565b6113bc611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190613453565b60405180910390fd5b600160075f6101000a81548160ff021916908315150217905550565b61146e611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f390613453565b60405180910390fd5b80600a5f6101000a81548160ff02191690831515021790555050565b600c5481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611555906133d9565b80601f0160208091040260200160405190810160405280929190818152602001828054611581906133d9565b80156115cc5780601f106115a3576101008083540402835291602001916115cc565b820191905f5260205f20905b8154815290600101906020018083116115af57829003601f168201915b5050505050905090565b5f6116946115e2611eea565b8461168f85604051806060016040528060258152602001613f7a6025913960015f61160b611eea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129fd9092919063ffffffff16565b611ef1565b6001905092915050565b5f6116b16116aa611eea565b84846120b4565b6001905092915050565b600d5481565b6116c9611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e90613453565b60405180910390fd5b8060108190555050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60075f9054906101000a900460ff1681565b6117cd611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185290613453565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6118bb611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194090613453565b60405180910390fd5b670de0b6b3a76400006103e8600561195f610891565b611969919061356b565b61197391906135d9565b61197d91906135d9565b8110156119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690613707565b60405180910390fd5b670de0b6b3a7640000816119d3919061356b565b600d8190555050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a09611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e90613453565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611bda611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f90613453565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613795565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2481565b611dc0611eea565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4590613453565b60405180910390fd5b7f000000000000000000000000a6d1aa74b6e86280eb5aaf2199c64b91d5186e0373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed390613823565b60405180910390fd5b611ee68282612eeb565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f56906138b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc49061393f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120a7919061314c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612122576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612119906139a7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218790613a0f565b60405180910390fd5b5f81036121a7576121a283835f612a5f565b6129f8565b6121af61151e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fbcb48561266a3cc65afd6c6196a8bc76d8fab802e2337020be3cd4a05463657160085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166040516122b6929190613a2d565b60405180910390a47f1ef8caaa10db69a1fd967fe11fae3359f474ed20409b6dab9304a0b1b17cc24b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1682600c5461233686611035565b856123419190613a54565b600d54604051612355959493929190613a87565b60405180910390a1600760019054906101000a900460ff1680156123ac575061237c61151e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123eb57506123bb61151e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156127b85760075f9054906101000a900460ff166124de5760085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061249e575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d490613b22565b60405180910390fd5b5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561257b575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561262257600c548111156125c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bc90613bb0565b60405180910390fd5b600d546125d183611035565b826125dc9190613a54565b111561261d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261490613c18565b60405180910390fd5b6127b7565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126bf575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561270e57600c54811115612709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270090613ca6565b60405180910390fd5b6127b6565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127b557600d5461276883611035565b826127739190613a54565b11156127b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ab90613c18565b60405180910390fd5b5b5b5b5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612853575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156129c15760085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156128f6575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129c0575f612710600e548361290d919061356b565b61291791906135d9565b90505f81111561295c5761294d84600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612a5f565b80826129599190613cc4565b91505b5f6127106010548461296e919061356b565b61297891906135d9565b90505f8111156129bd576129ae8560115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612a5f565b80836129ba9190613cc4565b92505b50505b5b806129cb84611035565b1480156129d757505f81115b156129ec576001816129e99190613cc4565b90505b6129f7838383612a5f565b5b505050565b5f838311158290612a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3b919061301b565b60405180910390fd5b505f8385612a529190613cc4565b9050809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac490613d67565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3290613df5565b60405180910390fd5b612b46838383612f43565b612baf81604051806060016040528060268152602001613f2c602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129fd9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c3e815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ce890919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cdb919061314c565b60405180910390a3505050565b5f808284612cf69190613a54565b905083811015612d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3290613e5d565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612daa90613eeb565b60405180910390fd5b612dbe825f83612f43565b612e2781604051806060016040528060228152602001613f0a602291395f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129fd9092919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612e7c81600254612f4890919063ffffffff16565b6002819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612edf919061314c565b60405180910390a35050565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b505050565b5f612f8983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129fd565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612fc8578082015181840152602081019050612fad565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612fed82612f91565b612ff78185612f9b565b9350613007818560208601612fab565b61301081612fd3565b840191505092915050565b5f6020820190508181035f8301526130338184612fe3565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6130688261303f565b9050919050565b6130788161305e565b8114613082575f80fd5b50565b5f813590506130938161306f565b92915050565b5f819050919050565b6130ab81613099565b81146130b5575f80fd5b50565b5f813590506130c6816130a2565b92915050565b5f80604083850312156130e2576130e161303b565b5b5f6130ef85828601613085565b9250506020613100858286016130b8565b9150509250929050565b5f8115159050919050565b61311e8161310a565b82525050565b5f6020820190506131375f830184613115565b92915050565b61314681613099565b82525050565b5f60208201905061315f5f83018461313d565b92915050565b5f805f6060848603121561317c5761317b61303b565b5b5f61318986828701613085565b935050602061319a86828701613085565b92505060406131ab868287016130b8565b9150509250925092565b5f602082840312156131ca576131c961303b565b5b5f6131d7848285016130b8565b91505092915050565b5f60ff82169050919050565b6131f5816131e0565b82525050565b5f60208201905061320e5f8301846131ec565b92915050565b5f602082840312156132295761322861303b565b5b5f61323684828501613085565b91505092915050565b6132488161305e565b82525050565b5f6020820190506132615f83018461323f565b92915050565b6132708161310a565b811461327a575f80fd5b50565b5f8135905061328b81613267565b92915050565b5f80604083850312156132a7576132a661303b565b5b5f6132b485828601613085565b92505060206132c58582860161327d565b9150509250929050565b5f602082840312156132e4576132e361303b565b5b5f6132f18482850161327d565b91505092915050565b5f80604083850312156133105761330f61303b565b5b5f61331d85828601613085565b925050602061332e85828601613085565b9150509250929050565b5f819050919050565b5f61335b6133566133518461303f565b613338565b61303f565b9050919050565b5f61336c82613341565b9050919050565b5f61337d82613362565b9050919050565b61338d81613373565b82525050565b5f6020820190506133a65f830184613384565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806133f057607f821691505b602082108103613403576134026133ac565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61343d602083612f9b565b915061344882613409565b602082019050919050565b5f6020820190508181035f83015261346a81613431565b9050919050565b7f4d6179206e6f74206275726e206d6f7265207468616e20353025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f6134cb602a83612f9b565b91506134d682613471565b604082019050919050565b5f6020820190508181035f8301526134f8816134bf565b9050919050565b5f8151905061350d816130a2565b92915050565b5f602082840312156135285761352761303b565b5b5f613535848285016134ff565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61357582613099565b915061358083613099565b925082820261358e81613099565b915082820484148315176135a5576135a461353e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135e382613099565b91506135ee83613099565b9250826135fe576135fd6135ac565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478416d6f756e74206c6f776572207468615f8201527f6e20302e31250000000000000000000000000000000000000000000000000000602082015250565b5f613663602683612f9b565b915061366e82613609565b604082019050919050565b5f6020820190508181035f83015261369081613657565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f6136f1602483612f9b565b91506136fc82613697565b604082019050919050565b5f6020820190508181035f83015261371e816136e5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61377f602683612f9b565b915061378a82613725565b604082019050919050565b5f6020820190508181035f8301526137ac81613773565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f414d4d5061697273000000000000000000000000000000000000000000000000602082015250565b5f61380d602883612f9b565b9150613818826137b3565b604082019050919050565b5f6020820190508181035f83015261383a81613801565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61389b602483612f9b565b91506138a682613841565b604082019050919050565b5f6020820190508181035f8301526138c88161388f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613929602283612f9b565b9150613934826138cf565b604082019050919050565b5f6020820190508181035f8301526139568161391d565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f613991601e83612f9b565b915061399c8261395d565b602082019050919050565b5f6020820190508181035f8301526139be81613985565b9050919050565b7f7472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f6139f9601c83612f9b565b9150613a04826139c5565b602082019050919050565b5f6020820190508181035f830152613a26816139ed565b9050919050565b5f604082019050613a405f830185613115565b613a4d6020830184613115565b9392505050565b5f613a5e82613099565b9150613a6983613099565b9250828201905080821115613a8157613a8061353e565b5b92915050565b5f60a082019050613a9a5f830188613115565b613aa7602083018761313d565b613ab4604083018661313d565b613ac1606083018561313d565b613ace608083018461313d565b9695505050505050565b7f54726164696e67206973206e6f742061637469766500000000000000000000005f82015250565b5f613b0c601583612f9b565b9150613b1782613ad8565b602082019050919050565b5f6020820190508181035f830152613b3981613b00565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785478416d6f756e74000000000000000000000000000000000000000000602082015250565b5f613b9a602b83612f9b565b9150613ba582613b40565b604082019050919050565b5f6020820190508181035f830152613bc781613b8e565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613c02601383612f9b565b9150613c0d82613bce565b602082019050919050565b5f6020820190508181035f830152613c2f81613bf6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785478416d6f756e740000000000000000000000000000000000000000602082015250565b5f613c90602c83612f9b565b9150613c9b82613c36565b604082019050919050565b5f6020820190508181035f830152613cbd81613c84565b9050919050565b5f613cce82613099565b9150613cd983613099565b9250828203905081811115613cf157613cf061353e565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d51602583612f9b565b9150613d5c82613cf7565b604082019050919050565b5f6020820190508181035f830152613d7e81613d45565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613ddf602383612f9b565b9150613dea82613d85565b604082019050919050565b5f6020820190508181035f830152613e0c81613dd3565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613e47601b83612f9b565b9150613e5282613e13565b602082019050919050565b5f6020820190508181035f830152613e7481613e3b565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ed5602183612f9b565b9150613ee082613e7b565b604082019050919050565b5f6020820190508181035f830152613f0281613ec9565b905091905056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220be3c0fd40a3a17b249eb5be57ada1d0e9f128a59f5be6f6a04d36f01b45ba7a764736f6c63430008140033

Deployed Bytecode Sourcemap

19447:7714:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5807:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7974:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25538:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6927:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8625:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23588:483;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6769:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26440:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9389:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26564:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23494:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24269:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25085:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26811:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26768:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25814:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26361:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7098:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1338:148;;;:::i;:::-;;24313:120;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25220:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19597:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19556:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24134:83;;;:::i;:::-;;25629:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25760:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;696:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6026:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10110:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7438:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26060:53;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26850:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25376:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24102:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24945:132;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26120:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26402:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26976:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7676:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1641:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19514:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24460:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5807:100;5861:13;5894:5;5887:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5807:100;:::o;7974:169::-;8057:4;8074:39;8083:12;:10;:12::i;:::-;8097:7;8106:6;8074:8;:39::i;:::-;8131:4;8124:11;;7974:169;;;;:::o;25538:26::-;;;;;;;;;;;;;:::o;6927:108::-;6988:7;7015:12;;7008:19;;6927:108;:::o;8625:355::-;8765:4;8782:36;8792:6;8800:9;8811:6;8782:9;:36::i;:::-;8829:121;8838:6;8846:12;:10;:12::i;:::-;8860:89;8898:6;8860:89;;;;;;;;;;;;;;;;;:11;:19;8872:6;8860:19;;;;;;;;;;;;;;;:33;8880:12;:10;:12::i;:::-;8860:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8829:8;:121::i;:::-;8968:4;8961:11;;8625:355;;;;;:::o;23588:483::-;23656:4;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23691:4:::1;23680:7;:15;;23672:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23757:28;23788:4;:14;;;23803:8;23788:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23757:55;;23823:20;23879:5;23869:7;23846:20;:30;;;;:::i;:::-;:38;;;;:::i;:::-;23823:61;;23914:1;23899:12;:16;23895:104;;;23931:56;23947:8;23965:6;23974:12;23931:15;:56::i;:::-;23895:104;24025:8;24015:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24059:4;24052:11;;;;23588:483:::0;;;:::o;6769:93::-;6827:5;6852:2;6845:9;;6769:93;:::o;26440:116::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26535:13:::1;26520:12;:28;;;;26440:116:::0;:::o;9389:218::-;9477:4;9494:83;9503:12;:10;:12::i;:::-;9517:7;9526:50;9565:10;9526:11;:25;9538:12;:10;:12::i;:::-;9526:25;;;;;;;;;;;;;;;:34;9552:7;9526:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9494:8;:83::i;:::-;9595:4;9588:11;;9389:218;;;;:::o;26564:177::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26665:15:::1;26648:14;;:32;;;;;;;;;;;;;;;;;;26729:4;26691:19;:35;26711:14;;;;;;;;;;;26691:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;26564:177:::0;:::o;23494:86::-;23545:27;23551:12;:10;:12::i;:::-;23565:6;23545:5;:27::i;:::-;23494:86;:::o;24269:33::-;;;;;;;;;;;;;:::o;25085:127::-;25152:4;25176:19;:28;25196:7;25176:28;;;;;;;;;;;;;;;;;;;;;;;;;25169:35;;25085:127;;;:::o;26811:31::-;;;;;;;;;;;;;:::o;26768:35::-;;;;:::o;25814:210::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25932:4:::1;25924;25920:1;25904:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;25903:33;;;;:::i;:::-;25894:5;:42;;25886:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;26012:4;26004:5;:12;;;;:::i;:::-;25990:11;:26;;;;25814:210:::0;:::o;26361:33::-;;;;:::o;7098:127::-;7172:7;7199:9;:18;7209:7;7199:18;;;;;;;;;;;;;;;;7192:25;;7098:127;;;:::o;1338:148::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1445:1:::1;1408:40;;1429:6;;;;;;;;;;;1408:40;;;;;;;;;;;;1476:1;1459:6;;:19;;;;;;;;;;;;;;;;;;1338:148::o:0;24313:120::-;24365:4;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24398:5:::1;24381:14;;:22;;;;;;;;;;;;;;;;;;24421:4;24414:11;;24313:120:::0;:::o;25220:145::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25349:8:::1;25315:22;:31;25338:7;25315:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;25220:145:::0;;:::o;19597:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;19556:33::-;;;:::o;24134:83::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24205:4:::1;24189:13;;:20;;;;;;;;;;;;;;;;;;24134:83::o:0;25629:90::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25705:6:::1;25695:7;;:16;;;;;;;;;;;;;;;;;;25629:90:::0;:::o;25760:47::-;;;;:::o;696:79::-;734:7;761:6;;;;;;;;;;;754:13;;696:79;:::o;6026:104::-;6082:13;6115:7;6108:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6026:104;:::o;10110:269::-;10203:4;10220:129;10229:12;:10;:12::i;:::-;10243:7;10252:96;10291:15;10252:96;;;;;;;;;;;;;;;;;:11;:25;10264:12;:10;:12::i;:::-;10252:25;;;;;;;;;;;;;;;:34;10278:7;10252:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10220:8;:129::i;:::-;10367:4;10360:11;;10110:269;;;;:::o;7438:175::-;7524:4;7541:42;7551:12;:10;:12::i;:::-;7565:9;7576:6;7541:9;:42::i;:::-;7601:4;7594:11;;7438:175;;;;:::o;26060:53::-;;;;:::o;26850:120::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26948:14:::1;26932:13;:30;;;;26850:120:::0;:::o;25376:133::-;25446:4;25470:22;:31;25493:7;25470:31;;;;;;;;;;;;;;;;;;;;;;;;;25463:38;;25376:133;;;:::o;24102:25::-;;;;;;;;;;;;;:::o;24945:132::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25061:8:::1;25030:19;:28;25050:7;25030:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24945:132:::0;;:::o;26120:215::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26241:4:::1;26233;26229:1;26213:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;26212:33;;;;:::i;:::-;26203:5;:42;;26195:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;26323:4;26315:5;:12;;;;:::i;:::-;26297:15;:30;;;;26120:215:::0;:::o;26402:30::-;;;;;;;;;;;;;:::o;26976:182::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27080:16:::1;27062:15;;:34;;;;;;;;;;;;;;;;;;27146:4;27107:19;:36;27127:15;;;;;;;;;;;27107:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;26976:182:::0;:::o;7676:151::-;7765:7;7792:11;:18;7804:5;7792:18;;;;;;;;;;;;;;;:27;7811:7;7792:27;;;;;;;;;;;;;;;;7785:34;;7676:151;;;;:::o;1641:244::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1750:1:::1;1730:22;;:8;:22;;::::0;1722:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1840:8;1811:38;;1832:6;;;;;;;;;;;1811:38;;;;;;;;;;;;1869:8;1860:6;;:17;;;;;;;;;;;;;;;;;;1641:244:::0;:::o;19514:35::-;;;:::o;24460:190::-;918:12;:10;:12::i;:::-;908:22;;:6;;;;;;;;;;;:22;;;900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24553:8:::1;24545:16;;:4;:16;;::::0;24537:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24617:25;24630:4;24636:5;24617:12;:25::i;:::-;24460:190:::0;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;13296:380::-;13449:1;13432:19;;:5;:19;;;13424:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13530:1;13511:21;;:7;:21;;;13503:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13614:6;13584:11;:18;13596:5;13584:18;;;;;;;;;;;;;;;:27;13603:7;13584:27;;;;;;;;;;;;;;;:36;;;;13652:7;13636:32;;13645:5;13636:32;;;13661:6;13636:32;;;;;;:::i;:::-;;;;;;;;13296:380;;;:::o;20826:2660::-;20940:1;20924:18;;:4;:18;;;20916:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21010:1;20996:16;;:2;:16;;;20988:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;21080:1;21070:6;:11;21067:92;;21098:28;21114:4;21120:2;21124:1;21098:15;:28::i;:::-;21141:7;;21067:92;21191:7;:5;:7::i;:::-;21174:77;;21187:2;21174:77;;21181:4;21174:77;;;21200:19;:25;21220:4;21200:25;;;;;;;;;;;;;;;;;;;;;;;;;21227:19;:23;21247:2;21227:23;;;;;;;;;;;;;;;;;;;;;;;;;21174:77;;;;;;;:::i;:::-;;;;;;;;21267:92;21273:22;:26;21296:2;21273:26;;;;;;;;;;;;;;;;;;;;;;;;;21300:6;21307:11;;21329:13;21339:2;21329:9;:13::i;:::-;21320:6;:22;;;;:::i;:::-;21343:15;;21267:92;;;;;;;;;;:::i;:::-;;;;;;;;21374:14;;;;;;;;;;;:33;;;;;21400:7;:5;:7::i;:::-;21392:15;;:4;:15;;;;21374:33;:50;;;;;21417:7;:5;:7::i;:::-;21411:13;;:2;:13;;;;21374:50;21370:1268;;;21446:13;;;;;;;;;;;21441:141;;21488:19;:25;21508:4;21488:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21517:19;:23;21537:2;21517:23;;;;;;;;;;;;;;;;;;;;;;;;;21488:52;21480:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;21441:141;22034:8;:14;22043:4;22034:14;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;22053:22;:26;22076:2;22053:26;;;;;;;;;;;;;;;;;;;;;;;;;22052:27;22034:45;22030:597;;;22118:11;;22108:6;:21;;22100:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22230:15;;22213:13;22223:2;22213:9;:13::i;:::-;22204:6;:22;;;;:::i;:::-;:41;;22196:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22030:597;;;22308:8;:12;22317:2;22308:12;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;22325:22;:28;22348:4;22325:28;;;;;;;;;;;;;;;;;;;;;;;;;22324:29;22308:45;22304:323;;;22392:11;;22382:6;:21;;22374:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;22304:323;;;22491:22;:26;22514:2;22491:26;;;;;;;;;;;;;;;;;;;;;;;;;22487:140;;22572:15;;22555:13;22565:2;22555:9;:13::i;:::-;22546:6;:22;;;;:::i;:::-;:41;;22538:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22487:140;22304:323;22030:597;21370:1268;22684:8;:14;22693:4;22684:14;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;22702:8;:12;22711:2;22702:12;;;;;;;;;;;;;;;;;;;;;;;;;22684:30;22680:660;;;22736:19;:25;22756:4;22736:25;;;;;;;;;;;;;;;;;;;;;;;;;22735:26;:54;;;;;22766:19;:23;22786:2;22766:23;;;;;;;;;;;;;;;;;;;;;;;;;22765:24;22735:54;22731:598;;;22810:22;22859:5;22844:12;;22835:6;:21;;;;:::i;:::-;:29;;;;:::i;:::-;22810:54;;22903:1;22886:14;:18;22883:166;;;22929:53;22945:4;22951:14;;;;;;;;;;;22967;22929:15;:53::i;:::-;23015:14;23005:24;;;;;:::i;:::-;;;22883:166;23069:23;23120:5;23104:13;;23095:6;:22;;;;:::i;:::-;:30;;;;:::i;:::-;23069:56;;23165:1;23147:15;:19;23144:170;;;23191:55;23207:4;23213:15;;;;;;;;;;;23230;23191;:55::i;:::-;23279:15;23269:25;;;;;:::i;:::-;;;23144:170;22791:538;;22731:598;22680:660;23375:6;23356:15;23366:4;23356:9;:15::i;:::-;:25;:39;;;;;23394:1;23385:6;:10;23356:39;23352:83;;;23422:1;23412:11;;;;;:::i;:::-;;;23352:83;23445:33;23461:4;23467:2;23471:6;23445:15;:33::i;:::-;20826:2660;;;;:::o;15577:192::-;15663:7;15696:1;15691;:6;;15699:12;15683:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;15723:9;15739:1;15735;:5;;;;:::i;:::-;15723:17;;15760:1;15753:8;;;15577:192;;;;;:::o;10869:573::-;11027:1;11009:20;;:6;:20;;;11001:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11111:1;11090:23;;:9;:23;;;11082:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11166:47;11187:6;11195:9;11206:6;11166:20;:47::i;:::-;11246:71;11268:6;11246:71;;;;;;;;;;;;;;;;;:9;:17;11256:6;11246:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;11226:9;:17;11236:6;11226:17;;;;;;;;;;;;;;;:91;;;;11351:32;11376:6;11351:9;:20;11361:9;11351:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11328:9;:20;11338:9;11328:20;;;;;;;;;;;;;;;:55;;;;11416:9;11399:35;;11408:6;11399:35;;;11427:6;11399:35;;;;;;:::i;:::-;;;;;;;;10869:573;;;:::o;14674:181::-;14732:7;14752:9;14768:1;14764;:5;;;;:::i;:::-;14752:17;;14793:1;14788;:6;;14780:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14846:1;14839:8;;;14674:181;;;;:::o;12440:418::-;12543:1;12524:21;;:7;:21;;;12516:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12596:49;12617:7;12634:1;12638:6;12596:20;:49::i;:::-;12679:68;12702:6;12679:68;;;;;;;;;;;;;;;;;:9;:18;12689:7;12679:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;12658:9;:18;12668:7;12658:18;;;;;;;;;;;;;;;:89;;;;12773:24;12790:6;12773:12;;:16;;:24;;;;:::i;:::-;12758:12;:39;;;;12839:1;12813:37;;12822:7;12813:37;;;12843:6;12813:37;;;;;;:::i;:::-;;;;;;;;12440:418;;:::o;24658:97::-;24742:5;24725:8;:14;24734:4;24725:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;24658:97;;:::o;14279:125::-;;;;:::o;15138:136::-;15196:7;15223:43;15227:1;15230;15223:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;15216:50;;15138:136;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:468::-;6201:6;6209;6258:2;6246:9;6237:7;6233:23;6229:32;6226:119;;;6264:79;;:::i;:::-;6226:119;6384:1;6409:53;6454:7;6445:6;6434:9;6430:22;6409:53;:::i;:::-;6399:63;;6355:117;6511:2;6537:50;6579:7;6570:6;6559:9;6555:22;6537:50;:::i;:::-;6527:60;;6482:115;6136:468;;;;;:::o;6610:323::-;6666:6;6715:2;6703:9;6694:7;6690:23;6686:32;6683:119;;;6721:79;;:::i;:::-;6683:119;6841:1;6866:50;6908:7;6899:6;6888:9;6884:22;6866:50;:::i;:::-;6856:60;;6812:114;6610:323;;;;:::o;6939:474::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6939:474;;;;;:::o;7419:60::-;7447:3;7468:5;7461:12;;7419:60;;;:::o;7485:142::-;7535:9;7568:53;7586:34;7595:24;7613:5;7595:24;:::i;:::-;7586:34;:::i;:::-;7568:53;:::i;:::-;7555:66;;7485:142;;;:::o;7633:126::-;7683:9;7716:37;7747:5;7716:37;:::i;:::-;7703:50;;7633:126;;;:::o;7765:145::-;7834:9;7867:37;7898:5;7867:37;:::i;:::-;7854:50;;7765:145;;;:::o;7916:169::-;8022:56;8072:5;8022:56;:::i;:::-;8017:3;8010:69;7916:169;;:::o;8091:260::-;8203:4;8241:2;8230:9;8226:18;8218:26;;8254:90;8341:1;8330:9;8326:17;8317:6;8254:90;:::i;:::-;8091:260;;;;:::o;8357:180::-;8405:77;8402:1;8395:88;8502:4;8499:1;8492:15;8526:4;8523:1;8516:15;8543:320;8587:6;8624:1;8618:4;8614:12;8604:22;;8671:1;8665:4;8661:12;8692:18;8682:81;;8748:4;8740:6;8736:17;8726:27;;8682:81;8810:2;8802:6;8799:14;8779:18;8776:38;8773:84;;8829:18;;:::i;:::-;8773:84;8594:269;8543:320;;;:::o;8869:182::-;9009:34;9005:1;8997:6;8993:14;8986:58;8869:182;:::o;9057:366::-;9199:3;9220:67;9284:2;9279:3;9220:67;:::i;:::-;9213:74;;9296:93;9385:3;9296:93;:::i;:::-;9414:2;9409:3;9405:12;9398:19;;9057:366;;;:::o;9429:419::-;9595:4;9633:2;9622:9;9618:18;9610:26;;9682:9;9676:4;9672:20;9668:1;9657:9;9653:17;9646:47;9710:131;9836:4;9710:131;:::i;:::-;9702:139;;9429:419;;;:::o;9854:229::-;9994:34;9990:1;9982:6;9978:14;9971:58;10063:12;10058:2;10050:6;10046:15;10039:37;9854:229;:::o;10089:366::-;10231:3;10252:67;10316:2;10311:3;10252:67;:::i;:::-;10245:74;;10328:93;10417:3;10328:93;:::i;:::-;10446:2;10441:3;10437:12;10430:19;;10089:366;;;:::o;10461:419::-;10627:4;10665:2;10654:9;10650:18;10642:26;;10714:9;10708:4;10704:20;10700:1;10689:9;10685:17;10678:47;10742:131;10868:4;10742:131;:::i;:::-;10734:139;;10461:419;;;:::o;10886:143::-;10943:5;10974:6;10968:13;10959:22;;10990:33;11017:5;10990:33;:::i;:::-;10886:143;;;;:::o;11035:351::-;11105:6;11154:2;11142:9;11133:7;11129:23;11125:32;11122:119;;;11160:79;;:::i;:::-;11122:119;11280:1;11305:64;11361:7;11352:6;11341:9;11337:22;11305:64;:::i;:::-;11295:74;;11251:128;11035:351;;;;:::o;11392:180::-;11440:77;11437:1;11430:88;11537:4;11534:1;11527:15;11561:4;11558:1;11551:15;11578:410;11618:7;11641:20;11659:1;11641:20;:::i;:::-;11636:25;;11675:20;11693:1;11675:20;:::i;:::-;11670:25;;11730:1;11727;11723:9;11752:30;11770:11;11752:30;:::i;:::-;11741:41;;11931:1;11922:7;11918:15;11915:1;11912:22;11892:1;11885:9;11865:83;11842:139;;11961:18;;:::i;:::-;11842:139;11626:362;11578:410;;;;:::o;11994:180::-;12042:77;12039:1;12032:88;12139:4;12136:1;12129:15;12163:4;12160:1;12153:15;12180:185;12220:1;12237:20;12255:1;12237:20;:::i;:::-;12232:25;;12271:20;12289:1;12271:20;:::i;:::-;12266:25;;12310:1;12300:35;;12315:18;;:::i;:::-;12300:35;12357:1;12354;12350:9;12345:14;;12180:185;;;;:::o;12371:225::-;12511:34;12507:1;12499:6;12495:14;12488:58;12580:8;12575:2;12567:6;12563:15;12556:33;12371:225;:::o;12602:366::-;12744:3;12765:67;12829:2;12824:3;12765:67;:::i;:::-;12758:74;;12841:93;12930:3;12841:93;:::i;:::-;12959:2;12954:3;12950:12;12943:19;;12602:366;;;:::o;12974:419::-;13140:4;13178:2;13167:9;13163:18;13155:26;;13227:9;13221:4;13217:20;13213:1;13202:9;13198:17;13191:47;13255:131;13381:4;13255:131;:::i;:::-;13247:139;;12974:419;;;:::o;13399:223::-;13539:34;13535:1;13527:6;13523:14;13516:58;13608:6;13603:2;13595:6;13591:15;13584:31;13399:223;:::o;13628:366::-;13770:3;13791:67;13855:2;13850:3;13791:67;:::i;:::-;13784:74;;13867:93;13956:3;13867:93;:::i;:::-;13985:2;13980:3;13976:12;13969:19;;13628:366;;;:::o;14000:419::-;14166:4;14204:2;14193:9;14189:18;14181:26;;14253:9;14247:4;14243:20;14239:1;14228:9;14224:17;14217:47;14281:131;14407:4;14281:131;:::i;:::-;14273:139;;14000:419;;;:::o;14425:225::-;14565:34;14561:1;14553:6;14549:14;14542:58;14634:8;14629:2;14621:6;14617:15;14610:33;14425:225;:::o;14656:366::-;14798:3;14819:67;14883:2;14878:3;14819:67;:::i;:::-;14812:74;;14895:93;14984:3;14895:93;:::i;:::-;15013:2;15008:3;15004:12;14997:19;;14656:366;;;:::o;15028:419::-;15194:4;15232:2;15221:9;15217:18;15209:26;;15281:9;15275:4;15271:20;15267:1;15256:9;15252:17;15245:47;15309:131;15435:4;15309:131;:::i;:::-;15301:139;;15028:419;;;:::o;15453:227::-;15593:34;15589:1;15581:6;15577:14;15570:58;15662:10;15657:2;15649:6;15645:15;15638:35;15453:227;:::o;15686:366::-;15828:3;15849:67;15913:2;15908:3;15849:67;:::i;:::-;15842:74;;15925:93;16014:3;15925:93;:::i;:::-;16043:2;16038:3;16034:12;16027:19;;15686:366;;;:::o;16058:419::-;16224:4;16262:2;16251:9;16247:18;16239:26;;16311:9;16305:4;16301:20;16297:1;16286:9;16282:17;16275:47;16339:131;16465:4;16339:131;:::i;:::-;16331:139;;16058:419;;;:::o;16483:223::-;16623:34;16619:1;16611:6;16607:14;16600:58;16692:6;16687:2;16679:6;16675:15;16668:31;16483:223;:::o;16712:366::-;16854:3;16875:67;16939:2;16934:3;16875:67;:::i;:::-;16868:74;;16951:93;17040:3;16951:93;:::i;:::-;17069:2;17064:3;17060:12;17053:19;;16712:366;;;:::o;17084:419::-;17250:4;17288:2;17277:9;17273:18;17265:26;;17337:9;17331:4;17327:20;17323:1;17312:9;17308:17;17301:47;17365:131;17491:4;17365:131;:::i;:::-;17357:139;;17084:419;;;:::o;17509:221::-;17649:34;17645:1;17637:6;17633:14;17626:58;17718:4;17713:2;17705:6;17701:15;17694:29;17509:221;:::o;17736:366::-;17878:3;17899:67;17963:2;17958:3;17899:67;:::i;:::-;17892:74;;17975:93;18064:3;17975:93;:::i;:::-;18093:2;18088:3;18084:12;18077:19;;17736:366;;;:::o;18108:419::-;18274:4;18312:2;18301:9;18297:18;18289:26;;18361:9;18355:4;18351:20;18347:1;18336:9;18332:17;18325:47;18389:131;18515:4;18389:131;:::i;:::-;18381:139;;18108:419;;;:::o;18533:180::-;18673:32;18669:1;18661:6;18657:14;18650:56;18533:180;:::o;18719:366::-;18861:3;18882:67;18946:2;18941:3;18882:67;:::i;:::-;18875:74;;18958:93;19047:3;18958:93;:::i;:::-;19076:2;19071:3;19067:12;19060:19;;18719:366;;;:::o;19091:419::-;19257:4;19295:2;19284:9;19280:18;19272:26;;19344:9;19338:4;19334:20;19330:1;19319:9;19315:17;19308:47;19372:131;19498:4;19372:131;:::i;:::-;19364:139;;19091:419;;;:::o;19516:178::-;19656:30;19652:1;19644:6;19640:14;19633:54;19516:178;:::o;19700:366::-;19842:3;19863:67;19927:2;19922:3;19863:67;:::i;:::-;19856:74;;19939:93;20028:3;19939:93;:::i;:::-;20057:2;20052:3;20048:12;20041:19;;19700:366;;;:::o;20072:419::-;20238:4;20276:2;20265:9;20261:18;20253:26;;20325:9;20319:4;20315:20;20311:1;20300:9;20296:17;20289:47;20353:131;20479:4;20353:131;:::i;:::-;20345:139;;20072:419;;;:::o;20497:308::-;20606:4;20644:2;20633:9;20629:18;20621:26;;20657:65;20719:1;20708:9;20704:17;20695:6;20657:65;:::i;:::-;20732:66;20794:2;20783:9;20779:18;20770:6;20732:66;:::i;:::-;20497:308;;;;;:::o;20811:191::-;20851:3;20870:20;20888:1;20870:20;:::i;:::-;20865:25;;20904:20;20922:1;20904:20;:::i;:::-;20899:25;;20947:1;20944;20940:9;20933:16;;20968:3;20965:1;20962:10;20959:36;;;20975:18;;:::i;:::-;20959:36;20811:191;;;;:::o;21008:652::-;21207:4;21245:3;21234:9;21230:19;21222:27;;21259:65;21321:1;21310:9;21306:17;21297:6;21259:65;:::i;:::-;21334:72;21402:2;21391:9;21387:18;21378:6;21334:72;:::i;:::-;21416;21484:2;21473:9;21469:18;21460:6;21416:72;:::i;:::-;21498;21566:2;21555:9;21551:18;21542:6;21498:72;:::i;:::-;21580:73;21648:3;21637:9;21633:19;21624:6;21580:73;:::i;:::-;21008:652;;;;;;;;:::o;21666:171::-;21806:23;21802:1;21794:6;21790:14;21783:47;21666:171;:::o;21843:366::-;21985:3;22006:67;22070:2;22065:3;22006:67;:::i;:::-;21999:74;;22082:93;22171:3;22082:93;:::i;:::-;22200:2;22195:3;22191:12;22184:19;;21843:366;;;:::o;22215:419::-;22381:4;22419:2;22408:9;22404:18;22396:26;;22468:9;22462:4;22458:20;22454:1;22443:9;22439:17;22432:47;22496:131;22622:4;22496:131;:::i;:::-;22488:139;;22215:419;;;:::o;22640:230::-;22780:34;22776:1;22768:6;22764:14;22757:58;22849:13;22844:2;22836:6;22832:15;22825:38;22640:230;:::o;22876:366::-;23018:3;23039:67;23103:2;23098:3;23039:67;:::i;:::-;23032:74;;23115:93;23204:3;23115:93;:::i;:::-;23233:2;23228:3;23224:12;23217:19;;22876:366;;;:::o;23248:419::-;23414:4;23452:2;23441:9;23437:18;23429:26;;23501:9;23495:4;23491:20;23487:1;23476:9;23472:17;23465:47;23529:131;23655:4;23529:131;:::i;:::-;23521:139;;23248:419;;;:::o;23673:169::-;23813:21;23809:1;23801:6;23797:14;23790:45;23673:169;:::o;23848:366::-;23990:3;24011:67;24075:2;24070:3;24011:67;:::i;:::-;24004:74;;24087:93;24176:3;24087:93;:::i;:::-;24205:2;24200:3;24196:12;24189:19;;23848:366;;;:::o;24220:419::-;24386:4;24424:2;24413:9;24409:18;24401:26;;24473:9;24467:4;24463:20;24459:1;24448:9;24444:17;24437:47;24501:131;24627:4;24501:131;:::i;:::-;24493:139;;24220:419;;;:::o;24645:231::-;24785:34;24781:1;24773:6;24769:14;24762:58;24854:14;24849:2;24841:6;24837:15;24830:39;24645:231;:::o;24882:366::-;25024:3;25045:67;25109:2;25104:3;25045:67;:::i;:::-;25038:74;;25121:93;25210:3;25121:93;:::i;:::-;25239:2;25234:3;25230:12;25223:19;;24882:366;;;:::o;25254:419::-;25420:4;25458:2;25447:9;25443:18;25435:26;;25507:9;25501:4;25497:20;25493:1;25482:9;25478:17;25471:47;25535:131;25661:4;25535:131;:::i;:::-;25527:139;;25254:419;;;:::o;25679:194::-;25719:4;25739:20;25757:1;25739:20;:::i;:::-;25734:25;;25773:20;25791:1;25773:20;:::i;:::-;25768:25;;25817:1;25814;25810:9;25802:17;;25841:1;25835:4;25832:11;25829:37;;;25846:18;;:::i;:::-;25829:37;25679:194;;;;:::o;25879:224::-;26019:34;26015:1;26007:6;26003:14;25996:58;26088:7;26083:2;26075:6;26071:15;26064:32;25879:224;:::o;26109:366::-;26251:3;26272:67;26336:2;26331:3;26272:67;:::i;:::-;26265:74;;26348:93;26437:3;26348:93;:::i;:::-;26466:2;26461:3;26457:12;26450:19;;26109:366;;;:::o;26481:419::-;26647:4;26685:2;26674:9;26670:18;26662:26;;26734:9;26728:4;26724:20;26720:1;26709:9;26705:17;26698:47;26762:131;26888:4;26762:131;:::i;:::-;26754:139;;26481:419;;;:::o;26906:222::-;27046:34;27042:1;27034:6;27030:14;27023:58;27115:5;27110:2;27102:6;27098:15;27091:30;26906:222;:::o;27134:366::-;27276:3;27297:67;27361:2;27356:3;27297:67;:::i;:::-;27290:74;;27373:93;27462:3;27373:93;:::i;:::-;27491:2;27486:3;27482:12;27475:19;;27134:366;;;:::o;27506:419::-;27672:4;27710:2;27699:9;27695:18;27687:26;;27759:9;27753:4;27749:20;27745:1;27734:9;27730:17;27723:47;27787:131;27913:4;27787:131;:::i;:::-;27779:139;;27506:419;;;:::o;27931:177::-;28071:29;28067:1;28059:6;28055:14;28048:53;27931:177;:::o;28114:366::-;28256:3;28277:67;28341:2;28336:3;28277:67;:::i;:::-;28270:74;;28353:93;28442:3;28353:93;:::i;:::-;28471:2;28466:3;28462:12;28455:19;;28114:366;;;:::o;28486:419::-;28652:4;28690:2;28679:9;28675:18;28667:26;;28739:9;28733:4;28729:20;28725:1;28714:9;28710:17;28703:47;28767:131;28893:4;28767:131;:::i;:::-;28759:139;;28486:419;;;:::o;28911:220::-;29051:34;29047:1;29039:6;29035:14;29028:58;29120:3;29115:2;29107:6;29103:15;29096:28;28911:220;:::o;29137:366::-;29279:3;29300:67;29364:2;29359:3;29300:67;:::i;:::-;29293:74;;29376:93;29465:3;29376:93;:::i;:::-;29494:2;29489:3;29485:12;29478:19;;29137:366;;;:::o;29509:419::-;29675:4;29713:2;29702:9;29698:18;29690:26;;29762:9;29756:4;29752:20;29748:1;29737:9;29733:17;29726:47;29790:131;29916:4;29790:131;:::i;:::-;29782:139;;29509:419;;;:::o

Swarm Source

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