ETH Price: $3,496.70 (+2.96%)
Gas: 13 Gwei

Token

$CHRIST ($CHRIST)
 

Overview

Max Total Supply

100,000,000,069 $CHRIST

Holders

125

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.201944979232338446 $CHRIST

Value
$0.00
0x036e02b89a4edbaa2a484e20743bc70e262d81fc
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
$CHRIST

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-22
*/

/**
 *Telegram: https://t.me/jes_christ
 *Website: https://christerc.com
 *Twitter: https://twitter.com/jes_christw
*/

// SPDX-License-Identifier: MIT




pragma solidity ^0.8.9;

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

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

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

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

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

    /**

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

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

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

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

/*

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

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

/**

 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**

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

    /**

     */
    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);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    /**
   
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     
     */
    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);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(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 += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(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);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(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 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 {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) internal {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**

 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract $CHRIST is ERC20, Ownable, Pausable {

    // variables
    
    uint256 private initialSupply;
   
    uint256 private denominator = 100;

    uint256 private swapThreshold = 0.000005 ether; // 
    
    uint256 private devTaxBuy;
    uint256 private liquidityTaxBuy;
   
    
    uint256 private devTaxSell;
    uint256 private liquidityTaxSell;
    uint256 public maxWallet;
    
    address private devTaxWallet;
    address private liquidityTaxWallet;
    
    
    // Mappings
    
    mapping (address => bool) private blacklist;
    mapping (address => bool) private excludeList;
   
    
    mapping (string => uint256) private buyTaxes;
    mapping (string => uint256) private sellTaxes;
    mapping (string => address) private taxWallets;
    
    bool public taxStatus = true;
    
    IUniswapV2Router02 private uniswapV2Router02;
    IUniswapV2Factory private uniswapV2Factory;
    IUniswapV2Pair private uniswapV2Pair;
    
    constructor(string memory _tokenName,string memory _tokenSymbol,uint256 _supply) ERC20(_tokenName, _tokenSymbol) payable
    {
        initialSupply =_supply * (10**18);
        maxWallet = initialSupply * 2 / 100; //
        _setOwner(msg.sender);
        uniswapV2Router02 = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Factory = IUniswapV2Factory(uniswapV2Router02.factory());
        uniswapV2Pair = IUniswapV2Pair(uniswapV2Factory.createPair(address(this), uniswapV2Router02.WETH()));
        taxWallets["liquidity"] = address(0);
        setBuyTax(5,1); //dev tax, liquidity tax
        setSellTax(90,8); //dev tax, liquidity tax
        setTaxWallets(0xdF3E5CAF8E0C53b8cB233F9732263a2FDD6cCbb4); // 
        exclude(msg.sender);
        exclude(address(this));
        exclude(devTaxWallet);
        _mint(msg.sender, initialSupply);
    }
    
    
    uint256 private devTokens;
    uint256 private liquidityTokens;
    
    
    /**
     * @dev Calculates the tax, transfer it to the contract. If the user is selling, and the swap threshold is met, it executes the tax.
     */
    function handleTax(address from, address to, uint256 amount) private returns (uint256) {
        address[] memory sellPath = new address[](2);
        sellPath[0] = address(this);
        sellPath[1] = uniswapV2Router02.WETH();
        
        if(!isExcluded(from) && !isExcluded(to)) {
            uint256 tax;
            uint256 baseUnit = amount / denominator;
            if(from == address(uniswapV2Pair)) {
                tax += baseUnit * buyTaxes["dev"];
                tax += baseUnit * buyTaxes["liquidity"];
               
                
                if(tax > 0) {
                    _transfer(from, address(this), tax);   
                }
                
                
                devTokens += baseUnit * buyTaxes["dev"];
                liquidityTokens += baseUnit * buyTaxes["liquidity"];

            } else if(to == address(uniswapV2Pair)) {
                
                tax += baseUnit * sellTaxes["dev"];
                tax += baseUnit * sellTaxes["liquidity"];
                
                
                if(tax > 0) {
                    _transfer(from, address(this), tax);   
                }
                
               
                devTokens += baseUnit * sellTaxes["dev"];
                liquidityTokens += baseUnit * sellTaxes["liquidity"];
                
                
                uint256 taxSum =  devTokens + liquidityTokens;
                
                if(taxSum == 0) return amount;
                
                uint256 ethValue = uniswapV2Router02.getAmountsOut( devTokens + liquidityTokens, sellPath)[1];
                
                if(ethValue >= swapThreshold) {
                    uint256 startBalance = address(this).balance;

                    uint256 toSell = devTokens + liquidityTokens / 2 ;
                    
                    _approve(address(this), address(uniswapV2Router02), toSell);
            
                    uniswapV2Router02.swapExactTokensForETH(
                        toSell,
                        0,
                        sellPath,
                        address(this),
                        block.timestamp
                    );
                    
                    uint256 ethGained = address(this).balance - startBalance;
                    
                    uint256 liquidityToken = liquidityTokens / 2;
                    uint256 liquidityETH = (ethGained * ((liquidityTokens / 2 * 10**18) / taxSum)) / 10**18;
                    
                    
                    uint256 devETH = (ethGained * ((devTokens * 10**18) / taxSum)) / 10**18;
                   
                    
                    _approve(address(this), address(uniswapV2Router02), liquidityToken);
                    
                    uniswapV2Router02.addLiquidityETH{value: liquidityETH}(
                        address(this),
                        liquidityToken,
                        0,
                        0,
                        taxWallets["liquidity"],
                        block.timestamp
                    );
                    
                    uint256 remainingTokens = (devTokens + liquidityTokens) - (toSell + liquidityToken);
                    
                    if(remainingTokens > 0) {
                        _transfer(address(this), taxWallets["dev"], remainingTokens);
                    }
                    
                    
                   (bool success,) = taxWallets["dev"].call{value: devETH}("");
                   require(success, "transfer to  dev wallet failed");
                    
                    
                    if(ethGained - ( devETH + liquidityETH) > 0) {
                       (bool success1,) = taxWallets["dev"].call{value: ethGained - (devETH + liquidityETH)}("");
                        require(success1, "transfer to  dev wallet failed");
                    }

                    
                    
                    
                    devTokens = 0;
                    liquidityTokens = 0;
                    
                }
                
            }
            
            amount -= tax;
            if (to != address(uniswapV2Pair)){
                require(balanceOf(to) + amount <= maxWallet, "maxWallet limit exceeded");
            }
           
        }
        
        return amount;
    }
    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override virtual {
        require(!paused(), "ERC20: token transfer while paused");
        require(!isBlacklisted(msg.sender), "ERC20: sender blacklisted");
        require(!isBlacklisted(recipient), "ERC20: recipient blacklisted");
        require(!isBlacklisted(tx.origin), "ERC20: sender blacklisted");
        
        if(taxStatus) {
            amount = handleTax(sender, recipient, amount);   
        }

        super._transfer(sender, recipient, amount);
    }
    
    /**
     * @dev Triggers the tax handling functionality
     */
    function triggerTax() public onlyOwner {
        handleTax(address(0), address(uniswapV2Pair), 0);
    }
    
    /**
     * @dev Pauses transfers on the token.
     */
    function pause() public onlyOwner {
        require(!paused(), "ERC20: Contract is already paused");
        _pause();
    }

    /**
     * @dev Unpauses transfers on the token.
     */
    function unpause() public onlyOwner {
        require(paused(), "ERC20: Contract is not paused");
        _unpause();
    }

     /**
     * @dev set max wallet limit per address.
     */

    function setMaxWallet (uint256 amount) external onlyOwner {
        require (amount > 10000, "NO rug pull");
        maxWallet = amount * 10**18;
    }
    
    /**
     * @dev Burns tokens from caller address.
     */
    function burn(uint256 amount) public onlyOwner {
        _burn(msg.sender, amount);
    }
    
    /**
     * @dev Blacklists the specified account (Disables transfers to and from the account).
     */
    function enableBlacklist(address account) public onlyOwner {
        require(!blacklist[account], "ERC20: Account is already blacklisted");
        blacklist[account] = true;
    }
    
    /**
     * @dev Remove the specified account from the blacklist.
     */
    function disableBlacklist(address account) public onlyOwner {
        require(blacklist[account], "ERC20: Account is not blacklisted");
        blacklist[account] = false;
    }
    
    /**
     * @dev Excludes the specified account from tax.
     */
    function exclude(address account) public onlyOwner {
        require(!isExcluded(account), "ERC20: Account is already excluded");
        excludeList[account] = true;
    }
    
    /**
     * @dev Re-enables tax on the specified account.
     */
    function removeExclude(address account) public onlyOwner {
        require(isExcluded(account), "ERC20: Account is not excluded");
        excludeList[account] = false;
    }
    
    /**
     * @dev Sets tax for buys.
     */
    function setBuyTax(uint256 dev,uint256 liquidity) public onlyOwner {
        buyTaxes["dev"] = dev;
        buyTaxes["liquidity"] = liquidity;
       
    }
    
    /**
     * @dev Sets tax for sells.
     */
    function setSellTax(uint256 dev, uint256 liquidity) public onlyOwner {

        sellTaxes["dev"] = dev;
        sellTaxes["liquidity"] = liquidity;
        
    }
    
    /**
     * @dev Sets wallets for taxes.
     */
    function setTaxWallets(address dev) public onlyOwner {
        taxWallets["dev"] = dev;
        
    }

    function claimStuckTokens(address _token) external onlyOwner {
 
        if (_token == address(0x0)) {
            payable(owner()).transfer(address(this).balance);
            return;
        }
        IERC20 erc20token = IERC20(_token);
        uint256 balance = erc20token.balanceOf(address(this));
        erc20token.transfer(owner(), balance);
    }
    
    /**
     * @dev Enables tax globally.
     */
    function enableTax() public onlyOwner {
        require(!taxStatus, "ERC20: Tax is already enabled");
        taxStatus = true;
    }
    
    /**
     * @dev Disables tax globally.
     */
    function disableTax() public onlyOwner {
        require(taxStatus, "ERC20: Tax is already disabled");
        taxStatus = false;
    }
    
    /**
     * @dev Returns true if the account is blacklisted, and false otherwise.
     */
    function isBlacklisted(address account) public view returns (bool) {
        return blacklist[account];
    }
    
    /**
     * @dev Returns true if the account is excluded, and false otherwise.
     */
    function isExcluded(address account) public view returns (bool) {
        return excludeList[account];
    }
    
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_tokenName","type":"string"},{"internalType":"string","name":"_tokenSymbol","type":"string"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"disableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"enableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"exclude","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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dev","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052606460075565048c273950006008556001601560006101000a81548160ff021916908315150217905550604051620061cd380380620061cd833981810160405281019062000053919062000d23565b8282816003908162000066919062000ffe565b50806004908162000078919062000ffe565b5050506000600560146101000a81548160ff021916908315150217905550670de0b6b3a764000081620000ac919062001114565b60068190555060646002600654620000c5919062001114565b620000d191906200118e565b600d81905550620000e833620004a660201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d601560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d191906200122b565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e491906200122b565b6040518363ffffffff1660e01b8152600401620003039291906200126e565b6020604051808303816000875af115801562000323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034991906200122b565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060146040516200039b90620012f6565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003fb600560016200056c60201b60201c565b6200040f605a60086200064560201b60201c565b6200043473df3e5caf8e0c53b8cb233f9732263a2fdd6ccbb46200071e60201b60201c565b62000445336200080d60201b60201c565b62000456306200080d60201b60201c565b62000489600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200080d60201b60201c565b6200049d336006546200094b60201b60201c565b5050506200156a565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200057c62000ac360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005a262000acb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f2906200136e565b60405180910390fd5b8160126040516200060c90620013e0565b9081526020016040518091039020819055508060126040516200062f90620012f6565b9081526020016040518091039020819055505050565b6200065562000ac360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200067b62000acb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006cb906200136e565b60405180910390fd5b816013604051620006e590620013e0565b9081526020016040518091039020819055508060136040516200070890620012f6565b9081526020016040518091039020819055505050565b6200072e62000ac360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200075462000acb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a4906200136e565b60405180910390fd5b806014604051620007be90620013e0565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6200081d62000ac360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200084362000acb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200089c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000893906200136e565b60405180910390fd5b620008ad8162000af560201b60201c565b15620008f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e7906200146d565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b490620014df565b60405180910390fd5b620009d16000838362000b4b60201b60201c565b8060026000828254620009e5919062001501565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a3c919062001501565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aa391906200154d565b60405180910390a362000abf6000838362000b5060201b60201c565b5050565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000bbe8262000b73565b810181811067ffffffffffffffff8211171562000be05762000bdf62000b84565b5b80604052505050565b600062000bf562000b55565b905062000c03828262000bb3565b919050565b600067ffffffffffffffff82111562000c265762000c2562000b84565b5b62000c318262000b73565b9050602081019050919050565b60005b8381101562000c5e57808201518184015260208101905062000c41565b60008484015250505050565b600062000c8162000c7b8462000c08565b62000be9565b90508281526020810184848401111562000ca05762000c9f62000b6e565b5b62000cad84828562000c3e565b509392505050565b600082601f83011262000ccd5762000ccc62000b69565b5b815162000cdf84826020860162000c6a565b91505092915050565b6000819050919050565b62000cfd8162000ce8565b811462000d0957600080fd5b50565b60008151905062000d1d8162000cf2565b92915050565b60008060006060848603121562000d3f5762000d3e62000b5f565b5b600084015167ffffffffffffffff81111562000d605762000d5f62000b64565b5b62000d6e8682870162000cb5565b935050602084015167ffffffffffffffff81111562000d925762000d9162000b64565b5b62000da08682870162000cb5565b925050604062000db38682870162000d0c565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e1057607f821691505b60208210810362000e265762000e2562000dc8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e51565b62000e9c868362000e51565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000edf62000ed962000ed38462000ce8565b62000eb4565b62000ce8565b9050919050565b6000819050919050565b62000efb8362000ebe565b62000f1362000f0a8262000ee6565b84845462000e5e565b825550505050565b600090565b62000f2a62000f1b565b62000f3781848462000ef0565b505050565b5b8181101562000f5f5762000f5360008262000f20565b60018101905062000f3d565b5050565b601f82111562000fae5762000f788162000e2c565b62000f838462000e41565b8101602085101562000f93578190505b62000fab62000fa28562000e41565b83018262000f3c565b50505b505050565b600082821c905092915050565b600062000fd36000198460080262000fb3565b1980831691505092915050565b600062000fee838362000fc0565b9150826002028217905092915050565b620010098262000dbd565b67ffffffffffffffff81111562001025576200102462000b84565b5b62001031825462000df7565b6200103e82828562000f63565b600060209050601f83116001811462001076576000841562001061578287015190505b6200106d858262000fe0565b865550620010dd565b601f198416620010868662000e2c565b60005b82811015620010b05784890151825560018201915060208501945060208101905062001089565b86831015620010d05784890151620010cc601f89168262000fc0565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011218262000ce8565b91506200112e8362000ce8565b92508282026200113e8162000ce8565b91508282048414831517620011585762001157620010e5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200119b8262000ce8565b9150620011a88362000ce8565b925082620011bb57620011ba6200115f565b5b828204905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011f382620011c6565b9050919050565b6200120581620011e6565b81146200121157600080fd5b50565b6000815190506200122581620011fa565b92915050565b60006020828403121562001244576200124362000b5f565b5b6000620012548482850162001214565b91505092915050565b6200126881620011e6565b82525050565b60006040820190506200128560008301856200125d565b6200129460208301846200125d565b9392505050565b600081905092915050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b6000620012de6009836200129b565b9150620012eb82620012a6565b600982019050919050565b60006200130382620012cf565b9150819050919050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013566020836200130d565b915062001363826200131e565b602082019050919050565b60006020820190508181036000830152620013898162001347565b9050919050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000620013c86003836200129b565b9150620013d58262001390565b600382019050919050565b6000620013ed82620013b9565b9150819050919050565b7f45524332303a204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000620014556022836200130d565b91506200146282620013f7565b604082019050919050565b60006020820190508181036000830152620014888162001446565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620014c7601f836200130d565b9150620014d4826200148f565b602082019050919050565b60006020820190508181036000830152620014fa81620014b8565b9050919050565b60006200150e8262000ce8565b91506200151b8362000ce8565b9250828201905080821115620015365762001535620010e5565b5b92915050565b620015478162000ce8565b82525050565b60006020820190506200156460008301846200153c565b92915050565b614c53806200157a6000396000f3fe6080604052600436106101fd5760003560e01c8063715018a61161010d578063cba0e996116100a0578063dd62ed3e1161006f578063dd62ed3e146106dc578063f2fde38b14610719578063f8b45b0514610742578063f9d0831a1461076d578063fe575a871461079657610204565b8063cba0e99614610636578063ced695a414610673578063cfefd79e1461068a578063d01dc84b146106b357610204565b806395d89b41116100dc57806395d89b4114610568578063a457c2d714610593578063a9059cbb146105d0578063abe4f11d1461060d57610204565b8063715018a6146104e6578063717a8651146104fd5780638456cb59146105265780638da5cb5b1461053d57610204565b8063313ce567116101905780634febf53d1161015f5780634febf53d1461041557806353eb3bcf1461043e5780635c975abb146104555780635d0044ca1461048057806370a08231146104a957610204565b8063313ce5671461036d57806339509351146103985780633f4ba83a146103d557806342966c68146103ec57610204565b806323a38a38116101cc57806323a38a38146102c557806323b872dd146102f0578063247b912d1461032d5780632c32abc21461035657610204565b806305a1f36d1461020957806306fdde0314610232578063095ea7b31461025d57806318160ddd1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b50610230600480360381019061022b919061338e565b6107d3565b005b34801561023e57600080fd5b50610247610895565b604051610254919061345e565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f91906134de565b610927565b6040516102919190613539565b60405180910390f35b3480156102a657600080fd5b506102af610945565b6040516102bc9190613563565b60405180910390f35b3480156102d157600080fd5b506102da61094f565b6040516102e79190613539565b60405180910390f35b3480156102fc57600080fd5b506103176004803603810190610312919061357e565b610962565b6040516103249190613539565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f919061338e565b610a5a565b005b34801561036257600080fd5b5061036b610b1c565b005b34801561037957600080fd5b50610382610bca565b60405161038f91906135ed565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba91906134de565b610bd3565b6040516103cc9190613539565b60405180910390f35b3480156103e157600080fd5b506103ea610c7f565b005b3480156103f857600080fd5b50610413600480360381019061040e9190613608565b610d4c565b005b34801561042157600080fd5b5061043c60048036038101906104379190613635565b610dd5565b005b34801561044a57600080fd5b50610453610ef5565b005b34801561046157600080fd5b5061046a610fde565b6040516104779190613539565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190613608565b610ff5565b005b3480156104b557600080fd5b506104d060048036038101906104cb9190613635565b6110d2565b6040516104dd9190613563565b60405180910390f35b3480156104f257600080fd5b506104fb61111a565b005b34801561050957600080fd5b50610524600480360381019061051f9190613635565b6111a2565b005b34801561053257600080fd5b5061053b611306565b005b34801561054957600080fd5b506105526113d4565b60405161055f9190613671565b60405180910390f35b34801561057457600080fd5b5061057d6113fe565b60405161058a919061345e565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b591906134de565b611490565b6040516105c79190613539565b60405180910390f35b3480156105dc57600080fd5b506105f760048036038101906105f291906134de565b61157b565b6040516106049190613539565b60405180910390f35b34801561061957600080fd5b50610634600480360381019061062f9190613635565b611599565b005b34801561064257600080fd5b5061065d60048036038101906106589190613635565b6116b8565b60405161066a9190613539565b60405180910390f35b34801561067f57600080fd5b5061068861170e565b005b34801561069657600080fd5b506106b160048036038101906106ac9190613635565b6117f6565b005b3480156106bf57600080fd5b506106da60048036038101906106d59190613635565b611959565b005b3480156106e857600080fd5b5061070360048036038101906106fe919061368c565b611a33565b6040516107109190613563565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190613635565b611aba565b005b34801561074e57600080fd5b50610757611bb1565b6040516107649190613563565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f9190613635565b611bb7565b005b3480156107a257600080fd5b506107bd60048036038101906107b89190613635565b611dc9565b6040516107ca9190613539565b60405180910390f35b6107db611e1f565b73ffffffffffffffffffffffffffffffffffffffff166107f96113d4565b73ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084690613718565b60405180910390fd5b81601260405161085e9061378f565b90815260200160405180910390208190555080601260405161087f906137f0565b9081526020016040518091039020819055505050565b6060600380546108a490613834565b80601f01602080910402602001604051908101604052809291908181526020018280546108d090613834565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b600061093b610934611e1f565b8484611e27565b6001905092915050565b6000600254905090565b601560009054906101000a900460ff1681565b600061096f848484611ff0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109ba611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a31906138d7565b60405180910390fd5b610a4e85610a46611e1f565b858403611e27565b60019150509392505050565b610a62611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610a806113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90613718565b60405180910390fd5b816013604051610ae59061378f565b908152602001604051809103902081905550806013604051610b06906137f0565b9081526020016040518091039020819055505050565b610b24611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610b426113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90613718565b60405180910390fd5b610bc76000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000612146565b50565b60006012905090565b6000610c75610be0611e1f565b848460016000610bee611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c709190613926565b611e27565b6001905092915050565b610c87611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610ca56113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290613718565b60405180910390fd5b610d03610fde565b610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d39906139a6565b60405180910390fd5b610d4a612cda565b565b610d54611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610d726113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf90613718565b60405180910390fd5b610dd23382612d7c565b50565b610ddd611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610dfb6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4890613718565b60405180910390fd5b610e5a816116b8565b15610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613a38565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610efd611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610f1b6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890613718565b60405180910390fd5b601560009054906101000a900460ff1615610fc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb890613aa4565b60405180910390fd5b6001601560006101000a81548160ff021916908315150217905550565b6000600560149054906101000a900460ff16905090565b610ffd611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661101b6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890613718565b60405180910390fd5b61271081116110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90613b10565b60405180910390fd5b670de0b6b3a7640000816110c99190613b30565b600d8190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611122611e1f565b73ffffffffffffffffffffffffffffffffffffffff166111406113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90613718565b60405180910390fd5b6111a06000612f52565b565b6111aa611e1f565b73ffffffffffffffffffffffffffffffffffffffff166111c86113d4565b73ffffffffffffffffffffffffffffffffffffffff161461121e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121590613718565b60405180910390fd5b601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a290613be4565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61130e611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661132c6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613718565b60405180910390fd5b61138a610fde565b156113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613c76565b60405180910390fd5b6113d2613018565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461140d90613834565b80601f016020809104026020016040519081016040528092919081815260200182805461143990613834565b80156114865780601f1061145b57610100808354040283529160200191611486565b820191906000526020600020905b81548152906001019060200180831161146957829003601f168201915b5050505050905090565b6000806001600061149f611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613d08565b60405180910390fd5b611570611567611e1f565b85858403611e27565b600191505092915050565b600061158f611588611e1f565b8484611ff0565b6001905092915050565b6115a1611e1f565b73ffffffffffffffffffffffffffffffffffffffff166115bf6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613718565b60405180910390fd5b61161e816116b8565b61165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490613d74565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611716611e1f565b73ffffffffffffffffffffffffffffffffffffffff166117346113d4565b73ffffffffffffffffffffffffffffffffffffffff161461178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190613718565b60405180910390fd5b601560009054906101000a900460ff166117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090613de0565b60405180910390fd5b6000601560006101000a81548160ff021916908315150217905550565b6117fe611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661181c6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990613718565b60405180910390fd5b601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f590613e72565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611961611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661197f6113d4565b73ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613718565b60405180910390fd5b8060146040516119e49061378f565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ac2611e1f565b73ffffffffffffffffffffffffffffffffffffffff16611ae06113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d90613718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613f04565b60405180910390fd5b611bae81612f52565b50565b600d5481565b611bbf611e1f565b73ffffffffffffffffffffffffffffffffffffffff16611bdd6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90613718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cba57611c6f6113d4565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611cb4573d6000803e3d6000fd5b50611dc6565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cfa9190613671565b602060405180830381865afa158015611d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3b9190613f39565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611d616113d4565b836040518363ffffffff1660e01b8152600401611d7f929190613f66565b6020604051808303816000875af1158015611d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc29190613fbb565b5050505b50565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d9061405a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efc906140ec565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fe39190613563565b60405180910390a3505050565b611ff8610fde565b15612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f9061417e565b60405180910390fd5b61204133611dc9565b15612081576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612078906141ea565b60405180910390fd5b61208a82611dc9565b156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c190614256565b60405180910390fd5b6120d332611dc9565b15612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906141ea565b60405180910390fd5b601560009054906101000a900460ff161561213657612133838383612146565b90505b6121418383836130bb565b505050565b600080600267ffffffffffffffff81111561216457612163614276565b5b6040519080825280602002602001820160405280156121925781602001602082028036833780820191505090505b50905030816000815181106121aa576121a96142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612251573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227591906142e9565b81600181518110612289576122886142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122cc856116b8565b1580156122df57506122dd846116b8565b155b15612cce57600080600754856122f59190614345565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361245057601260405161235a9061378f565b908152602001604051809103902054816123749190613b30565b8261237f9190613926565b9150601260405161238f906137f0565b908152602001604051809103902054816123a99190613b30565b826123b49190613926565b915060008211156123cb576123ca873084611ff0565b5b60126040516123d99061378f565b908152602001604051809103902054816123f39190613b30565b601860008282546124049190613926565b925050819055506012604051612419906137f0565b908152602001604051809103902054816124339190613b30565b601960008282546124449190613926565b92505081905550612c0f565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612c0e5760136040516124b39061378f565b908152602001604051809103902054816124cd9190613b30565b826124d89190613926565b915060136040516124e8906137f0565b908152602001604051809103902054816125029190613b30565b8261250d9190613926565b9150600082111561252457612523873084611ff0565b5b60136040516125329061378f565b9081526020016040518091039020548161254c9190613b30565b6018600082825461255d9190613926565b925050819055506013604051612572906137f0565b9081526020016040518091039020548161258c9190613b30565b6019600082825461259d9190613926565b9250508190555060006019546018546125b69190613926565b9050600081036125cc5785945050505050612cd3565b6000601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f60195460185461261c9190613926565b876040518363ffffffff1660e01b815260040161263a929190614434565b600060405180830381865afa158015612657573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612680919061457d565b600181518110612693576126926142a5565b5b602002602001015190506008548110612c0b576000479050600060026019546126bc9190614345565b6018546126c99190613926565b90506126f830601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e27565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58260008a30426040518663ffffffff1660e01b815260040161275c95949392919061460b565b6000604051808303816000875af115801561277b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906127a4919061457d565b50600082476127b39190614665565b9050600060026019546127c69190614345565b90506000670de0b6b3a764000087670de0b6b3a764000060026019546127ec9190614345565b6127f69190613b30565b6128009190614345565b8461280b9190613b30565b6128159190614345565b90506000670de0b6b3a764000088670de0b6b3a76400006018546128399190613b30565b6128439190614345565b8561284e9190613b30565b6128589190614345565b905061288730601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611e27565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008060146040516128d9906137f0565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161292a96959493929190614699565b60606040518083038185885af1158015612948573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061296d91906146fa565b5050506000838661297e9190613926565b60195460185461298e9190613926565b6129989190614665565b905060008111156129eb576129ea3060146040516129b59061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611ff0565b5b600060146040516129fb9061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612a4d9061477e565b60006040518083038185875af1925050503d8060008114612a8a576040519150601f19603f3d011682016040523d82523d6000602084013e612a8f565b606091505b5050905080612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aca906147df565b60405180910390fd5b60008484612ae19190613926565b87612aec9190614665565b1115612bf25760006014604051612b029061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168585612b539190613926565b88612b5e9190614665565b604051612b6a9061477e565b60006040518083038185875af1925050503d8060008114612ba7576040519150601f19603f3d011682016040523d82523d6000602084013e612bac565b606091505b5050905080612bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be7906147df565b60405180910390fd5b505b6000601881905550600060198190555050505050505050505b50505b5b8185612c1b9190614665565b9450601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612ccb57600d5485612c7f886110d2565b612c899190613926565b1115612cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc19061484b565b60405180910390fd5b5b50505b829150505b9392505050565b612ce2610fde565b612d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d18906148b7565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612d65611e1f565b604051612d729190613671565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de290614949565b60405180910390fd5b612df78260008361333a565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e74906149db565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612ed49190614665565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f399190613563565b60405180910390a3612f4d8360008461333f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613020610fde565b15613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305790614a47565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586130a4611e1f565b6040516130b19190613671565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361312a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312190614ad9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319090614b6b565b60405180910390fd5b6131a483838361333a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561322a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322190614bfd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132bd9190613926565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133219190613563565b60405180910390a361333484848461333f565b50505050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61336b81613358565b811461337657600080fd5b50565b60008135905061338881613362565b92915050565b600080604083850312156133a5576133a461334e565b5b60006133b385828601613379565b92505060206133c485828601613379565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134085780820151818401526020810190506133ed565b60008484015250505050565b6000601f19601f8301169050919050565b6000613430826133ce565b61343a81856133d9565b935061344a8185602086016133ea565b61345381613414565b840191505092915050565b600060208201905081810360008301526134788184613425565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134ab82613480565b9050919050565b6134bb816134a0565b81146134c657600080fd5b50565b6000813590506134d8816134b2565b92915050565b600080604083850312156134f5576134f461334e565b5b6000613503858286016134c9565b925050602061351485828601613379565b9150509250929050565b60008115159050919050565b6135338161351e565b82525050565b600060208201905061354e600083018461352a565b92915050565b61355d81613358565b82525050565b60006020820190506135786000830184613554565b92915050565b6000806000606084860312156135975761359661334e565b5b60006135a5868287016134c9565b93505060206135b6868287016134c9565b92505060406135c786828701613379565b9150509250925092565b600060ff82169050919050565b6135e7816135d1565b82525050565b600060208201905061360260008301846135de565b92915050565b60006020828403121561361e5761361d61334e565b5b600061362c84828501613379565b91505092915050565b60006020828403121561364b5761364a61334e565b5b6000613659848285016134c9565b91505092915050565b61366b816134a0565b82525050565b60006020820190506136866000830184613662565b92915050565b600080604083850312156136a3576136a261334e565b5b60006136b1858286016134c9565b92505060206136c2858286016134c9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137026020836133d9565b915061370d826136cc565b602082019050919050565b60006020820190508181036000830152613731816136f5565b9050919050565b600081905092915050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000613779600383613738565b915061378482613743565b600382019050919050565b600061379a8261376c565b9150819050919050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b60006137da600983613738565b91506137e5826137a4565b600982019050919050565b60006137fb826137cd565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061384c57607f821691505b60208210810361385f5761385e613805565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138c16028836133d9565b91506138cc82613865565b604082019050919050565b600060208201905081810360008301526138f0816138b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061393182613358565b915061393c83613358565b9250828201905080821115613954576139536138f7565b5b92915050565b7f45524332303a20436f6e7472616374206973206e6f7420706175736564000000600082015250565b6000613990601d836133d9565b915061399b8261395a565b602082019050919050565b600060208201905081810360008301526139bf81613983565b9050919050565b7f45524332303a204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a226022836133d9565b9150613a2d826139c6565b604082019050919050565b60006020820190508181036000830152613a5181613a15565b9050919050565b7f45524332303a2054617820697320616c726561647920656e61626c6564000000600082015250565b6000613a8e601d836133d9565b9150613a9982613a58565b602082019050919050565b60006020820190508181036000830152613abd81613a81565b9050919050565b7f4e4f207275672070756c6c000000000000000000000000000000000000000000600082015250565b6000613afa600b836133d9565b9150613b0582613ac4565b602082019050919050565b60006020820190508181036000830152613b2981613aed565b9050919050565b6000613b3b82613358565b9150613b4683613358565b9250828202613b5481613358565b91508282048414831517613b6b57613b6a6138f7565b5b5092915050565b7f45524332303a204163636f756e7420697320616c726561647920626c61636b6c60008201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b6000613bce6025836133d9565b9150613bd982613b72565b604082019050919050565b60006020820190508181036000830152613bfd81613bc1565b9050919050565b7f45524332303a20436f6e747261637420697320616c726561647920706175736560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c606021836133d9565b9150613c6b82613c04565b604082019050919050565b60006020820190508181036000830152613c8f81613c53565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613cf26025836133d9565b9150613cfd82613c96565b604082019050919050565b60006020820190508181036000830152613d2181613ce5565b9050919050565b7f45524332303a204163636f756e74206973206e6f74206578636c756465640000600082015250565b6000613d5e601e836133d9565b9150613d6982613d28565b602082019050919050565b60006020820190508181036000830152613d8d81613d51565b9050919050565b7f45524332303a2054617820697320616c72656164792064697361626c65640000600082015250565b6000613dca601e836133d9565b9150613dd582613d94565b602082019050919050565b60006020820190508181036000830152613df981613dbd565b9050919050565b7f45524332303a204163636f756e74206973206e6f7420626c61636b6c6973746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e5c6021836133d9565b9150613e6782613e00565b604082019050919050565b60006020820190508181036000830152613e8b81613e4f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613eee6026836133d9565b9150613ef982613e92565b604082019050919050565b60006020820190508181036000830152613f1d81613ee1565b9050919050565b600081519050613f3381613362565b92915050565b600060208284031215613f4f57613f4e61334e565b5b6000613f5d84828501613f24565b91505092915050565b6000604082019050613f7b6000830185613662565b613f886020830184613554565b9392505050565b613f988161351e565b8114613fa357600080fd5b50565b600081519050613fb581613f8f565b92915050565b600060208284031215613fd157613fd061334e565b5b6000613fdf84828501613fa6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140446024836133d9565b915061404f82613fe8565b604082019050919050565b6000602082019050818103600083015261407381614037565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140d66022836133d9565b91506140e18261407a565b604082019050919050565b60006020820190508181036000830152614105816140c9565b9050919050565b7f45524332303a20746f6b656e207472616e73666572207768696c65207061757360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006141686022836133d9565b91506141738261410c565b604082019050919050565b600060208201905081810360008301526141978161415b565b9050919050565b7f45524332303a2073656e64657220626c61636b6c697374656400000000000000600082015250565b60006141d46019836133d9565b91506141df8261419e565b602082019050919050565b60006020820190508181036000830152614203816141c7565b9050919050565b7f45524332303a20726563697069656e7420626c61636b6c697374656400000000600082015250565b6000614240601c836133d9565b915061424b8261420a565b602082019050919050565b6000602082019050818103600083015261426f81614233565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506142e3816134b2565b92915050565b6000602082840312156142ff576142fe61334e565b5b600061430d848285016142d4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435082613358565b915061435b83613358565b92508261436b5761436a614316565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143ab816134a0565b82525050565b60006143bd83836143a2565b60208301905092915050565b6000602082019050919050565b60006143e182614376565b6143eb8185614381565b93506143f683614392565b8060005b8381101561442757815161440e88826143b1565b9750614419836143c9565b9250506001810190506143fa565b5085935050505092915050565b60006040820190506144496000830185613554565b818103602083015261445b81846143d6565b90509392505050565b600080fd5b61447282613414565b810181811067ffffffffffffffff8211171561449157614490614276565b5b80604052505050565b60006144a4613344565b90506144b08282614469565b919050565b600067ffffffffffffffff8211156144d0576144cf614276565b5b602082029050602081019050919050565b600080fd5b60006144f96144f4846144b5565b61449a565b9050808382526020820190506020840283018581111561451c5761451b6144e1565b5b835b8181101561454557806145318882613f24565b84526020840193505060208101905061451e565b5050509392505050565b600082601f83011261456457614563614464565b5b81516145748482602086016144e6565b91505092915050565b6000602082840312156145935761459261334e565b5b600082015167ffffffffffffffff8111156145b1576145b0613353565b5b6145bd8482850161454f565b91505092915050565b6000819050919050565b6000819050919050565b60006145f56145f06145eb846145c6565b6145d0565b613358565b9050919050565b614605816145da565b82525050565b600060a0820190506146206000830188613554565b61462d60208301876145fc565b818103604083015261463f81866143d6565b905061464e6060830185613662565b61465b6080830184613554565b9695505050505050565b600061467082613358565b915061467b83613358565b9250828203905081811115614693576146926138f7565b5b92915050565b600060c0820190506146ae6000830189613662565b6146bb6020830188613554565b6146c860408301876145fc565b6146d560608301866145fc565b6146e26080830185613662565b6146ef60a0830184613554565b979650505050505050565b6000806000606084860312156147135761471261334e565b5b600061472186828701613f24565b935050602061473286828701613f24565b925050604061474386828701613f24565b9150509250925092565b600081905092915050565b50565b600061476860008361474d565b915061477382614758565b600082019050919050565b60006147898261475b565b9150819050919050565b7f7472616e7366657220746f20206465762077616c6c6574206661696c65640000600082015250565b60006147c9601e836133d9565b91506147d482614793565b602082019050919050565b600060208201905081810360008301526147f8816147bc565b9050919050565b7f6d617857616c6c6574206c696d69742065786365656465640000000000000000600082015250565b60006148356018836133d9565b9150614840826147ff565b602082019050919050565b6000602082019050818103600083015261486481614828565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006148a16014836133d9565b91506148ac8261486b565b602082019050919050565b600060208201905081810360008301526148d081614894565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006149336021836133d9565b915061493e826148d7565b604082019050919050565b6000602082019050818103600083015261496281614926565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006149c56022836133d9565b91506149d082614969565b604082019050919050565b600060208201905081810360008301526149f4816149b8565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614a316010836133d9565b9150614a3c826149fb565b602082019050919050565b60006020820190508181036000830152614a6081614a24565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ac36025836133d9565b9150614ace82614a67565b604082019050919050565b60006020820190508181036000830152614af281614ab6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614b556023836133d9565b9150614b6082614af9565b604082019050919050565b60006020820190508181036000830152614b8481614b48565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614be76026836133d9565b9150614bf282614b8b565b604082019050919050565b60006020820190508181036000830152614c1681614bda565b905091905056fea2646970667358221220eaf106ba034295eef0818ef8bbc3570ea048dfbc9b8d42a0f97937c34ecfd6f364736f6c63430008120033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000174876e8450000000000000000000000000000000000000000000000000000000000000007244348524953540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072443485249535400000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c8063715018a61161010d578063cba0e996116100a0578063dd62ed3e1161006f578063dd62ed3e146106dc578063f2fde38b14610719578063f8b45b0514610742578063f9d0831a1461076d578063fe575a871461079657610204565b8063cba0e99614610636578063ced695a414610673578063cfefd79e1461068a578063d01dc84b146106b357610204565b806395d89b41116100dc57806395d89b4114610568578063a457c2d714610593578063a9059cbb146105d0578063abe4f11d1461060d57610204565b8063715018a6146104e6578063717a8651146104fd5780638456cb59146105265780638da5cb5b1461053d57610204565b8063313ce567116101905780634febf53d1161015f5780634febf53d1461041557806353eb3bcf1461043e5780635c975abb146104555780635d0044ca1461048057806370a08231146104a957610204565b8063313ce5671461036d57806339509351146103985780633f4ba83a146103d557806342966c68146103ec57610204565b806323a38a38116101cc57806323a38a38146102c557806323b872dd146102f0578063247b912d1461032d5780632c32abc21461035657610204565b806305a1f36d1461020957806306fdde0314610232578063095ea7b31461025d57806318160ddd1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b50610230600480360381019061022b919061338e565b6107d3565b005b34801561023e57600080fd5b50610247610895565b604051610254919061345e565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f91906134de565b610927565b6040516102919190613539565b60405180910390f35b3480156102a657600080fd5b506102af610945565b6040516102bc9190613563565b60405180910390f35b3480156102d157600080fd5b506102da61094f565b6040516102e79190613539565b60405180910390f35b3480156102fc57600080fd5b506103176004803603810190610312919061357e565b610962565b6040516103249190613539565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f919061338e565b610a5a565b005b34801561036257600080fd5b5061036b610b1c565b005b34801561037957600080fd5b50610382610bca565b60405161038f91906135ed565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba91906134de565b610bd3565b6040516103cc9190613539565b60405180910390f35b3480156103e157600080fd5b506103ea610c7f565b005b3480156103f857600080fd5b50610413600480360381019061040e9190613608565b610d4c565b005b34801561042157600080fd5b5061043c60048036038101906104379190613635565b610dd5565b005b34801561044a57600080fd5b50610453610ef5565b005b34801561046157600080fd5b5061046a610fde565b6040516104779190613539565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190613608565b610ff5565b005b3480156104b557600080fd5b506104d060048036038101906104cb9190613635565b6110d2565b6040516104dd9190613563565b60405180910390f35b3480156104f257600080fd5b506104fb61111a565b005b34801561050957600080fd5b50610524600480360381019061051f9190613635565b6111a2565b005b34801561053257600080fd5b5061053b611306565b005b34801561054957600080fd5b506105526113d4565b60405161055f9190613671565b60405180910390f35b34801561057457600080fd5b5061057d6113fe565b60405161058a919061345e565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b591906134de565b611490565b6040516105c79190613539565b60405180910390f35b3480156105dc57600080fd5b506105f760048036038101906105f291906134de565b61157b565b6040516106049190613539565b60405180910390f35b34801561061957600080fd5b50610634600480360381019061062f9190613635565b611599565b005b34801561064257600080fd5b5061065d60048036038101906106589190613635565b6116b8565b60405161066a9190613539565b60405180910390f35b34801561067f57600080fd5b5061068861170e565b005b34801561069657600080fd5b506106b160048036038101906106ac9190613635565b6117f6565b005b3480156106bf57600080fd5b506106da60048036038101906106d59190613635565b611959565b005b3480156106e857600080fd5b5061070360048036038101906106fe919061368c565b611a33565b6040516107109190613563565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190613635565b611aba565b005b34801561074e57600080fd5b50610757611bb1565b6040516107649190613563565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f9190613635565b611bb7565b005b3480156107a257600080fd5b506107bd60048036038101906107b89190613635565b611dc9565b6040516107ca9190613539565b60405180910390f35b6107db611e1f565b73ffffffffffffffffffffffffffffffffffffffff166107f96113d4565b73ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084690613718565b60405180910390fd5b81601260405161085e9061378f565b90815260200160405180910390208190555080601260405161087f906137f0565b9081526020016040518091039020819055505050565b6060600380546108a490613834565b80601f01602080910402602001604051908101604052809291908181526020018280546108d090613834565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b600061093b610934611e1f565b8484611e27565b6001905092915050565b6000600254905090565b601560009054906101000a900460ff1681565b600061096f848484611ff0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109ba611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a31906138d7565b60405180910390fd5b610a4e85610a46611e1f565b858403611e27565b60019150509392505050565b610a62611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610a806113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90613718565b60405180910390fd5b816013604051610ae59061378f565b908152602001604051809103902081905550806013604051610b06906137f0565b9081526020016040518091039020819055505050565b610b24611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610b426113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90613718565b60405180910390fd5b610bc76000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000612146565b50565b60006012905090565b6000610c75610be0611e1f565b848460016000610bee611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c709190613926565b611e27565b6001905092915050565b610c87611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610ca56113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290613718565b60405180910390fd5b610d03610fde565b610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d39906139a6565b60405180910390fd5b610d4a612cda565b565b610d54611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610d726113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf90613718565b60405180910390fd5b610dd23382612d7c565b50565b610ddd611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610dfb6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4890613718565b60405180910390fd5b610e5a816116b8565b15610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613a38565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610efd611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610f1b6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890613718565b60405180910390fd5b601560009054906101000a900460ff1615610fc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb890613aa4565b60405180910390fd5b6001601560006101000a81548160ff021916908315150217905550565b6000600560149054906101000a900460ff16905090565b610ffd611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661101b6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890613718565b60405180910390fd5b61271081116110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90613b10565b60405180910390fd5b670de0b6b3a7640000816110c99190613b30565b600d8190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611122611e1f565b73ffffffffffffffffffffffffffffffffffffffff166111406113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90613718565b60405180910390fd5b6111a06000612f52565b565b6111aa611e1f565b73ffffffffffffffffffffffffffffffffffffffff166111c86113d4565b73ffffffffffffffffffffffffffffffffffffffff161461121e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121590613718565b60405180910390fd5b601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a290613be4565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61130e611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661132c6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613718565b60405180910390fd5b61138a610fde565b156113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613c76565b60405180910390fd5b6113d2613018565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461140d90613834565b80601f016020809104026020016040519081016040528092919081815260200182805461143990613834565b80156114865780601f1061145b57610100808354040283529160200191611486565b820191906000526020600020905b81548152906001019060200180831161146957829003601f168201915b5050505050905090565b6000806001600061149f611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613d08565b60405180910390fd5b611570611567611e1f565b85858403611e27565b600191505092915050565b600061158f611588611e1f565b8484611ff0565b6001905092915050565b6115a1611e1f565b73ffffffffffffffffffffffffffffffffffffffff166115bf6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613718565b60405180910390fd5b61161e816116b8565b61165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490613d74565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611716611e1f565b73ffffffffffffffffffffffffffffffffffffffff166117346113d4565b73ffffffffffffffffffffffffffffffffffffffff161461178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190613718565b60405180910390fd5b601560009054906101000a900460ff166117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090613de0565b60405180910390fd5b6000601560006101000a81548160ff021916908315150217905550565b6117fe611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661181c6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990613718565b60405180910390fd5b601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f590613e72565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611961611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661197f6113d4565b73ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613718565b60405180910390fd5b8060146040516119e49061378f565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ac2611e1f565b73ffffffffffffffffffffffffffffffffffffffff16611ae06113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d90613718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613f04565b60405180910390fd5b611bae81612f52565b50565b600d5481565b611bbf611e1f565b73ffffffffffffffffffffffffffffffffffffffff16611bdd6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90613718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cba57611c6f6113d4565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611cb4573d6000803e3d6000fd5b50611dc6565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cfa9190613671565b602060405180830381865afa158015611d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3b9190613f39565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611d616113d4565b836040518363ffffffff1660e01b8152600401611d7f929190613f66565b6020604051808303816000875af1158015611d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc29190613fbb565b5050505b50565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d9061405a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efc906140ec565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fe39190613563565b60405180910390a3505050565b611ff8610fde565b15612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f9061417e565b60405180910390fd5b61204133611dc9565b15612081576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612078906141ea565b60405180910390fd5b61208a82611dc9565b156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c190614256565b60405180910390fd5b6120d332611dc9565b15612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906141ea565b60405180910390fd5b601560009054906101000a900460ff161561213657612133838383612146565b90505b6121418383836130bb565b505050565b600080600267ffffffffffffffff81111561216457612163614276565b5b6040519080825280602002602001820160405280156121925781602001602082028036833780820191505090505b50905030816000815181106121aa576121a96142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612251573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227591906142e9565b81600181518110612289576122886142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122cc856116b8565b1580156122df57506122dd846116b8565b155b15612cce57600080600754856122f59190614345565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361245057601260405161235a9061378f565b908152602001604051809103902054816123749190613b30565b8261237f9190613926565b9150601260405161238f906137f0565b908152602001604051809103902054816123a99190613b30565b826123b49190613926565b915060008211156123cb576123ca873084611ff0565b5b60126040516123d99061378f565b908152602001604051809103902054816123f39190613b30565b601860008282546124049190613926565b925050819055506012604051612419906137f0565b908152602001604051809103902054816124339190613b30565b601960008282546124449190613926565b92505081905550612c0f565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612c0e5760136040516124b39061378f565b908152602001604051809103902054816124cd9190613b30565b826124d89190613926565b915060136040516124e8906137f0565b908152602001604051809103902054816125029190613b30565b8261250d9190613926565b9150600082111561252457612523873084611ff0565b5b60136040516125329061378f565b9081526020016040518091039020548161254c9190613b30565b6018600082825461255d9190613926565b925050819055506013604051612572906137f0565b9081526020016040518091039020548161258c9190613b30565b6019600082825461259d9190613926565b9250508190555060006019546018546125b69190613926565b9050600081036125cc5785945050505050612cd3565b6000601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f60195460185461261c9190613926565b876040518363ffffffff1660e01b815260040161263a929190614434565b600060405180830381865afa158015612657573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612680919061457d565b600181518110612693576126926142a5565b5b602002602001015190506008548110612c0b576000479050600060026019546126bc9190614345565b6018546126c99190613926565b90506126f830601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e27565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58260008a30426040518663ffffffff1660e01b815260040161275c95949392919061460b565b6000604051808303816000875af115801561277b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906127a4919061457d565b50600082476127b39190614665565b9050600060026019546127c69190614345565b90506000670de0b6b3a764000087670de0b6b3a764000060026019546127ec9190614345565b6127f69190613b30565b6128009190614345565b8461280b9190613b30565b6128159190614345565b90506000670de0b6b3a764000088670de0b6b3a76400006018546128399190613b30565b6128439190614345565b8561284e9190613b30565b6128589190614345565b905061288730601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611e27565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008060146040516128d9906137f0565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161292a96959493929190614699565b60606040518083038185885af1158015612948573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061296d91906146fa565b5050506000838661297e9190613926565b60195460185461298e9190613926565b6129989190614665565b905060008111156129eb576129ea3060146040516129b59061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611ff0565b5b600060146040516129fb9061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612a4d9061477e565b60006040518083038185875af1925050503d8060008114612a8a576040519150601f19603f3d011682016040523d82523d6000602084013e612a8f565b606091505b5050905080612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aca906147df565b60405180910390fd5b60008484612ae19190613926565b87612aec9190614665565b1115612bf25760006014604051612b029061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168585612b539190613926565b88612b5e9190614665565b604051612b6a9061477e565b60006040518083038185875af1925050503d8060008114612ba7576040519150601f19603f3d011682016040523d82523d6000602084013e612bac565b606091505b5050905080612bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be7906147df565b60405180910390fd5b505b6000601881905550600060198190555050505050505050505b50505b5b8185612c1b9190614665565b9450601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612ccb57600d5485612c7f886110d2565b612c899190613926565b1115612cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc19061484b565b60405180910390fd5b5b50505b829150505b9392505050565b612ce2610fde565b612d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d18906148b7565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612d65611e1f565b604051612d729190613671565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de290614949565b60405180910390fd5b612df78260008361333a565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e74906149db565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612ed49190614665565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f399190613563565b60405180910390a3612f4d8360008461333f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613020610fde565b15613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305790614a47565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586130a4611e1f565b6040516130b19190613671565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361312a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312190614ad9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319090614b6b565b60405180910390fd5b6131a483838361333a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561322a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322190614bfd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132bd9190613926565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133219190613563565b60405180910390a361333484848461333f565b50505050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61336b81613358565b811461337657600080fd5b50565b60008135905061338881613362565b92915050565b600080604083850312156133a5576133a461334e565b5b60006133b385828601613379565b92505060206133c485828601613379565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134085780820151818401526020810190506133ed565b60008484015250505050565b6000601f19601f8301169050919050565b6000613430826133ce565b61343a81856133d9565b935061344a8185602086016133ea565b61345381613414565b840191505092915050565b600060208201905081810360008301526134788184613425565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134ab82613480565b9050919050565b6134bb816134a0565b81146134c657600080fd5b50565b6000813590506134d8816134b2565b92915050565b600080604083850312156134f5576134f461334e565b5b6000613503858286016134c9565b925050602061351485828601613379565b9150509250929050565b60008115159050919050565b6135338161351e565b82525050565b600060208201905061354e600083018461352a565b92915050565b61355d81613358565b82525050565b60006020820190506135786000830184613554565b92915050565b6000806000606084860312156135975761359661334e565b5b60006135a5868287016134c9565b93505060206135b6868287016134c9565b92505060406135c786828701613379565b9150509250925092565b600060ff82169050919050565b6135e7816135d1565b82525050565b600060208201905061360260008301846135de565b92915050565b60006020828403121561361e5761361d61334e565b5b600061362c84828501613379565b91505092915050565b60006020828403121561364b5761364a61334e565b5b6000613659848285016134c9565b91505092915050565b61366b816134a0565b82525050565b60006020820190506136866000830184613662565b92915050565b600080604083850312156136a3576136a261334e565b5b60006136b1858286016134c9565b92505060206136c2858286016134c9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137026020836133d9565b915061370d826136cc565b602082019050919050565b60006020820190508181036000830152613731816136f5565b9050919050565b600081905092915050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000613779600383613738565b915061378482613743565b600382019050919050565b600061379a8261376c565b9150819050919050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b60006137da600983613738565b91506137e5826137a4565b600982019050919050565b60006137fb826137cd565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061384c57607f821691505b60208210810361385f5761385e613805565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138c16028836133d9565b91506138cc82613865565b604082019050919050565b600060208201905081810360008301526138f0816138b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061393182613358565b915061393c83613358565b9250828201905080821115613954576139536138f7565b5b92915050565b7f45524332303a20436f6e7472616374206973206e6f7420706175736564000000600082015250565b6000613990601d836133d9565b915061399b8261395a565b602082019050919050565b600060208201905081810360008301526139bf81613983565b9050919050565b7f45524332303a204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a226022836133d9565b9150613a2d826139c6565b604082019050919050565b60006020820190508181036000830152613a5181613a15565b9050919050565b7f45524332303a2054617820697320616c726561647920656e61626c6564000000600082015250565b6000613a8e601d836133d9565b9150613a9982613a58565b602082019050919050565b60006020820190508181036000830152613abd81613a81565b9050919050565b7f4e4f207275672070756c6c000000000000000000000000000000000000000000600082015250565b6000613afa600b836133d9565b9150613b0582613ac4565b602082019050919050565b60006020820190508181036000830152613b2981613aed565b9050919050565b6000613b3b82613358565b9150613b4683613358565b9250828202613b5481613358565b91508282048414831517613b6b57613b6a6138f7565b5b5092915050565b7f45524332303a204163636f756e7420697320616c726561647920626c61636b6c60008201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b6000613bce6025836133d9565b9150613bd982613b72565b604082019050919050565b60006020820190508181036000830152613bfd81613bc1565b9050919050565b7f45524332303a20436f6e747261637420697320616c726561647920706175736560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c606021836133d9565b9150613c6b82613c04565b604082019050919050565b60006020820190508181036000830152613c8f81613c53565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613cf26025836133d9565b9150613cfd82613c96565b604082019050919050565b60006020820190508181036000830152613d2181613ce5565b9050919050565b7f45524332303a204163636f756e74206973206e6f74206578636c756465640000600082015250565b6000613d5e601e836133d9565b9150613d6982613d28565b602082019050919050565b60006020820190508181036000830152613d8d81613d51565b9050919050565b7f45524332303a2054617820697320616c72656164792064697361626c65640000600082015250565b6000613dca601e836133d9565b9150613dd582613d94565b602082019050919050565b60006020820190508181036000830152613df981613dbd565b9050919050565b7f45524332303a204163636f756e74206973206e6f7420626c61636b6c6973746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e5c6021836133d9565b9150613e6782613e00565b604082019050919050565b60006020820190508181036000830152613e8b81613e4f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613eee6026836133d9565b9150613ef982613e92565b604082019050919050565b60006020820190508181036000830152613f1d81613ee1565b9050919050565b600081519050613f3381613362565b92915050565b600060208284031215613f4f57613f4e61334e565b5b6000613f5d84828501613f24565b91505092915050565b6000604082019050613f7b6000830185613662565b613f886020830184613554565b9392505050565b613f988161351e565b8114613fa357600080fd5b50565b600081519050613fb581613f8f565b92915050565b600060208284031215613fd157613fd061334e565b5b6000613fdf84828501613fa6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140446024836133d9565b915061404f82613fe8565b604082019050919050565b6000602082019050818103600083015261407381614037565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140d66022836133d9565b91506140e18261407a565b604082019050919050565b60006020820190508181036000830152614105816140c9565b9050919050565b7f45524332303a20746f6b656e207472616e73666572207768696c65207061757360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006141686022836133d9565b91506141738261410c565b604082019050919050565b600060208201905081810360008301526141978161415b565b9050919050565b7f45524332303a2073656e64657220626c61636b6c697374656400000000000000600082015250565b60006141d46019836133d9565b91506141df8261419e565b602082019050919050565b60006020820190508181036000830152614203816141c7565b9050919050565b7f45524332303a20726563697069656e7420626c61636b6c697374656400000000600082015250565b6000614240601c836133d9565b915061424b8261420a565b602082019050919050565b6000602082019050818103600083015261426f81614233565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506142e3816134b2565b92915050565b6000602082840312156142ff576142fe61334e565b5b600061430d848285016142d4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435082613358565b915061435b83613358565b92508261436b5761436a614316565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143ab816134a0565b82525050565b60006143bd83836143a2565b60208301905092915050565b6000602082019050919050565b60006143e182614376565b6143eb8185614381565b93506143f683614392565b8060005b8381101561442757815161440e88826143b1565b9750614419836143c9565b9250506001810190506143fa565b5085935050505092915050565b60006040820190506144496000830185613554565b818103602083015261445b81846143d6565b90509392505050565b600080fd5b61447282613414565b810181811067ffffffffffffffff8211171561449157614490614276565b5b80604052505050565b60006144a4613344565b90506144b08282614469565b919050565b600067ffffffffffffffff8211156144d0576144cf614276565b5b602082029050602081019050919050565b600080fd5b60006144f96144f4846144b5565b61449a565b9050808382526020820190506020840283018581111561451c5761451b6144e1565b5b835b8181101561454557806145318882613f24565b84526020840193505060208101905061451e565b5050509392505050565b600082601f83011261456457614563614464565b5b81516145748482602086016144e6565b91505092915050565b6000602082840312156145935761459261334e565b5b600082015167ffffffffffffffff8111156145b1576145b0613353565b5b6145bd8482850161454f565b91505092915050565b6000819050919050565b6000819050919050565b60006145f56145f06145eb846145c6565b6145d0565b613358565b9050919050565b614605816145da565b82525050565b600060a0820190506146206000830188613554565b61462d60208301876145fc565b818103604083015261463f81866143d6565b905061464e6060830185613662565b61465b6080830184613554565b9695505050505050565b600061467082613358565b915061467b83613358565b9250828203905081811115614693576146926138f7565b5b92915050565b600060c0820190506146ae6000830189613662565b6146bb6020830188613554565b6146c860408301876145fc565b6146d560608301866145fc565b6146e26080830185613662565b6146ef60a0830184613554565b979650505050505050565b6000806000606084860312156147135761471261334e565b5b600061472186828701613f24565b935050602061473286828701613f24565b925050604061474386828701613f24565b9150509250925092565b600081905092915050565b50565b600061476860008361474d565b915061477382614758565b600082019050919050565b60006147898261475b565b9150819050919050565b7f7472616e7366657220746f20206465762077616c6c6574206661696c65640000600082015250565b60006147c9601e836133d9565b91506147d482614793565b602082019050919050565b600060208201905081810360008301526147f8816147bc565b9050919050565b7f6d617857616c6c6574206c696d69742065786365656465640000000000000000600082015250565b60006148356018836133d9565b9150614840826147ff565b602082019050919050565b6000602082019050818103600083015261486481614828565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006148a16014836133d9565b91506148ac8261486b565b602082019050919050565b600060208201905081810360008301526148d081614894565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006149336021836133d9565b915061493e826148d7565b604082019050919050565b6000602082019050818103600083015261496281614926565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006149c56022836133d9565b91506149d082614969565b604082019050919050565b600060208201905081810360008301526149f4816149b8565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614a316010836133d9565b9150614a3c826149fb565b602082019050919050565b60006020820190508181036000830152614a6081614a24565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ac36025836133d9565b9150614ace82614a67565b604082019050919050565b60006020820190508181036000830152614af281614ab6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614b556023836133d9565b9150614b6082614af9565b604082019050919050565b60006020820190508181036000830152614b8481614b48565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614be76026836133d9565b9150614bf282614b8b565b604082019050919050565b60006020820190508181036000830152614c1681614bda565b905091905056fea2646970667358221220eaf106ba034295eef0818ef8bbc3570ea048dfbc9b8d42a0f97937c34ecfd6f364736f6c63430008120033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000174876e8450000000000000000000000000000000000000000000000000000000000000007244348524953540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072443485249535400000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _tokenName (string): $CHRIST
Arg [1] : _tokenSymbol (string): $CHRIST
Arg [2] : _supply (uint256): 100000000069

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000000000000000000000000000000000174876e845
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [4] : 2443485249535400000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 2443485249535400000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

23215:11173:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32572:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3319:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4875:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3828:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24015:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5526:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32795:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30510:106;;;;;;;;;;;;;:::i;:::-;;3670:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6050:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30889:126;;;;;;;;;;;;;:::i;:::-;;31322:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32074:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33570:136;;;;;;;;;;;;;:::i;:::-;;14066:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31091:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3999:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12890:94;;;;;;;;;;;;;:::i;:::-;;31535:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30690:127;;;;;;;;;;;;;:::i;:::-;;12239:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3538:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6296:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4339:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32333:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34234:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33772:138;;;;;;;;;;;;;:::i;:::-;;31810:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33029:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4577:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13139:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23592:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33142:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34018:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32572:160;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32668:3:::1;32650:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;32706:9;32682:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;:33;;;;32572:160:::0;;:::o;3319:100::-;3373:13;3406:5;3399:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3319:100;:::o;4875:169::-;4958:4;4975:39;4984:12;:10;:12::i;:::-;4998:7;5007:6;4975:8;:39::i;:::-;5032:4;5025:11;;4875:169;;;;:::o;3828:108::-;3889:7;3916:12;;3909:19;;3828:108;:::o;24015:28::-;;;;;;;;;;;;;:::o;5526:492::-;5666:4;5683:36;5693:6;5701:9;5712:6;5683:9;:36::i;:::-;5732:24;5759:11;:19;5771:6;5759:19;;;;;;;;;;;;;;;:33;5779:12;:10;:12::i;:::-;5759:33;;;;;;;;;;;;;;;;5732:60;;5831:6;5811:16;:26;;5803:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5918:57;5927:6;5935:12;:10;:12::i;:::-;5968:6;5949:16;:25;5918:8;:57::i;:::-;6006:4;5999:11;;;5526:492;;;;;:::o;32795:167::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32896:3:::1;32877:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;:22;;;;32935:9;32910;:22;;;;;:::i;:::-;;;;;;;;;;;;;:34;;;;32795:167:::0;;:::o;30510:106::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30560:48:::1;30578:1;30590:13;;;;;;;;;;;30606:1;30560:9;:48::i;:::-;;30510:106::o:0;3670:93::-;3728:5;3753:2;3746:9;;3670:93;:::o;6050:215::-;6138:4;6155:80;6164:12;:10;:12::i;:::-;6178:7;6224:10;6187:11;:25;6199:12;:10;:12::i;:::-;6187:25;;;;;;;;;;;;;;;:34;6213:7;6187:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6155:8;:80::i;:::-;6253:4;6246:11;;6050:215;;;;:::o;30889:126::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30944:8:::1;:6;:8::i;:::-;30936:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;30997:10;:8;:10::i;:::-;30889:126::o:0;31322:91::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31380:25:::1;31386:10;31398:6;31380:5;:25::i;:::-;31322:91:::0;:::o;32074:175::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32145:19:::1;32156:7;32145:10;:19::i;:::-;32144:20;32136:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32237:4;32214:11;:20;32226:7;32214:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;32074:175:::0;:::o;33570:136::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33628:9:::1;;;;;;;;;;;33627:10;33619:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;33694:4;33682:9;;:16;;;;;;;;;;;;;;;;;;33570:136::o:0;14066:86::-;14113:4;14137:7;;;;;;;;;;;14130:14;;14066:86;:::o;31091:154::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31178:5:::1;31169:6;:14;31160:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;31231:6;31222;:15;;;;:::i;:::-;31210:9;:27;;;;31091:154:::0;:::o;3999:127::-;4073:7;4100:9;:18;4110:7;4100:18;;;;;;;;;;;;;;;;4093:25;;3999:127;;;:::o;12890:94::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12955:21:::1;12973:1;12955:9;:21::i;:::-;12890:94::o:0;31535:183::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31614:9:::1;:18;31624:7;31614:18;;;;;;;;;;;;;;;;;;;;;;;;;31613:19;31605:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;31706:4;31685:9;:18;31695:7;31685:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;31535:183:::0;:::o;30690:127::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30744:8:::1;:6;:8::i;:::-;30743:9;30735:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;30801:8;:6;:8::i;:::-;30690:127::o:0;12239:87::-;12285:7;12312:6;;;;;;;;;;;12305:13;;12239:87;:::o;3538:104::-;3594:13;3627:7;3620:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3538:104;:::o;6296:413::-;6389:4;6406:24;6433:11;:25;6445:12;:10;:12::i;:::-;6433:25;;;;;;;;;;;;;;;:34;6459:7;6433:34;;;;;;;;;;;;;;;;6406:61;;6506:15;6486:16;:35;;6478:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6599:67;6608:12;:10;:12::i;:::-;6622:7;6650:15;6631:16;:34;6599:8;:67::i;:::-;6697:4;6690:11;;;6296:413;;;;:::o;4339:175::-;4425:4;4442:42;4452:12;:10;:12::i;:::-;4466:9;4477:6;4442:9;:42::i;:::-;4502:4;4495:11;;4339:175;;;;:::o;32333:177::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32409:19:::1;32420:7;32409:10;:19::i;:::-;32401:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;32497:5;32474:11;:20;32486:7;32474:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;32333:177:::0;:::o;34234:110::-;34292:4;34316:11;:20;34328:7;34316:20;;;;;;;;;;;;;;;;;;;;;;;;;34309:27;;34234:110;;;:::o;33772:138::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33830:9:::1;;;;;;;;;;;33822:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;33897:5;33885:9;;:17;;;;;;;;;;;;;;;;;;33772:138::o:0;31810:180::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31889:9:::1;:18;31899:7;31889:18;;;;;;;;;;;;;;;;;;;;;;;;;31881:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31977:5;31956:9;:18;31966:7;31956:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;31810:180:::0;:::o;33029:105::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33113:3:::1;33093:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;33029:105:::0;:::o;4577:151::-;4666:7;4693:11;:18;4705:5;4693:18;;;;;;;;;;;;;;;:27;4712:7;4693:27;;;;;;;;;;;;;;;;4686:34;;4577:151;;;;:::o;13139:192::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13248:1:::1;13228:22;;:8;:22;;::::0;13220:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13304:19;13314:8;13304:9;:19::i;:::-;13139:192:::0;:::o;23592:24::-;;;;:::o;33142:363::-;12470:12;:10;:12::i;:::-;12459:23;;:7;:5;:7::i;:::-;:23;;;12451:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33239:3:::1;33221:22;;:6;:22;;::::0;33217:124:::1;;33268:7;:5;:7::i;:::-;33260:25;;:48;33286:21;33260:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;33323:7;;33217:124;33351:17;33378:6;33351:34;;33396:15;33414:10;:20;;;33443:4;33414:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33396:53;;33460:10;:19;;;33480:7;:5;:7::i;:::-;33489;33460:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33203:302;;12530:1;33142:363:::0;:::o;34018:111::-;34079:4;34103:9;:18;34113:7;34103:18;;;;;;;;;;;;;;;;;;;;;;;;;34096:25;;34018:111;;;:::o;2605:98::-;2658:7;2685:10;2678:17;;2605:98;:::o;9523:380::-;9676:1;9659:19;;:5;:19;;;9651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9757:1;9738:21;;:7;:21;;;9730:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9841:6;9811:11;:18;9823:5;9811:18;;;;;;;;;;;;;;;:27;9830:7;9811:27;;;;;;;;;;;;;;;:36;;;;9879:7;9863:32;;9872:5;9863:32;;;9888:6;9863:32;;;;;;:::i;:::-;;;;;;;;9523:380;;;:::o;29832:595::-;29982:8;:6;:8::i;:::-;29981:9;29973:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;30049:25;30063:10;30049:13;:25::i;:::-;30048:26;30040:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30124:24;30138:9;30124:13;:24::i;:::-;30123:25;30115:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;30201:24;30215:9;30201:13;:24::i;:::-;30200:25;30192:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;30279:9;;;;;;;;;;;30276:89;;;30314:36;30324:6;30332:9;30343:6;30314:9;:36::i;:::-;30305:45;;30276:89;30377:42;30393:6;30401:9;30412:6;30377:15;:42::i;:::-;29832:595;;;:::o;25359:4461::-;25437:7;25457:25;25499:1;25485:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25457:44;;25534:4;25512:8;25521:1;25512:11;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;25564:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25550:8;25559:1;25550:11;;;;;;;;:::i;:::-;;;;;;;:38;;;;;;;;;;;25613:16;25624:4;25613:10;:16::i;:::-;25612:17;:36;;;;;25634:14;25645:2;25634:10;:14::i;:::-;25633:15;25612:36;25609:4170;;;25665:11;25691:16;25719:11;;25710:6;:20;;;;:::i;:::-;25691:39;;25764:13;;;;;;;;;;;25748:30;;:4;:30;;;25745:3814;;25817:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;;25806:8;:26;;;;:::i;:::-;25799:33;;;;;:::i;:::-;;;25869:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;25858:8;:32;;;;:::i;:::-;25851:39;;;;;:::i;:::-;;;25953:1;25947:3;:7;25944:93;;;25979:35;25989:4;26003;26010:3;25979:9;:35::i;:::-;25944:93;26115:8;:15;;;;;:::i;:::-;;;;;;;;;;;;;;26104:8;:26;;;;:::i;:::-;26091:9;;:39;;;;;;;:::i;:::-;;;;;;;;26179:8;:21;;;;;:::i;:::-;;;;;;;;;;;;;;26168:8;:32;;;;:::i;:::-;26149:15;;:51;;;;;;;:::i;:::-;;;;;;;;25745:3814;;;26241:13;;;;;;;;;;;26227:28;;:2;:28;;;26224:3335;;26312:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;;26301:8;:27;;;;:::i;:::-;26294:34;;;;;:::i;:::-;;;26365:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;26354:8;:33;;;;:::i;:::-;26347:40;;;;;:::i;:::-;;;26451:1;26445:3;:7;26442:93;;;26477:35;26487:4;26501;26508:3;26477:9;:35::i;:::-;26442:93;26612:9;:16;;;;;:::i;:::-;;;;;;;;;;;;;;26601:8;:27;;;;:::i;:::-;26588:9;;:40;;;;;;;:::i;:::-;;;;;;;;26677:9;:22;;;;;:::i;:::-;;;;;;;;;;;;;;26666:8;:33;;;;:::i;:::-;26647:15;;:52;;;;;;;:::i;:::-;;;;;;;;26754:14;26784:15;;26772:9;;:27;;;;:::i;:::-;26754:45;;26849:1;26839:6;:11;26836:29;;26859:6;26852:13;;;;;;;;26836:29;26902:16;26921:17;;;;;;;;;;;:31;;;26966:15;;26954:9;;:27;;;;:::i;:::-;26983:8;26921:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26993:1;26921:74;;;;;;;;:::i;:::-;;;;;;;;26902:93;;27047:13;;27035:8;:25;27032:2494;;27085:20;27108:21;27085:44;;27154:14;27201:1;27183:15;;:19;;;;:::i;:::-;27171:9;;:31;;;;:::i;:::-;27154:48;;27248:59;27265:4;27280:17;;;;;;;;;;;27300:6;27248:8;:59::i;:::-;27344:17;;;;;;;;;;;:39;;;27410:6;27443:1;27471:8;27514:4;27546:15;27344:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27629:17;27673:12;27649:21;:36;;;;:::i;:::-;27629:56;;27730:22;27773:1;27755:15;;:19;;;;:::i;:::-;27730:44;;27797:20;27878:6;27867;27857;27853:1;27835:15;;:19;;;;:::i;:::-;:28;;;;:::i;:::-;27834:39;;;;:::i;:::-;27821:9;:53;;;;:::i;:::-;27820:64;;;;:::i;:::-;27797:87;;27951:14;28016:6;28005;27995;27983:9;;:18;;;;:::i;:::-;27982:29;;;;:::i;:::-;27969:9;:43;;;;:::i;:::-;27968:54;;;;:::i;:::-;27951:71;;28088:67;28105:4;28120:17;;;;;;;;;;;28140:14;28088:8;:67::i;:::-;28200:17;;;;;;;;;;;:33;;;28241:12;28289:4;28321:14;28362:1;28390;28418:10;:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;28468:15;28200:306;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28551:23;28619:14;28610:6;:23;;;;:::i;:::-;28590:15;;28578:9;;:27;;;;:::i;:::-;28577:57;;;;:::i;:::-;28551:83;;28700:1;28682:15;:19;28679:135;;;28730:60;28748:4;28755:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;28774:15;28730:9;:60::i;:::-;28679:135;28880:12;28897:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:22;;28927:6;28897:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28879:59;;;28968:7;28960:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;29119:1;29103:12;29094:6;:21;;;;:::i;:::-;29080:9;:36;;;;:::i;:::-;:40;29077:262;;;29149:13;29167:10;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:22;;29219:12;29210:6;:21;;;;:::i;:::-;29197:9;:35;;;;:::i;:::-;29167:70;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29148:89;;;29272:8;29264:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;29122:217;29077:262;29441:1;29429:9;:13;;;;29483:1;29465:15;:19;;;;27062:2464;;;;;;;;27032:2494;26257:3302;;26224:3335;25745:3814;29597:3;29587:13;;;;;:::i;:::-;;;29633;;;;;;;;;;;29619:28;;:2;:28;;;29615:140;;29701:9;;29691:6;29675:13;29685:2;29675:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;29667:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;29615:140;25650:4129;;25609:4170;29806:6;29799:13;;;25359:4461;;;;;;:::o;15125:120::-;14669:8;:6;:8::i;:::-;14661:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;15194:5:::1;15184:7;;:15;;;;;;;;;;;;;;;;;;15215:22;15224:12;:10;:12::i;:::-;15215:22;;;;;;:::i;:::-;;;;;;;;15125:120::o:0;8494:591::-;8597:1;8578:21;;:7;:21;;;8570:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8650:49;8671:7;8688:1;8692:6;8650:20;:49::i;:::-;8712:22;8737:9;:18;8747:7;8737:18;;;;;;;;;;;;;;;;8712:43;;8792:6;8774:14;:24;;8766:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8911:6;8894:14;:23;8873:9;:18;8883:7;8873:18;;;;;;;;;;;;;;;:44;;;;8955:6;8939:12;;:22;;;;;;;:::i;:::-;;;;;;;;9005:1;8979:37;;8988:7;8979:37;;;9009:6;8979:37;;;;;;:::i;:::-;;;;;;;;9029:48;9049:7;9066:1;9070:6;9029:19;:48::i;:::-;8559:526;8494:591;;:::o;13339:174::-;13396:16;13415:6;;;;;;;;;;;13396:25;;13441:8;13432:6;;:17;;;;;;;;;;;;;;;;;;13496:8;13465:40;;13486:8;13465:40;;;;;;;;;;;;13385:128;13339:174;:::o;14866:118::-;14392:8;:6;:8::i;:::-;14391:9;14383:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14936:4:::1;14926:7;;:14;;;;;;;;;;;;;;;;;;14956:20;14963:12;:10;:12::i;:::-;14956:20;;;;;;:::i;:::-;;;;;;;;14866:118::o:0;6742:733::-;6900:1;6882:20;;:6;:20;;;6874:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6984:1;6963:23;;:9;:23;;;6955:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7039:47;7060:6;7068:9;7079:6;7039:20;:47::i;:::-;7099:21;7123:9;:17;7133:6;7123:17;;;;;;;;;;;;;;;;7099:41;;7176:6;7159:13;:23;;7151:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7297:6;7281:13;:22;7261:9;:17;7271:6;7261:17;;;;;;;;;;;;;;;:42;;;;7349:6;7325:9;:20;7335:9;7325:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7390:9;7373:35;;7382:6;7373:35;;;7401:6;7373:35;;;;;;:::i;:::-;;;;;;;;7421:46;7441:6;7449:9;7460:6;7421:19;:46::i;:::-;6863:612;6742:733;;;:::o;10503:125::-;;;;:::o;11232:124::-;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:118::-;4013:24;4031:5;4013:24;:::i;:::-;4008:3;4001:37;3926:118;;:::o;4050:222::-;4143:4;4181:2;4170:9;4166:18;4158:26;;4194:71;4262:1;4251:9;4247:17;4238:6;4194:71;:::i;:::-;4050:222;;;;:::o;4278:619::-;4355:6;4363;4371;4420:2;4408:9;4399:7;4395:23;4391:32;4388:119;;;4426:79;;:::i;:::-;4388:119;4546:1;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4517:117;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4801:2;4827:53;4872:7;4863:6;4852:9;4848:22;4827:53;:::i;:::-;4817:63;;4772:118;4278:619;;;;;:::o;4903:86::-;4938:7;4978:4;4971:5;4967:16;4956:27;;4903:86;;;:::o;4995:112::-;5078:22;5094:5;5078:22;:::i;:::-;5073:3;5066:35;4995:112;;:::o;5113:214::-;5202:4;5240:2;5229:9;5225:18;5217:26;;5253:67;5317:1;5306:9;5302:17;5293:6;5253:67;:::i;:::-;5113:214;;;;:::o;5333:329::-;5392:6;5441:2;5429:9;5420:7;5416:23;5412:32;5409:119;;;5447:79;;:::i;:::-;5409:119;5567:1;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5538:117;5333:329;;;;:::o;5668:::-;5727:6;5776:2;5764:9;5755:7;5751:23;5747:32;5744:119;;;5782:79;;:::i;:::-;5744:119;5902:1;5927:53;5972:7;5963:6;5952:9;5948:22;5927:53;:::i;:::-;5917:63;;5873:117;5668:329;;;;:::o;6003:118::-;6090:24;6108:5;6090:24;:::i;:::-;6085:3;6078:37;6003:118;;:::o;6127:222::-;6220:4;6258:2;6247:9;6243:18;6235:26;;6271:71;6339:1;6328:9;6324:17;6315:6;6271:71;:::i;:::-;6127:222;;;;:::o;6355:474::-;6423:6;6431;6480:2;6468:9;6459:7;6455:23;6451:32;6448:119;;;6486:79;;:::i;:::-;6448:119;6606:1;6631:53;6676:7;6667:6;6656:9;6652:22;6631:53;:::i;:::-;6621:63;;6577:117;6733:2;6759:53;6804:7;6795:6;6784:9;6780:22;6759:53;:::i;:::-;6749:63;;6704:118;6355:474;;;;;:::o;6835:182::-;6975:34;6971:1;6963:6;6959:14;6952:58;6835:182;:::o;7023:366::-;7165:3;7186:67;7250:2;7245:3;7186:67;:::i;:::-;7179:74;;7262:93;7351:3;7262:93;:::i;:::-;7380:2;7375:3;7371:12;7364:19;;7023:366;;;:::o;7395:419::-;7561:4;7599:2;7588:9;7584:18;7576:26;;7648:9;7642:4;7638:20;7634:1;7623:9;7619:17;7612:47;7676:131;7802:4;7676:131;:::i;:::-;7668:139;;7395:419;;;:::o;7820:148::-;7922:11;7959:3;7944:18;;7820:148;;;;:::o;7974:153::-;8114:5;8110:1;8102:6;8098:14;8091:29;7974:153;:::o;8133:400::-;8293:3;8314:84;8396:1;8391:3;8314:84;:::i;:::-;8307:91;;8407:93;8496:3;8407:93;:::i;:::-;8525:1;8520:3;8516:11;8509:18;;8133:400;;;:::o;8539:381::-;8724:3;8746:148;8890:3;8746:148;:::i;:::-;8739:155;;8911:3;8904:10;;8539:381;;;:::o;8926:159::-;9066:11;9062:1;9054:6;9050:14;9043:35;8926:159;:::o;9091:400::-;9251:3;9272:84;9354:1;9349:3;9272:84;:::i;:::-;9265:91;;9365:93;9454:3;9365:93;:::i;:::-;9483:1;9478:3;9474:11;9467:18;;9091:400;;;:::o;9497:381::-;9682:3;9704:148;9848:3;9704:148;:::i;:::-;9697:155;;9869:3;9862:10;;9497:381;;;:::o;9884:180::-;9932:77;9929:1;9922:88;10029:4;10026:1;10019:15;10053:4;10050:1;10043:15;10070:320;10114:6;10151:1;10145:4;10141:12;10131:22;;10198:1;10192:4;10188:12;10219:18;10209:81;;10275:4;10267:6;10263:17;10253:27;;10209:81;10337:2;10329:6;10326:14;10306:18;10303:38;10300:84;;10356:18;;:::i;:::-;10300:84;10121:269;10070:320;;;:::o;10396:227::-;10536:34;10532:1;10524:6;10520:14;10513:58;10605:10;10600:2;10592:6;10588:15;10581:35;10396:227;:::o;10629:366::-;10771:3;10792:67;10856:2;10851:3;10792:67;:::i;:::-;10785:74;;10868:93;10957:3;10868:93;:::i;:::-;10986:2;10981:3;10977:12;10970:19;;10629:366;;;:::o;11001:419::-;11167:4;11205:2;11194:9;11190:18;11182:26;;11254:9;11248:4;11244:20;11240:1;11229:9;11225:17;11218:47;11282:131;11408:4;11282:131;:::i;:::-;11274:139;;11001:419;;;:::o;11426:180::-;11474:77;11471:1;11464:88;11571:4;11568:1;11561:15;11595:4;11592:1;11585:15;11612:191;11652:3;11671:20;11689:1;11671:20;:::i;:::-;11666:25;;11705:20;11723:1;11705:20;:::i;:::-;11700:25;;11748:1;11745;11741:9;11734:16;;11769:3;11766:1;11763:10;11760:36;;;11776:18;;:::i;:::-;11760:36;11612:191;;;;:::o;11809:179::-;11949:31;11945:1;11937:6;11933:14;11926:55;11809:179;:::o;11994:366::-;12136:3;12157:67;12221:2;12216:3;12157:67;:::i;:::-;12150:74;;12233:93;12322:3;12233:93;:::i;:::-;12351:2;12346:3;12342:12;12335:19;;11994:366;;;:::o;12366:419::-;12532:4;12570:2;12559:9;12555:18;12547:26;;12619:9;12613:4;12609:20;12605:1;12594:9;12590:17;12583:47;12647:131;12773:4;12647:131;:::i;:::-;12639:139;;12366:419;;;:::o;12791:221::-;12931:34;12927:1;12919:6;12915:14;12908:58;13000:4;12995:2;12987:6;12983:15;12976:29;12791:221;:::o;13018:366::-;13160:3;13181:67;13245:2;13240:3;13181:67;:::i;:::-;13174:74;;13257:93;13346:3;13257:93;:::i;:::-;13375:2;13370:3;13366:12;13359:19;;13018:366;;;:::o;13390:419::-;13556:4;13594:2;13583:9;13579:18;13571:26;;13643:9;13637:4;13633:20;13629:1;13618:9;13614:17;13607:47;13671:131;13797:4;13671:131;:::i;:::-;13663:139;;13390:419;;;:::o;13815:179::-;13955:31;13951:1;13943:6;13939:14;13932:55;13815:179;:::o;14000:366::-;14142:3;14163:67;14227:2;14222:3;14163:67;:::i;:::-;14156:74;;14239:93;14328:3;14239:93;:::i;:::-;14357:2;14352:3;14348:12;14341:19;;14000:366;;;:::o;14372:419::-;14538:4;14576:2;14565:9;14561:18;14553:26;;14625:9;14619:4;14615:20;14611:1;14600:9;14596:17;14589:47;14653:131;14779:4;14653:131;:::i;:::-;14645:139;;14372:419;;;:::o;14797:161::-;14937:13;14933:1;14925:6;14921:14;14914:37;14797:161;:::o;14964:366::-;15106:3;15127:67;15191:2;15186:3;15127:67;:::i;:::-;15120:74;;15203:93;15292:3;15203:93;:::i;:::-;15321:2;15316:3;15312:12;15305:19;;14964:366;;;:::o;15336:419::-;15502:4;15540:2;15529:9;15525:18;15517:26;;15589:9;15583:4;15579:20;15575:1;15564:9;15560:17;15553:47;15617:131;15743:4;15617:131;:::i;:::-;15609:139;;15336:419;;;:::o;15761:410::-;15801:7;15824:20;15842:1;15824:20;:::i;:::-;15819:25;;15858:20;15876:1;15858:20;:::i;:::-;15853:25;;15913:1;15910;15906:9;15935:30;15953:11;15935:30;:::i;:::-;15924:41;;16114:1;16105:7;16101:15;16098:1;16095:22;16075:1;16068:9;16048:83;16025:139;;16144:18;;:::i;:::-;16025:139;15809:362;15761:410;;;;:::o;16177:224::-;16317:34;16313:1;16305:6;16301:14;16294:58;16386:7;16381:2;16373:6;16369:15;16362:32;16177:224;:::o;16407:366::-;16549:3;16570:67;16634:2;16629:3;16570:67;:::i;:::-;16563:74;;16646:93;16735:3;16646:93;:::i;:::-;16764:2;16759:3;16755:12;16748:19;;16407:366;;;:::o;16779:419::-;16945:4;16983:2;16972:9;16968:18;16960:26;;17032:9;17026:4;17022:20;17018:1;17007:9;17003:17;16996:47;17060:131;17186:4;17060:131;:::i;:::-;17052:139;;16779:419;;;:::o;17204:220::-;17344:34;17340:1;17332:6;17328:14;17321:58;17413:3;17408:2;17400:6;17396:15;17389:28;17204:220;:::o;17430:366::-;17572:3;17593:67;17657:2;17652:3;17593:67;:::i;:::-;17586:74;;17669:93;17758:3;17669:93;:::i;:::-;17787:2;17782:3;17778:12;17771:19;;17430:366;;;:::o;17802:419::-;17968:4;18006:2;17995:9;17991:18;17983:26;;18055:9;18049:4;18045:20;18041:1;18030:9;18026:17;18019:47;18083:131;18209:4;18083:131;:::i;:::-;18075:139;;17802:419;;;:::o;18227:224::-;18367:34;18363:1;18355:6;18351:14;18344:58;18436:7;18431:2;18423:6;18419:15;18412:32;18227:224;:::o;18457:366::-;18599:3;18620:67;18684:2;18679:3;18620:67;:::i;:::-;18613:74;;18696:93;18785:3;18696:93;:::i;:::-;18814:2;18809:3;18805:12;18798:19;;18457:366;;;:::o;18829:419::-;18995:4;19033:2;19022:9;19018:18;19010:26;;19082:9;19076:4;19072:20;19068:1;19057:9;19053:17;19046:47;19110:131;19236:4;19110:131;:::i;:::-;19102:139;;18829:419;;;:::o;19254:180::-;19394:32;19390:1;19382:6;19378:14;19371:56;19254:180;:::o;19440:366::-;19582:3;19603:67;19667:2;19662:3;19603:67;:::i;:::-;19596:74;;19679:93;19768:3;19679:93;:::i;:::-;19797:2;19792:3;19788:12;19781:19;;19440:366;;;:::o;19812:419::-;19978:4;20016:2;20005:9;20001:18;19993:26;;20065:9;20059:4;20055:20;20051:1;20040:9;20036:17;20029:47;20093:131;20219:4;20093:131;:::i;:::-;20085:139;;19812:419;;;:::o;20237:180::-;20377:32;20373:1;20365:6;20361:14;20354:56;20237:180;:::o;20423:366::-;20565:3;20586:67;20650:2;20645:3;20586:67;:::i;:::-;20579:74;;20662:93;20751:3;20662:93;:::i;:::-;20780:2;20775:3;20771:12;20764:19;;20423:366;;;:::o;20795:419::-;20961:4;20999:2;20988:9;20984:18;20976:26;;21048:9;21042:4;21038:20;21034:1;21023:9;21019:17;21012:47;21076:131;21202:4;21076:131;:::i;:::-;21068:139;;20795:419;;;:::o;21220:220::-;21360:34;21356:1;21348:6;21344:14;21337:58;21429:3;21424:2;21416:6;21412:15;21405:28;21220:220;:::o;21446:366::-;21588:3;21609:67;21673:2;21668:3;21609:67;:::i;:::-;21602:74;;21685:93;21774:3;21685:93;:::i;:::-;21803:2;21798:3;21794:12;21787:19;;21446:366;;;:::o;21818:419::-;21984:4;22022:2;22011:9;22007:18;21999:26;;22071:9;22065:4;22061:20;22057:1;22046:9;22042:17;22035:47;22099:131;22225:4;22099:131;:::i;:::-;22091:139;;21818:419;;;:::o;22243:225::-;22383:34;22379:1;22371:6;22367:14;22360:58;22452:8;22447:2;22439:6;22435:15;22428:33;22243:225;:::o;22474:366::-;22616:3;22637:67;22701:2;22696:3;22637:67;:::i;:::-;22630:74;;22713:93;22802:3;22713:93;:::i;:::-;22831:2;22826:3;22822:12;22815:19;;22474:366;;;:::o;22846:419::-;23012:4;23050:2;23039:9;23035:18;23027:26;;23099:9;23093:4;23089:20;23085:1;23074:9;23070:17;23063:47;23127:131;23253:4;23127:131;:::i;:::-;23119:139;;22846:419;;;:::o;23271:143::-;23328:5;23359:6;23353:13;23344:22;;23375:33;23402:5;23375:33;:::i;:::-;23271:143;;;;:::o;23420:351::-;23490:6;23539:2;23527:9;23518:7;23514:23;23510:32;23507:119;;;23545:79;;:::i;:::-;23507:119;23665:1;23690:64;23746:7;23737:6;23726:9;23722:22;23690:64;:::i;:::-;23680:74;;23636:128;23420:351;;;;:::o;23777:332::-;23898:4;23936:2;23925:9;23921:18;23913:26;;23949:71;24017:1;24006:9;24002:17;23993:6;23949:71;:::i;:::-;24030:72;24098:2;24087:9;24083:18;24074:6;24030:72;:::i;:::-;23777:332;;;;;:::o;24115:116::-;24185:21;24200:5;24185:21;:::i;:::-;24178:5;24175:32;24165:60;;24221:1;24218;24211:12;24165:60;24115:116;:::o;24237:137::-;24291:5;24322:6;24316:13;24307:22;;24338:30;24362:5;24338:30;:::i;:::-;24237:137;;;;:::o;24380:345::-;24447:6;24496:2;24484:9;24475:7;24471:23;24467:32;24464:119;;;24502:79;;:::i;:::-;24464:119;24622:1;24647:61;24700:7;24691:6;24680:9;24676:22;24647:61;:::i;:::-;24637:71;;24593:125;24380:345;;;;:::o;24731:223::-;24871:34;24867:1;24859:6;24855:14;24848:58;24940:6;24935:2;24927:6;24923:15;24916:31;24731:223;:::o;24960:366::-;25102:3;25123:67;25187:2;25182:3;25123:67;:::i;:::-;25116:74;;25199:93;25288:3;25199:93;:::i;:::-;25317:2;25312:3;25308:12;25301:19;;24960:366;;;:::o;25332:419::-;25498:4;25536:2;25525:9;25521:18;25513:26;;25585:9;25579:4;25575:20;25571:1;25560:9;25556:17;25549:47;25613:131;25739:4;25613:131;:::i;:::-;25605:139;;25332:419;;;:::o;25757:221::-;25897:34;25893:1;25885:6;25881:14;25874:58;25966:4;25961:2;25953:6;25949:15;25942:29;25757:221;:::o;25984:366::-;26126:3;26147:67;26211:2;26206:3;26147:67;:::i;:::-;26140:74;;26223:93;26312:3;26223:93;:::i;:::-;26341:2;26336:3;26332:12;26325:19;;25984:366;;;:::o;26356:419::-;26522:4;26560:2;26549:9;26545:18;26537:26;;26609:9;26603:4;26599:20;26595:1;26584:9;26580:17;26573:47;26637:131;26763:4;26637:131;:::i;:::-;26629:139;;26356:419;;;:::o;26781:221::-;26921:34;26917:1;26909:6;26905:14;26898:58;26990:4;26985:2;26977:6;26973:15;26966:29;26781:221;:::o;27008:366::-;27150:3;27171:67;27235:2;27230:3;27171:67;:::i;:::-;27164:74;;27247:93;27336:3;27247:93;:::i;:::-;27365:2;27360:3;27356:12;27349:19;;27008:366;;;:::o;27380:419::-;27546:4;27584:2;27573:9;27569:18;27561:26;;27633:9;27627:4;27623:20;27619:1;27608:9;27604:17;27597:47;27661:131;27787:4;27661:131;:::i;:::-;27653:139;;27380:419;;;:::o;27805:175::-;27945:27;27941:1;27933:6;27929:14;27922:51;27805:175;:::o;27986:366::-;28128:3;28149:67;28213:2;28208:3;28149:67;:::i;:::-;28142:74;;28225:93;28314:3;28225:93;:::i;:::-;28343:2;28338:3;28334:12;28327:19;;27986:366;;;:::o;28358:419::-;28524:4;28562:2;28551:9;28547:18;28539:26;;28611:9;28605:4;28601:20;28597:1;28586:9;28582:17;28575:47;28639:131;28765:4;28639:131;:::i;:::-;28631:139;;28358:419;;;:::o;28783:178::-;28923:30;28919:1;28911:6;28907:14;28900:54;28783:178;:::o;28967:366::-;29109:3;29130:67;29194:2;29189:3;29130:67;:::i;:::-;29123:74;;29206:93;29295:3;29206:93;:::i;:::-;29324:2;29319:3;29315:12;29308:19;;28967:366;;;:::o;29339:419::-;29505:4;29543:2;29532:9;29528:18;29520:26;;29592:9;29586:4;29582:20;29578:1;29567:9;29563:17;29556:47;29620:131;29746:4;29620:131;:::i;:::-;29612:139;;29339:419;;;:::o;29764:180::-;29812:77;29809:1;29802:88;29909:4;29906:1;29899:15;29933:4;29930:1;29923:15;29950:180;29998:77;29995:1;29988:88;30095:4;30092:1;30085:15;30119:4;30116:1;30109:15;30136:143;30193:5;30224:6;30218:13;30209:22;;30240:33;30267:5;30240:33;:::i;:::-;30136:143;;;;:::o;30285:351::-;30355:6;30404:2;30392:9;30383:7;30379:23;30375:32;30372:119;;;30410:79;;:::i;:::-;30372:119;30530:1;30555:64;30611:7;30602:6;30591:9;30587:22;30555:64;:::i;:::-;30545:74;;30501:128;30285:351;;;;:::o;30642:180::-;30690:77;30687:1;30680:88;30787:4;30784:1;30777:15;30811:4;30808:1;30801:15;30828:185;30868:1;30885:20;30903:1;30885:20;:::i;:::-;30880:25;;30919:20;30937:1;30919:20;:::i;:::-;30914:25;;30958:1;30948:35;;30963:18;;:::i;:::-;30948:35;31005:1;31002;30998:9;30993:14;;30828:185;;;;:::o;31019:114::-;31086:6;31120:5;31114:12;31104:22;;31019:114;;;:::o;31139:184::-;31238:11;31272:6;31267:3;31260:19;31312:4;31307:3;31303:14;31288:29;;31139:184;;;;:::o;31329:132::-;31396:4;31419:3;31411:11;;31449:4;31444:3;31440:14;31432:22;;31329:132;;;:::o;31467:108::-;31544:24;31562:5;31544:24;:::i;:::-;31539:3;31532:37;31467:108;;:::o;31581:179::-;31650:10;31671:46;31713:3;31705:6;31671:46;:::i;:::-;31749:4;31744:3;31740:14;31726:28;;31581:179;;;;:::o;31766:113::-;31836:4;31868;31863:3;31859:14;31851:22;;31766:113;;;:::o;31915:732::-;32034:3;32063:54;32111:5;32063:54;:::i;:::-;32133:86;32212:6;32207:3;32133:86;:::i;:::-;32126:93;;32243:56;32293:5;32243:56;:::i;:::-;32322:7;32353:1;32338:284;32363:6;32360:1;32357:13;32338:284;;;32439:6;32433:13;32466:63;32525:3;32510:13;32466:63;:::i;:::-;32459:70;;32552:60;32605:6;32552:60;:::i;:::-;32542:70;;32398:224;32385:1;32382;32378:9;32373:14;;32338:284;;;32342:14;32638:3;32631:10;;32039:608;;;31915:732;;;;:::o;32653:483::-;32824:4;32862:2;32851:9;32847:18;32839:26;;32875:71;32943:1;32932:9;32928:17;32919:6;32875:71;:::i;:::-;32993:9;32987:4;32983:20;32978:2;32967:9;32963:18;32956:48;33021:108;33124:4;33115:6;33021:108;:::i;:::-;33013:116;;32653:483;;;;;:::o;33142:117::-;33251:1;33248;33241:12;33265:281;33348:27;33370:4;33348:27;:::i;:::-;33340:6;33336:40;33478:6;33466:10;33463:22;33442:18;33430:10;33427:34;33424:62;33421:88;;;33489:18;;:::i;:::-;33421:88;33529:10;33525:2;33518:22;33308:238;33265:281;;:::o;33552:129::-;33586:6;33613:20;;:::i;:::-;33603:30;;33642:33;33670:4;33662:6;33642:33;:::i;:::-;33552:129;;;:::o;33687:311::-;33764:4;33854:18;33846:6;33843:30;33840:56;;;33876:18;;:::i;:::-;33840:56;33926:4;33918:6;33914:17;33906:25;;33986:4;33980;33976:15;33968:23;;33687:311;;;:::o;34004:117::-;34113:1;34110;34103:12;34144:732;34251:5;34276:81;34292:64;34349:6;34292:64;:::i;:::-;34276:81;:::i;:::-;34267:90;;34377:5;34406:6;34399:5;34392:21;34440:4;34433:5;34429:16;34422:23;;34493:4;34485:6;34481:17;34473:6;34469:30;34522:3;34514:6;34511:15;34508:122;;;34541:79;;:::i;:::-;34508:122;34656:6;34639:231;34673:6;34668:3;34665:15;34639:231;;;34748:3;34777:48;34821:3;34809:10;34777:48;:::i;:::-;34772:3;34765:61;34855:4;34850:3;34846:14;34839:21;;34715:155;34699:4;34694:3;34690:14;34683:21;;34639:231;;;34643:21;34257:619;;34144:732;;;;;:::o;34899:385::-;34981:5;35030:3;35023:4;35015:6;35011:17;35007:27;34997:122;;35038:79;;:::i;:::-;34997:122;35148:6;35142:13;35173:105;35274:3;35266:6;35259:4;35251:6;35247:17;35173:105;:::i;:::-;35164:114;;34987:297;34899:385;;;;:::o;35290:554::-;35385:6;35434:2;35422:9;35413:7;35409:23;35405:32;35402:119;;;35440:79;;:::i;:::-;35402:119;35581:1;35570:9;35566:17;35560:24;35611:18;35603:6;35600:30;35597:117;;;35633:79;;:::i;:::-;35597:117;35738:89;35819:7;35810:6;35799:9;35795:22;35738:89;:::i;:::-;35728:99;;35531:306;35290:554;;;;:::o;35850:85::-;35895:7;35924:5;35913:16;;35850:85;;;:::o;35941:60::-;35969:3;35990:5;35983:12;;35941:60;;;:::o;36007:158::-;36065:9;36098:61;36116:42;36125:32;36151:5;36125:32;:::i;:::-;36116:42;:::i;:::-;36098:61;:::i;:::-;36085:74;;36007:158;;;:::o;36171:147::-;36266:45;36305:5;36266:45;:::i;:::-;36261:3;36254:58;36171:147;;:::o;36324:831::-;36587:4;36625:3;36614:9;36610:19;36602:27;;36639:71;36707:1;36696:9;36692:17;36683:6;36639:71;:::i;:::-;36720:80;36796:2;36785:9;36781:18;36772:6;36720:80;:::i;:::-;36847:9;36841:4;36837:20;36832:2;36821:9;36817:18;36810:48;36875:108;36978:4;36969:6;36875:108;:::i;:::-;36867:116;;36993:72;37061:2;37050:9;37046:18;37037:6;36993:72;:::i;:::-;37075:73;37143:3;37132:9;37128:19;37119:6;37075:73;:::i;:::-;36324:831;;;;;;;;:::o;37161:194::-;37201:4;37221:20;37239:1;37221:20;:::i;:::-;37216:25;;37255:20;37273:1;37255:20;:::i;:::-;37250:25;;37299:1;37296;37292:9;37284:17;;37323:1;37317:4;37314:11;37311:37;;;37328:18;;:::i;:::-;37311:37;37161:194;;;;:::o;37361:807::-;37610:4;37648:3;37637:9;37633:19;37625:27;;37662:71;37730:1;37719:9;37715:17;37706:6;37662:71;:::i;:::-;37743:72;37811:2;37800:9;37796:18;37787:6;37743:72;:::i;:::-;37825:80;37901:2;37890:9;37886:18;37877:6;37825:80;:::i;:::-;37915;37991:2;37980:9;37976:18;37967:6;37915:80;:::i;:::-;38005:73;38073:3;38062:9;38058:19;38049:6;38005:73;:::i;:::-;38088;38156:3;38145:9;38141:19;38132:6;38088:73;:::i;:::-;37361:807;;;;;;;;;:::o;38174:663::-;38262:6;38270;38278;38327:2;38315:9;38306:7;38302:23;38298:32;38295:119;;;38333:79;;:::i;:::-;38295:119;38453:1;38478:64;38534:7;38525:6;38514:9;38510:22;38478:64;:::i;:::-;38468:74;;38424:128;38591:2;38617:64;38673:7;38664:6;38653:9;38649:22;38617:64;:::i;:::-;38607:74;;38562:129;38730:2;38756:64;38812:7;38803:6;38792:9;38788:22;38756:64;:::i;:::-;38746:74;;38701:129;38174:663;;;;;:::o;38843:147::-;38944:11;38981:3;38966:18;;38843:147;;;;:::o;38996:114::-;;:::o;39116:398::-;39275:3;39296:83;39377:1;39372:3;39296:83;:::i;:::-;39289:90;;39388:93;39477:3;39388:93;:::i;:::-;39506:1;39501:3;39497:11;39490:18;;39116:398;;;:::o;39520:379::-;39704:3;39726:147;39869:3;39726:147;:::i;:::-;39719:154;;39890:3;39883:10;;39520:379;;;:::o;39905:180::-;40045:32;40041:1;40033:6;40029:14;40022:56;39905:180;:::o;40091:366::-;40233:3;40254:67;40318:2;40313:3;40254:67;:::i;:::-;40247:74;;40330:93;40419:3;40330:93;:::i;:::-;40448:2;40443:3;40439:12;40432:19;;40091:366;;;:::o;40463:419::-;40629:4;40667:2;40656:9;40652:18;40644:26;;40716:9;40710:4;40706:20;40702:1;40691:9;40687:17;40680:47;40744:131;40870:4;40744:131;:::i;:::-;40736:139;;40463:419;;;:::o;40888:174::-;41028:26;41024:1;41016:6;41012:14;41005:50;40888:174;:::o;41068:366::-;41210:3;41231:67;41295:2;41290:3;41231:67;:::i;:::-;41224:74;;41307:93;41396:3;41307:93;:::i;:::-;41425:2;41420:3;41416:12;41409:19;;41068:366;;;:::o;41440:419::-;41606:4;41644:2;41633:9;41629:18;41621:26;;41693:9;41687:4;41683:20;41679:1;41668:9;41664:17;41657:47;41721:131;41847:4;41721:131;:::i;:::-;41713:139;;41440:419;;;:::o;41865:170::-;42005:22;42001:1;41993:6;41989:14;41982:46;41865:170;:::o;42041:366::-;42183:3;42204:67;42268:2;42263:3;42204:67;:::i;:::-;42197:74;;42280:93;42369:3;42280:93;:::i;:::-;42398:2;42393:3;42389:12;42382:19;;42041:366;;;:::o;42413:419::-;42579:4;42617:2;42606:9;42602:18;42594:26;;42666:9;42660:4;42656:20;42652:1;42641:9;42637:17;42630:47;42694:131;42820:4;42694:131;:::i;:::-;42686:139;;42413:419;;;:::o;42838:220::-;42978:34;42974:1;42966:6;42962:14;42955:58;43047:3;43042:2;43034:6;43030:15;43023:28;42838:220;:::o;43064:366::-;43206:3;43227:67;43291:2;43286:3;43227:67;:::i;:::-;43220:74;;43303:93;43392:3;43303:93;:::i;:::-;43421:2;43416:3;43412:12;43405:19;;43064:366;;;:::o;43436:419::-;43602:4;43640:2;43629:9;43625:18;43617:26;;43689:9;43683:4;43679:20;43675:1;43664:9;43660:17;43653:47;43717:131;43843:4;43717:131;:::i;:::-;43709:139;;43436:419;;;:::o;43861:221::-;44001:34;43997:1;43989:6;43985:14;43978:58;44070:4;44065:2;44057:6;44053:15;44046:29;43861:221;:::o;44088:366::-;44230:3;44251:67;44315:2;44310:3;44251:67;:::i;:::-;44244:74;;44327:93;44416:3;44327:93;:::i;:::-;44445:2;44440:3;44436:12;44429:19;;44088:366;;;:::o;44460:419::-;44626:4;44664:2;44653:9;44649:18;44641:26;;44713:9;44707:4;44703:20;44699:1;44688:9;44684:17;44677:47;44741:131;44867:4;44741:131;:::i;:::-;44733:139;;44460:419;;;:::o;44885:166::-;45025:18;45021:1;45013:6;45009:14;45002:42;44885:166;:::o;45057:366::-;45199:3;45220:67;45284:2;45279:3;45220:67;:::i;:::-;45213:74;;45296:93;45385:3;45296:93;:::i;:::-;45414:2;45409:3;45405:12;45398:19;;45057:366;;;:::o;45429:419::-;45595:4;45633:2;45622:9;45618:18;45610:26;;45682:9;45676:4;45672:20;45668:1;45657:9;45653:17;45646:47;45710:131;45836:4;45710:131;:::i;:::-;45702:139;;45429:419;;;:::o;45854:224::-;45994:34;45990:1;45982:6;45978:14;45971:58;46063:7;46058:2;46050:6;46046:15;46039:32;45854:224;:::o;46084:366::-;46226:3;46247:67;46311:2;46306:3;46247:67;:::i;:::-;46240:74;;46323:93;46412:3;46323:93;:::i;:::-;46441:2;46436:3;46432:12;46425:19;;46084:366;;;:::o;46456:419::-;46622:4;46660:2;46649:9;46645:18;46637:26;;46709:9;46703:4;46699:20;46695:1;46684:9;46680:17;46673:47;46737:131;46863:4;46737:131;:::i;:::-;46729:139;;46456:419;;;:::o;46881:222::-;47021:34;47017:1;47009:6;47005:14;46998:58;47090:5;47085:2;47077:6;47073:15;47066:30;46881:222;:::o;47109:366::-;47251:3;47272:67;47336:2;47331:3;47272:67;:::i;:::-;47265:74;;47348:93;47437:3;47348:93;:::i;:::-;47466:2;47461:3;47457:12;47450:19;;47109:366;;;:::o;47481:419::-;47647:4;47685:2;47674:9;47670:18;47662:26;;47734:9;47728:4;47724:20;47720:1;47709:9;47705:17;47698:47;47762:131;47888:4;47762:131;:::i;:::-;47754:139;;47481:419;;;:::o;47906:225::-;48046:34;48042:1;48034:6;48030:14;48023:58;48115:8;48110:2;48102:6;48098:15;48091:33;47906:225;:::o;48137:366::-;48279:3;48300:67;48364:2;48359:3;48300:67;:::i;:::-;48293:74;;48376:93;48465:3;48376:93;:::i;:::-;48494:2;48489:3;48485:12;48478:19;;48137:366;;;:::o;48509:419::-;48675:4;48713:2;48702:9;48698:18;48690:26;;48762:9;48756:4;48752:20;48748:1;48737:9;48733:17;48726:47;48790:131;48916:4;48790:131;:::i;:::-;48782:139;;48509:419;;;:::o

Swarm Source

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